neoway m590
- Войдите на сайт для отправки комментариев
Чт, 22/12/2016 - 22:17
Здравствуйте купил модуль gsm neoway m590 запустить запустил а как подключить не могу понять программу в интернете нашел залил проверяю не какх эффектов что делать? заранее спасибо
http://arduino.ru/forum/apparatnye-voprosy/ne-rabotaet-neoway-m590 читали ?
да читал модуль запускается но на каманды не отвечает звоню гудки идут
Здравствуйте купил модуль gsm neoway m590 запустить запустил а как подключить не могу понять программу в интернете нашел залил проверяю не какх эффектов что делать? заранее спасибо
купили - поздравляем.
как подключить? - читайте ветку, заливайте пока не потечет через верх, пока мало залили.
ЗЫ: кстати ответы вполне в вашем стиле вопросов - никакой конкретики, сплошны рекомендации.
Я брал программу с инета заливал в ардуино и в мониторе порта писал команды и нет ответа
Да читал взял не много информации получилось запустить дозвон пошел а ардуино не видит
вот нашел программу для neoway m590 залил к себе для обработки и что то не догоняю где здесь ошибка
#include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX String data; void setup() { Serial.begin(9600); //Скорость порта для связи Arduino с компьютером Serial.println("Goodnight moon!"); mySerial.begin(9600); //Скорость порта для связи Arduino с GSM модулем mySerial.println("AT"); delay(100); mySerial.println("AT+CMGF=1"); //включаем текстовый режим delay(100); mySerial.println("AT+CLIP=1"); //включаем АОН delay(100); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(100); mySerial.println("AT+CNMI=2,2"); //отображение СМС в терминале delay(100); } void loop() { bool f_enter = false; //первый перенос или нет byte r_byte = 0; //текущий обрабатываемый бит if (mySerial.available()) { while (mySerial.available() > 0) { r_byte = mySerial.read(); switch (r_byte) { case 13: if (!f_enter) { data += ';'; f_enter = true; } break; case 10: {} break; default: { data += (char)r_byte; f_enter = false; } } } if (mySerial.available() == 0) delay(50); } if (data != "") {Serial.println(data); data = "";} if (Serial.available()) mySerial.write(Serial.read()); }Попробуйте вот это
01#include <avr/pgmspace.h>{08Serial.begin(9600);//Скорость порта для связи Arduino с компьютером09Serial.println(F("Goodnight moon!"));10mySerial.begin(9600);//Скорость порта для связи Arduino с GSM модулем11mySerial.println(F("AT"));12delay(100);13mySerial.println(F("AT+CMGF=1"));//включаем текстовый режим14delay(100);15mySerial.println(F("AT+CLIP=1"));//включаем АОН16delay(100);17mySerial.println(F("AT+CSCS=\"GSM\""));//режим кодировки текста18delay(100);19mySerial.println(F("AT+CNMI=2,2"));//отображение СМС в терминале20delay(100);21}А еще можно захерачить все тестовые АТ команды не в обычную память которой катастрофически не хватает, а во флешпамять..
я так уменьшил занятось памяти с 70% до 20% !!!
Попробуйте вот это
Кстати, не затруднит чуть более прокоментировать что и где в лупе делается?
Спасибо.
5Если совсем коротко, то мы берем команду и парсим её
получается что то типа <command>;<command>;<command>; и т.д.
т.е. избавляемся от лишних переносов и все записываем в одну строку
;RING;+CLIP: "7961*******",145,,,"",0;
String data - не забываем добавлять
boolf_enter =false;//первый перенос или нет26byter_byte = 0;//текущий обрабатываемый бит2728if(mySerial.available()) //Ждем данных29{30while(mySerial.available() > 0) //если данные пришли...31{32r_byte = mySerial.read(); //читаем байт3334switch(r_byte)35{36case13:if(!f_enter) //если это перенос (enter) то в место него записываем;37{38data +=';';39f_enter =true;40}break;41case10: {}break; //если это другой перенос (он в основном в связке с enter идет) то тупо пропускаем42default: {43data += (char)r_byte; //если это не символы переноса то пишем в data44f_enter =false;45}46}47}4849if(mySerial.available() == 0) delay(50); //ждем вдруг ещё данные прийдут (если большая смс например)50}51все данные теперь у нас в data в виде <command>;<command>;<command>;
byter_byte = 0;//текущий обрабатываемый биттут ошибка в описании точнее байтпро уменьшение памяти
Идея хорошая, но у меня настройки в памяти храняться,
для оптимизации кода можно написать процедурку
void SendSerialData(String pData) { mySerial.println(pData); delay(100); }и вместо полностью хранимых команд в памяти можно записать что то типа
AT+ - это старт
остальные команды CNMI=2,2 и т.д. т.е. без AT+
будет выглядеть примерно так
дел.....