Sim900 не работает с МЕГОЙ
- Войдите на сайт для отправки комментариев
Всем снова здрасьте! Уже сбился со времени сколько я маюсь над этим траблом... И тему создавал подобную, но болт. Ситуация такая: есть у меня уно, мега и вот такой вот жпрс-шилдик http://ru.aliexpress.com/item/Geeetech-GSM-GPRS-Shield-For-Arduino-with-Antenna-Free-Shipping/2028210457.html Сажаю шилдик на унку, заливаю в него от такой вот скетч:
#include <SoftwareSerial.h> //заводим Serial-соединение с GPRS-Shield на 7 и 8 цифровых входах SoftwareSerial gprsSerial(7, 8); void setup() { // GPRS Shield общается по умолчанию на скорости 19200 бод gprsSerial.begin(19200); } //в строке curStr будем хранить текущую строку, которую передает нам плата String currStr = ""; int updateTime = 0; void loop() { touch(); if (!gprsSerial.available()) return; // Считываем очередной символ с платы char currSymb = gprsSerial.read(); if ('\r' == currSymb) { // Получен символ перевода строки, это значит, что текущее // сообщение от платы завершено и мы можем на него отреагировать. // Если текущая строка - это RING, то значит, нам кто-то звонит if (!currStr.compareTo("RING")) { //кокетничаем 3 секунды, чтобы дать услышать звонящему гудок delay(3000); //посылаем команду на поднятие трубки gprsSerial.println("ATA"); } currStr = ""; } else if (currSymb != '\n') { // Дополняем текущую команду новым сиволом // При этом игнорируем второй символ в последовательности переноса // строки: \r\n currStr += String(currSymb); } } /* * Функция провоцирует поддержание коммуникации с платой даже если * та была перезагружена без перезагрузки Arduino */ void touch() { if (millis() >= updateTime) { gprsSerial.println("AT"); updateTime += 5000; } }
Все прекрасно работает - при поступления звонка на шилд, тот поднимает трубку соответствующе командой. Все в ажуре. Теперь снимаю шилдик с унки и ставлю на мегу... Заливаю тот же самый скетч... Звоню на шилдик, а там болт (непрерывные гудки и трубу он снимать не хочет). Пины перепроверил, питание, что у унки, что у меги с одного источника, перезагрузил все... Сама мега полностью рабочая (у меня на ней весь проект висит). Кто то встречался с подобной херней? Есть мысли куда можно капнуть или мультиком тыкнуть?
Я может и не по теме, а нет желания повесить шилд не на софтовый, а на аппаратный UART у меги их хоть отбавляй.
Я может и не по теме, а нет желания повесить шилд не на софтовый, а на аппаратный UART у меги их хоть отбавляй.
Есть... И так было первоначально задумно, но не работает нифига... Именно поэтому я вспомнил, что на унке все пахало с библиотекой SoftwareSerial и решил перепроверить... Вот и перепроверил... Результаты в первом посте как раз вылезли... Я решил если уж не заработает, так как хочу, то посажу шилд на уно, и буду с меги слать команды с аппаратного УАРТа на унку типа if (digitalRead(12) ==HIGH) {Serial3.print("1");} А в унке выставлю соответствующие каждому входящему номеру/знаку команды для шилда.. Ну а как еще..
Вы внешнее питание подавали на шилд?
Из отличий на нефирменных Ардуинках могут быть в том числе и разные стабилизаторы.
Вы внешнее питание подавали на шилд?
Из отличий на нефирменных Ардуинках могут быть в том числе и разные стабилизаторы.
Питания подавал двумя способами, оба безрезультатно... Первый способ - 5В напрямую через пин 5В шилда в 5В дуинки, второй штекером 12В в разъем питание дуинок... уно по-всякому работает а мега нифига... Вот еще на бук пробило 12В с УАРТа - доигрался...
Обнаружил новый трабл... Подключаю к меге шилд w5100 по ICSP и тоже болт... Замечу, что и жпрс-шилд и w5100 этот на другой меге исправно работают. При этом набюдаю такую картину: если соединить шилд w5100 только проводами по ICSP к "рабочей" меге, то индикатор питания на w5100 НЕ горит и приходится подавать напругу отдельно и потом все начинает работать, а если подключаю так же проводами по ICSP этот шилд к "нерабочей" меге, то индикатор питания на шилде загорается... "Нерабочая" мега от такая: http://avrobot.ru/product_info.php?products_id=2137 ... Че за китайщина...
а питание измерял при подключенных шилдах? 5В и 3.3В. уж больше всего похоже на проблему с питанием
Подключаешь отдельный источник питания на 5В к шилду и соединяешь GND шилда и GND ардуины, ну и все сигнальные провода для связи с шилдом. Ардуину тоже запитываешь отдельно, хоть от USB
а питание измерял при подключенных шилдах? 5В и 3.3В. уж больше всего похоже на проблему с питанием
Неа, но это сейчас организую... Сейчас отпишусь после опытов
У меня на одной меге маркировка UART наоборот у Serial1 была, намучался, наматерился.
Потом гляжу а там просто маркировка неправильная, RX и TX попутаны. Причем только у Serial1. может и у твоей меги что попутано или плохо пропаяно?
У меня на одной меге маркировка UART наоборот у Serial1 была, намучался, наматерился.
Потом гляжу а там просто маркировка неправильная, RX и TX попутаны. Причем только у Serial1. может и у твоей меги что попутано или плохо пропаяно?
Ды все может быть... Сейчас с питанием поиграюсь для начала)))
Поотсоединял все провода "нерабочей" меги, положил на коленки рядом с ункой... лежат каждый на своей коленке с одинаково залитыми скетчами... Беру жпрс-шилд и врубаю в уно, в пины +5В и GND тыкаю мультик, показывает 5.02В... Звоню на шилд - напруга падает до 4.90В, но шилд берет трубу, тобишь все работает... Перетыкиваю жпрс-шилд в "нерабочую" мегу... В пины мультик... Показывает 4.98В... Начинаю звонить на шилд, напруга падает до 4.91В и вызов НЕ принимается, тобишь Не работает нифига... Проверял с отдельным питанием по совету Radjah, ситуация та же:-) Контакты на вид все неплохи довольно... Может из за самого проца че? На унке Atmega 328P, на "нерабочей" меге Atmega2560 16AU, хотя с чего бы...
ну раз так. значит теперь копать в сторону софта
ну раз так. значит теперь копать в сторону софта
Ну вот, к примеру, залил в уно стандартный скетч из библиотеки SoftwareSerial => SoftwareSerialExample Включаю шилдик и отправляю ему через serial любой символ.. Он, как и должно быть по скетчу, мне возвращается обратно... С мегой же все молчит наглухо...Могу соединить мегу с уной без шилда уартами и поболтать для проверки...
ну зачем тебе на меге софтварный
ну зачем тебе на меге софтварный
Ды чисто лишь затем, что на софтварном я точно знаю, что работало.... Завел сейчас на меге сериал3, замкнул рх-тхконтакты.... открыл монитор порта - все нормально...Отправил букву - пришла буква...Подал отдельно питание на жпрс-шилд, соединил общую землю... зафигачил провода сериал3 меги к 7,8 пинам жпрс-шилда...Включил шилд...Во время включения шилда в мониторе порта выскачило "ю"... Далее на любые символы молчание... Сейчас попробую тоже самое с уной...
Вообщем вот нашел один способ про который и говорил: вставил жпрс-шилд в уно. В уно же залил скетч SoftwareSerialExample, а на меге завел сериал3 и влепил его в сериал уны. Вот так заработало. w5100 заработал - на другом конце провода коннектор был неисправен просто...
Мужики, а может был у кого-то такой трабл с таким шилдом... Гружу в УНО следующий скетч:
и просто звоню на шилд... При правильной работе шилда должно приходить что-то типа "RING bla bla bla", а приходит вместо этого "я".. Затем просто гружу этот скетч:
Этот скетч начинает работать с какого-то хрена... Затем я гружу вновь первый скетч и только тогда он начинает работать...Если сбросить питание то все необходимо повторить заново. Че за хрень может быть?
Вообщем сам отвечаю на свой вопрос... Проанализировав оба этих кода и затыкав дуинку до полусмерти была выявлена следующая штука: ОБЯЗАТЕЛЬНО ПЕРВОЙ КОМАНДОЙ, ПОСЛАННОЙ НА ШИЛД, ДОЛЖНА БЫТЬ "xxxSerial.println("AT"); Своего рода активация получается...