Habe mit dem Arduino und dem Temperatursensor DS18B20 mal zwei Stunden die Temperatur mit einem Java Programm gemessen.
Die erzeugte Logdatei hat folgenden Aufbau:
[Messzeitpunkt] [Gemessener Wert in Grad/Celsius]
Z.b.:
2013.06.22_17:56:18 29.25
2013.06.22_17:56:23 29.25
2013.06.22_17:56:29 29.25
# ...
2013.06.22_20:15:00 27.56
2013.06.22_20:15:06 27.56
2013.06.22_20:15:12 27.56
Folgende gnuplot Befehle sind nötig (guter Überblick zu gnuplot):
set title "Temperaturverlauf"
set ylabel "Temperatur in Grad/Celsius"
set xlabel "Messzeitpunkt"
set xdata time # x-Achse wird im Datums/Zeitformat skaliert
set timefmt "%Y.%m.%d_%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss
set format x "%H:%M" # Format für die Achsenbeschriftung
set yrange [27:30] # die y-Achse geht von:bis
set terminal png
set output "temp-verlauf.png"
plot "log-temp.txt" using 1:2 title "Sensor DS18B20" with lines
Um folgendes Ergebnis zu erhalten. Der peek am Anfang, ist entstanden, weil ich den Sensor kurz angefasst haben.
1. Auf den Arduino den „Hallo Welt“ Sketch laden.
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println("Hello world");
delay(1000);
}
2. Den RXTX-Treiber in Version >= 2.2pre2 laden. Die 1.7 Version macht mit Mac OS X 10.8.4 Probleme, es kommt die Meldung, das der Port belegt ist.
3. Die zwei Dateien aus dem entpackten Archiv librxtxSerial.jnilib und RXTXcomm.jar in das /Library/Java/Extensions Verzeichnis kopieren
4. Die RXTXcomm.jar dem Classpath des Projektes hinzufügen.
5. Im Testprogramm den PORT_NAMES „/dev/tty.usbserial-A501U7KD“ entsprechend setzen. Im Arduino-IDO Menü Werkzeuge-Serieller-Port schauen, wie er genau heißt.
6. SerialTest starten. „Hello World“ wird auf den Konsole ausgegeben. „Per Java über die Serielle-Schnittstelle auf den Arduino zugreifen mit dem Mac OS X 10.8.4“ weiterlesen
Habe heute einen One-Wire DS18B20 Temperatursensor erhalten und ihn mit dem Arduino Nano verbunden. Der Messbereich des Sensors beträgt von -55°C bis +125°C bei ± 0,5°C Genauigkeit.
Das Programm (8038 byte) gibt zuerst die eindeutige ID des Sensors aus, (28-A2-9D-8A-04-00-00-2B) und dann jede Sekunde den neuen Messwert:
/* TWTemp Version 1.0 vom 14.06.2013
8038 bytes
Thomas Wenzlaff http://www.wenzlaff.de
Temperature Sensor DS18B20 an Digitalen Port Pin 2 wie folgt verbunden Links=Masse, Mitte=Data, Rechts=+5V, 3300 to 4700 Ohm Widerstand von +5V nach Data.
Es wird erst die Adresse des 1-Wire-Device ausgegeben und dann wird die Temperaturmessung gestartet.
/* TWBlink Beschreibung: Die rote Leuchtdiode (LED) auf dem Arduino Board blinkt alle 10 Sekunden kurz für 50ms auf. Dieses Beispiel ist Freeware und basiert auf dem Beispielprogramm Blink. Thomas Wenzlaff 12.05.2013 Größe des compilierten Binary: 1108 Byte */
// An Pin 13 ist eine LED angeschlossen, die auf den meisten Arduino Boards vorhanden ist constint LED = 13;
// Die setup Methode wird nur einmal ausgeführt und bei reset voidsetup() { // Digitaler PIN mit der LED ist ein Ausgang pinMode(LED, OUTPUT);
}
// Die Endlosschleife voidloop() { digitalWrite(LED, HIGH); // LED anschalten delay(50); // 50 ms warten digitalWrite(LED, LOW); // LED ausschalten delay(10000); // 10 Sekunden warten
}
So vorgehen, wie in der Arduino-Anleitung beschrieben.
1. Virtual Com Device Treiber 2.2.18 von FTDICHIP laden und wie in der Anleitung beschrieben installieren.
Für Mac OSX 10.8.3 und 10.8.4 ist es nötig die FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg zu installieren. Nun muss das Arduino Board an den USB-Port angeschlossen werden. Wird es nicht angeschlossen sind die installierten Treiber nicht im /dev Verzeichnis sichtbar.
Dann im Terminal im Verzeichnis /dev überprüfen ob die *usbserial* Treiber installiert wurden.
2. Entwicklungsumgebung downloaden und installieren. Starten.
3. Seriellen Port unter dem Menü: Tools – Serieller Port – /dev/cu.usbserial-A5001U7KD auswählen.
4. Beispiel auswählen und überprüfen und auf den Arduino uploaden.