Ви не увійшли.
Уровни согласовывал через мосфет, потом сделал обычный делитель, разницы нет от слова вообще. Думаю надо пробовать hardware serial, пока правда не на чем
Limitations
The library has the following known limitations:
If using multiple software serial ports, only one can receive data at a time.
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for 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).
Not all pins on the Leonardo and Micro support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
On Arduino or Genuino 101 the current maximum RX speed is 57600bps
On Arduino or Genuino 101 RX doesn't work on Pin 13
If your project requires simultaneous data flows, see Paul Stoffregen's AltSoftSerial library. AltSoftSerial overcomes a number of other issues with the core SoftwareSerial, but has it's own limitations. Refer to the AltSoftSerial site for more information.
A SoftwareSerial library allows for serial communication on any of the Nano's digital pins.
https://github.com/arduino/Arduino/blob … al.cpp#L32
красиво пишут библиотеки )
мои домыслы -
library allows for serial communication on any of the Nano's digital pins.
это точно не хорошо
нормальный програмный uart получается только при использовании апаратных фишек таймера ( compare / capture )
любая нога - это вероятно перерывания с копированием значения таймера -, относительно высокие скорости - дают большую ошибку
итак - понизить скорость до 4800
установить в модеме скорость 4800 ( +ipr=4800 )
и дествительно избавляться от стрёмного порта )
обязаловка для модемов если не указано иное
http://www.gaw.ru/html.cgi/txt/publ/pow … levels.htm
либо запитайте вашу ардуино от 2.8В она работает от такой напруги?
Тестировал на чистом форварде, мне другое непонятно, ардуино через softwareserial какую-то четность вообще использует? Как это настроить?
То что в Serial команды возвращаются с ошибками это ладно, главное чтобы они до модема доходили без ошибок. Видимо самый нормальный вариант - не использовать softwareserial
это и нужно было сделать )
https://github.com/one-quaker/remote_re … _relay.ino
слабо похоже на чистый forward )
Сейчас это ардуино нано + модем neoway m590, ардуина с модемом общается через softwareserial и с компьютером через mini-usb (usb2ttl на микросхеме ch*** кажется). В коде все из Serial пересылается в softwareserial и наоборот. Не совсем понял с чем нужно разобраться
зачем отпаивать? есть готовое устройство. если serial uart можно использовать как IO с компа , то делаете перенаправление,
но мой опыт подсказывает, если не разберетесь с передачей данных устройство будет работать только на столе ( и то с глюками,
Even не помог, ограничился скоростью 38400, на ней как ни странно меньше ошибок, думаю сам модем немного неадекватный.
Как будет на чем, попробую аппаратный UART ибо лень отпаивать модем и тестировать напрямую с компьютером.
на будущее
фотку с "аааа" прошляпил ) при евен такое не возможно
я о том что один из портов подключайте к терминалке на компе, а второй к модему
считайте что ваша схема - примитивный переходник, такая концепция мне позволяет быстро вылавливать косяки схемы,которые не всегда можно выловить в автоматическом режиме
Igor Kovba дал хорошее решение,
так каков нынче статус? )
по частям запускайте
повторите это
http://radiolaba.ru/microcotrollers/gsm … eniya.html
AT+IPR=9600
at+enpwrsave=0
Это уже пробовал, спасибо
Ого тут насоветовали. За код спасибо, попробую применить.
А с SoftwareSerial действительно похоже беда, надо брать ардуину с двумя аппаратными UART, что посоветуете?
Я же правильно понял что использовать пины tx rx для общения с модемом не получится?
могу поделиться функцией, которая посылает команду в модем и жет ответ.... может вам поможет....
пример использования .... формат: "команда","ответ", время ожидаия в секундах, кол-во повторных попыток, читить буфер);
надеюсь вы понимаете что \" это символ "
if (!modem_write("AT+SAPBR=3,1,\"Contype\",\"GPRS\"","OK",1,3,true ))
if (!modem_write("AT+SAPBR=3,1,\"APN\",\"www.ab.kievstar.net\"","OK",1,3,true ))
if (!modem_write("AT+SAPBR=1,1","OK",5,3,true ))
в начале
Serial.begin(9600);
debugSerial.begin(38400);
#define DEBUGMODE 4
//-------------------------------------------------modem_write---------------------------------------------
boolean SMARTBHIVE::modem_write(char command[], char answer[], byte waitTime, byte repeet, boolean after_read){
while(repeet>0){
#if DEBUGMODE < 5
debugSerial.print(F("modWrite>\""));debugSerial.print(command);debugSerial.print(F("\" wait:"));debugSerial.print(waitTime);
debugSerial.print(F("for:\"")); debugSerial.print(answer); debugSerial.print(F("\" left:")); debugSerial.print(repeet);
#endif
Serial.println(command);
gsm_read_buf ="";
unsigned long ii=millis();
while ((millis()-ii)/1000 < waitTime){
if (Serial.available()) gsm_read_buf += char(Serial.read());
if (gsm_read_buf.endsWith(answer)){
#if DEBUGMODE < 5
debugSerial.print (F("->DONE in:"));
debugSerial.println ((millis()-ii));
#endif
if (after_read){
unsigned long iii=millis();
while ((millis()-iii) < 200) if (Serial.available()) gsm_read_buf +=char(Serial.read());
};
#if DEBUGMODE < 5
debugSerial.println(gsm_read_buf);
#endif
return (0);
};
};
#if DEBUGMODE < 5
debugSerial.println(F(">TIMEOUT"));
#endif
#if DEBUGMODE < 5
debugSerial.println(gsm_read_buf);
#endif
repeet--;
};
#if DEBUGMODE < 7
debugSerial.println(F("modWrite>FAIL"));
#endif
return (1);
};
привет.
у SoftwareSerial есть одна проблема....если во время передачи данных (от mcu в модуль) модуль что-нибудь пошлет (типа OK)....это вызовет int2 и передаваемые данные потеряются
я бы очень рекомендовал использовать аппаратный serial для модема а отлаживаться с softserial... хотя это довольно геморойно
есть еще чудесная библиотека AltSoftSerial она лучше работает для вашей задачи
удачи.
по частям запускайте
повторите это
http://radiolaba.ru/microcotrollers/gsm … eniya.html
AT+IPR=9600
at+enpwrsave=0
а как его проверить?
привет, проверьте парити, например конфликт even / none