OpenKontrol Gateway – RF Daten senden an COSM

Das OpenKontrol Gateway ist ein optimales Internet-Gateway um meine Sensordaten an die IoT-Plattform Cosm zu senden.

Im nachfolgenden Beispiel werden die Daten von Node 13 an Cosm gesendet. Dabei werden 2 Datenstreams, Temperatur und Batteriespannung übertragen.

Das Senden der Daten an Cosm wird mit der Bibliothek ERxPachube realisiert.

Auf dem Arduino-basierenden Gateway zeigt Pin 17 mittels Status-LED den Empfang von Daten an.

//
// OpenKontrol Gateway - sending rf data to COSM
// Date: 10.05.13
// www.arduino-praxis.ch

#include <SPI.h>
#include <Ethernet.h>
#include <JeeLib.h>
#include <Arduino.h>
#include <HardwareSerial.h>
#include <ERxPachube.h>

// Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xAD };
byte ip[] = { 10, 0, 1, 101 };
byte gateway[] = { 10, 0, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };

// Cosm API-Key
#define PACHUBE_API_KEY	"YourAPIKey"
// Cosm Feed ID
#define PACHUBE_FEED_ID YOURFEEDID

// Status senden 1:OK
int sendenStatus = 0;

ERxPachubeDataOut dataout(PACHUBE_API_KEY, PACHUBE_FEED_ID);

void PrintDataStream(const ERxPachube& pachube);

// Fixed RF12 settings
#define MYNODE 3            //node ID of the receiever
#define freq RF12_433MHZ     //frequency
#define group 210            //network group

 typedef struct {
          int rxD;              // sensor value
          int supplyV;          // tx voltage
 } Payload;
 Payload rx;

int nodeID;

int value;
int millivolts;

// Data received
const int LEDpin=17;

void setup()
{
  Serial.begin(9600);
  rf12_initialize(MYNODE, freq,group); // Initialise the RFM12B
  Ethernet.begin(mac, ip);

  // 2 Datenstreams Sensor Node 13
  // Temp Inside
  dataout.addData(0);
  // Battery
  dataout.addData(1);

  // Daten empfangen
  pinMode(LEDpin, OUTPUT);
  digitalWrite(LEDpin,HIGH);

  Serial.println("TinyTX Simple Receive Example");
  Serial.println("-----------------------------");
  Serial.println("Waiting for data");
  Serial.println(" ");
}

void loop()
{
  if (rf12_recvDone() && rf12_crc == 0 && (rf12_hdr & RF12_HDR_CTL) == 0) {
  nodeID = rf12_hdr & 0x1F;  // get node ID
  rx = *(Payload*) rf12_data;
  value = rx.rxD;
  millivolts = rx.supplyV;
  Serial.println("Received a packet:");
  Serial.print("From Node: ");
  Serial.println(nodeID);
  Serial.print("Value: ");
  Serial.println(value);
  Serial.print("TX Millivolts: ");
  Serial.println(millivolts);
  Serial.println("--------------------");
  if (nodeID== 13)
  {
    digitalWrite(LEDpin,HIGH);
    sendenStatus=1;
  }
 }

  // Daten an Cosm senden
  if (sendenStatus == 1) {
  Serial.println("Sendig Data to COSM");
  float data0 = value;
  float data1 = millivolts;
  data0=data0/100;
  dataout.updateData(0, data0);
  dataout.updateData(1, data1);

  // Show Status
  int status = dataout.updatePachube();
  Serial.print("Status: ");
  Serial.println(status);

  // Daten senden
  PrintDataStream(dataout);

  sendenStatus=0;
  // turn off status LED to indicate
  // succesful data receive and online posting
  digitalWrite(LEDpin,LOW);
  }

}

void PrintDataStream(const ERxPachube& pachube)
{
  unsigned int count = pachube.countDatastreams();
  Serial.print("data count=> ");
  Serial.println(count);

  Serial.println(",");
  for(unsigned int i = 0; i < count; i++)
  {
    Serial.print(pachube.getIdByIndex(i));
    Serial.print(",");
    Serial.print(pachube.getValueByIndex(i));
    Serial.println();
  }
}

Wireless Display für Attiny Sensor Nodes

