Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения

Ну, я делаю устройство, которое должно получать SMS и печатать текст, используя ЖК-дисплей. Теперь у меня есть код, который может получать SMS и сохранять его в строковой переменной, используя последовательное соединение. Вот мой код:

#include <LiquidCrystal.h>
#include <SoftwareSerial.h>

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;  //ЖК-контакты
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);                 
String Arsp, Grsp;
SoftwareSerial gsm(6,7); // RX, TX

void setup() {
  Serial.begin(9600);
  Serial.println("Testing GSM SIM800L");
  gsm.begin(9600);
  gsm.println("AT"); //проверка
  delay(1000);
  gsm.println("AT+CMGF=1");  //Установить текстовый режим
  delay(1000);
  gsm.println("AT+CNMI=1, 2, 0, 0, 0"); //Установить уведомление о новом сообщении, Индикация нового сообщения
  lcd.begin(16, 2);
}

void loop() {
  if(gsm.available()) {
    //Проверьте, отправляет ли GSM какие-либо данные
    Grsp = gsm.readString(); //Чтение данных, полученных от GSM-модуля SIM800L
    lcd.clear(); //Очистить ЖК-экран
    lcd.setCursor(0,0); //Установить курсор ЖК-дисплея на первую строку, первый ряд
    for(int i = 0; i<=100; i++) {
      // Распечатать полученную строку символ за символом
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print(Grsp); //Печать строки, полученной от GSM (sms, отправитель, индекс sms, время получения и т. д.)
        lcd.print("        ");
        lcd.print(i); // Распечатать индекс строки
        delay(500);
    }
  }
}

Когда мой Arduino Uno подключен к ПК и последовательный монитор Arduino уже открыт, он правильно печатает этот текст, полученный от GSM

"  +CMT: "+995599093230","","18/01/05,16:29:57+16"  0.

В этом случае я отправил сообщение с текстом «0». Когда я отключаю USB и подключаю свой Arduino Uno к источнику питания 9 В и отправляю тот же текст сообщения, он печатает:

" +CMTI: "ME", "+995598403536", 40)

В этом случае 40 — это индекс полученного сообщения. Я хочу получить всю строку, как в первом случае, когда USB был подключен.

Я использую Arduino GND и 5V для питания SIM800L. Что я делаю неправильно? Это из-за неправильного последовательного соединения или ошибки неверного кода?

, 👍0

Обсуждение

Какое у вас напряжение питания 9 В?, @Majenko

Что-то вроде этой 9-вольтовой ячейки https://www.google.com/search?client=firefox-b-ab&biw=1600&bih=777&tbm=isch&sa=1&ei=3bFPWvylDY3zsAG_h6uwBw&q=9V+cell&oq=9V+c ell&gs_l=psy-ab.3...5364.6839.0.6980.0.0.0.0.0.0.0.0..0.0....0...1c..64.psy-ab..0.0.0....0.5s6BwlO-sC8#imgrc=0YK2n3P6ubCsVM:, @AlexL

О, боже. Ну, тогда вперед. Купи настоящую батарею или сетевой блок питания., @Majenko

Но в течение нескольких минут он работает хорошо. Реально ли получить эту проблему, используя этот телефон?, @AlexL

Да. Эти батареи почти бесполезны., @Majenko

И как вы мне объясните :), @AlexL

Я не знаю, как тебя можно объяснить. Ты необъясним., @Majenko

Похоже, вы не совсем понимаете :D, и будьте осторожны, когда оставляете комментарии, и смотрите на экран каждую секунду ;)., @AlexL

Аккумуляторы PP3 имеют емкость около 154 мАч. Типичная ячейка AA имеет емкость около 1500–2000 мАч. Просто для сравнения. Добавьте к этому тот факт, что вы теряете около половины своей мощности с помощью встроенного регулятора 5 В..., @Majenko

Также задали вопрос на: http://forum.arduino.cc/index.php?topic=520835 Если вы собираетесь это сделать, то, пожалуйста, будьте достаточно внимательны и добавьте ссылки на другие места, где вы делаете перекрестные публикации. Это позволит нам избежать траты времени из-за дублирования усилий, а также поможет другим, у кого есть те же вопросы и кто найдет ваш пост, найти всю необходимую информацию., @per1234