Programmierung bei verlötetem Microcontroller veränderbar?

OP #5188407
Lesenswert?

Hallo ins Forum,

ein SMS-Überwachungs- und Schaltmodul (von elv: Best.-Nr. 103896) gibt 
nur fest verankerte SMS-Texte heraus (z.B. SMS empfangen Ausgang 1 ein). 
Ob es sich hierbei um den eigentlich versendeten Text handelt oder ob 
dieser Text im Controller generiert wird, nachdem eine Schalt-SMS 
einging, ist bis jetzt noch nicht klar. Ich habe das Modul noch nicht 
zum Testen vorliegen.

Man kann mit diesen Modulen sowohl einen Relaisausgang schalten als auch 
einen Masseeingang überwachen ( jeweils 2 davon). Ich möchte nun 
erreichen, dass zwei dieser Module miteinander in Austauch treten.

Lt. Bedienungsanleitung akzeptiert das Modul jedoch nur eine eingehende 
SMS in einer bestimmten Parameterisierung (z.B. #0000#201#1#001#; damit 
würde dann in diesem Fall der Schaltausgang 1 für eine Sekunde auf ON 
gesetzt).

Eine Kommunikation zweier solcher Module untereinander war wohl nicht 
vorgesehen. Es gibt auch kein Menü, welches ein Anlegen spezieller Texte 
für eine SMS ermöglicht. Man kann das Modul bislang nur mit einer 
Handy-SMS in o.g. Format ansprechen.

Es handelt sich um eine SMD-Platine mit einem ATmega329V-8MU_MLF64M1.

Gibt es die grundsätzliche Möglichkeit, das interne 
Microcontrollerprogramm abzuändern, so dass man einen Menüpunkt schaffen 
kann, der das Anlegen frei definierbarer SMS-Texte gestattet?

Falls ja, wie ist dabei vorzugehen bzw. hat das schon einmal jemand 
versucht?

Grüße
Gast #5188420
Lesenswert?

Klar...bau das Ding auseiander, erstelle einen Schaltplan und schreib 
dir dein eigenes Programm. Danach über ISP programmieren und fertig..

Den vorhandenen Code kann man zwar auslesen wenn das Lockbit nicht 
gesetzt ist allerdings bringt der meistens nicht viel.
Gast #5188443
Lesenswert?

Es gibt auch dokumentierte Module. Und diverse mehr oder weniger 
verständliche Tutorials.

Schneller kommst du zum Ziel, wenn du dir zunächst ein SMS-Modul und 
eine ATmega-Platine für Hobbybastler zulegst. Die Beispiele 
durcharbeitest und erst danach, wie von TestX beschrieben, dein Modul 
umprogrammierst.

Die Firma Adafruit z.B. liefert Module mit brauchbaren Lehrbeispielen. 
Kannst aber auch umgekehrt im Netz nach einem Tutorial suchen und die 
verwendeten Module kaufen.
#5189015
Lesenswert?

Die für SMS-Empfang benutzten AT-Kommandos werden von (quasi) allen 
Modulen unterstützt, man muss eben nur sehen, was man als Init-Sequenz 
hinschicken muss.   Bei manchen muss man den SMS-Zeichensatz umstellen, 
bei anderen AT+CSMP einstellen, etc...

Für das Neoway M590 lautet die Init-Sequenz z.b. so:

1) Auf +PBREADY (oder fixe Zeit) warten...
AT+ENPWRSAVE=0
AT+CMGF=1
AT+CSMP=17,167,0,0
AT+CNMI=2,2,0,0,0
AT+CSCS="GSM"

Und ab dann ist es genau gleich - jede SMS kommt so an:
+CMT: "+4368112345678",,"17/01/01,00:00:00+08"
Zeile 1
Zeile 2

Einzige Schwierigkeit hierbei ist es, das ganze sauber zu implementieren 
- was ich im Moment grade in C mache - und zwar so, dass es egal ist, ob 
ein Leerzeichen/Newline mehr oder weniger bzw. irgendwas anderes 
dazwischen vom GSM-Modem kommt und dass das ganze Interrupt-gesteuert 
abläuft und kein Zeichen verschluckt wird.  Bisher sind es bei mir ca. 
500-600 Zeilen C-Code, der u.a. eine State-Machine, einen Ringpuffer und 
einen flexiblen AT-Parser (ohne sscanf-Bloat) und ein "intelligenten" 
Resetlogik implementiert und ich bin immer noch beim optimieren...

https://i.imgur.com/tm0Oqt2.png

