I connected a GSM module with the Arduino UNO. The connections are as follows:
Gnd of gsm -----> Gnd of arduino
TX of gsm -----> pin 9 of arduino
Rx of gsm -----> pin 10 of arduino
GSM is powered from a 9V-1Amp wall adapter.
The GSM is performing according to all the AT
commands (like making a voice call, hanging a call, answering a call) which are given, but it is displaying garbage values on serial monitor in response.
Here is the code:
#include <SoftwareSerial.h>
SoftwareSerial myserial(9, 10);
void setup() {
Serial.begin(115200);
myserial.begin(9600);
myserial.println("ATDXXXXXXXXXX;");
delay(30000);
myserial.println("ATH");
}
void loop() {
if (myserial.available()>0){
Serial.println(myserial.read());
}
}
What could be reasons for the GSM to output garbage values and how can I resolve it?
1 Answer 1
Serial.println(myserial.read());
myserial.read()
returns an integer. That integer is either the ASCII code of the next character in the buffer, or -1 if there is no character to read.
You then print that integer, each one on its own line.
So the response "OK\r\n" from, say, "AT\r\n" would look like:
79
75
13
10
Instead you need to write
the data, not print
it:
Serial.write(myserial.read());
Also, the way you have written your code, you will get no response for 30 seconds - that is, until everything has already happened. Only after it has all finished will you get some feedback - and that may not be complete since you may overrun the buffer depending on what the modem sends.
-
I tried using Serial.write() in place of Serial.println() but still I am getting the garbage values. The module is not responding even while sending an AT command through Serial Monitor.user22930– user229302016年12月26日 15:48:24 +00:00Commented Dec 26, 2016 at 15:48
SoftwareSerial
at only 9600 then that should be fine.