Чтение 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. Что я делаю неправильно? Это из-за неправильного последовательного соединения или ошибки неверного кода?
@AlexL, 👍0
Обсуждение0
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- SIM800L не отвечает на AT-команды
- GSM SIM900A Содержимое SMS не отображается
- Как связаться с GPS SIM900a без serial monitor
- AT-команда не отвечает на последовательный монитор
- SIM800L не регистрируется в сети
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- ЖК-дисплей странные символы
Какое у вас напряжение питания 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