Wenn es aber nur um relativ simple Kommandos, ein einziges GSM-Modul und 
fixe Schaltbefehle geht, kannst du dir das relativ schnell wohl mit 
einem Arduino zusammenfrickeln.     Es gibt sogar eine universelle 
GSM-Library:
https://github.com/vshymanskyy/TinyGSM

1) Du findest mal die RX/TX Pins des GSM Moduls und sorgst dafür, dass 
der ATMEGA nicht mehr mit dem Modul kommuniziert  (Reset-Leitung des 
ATMEGA, falls aktiv/möglich auf Masse oder RX/TX abklemmen)

2) RX/TX/GND an einen USB-TTL-Wandler (FTDI, CP2102, PL2303, ...) und 
die benötigten Standard-Kommandos (AT+CNMI, AT+CMGF=1, AT+CSCS="GSM", 
... +CMT) ausprobieren, daran merkst du, wie das Format ist.

3) Ein Arduino/AVR/Whatever-Programm schreiben und mittels USB-TTL 
Wandler die Antworten des GSM-Modems simulieren, bis dein Programm 
richtig reagiert

PS: WOW ist das Zeug von ELV teuer...   119 EUR verlangen die für so 
einen Dreck!

Das programmiere ich grad auf einem 50 Cent STM8-Board mit einem 2 EUR 
GSM-Modul, wobei meine Lösung dann auch Passwörter, Anrufer-Erkennung 
und viel mehr können wird.  Ein HD44780-Display dazubauen sollte auch 
keine Schwierigkeit sein, wenn man's unbedingt braucht...

Gesamtkosten (exkl. "Arbeitszeit") ~ 3-5 EUR.  Mit Display und Relais < 
10 EUR.
Sollte es fertigwerden und sauber laufen, kommt's als Opensource-Projekt 
rein.
#5189526
Lesenswert?

TU S. schrieb:
> PS: WOW ist das Zeug von ELV teuer...   119 EUR verlangen die für so
> einen Dreck!

Ist dann aber auch so ziemlich idiotensicher.
Es gibt Leute, die haben einfach Spaß am Basteln. Die wollen nicht genau 
wissen, wie man was selber entwickelt.

Ist so wie malen nach Zahlen. Nur eben mit Lötkolben und bunten 
Bauteilen.

Genauso hatte bei mir das Interesse an der Elektronik begonnen. Ich 
hatte mich als Kind total gefreut, wenn ich bei meinem Vater auf Arbeit 
paar Bauteile auf eine Platine löten durfte. Da hat man sich wie ein 
Held gefühlt.

Also ich würde solche Anbieter wie ELV jetzt nicht gleich als Abzocker 
bezeichnen. Eher als "Erlebnisdienstleister" :-)
Manche müssen auf den Mont Everest steigen. Wie bekloppt ist das denn 
erst?
Gast #5189583
Lesenswert?

> Die wollen nicht genau
> wissen, wie man was selber entwickelt.

Trifft das nicht mehr oder weniger auf uns alle zu? Ich habe auch keinen 
blassen Schimmer, wie die CPU unter der Tastatur meines Notebooks ihre 
Befehle Cached und Pipelined.

Ich werde wahrscheinlich auch nie in meinem leben eine USB Schnittstelle 
selber bauen können, aber ich benutze sie in fast jedem Experiment.
#5189591
Lesenswert?

Stefan U. schrieb:
> Trifft das nicht mehr oder weniger auf uns alle zu? Ich habe auch keinen
> blassen Schimmer, wie die CPU unter der Tastatur meines Notebooks ihre
> Befehle Cached und Pipelined.
>
> Ich werde wahrscheinlich auch nie in meinem leben eine USB Schnittstelle
> selber bauen können, aber ich benutze sie in fast jedem Experiment.

Ja, da hast du recht. Mir ist es auch egal, wie eine Library 
programmiert wurde. Hauptsache, sie funktioniert.
#5190434
Lesenswert?

Hi

Alexander L. schrieb:
> a, da hast du recht. Mir ist es auch egal, wie eine Library
> programmiert wurde. Hauptsache, sie funktioniert.

Da hinkt Es aber etwas - bei dem USB-Gelump können wir uns recht sicher 
sein, daß wir (zumindest ich) Da Nichts dran repariert bekomme.
Wenn die soeben eingebundene Library (egal von wo) aber nicht zu 100% 
macht, was Sie soll, schadet Es nicht, wenn man - zumindest theoretisch 
- die Funktion reparieren kann.

Zwar Beides Elektronik, aber doch ein kleiner Unterschied ;)

MfG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren