SIM800 - Arduino Based GSM/SMS Remote Control Unit nach Intructables

Hallo,

ich habe die Arduino Based GSM/SMS Remote Control Unit von Eric Brouwer https://www.instructables.com/Arduino-Based-GSMSMS-Remote-Control-Unit/

zunächst auf Lochraster nachgebaut und bin mit meinem Latain am Ende. :roll_eyes:

Ich verwende einen Atmega 328P "bare Metal". Abblock C's 100n u. 47µ sind direkt am Chip, externer 16 MHZ Quarz ist vorhanden, Kommunikation mit dem USBasp haut hin, Fuses habe ich mittels burn Bootloader vom UNO auf FF DE FD gesetzt. Versorgt wird das Ganze durch ein 5V 0,75A USB Netzteil. Geflasht habe ich den angehängten Original Sketch von Instructables, der zum direkten Enfügen zu umfangreich ist.
So wie es aussieht, ist das SIM800 Modul ins Mobilfunknetz eingeloggt, kommuniziert aber nicht mit dem µC. Rufe ich das Modul an, bekomme ich ein Freizeichen und die 1. LED het aus, so lange es klingelt. Lege ich auf, geht sie wieder an. Bei einer SMS geht sie auch für geschätzt eine zehntel Sekunde aus.

Am µC blitzt beim Start kurz die grüne LED auf, danach leichtet die rote LED dauerhaft. Die sollte ausgehen, wenn das SIM800 im Mobilfunknetz ist. Daher meine Vermutung, das was mit der seriellen Schnittstelle SoftSerial faul ist. Die echte serielle Schnittstelle liegt brach. Laut Aussage des Autors, weil sich so ein paar Byte RAM sparen lassen. Ist auch kein auskommentierter Code zum Debuggung vorhanden, um mitlesen zu können :stuck_out_tongue_closed_eyes:

Unmittelbar am Sockel des SIM800 habe ich nochmal einen 470µF Elko zum Puffern der 5V. Das Board hat selber noch einen LDO und einen Pufferelko für die 4,zertretene Volt für das Modul. Das Modul hat auch eine stabile Stromversorgung, spontane Neustarts, wie man sie auf dem Steckbrett hat, unterbleiben.
Der Compiler läuft fehlerfrei durch, ich habe sogar auf die selbe version der IDE, wie es noch auf einem Bild auf Instructables zu sehen ist, upgegradet (1.85), zuvor hatte ich die 1.60 Außer SoftSerial und EEPROM verwendet er keine Bibliotheken, und die sind beide in der IDE enthalten.
Über die Fuses verliert er kein Wort. Stutzig macht mich, das bei dem Fuses ein Bit für WDT ist und WDT hat er auch irgendwie im Code drin. Mein letzter Strohalm ist da ein Problem mit den Fuses.
Ein funktionierendes Hex-File hätte hier viel Ärger gespart. Der Quelltext ist ja gut und schön, aber da hier keine individuellen Anpassungen, wie Telefonnummern und Passwörtern erforderlich sind, da das alles später im laufenden betrieb ins EEPROM und die SIM Karte geschrieben wird, wäre das hier extrem hilfreich gewesen.
Das selbe Problem hat bezeichnenderweise Imre16 vor 2 Jahren in der darunter liegenden Diskussion ebenfalls gehabt.

Ich habe mich dort ebenfalls angemeldet und gefragt, leider scheint das Projekt, bis auf einzelne Nachbauten, mehr oder weniger tot zu sein.
Gibt es hier einen Software Crack, dem vielleicht was dazu einfällt? Die Pinnummern habe ich mehrfach überprüft und abgeglichen, RX und TX auch mal versuchsweise vertauscht. Obwohl das mehr als unwahrscheinlich ist, da ich mich an den leiterplattenentwurf gehalten habe.

Gruß Gerald

SIM800_Alarm.ino (66.8 KB)

Leider schreibst du nix über den bei dir vorhandenen Fehler.
Zudem wäre ein komplettes Schaltbild deines Aufbaus wichtig, sowie der von dir verwendete Sketch hier direkt im Forum in Code-Tags gepostet.

Nur mit diesen Informationen lassen sich Aussagen zu deinem Projekt machen.

nix_mehr_frei:
Hallo,

ich habe die Arduino Based GSM/SMS Remote Control Unit von Eric Brouwer https://www.instructables.com/Arduino-Based-GSMSMS-Remote-Control-Unit/

zunächst auf Lochraster nachgebaut und bin mit meinem Latain am Ende. :roll_eyes:

Am µC blitzt beim Start kurz die grüne LED auf, danach leichtet die rote LED dauerhaft. Die sollte ausgehen, wenn das SIM800 im Mobilfunknetz ist. Daher meine Vermutung, das was mit der seriellen Schnittstelle SoftSerial faul ist. Die echte serielle Schnittstelle liegt brach. Laut Aussage des Autors, weil sich so ein paar Byte RAM sparen lassen. Ist auch kein auskommentierter Code zum Debuggung vorhanden, um mitlesen zu können :stuck_out_tongue_closed_eyes:

  • Fehlerbeschreibung hatte ich im 2. Abschnitt beschrieben
  • Code hängt als ino Datei am Posting mit dran
  • Schaltplan wie auf Instructables
    https://content.instructables.com/ORIG/FRS/NYJ2/JF349V20/FRSNYJ2JF349V20.jpg?auto=webp&frame=1&width=1024&fit=bounds&md=365b2d77308a9b74988006b9997f7726
    Nur das ich statt des 7805 Spannungsreglers direkt mit einem 5V Netzteil draufgehe.
    SIM800 habe ich das selbe Modul, wie der Autor.
    Die OK Eingang 1-4 sind noch offen. Da die Eingänge aktivierte Pullups haben, ist das zunächst irrelevant. An den Ausgängen 1-4 ist am µC Ausgang lediglich jeweils eine LED mit 1K Vorwiderstand nach Masse. Den Leistungsteil mache ich mit SSRs, daher brauche ich ULN2803, den der Autor als Relaistreiber genommen hat, nicht.
    Hier ist nochmal das gesamte Projekt, mit sch und brd Datei. Wobei bei mir die brd unbrauchbar ist, da die Massefläche bei mir leer ist. Wollte nach dem "Testballon" auf Lochraster eh eine eigene Leiterplatte entwerfen.

Ok, ich hatte gehofft, dass du uns die Schaltung zeigst, wie du es aufgebaut hast, nicht wie es aufgebaut werden soll.
Leider ist da meist ein sehr großer Unterschied, der den Fehler dann verursacht.

Die ino-Datei kann ich hier mobil nicht lesen, somit muss ich passen.

Grmpf - über 9000 Zeichen Code - mag er nicht :stuck_out_tongue_closed_eyes:
Handyfotos vom Lochrasteraufbau sind auch dabei.
Direkt am µC wird vom netzteil eingespeist. 100n Kerko und 47µ Elko sind da, 470µ unmittelbar am Stecksockel des SIM800 Modules
Die Fotos habe ich auf 600x800 verkleinert, trotzdem weigert sich die Foren SW kategorisch, die anzunehmen. Ist wohl nicht mein Tag :grin:

Rufe ich das Modul an, bekomme ich ein Freizeichen und die 1. LED het aus, so lange es klingelt. Lege ich auf, geht sie wieder an. Bei einer SMS geht sie auch für geschätzt eine zehntel Sekunde aus.

Deiner Fehlerbeschreibung nach scheint ja schon was irgendwie zu funktionieren, wenn du Anrufe und empfangene SMS "irgendwie" erkennst. Dann ist vermutlich Stromversorgung und Verdrahtung erstmal nicht das Haupt-Problem.

Ist auch kein auskommentierter Code zum Debuggung vorhanden, um mitlesen zu können :stuck_out_tongue_closed_eyes:

Tja, dann solltest du das wohl machen. Und mehr als 9000 Zeichen aus einem Anhang zu laden, evtl. mangels lib nicht übersetzen zu können, ist mir auch zu mühsam.

SMS Emfangen, Text auswerten, RC Befehle ausführen sind 3 völlig unabhängige Teile, die du trennen könntest.

"Instructable" heisst -wörtlich übersetzt- nicht, dass du etwas unverstanden nachbaust, sondern dass du was lernen kannst. :stuck_out_tongue:

nix_mehr_frei:
Die Fotos habe ich auf 600x800 verkleinert, trotzdem weigert sich die Foren SW kategorisch, die anzunehmen. Ist wohl nicht mein Tag :grin:

