GSM Shield + Arduino Mega + библиотека SIM900
- Войдите на сайт для отправки комментариев
Здравствуйте!
Помогите, пожалуйста, разобраться что делаю не так. В общем, исходные данные:
К Arduino Mega подключаю GSM шилд (http://www.ebay.com/itm/SIM900-Quad-band-GSM-GPRS-Shield-for-Arduino-UNO...). Перемычки ставлю GRX-D3 и GTX-D2 + ставлю перемычки между D2-D19 и D3-D18 (где-то прочитал что без этого не работает - так и есть, как только ставлю перемычки подключается).
Питание на Arduino Mega от блока питания.
Заливаю скетч:
#include "SIM900.h" #include <SoftwareSerial.h> #include "sms.h" SMSGSM sms; #define pinRED 12 //на этот пин повешал светодиод, который должен вкл/выкл #define pinPower 7 //этим сигналом включаем шилд (?) int numdata; boolean started=false; char smsbuffer[160]; char n[20]; char position; String myCommand = ""; void setup() { pinMode(pinRED, OUTPUT); digitalWrite(pinRED, LOW); pinMode(pinPower, OUTPUT); digitalWrite(pinPower, HIGH); //Serial connection. Serial.begin(9600); Serial.println("GSM Shield testing."); if (gsm.begin(2400)){ Serial.println("\nstatus=READY"); started=true; } else { Serial.println("\nstatus=IDLE"); } if(started){ //если всё нормально отправляем смс sms.SendSMS("+71234567890", "Arduino GSM Enable"); Serial.println("\nSMS sent OK"); } //Очистка от старых смс for(position=0;position<=25;position++) { sms.DeleteSMS(position); } }; void loop() { position = sms.IsSMSPresent(SMS_UNREAD); if(started){ //Read if there are messages on SIM card and print them. if(sms.GetSMS(position, n, smsbuffer, 160)) { Serial.println(n); Serial.println(smsbuffer); myCommand = smsbuffer; if (myCommand = "on"){ //Serial.println(smsbuffer); digitalWrite(pinRED, HIGH); } if (myCommand = "off"){ //Serial.println(smsbuffer); digitalWrite(pinRED, LOW); } } delay(1000); } sms.DeleteSMS(position); //удаление сообщение };
Работает не сильно стабильно, но в основном запускается, отправляет сообщение и даже их принимает, вод логи из сериал монитора (конечно часть):
ATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: OK ATT: +CMGL: RIC: OK +712345678910 on
Ну и собственно есть следующие проблемы:
1. Главная - светодиод не включается, не выключается
2. Судя по сообщениям сериал-монитора, последнее сообщение не удаляется.
И ещё, пробовал запустить этот шилд с помощью АТ-команд, там вообще тишина, ни отправить не принять..
Попробуйте стандартную библиотеку, идущую с IDE GSM.h
У меня была аналогичная ситуация с удалением в SIM900.h - не совпадали position
Еще один момент, что СМС могут приходить с переводами строк, потому проверки
не всегда достаточно.
Попробуйте
Благодарю, про стандартную библиотеку что-то не подумал даже. Удаление думаю осуществить циклом (как при старте), может не сильно эстетично, но думаю должно сработать. Вечером обязательно попробую Ваш код, надеюсь это решит проблему, очень уж мне понравился алгоритм работы с этой библиотекой.
Вроде получил нужный результат, осталось добиться стабильной работы, вот рабочий скетч.
Привет alexandr_22 бутьде так добры сфотографируйте как вы подсоединили перемычки.
Привет. Фото только такого качества есть (пока возможности сделать лучшего качества нет). Суть в том, что бы сделать перемычки 19<->2, 18<->3, и шилд должен быть установлен на Мегу, просто с перемычками не будет работать.
Спасибо за фото, но у меня arduino uno. Перемычки ставлю GRX-D3 и GTX-D2 а в ответ тишина вот скетч