MakerGram Logo

    MakerGram

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Users
    • Groups

    Help needed: Arduino Wireless Notice Board project

    Arduino
    6
    28
    3655
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SAFVAN last edited by salmanfaris

      I'm making a Wireless Notice Board for my project purpose. Simply the expected working is... "Sending a message from our mobile handset to sim which inserted to SIM900A GSM Module Arduino read the message and display through P10 LED display."

      Recieving SMS system and P10 LED display are working separately. These programs are combined. SMS are received (we can see in serialmonitor). But it cannot display. Displaying what is written in the program only

      #include <SoftwareSerial.h>
      #include <SPI.h>
      #include <DMD.h>
      #include <TimerOne.h>
      #include "SystemFont5x7.h"
      #include "Arial_black_16.h"
      
      #define ROW 1
      #define COLUMN 1
      #define FONT Arial_Black_16
      
      DMD led_module(ROW, COLUMN);
      
      String st; 
      const char *msg;
      unsigned int LengMsg;
      SoftwareSerial mySerial(3, 2);
      
      void scan_module(){
        led_module.scanDisplayBySPI();
      }
      
      void setup() {
        Timer1.initialize(2000);
        Timer1.attachInterrupt(scan_module);
        led_module.clearScreen( true );
        
        Serial.begin(4800);
        mySerial.begin(4800);
        Serial.println("Starting..."); 
        delay(1000);
        mySerial.println("AT");
        pollSms();
        mySerial.println("AT+CMGF=1"); 
        pollSms();
        mySerial.println("AT+CNMI=1,2,0,0,0");
        pollSms();
      }
      
      void loop(){
        pollSms();
        delay(500);
      
        //Start print in led matrix 
        led_module.selectFont(FONT);
        led_module.drawMarquee(msg,LengMsg, (32 * ROW), 0);
        long start = millis();
        long timming = start;
        boolean flag = false;
        while (!flag){
          if((timming + 20) < millis()){
              flag = led_module.stepMarquee(-1, 0);
              timming = millis();
            }
          }
        }
      
      void pollSms(){
        delay(500);
        while (Serial.available()) {
          mySerial.write(Serial.read());
          String st = String(Serial.read());
          Serial.println(st);
        }
        while(mySerial.available()) {
          Serial.write(mySerial.read());
          st = String(Serial.readString());
          Serial.println(st);
          LengMsg = st.length();
          st.toCharArray(msg,LengMsg);    
        }
        delay(500);
      }
      
      S 1 Reply Last reply Reply Quote 1
      • kowshik1729
        kowshik1729 last edited by

        @SAFVAN Thanks for posting the query. I would like to know what is the exact part number or any picture of the Display you're using and I wanna know what connections have you made.

        Please post these details such that it becomes easy for us to review.!!

        1 Reply Last reply Reply Quote 0
        • salmanfaris
          salmanfaris last edited by

          @SAFVAN are you getting any error or something ?

          rafitc99 1 Reply Last reply Reply Quote 0
          • rafitc99
            rafitc99 @salmanfaris last edited by

            @salmanfaris no any error, issue is in that LED metrix library print function parameters are *const char. So need to convert SMS boast string to const char *Variable.

            salmanfaris 1 Reply Last reply Reply Quote 1
            • S
              SAFVAN @SAFVAN last edited by

              @kowshik1729 display is 16×32 P10 LED display.
              RX and TX connected pin 3&2.
              P10 connected as https://circuitdigest.com/microcontroller-projects/digital-notice-board-using-p10-led-matrix-display-and-arduino

              1 Reply Last reply Reply Quote 0
              • salmanfaris
                salmanfaris @rafitc99 last edited by salmanfaris

                Hi @rafitc99, You can convert the string to char array using toCharArray() it will Copies the String’s characters to the supplied buffer.

                • Syntax
                myString.toCharArray(buf, len)
                
                • Parameters
                  myString: a variable of type String.
                  buf: the buffer to copy the characters into. Allowed data types: array of char.
                  len: the size of the buffer. Allowed data types: unsigned int.

                more : https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tochararray/ , https://www.arduino.cc/en/Tutorial/BuiltInExamples#strings

                also @SAFVAN is using const char* to hold message array You cannot change the contents of the location(s) this pointer points to.

                rafitc99 1 Reply Last reply Reply Quote 0
                • rafitc99
                  rafitc99 @salmanfaris last edited by

                  @salmanfaris Rewrite all code and uploaded. But SMS is not displaying correctly in LED Board, .. I'm attaching code and display output. take a look ,

                  #include <SoftwareSerial.h>
                  #include <SPI.h>
                  #include <DMD.h>
                  #include <TimerOne.h>
                  #include "SystemFont5x7.h"
                  #include "Arial_black_16.h"
                  
                  #define ROW 1
                  #define COLUMN 1
                  #define FONT Arial_Black_16
                  
                  DMD led_module(ROW, COLUMN);
                  
                  String st; 
                  const char *msg;
                  unsigned int LengMsg;
                  SoftwareSerial mySerial(3, 2);
                  
                  void scan_module(){
                    led_module.scanDisplayBySPI();
                  }
                  
                  void setup() {
                    Timer1.initialize(2000);
                    Timer1.attachInterrupt(scan_module);
                    led_module.clearScreen( true );
                    
                    Serial.begin(4800);
                    mySerial.begin(4800);
                    Serial.println("Starting..."); 
                    delay(1000);
                    mySerial.println("AT");
                    pollSms();
                    mySerial.println("AT+CMGF=1"); 
                    pollSms();
                    mySerial.println("AT+CNMI=1,2,0,0,0");
                    pollSms();
                  }
                  
                  void loop(){
                    pollSms();
                    delay(500);
                  
                    //Start print in led matrix 
                    led_module.selectFont(FONT);
                    led_module.drawMarquee(msg,LengMsg, (32 * ROW), 0);
                    long start = millis();
                    long timming = start;
                    boolean flag = false;
                    while (!flag){
                      if((timming + 20) < millis()){
                          flag = led_module.stepMarquee(-1, 0);
                          timming = millis();
                        }
                      }
                    }
                  
                  void pollSms(){
                    delay(500);
                    while (Serial.available()) {
                      mySerial.write(Serial.read());
                      //String st = String(Serial.read());
                      //Serial.println(st);
                    }
                    while(mySerial.available()) {
                      Serial.write(mySerial.read());
                      st = String(mySerial.readString());
                      Serial.println(st);
                      LengMsg = st.length();
                      st.toCharArray(msg,LengMsg);    
                    }
                    delay(500);
                  }
                  

                  output video : video link

                  A 1 Reply Last reply Reply Quote 0
                  • salmanfaris
                    salmanfaris last edited by

                    Can you print the SMS on the serial monitor too? so we can conclude the problem

                    rafitc99 1 Reply Last reply Reply Quote 0
                    • rafitc99
                      rafitc99 @salmanfaris last edited by

                      @salmanfaris in serial monitor getting normal text. No problem in there.

                      salmanfaris 1 Reply Last reply Reply Quote 0
                      • salmanfaris
                        salmanfaris @rafitc99 last edited by

                        @rafitc99 Okay, it might be sending char from SMS buffer to LED panel. let me check, I'll get back to you.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Recent Posts

                        • @codelery Awesome. That's great news. Kudos to @rafitc99 . 🙌

                          @codelery Please keep us updated about your project, looking forward to seeing it in action 🤩

                          • read more
                        • C

                          @rafitc99 I changed the buffer and that solved the problem. Thanks a lot for coming to my rescue.

                          • read more
                        • C

                          @salmanfaris I did change the buffer size and everything is working perfectly. Thanks coming to my rescue.

                          • read more
                        • @codelery said in Help needed: Arduino Wireless Notice Board project:

                          I am using the hardware serial (pin 0 and 1 on Arduino Uno)

                          As @rafitc99 mentioned, you need to expand the Serila buffer, in the hardware serial also the Arduino board package implements a 64-byte ring buffer for send and receive on the hardware serial messages. So you need to change that to 256 as per your message length.

                          • read more
                        • C

                          @rafitc99 The thing is that I am not using the SoftwareSerial library in receiving the message from the first microcontroller. I am using the hardware serial (pin 0 and 1 on Arduino Uno)

                          • read more
                        By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
                        Copyright © 2023 MakerGram, All rights reserved.
                        Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct