Inhaltsverzeichnis
Motivation
Aufbau
Software
Treiber
Betriebssystem
Sprachausgabe
Schaltplan
Motivation
Der vorgestellte Sprechende Kalender ist für Menschen gedacht, die sehr schlecht oder gar nicht mehr sehen können. Es ist für sie unmöglich, komplizierte Geräte wie Handy, Computer oder Tablets zu bedienen. Es wird nicht nur die Uhrzeit, sondern auch Wochentag und Datum angesagt. Das hilft, sich unabhängig von der Zeitansage im Radio, zeitlich zu orientieren.
Aufbau
Ein Raspberry Pi Pico steuert die Sprachausgabe und das 1,3 Zoll OLED-Pico-Display. Die batteriegepufferte Präzisions-Echtzeituhr DS3231 stellt die Zeit- und Kalenderdaten zur Verfügung (Wermutstropfen: Sommer- Winterzeit wird leider nicht unterstützt). Als Speicher für die Sprachdaten dient eine SD-Card. Diese kann bequem auf einem PC beschrieben werden. Ein überdimensionaler Button löst die Sprachausgabe aus. Die Stromversorgung wird direkt an den Micro-USB Anschluss des Pico angeschlossen. Ein handelsüblicher Ladestecker (wie beim Handy) liefert den Strom. Die interne Verkabelung wird mit 10 cm langen Jumpern realisiert. Dazu sind zusätzliche Steckerreihen (male) auf der Bestückungsseite des Pico angelötet. Die Farben entsprechen denen der fritzing Steckplatine. GND-Anschlüsse sind genügend am Pico vorhanden, der 3,3V Pin ist entsprechend vervielfältigt (kleine Steckerreihe quer, untereinander verbunden und mit Steckerbuchse auf den 3,3V Pin gesteckt). Der Power-Anschluss für den TPA2016 wird am VBUS-Pin des Pico angeschlossen.
Der Prototyp wurde als 'fliegende' Schaltung aufgebaut.
Pico
Die Steckerreihe auf der Bestückungsseite ist noch nicht angelötet. |
RTC DS3231
Die batteriegepufferte Präzisions-Echtzeituhr DS3231 wird über I2C mit dem Pico verbunden und stellt die Zeit- und Kalenderdaten zur Verfügung. Mit dem Laden des Programmes auf den Pico wird die RTC gleichzeitig gestellt. Die Umstellung Sommer/Winterzeit erfolgt über die Bedienoberfläche. Mit t = rtc.datetime und z. B. str(t.tm_mday) kann bequem auf die Kalender/Uhrzeit Daten zugegriffen werden.
Audio
Die Audio-Ausgabe erfolgt über den speziellen Audiobus auf einen DAC UDA1334. Das ergibt einen hervorragenden Sound. Der linke Kanal wird dem digitalen Verstärker TPA2016 zugeführt. Über I2C kann kann die Lautstärke eingestellt werden. Die Sprachsegmente sind als MP3-Dateien auf der SD-Card abgelegt und können mit dem im Betriebssystem enthaltenen CODEC dekodiert werden.
SD-Card
Das Micro-SD Breakout wird über die SPI Schnittstelle angesteuert. Die Sprachsegmente sind in Ordnern organisiert. Bevor sie auf dem PC aufgespielt werden können, muss die SD-Card vorher z. B. mit SD Card Formatter formatiert werden.
1,3 Zoll OLED-Pico-Display
Das OLED ist auf dem Pico aufgesteckt (wichtig: die Orientierung zum Micro-USB) |
Die Steckerleisten für die Verdrahtung sind auf der Bestückungsseite angelötet |
Software
Programmiersprache ist Python. Als Betriebssystem wird CircuitPython von Adafruit eingesetzt. Das erleichtert wesentlich die Entwicklung, da die Adafruit Breakouts entweder direkt schon vom Betriebssystem unterstützt werden oder es stehen entsprechende Treiber zur Verfügung.
Die Prozeduren für das Aufspielen des Betriebssystems und der Treiber wird von Adafruit hervorragend auf den Learning-Seiten erklärt.
watchdog (bereits im Betriebssystem enthalten)
DAC an audiobus (bereits im Betriebssystem enthalten)
mp3 Codec (bereits im Betriebssystem enthalten)
Treiber
- adafruit_blinka
- adafruit_display_shapes
- adafruit_display_text
- adafruit_register
- adafruit_displayio_sh1107.py
- adafruit_ds3231.py
- adafruit_sdcard.py
- adafruit_tpa2016.py
- board.py (bereits im Betriebssystem enthalten)
- busio-py (bereits im Betriebssystem enthalten)
- digitalio.py (bereits im Betriebssystem enthalten)
- terminalio.py (bereits im Betriebssystem enthalten)
- audiomp3.py (bereits im Betriebssystem enthalten)
- audiobusio.py (bereits im Betriebssystem enthalten)
Betriebssystem:
- adafruit-circuitpython-raspberry_pi_pico-de_DE-7.3.1.uf2
Sprachausgabe
Die Sprachsegmente wie Wochentag, Datum und Uhrzeit werden aus einzelnen Wörtern oder Wortteilen zusammengesetzt. Auf der freien Seite https://ttsmp3.com/text-to-speech/German/ können Betonung, Pausen, Stimmlage, Stimme und Geschwindigkeit programmiert werden.
Mechanik
Das Gehäuse ist als Vorschlag in FreeCAD konstruiert und besteht aus einem Sockel (grün), einem Deckel (rot) und einer Taste (orange). Die Dateien sind im Download verfügbar, so dass das Projekt mit einem 3D-Drucker realisiert werden könnte.
FreeCAD-Version: 0.20.1
Assembly-Tool: A2plus V0.4.50a
Gesamtansicht |
Die Taste betätigt 3 Kurzhubschalter, die die Sprachausgabe starten.
Zusammenbau Deckel |
Einzelheit Feder |
Einzelheit Taster |
Einbau der Elektronik |
Blick auf den Pico |
Lautsprecher-Befestigung |
Micro-USB Anschluss |
Downloads
Sprachdateien:
https://drive.google.com/file/d/1RfYSI3SPH9nL71TrxzGsANAX3Lz29eG7/view?usp=sharing
fritzing Schaltplan:
https://drive.google.com/file/d/1dC8dkgJCDIy1TDxtyM1dfGKQjEhIGYYj/view?usp=sharing
Python Programm:
https://drive.google.com/file/d/1iuUzYv-5C-fqdDte5vCSeslfzavseaEM/view?usp=sharing
FreeCAD-Dateien:
https://drive.google.com/file/d/1YRZyLHTn_IvhqehZBsu-RZbS9ZKuZN_X/view?usp=share_link
Quellen
Adafruit CircuitPython-Treiber-Paket:
https://circuitpython.org/libraries
Adafruit CircuitPython Betriebssytem:
https://circuitpython.org/board/raspberry_pi_pico/
Text to speech:
https://ttsmp3.com/text-to-speech/German/
Button 1: lange drücken: underline wechselt h <--> min
kurz drücken: Volume up (wird max überschritten, fängt der Wert wieder bei 0 an)
Button 2: lange drücken: Sommerzeit (h/min+1)
kurz drücken: Winterzeit (h/min-1)