Здравствуйте, жители Амперки! Проблема с GSM модулем IOT-GA6 от GoouuuTech, мозги - Arduino Uno. Собрал схему из статьи (clck.ru/DPE5Q), но без резисторов, подключил напрямую и RX, и TX. Питание от USB ПК -> Arduino Uno; Подключил к ПК, запустил такой простой скетч: Код (C++): #include <SoftwareSerial.h> SoftwareSerial SIM800(8, 9); // 8 - RX Arduino (TX SIM800L), 9 - TX Arduino (RX SIM800L) void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); Serial.println("Start!"); delay(2000); SIM800.begin(9600); SIM800.println("AT+IPR=9600"); // Скорость порта GSM модуля (на всякий случай); delay(1000); SIM800.println("AT"); delay(1500); SIM800.println("AT+COPS?"); delay(1500); SIM800.println("AT+CPAS"); delay(1500); SIM800.println("AT+CREG?"); delay(1500); } void loop() { // run over and over if (SIM800.available()) { Serial.write(SIM800.read()); } if (Serial.available()) { SIM800.write(Serial.read()); } } После запуска все хорошо собирается, красная лампочка на модуле GSM быстро мигает. В Мониторе Порта выводит только надпись: START! *Белый Квадрат* [⸮] Больше ни на какие команды (AT, ATI..) не реагирует. Подключил так: GA6 -> Arduino Uno G -> GND (Возле POWER, под 5V) URX -> 9 порт (Где RX и TX) UTX -> 8 порт VCC -> 3.3V В модуле стоит рабочая симка РФ. Потом попробовал подключить с 2 резисторами (10 кОм каждый), толку от этого никакого, только GSM Модуль стал как-то ненормально мигать, то медленно, то быстро, то ярко, то мутно, никакой последовательности. После этого попробовал подключить доп. питание 9V 300mA, но ничего это опять же не дало, только перебои в работе. Заранее спасибо за помощь! Ссылки на модули: IOT-GA6 - ali.onl/10fu Arduino Uno - ali.onl/10fv
Вы взяли схему из статьи про SIM800. а у вас модем - аналог Athinker A6, поэтому схема не подходит. Самая первая ошибка - у вашего модема питание 5в, а вы его к 3.3 подключили.
После такого подключения: GA6 -> Arduino Uno G -> GND (Возле POWER, под 5V) URX -> 9 порт (Где RX и TX) UTX -> 8 порт VCC -> 5V, Через несколько секунд на модуле загорается красная лампочка и горит, почти одновременно с ней начинает недолго (секунды 2-5) мигать зеленая, потом перестает. После запуска скетча, он уходит в бесконечную загрузку, после которой вывело это: Код (C++): avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe7 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe7 Проблема загрузки в плату. Помощь по загрузке: http://www.arduino.cc/en/Guide/Troubleshooting#upload . Попробовал заново с переподключением, скетч загрузился, но, как и в прошлый раз, вывелась только надпись Start!, в это время иногда подмигивала зеленая лампочка, красная все так же горела. Спустя нескольких вводов в консоль команды 'AT' (Без кавычек), вывелся квадратик. Выяснил, что зеленый подмигивал тогда, когда я вводил в консоль AT/ATI... и т.п. Может, схему нужно как-то поменять? Есть какой-нибудь манульчик по данному модулю, с удовольствием почитал бы?
попробуйте такой код для функции setup() Код (C++): void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); Serial.println("Start!"); delay(2000); String str int k=5; SIM800.begin(9600); for(int i=0;i<9;i++) { delay(300); Serial.println("send AT to modem"); SIM800.println("AT");} do { k--; delay(300); SIM800.println("AT"); str=""; while(SIM800.available()) {char ch=SIM800.read(); str+=ch; delay(10); } if(str.indexOf("OK")>-1){ok=true;} Serial.println(k); if (k<1) {ok=true;Serial.println("modem timeout");} } while(!ok); SIM800.println("AT+COPS?"); delay(1500); SIM800.println("AT+CPAS"); delay(1500); SIM800.println("AT+CREG?"); delay(1500); } код из какого-то старого проекта, не проверял, могут быть ошибки.
Изначально boolean ok = false: Код (C++): Start! send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem 4 3 2 1 0 modem timeout Если же изначально boolean ok = true: Код (C++): Start! send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem send AT to modem 4
да, изначально false Судя по всем, модем не отвечает. Проверьте соединения, попробйте поменять местами провода RX и TX на модеме - бывают подписаны неправильно.
Поменял местами RX и TX, никакого эффекта это не дало. Возможно, что-то неправильно спаял или подключил, посмотрите: P.S. Провода нужны для подключения к плате Специально сфоткал без симки, не подумайте. На модуле из всех кастомных проводков к Uno подключен только VCC -> 5V Может, питания не хватает?
на фото модема над контактами URX UTX я вижу еще одну пару RX TX - попробуйте подключится туда. Почему, кстати, вы выбрали UTX URX - я бы с верхних начал.
Подключил сразу к URX/UTX, т.к. на форуме arduino.ru вычитал, что нужно так Ссылка на обсуждение: clck.ru/DRGV2 Там пишут, что HTX/HRX нужны для прошивки, может, кстати, попробовать прошить? Но все-таки попробовал подключить к ним, никакой разницы, все так же выводит modem timeout, только зеленая лампочка перестала мигать когда вызываются команды AT и т.п.. Пробую прошить, но, к сожалению, в программе для прошивки ничего не отображается:
тогда, к сожалению, больше ничем не помогу. Где-то на Ардуино.ру, помню, была ветка - парень тоже мучался с этим модулем, в итоге перешил его свежей прошивкой и все заработало. Поищите.
Ладно, бог с этим модулем, хорошо, что нашелся еще один. Буду с ним предельно осторожен. дабы ничего не испортить. GSM/GPRS SIM800L с антенной Фото прилагается: Собственно говоря, вопросы: Как его правильно подключить к Arduino Uno? (Желательно подробную схему картинкой) Как вставить симку? Какой стороной?
По этому модулю (SIM800L) в нете море инфы, я его тоже приобрел, сначала не хотел находить сеть и временами вообще переставал работать (сейчас тоже, не знаю с чем это связано, но если потормошить контакты - начинает работать) Кароче если он не заработал сразу или с 3-5 попытки не может найти сеть - значит не повезло модулем, по идее должен сразу работать, только там ньюансы есть по питанию и напряжение на rx или tx лучше опустить до 2.5В тк у него предельные 4.2 вольта, надо через делитель подключать, а не напрямую. инфы море! а вот по thinkerу не понятно ниче, инфы совсем нет(( все чего мне удалось с ним добиться - он находил и подключался к сети, думаю, что он даже правильно работал(к сожалению не проверил принимает ли он звонки) но в терминале он со мной очень плохо общался. Отвечал кракозяброй, иногда после нажатия кнопки на reset он начинал говорить более менее четко, отвечал ОК на команду АТ например, но временами так же всето ОК отправлял кракозябры. К ардуино не подключал его, пытался сначала отдельно его настроить
Модуль Goouuu Tech IOT-GA6 прошитый до v03.06.20171127r Через адаптер usb-uart работает норм на 115200 через терминал с ПК. А при подкл. к NANO периодически шлет каркозяблы в ответ на команды из ардуиновского терминала. Выставлял 57600, 38400 9600 на железном и софтварном портах.. так вообще команд не видно https://ibb.co/862P5xj сорри, не вставляется картинка Код (C++): #include <SoftwareSerial.h> SoftwareSerial mySerial(7,8); void setup() { { // Open serial communications and wait for port to open: Serial.begin(115200); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.println("Goodnight moon!"); // set the data rate for the SoftwareSerial port mySerial.begin(115200); mySerial.println("AT"); } } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
Тут все просто. Вы используете для свзи с модемом Софтовый сериал. Максимальная скорость Софтсериала - 38400. А у модема дефолтная скорость Сериала 115200. Поменять ее нельзя. Выхода тут два. Первый, простой. но затратный - использовать для связи с модемом аппартный сериал, Для этого взять микроконтроллер, в котором более одного сериала - например Мегу или СТМ32 Второй - умный - использовать режим автоподстройки скорости. Если модем некоторое время долбить сообщениями на скорости. скажем, 9600 - через десяток сообщений он должен автоматически перейти на эту скорость. Но делать это придется каждый раз заново, так как модем эту скорость не запоминает и при включении всегда стартует на 115200
Вообще должно... Goouuu Tech IOT-GA6 - это копия AThinker A6. На оригинальном А6 это работает, а с китайским клоном IOT-GA6 дела не имел. Если и правда в IOT-GA6 нет автоподстройки - то остается только брать плату с двумя Сериалами. Собственно, в своем проекте я так и сделал - перешел с Нано на СТМ32, ибо подстраивать скорость при каждом включении хлопотно
Здравствуйте! Интересно узнать, актуальна ли сейчас эта тема? Получилось у вас? И какие ещё проблемы встретились? У меня этот модуль работает. Помучался, но ничего не прошивал. Может кто ещё посещает эту тему. Может кто и поможет. Такой глюк: только с одного номера всё работает отлично. Стоит поменять цифры в коде и начинается дурдом. На разные номера модуль отправляет разное количество смс. Менял телефоны. Код (C++): if (val.indexOf("RING") > -1 && val.indexOf("7*****") > -1) { mySerial.println("ATH"); delay(1000); mySerial.println("AT+CMGD=2,4\r*"); delay(1000); mySerial.println("AT+CMGF=1\r*"); delay(1000); mySerial.println("AT+CMGS = \"7********\""); delay(1000);