Wpis z mikrobloga

Chciałbym sobie "gadać" przez serial monitor (z arduino ide) z modułem gsm, podłączonym przez SoftwareSerial. Czy tak (w loop()):

if (gsm.serial.available())
Serial.print((char)gsm.serial.read());
if (Serial.available())
gsm.serial.print((char)Serial.read());

powinno to działać? Bo zdaje się nie działać: jak wysyłam np. AT+CSQ, powinienem dostać odpowiedź w stylu

+CSQ: ,
a dostaję np.

AT+Q
Mogę robić coś głupiego, bo nie mam z tym doświadczenia.
(gsm.serial to obiekt SoftwareSerial)
#arduino #uart #gsm
  • 4
@smirk0: musiałem zaznaczyć, żeby serial monitor wysyłał jeszcze CR i NL na koniec linii. Kod trochę poprawiłem

if (gsm.serial.available())
Serial.write(gsm.serial.read());
if (Serial.available())
gsm.serial.write(Serial.read());

Teraz na AT odpowiada OK, ale np. na AT+CSQ:

AT+
ERROR

czyli to jakby dostawał tylko AT+, nie wiem dlaczego.
@pret0rian8: z dokumentacji, odpowiedź na ATDT:

ATD
a jak po tym jeszcze raz wcisnę enter, to

ERROR
Ogólnie jest tak, jakby wysyłane były pierwsze trzy znaki, co wydaje mi się bardzo dziwne..