

Schlagwort: Node
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();
}
}
Sensor Node mit Bodenfeuchte-Sensor
Sensor Node mit Grove Bodenfeuchtigkeits-Sensor:
Der Grove Moisture Sensor von Seeedstudio ist ein einfacher Sensor für die Messung der Bodenfeuchtigkeit.
In der simplen Transistorschaltung auf dem Sensorboard wird der Widerstandswert zwischen den beiden Messflächen in eine Messspannung umgewandelt, die anschliessend von einem Attiny-Microcontroller ausgewertet wird. Die Messung der Feuchtigkeit erfolgt einmal pro Minute. In der Zwischenzeit ist die Messschaltung deaktiviert und der Microcontroller im Sleep-Modus.
Wie von den Sensor Nodes bekannt, wird der eingelesene Messwert mittels RFM12B Transceiver drahtlos an die Basisstation gesendet.
Wireless Display für Attiny Sensor Nodes
Drahtloses Display zu Anzeige der Sensorwerte der einzelnen Attiny Sensor Nodes.

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

Attiny Sensor Nodes
Drahtlose und batteriebetriebene Sensor-Nodes

