Also ich weiß nicht was für ein Shield du benutzt, ich habe eines von dfrobot gefunden, dort wird im Datenblatt geschrieben: * Input Power: VIN(7-23V)/USB(5V) muss aber ehrlich zugeben, dass mir nicht erschließt wo die bis zu 23 V eingespeist werden müssen. Aber was auch interessant ist. Da gibt es eine Note mit ! Unter Punk 4 steht folgendes: 1. Indicator “ON” –SIM7600CE power indicator. The module will work properly only when it is powered by the external power supply.
Heißt für mich soviel, dass eine Stromversorgung über den Uno allein nicht ausreichend ist.
Und nur weil etwas kurzfristig zu funktionieren scheint, heißt das nicht, das es das auch langfristig tut. Vielleicht liegts wirklich nur an deinem code. Aber langfristig würde ich mir durchaus gedanken über eine stabile Spannungsversorgung machen.
Mag sein dass ich da falsch liege, da ich von einer anderen Library ausgegangen bin.
Dann solltest du unbedingt immer einen Link deiner verwendeten Libraries posten.
Nicht alle Libraries kann man kennen.
Hallo Leute
Das Umschalten der Baudrate funktioniert nun. Es lag am von HotSystems entdeckten fehlenden "Serial" in der Zeile:
SIM7600.write("AT+IPR=9600\n");
Dann fehlte aber auch noch ein carriage return, anstatt nur dem linefeed.
Es wird alles initialisiert, aber SMS lesen geht nicht. Es kommt immer nur immer "Invalid command". Werde mir morgen ein Arduino Mega holen und alles über eine Hardware Serial laufen lassen. Ist mir irgendwie zu mühsam mit dem Umschalten.
Wenn Sie einen Arduino MEGA verwenden, nehmen Sie einen Hardware-Port in Anspruch und verwenden Sie Serial1, Serial2 oder Serial3
#define SIM7600Serial Serial1
void setup() {
Serial.begin(115200);
SIM7600Serial.begin(115200); // Passen Sie die Baudrate an, um sie an Ihr Modul anzupassen
}
void loop() {
}
#define GSM_RST 20 // Dummy
#define SIM7600Serial Serial1
Adafruit_FONA SIM7600 = Adafruit_FONA(GSM_RST);
void setup() {
Serial.begin(115200);
SIM7600Serial.begin(115200); // Passen Sie die Baudrate an, um sie an Ihr Modul anzupassen
if (! SIM7600.begin(& SIM7600Serial)) {
Serial.println(F("Couldn't find SIM7600"));
playErrorMelody();
while (true) yield();
}
•••
Ich bekomme diesen Error mit den von oben angepassten Codezeilen:
C:\Users\leich\OneDrive\Dokumente\Arduino\DFRobot_Tel0124_fona_Mega\DFRobot_Tel0124_fona_Mega.ino: In function 'void setup()':
DFRobot_Tel0124_fona_Mega:79:38: error: no matching function for call to 'Adafruit_FONA::begin(HardwareSerial*)'
if (! SIM7600.begin(& SIM7600Serial)) {
Es scheint, dass die Bibliothek eine Referenz auf einen FONAStreamType erwartet, der nur ein Alias für Stream ist.
Und HardwareSerial erbt tatsächlich von Stream.
Da es eine Referenz möchte, müssen Sie nicht die Adresse übergeben, sondern nur die Instanz.
#define GSM_RST 20 // Dummy
#define SIM7600Serial Serial1
Adafruit_FONA SIM7600 = Adafruit_FONA(GSM_RST);
void setup() {
Serial.begin(115200);
SIM7600Serial.begin(115200); // Passen Sie die Baudrate an, um sie an Ihr Modul anzupassen
if (! SIM7600.begin(SIM7600Serial)) { // <=====
Serial.println(F("Konnte SIM7600 nicht finden"));
playErrorMelody();
while (true) yield();
}
•••
Ich konnte compilieren, aber der Code bleibt bei genau diesem if-statement hängen. Ich kann aber mit einem anderen Code mit dem Modul über Serial1 kommunizieren. Hardwareseitig sollte alles stimmen.