Mulla on Dealextremesta ostettu Benq M32 GPRS-modeemi joka on kytketty arduinoon tällä ohjeella.
Rauta toimii tällä hetkellä ongelmitt, mutta koodin kanssa seuraaavanlainen ongelma:
Käynnistyksessä modeemin sarjaliikenne tarvitsee “herätellä” AT komennolla tyyliin
m32_serial.println("AT");
Ja vastauksena saadaan OK ja yksi tyhjä rivi, jos komento meni perille ja linja pelaa.
Homma toimii hyvin, jos tietokone-arduino välillä testaa seuraavalla koodilla:
#include <SoftwareSerial.h>
SoftwareSerial m32_serial(2, 3);
String readString;
void setup()
{
// initialize serial:
Serial.begin(9600);
m32_serial.begin(9600);
while (true)
{
//m32_serial.println("AT");
if (Serial.available() > 0)
{
while (Serial.available() > 0)
{
char c = Serial.read();
readString += c;
}
}
// Serial.println(readString.length()); //debug tulostus
// readString.trim();
// Serial.println(readString.length());//debug tulostus
// Serial.println(readString);//debug tulostus
delay(1000);
if (readString == "OK")
{
Serial.println("Toimii");//debug tulostus
delay(1000);
readString="";
break;
}
readString="";
}
Serial.println("Pois loopista");//debug tulostus
delay(1000);
}
void loop() {
}
Mutta ei arduino modeemi välillä:
#include <SoftwareSerial.h>
SoftwareSerial m32_serial(2, 3);
String readString;
void setup()
{
// initialize serial:
Serial.begin(9600);
m32_serial.begin(9600);
while (true)
{
m32_serial.println("AT");
if (m32_serial.available() > 0)
{
while (m32_serial.available() > 0)
{
char c = m32_serial.read();
readString += c;
}
}
Serial.println(readString.length()); //debug tulostus
readString.trim();//debug tulostus
Serial.println(readString.length());//debug tulostus
Serial.println(readString);//debug tulostus
delay(1000);
if (readString == "OK")
{
Serial.println("Toimii");//debug tulostus
delay(1000);
readString="";
break;
}
readString="";
}
Serial.println("Pois loopista");//debug tulostus
delay(1000);
}
void loop() {
}
Modeemi palauttaa 9 merkkiä, josta whitespacet trimmaamalla merkit vähenee 7 merkkiin.
Tietokonella kun lähettää OK käskyn, niin merkkejä on se 2 mitä pitääkin olla.
Mitä hittoa noi 5 ylimääräistä merkkiä on mitkä ei tulostu mihinkään, mutta tallentuvat muuttujaaan?!