Technisches Basteln, Erfinden und Designen mit Arduino

Hier könnt ihr coole Sportarten und andere Hobbies kennenlernen und findet hilfreiche Anregungen.
Antworten

Technisches Basteln, Erfinden und Designen mit Arduino

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 12:06

Mit Arduino lassen sich computergesteuerte Geräte mit integrierten Sensoren, Motoren, Displays, drahtloser Kommunikation und mehr am eigenen Schreibtisch bauen und programmieren.
Das Besondere ist, Arduino ermöglicht das auch ohne löten zu können oder Informatik studiert zu haben. Der Zugang zu Hard- und Software ist stark vereinfacht, um einer breiteren Masse das technische Basteln zu ermöglichen.
Die taktil erschließbare Hardware und barrierearme Code-Eingabe machen das Basteln mit Arduino auch blind möglich.
Arduino wird in Schulen verwendet, um Kindern grundlegende Prinzipien des Designs und der Informatik beizubringen.
Viele Tüftler*innen bauen sich damit eigenkonstruierte Installationen, z.B. Steuerung von Heim- und Gartenautomationen wie Beleuchtung oder Pflanzenbewässerung, aber auch Bluetooth-gesteuerte Roboter oder Spielzeuge. Arduino eignet sich auch hervorragend zum Bau von Hilfsmitteln, die es auf dem Markt so nicht gibt.
In diesem Thread möchte ich Tipps für den Einstieg geben und Bauanleitungen veröffentlichen. Anleitungen findet man im Netz zuhauf, aber es gibt keine Anleitung, die sich an Blinde richtet und z.B. rein taktile Methoden vermittelt oder Lösungen für den nichtvisuellen Zugang anbietet. Auch werden Schaltpläne im Netz immer grafisch dargestellt.
In meinen Tipps und Anleitungen werde ich blindenspezifische Hinweise geben und Schaltpläne natürlich in Textform bereitstellen.
Der Thread richtet sich an Blinde, die sich mit Arduino beschäftigen möchten, aber auch an Lehrkräfte, die inklusiven Unterricht gestalten wollen.
In der folgenden Podcast-Episode hört ihr einen Vortrag, den ich auf dem 37. Kongress der Blinden- und Sehbehindertenpädagogik gehalten habe. Er bietet einen Einstieg in die Materie.
Arduino: Inklusiver Einstieg in Programmierung mit Hard- und Software

Der Arduino Uno R3 Mikrocontroller

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 12:17

Die Arduino-Plattform besteht aus einer Platine mit einem Prozessor und Steckkontakten, die durch eine vereinfachte Programmiersprache gesteuert wird. Die Hardware nennt man auch Board, wie bei Mother Board.
Es gibt verschiedene Arduino-Boards, die sich durch ihre Größe und Rechenleistung unterscheiden. Ich beschreibe hier den Arduino Uno R3, ein weit verbreitetes Board, das sich gut für den Einstieg eignet.
Der Uno R3 ist etwa so lang wie eine Kreditkarte und etwa eineinhalbmal so breit.
Auf der Oberseite des Boards fühlt man parallel zu den langen Seiten jeweils eine Leiste. Diese Leisten enthalten die Steckkontakte, Pins genannt. Es sind kleine Löcher, die man mit einer Steckerspitze erfühlen und abzählen kann. Warum sie Pins heißen, fühlt man auf der Unterseite. Jeder Kontakt endet in einem winzigen Stift, der unten aus dem Board tritt. ES fühlt sich an, wie eine Reihe von Nadelspitzen. Damit muss man sich aber nicht beschäftigen. Uns interessiert nur die Oberseite.
An einer kurzen Seite befindet sich ein Quaderförmiger Aufbau. Das ist der USB-Anschluss. Dreht das Board so, das er oben rechts ist. So stört das USB-Kabel nicht beim Arbeiten mit dem Board. Auch ist das die allgemein verwendete Arbeitsposition. Wenn bezüglich eines Boards von links und rechts die Rede ist, bezieht sich das immer auf diese Ausrichtung.
Links neben dem USB-Anschluss fühlt man einen röhrenförmigen Aufbau, der Anschluss für ein Netzteil.
Die Leisten mit den Pins sind von links und rechts zugänglich.
Für mich sind die Stecklöcher zu klein, um sie mit dem Finger fühlen zu können, aber wenn ich einen Stecker einstecken möchte, wandere ich mit der Steckerspitze oben auf der Leiste entlang und finde die Löcher.
Die Pins haben alle einen festen Platz und eindeutige Bezeichnungen. Links sind die analogen Ein- und Ausgänge, rechts die Digitalen. Sie sind mit A oder D gefolgt von einer Zahl bezeichnet, also z.B. A0.
Pins, die mit Tilde gekennzeichnet sind, sind PWM-fähig (siehe Begriffsklärung).
Außerdem gibt es einen Pin für Stromzufuhr, der VIN heißt und mehrere Masse-Anschlüsse, die Ground, abgekürzt GND heißen. An VIN wird immer der Pluspol einer Stromquelle angeschlossen, an GND der Minuspol. Dann gibt es noch die Pins 5V und 3V für die Stromabnahme, also fünf Volt und 3,3 Volt. Es gibt noch einige weitere Pins, die aber für den Einstieg keine Rolle spielen.
Für Sehende sind die Bezeichnungen neben den Pins aufgedruckt. Ich nutze eine Excel-Tabelle, in die ich die Pins in zwei Spalten, entsprechend den Leisten eingetragen habe. Ich kann also nachgucken, an welcher Stelle sich ein Pin befindet und dann mit der Steckerspitze abzählen.
hier könnt ihr die Tabelle für den Uno R3 runterladen. Einige Zellen enthalten Kommentare, die Funktionen der Pins betreffend. Für den Anfang müsst ihr das nicht beachten.
(15.6 KiB) Noch nie heruntergeladen
Dateianhänge
(15.6 KiB) Noch nie heruntergeladen

Das Arduino Breadboard

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 12:19

Ein Breadboard ist eine Steckplatine, die dazu dient, Bauteile miteinander zu verbinden. Es ist unerlässlich, wenn man nicht löten kann oder möchte. Z.B. kann man den Pluspol einer Batterie auf dem Steckbrett mit einem Schalter verbinden, der dann auf dem Hauptboard an VIN angeschlossen wird.
Auf der Oberfläche des Breadboards fühlt man ein Raster mit vielen kleinen löchern. Das sind die Steckkontakte. Als Orientierungshilfe kann man sich die Kontakte in Zeilen und spalten geordnet vorstellen. Jeweils fünf Kontakte bilden eine Zeile. Jede Zeile ist eine Schaltnode. Soll heißen, alles, was in einer Zeile steckt, ist verbunden wie gelötet.
Durch das gedachte Koordinatensystem kann man jeden Kontakt adressieren wie eine Zelle in Excel. A1 wäre z.B. links oben, B1 rechts daneben und B2 eine Zeile tiefer.
Wenn man mit anderen an einem Projekt arbeitet, kann man sich auf diese Weise gut über den Schaltplan verständigen. Ich werde diese Methode in meinen Schaltplänen verwenden, die ich hier veröffentliche.
Das Tabellen-Layout mit den fünf Kontakten pro Zeile und mehreren Zeilen untereinander ist auf einem Breadboard immer zwei Mal vorhanden. Sie liegen parallel und sind durch eine fühlbare Rille getrennt. Man kann es sich wie ein aufgeschlagenes Buch vorstellen, mit einer Tabelle auf der linken Seite und einer weiteren Tabelle auf der rechten Seite.
Wenn man einmal mehr als fünf Kontakte für einen Knotenpunkt braucht, kann man benachbarte Zeilen mit einer sogenannten Steckbrücke verbinden und zu einer Node machen. Da die Steckbrücke zwei Kontakte benötigt, hat man dann acht.
Breadboards gibt es in verschiedenen Größen. Die kleinsten haben 20 Doppelzeilen. Größere Breadboards haben links und rechts entlang der Ränder sogenannte Power Rails. Das sind Schienen für die Spannungsversorgung. Man kann also eine Batterie an ein Power Rail anschließen und dann auf der ganzen Länge des Boards die Schiene als Stromquelle für Bauteile nutzen.

Die Arduino Entwicklungsumgebung

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 12:47

Die Entwicklungsumgebung (IDE) ist das Programm, in dem man den Code schreibt, mit dem man ihn verifiziert und auf das Board hochlädt. IDE steht für integrated development environment.
Die IDE ist barrierearm und durchweg mit Tastenbefehlen bedienbar.
hier könnt ihr die Arduino IDE für Windows, Mac oder Linux runterladen.

Ich werde hier die Grundlagen schildern, die man braucht, um loszulegen.
Das wichtigste Bildschirmelement ist der Editor für den Code. Es ist ein mehrzeiliges Eingabefeld, das man mit der Schnellnavigationstaste e ansteuern und mit Leertaste aktivieren kann.

Die IDE hat ein klassisches Menü, das mit der AltTaste aufgerufen wird.
Im Dateimenü gibt es neben den erwartbaren Optionen Öffnen und Speichern zwei wichtige Untermenüs.
  1. Sketchbook: Sketch ist eine Datei, die Code enthält. Im Untermenü Sketchbook findet man alle bisher geladenen oder gespeicherten Sketches.
  2. Beispiele: Dieses Untermenü ist entscheidend für den Einstieg. Um erste Schritte zu machen, muss man kein stück programmieren können. Das Untermenü Beispiele hält eine Vielzahl an Sketches für alle möglichen Anwendungsbereiche bereit. Sie reichen vom simplen Ansteuern eines Summers, der einen Ton von sich gibt, bis zu komplexen Schaltungen mit Sensoren oder Servomotoren.
Um loszulegen, kann man einfach ein Beispiel wählen und den Code auf das Board hochladen. Oben im Sketch ist meistens eine Liste der benötigten Bauteile angegeben.
Als nächstes kann man den Code abwandeln. Wird im code z.B. eine Melodie für den Summer erzeugt, guckt man sich die Syntax an und versucht, die Melodie zu ändern. So tastet man sich an das Verständnis für die Programmiersprache heran.
In den Beispiel-Sketches sind über den Codeanweisungen immer Kommentarzeilen, die erklären, was beim nächsten Schritt passiert. Das soll den Zugang zur Programmiersprache erleichtern bzw. ihre Verständlichkeit erhöhen.
Wie gesagt, kann man Beispiele nutzen und damit herumprobieren, ohne programmieren zu können. Wenn man aber den Code verstehen und selbst gestalten möchte, sollte man sich einmal mit elementaren Codeelementen auseinandergesetzt haben, also Variablen, Konstanten, Schleifen, Wenn-Dann-Anweisungen etc.