Das kenne ich. Versuche mal PNGs daraus zu machen, falls das irgendwie geht. Die Foren-Software hat seit einiger Zeit irgendein doofes Problem mit jpg-Dateien. Irgendwie immer mehr Fehler in der Seite statt weniger...

Gruß, Jürgen

Katsumi_S:
Versuche mal PNGs daraus zu machen, falls das irgendwie geht.

Aha, wieder was gelernt.
Ich habe mal, weil das Netzteil ein anderthalb Meter Kabel hat, rein prophylaktisch noch einen 2200µ Elko auf die 5V gesetzt.
Hat natürlich nichts gebracht.
Habe mal den Code auf die echte serielle Schnittstelle umgeschrieben, indem ich Softserial auskommentiert habe und SSerial im Code überall durch Serial ersetzt habe. Der Compiler hat mir dabei geholfen, alles zu finden. Dann noch fix die auf die echten RX u. TX umgelötet und den neuen Code geproggt - funktioniert immer noch nicht :stuck_out_tongue_closed_eyes:

So langsam gehen mir die Ideen aus...

Das 3. Bild will er aus Gründen der Gesamtgröße immer noch nicht. png braucht mehr Platz :disappointed_relieved:

Kannst du mal einen Link des SIM800L posten. Ich finde aktuell kein aussagekräftiges Datenblatt.

Ich sehe, du verwendest ein Teil mit eigenem Spannungsregler. Das Modul arbeitet normal mit max. 4,2 Volt und die werden aus den 5Volt mittels Regler erzeugt und der schafft das nicht.

Ich würde den Regler durch einen bessern ersetzen, der auch den Strom verkraften kann. Speziell beim Einbuchen braucht das SIM ca. 2A.

Edit:
Allerdings vermute ich, der LDO ist nur für die Sim-Karte und die Spannung für das SIM800 wird mittels 2 Dioden reduziert. Und das wäre dein Problem. Das funktioniert einfach nicht sauber.

Ich werde in Richtung Stromversorgung weiter testen. Auf dem Breadboard hatte ich vor einiger zeit ebenfalls mit diesen Modulen rumgespielt. Da hat sich das Modul ab und zu selbst gestartet. Das erkennt man recht gut daran, das die eine LED, die normalerweise Dauerlicht hat, mal kurz ausgeht.
Das passiert im Lochrasteraufbau aber nicht, daher hielt ich den eigentlich für stabil. Die Diodenlösung finde ich auch etwas "abendteuerlich", aber bei anderen scheinen die Module ja anscheinend zu funktionieren :roll_eyes:

Ich habe auf die Schnelle mal vom äußeren 5V Stift auf Vdd umgelötet und mit einer vollen 1860er LiPo Zelle direkt Modul und Controller versorgt. Das ist zwar für den Atmega bei 16 MHz außer Spec, aber der startet. Leider bleibt das SIM800 dunkel.
Dem werde ich an einem anderen Tag nachgehen. Leider finde ich nicht mehr den Link mit der schematic zu exakt meinem Modul.

Gibt es eine Möglichkeit, die serielle Schnittstelle abzuhören? Das ich bei Logikausgängen nicht mit 2 Ausgängen gegeneinander arbeiten kann, ist mir auch klar. Aber sich auf die Schnittstelle zu hängen und mit einem Terminalfenster zu lauschen, müßte doch prinzipiell gehen? Ich will vom "Blackboxstatus" weg und sehen, wo es krankt.

nix_mehr_frei:
Gibt es eine Möglichkeit, die serielle Schnittstelle abzuhören? Das ich bei Logikausgängen nicht mit 2 Ausgängen gegeneinander arbeiten kann, ist mir auch klar. Aber sich auf die Schnittstelle zu hängen und mit einem Terminalfenster zu lauschen, müßte doch prinzipiell gehen? Ich will vom "Blackboxstatus" weg und sehen, wo es krankt.

Due kannst an der seriellen nur etwas auslesen, wenn du auch etwas empfängst.
Das musst du dann auch per Sketch "anfordern".

Ein sog. Lauschen funktioniert da nicht.

Ein sog. Lauschen funktioniert da nicht.

