Per Java über die Serielle-Schnittstelle auf den Arduino zugreifen mit dem Mac OS X 10.8.4

Wie kann nun über die Serielle-Schnittstelle per Java auf den Arduino mit dem Mac zugegriffen werden?

Wie in dieser Anleitung beschrieben vorgehen.

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

Temperatur Messung mit dem DS18B20 und Arduino Nano

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.

Mit den OneWire 2.2 und Dallas Temperature Control Library 3.7.2 Bibliotheken ist die
Temperaturmessung schnell zusammengebaut.

Hier das Foto des Aufbaus mit Schaltplan:

Arduino Nano Temp. Messung via 1-Wire
Arduino Nano Temp. Messung via 1-Wire

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.

*/

/* Benötigte Bibliotheken importieren */
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2 /* Digitalport Pin 2 definieren */

OneWire ourWire(ONE_WIRE_BUS); /* Ini oneWire instance */

DallasTemperature sensors(&ourWire);/* Dallas Temperature Library für Nutzung der oneWire Library vorbereiten */

void setup()
{
delay(1000);
Serial.begin(9600);
Serial.println("Temperatur Messprogramm");
Serial.println("TWTemp 1.0 vom 14.06.2013");
Serial.println("http://www.wenzlaff.de");
delay(1000);

sensors.begin();/* Inizialisieren der Dallas Temperature library */

adresseAusgeben(); /* Adresse der Devices ausgeben */

Serial.print("Starte Temperatur abfragen ...");
}

void loop()
{
Serial.println();

sensors.requestTemperatures(); // Temp abfragen

Serial.print(sensors.getTempCByIndex(0) );
Serial.print(" Grad Celsius");
}

void adresseAusgeben(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Suche 1-Wire-Devices...\n\r");// "\n\r" is NewLine
  while(ourWire.search(addr)) {
    Serial.print("\n\r\n\r1-Wire-Device gefunden mit Adresse:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n\r");
      return;
    }
  }
  Serial.println();
  ourWire.reset_search();
  return;
}

Um die höchstmögliche Genauigkeit des Sensors auszulesen ist im Setup noch dieser Befehl nötig, damit dauert die Messung aber etwas länger: „Temperatur Messung mit dem DS18B20 und Arduino Nano“ weiterlesen