Elektronik- und Roboter-Basteln
Für Kinder ab 14 Jahren - mit Lötkolben und Mikrocontroller.
Bastelabend 240: Floppotron Teil 3
2024-10-23, ThomasWir konnten an diesem Abend sowohl dem Servo-Motor als auch dem Floppy ein paar Töne entlocken - diesmal auch wirklich Töne, nicht nur Geräusche. Die Arduino-Programme aus dem Internet erweisen sich aber nicht immer als hilfreich. Wir haben viel Zeit damit verbracht, den bereitgestellten Code zu verstehen und die Fehler (ja, mehrere) zu finden.
Für die Ansteuerung des Servo-Motors haben wir den Arduino Uno durch einen Arduino Nano ausgetauscht. Außerdem haben wir noch ein neues Gerät in unser Repertoire aufgenommen, die Zylinderspule (Solenoid). Wir werden sehen, ob wir damit ebenfalls Geräusche erzeugen können, die uns als Rhythmus dienen.
An unseren Spickzettel mit Tonhöhen hat sich leider niemand erinnert. Hier die Tonhöhen zum Kopieren:
// Frequenzen von C4 bis G5 incl. Halbtonschritten
int frequencies[] = {262, 277, 294, 311, 330, 349, 370, 392, 415, 440,
466, 494, 523, 554, 587, 622, 659, 698, 740, 784};
Hier noch die Herleitung der Wartezeit: ein Ton mit der Tonhöhe 440 Hertz muss 440 gleichmäßige Bewegungen in einer Sekunde erledigen. Die Zeit für eine ganze Schwingung beträgt also 1s/440.
Das erreicht man bei einem Schrittmotor, indem der Pin eine gewisse Zeit auf
HIGH
und die gleiche Zeit auf LOW
gesetzt wird.
Die Wartezeit von 1s/440 muss also nochmal halbiert werden zu 1s/880.
1s/880 entspricht 0,0011363 Sekunden. 1000ms/880 ergibt 1,1363 Millisekunden.
Das ist zu kurz für den delay()
Befehl. Wir brauchen also
1000000µs/880, was dann brauchbare Werte von 1136,3 ergibt.
Oft ist es geschickt, den Rechenweg mit in den Code aufzunehmen. Dann sieht man in der Formel den gesuchten Wert (hier: 440) wieder. So ist später besser nachvollziehbar warum hier ein Ton von 440 Hz und nicht 880 Hz abgespielt wird.
// Eine Schwingung mit dem Stepper Motor durchführen
// TODO: Warnung: dieser Code hat noch Fehler
digitalWrite(MOTOR_PIN, HIGH);
delayMicroseconds(1000000/440/2);
digitalWrite(MOTOR_PIN, LOW);
delayMicroseconds(1000000/440/2);
Oder in allgemeiner Form:
// Eine Schwingung mit dem Stepper Motor durchführen
// TODO: Warnung: dieser Code hat noch Fehler
digitalWrite(MOTOR_PIN, HIGH);
delayMicroseconds(1000000/frequency/2);
digitalWrite(MOTOR_PIN, LOW);
delayMicroseconds(1000000/frequency/2);
Wo und warum sich hier noch ein Fehler versteckt, schauen wir uns nächstes Mal an. Heute klären wir noch, wie oft eine Schwingung wiederholt werden muss.
Angenommen, wir wollen den 440 Hz Ton 1,7 Sekunden lang hören. Eine Schwingung dauert 1,1363 Millisekunden. Davon passen viele in 1,7 Sekunden. Wie viele genau? Wir teilen die Gesamtzeit durch die Einzelzeit, also 1,7s/1,1363ms. Oder 1700ms/1,1363ms. Jetzt lassen sich die gleichen Einheiten wegkürzen und es ergibt sich nur noch 1700/1,1363. Das Ergebnis ist ca. 1496.
Allgemein: eine Schwingung dauert T=1s/f. Die Anzahl Schwingungen ist A = Gesamtdauer in s/T, also A = Gesamtdauer in s/(1s/f). Durch einen Bruch wird dividiert, indem man mit dem Kehrbruch multipliziert (Mathematik-Merksatz). Also A = Gesamtdauer in s×f/1s. Oder in Millisekunden: A = Gesamtdauer in ms * f / 1000 ms.
// Anzahl der Schwingungen
// TODO: Warnung: dieser Code hat noch Fehler
int repeatcount = duration * frequency / 1000;
for (int i = 0; i < repeatcount; i++) {
// hier eine Schwingung durchführen (Code von oben)
}
Bastelabend 239: Morse-Tastatur Teil 2
2024-10-16, ThomasDie am letzten Abend gebastelten Stecker haben nicht so funktioniert, wie erwartet. Beim Testprogramm kamen überhaupt keine Tastendrücke an.
Wir haben den Stecker und die Kabel durchgemessen und so die richtigen Anschlüsse ermittelt. In einem ersten Arduino-Programm haben wir uns zum Test die getippten Buchstaben über die serielle Schnittstelle ausgeben lassen.
Bastelabend 238: Breadboard
2024-10-15, ThomasNachdem uns die Lötprojekte ausgegangen sind, haben wir mit einem neuen Thema angefangen, dem Breadboard. Wir haben heute das Steckbrett besprochen und wissen nun, wo der Strom entlangfließen kann und wo nicht.
Die erste Aufgabe bestand darin, eine LED zum Leuchten zu bringen. Dazu haben wir zunächst einen Schaltkreis gezeichnet (Batterie, Vorwiderstand, LED) und diesen dann auf das Steckbrett übertragen. Schließlich haben wir noch eine zweite LED parallel dazugeschaltet.
Zum Ende des Bastelabends haben wir uns nochmal die Regeln in Erinnerung gerufen, an die wir uns halten möchten, damit das Elektronik-Basteln auch Spaß macht.
Bastelabend 237: Floppotron Teil 2
2024-10-09, ThomasWir haben heute nochmal überlegt, welche Dinge wir beim letzten Mal schon herausgefunden hatten. Dabei stellten wir fest: Notizen helfen uns tatsächlich. So konnten wir die Belegung des Stromsteckers am Floppy direkt ablesen. Gute Bilder dazu hat die Seite Wikibooks FDD Montage. Die Adern des Floppy-Steckers sind wie folgt belegt:
- rot: 12 Volt
- gelb: 5 Volt
- schwarz: Ground
Die 34-poligen Floppy Flachbandkabel haben auf einer Seite eine Markierung. Diese Markierung gehört zu Pin 1 der Datenanschlüsse. Floppykabel gibt es in unterschiedlichen Farben, sowie mit zwei Anschlüssen (Floppy A: und Mainboard) oder auch mit drei Anschlüssen (Floppy A:, B: und Mainboard). Breitere Floppykabel sind keine Floppykabel, sondern IDE-Kabel für IDE Festplaten oder IDE CD-ROM- oder DVD-Laufwerke.
Am Floppy schaut man am besten auf die Beschriftung der Platine. Dort steht auf einer Seite der Steckkontakte eine 1 oder eine 2, auf der anderen Seite eine 33 oder eine 34. Die Markierung kann auf der Oberseite oder auf der Unterseite der Platine angebracht sein.
Bastelabend 236: Morse-Tastatur
2024-10-01, ThomasGruppe 3 wird in den nächsten Wochen eine Morse-Tastatur bauen. Dabei sollen die Teilnehmer möglichst selbstständig, also ohne fremde Hilfe, aber in Teamarbeit vorgehen, also ihr Wissen untereinander teilen, sodass jeder zum Ergebnis kommt.
Den Teilnehmern steht zur Verfügung:
- eine PS/2 Tastatur
- eine PS/2 (Mini-DIN) Buchse
- ein Lautsprecher (BL50)
- andere Bauteile, je nach Bedarf
Am heutigen Abend war die Herausforderung, die PS/2 Buchse ordetlich zu verkabeln. Dabei haben wir ausgeschlossen, den PS/2 Stecker abzuschneiden, wie es z.B. in diesem Video (Youtube) gezeigt wird. Immerhin haben wir eine PS/2 Buchse, d.h. wir können zerstörungsfrei arbeiten.
Wir haben die Belegung des Steckers ermittelt und die Printbuchse dann auf eine Lochstreifenplatine gelötet.
PS/2 Buchse auf Lochstreifenplatine. Bild: CC-BY-SA 4.0 Thomas Weller
Bastelabend 235: Floppotron
2024-09-25, ThomasHeute gab es für Gruppe 1 mehrere Projekte zur Auswahl:
- Ausbildung zur Amateurfunk-Lizenz Klasse N
- 3D-Konstruktion mit Fusion 360 und 3D-Druck
- Morsetastatur mit Lautsprecher, Displan und ggf. Finger (wie auf der Ham Radio gesehen)
- Box zur Analyse des WS2812 Protokolls
- RGB Demo
- Metronom
- Floppotron (Musikgerät)
- Sankt Martin Laterne
- Wetterstation mit LoRa
Jeder Teilnehmer erhielt je 3, 2 und 1 Punkt, die er für Projekte seiner Wahl vergeben konnte. Das Ergebnis war:
- 6 Punkte, 3 Teilnehmer: Floppotron
- 6 Punkte, 3 Teilnehmer: 3D-Konstruktion mit Fusion 360 und 3D-Druck
- 3 Punkte, 2 Teilnehmer: Sankt Martin Laterne
- 3 Punkte, 1 Teilnehmer: Wetterstation mit LoRa
Da im Floppotron auch 3D-Druck enthalten ist, werden wir das Floppotron umsetzen.