Archive Page 12



Am 15. September 2012 erscheint die 2. Auflage von Arduino Praxiseinstieg.

Arduino Praxiseinstieg, 2. Auflage

Erweitere Auflage mit 530 Seiten, komplett in Farbe und mit vielen neuen Projekten.

Weather Data from Oregons Scientific Weather Station

Anzeigemodul für Oregon Scientific Wetterstation, Code basiert auf Lösung von Lostbyte.com. Über 433 Mhz-Empfangsmodul werden Daten von Sensoren im Garten abgefragt und auf dem Display darstellt.

Ende Juni 2011 habe ich einen Test von verschiedenen Sensoren für Bodenfeuchtigkeit gestartet. Bei diesem Langzeittest wollte ich 3 verschiedene Typen von Sensoren miteinander vergleichen. Die eingesetzten Typen für die Messung der Feuchtigkeit im Boden sind:

  1. Selbstbausensor mit Nägel
  2. Selbstbausensor mit Gipshüllen
  3. Professioneller Bodensensor

Sensor mit Nägel (links), Gipssensor (rechts), Professioneller Sensor (hinten)

Die Testreihe mit den Sensoren ist in einem kleinen Topf mit Erde untergebracht und wird in unregelmässigen Abständen bewässert. Die von den Sensoren erfassten Daten werden an einen Cosm-Datenfeed gesendet und online dargestellt.

Nach über einem Jahr im Testbetrieb werden nun die einzelnen Sensoren untersucht.

Nagelsensor:
Der Sensor mit 2 Nägel ist eine einfache und kostengünstige Lösung. An den Enden der Metallstifte wurde jeweils ein Draht angelötet, welcher auf die Messschaltung geführt wird. Diese Sensorvariante hatte recht genaue Messwerte, im Vergleich mit dem kommerziellen Sensortyp, geliefert. Der Nachteil dieses Sensors ist aber der chemische Prozess, welcher durch die Metalle im Boden ausgelöst wird und entsprechend Material abträgt. Das Resultat nach einem Jahr sind 2 abgebrochene Stifte, der Sensor ist ausgefallen und konnte keine korrekten Werte mehr liefern.

Nagel-Sensor nach 1 Jahr

nagel-sensor-2-monate
2-Monats-Kurve des Nagelsensors

Gips-Sensor:
Der Gips-Sensor, auch ein Selbstbau-Sensor, hat im Vergleich mit den anderen beiden Sensoren die schlechtesten Messwerte geliefert. Bei Feuchteänderung hat der Sensor viel langsamer reagiert. Auch dem Gips-Sensor sieht man die lange Laufzeit an. Die Aussenhülle des Sensors ist sehr brüchig und Material bröckelt ab. Zusätzlich ist das eine angelötete Anschlusskabel abgebrochen.

Gips-Sensor nach 1 Jahr

gips-sensor-2-monate

2-Monats-Kurve des Gips-Sensors

Bodensensor VG400:
Das einzige kommerzielle Produkt in dieser Messreihe hat den Versuch ohne äusserlich sichtbare Mängel überstanden. Im Vergleich mit den beiden anderen Sensoren hat dieser Typ jeweils am schnellsten auf Änderungen der Feuchtigkeit reagiert.

vg400-sensor-2-monate

Fazit:
Diese 1-jährige Messreihe hat gezeigt, dass  DIY-Sensoren gute Messresultate für die Erfassung der Feuchtigkeit im Boden liefern können. Für einen längeren Einsatz als Feuchtemesser im eigenen Garten müssen die Selbstbaussensoren stabiler und fester aufgebaut werden. Die Anschlusskabel müssen an die Messdrähte angeschraubt und nicht gelötet werden. Der Nagelsensor muss mit einem Schutzschlauch geschützt werden und der Gips-Sensor muss eine feste Aussenhülle bekommen. Um den chemischen Prozess zu minimieren, sollte die Messschaltung jeweils umgepolt werden. Auf diese Weise läuft die Elektrolyse in beide Richtungen.
Neben den Sensoren hat auch das Arduino-Board mit aufgestecktem Ethernet-Shield von Seeedstudio den Dauertest problemlos überstanden. Das Arduino-Board hat dabei alle 60 Sekunden die 3 Messwerte an die Cosm-Plattform gesendet und musste dabei nie neu gestartet oder zurückgesetzt werden.

Am Samstag, 07.07.12 hat im MechArtLab in Zürich ein DIY Workshop zum Thema Internet of Things (IoT) stattgefunden. Die Gruppe der Workshop-Teilnehmer hat in praxisnahen Beispielen Arduino-und BeagleBone-Boards in Betrieb genommen. Zum Schluss wurden Sensordaten aus dem Lab via Ethernet-Verbindung an die IoT-Plattform Cosm gesendet.

