• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Praxisbericht Alarmanlage/Smart Home mit Arduino - vorbereitende Experimente

BAXL

Admin
Mitarbeiter
Freunde der Nacht, ein weiteres Problem wurde mit vielen kleinen Detaillösungen erledigt. Mein neues OLED 128x64 Display hat sich äußerst zickig angestellt und wollte nicht so recht. An anderer Stelle( bei der Zusatzhardware und Sensoren) habe ich das bereits leicht angerissen. Darum hier der Vollständigkeit halber mit kurzen Worten. Das Display benötigt eine Library, die üblicherweise verfügbaren sind darauf ausgelegt, Grafiken zu erzeugen und vernachlässigen die Funktionalität der Textdarstellung. Ich habe ein passende Lib für Text ausgegraben, leider hat die wirklich nur Funktionen um einen kompletten String auszugeben, eine Funktion, um Zahlenwerte (Byte, Integer, Float) anzuzeigen besitzt die Lib nicht. Ich muß also alle Zahlenwerte mit Trick 17 umwandeln und in ein Zeichenfeld (char array) schieben.

Ich habe jetzt das Masterprogramm an den Stellen modifiziert, an denen Text und Messwerte ausgegben werden. Die Zeilen haben jetzt nur noch 16 Zeichen, weshalb ich einige Bezeichnungen quasi als Überschrift in die erste Zeile, also Zeile 0, geschrieben habe. Die Messwerte werden dann darunter ausgegeben. Bei der Gelegenheit ist mir noch etwas an der Hardware aufgefallen. Der neuen Anzeigeschaltung hatte ich für die 3,3V nur rund 60 myF als Elkokapazität spendiert. Es fiel mir auf, dass ein Messwert sehr lange benötigte, bis er das erste Mal angezeigt wurde. Nachdem nich der 3,3V noch einen zusätzlichen 47myF Elko spendiert hatte, klappte es problemlos. Es sieht ganz so aus, als müsse ich mir in naher Zukunft Gedanken um die 3,3V Versorgung machen und dort nachbessern.

Hier ein Bild vom neuen Display mit den Anzeigewerten:

Zur Erklärung, unter Temp stehen die Temperaturen, unter Licht der eingelesene wert der Fotozelle, M steht für die Nummer der Messstelle und unter A wird eine Bewegung angezeigt. In Zeile 4 steht aktuell nur 1023, das ist ein Dummywert für die Lichtanzeige. Sobald Messstelle 4 in Betrieb ist, erscheint da auch ein Messwert.

 

BAXL

Admin
Mitarbeiter
Das Display aus dem Vorpost zeigt mittlerweile 5 Werte an. 4 Messstellen sind noch auf Breadboards zusammengestöpselt, Messstelle 5 ist der erste Prototyp, den ich auf einer kleinen Platine aufgelötet habe. Der Anschluß der Sensoren und des NRF24 erfolgt aber noch über Steckbuchsen. Dazu habe ich ein paar Experiementierleitungen F <=> F , einfach in der Mitte durchgeknipst :D und auf der abgeschnittenen Seite abisoliert und direkt an den Schaltaufbau gelötet.

Zuerst klappte es nicht mit der Datenübertragung, obwohl ich auch einen Kondensator zur Pufferung der 3,3V auf die Platine gelötet habe (ist auf dem Bild unter dem Nano versteckt). Am seriellen Monitor wurden aber alle Werte im Programmablauf normal angezeigt, also mußte es wieder die verfixte NRF24 Story sein. Richtig angeschlossen ist er auch, sonst kommt es zu eigenartigen "Leuchtsignalen" auf den Kontrollleuchten des Nanos. Als letzte Maßnahme kam dann wieder nur die Sache mit dem Elko in Betracht. Den habe ich sogleich noch einmal zusätzlich an die NRF24 Platine direkt angelötet. Und siehe da, es klappt. Immer wieder die Probleme mit der 3,3V Versorgung.