Was den Zugang erleichtert, ist eine Vielzahl an Funktionen, die Arduino bereitstellt. Funktionen sind Codebausteine für oft vorkommende Anwendungsbereiche, die man einfach im Code aufrufen kann. Sie ersparen uns, eine komplette Programmiersprache verinnerlichen zu müssen.
Ich möchte das anhand der Excel-Funktion Heute verdeutlichen. Wenn ihr in eine Excel-Zelle eingebt „=HEUTE()“, zeigt die Zelle immer das Aktuelle Datum an. Dabei wird im Hintergrund mit Programmcode auf die Systemzeit zugegriffen und das Datum abgefragt, das dann in der Zelle angezeigt wird. Wie der Code dafür lautet und funktioniert, muss man nicht wissen. Es reicht, dass man sich der Funktion bedient. So ähnlich ist es mit Funktionen bei Arduino.
Funktionen sind in Bibliotheken sortiert, die immer einen bestimmten Anwendungsbereich abdecken. Z.B. gibt es die Bibliothek pitch für die Gestaltung von Tönen. Die Bibliothek enthält u.a. die Funktion NOTE, mit der man einen Ton angeben kann, z.B. C4, also die Note C in der vierten Oktave.
Wenn man die Bibliothek am Anfang des Codes einbindet, kann man sich ihrer Funktionen bedienen.
Möchte man nach Bibliotheken für einen bestimmten Bereich suchen, ruft man mit Ctlr-Shift-i die Option Bibliotheken verwalten auf. Dann kann man im Suchfilter einen Suchbegriff eingeben, etwa Sensor, Servo oder Sound. Darunter werden die Ergebnisse angezeigt, die man sofort installieren kann.
Um eine Bibliothek einzubinden, geht man im Menü Sketch in das Untermenü Bibliothek einbinden. Hier werden die installierten Bibliotheken angezeigt. Enter bindet die Bibliothek oben im code mit dem Include-Befehl ein.

Wenn man ein Board anschließt, muss man zunächst im Menü Werkzeuge im Untermenü Boards das betreffende Board wählen, also z.B. Arduino Uno.
Dann muss man ebenfalls im Menü Werkzeuge im Untermenü Port die Schnittstelle wählen, an die das Board angeschlossen ist. Diese ist in der Regel daran zu erkennen, dass nach ihrer Bezeichnung, z.B. Com6, der Name des Boards angegeben ist.
Warum man die Schnittstelle angeben muss, wenn die IDE sie doch von selbst erkennt? Ich nehme an, weil man theoretisch mehrere Boards gleichzeitig anschließen kann. Da muss die IDE natürlich wissen, auf welches Board der Code hochgeladen werden soll.

Um Code auf das Board hochzuladen, drückt man Ctrl-u. Jetzt wird in der untersten Bildschirmzeile der Status ausgegeben. Zunächst steht dort „Kompiliere Sketch“. Anschließend erscheint die Meldung „Hochladen“.
enthält der Code einen Fehler, erscheint hier der Schalter „Fehlermeldungen kopieren“. Drückt man Enter, findet man mehrere Zeilen darüber eine genaue Angabe, in welcher Code-Zeile der Fehler aufgetreten ist bzw. was den Fehler verursacht hat. Es muss nicht am Code liegen, sondern es kann auch sein, dass man vergessen hat, das Board oder die Schnittstelle auszuwählen.
Die Statuszeile aktualisiert sich für Screen Reader nicht automatisch. Um den Status in Echtzeit abzufragen, muss man wiederholt Ctrl-Ende drücken, um die Zeile neu zu fokussieren.
Leider liest der Screen Reader nicht die führenden Zeilennummern im Editor aus. Hat man nur 30 bis 50 Code-Zeilen, ist das nicht so wichtig. Wenn die IDE aber einen Fehler in Zeile 284 meldet, möchte man nicht von oben abzählen. Wenn man Wert auf Zeilennummern legt, empfiehlt sich der Editor Notepad++. Man muss dann in Notepad++ den Code edidtieren und für den Upload in den IDE Editor kopieren. Hier könnt ihr Notepad++ runterladen

Arduino Begriffserklärung

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 12:50

In der Arduino-Welt kommen viele Begriffe vor, die man vielleicht noch nicht gehört hat. Damit ihr nicht jedes Mal recherchieren müsst, wenn so ein Begriff fällt, liste ich hier die gängigsten auf und erläutere sie.
  • Jumper-Kabel: Dünne Kabel mit Steckern oder Buchsen an den Enden. Man nutzt sie, um Bauteile mit dem Board zu verbinden. Z.B. kann man eine Buchse auf das Beinchen eines Lautsprechers stecken und den Stecker am anderen Ende in einen Pin auf dem Board.
    Jumper-Kabel gibt es in verschiedenen Farben, damit Sehende den Überblick behalten. Das kann uns egal sein, nur wenn man mit Sehenden zusammenarbeitet, kann das Wichtig sein.
  • Dupont-Stecker: Kleine Stecker bzw. Buchsen an den Enden der Jumper-Kabel.
    Anzuschließende Bauteile wie Lautsprecher, Batterie-Clip oder Taster sollten Dupont-Stecker oder Beinchen für den Anschluss haben. Die Beinchen müssen lang genug sein, um in einer Dupont-Buchse zu halten.
    Wenn ein Bauteil lose Kabel hat, muss man crimpen, das heißt den Stecker selbst anbringen. Dazu braucht man eine Abisolierzange, eine Crimp-Zange, ein Dupont-Crimp-Set, viel Geduld und eine hohe Frustschwelle.
    Da die Beschaffenheit nicht immer aus den Produktbeschreibungen hervorgeht, sollte man sich die Abbildungen der Bauteile von einer sehenden Person beschreiben lassen. Ich empfehle auch, kundenrezensionen zu lesen. Manchmal wird beschrieben, wie und wofür ein Bauteil verwendet wurde. Daraus lässt sich eventuell die Eignung ableiten.
  • Breadboard: Eine Steckplatine (siehe den Artikel dazu)
  • Pot oder Potentiometer: Ein Pot ist ein Drehregler für die Spannungszufuhr. Lautstärkeregler z.B. sind Pots. Je mehr Strom sie durchlassen, desto lauter wird der ton.
  • Steckbrücke: U-förmig gebogene Drähte, mit denen Noden auf einem Breadboard verbunden werden. Man kann z.B. zwei Zeilen eines Breadboardss damit verbinden und hat dann nicht fünf, sondern acht Steckkontakte zur Verfügung.
    Steckbrücken gibt es fertig gebogen als Set in verschiedenen Längen.
  • Sketch: Eine Datei mit dem Programmcode für ein Projekt (siehe den Artikel über die IDE)
  • Pulsweitenmodulation (PWM): Mit PWM wird die Spannung an digitalen Pins reguliert.
    Da es nur zwei digitale Zustände gibt, 1 und 0 bzw. an und aus, kann die Spannung nicht analog wie mit einem Potentiometer geregelt werden. Entweder es liegen fünf Volt an oder null Volt.
    Um an digitalen Pins einen Effekt ähnlich einem Potentiometer zu erzeugen, wird die Stromzufuhr in variablen Abständen an und ausgeschaltet . Wenn z.B. 500 Mal pro Sekunde der Strom für eine Millisekunde ausgeschaltet wird, hat das beim Endgerät den Effekt der halben Spannung. Indem man die Abstände länger oder kürzer macht, verringert oder erhöht man die Spannung.