Na ja.

  while(SSerial.available()){
    delay(1);  // short delay to give time for new data to be placed in buffer
    // get new character
    RxChar = char(SSerial.read());
    Serial.write(RxChar);   // Empfang mitschreiben
    ...

Das geht natürlich

michael_x:
Na ja.

  while(SSerial.available()){

delay(1);  // short delay to give time for new data to be placed in buffer
    // get new character
    RxChar = char(SSerial.read());
    Serial.write(RxChar);  // Empfang mitschreiben
    ...


Das geht natürlich

Ja, so stimmt das natürlich.

Ich habe da verstanden, es soll ohne eigenen Sketch funktionieren.

Da war ich dann falsch davor, sorry.

Ich habe da verstanden, es soll ohne eigenen Sketch funktionieren.

Selbst das ginge: Bei gemeinsamem GND können zwei UARTs das gleiche TTL Signal (mit-)lesen, da die Rx Pins INPUT sind, und HIGH und LOW Pegel beide vom gemeinsamen Sender gemacht werden.
Ein Sender bekommt nicht mit ob 0, 1 oder 2 Empfänger zuhören.

Aber ich hatte nix_mehr_frei's Frage anders verstanden.
Bei dem Sketch den er da gefunden hat, soll er sich mal reinarbeiten ... :wink:

michael_x:
Selbst das ginge: Bei gemeinsamem GND können zwei UARTs das gleiche TTL Signal (mit-)lesen, da die Rx Pins INPUT sind, und HIGH und LOW Pegel beide vom gemeinsamen Sender gemacht werden.
Ein Sender bekommt nicht mit ob 0, 1 oder 2 Empfänger zuhören.

Ja, technisch wird das gehen, aber woher soll die UART etwas mitbekommen, wenn das Modul nicht weiß, was es machen soll ?
Da kann es nichts empfangen und an die Schnittstelle liefern.

Dennoch soll erst mal das Problem mit der Spannung gefixt werden. Bekommt das GSM keine saubere 4,3 Volt, funktioniert da nix. Und man sucht ewig an der falschen Stelle.

So, ich habe wieder rumprobiert. Da das Modul sich bei direkter Einspeisung aus dem Akku auf Vdd tot stellt, habe ich mal gemessen und nach den 2 Eingangsdioden (eine Normale und eine Schottky) dahinter ein Padpaar gefunden, wo eigentlich eine Zenerdiode zur Spannungsbegrenzung optional sein sollte. Da dieses Pad frei war, habe ich dort noch einen 100µF Kerko in Bauform 1210 eingelötet und dort eingespeist. Ich habe 4,10V.
Hier mal ein Stromlaufplan, der dem Modul zumindest sehr ähnlich ist


Nachdem das SIM Modul trotzdem autistisch veranlagt bleibt, habe ich mal noch die 2 P-Kanal FET, die als Pegelwandler fungieren sollen, ausgelötet und Brücken aufgelötet. Auch damit keine Besserung :stuck_out_tongue_closed_eyes:

michael_x:
Bei gemeinsamem GND können zwei UARTs das gleiche TTL Signal (mit-)lesen, da die Rx Pins INPUT sind, und HIGH und LOW Pegel beide vom gemeinsamen Sender gemacht werden.
Ein Sender bekommt nicht mit ob 0, 1 oder 2 Empfänger zuhören.

Sowas dachte ich mir. Nur weiß ich nicht, ob es einen Handshake gibt, bzw. ob ich, wenn ich auf RX lausche, im seriellen Monitor trotzdem einen laufenden Text erhalte, wenn die Kommunikation läuft.
Ich dachte mir, zum Lauschen einen 2. Aduino zu verwenden.
Zusäzulich zur 1. seriellen Schnittstelle in Hardware, noch eine 2. in Software. Von beiden jeweils Rx auf Rx und Tx der zu untersuchenden Schaltung.
Idealerweise sehe ich dann, was am zu untersuchenden Arduino rein- und rausgeht.
Ich habe mir jetzt auch noch SIM800 Module bestellt, die etwas minimalistischer sind. Ohne halbherzige Spannungswandlung und ohne Pegelwandler.
Hier ist ein Bericht, das mit dem Modul, das ich momentan verwende, jemand ebenfalls massive Probleme hatte. SIM800L GSM/GPRS Cellular Eval Board First Look | Big Dan the Blogging Man
Diese hier habe ich mir jetzt bestellt https://de.aliexpress.com/item/1005001907933869.html?spm=a2g0s.9042311.0.0.3f354c4dQyS5Gj
Blöd, wenn man nicht weiß, ob die Hard- oder die Software das Problemkind ist.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.