Display mit ATMEGA328P mit Python befeuern

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Huhu, ich würde gern ein paar Denkanstöße von euch bekommen.

Ich habe einen Hardkernel Odroid Show 2 TFT.
Diesen würde ich gerne mit verschiedenen Anzeigen füllen.
Was mir zum jetzigen Zeitpunkt nicht ganz klar ist, ist folgendes:
Das Display kann/ oder muss mit einem Sketch geflasht werden um Dinge (Ohne Pi oder Odroid C2) anzuzeigen. Das hab ich soweit erfolgreich getestet.
Ich hab dieses Python Script zur Zeit angepasst und bekomme die Beispiel Infos auch angezeigt. Nur welche Rolle der ATMEGA zu der Zeit spielt ist mir nicht klar.

1.) Muss der ATMEGA328P immer ein Sketch besitzen? Wenn ich zb die Infos via Serial über ein USB Kabel sende?
2.) Oder braucht der Chip nur "Platzhalter" um auf die Serial Infos zu reagieren? Oder ganz und gar Input Befehle im Sketch?
3.) Die Platine kann eigene I2C, muss ich im Sketch eintragen das diese Daten an den Host kommen? Testweise hab ich das BeispielScript mit diesem Weatherscript erweitern. Aber das Sketch scheint die Serial Anfragen zu "überlagern"

Ich möchte eigentlich Dauerhaft mit Python Scripts die Daten an das Display versenden. Ohne mit Sketch arbeiten zu müssen.
Könnt ihr mir einmal ein paar Inputs geben?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Tholo: das Ding das Du da hast, ist ein kompletter Microprozessor mit GPIO und halt einem zusätzlichen Display, den Du frei programmieren kannst.
Wenn Du ihn nur verwenden willst, damit Du per UART Dinge von Python empfangen kannst, dann mußt Du ein entsprechendes Programm auf dem ATMEGA laufen lassen, das genau das tut: von UART lesen, das Protokoll interpretieren und ausführen.
Da Du das anscheinend schon geschafft hast, bist Du mit der Programmierung des Microprozessors fertig und mußt nichts weiter tun.
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Jaein, zum Teil...

Das Display und das Weather-board hab ich mit C zum laufen bekommen. Dann kommt die Anzeige aber "ohne" meine Python Funktionen.
Verschiedene OS Funktionen, CPU Infos etc hab ich via Python zum laufen bekommen. Aber beides zusammen hab ich einfach noch nicht verstanden.
Klar ist das ich via Serial das TFT mit Infos füttere. Über den CP2104 wird Serial auf UART übersetzt. Richtig?

Aber wie komm ich "gleichzeitig" an den I2c Output des Weatherboars welches auf den Gpio des Displays läuft. Muss ich in einem Sketch dem ATMEGA328P beibringen das der das via Uart an den CP2104 sendet? Oder wird das "outofthebox" erledigt und ich muss nur den I2c Bus von den Gpio finden? Der Pi oder Odroid C2 kennt ja nur "/dev/ttyUSB0"
Das gleicht gilt ja für die LEDs und Buttons welche auf der Platine sind. Irgendwie oder irgendwen muss ich das ja erklären wie der Input/Output der Buttons herkommt. Muss ich das also im ATMEGA und dann Python verarbeiten oder nur via Python.

Sorry das Thema macht noch richtig Knoten im Kopf...
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Dann verstehe ich nicht, was Du erreichen willst.

Kannst Du mal genau beschreiben, wie Dein Ziel aussieht?
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Sehr gerne doch

Die Odroid Show Platine, welche mit USB an einem Odroid C2 (ganz grob Raspberry Pi 3 ähnlich) verbunden ist, möchte ich mit (bestenfalls) ausschließlich Python nutzen.
4 große Funktionen möchte ich darstellen.
- Via Python verschiedene Infos, Uhrzeit, SysInfos meiner SBC's, Wassertemp und Systemstatus etc anzeigen
Brauch ich dafür ein Sketch? Oder würde das auch mit einem "leeren" Sketch funktionieren? Da das Display ja die Infos über Serial/Uart bekommt.

- die Platine hat 6 Gpio welche exakt für das Weather-board gedacht sind. Siehe hier
dort möchte ich das Weatherboard betreiben und diese soll die Infos an den Host senden. Damit ich die Temp, Luftfeuchtigkeit etc auf dem Pi verarbeiten kann. Um sie an die DB und oder ein Display Panel zu geben.
Ich hab in verschiedenen Sketch gesehen, daß es ein Loop "sendtohost" gibt. Meine Vermutung ist also, das ich ein Sketch mit diesen Informationen schreiben muss. Da bin ich mir aber Unsicher. Weil ja "dauerhaft" Serial und oder Uart anliegt.

- mit den verbauten Buttons durch verschieden Panels durchschalten. Button 1 Vor, Button 2 zurück
- zb Panel 1 zeigt Uhrzeit und Wassertemp
Panel 2 zeigt SysInfos und CPU %
also müsste ich ein Python eine Funktion schreiben "wenn Button dann panel2" .
Auch hier die Frage. Muss ich das mit einem Sketch kombinieren oder kann das Python "allein"

- die LEDs mit verschiedenen Statusinfos verknüpfen. Zb Watertemp zuhoch Rote LED an.
ähnlich der Button Geschichte vermute ich.

Kernfrage also:
Muss ich Sketch Scripts und Python kombinieren oder gibt es Module welche via Serial oder ähnlichen mit den Komponenten interagieren ohne ein Sketch auf den ATMega zu schreiben?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du die GPIO des Displays nutzen willst, muss der Sketch des Arduino beides können - Daten lesen von den Ports, und per uart an den Host schicken. Und von dort die Daten empfangen um das Display anzusteuern. Was dann bedeutet, das in C zu programmieren.

Die simple alternative: das weather board direkt mit dem C2 zu verbinden. Denn der sollte ja auch I2C und co beherrschen. Damit kannst du dann in Python arbeiten, und das Display bzw. Dessen CPU nimmt nur stumpfe serielle Befehle entgegen.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Tholo: wenn Du Knöpfe, LEDs und Ports von Deinem Display benutzen willst, mußt Du diese Funktionalität natürlich direkt als Sketch für den ATMEGA schreiben. Vielleicht gibt es auch irgendwo eine fertige Firmware, die diese ganzen Informationen via UART durchschleust, aber erstmal würde ich sagen, das was Du willst, ist so speziell, dass es auch speziell programmiert werden muß.
Antworten