Ich werde mir nun Adapterplatinen bestellen, die an die 5V versorgung des Arduinos angeschlossen werden, die bekanntlich etwas leistungsfähiger ist. Die Adapterplatine hat eine eigene kleine 3,3V Spannungsregelung an Bord, die von den 5V gespeist werden.

Hier noch das Foto vom ersten gelöteten Prototypen. Sieht irgendwie wie ein etwas futuristischer Weihnachtsbaum aus, was fast zur Jahreszeit passen würde.



Der nächste Evolutionsschritt wird dann ein Gehäuse. Mal sehen wie ich das am besten mache, ob ich Kunststoffplatten, die ich für den Karosseriebau von den Cars noch da liegen habe, nehme, oder ob ich ein fertiges Gehäuse bestelle und zurecht schnitze.
 

BAXL

Admin
Mitarbeiter
Ein neuer Tag, eine neue Herausforderung.

In meinem Bestand sind noch zwei WEMOS 1D mini Module, die auf dem ESP6266 basieren, die man ebenfalls über die Arduino IDE programmieren kann. Der Vorteil ist ein viel größerer Speicher als bei den "normalen" Arduino-Modulen. Meine Anzeigestation benötigt nur das NRF24 2,4GHz Sende- und Empfangsmodul und eine Anzeige, die ich derzeit über das I2C Interface ansteuer und die nur zwei Signalleitungen benötigen. Es bleiben am WEMOS sogar noch Digitalkanäle übrig und einen Analogkanal. Ich könnte also noch einen DS18B20 Temperatursensor anschließen, oder einen TMP35 über den Analogkanal.

Der erste Versuch, ein 1602 Display anzusteuern, hat schon mal funktionieret. Leider klappt es nicht, einfach das Anzeigemasterprogramm vom Nano 1:1 dort hochzuladen. Das Display ist ständig am Blinken. Möglicherweise liegt es daran, dass das NRF24 und das Display sich einen Digitalausgang teilen. Derzeit stocher ich nur herum und habe noch nicht ganz verstanden, welche Digitalausgänge welche Aufgabe erfüllen und wie ich nun beide Module parallel anschließe und ansteuere.
 

froetz

Mitglied
Das mit dem Blinken könntest in den Griff bekommen wenn du das Display nicht vier jeder neuen Ausgabe komplett löschst. Wird in den Beispielen oft gemacht (LCD.clear heisst das dann glaub ich).
Ich setze den cursor an die Stelle wo etwas angezeigt werden soll und ändere nur das. Dann sind evtl. Ein paar Klimmzüge notwendig, wenn ein Wert eine, zwei oder drei Stellen haben kann aber es flackert nicht.
 

BAXL

Admin
Mitarbeiter
Es geht voran. Damit es hier weitergehen konnte, musste ich mich erst einmal intensiver mit den WEMOS-Modulen auseinandersetzen können. Getreu meiner Vorgehensweise habe ich das Komplettproblem aufgeteilt. Nämlich einmal in die Ansteuerung eines Displays und dann in die Bedienung der NRF24l01 Module zur Datenübertragung. Das Displayproblem hat mich eine ganze Zeit beschäftigt und ist in diesem Thema erläutert und gelöst: WEMOS D1 mini mit 240x320 2,4" TFT Display RGB

Die Geschichte mit dem NRF24 war nicht minder schwierig, konnte am Ende aber auch gelöst werden: WEMOS D1 mini mit NRF24l01

Jetzt gilt es beide Sachen in der Gesamtapplikation zusammenzuführen. Das mache ich wieder in diesem Thema, damit die anderen beiden Themen nicht durcheinander geraten. Dort ging es ja auch nur um die Detaillösungen, die auch für andere Projekte hilfreich sein können. Damit es hier aber richtig weitergehen kann, muß noch eine Zwischenetappe eingelegt werden, nämlich das Zusammenführen von Display und NRF24l01 auf dem WEMOS. Das stelle ich in einem gesonderten Thema vor (hier kommt später der Link hin). Beide geräte kommunizieren gleichzeitig per SPI-Bus mit dem WEMOS.

Warum ich mir den Umstand mache das auf den WEMOS zu portieren und nicht auf dem Nano zu belassen hatte ich bereits angedeutet. Das ist zum einen, dass das Display nur mit 3,3V betrieben werden kann, ich noch drei WEMOS ungenutzt hier liegen habe und weil ich dann die Freiheit bekomme, die Daten per WLAN auf ein WLAN-fähiges Device (Smartphone, Tablet usw.) zu übertragen. Dann muß ich nicht mehr unbedingt zur Zentralstation wandern um das Display abzulesen. Die WLAN-Nutzung mit dem WEMOS wird dann auch noch einmal ein Spezialproblem für sich.
 

BAXL

Admin
Mitarbeiter
Drei Schritte vor und zwei zurück...

So komme ich mir immer wieder vor. Es sah so toll aus. Das Empfangsprogramm vom Nano mit dem OLED habe ich auf den WEMOS angepasst. Alles toll. Anfangs waren die Textausgaben noch etwas durcheinander, aber das sind nur Formatierungsprobleme gewesen. Der WEMOS bekommt nun einen Datencontainer serviert, in dem drei Werte stecken, ein "byte", und zwei "integer". Der Byte-Wert ist für den Schaltzustand der Bewegungssensoren. Das wird zuverlässig von allen Messstellen (derzeit 4 an der Zahl) aufgefangen und in einen auswertbaren Wert übernommen.

Leider wollen die beiden Integer nicht mitspielen. Ich habe keine Ahnung, weshalb ich da keine vernünftigen Werte empfange. Vielleicht kann der ESP auf dem WEMOS keine Integer per Funk übernehmen!?
Ich bin ratlos. Zuerst habe ich den NRF24 noch von der 3,3V Spannungsversorgung des WEMOS heruntergenommen, weil das Display parallel auch darüber Strom zieht. Der NRF24 liegt jetzt über einen Adapter an der 5V Betriebsspannung, sollte eigentlich reichen. Trotzdem, das hat auch nicht geholfen. Ich schwimme mal wieder...
 

BAXL

Admin
Mitarbeiter
Manchmal muss man sich anpassen. Die Sache mit dem WEMOS ist vorerst auf Eis gelegt, weil die 2,4GHz Datenübermittlung nicht richtig funktionierte. Also wieder zurück zum Nano. Dafür braucht es aber einen Pegelwandler. Nach einer Fehlinvestition für Billigberger (klappten nicht) habe ich eine 8 Port bidirektionalen Wandler TXS0108E bestellt.



Zumindest die reine Textausgabe funktioniert jetzt.



Jetzt muß der NRF24 wieder dazugeklemmt werden.
 

BAXL

Admin
Mitarbeiter
Die Reunion des Nanos samt Display und dem NRF24 ist vollzogen. Alles klappt wie gewünscht. Ein paar kleine kosmetische Arbeiten an der Anzeige habe ich bereits gemacht. Derzeit übermitteln 5 Messstellen die Werte zur Anzeigestation. Hier und da habe ich allerdings etwas Probleme mit dem Empfang von einer der Messstellen, evtl. muß ich da einen NRF24 mit richtiger Antenne einsetzen, oder an der Anzeigestation selbt. Das probiere ich dann aus. Der Große Bildschirm ist nicht ganz von ungefähr, weil mir in den Sinn gekommen ist, die Daten von der Solarüberwachung (im Moment wird noch nicht gesteuert) mit anzeigen zu lassen. leider komme ich nun mit der der Anzahl der Messstellen etwas in Bedrängnis, weil bei 5 Geräten Schluß ist. Evtl. kann es ein zweites NRF24 Modul richten, da bin ich aber noch nicht im reinen mit, zumal der Code dadurch auch größer wird. Mir schwirrt auch im Hirn herum, einen SD-Kartenleser mit anzuschließen, um die Messwerte zu archivieren, klar, dass dann auch noch eine Echtzeituhr ansteht.
 
Top Bottom