Chaospott Wiki

Wir sind da wat am dokumentieren dran...

Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:tanzhut:start

Dies ist eine alte Version des Dokuments!


Der Tanzhut

Was man nur durch viel Übung lernen würde, lösen Nerds mit Technik: Den Rhythmus beim Tanzen zu halten!

Der Tanzhut gibt durch rhythmisches Blinken den Takt an und hilft so in der richtigen Geschwindigkeit zu tanzen. Zusätzlich leuchtet er bunt ist ein echter Hingucker.

Er besteht aus einem neongelben Hut, einem WS2812 LED-Streifen, gesteuert von einem Nachbau eines Arduino Nano, einer Powerbank zur Stromversorgung und Kontaktfolien zur Steuerung.

Funktionsweise

Beim Einschalten leuchtet der LED-Streifen mit einem wandernden Regenbogenmuster. Da der Arduino Nano nicht genug Rechenleistung hat um den Takt über ein Mikrofon zu erkennen, muss man diesen vorgeben. Dies geschieht durch Tippen auf die Hutkrempe. Dabei schließt man einen Stromkreis. Dies wird vom Arduino Nano gemessen. Durch mehrmaliges Tippen erkennt er den Rhythmus, bestimmt den Durchschnitt und wiederholt ihn dauerhaft. Dadurch hat man beim Tanzen einen konstanten Rhythmus, an dem man sich orientieren kann.

Bauteile

  • Hut (Cyber-Ausführung, neongelb)
  • WS2812 LED-Streifen mit 86 LEDs
  • Arduino Nano kompatibles Board
  • Powerbank (von der MRMCD), durch die geringe Stromaufnahme ist die Kapazität egal
  • Kontaktfolie, z.B. Aluminiumklebeband
  • Kabel, Wiederstände (1M Ohm), Schalter, …

Entwicklung

Ursprünglich sollte der Hut den Rhythmus automatisch erkennen. Mit einem Mikrofon sollte die Musik aufgenommen und dann mit dem Microcontroller ausgewertet werden. Das wird schon nicht so schwierig sein, so der erste Gedanke.

  • 1. Ansatz: Bei jedem Beat ist die Musik besonders laut, daher reicht es den Pegel zu messen und dann mit einem Sliding-Window den Durchschnitt, also die Hintergrundgeräusche und dann Peak zu erkennen. Wenn man die Peaks misst und dann den Durchschnitt bestimmt erhält man den Takt. Leider funktioniert das nicht, da der Takt nicht notwendigerweise immer besonders laut ist.
  • 2. Ansatz: Die Auswertung muss also intelligenter gemacht werden. Eine kurze Suche empfiehlt da Verfahren wie Fourier-Transformation anzuwenden um den Takt zu erkennen. Für den Arduino gibt es auch schon fertige Libraries für Fast-Fourier-Transformation (FFT). Leider ist der Arduino zu langsam dafür.
  • 3. Ansatz: Wie haben andere Leute das gelöst? Im Internet finden sich viele Beschreibungen von Projekten, bei denen rhythmisch mit WS2812-LED-Streifen geblinkt wird, die von Arduino Nano Microcontrollern angesteuert werden. Allerdings wird die Rhythmuserkennung dabei von PCs übernommen, die das Taktsignal per USB an den Arduino weitergeben. Das ist für das Projekt Tanzhut nicht geeignet, da wir uns ja kein Notebook auf den Rücken schnallen wollen.
  • 4. Ansatz: Takt manuell vorgeben. Der Träger des Huts hat ja einen Kopf mit Ohren und kann sehr einfach den Takt selbst erkennen. Durch ein geeignetes Interface, wie Tippen auf die Hutkrempe, kann er den Takt dem Arduino vorgeben, der ihn dann einfach wiederholt.

Umsetzung

Erste Idee war einen kapazitativen Sensor zu verwenden, der sehr empfindlich auf Berührung reagiert. Dadurch kann man sehr genau den Rhythmus vorgeben. Einen Kapazitativen Sensor kann man einfach mit einem großen Widerstand (1M-10M Ohm) und einer leitenden Kontaktfläche bauen. Für den Hut haben wir Aluminiumklebeband verwendet, da sie sich einfach an die Konturen des Hutes anpassen lässt, einfach anzubringen ist und ggf. rückstandslos entfernt werden kann. Alternativ könnte man auch dünne, blanke Kupferdrähtchen in den Hut einnähen.

Für kapazitative Sensoren mit Arduinos gibt es viele Anleitungen z.B. diese hier. Für die Erkennung gibt es auch fertige Libraries. Das funktioniert nach ein bisschen finetuning sehr gut. Allerdings nur so lange, bis man das USB-Kabel zum Rechner entfernt und das gesamt Setup über eine Batterie betreibt. Durch die fehlende Erdung wurde das Signal so sehr gestört, dass man keine vernünftigen Messungen vornehmen kann. Tipp: Das Finden dieses Fehlers und das Debugging ist sehr aufwändig, da man zur Kommunikation nicht den seriellen Anschluss verwenden kann. Sobald man das USB-Kabel (nur die Data-Pins, also ohne Phase/Erde) anschließt, reicht das schon um die Störungen zu entfernen. Allerdings ist eine dauerhafte Erdung beim Tanzen natürlich nicht möglich.

Es gibt fertige Sensor-Plantinen mit kapazitativen Sensoren für den Arduino Nano. Allerdings sind diese zu empfindlich um sie mit einem großen Leiter an der Hutkrempe zu verbinden. Dann gibt es zu viele falsche Signale und der Sensor reagiert träge, sodass eine genaue Steuerung des Taktes nicht möglich ist.

Die gewählt Lösung ist es oben und unten an der Hutkrempe jeweils einen Aluminiumstreifen anzubringen, zwischen denen man den Widerstand misst. So erhält man ein sauberes Signal ohne Störungen. Ein Pull-Down-Widerstand (100K-1M Ohm) hilft, das Signal scharf zu trennen.

Aufbau

projekte/tanzhut/start.1591656381.txt.gz · Zuletzt geändert: 09.06.2020 00:46 von sirgoofy