Arduino Bibliotheken und Funktionen

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 13:00

Wie im Artikel über die IDE beschrieben, lässt sich die Arduino Umgebung durch Bibliotheken für bestimmte Zwecke erweitern.
Bibliotheken sind Sammlungen von Funktionen, also Codebausteinen, die Bauteile steuern oder Daten auswerten.
Während die Bibliothek edu_Intro viele verschiedene Funktionen für Einstiegsprojekte beinhaltet, sind die meisten Bibliotheken für ganz bestimmte Zwecke ausgelegt. So gibt es Bibliotheken zur Steuerung von Feuchtigkeitssensoren, Beschleunigungssensoren, Servomotoren, Bluetooth-Modulen etc.
Unter folgendem Link könnt ihr die Arduino Bibliotheken einsehen.
Hier gibt es unter der Überschrift Libraries eine Linkliste mit Kategorien. In den Kategorien findet man dann Bibliotheken für spezielle Zwecke.
Wenn ihr z.B. einen Servomotor betreiben wollt, geht ihr auf der Startseite zuerst auf die Kategorie Device Control und dann auf der Unterseite auf die Bibliothek Servo.
Wie gesagt, kann man auch in der IDE mit Ctrl-Shift-i gezielt nach Servo suchen, aber wenn man nicht genau weiß, welche Bibliothek man braucht, hilft das Stöbern.
Auf der Detailseite der jeweiligen Bibliothek gibt es oft Anwendungsbeispiele mit Code und eine Liste der Enthaltenen Funktionen. Klickt man auf eine Funktion, wird ihr Zweck und die Syntax erklärt.
Es wird also eigentlich alles mundgerecht serviert. Nur die Speisekarte ist ziemlich umfangreich und man braucht ein wenig Zeit, sich darin zu orientieren.

Arduino im inklusiven Unterricht

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 13:08

Ich möchte hier einige Punkte zusammenfassen, die man bei Projekten mit blinden und sehenden Schüler*innen berücksichtigen sollte.
Der Einleitende Satz sagt es schon: Das Ziel ist ein Projekt, zu dem beide Parteien‘ gleichwertig beitragen können. Die Sehenden eine Leuchtschrift bauen zu lassen, während der oder die Blinde an einem Tongenerator arbeitet, ist nicht inklusiv.
Der Inklusionsgedanke fängt also schon bei der Wahl des Projekts an.
In vielen Schulprojekten, die man im Netz findet, werden Messwerte oder sonstige Daten durch farbige LEDs angezeigt oder auf einem Display ausgegeben. Das geht natürlich auch mit Tönen oder Sprache. Dabei schließen die akustische und die optische Lösung einander nicht aus. Ebenso, wie sich ein Computerbildschirm und ein Screen Reader nicht gegenseitig ausschließen. Beide Lösungen können zu einem, eben inklusiven, Gesamtergebnis führen.
Ich halte Projekte für geeignet, bei denen sich etwas bewegt oder etwas Fühlbares gemessen wird, etwa Druck, Neigung oder Wind. So können Blinde die Wirkung ihrer Arbeit kontrollieren, indem sie den gemessenen Zustand ändern und die Reaktion des Gerätes prüfen.
Die Bauteile sollten vorsortiert werden, damit blinde Schüler*innen unabhängig darauf zugreifen können. Ich empfehle ein Aufbewahrungssystem mit 3D gedruckten Profilschriftetiketten. So haben auch sehende Schüler*innen den Überblick und müssen nicht suchen.
Das Board und die Bauteile sollten Blinden vorab erklärt bzw. in die Hand gegeben werden, damit sie sie später ertasten können.
Damit Blinde sich auf dem Board orientieren können, sollte die Anordnung der Pins in Textform oder einer Tabelle festgehalten werden. Wenn man z.B. ein Jumper-Kabel an GND auf der rechten Seite anschließen möchte, guckt man in der Tabelle nach und stellt fest, es ist der vierte Pin von oben. Dann zählt man ab.
Eine Excel-Tabelle für den Uno R3 habe ich im Artikel über dieses Board verlinkt.
Menschen mit sehr sensiblen Fingerspitzen können die Pins, also die Löcher für die Steckkontakte, eventuell erfühlen.
Alternativ können die Löcher abgezählt werden, indem man mit der Steckerspitze auf der Leiste entlangwandert.
Das Abzählen der Pins mit der Steckerspitze muss gezeigt und ggf. geübt werden.
Für die Orientierung auf einem Breadboard würde ich die ganze Klasse das von mir beschriebene Koordinatensystem nutzen lassen.<
Natürlich sollen die sehenden Schüler*innen gerne farbige Kabel nutzen, um den Überblick zu behalten. Gleichwohl sollten auch sie die Koordinaten nutzen, um mit blinden Mitschüler*innen über den Schaltplan zu kommunizieren.
Je größer allerdings das Breadboard, desto anstrengender wird der Umgang mit den Koordinaten. Wenn man wiederholt 20-30+ Zeilen abzählen muss, verliert man die Lust. Zur Erleichterung kann man das Board mit Steckbrücken in Sektoren einteilen. Die Steckbrücken sollten die Breite des Boards oder einer Zeile überspannen und dienen nur zur taktilen und visuellen Orientierung.
Wie ich im Artikel zur Begriffserklärung erwähnt habe, sollten Bauteile beschafft werden, die Anschlussfertig sind, also über DupontStecker oder genügend lange Beinchen verfügen. Wer erst crimpen muss, um mit Arduino loslegen zu können, wird schnell die Lust verlieren. Im Übrigen geht dadurch viel Projektzeit verloren.

Das erste Arduino-Experiment

Beitrag von Robbie Sandberg Site Admin » 24.10.2023, 13:19

Das Einfachste, was man mit Arduino machen kann, ist ein Bauteil an das Board anzuschließen und einen Beispiel-Sketch auf das Board hochzuladen, der das Bauteil irgendetwas machen lässt. Dann hat man schon einmal die grundlegenden Arbeitsschritte durchlaufen und hat ein erstes Erfolgserlebnis.
Sehende machen das mit der auf dem Board verbauten LED, müssen also nicht mal etwas anschließen. Wir machen das mit einem Piezo-Summer.
Ein Starter-Kit enthält üblicherweise einen Piezo-Summer. Man kann ihn taktil gut von anderen Bauteilen unterscheiden. Er ist rund und etwa so groß wie eine Fingerspitze. An der Unterseite fühlt man zwei Beinchen. Das sind die Anschlüsse für die Jumper-Kabel.
Da einige Stater-Kits keine Jumper-Kabel mit Buchsen beinhalten, muss man eventuell zusätzlich ein Set Kabel bestellen. Achtet darauf, dass das Set Buchse-auf-Stecker-Kabel enthält, in manchen Fällen ist auch von weiblich-auf-männlich die Rede. Ich erwähne das nur, weil es manchmal so in der Produktbeschreibung steht. Da Kabel aber keinen Sex haben, sollte man lieber von Buchsen und Steckern sprechen.
Wenn man keine Kabel mit Buchsen hat, kann man alternativ die Schaltung auch mit Hilfe des Breadboards stecken, das dem Stater-Kit beiliegt. Das ist aber etwas schwieriger. Hier zunächst die Vorgehensweise mit Buchsen und Steckern.
Jumper-Kabel kommen meist als Matten, von denen man einzelne oder auch mehrere Kabel abziehen kann, so ähnlich, wie man bei Lakritzschnecken die beiden Stränge auseinanderziehen kann.
Findet die zwei äußersten Kabel mit Buchsen und zieht sie von der Matte ab. Wenn ihr sie zusammenlasst, habt ihr ein Kabelpaar für den Summer, statt zweier Einzelkabel. Das macht die Sache übersichtlicher, besonders wenn man später mit vielen Kabeln arbeitet.
Steckt die zwei Buchsen auf die Beinchen des Summers.
Steckt ein Kabel an D8 und eins an GND.
Schließt das Board an den Computer an (ein USB-Kabel liegt dem Starter-Kit bei).
Wenn das Board neu ist, tut sich nach dem Anschließen nichts, weil noch kein Code darauf ist.
Startet die IDE, (den Link zur Installationsdatei gibt’s im betreffenden Artikel).
Jetzt müsst ihr im Menü Werkzeuge zuerst das Board und dann die Schnittstelle auswählen. Näheres ebenfalls im o.g. Artikel.
Dann geht im Dateimenü in das Untermenü Beispiele und dort ins Untermenü 02.Digital.
Wählt hier den Sketch ToneMelody aus.
Wenn der Sketch geladen ist, könnt ihr mit der Schnellnavigationstaste e zum Editor springen und mit Enter den Formularmodus des Screen Readers aktivieren. Versucht, anhand der Kommentarzeilen im Code zu verstehen, was passiert. Wenn ihr rauskriegt, wie die Melodie zusammengesetzt wird, könnt ihr beim nächsten Mal eine eigene Melodie codieren.
Drückt Escape, um den Editor zu verlassen und dann Ctrl-u, um den Code aufs Board hochzuladen.
An der unteren Bildschirmzeile (Ctlr-Ende) könnt ihr die Statusmeldungen verfolgen.
Sollte es keine Reaktion geben, zieht das USB-Kabel ab und verbindet es erneut.

Alternativer Anschluss des Summers über das Breadboard:
Wenn ihr keine Kabel mit Buchsen habt, steckt den Summer auf das Breadboard, so dass jedes Beinchen in einer eigenen Zeile steckt. Zum Layout des Breadboards lest zunächst den betreffenden Artikel.
Dann steckt je ein Jumperkabel in die Zeilen, in denen die Beinchen stecken und steckt die anderen Enden der Kabel an D8 und GND an.
Achtung! Diese Methode funktioniert nur, wenn die Beinchen des Summers lang genug sind, um im Breadboard Halt zu finden.

Mit Arduino einen Lichtmelder bauen

Beitrag von Robbie Sandberg Site Admin » 25.10.2023, 16:09

Ein Lichtmelder wandelt Helligkeit in Töne um. Je mehr Licht, desto höher der Ton.
Ihr kennt das als Hilfsmittel, mit dem man prüfen kann, ob in einem Raum Licht brennt, ob es draußen hell ist oder ob eine LED an einem Gerät blinkt.
Einen Lichtmelder zu bauen, eignet sich besonders gut für den schulischen Einstieg, weil das Resultat einen praktischen Nutzen hat. Man kann es mit nachhause nehmen und verwenden. Aber auch für den privaten Einstieg ist das ein geeignetes Projekt.
Natürlich bekommt man einen Lichtmelder für wenig Geld im Hilfsmittelhandel, aber wenn man ihn selbst baut, kann man bestimmen, wie er klingt, welchen Frequenzbereich er abdeckt und wie er aussieht. Man kann sich ein originelles Gehäuse ausdenken und ihn verschenken. Ich habe meinen z.B. in eine kleine Pringles-Dose eingebaut.

Funktionsweise:
Das entscheidende Bauteil ist ein lichtempfindlicher Widerstand, Englisch Light Dependant Resistor (LDR). Je mehr Licht auf ihn fällt, desto geringer der Widerstand. Der LDR wird an 5V angeschlossen, erhält also durchweg fünf Volt. Das andere Ende wird an A0 angeschlossen. Wie viel Volt dort ankommen, hängt von der Lichteinstrahlung ab.
Was bei A0 ankommt wird gemessen und in einen Ton umgewandelt, der an D10 ausgegeben wird.
Das geht mit der Funktion map. Die Funktion siedelt den gemessenen Wert zwischen 0 und 1023 an, der Spanne vom niedrigstmöglichen zum höchstmöglichen Wert. Dieser Abstand, 0 zu 1023, wird dann einem Frequenzbereich zugeordnet. Dieser ist frei einstellbar. Dann wird der Messwert in der ihm entsprechenden Frequenz ausgegeben.
In meinem Sketch geht der Frequenzbereich von 50 bis 1300 Hz. 50 Hz bedeutet also, dass kein Licht auf den LDR fällt.
Wenn jemand tiefe Frequenzen schlecht hören kann, dann wählt man einfach eine höhere Startfrequenz. Das Gleiche gilt natürlich für die Obere Grenze. Probiert aus, was gut klingt und was ihr gut hören könnt.
Anmerkung: Der LDR reagiert nur auf Licht, das direkt auf ihn fällt. Befindet sich zum Beispiel der eigene Körper zwischen dem Lichtmelder und einer Lichtquelle, wird nur die tiefste Frequenz wiedergegeben. Um festzustellen, ob es wirklich kein Licht gibt oder ob es verdeckt ist, kann man sich drehen oder den Lichtmelder schwenken.

Materialliste:
  • 1 Arduino Uno R3
  • 1 kleines Breadboard
  • 1 kleiner Lautsprecher
    Lautsprecher für Kleingeräte gibt es im Handel. Ich empfehle ausdrücklich, keinen Piezo-Lautsprecher zu verwenden. Piezo-Lautsprecher erzeugen Obertöne, weswegen die tatsächliche Frequenz des Signals schwer einzuschätzen ist.
  • 1 Lichtwiderstand (LDR)
  • 1 Widerstand 10 kO
  • 1 Batterie 9V
  • 1 Bateriefach oder -Clip
  • 2 Jumper-Kabel männlich-zu-männlich
  • 1 Taster
Wichtig! Die Schaltungen werden mit sogenannten Dupont-Steckern gesteckt. Anzuschließende Bauteile wie Lautsprecher, Batterie-Clip und Taster sollten Dupont-Stecker oder Beinchen für den Anschluss haben. Die Beinchen müssen lang genug sein, um in einer Dupont-Buchse zu halten.

Der Schaltplan:
  • Die Batterie wird mit dem Pluspol über einen Taster an VIN und mit dem Minuspol an GND angeschlossen.
    Der Pluspol ist der kleinere der beiden Anschlüsse bei einer 9-Volt-Batterie. Verwendet man einen T-Clip, also einen wo das Kabel mittig austritt, lässt sich ertasten, welcher Kabelstrang zu welchem Pohl gehört.
  • Von der Batterie geht der Pluspol auf das Breadboard zu A5.
  • Von B5 geht ein Taster auf das Hauptboard zu VIN.
  • Der Minuspol der Batterie geht zu GND neben VIN.
  • Der Lichtwiderstand (LDR) geht von V5 zum Breadboard auf A1.
  • Ein Jumper-Kabel verbindet den LDR mit Analog-Pin 0, es geht also von B1 auf dem Breadboard zu A0 auf dem Hauptboard.
  • Der 10-kO-Widerstand wird ebenfalls an den LDR angeschlossen, geht also auf dem Breadboard von C1 zu C3.
  • Von hier geht ein Jumper-Kabel an den Masseanschluss. Es geht also von D3 auf dem Breadboard zu GND auf dem Hauptboard.
An der Linken Seite des Boards stecken jetzt fünf Kabel oder Drähte. Von oben gezählt, der LDR an 5V, das Kabel vom Breadboard an GND, der Minuspol der Batterie an GND, der Pluspol via den Taster an VIN und das zweite Kabel vom Breadboard an A0.
Auf dem Breadboard stecken der LDR, ein Jumper-Kabel und der 10-kO-Widerstand in Zeile 1.
In Zeile 3 stecken der 10-kO-Widerstand und das zweite Jumper-Kabel.
In Zeile 5 stecken die Batterie und der Taster.
Ich habe jeweils eine Zeile freigelassen, damit es nicht so fummelig ist und um auszuschließen, dass Drähte sich berühren. Man kann natürlich andere Abstände wählen.
Auf der rechten Seite wird der Lautsprecher an D10 und an GND angeschlossen.

Jetzt wird der Sketch, den ich hier zum Download bereitstelle, in die IDE geladen. Dazu wird der Ordner Lichtmelder_Ton mit der Datei Lichtmelder_Ton.ino in den Arduino-Ordner in den eigenen Dokumenten verschoben. Jetzt findet man den Sketch im Dateimenü unter Sketchbook.
(1.11 KiB) Noch nie heruntergeladen

Mit Arduino Audio wiedergeben

Beitrag von Robbie Sandberg Site Admin » 25.01.2024, 11:01

Um Audiodateien wiederzugeben, braucht man ein Speichermedium. Der Speicher auf dem Arduino Board ist viel zu klein für Audio.
Eine Möglichkeit ist, einen SD-Kartenleser an das Board anzuschließen. Da dieser aber keine Audiofuntionalität hat, müsste man die Verarbeitung des Materials im Code über das Boad regeln.
Statt dessen nutze ich ein Bauteil, dass zum Abspielen vom Audiodateien konzipiert ist.
Der DFPlayerMini MP3 ist ein Modul mit 16 Pins und einem Einschub für eine Mikro-SD-Karte. Es erinnert an einen Käfer mit 8 Beinchen an jeder Seite.
An das Modul selbst wird nichts angeschlossen. Statt dessen steckt man es auf ein Breadboard. Im Artikel über Breadboards habe ich erklärt, dass alle Kontakte in einer Zeile zusammengeschaltet sind. Wenn das Modul auf dem Breadboard steckt, steckt jeder Pin in einer eigenen Zeile. Was in diese Zeile gesteckt wird, ist an den betreffenden Pin angeschlossen.
Das modul sollte so aufgesteckt werden, dass die ersten zwei Pins an der kurzen Seite mit dem Kartenschacht, sozusagen die Vorderbeinchen des Käfers, in der ersten Zeile des Breadboards stecken. So lassen sich die den Pins zugehörigen Löcher verlässlich abzählen.
Der DFPlayer Mini ist so ausgelegt, dass er auch ohne Arduino Board betrieben werden kann. Er hat Pins zum Steuern der Wiedergabe, also vor, zurück, lauter, leiser. Man könnte ihn nur mit einer Stromquelle, einem Lautsprecher und zwei Tastern betreiben. Wenn man aber bestimmen will, wann welche Datei abgespielt wird, braucht man zusätzlichen Code und der kommt vom Arduino Board.
Es gibt mehrere Bibliotheken für den DFPlayerMini. Für mich hat sich die Bibliothek DFRobotDFPlayerMini bewehrt.
Für die Kommunikation zwischen Board und Player wird der RX-Pin des Players an den TX-Pin des Boards - und der TX-Pin des Players an den RX-Pin des Boards angeschlossen.
Zwischen TX auf dem Board und RX beim Player sollte ein 1 K Widerstand eingebaut werden, um den RX-Pin nicht zu überlasten.
Da der Lautsprecher direkt an den Player angeschlossen wird, lässt sich die Lautstärke nicht über das Board kontrollieren. Man hat aber mit der Volume-Methode die Möglichkeit, die Lautstärke im Code einzustellen.
Eine weitere, fortgeschrittenere Möglichkeit ist, einen Pre-Amp mit Klinkenbuchse und Lautstärkeregler an die DAC-Pins anzuschließen.

Pin-Belegung des DFPlayerMini MP3:
Die Beschreibung der Lage der Pins und ihrer Funktionen geht davon aus, dass das Modul mit den Pins nach unten und dem Karteneinschub zum eigenen körper hin ausgerichtet ist, wie ein Käfer, der auf euch zugekrabbelt kommt. In dieser Position ist Pin 1 hinten links. Dann wird an der linken Seite bis 8 gezählt und rechts vorne geht es mit 9 weiter, 16 ist dann hinten rechts.
1. VCC - Stromzufuhr
2. RX - Serieller Input
3. TX - Serieller Output
4. DAC - Rechter Output-Kanal (Digital-Analog-Wandler
5. DAC - Linker Output-Kanal (Digital-Analog-Wandler
6. SPK2 - Direkter Lautsprecheranschluss
7. GND
8. SPK1 - Direkter Lautsprecheranschluss
9. IO1 - Trigger port 1 kurzer Druck = voriger Titel, langer Druck = leiser
10. GND
11. IO2 - Trigger port 2 kurzer Druck = nächster Titel, langer Druck = lauter
12. ADKEY1 - AD Port 1 Spiele ersten Titel
13. ADKEY2 - AD Port 2 Spiele fünften Titel
14. USB+ - USB+ DP
15. USB - USB-DM
16. BUSY - Abspielstatus, low = spielt, high = spielt nicht

Mit Arduino einen akustischen Spielwürfel bauen

Beitrag von Robbie Sandberg Site Admin » 25.01.2024, 17:40

Der Akustische Spielwürfel spricht auf Knopfdruck einen zufällig generierten Würfelwert, beim klassischen Würfel also eine Zahl von 1 bis 6.
Wozu das? Nun, erstmal schützt der akustische Würfel vor Schummeln, weil die Zahl für alle Hörbar angesagt wird. Wenn blinde und sehende Kinder z.B. Mensch ärgere dich nicht spielen, wird ja doch schon mal gemogelt.
Weiterhin nützt der akustische Würfel, wenn man keine taktilen Würfel hat oder lesen kann.
Ein Pluspunkt ist, dass die angesagten werte beliebig angepasst werden können. Wenn man z.B. einen 20-Seitigen Würfel für ein Rollenspiel braucht, müsste man einen taktilen Würfel 3D-Drucken. Den akustischen Würfel hat man ratz fatz umgestellt.
Natürlich geht das mit jeglicher Art von Würfeln. In manchen Spielen, speziell für kleinere Kinder, gibt es Würfel mit Bildern, z.B. mit Bauernhoftieren. Dann speichert man im akustischen Würfel eben Dateien mit Tiernamen, statt mit Zahlen.
Wenn man Spiele mit verschiedenen Würfeln hat, kann man für jedes Spiel ein Array im Code hinterlegen und die jeweils nicht benötigten Arrays auskommentieren. Möchte man wechseln, muss man nur kurz den Würfel am Rechner anschließen, im Code das aktuelle Array auskommentieren, das Benötigte aktivieren und hochladen.

Funktionsweise:
Das wichtigste Teil der Schaltung ist ein MP3-Player-Modul, speziell der DFPlayerMini MP3. Dieser wird mit einer Mikro-SD-Karte bestückt, auf der die benötigten Dateien gespeichert sind.
Die Zahlen von 1 bis 6 oder sonst einer Würfeldimension müssen aufgesprochen werden. Wenn man mit Kindern spielt, finden die es vielleicht lustig, selbst die Zahlen zu sprechen.
Die Zahlen müssen jeweils als wav oder mp3 Datei gespeichert werden, im Format 0001.wav, 0002.wav usw... Auch wenn die Dateien Tiernamen oder sonstige Wörter enthalten, müssen sie wie beschrieben nummeriert sein, damit sie indiziert werden können.
Ich habe zusätzlich die Datei 0007.wav mit einen Würfelgeräusch erstellt.
Die Dateien werden in das Wurzelverzeichnis der SD-Karte kopiert.
Wenn der Taster betätigt wird, wird zuerst die Datei 0007.wav mit dem Würfelgeräusch wiedergegeben.
Dann wird eine zufällige Datei ermittelt und abgespielt.
Lässt man den Taster nach der ersten wiedergegebenen Zahl los, entspricht das dem Wurf mit einem Würfel. Für Spiele mit mehreren Würfeln wird der Taster gedrückt gehalten, bis so viele Zahlen wiedergegeben wurden, wie es Würfel im Spiel gibt.
Die Zufallsauswahl wird nach jeder Zahl wieder auf die Gesamtzahl der Dateien angewendet. Es ist also möglich, Pasche zu werfen.

Was ist ein Array:
Dazu muss man wissen, was eine Variable ist. Eine Variable ist ein virtueller Container, dem man an verschiedenen Stellen im code mit einem beliebigen Wert füllen kann. Ein einfaches Beispiel: Ein Sensor misst, ob es dunkel oder hell ist. Der gemessene Zustand wird als Meldung ausgegeben. Im Code deklariert man also eine Variable namens Helligkeit. Dann schreibt man eine Wenn-Dann-Anweisung, die den gemessenen Wert prüft und das Ergebnis an die Variable übergibt.
Wenn der Zustand = 0 ist, dann erhält die Variable den Wert „dunkel“. Wenn der Zustand = 1 ist, erhält die Variable den Wert „hell“.
Die Variable wird also abhängig vom Zustand mit dem Wort dunkel oder dem Wort hell gefüllt.
In der Meldung lässt man nun die Variable bzw. ihren Inhalt anzeigen. Message Box Helligkeit.
Eine Variable kann immer nur mit einem Wert zurzeit gefüllt werden. Ein Array dagegen kann viele Werte gleichzeitig enthalten. In diesem Fall die Zahlen von 1 bis 6. Damit werden die in Frage kommenden Dateien für die Zufallsauswahl festgelegt.
möchte man einen 20-seitigen Würfel emulieren, trägt man Zahlen von 1 bis 20 ein. Um schnell zwischen den Würfelarten wechseln zu können, schreibt man zwei Arrays in den Code und kommentiert das nicht Benötigte mit zwei führenden Schrägstrichen aus. Möchte man wechseln, muss man nur die Schrägstriche umsetzen.

Materialliste:
- 1 Arduino Uno R3 oder Nano
- 1 kleines Breadboard (2 falls ein Nano verwendet wird)
- 1 kleiner Lautsprecher
- 1 Widerstand 1 kO
- 1 Batterie 9V
- 1 Batteriefach oder -Clip
- 5 Jumper-Kabel (Stecker zu Stecker)
- 1 Taster

Der Schaltplan:
Die Belegung der Pins des Players entnehmt bitte dem Artikel über DFPlayerMini. Für den akustischen Würfel brauchen wir nur die linke Seite des Moduls.
- Die Batterie wird mit dem Pluspol über einen Taster an VIN und mit dem Minuspol an GND angeschlossen.
- V5 auf dem Board wird an VCC beim Player angeschlossen.
- TX auf dem Board wird mit RX beim Player verbunden.
Diese Verbindung geht über einen 1 K Widerstand. Auf dem Breadboard wo der Player steckt, muss also in einer freien Zeile das Kabel von TX mit dem Widerstand verbunden werden, in einer weiteren Zeile der Widerstand mit dem Kabel, das zu RX geht.
- RX auf dem Boardwird mit TX beim Player verbunden.
- GND geht zu GND
- Der Lautsprecher wird an SPK1 und GND angeschlossen.

Hier stelle ich den Sketch zum Download bereit. Für Leute, die Schwierigkeiten haben die gesprochenen Zahlen aufzunehmen, stelle ich auch meine wav-Dateien von 1 bis 6 plus Würfelgeräusch zur Verfügung.
(1.14 KiB) Noch nie heruntergeladen
(850.13 KiB) Noch nie heruntergeladen

Antworten