Schwarz auf Weiß

Auch als Buch mit dem Titel '10 Selbstbauprojekte', ISBN-Nr. 978-3-7448-3433-9 und als e-book mit der ISBN-Nr. 9783744806299 erschienen. Band 2 ist 2021 mit dem Titel '10 Selbstbauprojekte Band 2', ISBN-Nr. 978-3-7534-4580-9 und als e-book mit der ISBN-Nr. 9783753470085 erschienen.

Besuchen Sie auch meine Art site https://khomet.de

Freitag, 20. Januar 2023

Sprechender Kalender

Inhaltsverzeichnis

Motivation
Aufbau
Software
Treiber
Betriebssystem
Sprachausgabe
Schaltplan
Mechanik
Downloads
Quellen

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



Schaltplan
Fritzing Steckplatine:





Fritzing Schaltplan:



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/

Manual



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)