Posts tagged ‘Arduino’

Arduino: Temperaturen aus der Datenbank auslesen

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);
?>

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Fritzing

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.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Grafische Ausgabe der Temperaturen vom Arduino

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

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Arduino übermittelt Temperaturen

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

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Arduino Webserver

Quellcode für einen einfachen Arduino Webserver findet man unter http://arduino.cc/en/Tutorial/WebServer.

Ich werde mal versuchen, die Temperatur eines LM35 auszulesen und als Webseite bereitzustellen. Mit dem Twittern per Arduino klappt es heute nicht, die Connection wird verweigert.

Nachtrag:

Mit dem Webserver-Beispielcode und der getTemperatur() Funktion von Mats Vanselow war der Temperatur-Webserver in fünf Minuten erledigt. Als nächste werde ich einen Webclient zusammenbauen (basierend auf der Ethershield library), der die Temperatur ausliest und an eine PHP-Datenbank schickt. Sollte am Wochenende zu erledigen sein.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Temperatur messen mit dem Arduino

Heute habe ich mit dem Arduino mal Temperaturen eines LM35 Sensors ausgemessen. Glücklicherweise gibt es den Code fertig bei http://www.mats-vanselow.de/2009/03/25/temperaturen-messen-mit-arduino, allein hätt ich mich da schwer getan.

Als nächster Schritt bleibt das Twittern der Temperatur, erste Versuche waren nicht erfolgreich.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Neues Arduino Buch „Arduino – Physical Computing für Bastler, Designer & Geeks“

Heute habe ich ein neues Arduino-Buch bekommen, das auf den schönen Namen „Arduino – Physical Computing für Bastler, Designer & Geeks“ hört.

Hier mal das Inhaltsverzeichnis:

  1. Von Königen und Kondensatoren
  2. Physical Computing, elektrische Grundlagen und der Sprung ins kalte Wasser
  3. Workshop LED-Licht
  4. LEDs für Fortgeschrittene
  5. Sprich mit mir, Arduino
  6. Arduino im Netz
  7. Sensoren
  8. Ein kleiner Arduino-Roboter
  9. Musik-Controller mit Arduino
  10. Musik mit Arduino
  11. Anhang A: Arduino-Boards und Shields
  12. Anhang B: Arduino-Bibliotheken
  13. Anhang C: Sprachreferenz
  14. Anhang D: Händlerliste

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Making Things Talk

Heute kam mein „Making Things Talk“ Buch an, das es momentan recht günstig bei Amazon gibt. Die Untertitel „Practical Methods for Connecting Physical Objects“ und „Projects and Ideas to Create Talking Objects from Anything“ beschreiben das Buch ganz gut.

Hier mal die Kapitelüberschriften

  1. The Tools
  2. The Simplest Network
  3. A More Complex Network
  4. Look Ma! No Computer
  5. Communicating in (Near) Real Time
  6. Wireless Communication
  7. Sessionless Networks
  8. How to Locate (Almost) Anything
  9. Identification

Also genug Material für lange Winterabende… Oder Sommertage, bin schließlich IT-Freak 😉

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Das Arduino Danger Shield

Heut morgen hab ich mich mal beigemacht, das bei Watterott bestellte Seeedstudio Danger Shield zusammenzulöten. Als nativer BWLer ist mein Umgang mit dem Lötkolben sicher deutlich verbesserungswürdig, aber die falsch gelöteten Widerstände hab ich doch recht bald bemerkt und dank Dremel waren die Löcher auch bald vom Zinn befreit.

Als nächstes steht der praktische Test des Boards an, schau mer mal ob ich nicht doch ein paar Macken reingelötet habe… Beispielcodes für das Shield gibt es im Subversion des Entwicklers: http://svn.nycresistor.com/projects/danger_shield/.

Schau ‚mer mal, ob ich sauber gearbeitet habe… Hmmm, irgendwas is faul. Sobald ich das Board nach dem Upload des Demo-Code an den USB-Port anschließe, verschwindet das Board aus dem Menü der IDE, lege ich 8 Volt per Netzteil an, regelt das sofort auf 3V runter. Scheint irgendwo ein Kurzschluss zu sein, aber wo? Habe das Board erstmal von Flussmittelresten gereinigt, wozu gibt es schließlich Spülmittel. Nu trocknet es in der Kölner Sonne, schau mer mal ob’s was bringt.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Full RGB LEDs ansteuern – Teil 2

Die zweite blaue LED ist angeschlossen, jetzt muss nur noch das Programm angepasst werden:

#define LEDb1 10
#define LEDg 11
#define LEDr 12
#define LEDb2 13
 
void setup()
{
  pinMode(LEDr, OUTPUT);
  pinMode(LEDg, OUTPUT);
  pinMode(LEDb1, OUTPUT);
  pinMode(LEDb2, OUTPUT);
 
}
 
void loop()
{
  digitalWrite(LEDr,HIGH);
  delay(1000);
  digitalWrite(LEDr,LOW);
  delay(1000);
  digitalWrite(LEDg,HIGH);
  delay(1000);
  digitalWrite(LEDg,LOW);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
  delay(1000);
 
  digitalWrite(LEDr,HIGH);
  delay(1000);
  digitalWrite(LEDg,HIGH);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
 
  digitalWrite(LEDr,LOW);
  digitalWrite(LEDg,LOW);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
 
  digitalWrite(LEDr,HIGH);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
 
  digitalWrite(LEDr,LOW);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
 
  digitalWrite(LEDg,HIGH);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
 
  digitalWrite(LEDg,LOW);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
 }

Was geschieht? Die Pins 10 bis 13 werden auf Output gestellt.

  1. Rot, Grün und Blau werden jeweils an- und wieder ausgeschaltet.
  2. Rot, Grün und Blau werden nacheinander eingeschaltet, dann zusammen ausgeschaltet.
  3. Rot, Blau, Blau wird nacheinander eingeschaltet und wieder ausgeschaltet
  4. Grün, Blau, Blau wird nacheinander eingeschaltet und wieder ausgeschaltet

Eigentlich ganz einfach. 🙂 Als nächstes werde ich mal das Dimmen per PWM ausprobieren.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website