Open Source im professionellen Einsatz
Linux-Magazin 01/2014
© Katrin Bpunkt, Photocase.com

© Katrin Bpunkt, Photocase.com

Bastelprojekt mit der vielseitigen Arduino-Platine

Wie von Geisterhand

Zauberhaft einfach: Mit ein paar Zeilen selbst geschriebener Firmware und einem simplen Perl-Skript lässt Perlmeister Schilli einen seiner Linux-Rechner mit angestöpseltem Arduino-Board elektrische Geräte jeder Art per Relais ein- und ausschalten.

692

Jeden morgen um vier Uhr früh schaltet das Ubuntu-System in meinem Büro einen uralten Debian-PC in der Ecke mit 6 TByte Plattenplatz an, um per Rsync ein Backup wichtiger Daten zu ziehen. Dazu stellt es per Heim-Vernetzungsprotokoll X10, das in den USA populär ist, über das Stromnetz den Strom am Backup-PC an. Dieser fährt selbsttätig hoch, da in seinem Bios die Option »After Power Loss« auf »On« gesetzt ist. Sobald der SSH-Server des gestarteten Debian-Systems antwortet, startet das Backup. Nach dem Schlussakkord fährt der PC wieder herunter und der steuernde Rechner entzieht ihm wieder den Strom.

Da mein X10-Setup aber aus unerfindlichen Gründen in geschätzt einem von 100 Fällen versagt, habe ich die PC-an/PC-aus-Steuerung auf ein Arduino-Board (rund 20 Euro) mit angeschlossenem Relaisboard (5 bis 10 Euro) umgestellt. Über den USB-Port schickt der steuernde Ubuntu-Rechner ein Kommando zu dem an einer seriellen Schnittstelle lauschenden Microcontroller.

Dessen Firmware schaltet den Pegel auf einem Ausgangs-Pin um, den ich mit einem von zwei Relais einer extra Platine verbunden habe [2]. Abbildung 1 zeigt die mit einem so genannten Breadboard aufgebaute simple Schaltung, die zu Testzwecken auch noch per Leuchtdiode anzeigt, ob ein bestimmter Ausgangs-Pin des Arduino an oder aus ist.

Das ans Stromnetz angeschlossene Relais zieht mit einem Klicken an, der am anderen Ende des Relais verkabelte Stecker bekommt Netzspannung und der dort eingesteckte Verbraucher erwacht. Das verwendete Relais verträgt bis zu 5 Ampere bei 250 Volt (Abbildung 2).

Abbildung 1: Versuchsaufbau der Schaltung mit Arduino, Leuchtdiode und netzspannungstauglichem Relaisboard.
Abbildung 2: Das Schaltboard mit zwei Relais, die Geräte bis 5 Ampere bei 250 Volt steuern können.

Einfach programmierbar

Anders als Industrie-übliche Microcontroller lässt sich das Arduino-Board direkt über ein USB-Interface programmieren. Ein PC oder Mac schickt kompilierten, C-ähnlichen Code rüber, den der Arduino speichert. Dank seines Urladers läuft diese eingespielte Firmware bis zum Sankt-Nimmerleins-Tag.

Der USB-Port versorgt das Board nicht nur mit Signalen zum Steuern der Firmware, sondern auch mit der nötigen Betriebsspannung zum Betrieb der Elektronikkomponenten. Das Board und die Relaisplatine benötigen also keine externe Spannungsquelle. Nach jedem Kaltboot fängt der Code sofort wieder an zu laufen. Um die Pins des Arduino von einem PC aus an- und auszuschalten, muss auf dem Arduino ein Programm auf Befehle von der USB-Schnittstelle horchen und diese ausführen.

Online PLUS

In einem Screencast demonstriert Michael Schilli das Beispiel: http://www.linux-magazin.de/2014/01/plus

Wenn nicht Stangenware, dann eben Maßanzug

Als Fertiglösung käme statt eines selbst geschriebenen Programms auch Firmata [3] in Betracht, eine freie, generell verwendbare Firmware. Einmal auf den Arduino geladen, erwartet sie Kommandos über das USB-Interface nach dem Firmata-Protokoll, manipuliert auf Anfrage den Strom auf den Pins oder liest ihre Werte aus und liefert Antworten zum anfragenden Hostrechner zurück.