Drahtloses Display zu Anzeige der Sensorwerte der einzelnen Attiny Sensor Nodes.

Wireless Display
Drahtloses Display mit RF Shield
Display zeigt NodeID, Sensorwert, Batteriespannung und Update in Sekunden an.

Wireless Attiny Sensor Board Attiny Sensorboard
Attiny Sensor Nodes
Drahtlose und batteriebetriebene Sensor-Nodes

Testreihe Sensoren für Bodenfeuchtigkeit

Über die Varianten von Sensoren zur Messung der Bodenfeuchtigkeit wurde bereits berichtet. Dabei wurde auch der Sensortyp VG400 erwähnt. Da kürzlich bei Twitter dieses Thema von einem Nanode-Anwender aufgegriffen wurde, habe ich eine Testreihe aufgebaut um verschiedene Varianten von Sensoren zu vergleichen.

In der Testreihe werden 2 Selbstbau-Sensoren mit dem VG400 von Vegetronix verglichen.

Selbstbauvariante 1 mit 2 Nägeln:

Selbstbauvariante 2 mit Nägel in Gipshülle:

Vegetronix VG400:

Für den Messaufbau werden alle 3 Sensoren in die Erde in einem kleinen Topf gesteckt. Die Anschlüsse werden auf einem kleinen Steckbrett zusammengeführt und am Arduino-Board angeschlossen. Über das zusätzliche Ethernet-Shield werden die Daten an Pachube gesendet.

Sensoren (oben), Steckbrett (links), Arduino mit Ethernet Shield (rechts)

Auf einem Datenfeed von pachube.com kann nun der Testverlauf mitverfolgt werden.

Testprotokoll:

27.06.2011, 15:00 Uhr
Start der Messung

27.06.2011, 16:15 Uhr
Testfall „Regen“

——————————–

28.06.2011, 07:40 Uhr
Testfall „Regenschauer“

28.06.2011, 16:30 Uhr
Testfall „Regen“

28.06.2011, 21:00 Uhr
Spannungsversorgung mit Netzteil, statt USB
kurze Bewässerung

——————————–

29.06.2011, 09:00 Uhr
VG400 Position verstellt, Wert ändert sich

——————————–
30.06.2011, 16:30 Uhr
1.Testserie beendet

——————————–

VG400 – Sensor für Bodenfeuchtigkeit

Bewässerungsanwendung mit Sensoren für Bodenfeuchtigkeit sind Anwendungen welche gerne von Arduino-Anwendern realisiert werden. Dabei werden oftmals Selbstbau-Sensoren verwendet.

Auch das bekannte Projekt Botanicalls nutzt Nägel oder Metallstifte für die Ermittlung der Feuchtigkeit des Bodens im Garten oder der Topfpflanze.

Leider haben diese Selbstbausensoren kein lineares Verhalten und geben nur eine ungefähre Angabe über die Trockenheit der Erde.

Auch ich habe diese Variante schon ausgetestet und die Praxis zeigt dass die Messungen von Sensor zu Sensor unterschiedlich sind und genaue und reproduzierbare Resultate sind nicht möglich.

Die bisher beste und genaueste Lösung kann mit einem kommerziellen Feuchtesensor der Firma Vegetronix realisiert werden. Der Sensor VG400 gibt eine lineares Spannungssignal aus und beschreibt damit einen Bereich von 0-100% Feuchte im Boden.

Der gleiche Sensor kann auch für eine Wasserstandsmessung in einem kleinen Behälter oder Becken verwendet werden.

Nachteil dieser Lösung ist leider der Preis. Der Sensor kostet runde 30 USD. Für die Lieferung nach Europa kommen nochmals 35 USD dazu.

VG400 – Bodenfeuchte Sensor

Dank meinem Hoflieferanten für Arduino-Komponenten bin ich jetzt zu 2  Exemplaren des VG400 gekommen. Die Firma Telepixel bietet diese Sensoren in Zukunft unter dshop.ch an.

Hinweis:
da die Sensoren im Shop von Telepixel momentan noch nicht sichtbar sind, einfach bei Bedarf im Shop via Kontaktformular mit dem Anbieter Kontakt aufnehmen.