Подключение модуля gsm/gprs a6 (расширенная версия) к Arduino UNO R3
- Войдите на сайт для отправки комментариев
Подключаю модуль GSM/GPRS A6 (расширенная версия) к Arduino UNO R3.
Вот так он выглядит. Порылся в Тырнете в поисках подключения к Arduino UNO R3.
Нашёл достаточно простое подключение:
GSM/GPRS A6 Arduino UNO R3
VCC_IN --------> 5V
U-TXD --------> RX (0 pin)
U-RXD --------> TX (1 pin)
GND --------> GND
Скетч отказывался заливаться, выскакивала ошибка синхронизации, выделывался UNO, помучался, решил подключить к А6 внешнее питание. Не помогло. При этом, при полностью отключенном А6 заливка проходит без проблем.
Обратил внимание на то, что при подключении U-RXD --------> TX (1 pin) начинает подсвечивать светодиод ON на плате Arduino. Похоже, что по U-RXD идет какой-то сигнал (наводка).
Подскажите, пожалуйста, чайнику, что делаю не так?
Может всё-таки подключаю не так?
Заранее спасибо всем откликнувшимся.
Скетч отказывался заливаться, выскакивала ошибка синхронизации, выделывался UNO, помучался, решил подключить к А6 внешнее питание. Не помогло. При этом, при полностью отключенном А6 заливка проходит без проблем.
Не подлючай модуль при заливке скетча, подключайте потом или, как Вы говорите, отключайте его полностью.
Он начинает воспринимать заливку скетча как свои команды, отвечает на них, сходит с ума и сводит с ума Уну.
Скетч отказывался заливаться, выскакивала ошибка синхронизации, выделывался UNO, помучался, решил подключить к А6 внешнее питание. Не помогло. При этом, при полностью отключенном А6 заливка проходит без проблем.
ну так все естесственно. Интерфейс USB, через который происходит заливка подключен на контроллере к пинам 0 и 1. Поэтому, если к пинам 0 и 1 что-то подключено - заливка скетча будет глючить.
Решение два - либо подключайте модем к другим пинам, либо каждый раз при заливке отключайте модем от ардуины
ну так все естесственно. Интерфейс USB, через который происходит заливка подключен на контроллере к пинам 0 и 1. Поэтому, если к пинам 0 и 1 что-то подключено - заливка скетча будет глючить.
Решение два - либо подключайте модем к другим пинам, либо каждый раз при заливке отключайте модем от ардуины
Тогда посоветуйте, пожалуйста, к каким пинам подключать девайс, и как получать и передавать информацию.
И, если можно, так же посоветуйте, какую библиотеку в таком случае использовать? Стандартную "GSM.H" или какую-то другую?
Помогите чайнику закипеть, пожалуйста...
Да,ещё заметил, что на выходах висит постоянное напряжение порядка 3,5В. Так должно быть или это глюк модуля?
На всех выходах висит? На некоторых - нормально.
ну так все естесственно. Интерфейс USB, через который происходит заливка подключен на контроллере к пинам 0 и 1. Поэтому, если к пинам 0 и 1 что-то подключено - заливка скетча будет глючить.
Решение два - либо подключайте модем к другим пинам, либо каждый раз при заливке отключайте модем от ардуины
Тогда посоветуйте, пожалуйста, к каким пинам подключать девайс, и как получать и передавать информацию.
И, если можно, так же посоветуйте, какую библиотеку в таком случае использовать? Стандартную "GSM.H" или какую-то другую?
Помогите чайнику закипеть, пожалуйста...
Откройте для себя библиотеку SoftwareSerial. Она позволит вам подключить модем к почти любым пинам Ардуино.
Если хотите чему нибудь научится при работе с модемом, старайтесь не использовать библиотек, а обрабатывать ответы модема самому. Этот способ менее затратен для ресурсов микроконтроллера.
Очень рекомендую к прочтению этот цикл статей http://codius.ru/articles/GSM_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_SIM80...
Уточняю напряжения относительно GND (вольт):
Uпит 5,15
H_TXD 3,39
H_TXD 3,37
R232_RX -5,85
R232_TX 0
U_RXD 3,9
U_TXD 3,39
Оч-чень странное напряжение на R232_RX с минусом... Так и должно быть?
Оч-чень странное напряжение на R232_RX с минусом... Так и должно быть?
Если ко мне вопрос, то не знаю, я этими выводами не пользуюсь, и модуль A6 у меня другой.
Выше же уже утветили - используйте на МК SoftWare Serial библиотеку и соотвественно пины, отличные от 0 и 1.
Минус для RS232 - нормально. Загляните в википедию.
Попробовал - реакция нулевая, может другие входы-выходы надо использовать?
Задал вопрос на codius.ru, пока без ответа.
Да и модуль там другой используется...
да не..... должно все работать, он простой как валенок.
Еще подключите PWR на +5 V, RST на GND
если есть переходник USB-TTL - напрямую к компу подключить и пообщаяться с модемом, по умолчанию скорость 115200 у него, если нужно меньше - в течении 3 секунд слать AT команду ему на нужной скорости.
Ур-р-ря!!!!
Удалось соединится!
Но в ответ пришли кракозяблы...
Вот Скетч с codius.ru, немного переделанный.
А вот кракозяблы:
Кракозяблы не копировались, пришлосьчерез Print Screen.
Соединился - уже счастье, но похоже что-то с кодировкой не то...
А вы 3 секунды ему команду АТ давали чтоб он настроился под скорость? Выше же написано....
Или в своём скетче поставьте 115200 скорость и в мониторе порта соответственно аналогично
Написано-то оно написано, но чайник не втыкает в смысл этих 2-х строк:
В частности "reset_A6_pin", куда она пишется?
На модуле нет RESETа...
Пока заглушу эти строчки, посмотрю, что получится...
Попробовал.
Что характерно, вывалил кучу команд "АТ" без ответа. Похоже, что "
Serial
.print(
"AT\r\n"
);" должно выглядеть как "GSM_A6.println("AT\r\n");"? Или я опять что-то не понял? Ведь команда АТ должна посыляться на модуль, а не в монитор порта?
Пробую изменить.
Вот на что обратил внимание: кракозяблы в мониторепорта появляются только при включении питания модуля, при этом энергично мигает синий светодиод на порте U_TXD.
Докладываю результаты испытания: НУЛЬ!
Вот новый скетч.
В мониторе порта пишет "Start!" после чего разность миллисекунд раз десять и ФСЁ...
Ещё хочу спросить уважаемого andycat, что означают "UL" после 3200 (3200UL)?
Приношу всем извинения за непонятки со стилями в комментариях, сам не понял как получилось...
, что означают "UL" после 3200 (3200UL)?
Это говорит компилятору константу рассматривать не как int, а как беззнаковое long (внутренне представление числа).
( вот тут информация есть )
С беззнаковым длинным понятно. Спасибо за разъяснение.
А вот с остальным - "тёмный лес и волки воют"...
Вот новый скетч.
В мониторе порта пишет "Start!" после чего разность миллисекунд раз десять и ФСЁ...
ну так...если вы используете именно этот скетч - ничего и не будет в мониторе порта.
в loop добавьте обратную операцию - т е из монитора порта в модем, и попробуйте ручками ввести в модем какую нибудь команду например ATE0- должен появиться ответ.
С такой модификацией модема не работал, но че то сомневаюсь что на нем RST и PWR нет - можете крупно фотку или описание точное выложить посмотреть?
я для A6 ввожу вот такие команды при включении устройства, если добьетесь ответа, рекомендую эти строчки в setup прописать:
и в вашем скетче 3 строка тип current_millis не правильный - должен быть unsigned long
и в вашем скетче 3 строка тип current_millis не правильный - должен быть unsigned long
Вроде не ругается, а цифры выдаёт правильные.
не ругается, а цифры выдаёт правильные.
тем не менее, попробуйте подумать. Какой тип значения возвращает millis() ?
в loop добавьте обратную операцию - т е из монитора порта в модем, и попробуйте ручками ввести в модем какую нибудь команду например ATE0- должен появиться ответ.
Простите, мне ещё не совсем понятен метод передачи из монитора порта в модем, если можно примерчик в студию
С такой модификацией модема не работал, но че то сомневаюсь что на нем RST и PWR нет - можете крупно фотку или описание точное выложить посмотреть?
Описания нет, а фото - пожалуйста. RST - точно нет, а про PWR - речи не было, я считал, что это, возможно, альтернативное питание.
Лицевая сторона приведена в начале статьи, там профессиональное фото.
тем не менее, попробуйте подумать. Какой тип значения возвращает millis() ?
Исправил, хотя, если честно, в данном случае, не вижу принципиальной разницы. Возможно в более сложных проектах это может сыграть негативную роль.
Но, тем не менее, спасибо за совет.
не вижу принципиальной разницы.
С таким отношением и без изучения предмета, скетч ваш далеко не уедет.
Вижу PWR есть, рядом EN - думаю тоже важную роль играет - читайте описание к своему модему.
Пример loop в вашем же 12ом сообщении.
ЗЫ. Учиться учиться и еще раз учиться....
К сожалению описания найти пока не удалось, даже на вражеском. Возможно плохо искал.
Пример loop в вашем же 12ом сообщении.
Имеется в виду
Я таки правильно Вас понял?
Имеется в виду
Я таки правильно Вас понял?
да, соотвественно потом когда инициализация и несколько ответов от AT команды пройдут - можно в монитор порта слать что либо и эксперименитировать
На сегодня уже всё, а завтра, надеюсь удастся поэкспериментировать...
Всем спасибо за намёки и подсказки...
Итак эксперименты продолжаются.
Пока не забыл! Поповоду PWR и EN: на этих пинах сидит постоянное напряжение.
На PWR - 3,43в, на EN - 5,07в.
Подозреваю, что ни один из этих выводов не является аналогом RST.
Вот последний вариант скетча, залитого в Arduino/
initModem временно заблокирован. Ответа на команду АТ нет, при подаче питания на модуль по-прежнему пишет кракозяблы.
Новых идей по установлению связи с модулем пока не возникло. Описание - отсутствует.
Может у кого возникли какие либо мысли по поводу модуля?
1. дохлый модем (не верю).
2. где то нет контакта или кривое подключение.
3. третья строка int так и не исправлена.
4. читаем и не ленимся зачем пины PWR и EN и не на них меряем напряжение, а подаем на них то что нужно.
основная мысль: что то не так делаете, информации в интернетах вагон....
Update: самый надежный споспоб проверить модем - подключить напрямую к компьютеру через USB TTL переходник.
Сегодня решил изменить скорость обмена на 115200, и вот что получил после включения питания.
Копирование через буфер так и не получилось.
Ответ более-менее осмысленный, но всё равно, как чайник, я ничего не понял. И команды через монитор порта тожене проходят...
Это Вы по софтсериал пытаетесь передавать на 115200?
Воспользовался сторонним теминалом PuTTY, 3 раза включал модем, получил 3 похожих, но разных ответа.
Да, задал скорость 115200 для порта и только на этой скорости получил что-то более-менее осмысленное...
Софтсериал на 115200 не тянет.
Либо подключайте к аппаратному, либо переводите модем на более низкую скорость.
Было у меня такая бяка и похожий вывод А6 модема - это его какой то странный формат вывода, типа вместо символов он в кодах отвечает, помогло сброс настроек к заводским.
Поищите команду и тупо его сбросьте на дефолтные и перезагрузить.
Команды через тот же putty отправляйте.
ЗЫ. Поэтому для начинающих я всегда рекомендую модем sim800, он сложнее в подключении и питании, но более предсказуем в поведении.
Весь фокус-то в том, что он команды не воспринимает...
Чудо прям...
Весь фокус-то в том, что он команды не воспринимает...
никакого фокуса. Если Софтсериал на скорости 115200 иногда может работать на прием, то на передачу он больше 38400 не тянет.
Настаивайте модем на более низкую скорость, как это делать - andycat Вам выше писал
никакого фокуса. Если Софтсериал на скорости 115200 иногда может работать на прием, то на передачу он больше 38400 не тянет.
У меня противоположная информация. Передавать проще. У меня сейчас софтсериал на дебаге стоял вместо хардварного - на вывод прёт только так на 115200. На приём - 57600, если есть "параллельные" задачи.
Ну ТС если подключил к компу, то оттуда то наверняка 115200 работает ок.
Тут где то на форуме было описано год назад как я мучился с ответами ussd баланс посмотреть, в итоге довёл модем до неадекватного поведения и сбрасывал именно командами до дефолтных настроек. Завтра тему поищу....
Странно, накатал целое произведение (не очень художественное) но почему-то получилосьто, что получилось.
Итак, получен нормальный ответ от модема.
Спасибо всем, принявшим участие в дискуссии по эксперименту ;)
Но, это ещё не всё, теперь буду пытаться отправлять и получать SMS. Наверняка будут возникать вопросы, и обратится мне кромевас, уважаемые форумчане, больше не к кому.
Так что до встречи...
PS. Пришлось задать не менее 10 циклов обращения с интервалом в секунду, только после этого пошли адекватные ответы...
В документации написано в течении 3х секунд слать AT для того чтоб модем стал работать на нужной скорости, так что поэкспериментируйте - уменьшите задержку между отправкой AT и период цикла соответственно уменьшить.
Поэкспериментировал - это единственный вариант. Потерпеть можно, ведь это только при включении питания необходимо, насколько я понимаю. В процессе работы нет необходимости повторять процедуру.
В процессе работы нет необходимости повторять процедуру.
бывает приходится и повторять. Модем при длительном простое возвращается к дефолтной скорости
или если модем не отвечает на команды нормально - придеться его сбросить и заново инициализировать
И вновь продолжаю экспериментировать с А6. До SMS дело ещё не дошло, пока пытаюсь зажечь светодиод при ответе "ОК" от модема.
Почему-то загорается сразу, ещё до ответа модема. Сейчас эта ветка закомментирована. Вот код.
Как видно из кода, сделал попытку сократить количество посылок "АТ" путём команды "break", но количество посылок не изменилось...
Start!
И ещё какая странность проявилась: перестал отвечать на команду "AT+IPR?", а на команду "АТ" стал отвечать в числовом виде (после последнего "ОК" ответ на "АТ", выделено жирным).
Может знатоки подскажут, где я опять накосячил?