Neben den praktischen Übungen wurden Ideen und praktische Erfahrungen ausgetauscht.

Thomas Amberg (Gründer von Yaler) hat den Workshop geleitet und Impressionen publiziert.

The slides from my presentation „Introduction to Arduino“ at the IoT Meetup Zurich.

Download: Introduction to Arduino (PDF, 1.2 MB)

title-iot-meetup-introduction-arduino

Thanks for joining this event!

Testbericht: Arduino Leonardo

Ende Mai 2012 wurde das neuste Arduino Board, der Arduino Leonardo, inklusive der neuen IDE Version 1.0.1 veröffentlicht. Der Arduino Leonardo unterscheidet sich vom Vorgängermodellen hauptsächlich durch den anderen Microcontroller-Typen und die unterschiedliche Bauform des USB-Anschlusses. Beim Arduino Leonardo wird ein ATmega32u4 Microcontroller verwendet, welcher auch die Kommunikation über die USB-Schnittstelle übernimmt. Dadurch konnte der bisher verwendete zusätzliche Controller für die USB-Kommunikation aus dem Design entfernt werden.

Mit dem neuen Microcontroller kann das Leonardo-Board standardmässig als USB-Device, als Maus oder Keyboard, betrieben werden.

Die Firma Boxtec, welche in der Schweiz Arduino-Produkte vertreibt, hat mir freundlicherweise ein Arduino Leonardo Board zum Test zur Verfügung gestellt.
Besten Dank dafür.

Arduino Leonardo Arduino Leonardo

Der Arduino Leonardo wird, wie die anderen Arduino-Boards, in einer formschönen Kartonschachtel geliefert, welche auch direkt als Gehäuse verwendet werden kann.

Das Leonardo-Board hat die gleichen Abmessungen wie das Standardboard Arduino Uno. Optisch fällt auf den ersten Blick auf dass der USB-Stecker kleiner ist, der Reset-Knopf an einem anderen Ort platziert ist und ein Microcontroller mit einer Gehäuseform für die Oberflächenmontage verwendet wurde. Alle technischen Änderungen des Arduino Leonardo sind im Getting-Started-Dokument auf der Arduino-Website übersichtlich aufgelistet.

Voraussetzungen
Für die erfolgreiche Inbetriebnahme und Nutzung des Arduino Leonardo sind folgende Voraussetzungen zu erfüllen:

  • USB-Kabel mit Steckertyp Micro-B
  • installierte Entwicklungsumgebung (IDE) mit Version 1.0.1.

Der USB-Stecker Micro-B ist eine kleinere Bauform als die Bauformen der bisherigen Arduino-Boards. Beim Kauf eines Leonardo sollte somit auch gleichzeitig ein entsprechende Kabel mitbestellt werden.

Die kürzlich freigebene Version 1.0.1 der Arduino-Entwicklungsumgebung unterstützt standardmässig das neue Arduino Leonardo Board. Vor der ersten Inbetriebnahme muss die neue IDE installiert werden.

Inbetriebnahme
Der erste Schritt der Inbetriebnahme ist erwähnt die Installation der IDE mit Version 1.0.1. Die Inbetriebnahme der Hardware des Arduino Leonardo erfolgt auf die gleiche Weise wie bei den früheren Arduino-Boards. USB-Kabel am Arduino Leonardo und am Rechner anschliessen und dann die Anweisungen auf dem Bildschirm befolgen. Beim ersten Anschliessen eines Arduino Leonardo meldet dass System dass ein neuer Treiber installiert werden muss. Üblicherweise versucht das System den Treiber automatisch zu installieren. Mein Windows 7-Rechner hat zwar das neue Board erkannt, konnte den Treiber nicht korrekt installieren.

leonardo-install-1

Gemäss Anleitung zum Arduino Leonardo muss der Treiber in diesem Fall manuell nachinstalliert werden. Im Device Manager (Start>Control Panel>Hardware) kann durch Rechtsklick auf das gelistete Leonardo-Board ein Update der Software (Treiber) gestartet werden. Im anschliessenden Installationsablauf wird keine automatische Treibersuche gewählt, sondern die Auswahl des Treibers von einem spezifischen Pfad durchgeführt. Der Treiber liegt im Ordner /drivers der im ersten Schritt installierten Arduino IDE 1.0.1. Nach Auswahl und Bestätigung des Treiberpfades wird der Leonardo-Treiber installiert.

Nach erfolgreicher Installation meldet die Installationsroutine

leonardo-install-2

Im Gerätemanager wird nun das Arduino Leonardo Board erkannt und kann über den USB-Port genutzt werden.

leonardo-install-3

In der soeben installierten IDE 1.0.1 wird nun der Arduino Leonardo in der Liste der Boards aufgelistet und in den installierten Codebeispielen gibt es unter Punkt 09.USB(Leonardo) einen Ordner mit Beispielen für Maus-und Keyboard-Emulation.

Diese neue USB-Funktionen mit denen man ein Leonardo als Maus, Keyboard oder Joystick verwenden kann, bieten zusätzliche Einsatzmöglichkeiten. Die bereits erwähnten Beispiele liefern dazu dem Anwender einen ersten Eindruck und Beispiele, welche als Grundlage für eigene Anwendungen genutzt werden können.

Anschlussbelegung:
Die Anzahl der Anschlusspins auf den Buchsenleisten und die Position der Buchsenleisten wurde beim Arduino Leonardo nicht geändert. Aber die Anschlussbelegung der einzelnen Pins hat sich aber teilweise geändert und muss bei der Verwendung von einem bestehenden Shield oder beim Einsatz einer Lösung für Arduino Uno beachtet werden.

Nachfolgende Tabelle zeigt die Unterschiede der Pins zwischen Arduino Uno und Arduino Leonardo:

Bezeichnung Uno Leonardo
A06-A11 D4,6,8,9,10,12
PWM D3,5,6,9,10,11 D3,5,6,9,10,11,13
SPI D10,11,12,13 ICSP Stecker
TWI (I2C) A04,05 und SCL, SDA D2,3 und SCL, SDA

Durch die unterschiedliche Anschlussbelegung, speziell des I2C-Bus und der SPI-Schnittstelle, können etliche Standardshields nicht mehr genutzt werden. Zu erwähnen sind hier SD Card Shields und älterer Versionen des Ethernet Shield, welche den SPI-Bus über die Pins 10 bis 13 nutzen.
Nachtrag: das aktuelle Ethernet Shield (Version 6) nutzt den SPI-Bus welcher über den ICSP-Stecker vom Arduino-Board geliefert wird.

Testanwendung:
Meine Testanwendung ist ein kleiner Datenlogger, welche über die serielle Schnittstelle einen Temperaturwert in eine Textdatei schreibt. Das Leonardo Board arbeitet dabei als Keyboard. Auf dem angeschlossenen Rechner muss dazu keine Software installiert werden. Der Datenlogger nutze ich gerade, da ich verschiedene Tests mit Sensoren mache und auf diese Art einfach Messdaten in einer Textdatei speichern kann.

Wie im Getting-Started Guide unter „Good Coding Practice“ beschrieben ist, sollte beachtet werden, dass bei Einsatz des Leonardo als Keyboard, das Programmieren des Boards schwierig sein kann.

if the Mouse or Keyboard library is constantly running, it will be difficult to program your board. Functions such as Mouse.move() and Keyboard.print() will move your cursor…. and should only be called when you are ready to handle them. It is recommended to use a control system to turn this functionality on, like a physical switch.

Um den Logger zu deaktivieren, habe ich dazu einen Schalter an Pin 2 angeschlossen. Im Code wird dieser jeweils abgefragt und, falls der Schalter eingeschaltet ist, wird die Keyboard-Funktionalität aktiviert und Daten geschrieben.

// Schalter abfragen
int buttonState = digitalRead(buttonPin);

// Wenn Signal = HIGH
if (buttonState == HIGH)
 {
  ...
 }

Die komplette Loggerfunktion liest einen Analogsignal von einem LM35 Temperatursensor ein und sendet die Daten an die Textdatei. Nach dem Senden des Temperaturwertes wird mit einer zusätzlichen Keyboard-Anweisung (Strg-s) die Datei gespeichert. Nach einer Verzögerung von 2 Sekunden beginnt die Messung wieder von Anfang an.

const int buttonPin = 2;
float valTemp;
int TempPin = 0;

void setup() {
  // Eingang für Schalter:
  pinMode(buttonPin, INPUT);
  // Keyboard Initialisierung
  Keyboard.begin();
}

void loop()
{
  // Schalter abfragen
  int buttonState = digitalRead(buttonPin);
  // Wenn Signal = HIGH
  if (buttonState == HIGH)
  {
    // Analogwert einlesen
    valTemp = analogRead(TempPin);
    // Umwandlung 0-100 Grad
    valTemp = (5.0 * valTemp * 100.0)/1024.0;
    Keyboard.println(valTemp);
    // Speichern
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('s');
    delay(100);
    Keyboard.releaseAll();
  }
  delay(2000);
}

