Add Design

2024-04-15 16:56:52 +00:00
parent 84ca633b5c
commit 41124d3e32

65
Design.md Normal file

@@ -0,0 +1,65 @@
# Design
## Hardware-Architektur
Zentraler Baustein ist ein [Raspberry Pi Pico
W](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#raspberry-pi-pico-w-and-pico-wh). Darauf
befinden sich ein RP2040-Controller, der die Steuerung des Geräts übernimmt. Auch die
MP3-Player-funktionalität wird vom RP2040 übernommen (es ist kein DFPlayer Mini o.Ä. nötig). Ebenso
wird die MicroSD-Karte direkt am RP2040 angeschlossen. Auf dem Raspberry Pi Pico W befindet sich
außerdem ein Infineon CYW43439 WLAN (Wifi 4) und Bluetooth-Controller. Dieser wird benutzt um das
Steuern und Befüllen des TonBERRY per App zu ermöglichen.
Für das Erkennen der auf die Box aufgelegten RFID-Chips wird der gleiche [RC522 RFC
Kit](https://www.az-delivery.de/en/products/rfid-set) benutzt der schon im TonUINO eingesetzt wurde.
Zum Anschließen einer SD-Karte an den Pi Pico wird ein einfache Adapter,
z.B. <https://www.berrybase.de/sparkfun-microsd-transflash-breakout>, benötigt.
Um einen Lautsprecher ansteuern zu können wird ein DAC + Verstärker benötigt. Hierfür scheinen ein
Modul wie <https://www.berrybase.de/sparkfun-i2s-audio-breakout-max98357a> geeignet.
Mit einem Kombimodul wie <https://www.berrybase.de/adafruit-audio-add-on-fuer-qt-py-und-xiao> können
die beiden vorherigen Punkte kombiniert werden.
*TODO: sonstige hardware identisch zu TonUNIO, hier beschreiben (taster, lautsprecher, ...)*
*TODO: Evaluieren - was geht bzgl. Akku - Laden via USB*
## Software-Architektur
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).
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
MP3-Players erfolgt über ein Python-Modul.
*TODO: Treiber für RC522 ?*
Um die als Webanwendung angebotene Benutzeroberfläche des TonBERRY auszuliefern, sowie um die API
die zur Ansteuerung des TonBERRY dient anzubieten wird das
[microdot](https://github.com/miguelgrinberg/microdot) web framework eingesetzt.
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.
Die Kommunikation zwischen der Weboberfläche und dem TonBERRY findet über eine JSON REST API
statt. Diese API kann ebenfalls von ggf. in Zukunft entwickelten Apps genutzt werden.
## Features / User-Stories
* Als Hörer möchte ich eine Karte/Figur auf das Gerät legen, damit das passende Hörspiel/Hörbuch/Musik abgespielt wird.
* Als Hörer möchte ich die Karte/Figur vom Gerät entfernen, damit die Wiedergabe beendet wird.
* Wiedergabefeatures von TonUNIO übernehmen:
* Einfacher Modus: Eine Datei / eine Liste von dateien wird mit einem RFID-Tag verknüpft, und jedes mal wenn der RFID-Tag aufgelegt wird beginnt die Wiedergabe von vorne
* Hörspiel-Sammlungs-Modus: Jedes Mal wenn der RFID-Tag aufgelegt wird, wird eine zufällige Hörspielfolge aus der mit dem Tag verknüpften Sammlung abgespielt.
* Hörbuch-Modus: Jedes Mal wenn der RFID-Tag aufgelegt wird, wird das mit diesem Tag verknüpfte Hörbuch dort fortgesetzt, wo zuletzt die Wiedergabe beendet wurde.
* ...
* Als Elternteil möchte ich von meinem Handy aus neue Hörspielfolgen / Hörbücher / Musik auf den TonBERRY spielen und mit einer RFID-Karte/Figur verknüpfen
* Als Elternteil möchte ich von meinem PC aus neue Hörspielfolgen / Hörbücher / Musik auf den TonBERRY spielen und mit einer RFID-Karte/Figur verknüpfen
* Als Elternteil möchte ich Uhrzeiten festlegen, zwischen denen der TonBERRY keine Medien abspielt.
* Als Elternteil möchte ich von meinem Handy/PC aus die mit einer RFID-Karte/Figur verbunden Medien löschen, damit auf dem TonBERRY platz für neue Medien ist.