Allerdings operiert das gekaufte Relaisboard von der Firma Sainsmart [2] im Low-Active-Modus, das Relais schnappt also zu, falls die Spannung am Eingang abfällt, und lässt los, falls 5 Volt anliegen. Da Firmata die Ausgangs-Pins aber beim Hochfahren immer auf Low stellt, würde das jedes Mal nach dem Einstöpseln des USB-Steckers den elektrischen Verbraucher einschalten, bevor ein Programm die Kontrolle übernehmen könnte.

Mein selbst geschriebener Arduino-Sketch – so nennt die Arduino-Community Sourcecode für die Firmware – in Listing 1 setzt deswegen in der Funktion »setup()« die Ausgangsspannung am Pin 11 mit

digitalWrite( 11, HIGH );

sofort auf 5 Volt, sobald der Arduino hochfährt. Später, in der Hauptschleife »loop()« , prüft die Methode »available()« des Moduls »Serial« , ob Daten an der seriellen Schnittstelle des Arduino anliegen. Falls ja, liest »Serial.read()« ein anliegendes Byte aus und speichert es in der Variablen »val« . Hat der Host das Zeichen »1« geschickt (Ascii-Code 49), setzt die Firmware Pin 11 auf Low – und auf der dort angeschlossenen Relaisplatine zieht das Relais an.

Listing 1

relay_on_off.ino

01 /* Simple relay controlling firmware
02  * Mike Schilli, 2013 (m@perlmeister.com)
03  */
04
05 void setup() {
06   Serial.begin(9600);
07   pinMode(11, OUTPUT);
08   digitalWrite( 11, HIGH );
09   pinMode(13, OUTPUT);
10   digitalWrite( 13, LOW );
11 }
12
13 void loop() {
14   while( Serial.available() > 0 ) {
15     int val = Serial.read();
16     Serial.print( val );
17     if( val == '1' ) {
18       digitalWrite( 11, LOW );
19       digitalWrite( 13, HIGH );
20     } else {
21       digitalWrite( 11, HIGH );
22       digitalWrite( 13, LOW );
23     }
24   }
25 }

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Der Perl-Screencast zum Linux-Magazin 2014/01

    Zauberhaft einfach: Mit ein paar Zeilen selbst geschriebener Firmware und einem simplen Perl-Skript lässt Perlmeister Schilli einen seiner Linux-Rechner mit angestöpseltem Arduino-Board elektrische Geräte jeder Art per Relais ein- und ausschalten.

  • Arduino verklagt Arduino

    Die Arduino-Gründergruppe um Massimo Banzi geht gegen den Hersteller der Arduino-Boards vor. Dahinter steht ein Richtungsstreit um die Zukunft des Arduino-Projektes.

  • Arduino LLC und Arduino S.R.L legen Streit bei

    Im vergangenen Jahr hatte die die Arduino LLC, nach eigener Meinung Inhaberin der Arduino-Markenrechte, eine Klage gegen Arduino S.R.L, Produzentin der offiziellen Arduino-Boards eingereicht. Nun haben die beiden zerstrittenen Parteien eine Einigung erzielt.

  • Klimaanlagen-Steuerung

    Klimawende im Eigenheim: Linux-Magazin-Autor Gottfried Grosshans macht seine simple Einzonen-Klimaanlage mit smarter Mikrocontroller-Technik bekannt und verwandelt sie in eine kostengünstige Multizonen-Anlage. Dank niedrigen Energieverbrauchs ist sie fast ein Selbstläufer.

  • Artikel-Tipp: Rezension - Arduino-Lernpaket von Franzis

    Die quelloffene Hardware Arduino gewährt einen faszinierenden Einblick in die Welt der Mikrocontroller und elektronischen Schaltungen. Ein passendes Lernpaket von Franzis will Neueinsteigern einen unkomplizierten Zugang eröffnen. Die Zeitschrift LinuxUser hat sich das Lernpaket näher angesehen.

comments powered by Disqus

Ausgabe 01/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.