micropython asyncio in software architektur eingebaut
@@ -34,7 +34,7 @@ Mögliche Optionen:
|
||||
|
||||
Auf dem RP2040-Controller wird [MicroPython](https://micropython.org/) eingesetzt. MicroPython
|
||||
zusammen mit dem [Raspberry Pi Pico SDK](https://github.com/raspberrypi/pico-sdk) bietet
|
||||
Unterstützung für WLAN und Bluetooth, SD-Karten-zugriff (TODO: Evaluieren).
|
||||
Unterstützung für WLAN und Bluetooth, SD-Karten-Zugriff.
|
||||
|
||||
Ein MP3-Dekoder sowie ein Treiber für den I2S-DAC laufen außerhalb von MicroPython auf dem zweiten
|
||||
Prozessor des RP2040, um die Audioausgabe ohne Aussetzer sicherzustellen. Die Ansteuerung des
|
||||
@@ -53,6 +53,12 @@ Um die als Webanwendung angebotene Benutzeroberfläche des TonBERRY auszuliefern
|
||||
die zur Ansteuerung des TonBERRY dient anzubieten wird das
|
||||
[microdot](https://github.com/miguelgrinberg/microdot) web framework eingesetzt.
|
||||
|
||||
Um die verschiedenen Aktivitäten "simultan" auszuführen wird das asyncio Modul benutzt.
|
||||
- MBL: Einfacher zu implementieren und meiner Meinung nach auch einfacher zu verstehen als Multithreading mit einem RTOS. Und schöner vom code als eine manuell geschriebene Event-Loop die zwischen den ganzen Aktivitäten multiplext.
|
||||
- (verifizieren) Der TCP/IP stack und microdot unterstützen asyncio bereits
|
||||
- Der SDcard und damit vermutlich auch vfat Treiber müssen um asyncio support erweitert werden. Dem SDcard treiber sollte man an der stelle vermutlich auch DMA support beibringen.
|
||||
- Alles weitere (z.b. Tastendrücke, events vom MP3-Player) können vermutlich recht einfach über interrupt-handler und [ThreadSafeFlag](https://docs.micropython.org/en/latest/library/asyncio.html#class-threadsafeflag) eingebunden werden.
|
||||
|
||||
Die Webanwendung selber ist eine mit (TODO: Javascript, CSS frameworks evaluieren) implementierte
|
||||
Webseite, die modernen Designrichtlinien entspricht und somit sowohl auf Handybildschirmen als auch
|
||||
an Desktop- oder Laptop-PCs benutzbar ist.
|
||||
|
||||
Reference in New Issue
Block a user