Hallo,
ich versuche verzweifelt ein Simm800L-Modul zum laufen zu bekommen.
Ich nutze einen Arduino UNO
hier das (baugleiche) Modul mit Pin-Beschriftung: SIM800L V2.0 5V Wireless GSM GPRS MODULE Quad-Band W/ Antenna Cable Cap | eBay
Schaltung ist folgende:
SIM 5V+GND => separate Stromversorgung (Handyladegerät [5V/2A] GND zusätzlich zum Arduino GND)
TX zum Arduino als RX
RX über Spannungsteiler (1K/7K5) zum Arduino als TX
Reset über NPN-Transistor und 1K-Widerstand zur Basisstrombegrenzung am Arduino
der gesante Sketch wird sicher bisschen viel, da ich haufenweise Kommentare drin habe...aber hier mal das Grobe:
#define SIM800_TX_PIN 8
#define SIM800_RX_PIN 7
#define SIM800_RST_PIN 6
SoftwareSerial serialSIM800(SIM800_RX_PIN,SIM800_TX_PIN);
void setup() {
Serial.begin(9600);
while(!Serial);
//https://arduino.stackexchange.com/questions/36039/sim800l-change-default-baud-rate
serialSIM800.begin(57600); //=max
//while(!serialSIM800);
delay(5000);
//at+cmee=2 (it activate debug mode)
//delay(1000)
serialSIM800.print("AT+CPIN=");
serialSIM800.println( SIM_PIN_CODE );
delay(1000);
serialSIM800.println("AT+CFUN?");
delay(1000);
//AT+CMEE=2 //debug-mode
//AT+COPS=4,1,"D1"
//AT+COPS=4,2,26201
Serial.println("Setup complete");
}
void handle_command(String cmd)
{
if (cmd.startsWith("AT"))
{//SIM-Commands
Serial.print("AT-Command:");
Serial.println(cmd);
serialSIM800.println(cmd.c_str());
//serialSIM800.write(cmd.c_str());
delay(1000); // Delay of 1000 milli seconds or 1 second
}else
...
else
if (cmd == "RESETSIM"){ // reset Sim-module
digitalWrite(SIM800_RST_PIN,HIGH);
delay(500);
digitalWrite(SIM800_RST_PIN,LOW);
}
}
void loop() {
keepalive();
//serielle Daten vom RPI
if (Serial.available() > 0) {
char incoming = Serial.read();
if ((incoming != '\n') && (incoming != '\r'))
s+=incoming;
else //command complete on linebreak
{
handle_command(s);
//Serial.print("Empfangen: ");
//Serial.println(s);
s="";
}
}
if(serialSIM800.available()>0){
Serial.print("SIM800: ");
while (serialSIM800.available()>0)
{
char i=serialSIM800.read();
Serial.print(i);
//Serial.println(serialSIM800.read());
}
Serial.println("");
}
}
}
ich kann prinzipiell Befehler absetzen,aber nach der Pin-EIngabe kommt komische Rückmeldung und manuelle Verbindung schlägt auch fehl
hier mal die LOG
AT-Command:AT+CPIN=4729
SIM800: AT+CPIN=4729
OK
+CPIN: READY
SIM800:
Call Ready
SIM800:
SMS Ready
SIM800: C⸮⸮⸮⸮⸮⸮d⸮⸮H3)i⸮⸮)+⸮!)⸮⸮!)))ia)⸮⸮!)))s⸮⸮o!!fB⸮⸮
⸮%N⸮
AT-Command:AT+CMEE=2
SIM800: AT+CMEE=2
ERROR
+CPIN: SIM PIN
AT-Command:AT+CMEE=2
SIM800: AT+CMEE=2
OK
AT-Command:AT+COPS?
SIM800: AT+COPS?
+COPS: 0
OK
AT-Command:AT+COPS=?
SIM800: AT+COPS=?
SIM800:
+COPS: (1,"E-Plus","E-Plus","26203"),(2,"D1","TMO D","26201"),(1,"vodafone","voda D2","26202"),,(0-4),(0-2)
OK
AT-Command:AT+COPS=4,2,26201
SIM800: AT+COPS=4,2,26201
+CME ERROR: unknown
hat jemand eine idee?