Mikro-Forth Temperatur messen und per Funk übertragen

MikroForth für Attiny- und Atmega-Mikrocontroller
Antworten
Didi
Beiträge: 9
Registriert: Mi 28. Nov 2012, 16:08

Mikro-Forth Temperatur messen und per Funk übertragen

Beitrag von Didi » So 21. Jul 2013, 18:53

Heute mal ein Beispiel zur Temperaturmessung mit dem LM75 und den Funkmodulen MX-05V, MX-FS-03V.

Sendeprogramm

Der LM75 ist am I2C-Anschluss der Attiny-Platine und das Sendemodul am Port D4 angeschlossen.
Die Temperatur wird kontinuierlich über den I2C-Bus eingelesen und auf dem LCD-Modul angezeigt.
Das Wort "Funksenden" übernimmt die zu sendenden Zeichen + die Anzahl der Zeichen und kodiert sie in den Manchestercode.
Zuerst wird die Präambel Hex AA gesendet, danach zweimal die Dez. 10. Dann werden die Zeichen übertragen + die Anzahl. Als
Abschluss wird eine 00 gesendet. Die Anzahl könnte auch eine Kennung sein, um verschiedene Daten zu unterscheiden (Temperatur und
Entfernungsmessung usw.)

Empfangsprogramm

Das Programm zeigt die empfangen Zeichen (Temperatur) auf dem LCD-Display an. Das Empfangsmodul ist am Port D6 angeschlossen.
Das Wort "Präambel" dient nur zu Synchronisation des Empfangstaktes. Es müssen nur einmal die richtigen Flanken detektiert werden.
Danach läuft der weitere Empfang synchron ab. Nach der der Synchronisierung sucht das Wort "Funkstart" die beiden Zahlen Dez. 10. Sind sie
gefunden, werden die folgenden Bytes vom Wort "Funkempfang" als Daten interpretiertund auf dem Stack abgelegt. Wird die 00 gefunden sind die Daten komplett und werden angezeigt.
Leider ist der 2313 mit diesem Programm bis zum letzten Byte gefüllt. Man könnte mit dem Timer0-overflow, der sowieso läuft, eine Art Timeout
programmieren, falls keine Daten empfangen werden. Wie oben schon erwähnt, könnte das Anzahlbyte zur Differenzierung verschiedener Daten
genutzt werden (Fantasie ist alles)
Synchronisation: Wenn die Datenübertragung einmal synchronisiert ist, spielt die Anzahl der übertragenen Daten keine Rolle.
Es empfielt sich eine Antenne an die Module zu löten. Bei 5V Stromversorgung Reichweite ca. 15m durch zwei Wände. Mit 12V konnte ich die Grenze
nicht finden (wahrscheinlich mehr als 100m).

Viel Spass beim experimentieren.

Didi
Dateianhänge
Temp+Funk.zip
(19.84 KiB) 1110-mal heruntergeladen

Antworten