Umsetzung eines Arduino-Projektes
Über Arduinos wird viel geschrieben, es gibt unzählige Seiten mit Anleitungen zur Programmierung und ebenso viele Seiten mit Beispielprojekten.
Wenn man nicht gerade ein elektronischer Hardwarexperte, oder Softwarschreiber ist, fällt es schwer, eine eigene Idee in die Tat umzusetzen.
Wie fange ich an, worauf muß ich achten, was brauche ich, wie sieht die Zusatzbeschaltung aus?
Ziel des Themas
Ich versuche in diesem Thema zu beschreiben, wie ich selbst an die Umsetzung einer Idee herangehe. Das macht jeder anders und ob meine Herangehensweise die Richtige ist?
Ich weiß es nicht, zumindest kommt immer etwas am Ende heraus. Ich werde nicht bei allem bei Adam und Eva anfangen und auch nicht großartig Grundlagen aufarbeiten, dazu gibt es genügend Material hier im RCMP-Arduino-Forum oder im Internet. Man muß einfach mal danach suchen und lesen.
Projektidee
Am Anfang steht immer die Idee dafür, was man machen möchte. Im Grunde geht es immer darum, dass man irgendeine physikalische Größe erfasst oder misst und daraus Schaltfunktionen ableitet, im weitesten Sinne also eine Steuerung. Kurz gesagt, was will ich messen/überwachen, was soll dann passieren und wie programmiere ich das.
Daten erfassen
Für eine Steueraufgabe ist es immer erforderlich eine Eingangsgröße zu erfassen. Dafür gibt es unterschiedliche Sensoren, je nachdem, welche physikalische Größe gemessen werden soll.
Am Arduino kommt dann stets ein digitales Signal (An oder Aus) oder ein analoges Signal (Spannung) an. Der "normale" Arduino ist nur in der Lage Spannungen bis maximal +5V zu verarbeiten, sonst geht er kaputt. Einige Sonderformen oder Artverwandte des Arduinos können sogar nur maximal 3,3V vertragen. Ich beschränke mich, der Einfachheit halber, aber auf die 5V Varianten (Uno, Nano, Mega usw.).
Projektierung Schritt 1:
Im ersten Schritt sollte also klar sein, welche physikalische Größe man messen/erfassen möchte. Der Arduino ist leider nur in der Lage Spannungen/Pegel zu messen bzw. zu erkennen. Um andere Größen messen können wie z.B. Helligkeit, Temperatur, Magnetismus, Feuchtigkeit, Farben usw. muß eine Art Umsetzer her, der daraus eine messbare Spannung oder Digitalpegel macht.
Dafür gibt es, je nach physikalischer Größe, ein Vielzahl an Sensoren, die bereits für den direkten Einsatz am Arduino konzipiert sind, d.h., man kann sie direkt an einen der Arduinoeingänge mit einem Kabel anschließen. Diese Sensoren sind dann oft auf einer Platine angebracht, die eine zusätzliche Beschaltung mit weiteren elektronischen Bauteilen besitzt, um dem Arduino verarbeitbare elektrische Signale an den Eingängen liefern zu können. Nicht selten sind das auch Schaltungen, die dem Arduino kein einfaches An-Aus Signal, oder eine Spannung von 0 bis 5V liefern, sondern die Messwerte über eine serielle Kommunikation übermitteln. Wie das funktioniert ist aber nicht Bestandteil diese Themas.
Projektierung Schritt 2:
Wenn Signale verarbeitet wurden, bedarf es einer Möglichkeit darauf zu reagieren. Das können Schalt- und Steuerfunktionen, oder auch nur eine reine "Anzeige" (Display, Signal LED, akustische Ausgabe) sein. Ich muß mir also überlegen, in welcher Form der Arduino mit der Außenwelt in kontakt treten soll. Möchte ich irgendetwas einschalten (Motor, Lampe), oder soll mir der Arduino nur eine Information mitteilen (Display, Kontrolleuchte, sonstige Anzeigemöglichkeit, akustisches Signal, Speicherkarte).
Projektierung Schritt 3:
Wenn Messwerte zur Verfügung stehen, müssen diese programmtechnisch erfasst, verarbeitet und einer Ausgabe zugeführt werden. Das erfolgt entweder in einem Programm, dass man von Grund auf selbst schreibt, oder indem man bereits vorhandene Beispielprogramme auf eigene Bedürfnisse anpasst, erweitert, oder mehrere Beispielprogramme miteinander kombiniert.
Tipp:
Meine Taktik dabei ist immer schreitweise vorzugehen, d.h. ich probiere in ganz einfachen Programmen die Sensoren oder Ausgabegeräte einzeln, der Reihe nach aus. Damit behalte ich die Übersicht und finde Programmfehler schneller. Wenn jeder einzelne Sensor und jedes einzelne Ausgabegerät sicher funktioniert, beginne ich die einzelnen Komponenten nach und nach zu einem Gesamtsystem zusammenzufügen. Erst wenn jede neu entstandene Kombination zufriedenstellend funktioniert, kommt das nächste Teil, oder Funktion hinzu. Dabei nicht vergessen, jeden (funktionierenden) Zwischenstand einer Programmversion mit einem Sinnvollen Namen zu speichern und im Quelltext des Programms kurz mit einem Kommentar zu beschreiben. Wenn man nämlich bei der 5. Zwischenversion angekommen ist, weiß man oft nicht mehr, was man sich bei Version 2 gedacht hat. Das erleichtert auch einen Schritt zurück (Fall Back), wenn man sich vergallopiert hat und zu einer funktionierenden Version zurückkehren möchte.
Angenehmer Nebeneffekt, die Zwischenversionen können als Basis für eine neue abgewandelte Anwendung direkt verwendet werden, weil man ja genau weiß, dass sie funktionieren.
Über Arduinos wird viel geschrieben, es gibt unzählige Seiten mit Anleitungen zur Programmierung und ebenso viele Seiten mit Beispielprojekten.
Wenn man nicht gerade ein elektronischer Hardwarexperte, oder Softwarschreiber ist, fällt es schwer, eine eigene Idee in die Tat umzusetzen.
Wie fange ich an, worauf muß ich achten, was brauche ich, wie sieht die Zusatzbeschaltung aus?
Ziel des Themas
Ich versuche in diesem Thema zu beschreiben, wie ich selbst an die Umsetzung einer Idee herangehe. Das macht jeder anders und ob meine Herangehensweise die Richtige ist?
Ich weiß es nicht, zumindest kommt immer etwas am Ende heraus. Ich werde nicht bei allem bei Adam und Eva anfangen und auch nicht großartig Grundlagen aufarbeiten, dazu gibt es genügend Material hier im RCMP-Arduino-Forum oder im Internet. Man muß einfach mal danach suchen und lesen.
Projektidee
Am Anfang steht immer die Idee dafür, was man machen möchte. Im Grunde geht es immer darum, dass man irgendeine physikalische Größe erfasst oder misst und daraus Schaltfunktionen ableitet, im weitesten Sinne also eine Steuerung. Kurz gesagt, was will ich messen/überwachen, was soll dann passieren und wie programmiere ich das.
Daten erfassen
Für eine Steueraufgabe ist es immer erforderlich eine Eingangsgröße zu erfassen. Dafür gibt es unterschiedliche Sensoren, je nachdem, welche physikalische Größe gemessen werden soll.
Am Arduino kommt dann stets ein digitales Signal (An oder Aus) oder ein analoges Signal (Spannung) an. Der "normale" Arduino ist nur in der Lage Spannungen bis maximal +5V zu verarbeiten, sonst geht er kaputt. Einige Sonderformen oder Artverwandte des Arduinos können sogar nur maximal 3,3V vertragen. Ich beschränke mich, der Einfachheit halber, aber auf die 5V Varianten (Uno, Nano, Mega usw.).
Projektierung Schritt 1:
Im ersten Schritt sollte also klar sein, welche physikalische Größe man messen/erfassen möchte. Der Arduino ist leider nur in der Lage Spannungen/Pegel zu messen bzw. zu erkennen. Um andere Größen messen können wie z.B. Helligkeit, Temperatur, Magnetismus, Feuchtigkeit, Farben usw. muß eine Art Umsetzer her, der daraus eine messbare Spannung oder Digitalpegel macht.
Dafür gibt es, je nach physikalischer Größe, ein Vielzahl an Sensoren, die bereits für den direkten Einsatz am Arduino konzipiert sind, d.h., man kann sie direkt an einen der Arduinoeingänge mit einem Kabel anschließen. Diese Sensoren sind dann oft auf einer Platine angebracht, die eine zusätzliche Beschaltung mit weiteren elektronischen Bauteilen besitzt, um dem Arduino verarbeitbare elektrische Signale an den Eingängen liefern zu können. Nicht selten sind das auch Schaltungen, die dem Arduino kein einfaches An-Aus Signal, oder eine Spannung von 0 bis 5V liefern, sondern die Messwerte über eine serielle Kommunikation übermitteln. Wie das funktioniert ist aber nicht Bestandteil diese Themas.
Projektierung Schritt 2:
Wenn Signale verarbeitet wurden, bedarf es einer Möglichkeit darauf zu reagieren. Das können Schalt- und Steuerfunktionen, oder auch nur eine reine "Anzeige" (Display, Signal LED, akustische Ausgabe) sein. Ich muß mir also überlegen, in welcher Form der Arduino mit der Außenwelt in kontakt treten soll. Möchte ich irgendetwas einschalten (Motor, Lampe), oder soll mir der Arduino nur eine Information mitteilen (Display, Kontrolleuchte, sonstige Anzeigemöglichkeit, akustisches Signal, Speicherkarte).
Projektierung Schritt 3:
Wenn Messwerte zur Verfügung stehen, müssen diese programmtechnisch erfasst, verarbeitet und einer Ausgabe zugeführt werden. Das erfolgt entweder in einem Programm, dass man von Grund auf selbst schreibt, oder indem man bereits vorhandene Beispielprogramme auf eigene Bedürfnisse anpasst, erweitert, oder mehrere Beispielprogramme miteinander kombiniert.
Tipp:
Meine Taktik dabei ist immer schreitweise vorzugehen, d.h. ich probiere in ganz einfachen Programmen die Sensoren oder Ausgabegeräte einzeln, der Reihe nach aus. Damit behalte ich die Übersicht und finde Programmfehler schneller. Wenn jeder einzelne Sensor und jedes einzelne Ausgabegerät sicher funktioniert, beginne ich die einzelnen Komponenten nach und nach zu einem Gesamtsystem zusammenzufügen. Erst wenn jede neu entstandene Kombination zufriedenstellend funktioniert, kommt das nächste Teil, oder Funktion hinzu. Dabei nicht vergessen, jeden (funktionierenden) Zwischenstand einer Programmversion mit einem Sinnvollen Namen zu speichern und im Quelltext des Programms kurz mit einem Kommentar zu beschreiben. Wenn man nämlich bei der 5. Zwischenversion angekommen ist, weiß man oft nicht mehr, was man sich bei Version 2 gedacht hat. Das erleichtert auch einen Schritt zurück (Fall Back), wenn man sich vergallopiert hat und zu einer funktionierenden Version zurückkehren möchte.
Angenehmer Nebeneffekt, die Zwischenversionen können als Basis für eine neue abgewandelte Anwendung direkt verwendet werden, weil man ja genau weiß, dass sie funktionieren.
Zuletzt bearbeitet: