Aus Raspberry Pi Geek 02/2020

Weihnachtsbasteleien für Geeks (Seite 2)

Listing 2

import time
import board
import pulseio
from adafruit_motor import servo
pwm = pulseio.PWMOut(board.D0, frequency=50)
my_servo = servo.ContinuousServo(pwm)
my_servo.throttle = 0.01
while True:
  time.sleep(1)

Ohne While-Schleife endet das Programm und der Mikrocontroller setzt die Hardware zurück – deshalb die Zeilen 10 und 11. Zwar könnte man auch innerhalb dieser Schleife den Motor starten, stoppen oder seine Geschwindigkeit ändern. Für unser Projekt ist es aber nützlich, dass der Motor nach dem Start keine weitere Betreuung braucht, denn in der While-Schleife des Gesamtprogramms manipulieren wir ja die LEDs (siehe Listing 1).

Musik ab

Mikrocontroller tun sich mit dem Abspielen von Musik schwer, und auch der Pi Zero fällt nicht gerade in die Kategorie der für Multimediazwecke optimalen Geräte. Der Zero verzichtet auf einen Kopfhörerausgang, und der Bluetooth-Adapter eignet sich nur wenig für das Vorhaben: Das Pairing dauert, und kleine Bluetooth-Lautsprecher schalten sich gerne von selbst ab, um im ungünstigsten Moment Strom zu sparen.

Als Alternative bietet sich ein billiger Mini-MP3-Player an. Diese verfügen direkt auf der Platine über einen kleinen Mono-Verstärker sowie einen Micro-SD-Kartenslot. Es gibt sie in zwei Ausführungen: Einmal quasi roh, nur mit Lötstellen für Pins, und einmal funktional komplett mit ein paar kleinen Tasten (Abbildung 4). Händler auf Amazon liefern die Bauteile oft von Deutschland aus. Deutlich billiger gibt es sie wie üblich direkt aus China über Ebay.

Abbildung 4: Mini-MP3-Player, einmal nackt und einmal mit Tasten und Anschlüssen für Boxen.

Abbildung 4: Mini-MP3-Player, einmal nackt und einmal mit Tasten und Anschlüssen für Boxen.

Die rohe Variante bietet etwas mehr Flexibilität, was die Steuerung anbelangt. Ebenfalls günstig zu bekommen sind vorkonfektionierte Mini-Lautsprecher mit angelötetem Female-Jumper zum Aufstecken. In Sachen Soundqualität überzeugen solche einfachen Lautsprecher zwar nicht, der Ton passt aber zum Output der kleinen Player. Außerdem schlägt der Sound das Geklimper von mechanischen Spieluhren immer noch um Längen.

Die vorkonfektionierte Variante des Players hat ein paar nützliche Eigenschaften: Sobald Strom anliegt, spielt das Gerät alle Lieder und merkt sich beim Abschalten sogar das letzte davon. Allerdings macht das Layout den Einbau in eigene Projekte etwas schwierig – sind die Tasten zugänglich, dann stören die anderen Elemente. Insbesondere die Anschlussterminals für den Lautsprecher würde man gerne verstecken. Auch der Stromverbrauch liegt höher als bei der einfachen Variante (150 bis 350 mA gegenüber 100 bis 200 mA im Betrieb).

TIPP

Wer es etwas retro mag, nimmt als Musik die Töne einer alten Spieluhr auf und spielt die Aufnahmen über den MP3-Player des Projekts ab. Im Netz fand sich nichts Passendes, das sich einfach herunterladen ließe.

Im Projekt des Autors kam deshalb die unbestückte Variante zum Einsatz. Das Datenblatt [2] hilft bei der Verkabelung. Über zwei Buttons an den Pins IO1 und IO2 kann man die Lautstärke regeln und zwischen den Liedern vor- und zurückschalten. Damit die Musik gleich beim Einschalten loslegt, zieht der Trinket-M0 bei der Initialisierung den Pin IO2 kurz auf Masse (Listing 3). Die komplette Implementation einschließlich der notwendigen Verkabelung finden Sie auf Github [3].

Listing 3

from digitalio import DigitalInOut, Direction, Pull
NEXTKEY_PIN = board.D1
nextkey           = DigitalInOut(NEXTKEY_PIN)
nextkey.direction = Direction.OUTPUT
nextkey.value     = 0
time.sleep(0.2)
nextkey.value     = 1

Bastelstunde

Das war der elektronische Teil des Projekts, hier bewusst minimal gehalten. Das Ganze funktioniert mit einem externen Stromanschluss per Micro-USB. Wer das Projekt weiterdenkt, nutzt einen Lithium-Polymer-Akku mit Ladeschaltung sowie diverse Schalter, um Lichteffekte, Bewegung und Musik zu steuern. Da die IO-Pins des Trinkets auch kapazitiv reagieren, kann man die Buttons dabei sogar unsichtbar innerhalb der Spieldose anbringen. Allerdings wird es mit den fünf Pins des Trinket-M0 dann schnell eng, sodass Sie einen größeren Mikrocontroller benötigen.

Der Rest des Projekts ist analoge Weihnachtsbastelei: Hier wählt jeder das Material, das ihm passt oder das gerade zur Verfügung steht. Alte Lebkuchendosen geben zum Beispiel eine zum Thema passende Basis ab, neckische Figuren liefern die Weihnachtsmärkte. Wer einen 3D-Drucker besitzt, stellt auch die beweglichen Teile selbst her. Die Abbildung 5 zeigt einen Prototyp: Als Basis fungiert hier eine leere Dose von CD-Rohlingen. Das benötigte Volumen für Platine, Kabel, Lautsprecher und Motor sollte man allerdings nicht unterschätzen.

Abbildung 5: Der Prototyp der elektronischen Weihnachtsspieluhr auf Basis des Trinket-M0. Die kapazitiven Taster lassen sich durch das Gehäuse bedienen.

Abbildung 5: Der Prototyp der elektronischen Weihnachtsspieluhr auf Basis des Trinket-M0. Die kapazitiven Taster lassen sich durch das Gehäuse bedienen.

Bleibt zu hoffen, dass in der Vorweihnachtszeit noch genug Muße für die Verwirklichung eigener Ideen bleibt. Ansonsten darf der Spaß ein Jahr warten – Elektronik ist zeitlos, und nichts kommt so regelmäßig und überraschend wieder wie Weihnachten. 

Der Autor

Bernhard Bablok (mailto:[email protected]) arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder mit dem Fahrrad respektive zu Fuß unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Mini-PCs.

Infos

  1. Trinket-M0 und Python: Bernhard Bablok, “Durchgeschlängelt”, RPG 02/2019, S. 66, http://www.raspi-geek.de/41930
  2. Datenblatt DFPlayer-Mini: https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299
  3. Beispielcode zum Projekt: https://github.com/bablokb/xmas-music-box
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben