SIM800 не отвечает на АТ команды
- Войдите на сайт для отправки комментариев
Сб, 20/02/2016 - 22:37
Всем доброго времени суток.
Нужна помощ по модулю SIM800.
Вообщем дело обстоит так.. подключаю его от блока питания компа 12 вольт через понижающий шилд,
подаю 4.10 вольта при поиске сети 4.09 вольт, тоесть отлично без просадок.
После включения светодеод мигает быстро после чего медленнее (сеть нашел).
Сигнальные ТХ к RX а RX к ТХ ( пробовал и через делитель и на прямую) к пинам №18,19 на ардуино мега . ну и земли соединил.
залил скетч :
#include <SoftwareSerial.h> SoftwareSerial mySerial(19, 18); // RX, TX void setup() { Serial.begin(19200); //Скорость порта для связи Arduino с компьютером Serial.println("Goodnight moon!"); mySerial.begin(19200); //Скорость порта для связи Arduino с GSM модулем mySerial.println("AT"); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
так вот при открытие монитора порт выставил скорость и новая строка, и мне приходит сообщение "Goodnight moon!" из скетча, и все...
пишу в монитор порта AT, ничего никакой реакции, также пробовал ATI тоже реакции 0.
что я не так сделал дайте идею кто знает? и еще один из контактов слота симкарты както странно припаян, припоя не видно на нем,
а прозвонить незнаю как , и может ли не работать АТ команды из за этого контакта?
Кто знает отзовитесь пож... Заранее спасибо
У меня тоже держатель сим на вид плохо припаян, но работает. Да и у Вас видимо тоже работает, раз сеть находит, да и без симки должны AT идти.
А в мониторе порта внизу рядом со скоростью стоит "Новая строка"?
да "Новая строка" выставлена, скетч правильный залит ?
Да правильный, проверяйте подключение, может RX-TX перепутали, получается у Вас 19 пин должен идти на TX модуля, а 18 на RX. И как правильно заметили нужен хотя бы делитель напряжения (хотя в даташите рекомендуются транзисторы), так как у ардуины 5В, а там надо 2,8В, для RX ардуины вообще не хватает, так как там от 3В считается 1, но это примерно, на самом деле работает, я сделал делитель для TX ардуины, а для RX просто резистор небольшой на 39 Ом (такой нашел), хотя пишут ничего не надо, итак не хватает же, но на всякий случай, а делитель из резисторов 1кОм и ~1,2кОм (из двух последовательно, одного не нашел). Но пишут и напрямую работает, но не рекомендуется... Кстати похоже из-за того что через делитель, то короткие команды работают на больших скоростях, а длинные типа чтение смс, ошибки (смс поврежденный текст приходит, хотя это получается не через делитель, а через резистор один), не сразу разобрался в чем косяк, оказалась байты другие летят иногда... убавил скорость со 115200 ниже и заработало, на 19200 так-то должно стабильно работать.
БЕДА БЕДОЙ не в какую не хочет отвечать, менял провода tx rx местами, с делителем и без него пробовал, ничего не отвечает
Вот еще по SoftwareSerial:
На платах Arduino Mega и Mega2560 некоторые выводы не поддерживают прерывания, возникающие при изменении уровня сигнала. В силу этого, на данных платах в качестве вывода RX могут использоваться только следующие выводы: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
Вот и ответ =)
в скетче прописал так SoftwareSerial mySerial(15, 14); // RX, TX
ну и подключил соответственно, и снова реакции 0
Попробуйте 15 и 14 отключить от модуля и просто между собой замкнуть, должно то что пишите сразу появляться, так хоть ардуину проверите.
Jatixo спасибо огромно за подсказку по поиску проблемы, Вы как в воду глядели, и действительно проблема до модуля СИМ800 не дошла, а конкретннее по вашему совету замкнул рх и тх и как не странно ничего, подумал спалил контакты ... после проверки светодеодом (поморгал) оказалось что они рабочие. И вот я снова застрял, одно предположение только что библиотека SoftwareSerial не работает... возможно ли такое? или еще какие варианты могут быть ?
Вряд ли библиотека, попробуйте другие пины из списка, скорость 9600, также можно arduino новую версию скачать, но это вряд ли...
вообщем так расскажу. на форуме нашел тему и ссылку на библиотеку AltSoftSerial ( http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html )
Скачал, установил, там описаны контакты для этой библиотеки - являются константами, у меня на меге это 46,48. Но что то там написано про татаймер который занимает эта библиотека и возможны несовместимости с другими, какими и почему так и не понял.... мой английский очень хромает.
также опросил модуль на доступные сети, вывел мтс, билайн, мегафон а вот теле2 отсутствует, хотя на мобилке сеть полная. Не связано ли это с 3G а модуль поддерживает 2G?
И почему не работает библиотека SoftwareSerial ? есть ли у кого предположения?/
https://www.arduino.cc/en/Reference/Serial
там выделены Serial1, Serial2 может так и писать надо, а не myserial и там выводы другие:)
нет при инициализации портов в библиотеке SoftwareSerial используется команда
SoftwareSerial mySerial(19, 18);
// RX, TX
к сожалению Ваш ответ мне не помог!
Еще есть у кого идеи по посту
#10 ?Это аппаратные serial, им softwareserial не нужно, к ним нужно обращаться также как к Serial (который к компьютеру идет), но с цифрой на конце. Пробуйте так, а также получилось, что Вы как раз все разы пробовали как раз эти порты, да еще и цифры всегда наоборот, попробуйте цифры поменять местами(и провода соответственно), а также другие порты из Software Serial.
В общем пробуйте так:
Получится 19 (RX) и 18 (TX), соответственно 19 к TX GSM, 18 к RX GSM.
замкнул тх и рх использвал как обычный сериал все работает, подключал к 50 51 контактам через SoftwareSerial не пашет, и провода менял и так и так, не выходит, в общем пришел в кыводу что нужно заменить библиотеку SoftwareSerial , где скачать можно?
Она вместе с Ардуино идет: https://www.arduino.cc/en/Main/Software
Попробуйте в новую папку поставить или обновить старую и оттуда Компилировать и Загрузить.
Baks, у меня получилось.
Так и не могу запустить ардуинку мега с библиотекой SoftwareSerial, уже пробовал другую версия компилятора скачал arduino-1.7.8, до этого работал с arduino-nightly. Контакты перемыкаю, тоесть ХТ с РХ на адуино. В общем взял пример из библиотеки
пробовал все пины для меги (соответственно в скетче тоже менял) и скорасть менял, не помогает.
Подскажите пожалуйсто как запустить эту библиатеку, что можно еще проверить ?
Поменяйте местами пины 11 и 10.
не помогло, выводит только Goodnight moon
есть еще идеи? идеи иссякли у меня :(
свето https://www.google.com.ua/search?hl=ru-UA&source=hp&biw=&bih=&q=%D0%B4%D0%B8%D0%BE%D0%B4&gbv=2&oq=%D0%B4%D0%B8%D0%BE%D0%B4&gs_l=heirloom-hp.3..0j0i131j0l8.864.1583.0.2064.4.4.0.0.0.0.115.383.3j1.4.0....0...1ac.1.34.heirloom-hp..0.4.383.c6Lgn4zWmmQ
Baks, у Вас MEGA2560?
Если так, то необходимо вместо Serial указывать Serial1 или Serial2 или Serial3.
The Arduino Mega has three additional serial ports: Serial1 on pins 19 (RX) and 18 (TX), Serial2 on pins 17 (RX) and 16 (TX), Serial3 on pins 15 (RX) and 14 (TX). To use these pins to communicate with your personal computer, you will need an additional USB-to-serial adaptor, as they are not connected to the Mega's USB-to-serial adaptor. To use them to communicate with an external TTL serial device, connect the TX pin to your device's RX pin, the RX to your device's TX pin, and the ground of your Mega to your device's ground. (Don't connect these pins directly to an RS232 serial port; they operate at +/- 12V and can damage your Arduino board.)
Т.е. если я правильно понял, на 10 и 11 порту по сериалу не будет рабоать. Попробуйте Serial1 и порты 19 и 18.
dr.lmg с сериалом все отлично работает, на всех трех, весь вопрос в том что библиотека SoftwareSerial не в какую не хочет заработать на моей ардуинке
"Baks, у Вас MEGA2560?" и да вы правы. пока использую не обычный сериал а библиотеку AltSoftSerial . она работает нормально. а вот с SoftwareSerial не на каких пинах не запускается. может чтото с таймером?
Ну с другими если работает, то и фиг с ней, с этот библиотекой. Что в ней такого, что нужно обязательно использовать ее?
У меня библиотека relay8 конфликтовала с одной из других библиотек. Но ошибок не было, протсо не работала и все.
Я ее переместил в самый верх, над остальными, и все заработало. Попробуйте подключать SoftSerial самым первым. И самым последним.
хотел использовать библиотеку SIM800 а она использует SoftwareSerial вот в чем вся загвостка переписывать очень страшно, и думаю очень долго будет, а проверяю я какраз тестовым скетчем там только одна она и используется #18
А мой скетч с бибилиотекой SIM900 не пробовали?
так он тоже эту библиотеку использут значит и работать не будет
Так попробуйте, прежде чем утверждать :)
Baks, проблему я так понял решили? Расскажите в чем она была?
Всем доброго времени суток.
Кое-что по работе с SIM800L есть здесь:
http://arduino.ru/forum/proekty/gsm-sistema-kontrolya-za-avtomaticheskim...
Все работает как часы.
У меня аналогичная проблема была. Не стал использовать SoftwareSerial, все повесил на аппоратный RX TX. Плюс ко всему скорость работы SIM800 была по умолчанию настроена на 115200, а я пробовал и 9600 и 4800 и т.д. И в результате, все работает как часы)))
Я походу знаю в чем дело!!!! Но не знаю как исправить (((
У меня поначалу модуль бодро отвечал на все команды, но не отправлял СМС (скетч использовал из шапки).
Потом я нашел вот такой код для сетапа:
mySerial.println("AT+CLIP=1"); //включаем АОН
delay(100);
mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.)
delay(100);
mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста
delay(100);
СМСки стали улетать но модуль перестал отвечать на команды (хотя продолжает их выполнять).
Как вернуть все обратно не пойму.
РАЗОБРАЛСЯ!!!!
Нужно "-" источника питания повесить ещё и на GND платы ардуино. Все стало работать норм!!!!
Подскажите как Вы реализовали? Схема подключения. Скетч с примером.
Все забыл уже. К концу дня соберу, вспомню, пришлю.
Я подключал вот так. Преобразователя небыло, использовал батарейку.
Скетч:
Возможно нужно будет поэксперементировать с паузами. Можно для начала поставить поболше и опытным путем уменьшать. Мой модуль работает с приведенными здесь.
Я подключал вот так. Преобразователя небыло, использовал батарейку.
спалите модуль к чертовой матери.... на рх тх можно подавать не более 2,8В !!!
делаейте сами, но не тащите сюда- другие сожгут свой модуль и скажут вам спасибо.
потом еще ноют - вот чтото у меня скетч не работает.... мозги не работают ни грамма..
начнете ныть что можно не по правилам и все работает - так ходите лучше на красный свет через дорогу, но не тащите сюда такие вот "схемы".
Я подключал вот так. Преобразователя небыло, использовал батарейку.
спалите модуль к чертовой матери.... на рх тх можно подавать не более 2,8В !!!
Да. Резистор в килоом-другой между Tx ардуиніы и Rx модема нужен. И запаяйте его максимально быстро, т.к. ща набегут доброжелатели и вы поставите один из вариантов:
1. Резестивный делитель.
2. транзисторный каскад.
3. спец микросхему преобразования уровней
4. оптрон
5. сельсин.
Поторопитесь!
Спасибо за коментарий, но вот непонятно.
Питание GSM модуля от 3.7 в до 4.2 в. Это как раз батарейка сотового. Я же на RX/TX питание не подаю. Модуль сам формирует сигнал.
Или вы имеете в виду, что на выходах RX/TX GSM модуля уровень сигнала равен напряжению питания модуля? Или есть какая-то зависимость близкая к единице?
Информация достоверная? Очень обяжете если поясните. А то очень не хочется опять к метрологам за осциллографом с блоком переменного напряжения переться – жадные они. Но если надо схожу, графики выложу.
У меня так работает: Serial.begin(2400);
Спасибо за коментарий, но вот непонятно..............
проблема шаманства. Шаманы не читают даташиты и рекомендации в даташитах. И потом начинают шаманить, жечь гсм модули, утверждать что там полно загадок, они глючат, требуют пояснений и т.д.. Это все проблема шаманства.
Вот спасибо за четкий ответ на вопрос. И за поучения дельные спасибо. Вот прям теперь у меня как будто глаза открылись. Всего вам хорошего, внукам вашим здоровья.
1) есть даташиты.
2) есть куча инфы здесь с срисунками как нужно подключать - через резисторы с диодами..
Лень искать или поиском не умеете пользоваться?
А шаманить и претензии высказывать - уже умеете?
Подскажите почему при нажатии кнопки в блинк не всегда срабатывает пин ардуино вот скетч
*******************/
#include
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include
#include
#define ONE_WIRE_BUS 4
OneWire oneWire (ONE_WIRE_BUS);
DallasTemperature sensor (&oneWire);
// Default heartbeat interval for GSM is 60
// If you want override this value, uncomment and set this option:
//#define BLYNK_HEARTBEAT 30
// Select your modem:
#define TINY_GSM_MODEM_SIM800
//#define TINY_GSM_MODEM_SIM900
//#define TINY_GSM_MODEM_M590
#include
#include
const int ledPin = 11;
#define BAT_Pin A0 // на батарею, через делитель напряжения 39кОм / 11 кОм
float m = 66.91; // делитель для перевода АЦП в вольты
float Vbat; // переменная хранящая напряжение бортовой сети
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
const char auth[] = "хххххххххххх ";
// Your GPRS credentials
// Leave empty, if missing user or pass
const char apn[] = "internet";
const char user[] = "mts";
const char pass[] = "mts";
// Hardware Serial on Mega, Leonardo, Micro
#define SerialAT Serial1
// or Software Serial on Uno, Nano
#include
SoftwareSerial SerialAT(2, 3); // RX, TX
TinyGsm modem(SerialAT);
void setup()
{
// Set console baud rate
Serial.begin(57600);
modem.restart();
delay(10);
// Set GSM module baud rate
SerialAT.begin(38400);
delay(10000);
//Restart takes quite some time
// To skip it, call init() instead of restart()
Serial.println("START SIM800");
// Unlock your SIM card with a PIN
//modem.simUnlock("1234");
Blynk.begin(auth, modem, apn, user, pass);
sensor.begin();
delay(300);
}
void detection(){ // условия проверяемые каждые 10 сек
sensor.requestTemperatures(); // читаем температуру с трех датчиков
float temp = sensor.getTempCByIndex(0);
float temp1 = sensor.getTempCByIndex(1);
float temp2 = sensor.getTempCByIndex(2);
Serial.println(temp);
Serial.println(temp1);
Serial.println(temp2);
Blynk.virtualWrite(V1, temp);
Blynk.virtualWrite(V2, temp1);
Blynk.virtualWrite(V3, temp2);
Vbat = analogRead(BAT_Pin); // замеряем напряжение на батарее
Vbat = Vbat / m ; // переводим попугаи в вольты
delay(1000);
// read the input on analog pin 0:
/// int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
/// float voltage = sensorValue * (15.0/ 1023.0);
Blynk.virtualWrite(V6, Vbat);
delay(1000);
}
void loop()
{
Blynk.run();
detection();
}
Ваш скетч в таком виде никто смотреть не будет, приведите его в нормальную форму.
Как залить на сайт не пойму.
Пардон не тот скетч вот тот.
отвечаю
Подскажите почему при нажатии кнопки в блинк не всегда срабатывает пин ардуино вот скетч
ваш код из лупа
даю подсказку 3000 милисекунд это надо перевести в секунды
и подумать как часто вызывается эта функция.....
по моему както все через одно место собрано