Im Texteditor auf dem Desktop wird nun alle 2 Sekunden ein Messwert gespeichert.

leonardo-datenlogger

Fazit:
Das neue Arduino Leonardo Board bietet mit den neuen Funktionen viele zusätzliche Anwendungsmöglichkeiten. Dank den vorhandenen Anleitungen ist eine Inbetriebnahme problemlos durchzuführen. Mit den mitgelieferten Beispielen für Keyboard-und Mausemulation kann man sofort mit eigenen Experimenten beginnen.

Obwohl der Arduino Leonardo die gleiche Bauform und die gleichen Buchsenleisten besitzt, ist das neue Board nicht kompatibel mit dem Standardboard. Die Anschlussbelegung hat sich bei verschiedenen Funktionen geändert und viele bisherige Shields können ohne Anpassung nicht mehr genutzt werden. Neben der elektrischen Inkompatibilität können auch etliche Bibliotheken durch die veränderte Pinbelegung nicht mehr genutzt werden

Neben dem von mir getesteten Arduino Leonardo mit Headers ist auch eine Leonardo-Version ohne Headers und Buchse für Stromversorgung verfügbar. Diese Bauform ist noch etwas kostengünstiger und eignet sich für Lowcost-Anwendungen und Anwendungsfälle mit geringer Bauhöhe oder knappem Platzbedarf.

Abschliessend kann man sagen dass das neue Arduino Leonardo Board durch die erweitere Funktionalität als USB-Device neue Möglichkeiten bietet. Für Standardanwendungen und für Einsteiger ist das Board nicht geeignet da der Leonardo nicht voll kompatibel mit den bisherigen Standardboards ist.

Das Arduino-Team hat soeben die Arduino IDE 1.0.1 freigegeben.

Arduino 1.0.1 unterstützt nun auch das neue Board Arduino Leonardo. Zusätzlich wird die Entwicklungs-Oberfläche international und kann in 33 verschiedenen Sprachen dargestellt werden.
(via Twitter)

USB Power Adapter

Bei Entwicklungen und Experimenten mit Arduino wird das Board meist über die USB-Schnittstelle mit Spannung versorgt da über den USB-Port die Sketche auf den Microcontroller geladen werden.
Nach der Realisierung der Arduino-Anwendung wird die fertige Lösung üblicherweise mit einem eigenen Steckernetzteil oder Batterie-Modul versorgt. Die Versorgung des Arduino-Boards über USB wird meist nicht verwendet da die USB-Ports des Rechners für andere Anwendungen benötigt werden oder die realisierte Lösung wird abseites des Rechners betrieben.

Der USB Power Adapter ist eine Stromversorgungsmodul welches über mehrere USB-Stecker 5 Volt liefert. Über ein handelsübliches USB-Kabel kann man mit dem Adapter beispielsweise Arduino-Boards versorgen und hat weiterhin seine USB-Schnittstellen auf dem Rechner frei. Wie der Name sagt, ist der USB Power Adapter nur ein Versorgungsmodul. Datenverkehr über die Datenleitungen der USB-Stecker ist nicht möglich da keine Verbindung mit dem Rechner besteht.

Die Schaltung des USB Power Adapters ist einfach und benötigt neben einer Leiterplatte ein paar Widerstände und USB-Stecker.

USB Power Adapter
Schaltung USB Power Adapter

Damit man mehrere Geräte parallel versorgen kann, wird die Schaltung je nach Bedarf mehrfach aufgebaut werden. Für den USB Power Adapter wurde die Schaltung in 3-facher Ausführung auf einem Perma-Proto 1/2 Sized von Adafruit aufgebaut.

USB Power Adapter
USB Power Adapter

Damit die USB-Stecker auf die Leiterplatte passen, wurden an der oberen Seite des Perma Boards die beiden Stromversorgungsreihen abgetrennt. Die 4 Anschlüsse des USB-Steckers und die Montagestifte passen nun genau in das Raster der Bohrungen auf der Leiterplatte. Auf einem Perma-Proto 1/2 Sized Breadboard, also einer Leiterplatte mit der halbe Grösse eines Standardbreadboards passen ideal 3 USB-Stecker drauf.

USB Power Adapter - Lötseite
USB Power Adapter – Lötseite

Wie man auf der Lötseite (Bild oben) der Leiterplatte sieht, ist das Perma-Proto wie ein handelsübliches Breadboard aufgebaut. Diese Anordnung der Lötaugen und Leiterbahnen erlaubt einen sauberen und übersichtlichen Aufbau der Schaltung des USB Power Adapters.

USB Power Adapter USB Power Adapter

Die 5 Volt für die Versorgung des USB Power Adapters können nun über ein Steckernetzteil oder Labornetzteil zugeführt werden. Je nach Art der Spannungsquelle werden für die Spannungszuführung eine 2.1mm-Buchse oder Bananenbuchsen eingesetzt.
Mein USB Power Adapter wird in einem kleinen Gehäuse auf dem Labortisch platziert und liefert nun Strom für mehrere Arduino-Boards.
Durch die stabile und feste Leiterplatte des Perma-Proto bekommt man eine hohe Festigkeit des gesamten Leiterplattenaufbaus. Mittels der beiden Montagebohrungen kann man die Leiterplatte fest in einem entsprechenden flachen Gehäuse befestigen.

Anwendungsbeispiel:

USB Power Adapter
USB Power Adapter versorgt Arduino Wetterstation

Kitreview: Deuligne LCD Shield

Deuligne ist ein 2-zeiliges LCD-Shield und wurde mir freundlicherweise vom französischen Hersteller Snootlab zur Verfügung gestellt. Das Deuligne LC-Display sieht zwar wie die meisten 2-zeiligen Display-Shields für Arduino aus, unterscheidet sich aber in der Funktionalität. Das Display wird über den I2C-Bus angesteuert. Durch die serielle Ansteuerung des Displays stehen alle digitalen Port für eigene Anwendungen zur Verfügung.

Das Deuligne LCD Shield wird als Bausatz oder als Fertigmodul im Shop von Snootlab angeboten. Der Bausatz beinhaltet alle nötigen Bauteile und wird in einem wiederverwendbaren ESD (Antistatik)-Beutel geliefert.

Der Aufbau des Deuligne Shields ist recht einfach und wird in einer ausführlichen und bebilderten Anleitung beschrieben. Die Anleitung zeigt dabei jeden einzelnen Schritt des Zusammenbaus. Mit dieser detailierten Beschreibung gelingt der Aufbau des Displays auch Einsteigern problemlos.

Nachdem das Display zusammengelötet ist, kann es auf dein Arduino-Board gesteckt werden. Die Leiterplatte des Displays ist dabei etwas grösser als die Abmessungen des Arduino, da alle Anschlusspins auf die Leiterplatte geführt sind. Montagelöcher auf der Leiterplatte erlauben eine einfache Befestigung des Displays an einer Frontplatte eines Gehäuses. Zusätzlich stehen auf dem Deuligne Shield ein Joystick mit Positionen, ein Potentiometer für den Display-Kontrast und ein Resetbutton zur Verfügung.

Die Inbetriebnahme des Deuligne ist recht einfach. Mittels einer eigenen Bibliothek und etlichen Beispielsketchen kann man die einzelnen Funktionen und die Möglichkeiten des Displays austesten.

Obwohl das Display über den I2C-Bus angesteuert wird, erfolgt die Ausgabe von Daten auf das Display wie bei einem Standard-Display mittels Print-Befehl.

void loop()
{
  lcd.clear();
  lcd.backLight(true);
  lcd.setCursor(0,0);
  lcd.print("Deuligne Shield");
  lcd.setCursor(0,1);
  lcd.print("Kitreview");
  delay(1000);
}

Fazit:
Das Deuligne LCD Shield ist ein ausgereiftes Produkt und überzeugt durch die professionelle Leiterplatte, die ausführliche Anleitung und die vielen Programmbeispiele. Durch die serielle Ansteuerung über den I2C-Bus stehen weiterhin alle digitalen und 3 analoge Ports zur Verfügung. Die Ports können direkt am Shield angelötet und weitergenutzt werden. Wie bei allen Snootlab Shields ist die Leiterplatte sauber und gut lesbar beschriftet. Die Ansteuerung des Display ist einfach und unterscheidet sich nicht von einem parallelen Display. Die vielen Beispiel-Sketche zeigen die Möglichkeiten des Display. Mit dem zusätzlichen Joystick als Bedienelement kann eine einfache Benutzerführung realisiert werden. Dabei wird nur ein einzelner Analog-Eingang für das Einlesen der Joystick-Position verwendet.

Das Deuligne LCD Shield hat mich überzeugt und kann ich weiterempfehlen.

Arduino-Anwender in der Schweiz können den Bausatz über den offiziellen CH-Distributor play-zone.ch beziehen.

Mintyboost aufbauen

Tim prüft einen soeben aufgebauten Mintyboost von Adafruit.

(c) Bild Aga




Kategorien