Archiv für die Kategorie ‘Arduino’

Buchkritik: “Arduino Praxiseinstieg” von Thomas Brühlmann

Donnerstag, 26. August 2010

Auf der Froscon am letzten Wochenende habe ich mir “Praxiseinstieg Arduino” von Thomas Brühlmann gekauft. Mit knapp 25 Euro dürfte es noch in den taschengeld-tauglichen Bereich fallen. Es gefällt mir sehr gut, ist aber meines Erachtens nichts für Leute, die noch nie etwas mit Elektonik zu tun hatten. An einigen Stellen fallen halt Fachbegriffe, die für mich sehr unbekannt sind und zu denen ich gern etwas mehr Erklärung gehabt hätte.

Davon abgesehen zeigt das Buch eine Menge interessanter Beispiele und Ideen, von denen ich einige in der nächsten Zeit umsetzen werde.

Arduino und LoL Shield

Mittwoch, 25. August 2010

Mit dem LoL Shield gibt es eine einfache Möglichkeit, per Arduino ein LED Array zu steuern. Ich habe mein Shield am letzten Wochenende auf der Froscon (http://www.froscon.de) gekauft und unter sachkundiger Hilfe die fast 130 LEDs aufgelötet. Die Vorteile des Shields sind die schiere Masse an ansteuerbaren LEDs sowie die Tatsache, dass außer den LEDs selbst keine weiteren Bauteile zum Einsatz kommen.

Auf der Homepage des Schöpfers http://jimmieprodgers.com/kits/lolshield Beispiele für die Ansteuerung des Shields, hier zwei Beispiele (aufgenommen mit einer Canon 7D):

Youtube

Youtube

Processing für iPhone und iPod Touch

Sonntag, 28. Februar 2010

Mit iProcessing gibt es jetzt ein Framework, das die Entwicklung von iPhone Anwendungen in Processing, der Sprache, in der auch der Arduino programmiert wird, ermöglicht.

http://www.heise.de/software/download/iprocessing/71850

Geniale Visualisierung von Geschichtsdaten

Sonntag, 29. November 2009

Durch Zufall habe ich eben eine geniale Visualisierung von Geschichtsdaten gefunden, die mit Processing (Arduino lässt grüßen) umgesetzt wurde. Gezeigt wird der Niedergang der Weltreiche Großbritannien, Spanien, Portugal und Frankreich im 19. und 20. Jahrhundert.

Hier der Link: http://vimeo.com/6437816.

Arduino: Temperaturen aus der Datenbank auslesen

Montag, 26. Oktober 2009

Da die Temperatur-Daten jetzt in der Datenbank gespeichert werden, müssen wir sie auch auslesen:

<?php
 
echo "<h1>Temperaturen im Wohnzimmer</h1>";
 
$link = mysql_connect("<server>", <user>", "<password>") or 
	die("Keine Verbindung möglich: " . mysql_error());
 
mysql_select_db("<Database>") or die("Auswahl der Datenbank fehlgeschlagen");
// Die letzten 10 Werte
$query = "SELECT * FROM temperature ORDER BY TIMESTAMP DESC LIMIT 1,10"; 
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
 
while($row = mysql_fetch_object($result))
{
    echo $row->Timestamp ." ".$row->Temperature."<br/>";
}
 
mysql_close($link);
?>

Fritzing

Samstag, 24. Oktober 2009

Von Fritzing ist schon vor einem knappen Monat Version 0.3.8. alpha erschienen. Mit Fritzing lassen sich elektronische Schaltungen im Arduino-Umfeld sehr gut und einfach darstellen.

Mit Arduino Temperaturen in eine Datenbank speichern

Samstag, 24. Oktober 2009

Mein Arduiono hat bisher nur die Temperatur meines Wohnzimmers in einer Textdatei auf dem Server gespeichert, für Auswertungszwecke ist eine Datenbank natürlich besser. Daher hab ich den PHP-Code so erweitert, dass er eine der MySQL-Datenbanken meines Providers nutzt. Hier mal der Code für das setTemperature-Skript:

<?php
header('Content-type: text/plain');
echo date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t'];
 
$link = mysql_connect("<serverhost>", "<username>", "<password>") or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("<Datenbank>") or die("Auswahl der Datenbank fehlgeschlagen");
$query = "INSERT INTO temperature(`temperature`) values(" . $_GET['t'] . ")";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
 
mysql_close($link);
?>

Im nächsten Schritt baue ich noch eine passende Auswertung, die den Temperaturverlauf auch grafisch darstellt.

Grafische Ausgabe der Temperaturen vom Arduino

Sonntag, 11. Oktober 2009

Mit der pChart (http://pchart.sourceforge.net) Bibliothek habe ich eine einfache Möglichkeit gefunden, die Temperaturen grafisch darzustellen. Hier ein erstes Beispiel, anhand einer Vorlage aus der pChart Bibliothek. War recht einfach abzuändern, hat mich nur wenige Minuten gekostet, die Anpassungen vorzunehmen.

Example1.php

Arduino übermittelt Temperaturen

Samstag, 10. Oktober 2009

Ausgehend von Mats Vanselows getTemperatur() Funktion (http://www.mats-vanselow.de/2009/03/25/temperaturen-messen-mit-arduino und einem Beispiel aus der Ethernet Library habe ich einen kleinen Client geschrieben, der alle 10 Minuten die Temperatur aus einem LM35 Sensor ausliest und per HTTP-Request an ein PHP-Skript auf meiner Homepage schickt. Da der LM35 nicht genau kalibriert ist und wohl sowieso maximal auf ein halbes Grad genau ist, habe ich mittels zwei anderer Thermometer (die wiederum selbst voneinander abweichen) die ungefähre Abweichung des LM35 bestimmt und ziehe die 2° Celsius einfach ab.

Hier der entsprechende Processing-Code:

#include <Ethernet.h>
bool connected = false;
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 99 };
// IP-Adresse des Webservers
byte serverIP[] = {111,111,111,111};
 
Client client(serverIP,80);
 
 
int inPin = 5;          // input pin 1
float inValTotal;
int i;
int runs = 5;          // Anzahl der Durchläufe
int waittime = 20;     // ms zwischen Durchläufen
int delayVal = 1000;   // Intervall für Serial Output
 
float getTemperatur() {
 
  inValTotal = 0;
  for(i = 0;i<runs;i++){
    inValTotal = inValTotal + analogRead(inPin);
    delay(waittime);
  }
 
  inValTotal = inValTotal / runs / 2;
  return(inValTotal-2);
}
 
 
void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  Serial.println("setup done");
 
}
 
void loop()
{
  Serial.println("Entered loop");
if (!connected){ 
   Serial.println("Not connected");
  if (client.connect()){
      connected = true;
      Serial.println("Connected to Server");
      Serial.println("Sending request to server");
      client.print("GET /storetemp.php?t=");
      client.print(getTemperatur());
      client.println(" HTTP/1.1");
      client.println("Host: www.mydomain.com");
      client.println("User-Agent: Arduino");
      client.println("Accept: text/html");
      client.println();
     } else {
        Serial.println("Cannot connect to server");
      }
    }   
  else {
    delay(500);
    while (client.connected() && client.available()) {
        char c = client.read();
        Serial.print(c);
      }
      Serial.println();
       client.stop(); 
       connected=false;
}
 
  Serial.println("Done now");
  delay(600000);
}

Hier der Code des PHP-Skripts, es schickt als Antwort Zeit und erhaltene Temperatur zurück zum Arduino und speichert die Temperatur mit Zeitstempel in einer Textdatei. Im nächsten Schritt werde ich wohl sicher eine MySQL-Datenbank hintersetzen, für den Moment reicht es aber völlig aus.

<?php
header('Content-type: text/plain');
echo date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t'];
 
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t']."\n");
fclose($fh);
?>
</php>

Und abschließend ein Auszug aus der Textdatei:

04.10.2009-09:22:29 Temperatur= 21.00
04.10.2009-09:22:37 Temperatur= 21.00
04.10.2009-09:22:44 Temperatur= 21.00
04.10.2009-09:22:52 Temperatur= 21.00
04.10.2009-09:23:00 Temperatur= 21.00
04.10.2009-09:23:07 Temperatur= 20.90
04.10.2009-09:23:15 Temperatur= 21.00
04.10.2009-09:23:33 Temperatur= 21.00

Programming Interactivity: Unlock the Power of Arduino, Processing, and OpenFrameworks

Samstag, 10. Oktober 2009

Habe ein neues Buch zu Arduino & Co: Programming Interactivity: Unlock the Power of Arduino, Processing, and OpenFrameworks von Joshua Noble. Was mir an den über 700 Seiten sehr gut gefällt, ist das Hintergrundwissen, das in das Buch eingeflossen ist. Also nicht nur “Pack den Draht da hin und schließ ihn da an” sondern auch eine Menge an Zusatzinformationen. Habe die fast 40 Euro nicht bereut.

Hier mal die Kapitelübersicht:

  1. Introducing Interaction Design
  2. Programming Basics
  3. Processing
  4. Arduino
  5. Programming Revisited
  6. openFrameworks
  7. Sound and Audio
  8. Physical Input
  9. Programming Graphics
  10. Bitmaps and Pixels
  11. Physical Feedback
  12. Protocols and Communication
  13. Graphics and OpenGL
  14. Detection and Gestures
  15. Movement and Location
  16. Interfaces and Controls
  17. Spaces and Environments
  18. Further Resources