Ein NewsDisplay mit AutoIt und Arduino

  • Ich dachte mir, ich kombiniere mal wieder zwei meiner Hobbys (AutoIt und Arduino).

    Eine kleine Arduino-Schaltung stellt ein LC-Display bereit, auf dem Meldungen angezeigt werden, die von einem AutoIt-Script verschickt werden.

    Was brauchen wir an Hardware:

    1. Ein Steckbrett

    2. Ein Arduino Nano (oder China-Clone) reicht völlig aus

    3. Ein 4x20 Zeichen LCD mit I2C-Interface (z.B. das hier: https://www.amazon.de/AZDelive…fRID=R5VCX62DR4AE9ZQ93QK9)

    4. Einen von diesen kleinen PushButtons (Taster), die man gut auf das Steckbrett stecken kann.

    5. Einen Piezo-Summer (siehe Fritzing-Bild oder auch diese kleinen steckbaren Piezos). Keinen Lautsprecher! Der Piezosummer muss schon beim anlegen der Spannung einen Piepton ausgeben.

    6. Ein paar dieser Steckbrett-Strippen.

    Kosten:

    Alles zusammen geschätzte 20 - 25 € (je nachdem wo man einkauft oder ob man bereits etwas davon hat).


    Ich habe mal mit Fritzing einen "Schaltplan" erstellt:

    Das Display dort ist ein 2x16 Zeichen-Display. Wird aber ebenso über I2C angesteuert. Ist also von der Verkabelung völlig identisch. Das muss man nur in der Software anpassen.

    Das obige 4x20 Zeichen-Display benutze ich und das braucht (bei eingeschalteter Hintergrundbeleuchtung) ca. 32mA. Somit kann man die ganze Schaltung noch vom Nano versorgen (über das USB-Kabel).

    An der I2C-Zusatzplatine befindet sich ein kleines Poti, mit dem man den Display-Kontrast einstellen kann. Falls auf eurem Display also nichts zu sehen ist, mit einem kleinen Schraubendreher das Poti etwas verstellen.

    Der PiezoSummer piept bei einer neuen Nachricht (das Display wird hell und zeigt die Nachricht) und der PushButton (Taster) ist zum bestätigen der eingetroffenen Nachricht (schaltet dann das Display wieder dunkel).


    Software:

    Im ZIP-Archiv "NewsDisplay_Arduino.zip" befindet sich das Programm für den Arduino (inkl, meiner PushButton-Klasse zum entprellen).

    Im ZIP-Archiv "NewsDisplay_AutoIt.zip" befindet sich das AutoIt-Programm (inkl. meiner SerialComm-UDF).

    Beim AutoIt-Script müsst ihr noch den COM-Port anpassen (je nachdem, welchen Port euer Nano belegt).

    Die Baudrate muss in beiden Programmen gleich sein. Bei mir hat es mit hohen Baudraten (>19200) nicht funktioniert. Mit 19200 läuft es aber stabil. Zur Not könnt ihr auch auf 9600 runtergehen.

    Mit 19200 Baud dauert die Übertragung von 4 Zeilen je 20 Zeichen ca. 57 ms.

    Das AutoIt-Script ist wohl weitgehend selbsterklärend. Das Arduinoprogramm habe ich ausführlich kommentiert.


    Ihr könnt die Programme nach euren Vorstellungen anpassen oder als Vorlage für Größeres nehmen.

    Ich bin mal gespannt, auf was für Ideen ihr kommt, wofür man das Display verwenden kann. :)


    Edit 14.01.2019:

    - Das Arduino-Programm ist jetzt ohne "delay" beim Piepton.

    - Man kann jetzt einstellen, wie viele Pieptoene ausgegeben werden sollen.

    - Außerdem kann man die Piepton- und die Pieptonpausenzeit einstellen.

    - Die interne LED (an Pin 13) blinkt jetzt zusammen mit den Pieptönen.

    - Und der Arduino sendet ein "ok" zurueck, wenn die Nachricht angekommen ist.

    - Auf der AutoIt-Seite habe ich noch ein AutoIt-GUI-Script als Beispiel geschrieben. Das empfängt dann auch das "ok" und zeigt es in der Statuszeile an.

    - Dort kann man auch den Arduino-COM-Port aus einer Liste der vorhandenen COM-Ports auswählen (Combo-Select).


    Edit 16.01.2019:

    - Das neue Arduino-Programm ("NewsDisplayMulti_Arduino_v1_1.zip") kann jetzt bis zu 15 Nachrichten speichern. Mit dem Pushbutton kann man die letzte Nachricht löschen. Es wird dann die vorherige Nachricht angezeigt (falls vorhanden).

    - Durch das puffern der Nachrichten kommt die I2C-LCD-Anzeige nicht mehr dazwischen und somit sind jetzt auch schnellere Schnittstellen-Geschwindigkeiten möglich (z.B. 115200 Baud).

    - Wenn der Nachrichtenspeicher voll ist, wird das als Status an das AutoIt-Programm zurückgeschickt.

    - Beim Start (bzw. Reset) des Nano wird nun die Versionsnummer, die Schnittstellengeschwindigkeit und die Anzahl der speicherbaren Nachrichten angezeigt.

    - Im neuen AutoIt-Programm ("NewsDisplay_AutoIt_v1_1.zip") kann man nun auch die Schnittstellengeschwindigkeit auswählen.

    - Außerdem zeigt es die neuen Statusmeldungen an, sowie die Übertragungsdauer (in ms).

  • Sehr nice!

    Da ich gerade den Arduino (UNO) andersweitig belege, und noch einige ATtiny85 und 45 rumliegen habe, ist mir direkt in den Sinn gekommen, den ATtiny85 zu benutzen. Auch dafür gibt es angepasste wire- und LCD-libraries!

    Da der ATtiny85 für unter ein Euro zu haben ist, halten sich die Kosten incl. LCD mit ca. 10€ im Rahmen^^

    Das LCD ist sowieso in jedem guten Arduino Einsteiger-Set dabei!


    //EDIT

    Sackzement....jetzt muss ich doch den Arduino beanspruchen, den benötige ich nämlich als ISP (Programmiermodul) für die ATtinys....:Face:


    Und übrigens ist es auch sehr einfach, das LCD mit einem ESP8266 anzusprechen, den kann man dann auch direkt übers WLAN betreiben.

    Es soll ja Leute geben, die nicht permanent ihr Smartphone mit sich rumschleppen und trotzdem per BEEP über Vorgänge auf ihrem PC (Maileingang, AutoIt-Scriptausführung, Katze hat beim Laufen über die Tastatur ne Waschmaschine bei Amazon bestellt, uswusf.) benachrichtigt werden wollen!

  • und noch einige ATtiny85 und 45 rumliegen habe, ist mir direkt in den Sinn gekommen, den ATtiny85 zu benutzen.

    Ja, der ATiny85 könnte noch gehen. RAM-Verbauch liegt bei 454 Byte. Für den 45er ist das allerdings zu viel.


    Und übrigens ist es auch sehr einfach, das LCD mit einem ESP8266 anzusprechen, den kann man dann auch direkt übers WLAN betreiben.

    Ja, auch keine schlechte Idee! :):thumbup:

    Ich muss mal meine NodeMCU raussuchen...

  • Mit der neuen Version (V1.1 siehe Post#1) ist der ATtiny85 leider außen vor. Ein Nano/UNO sollte es schon sein.

    Ich habe den SRAM-Speicher des Nano jetzt mal fast ausgereizt (1715 Bytes), weil ich einen Nachrichtenspeicher eingebaut habe. Der kann 15 Nachrichten speichern.

    Mit dem zwischenspeichern habe ich die Anzeige auf dem LCD an das Ende der Übertragung verlegt, sodass jetzt auch höhere, serielle Schnittstellengeschwindigkeiten möglich sind.

    Mit 115.200 und 230.400 Baud funktioniert es problemlos und sogar die maximale Schnittstellengeschwindigkeit von 2.000.000 Baud funktioniert bei mir.

    Allerdings bringt das nichts, weil die Verarbeitungsgeschwindigkeit des Nano dann nicht für ein kürzeres Antwortverhalten ausreicht.

    So ca. 12-13 ms dauert es auch mit der maximalen Geschwindigkeit. Das entspricht der Antwortdauer bei 230400 Baud.