Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

freeman
2016-06-23 21:45:33

Уровни согласовывал через мосфет, потом сделал обычный делитель, разницы нет от слова вообще. Думаю надо пробовать hardware serial, пока правда не на чем sad

NoName
2016-06-21 11:18:14

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В  она работает от такой напруги?

freeman
2016-06-21 11:04:02

Тестировал на чистом форварде, мне другое непонятно, ардуино через softwareserial какую-то четность вообще использует? Как это настроить?
То что в Serial команды возвращаются с ошибками это ладно, главное чтобы они до модема доходили без ошибок. Видимо самый нормальный вариант - не использовать softwareserial smile

NoName
2016-06-20 23:50:00

это и нужно было сделать )
https://github.com/one-quaker/remote_re … _relay.ino
слабо похоже на чистый forward )

freeman
2016-06-20 23:21:59

Сейчас это ардуино нано + модем neoway m590, ардуина с модемом общается через softwareserial и с компьютером через mini-usb (usb2ttl на микросхеме ch*** кажется). В коде все из Serial пересылается в softwareserial и наоборот. Не совсем понял с чем нужно разобраться smile

NoName
2016-06-20 22:03:20

зачем отпаивать? есть готовое устройство. если serial uart можно использовать как IO с компа , то делаете перенаправление,
но мой опыт подсказывает, если не разберетесь с передачей данных устройство будет работать только на столе ( и то с глюками,

freeman
2016-06-20 18:49:28

Even не помог, ограничился скоростью 38400, на ней как ни странно меньше ошибок, думаю сам модем немного неадекватный.
Как будет на чем, попробую аппаратный UART ибо лень отпаивать модем и тестировать напрямую с компьютером.

NoName
2016-06-20 14:18:49

на будущее
фотку с "аааа" прошляпил ) при евен такое не возможно
я о том что один из портов подключайте к терминалке на компе, а второй к модему
считайте что ваша схема - примитивный переходник, такая концепция мне позволяет быстро вылавливать косяки схемы,которые  не всегда можно выловить  в автоматическом режиме

Igor Kovba дал хорошее решение,
так каков нынче статус? )

freeman
2016-06-20 13:53:51
NoName пише:

по частям запускайте
повторите это
http://radiolaba.ru/microcotrollers/gsm … eniya.html
   

AT+IPR=9600
at+enpwrsave=0

Это уже пробовал, спасибо

freeman
2016-06-20 13:52:09

Ого тут насоветовали. За код спасибо, попробую применить.
А с SoftwareSerial действительно похоже беда, надо брать ардуину с двумя аппаратными UART, что посоветуете?
Я же правильно понял что использовать пины tx rx для общения с модемом не получится?

Igor Kovba
2016-06-19 00:29:53

могу поделиться функцией, которая посылает команду в модем и жет ответ.... может вам поможет....
пример использования .... формат: "команда","ответ", время ожидаия в секундах, кол-во повторных попыток, читить буфер);
надеюсь вы понимаете что \" это символ "
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);
};

Igor Kovba
2016-06-19 00:07:03

привет.

у SoftwareSerial есть одна проблема....если во время передачи данных (от mcu в модуль) модуль что-нибудь пошлет (типа OK)....это вызовет int2 и передаваемые данные потеряются sad

я бы очень рекомендовал использовать аппаратный serial для модема а отлаживаться с softserial... хотя это довольно геморойно

есть еще чудесная библиотека AltSoftSerial она лучше работает для вашей задачи

удачи.

NoName
2016-06-18 13:32:42

по частям запускайте
повторите это
http://radiolaba.ru/microcotrollers/gsm … eniya.html
   

AT+IPR=9600
at+enpwrsave=0

freeman
2016-06-17 23:53:00

а как его проверить?

NoName
2016-06-17 23:35:50

привет,  проверьте парити, например конфликт even / none

Підвал форуму