Openremote Arduino sensorer servo RGB ledde och switch (1 / 4 steg)
Steg 1: Bygga arduino krets
montera den arduino kretsen per bilden. Belastning som skissen kom ihåg att ange din IP-adress till en tillgänglig i nätverket. När detta har gjorts kan du testa installationen utan openremote programvaran med hjälp av en web browser, Chrome eller firefox arbete bättre eftersom de inte försöker att hämta filen. bara sätta i http://192.168.2.157 eller vad din ip är använde du och du borde få något sådant
{"A1": 373, "A0": 371, "S0": 91, "RÖD": 0, "GRÖN": 255, "BLÅ": 54, "D7": 0, "TEMP": 77.90,}
Det är en JSON fil visar värdet av 2 analoga ingångar, servo position, färg ursinnet för 3 lysdioder från 0 - 255, status för växel 1 på stift 7 och temp. Om du vill ändra ett värde i webbläsaren anger du http://192.168.2.157/pinP3=200 detta kommer att ändra platsen för att
{"A1": 364, "A0": 363, "S0": 91, "RÖD": 200, "GRÖN": 255, "BLÅ": 54, "D7": 0, "TEMP": 77.90,}
och den röda led kommer att gå till nästan full ljusstyrka. Vrid knappen 1 på (digital pin7) använda
http://192.168.2.157/pinD7=1 för på eller http://192.168.2.157/pinD7=0 för off
{"A1": 369, "A0": 368, "S0": 91, "RÖD": 200, "GRÖN": 255, "BLÅ": 54, "D7": 1, "TEMP": 77.90,}
märka "D7" ändras till 1 och LED borde ha kommit. Om du vill ändra alla 3 färger på en gång kan du använda denna http://192.168.2.157/pinC1, 255,255,255 anger detta alla 3 färger R, G, B i den ordningen till 255 full ljusstyrka.
{"A1": 365, "A0": 364, "S0": 91, "RÖD": 255, "GRÖN": 255, "BLÅ": 255, "D7": 1, "TEMP": 77.90,}
här är en kopia av arduino IDE skiss
/*
* Svara på förfrågningar i URL-adressen att ändra digital och analog output portar
* Visa antalet portar ändras och värdet av analog ingång stiften.
* till exempel:
* Skicka http://192.168.1.157/?pinD2=1 vänder digital stift 2 på
* Skicka http://192.168.1.157/?pinD2=0 släcks digital stift 2
* Skicka http://192.168.1.157/?pinP3=150 blir röd färg till 150
* Skicka http://192.168.1.157/?pinP5=100 blir grön färg till 100
* Skicka http://192.168.1.157/?pinC1, 255,255,255 visar alla färger upp till vitt på en rad
* Skicka http://192.168.1.157/?pinP6=200 blir blå färg till 200 0 till 255 max val
* Skicka http://192.168.1.157/?pinS1=90 flyttar servo till 90 grader mark
* Skicka http://192.168.2.157 {"A1": 369, "A0": 368, "S0": 11, "röd": 0, "grön": 255, "blå": 54, "D7": 1, "TEMP": 78.35,}
*/
#include
#include
#include
#include //only för ds18b20 temp
#include //only för ds18b20 temp
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensorer (& oneWire);
DeviceAddress Sensor1 = {0x28, 0xAC, 0xD2, 0x6E, 0x04, 0x00, 0x00, 0xF9}; olika för varje enhet! använda skiss att hitta
byte [mac] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xF0};
IP-adress ip (192,168,2, 157);
IP-adress myDns(192,168,2,254);
Ipadress gateway (192, 168, 2, 254);
EthernetServer server(80);
int brightnessR = 0; behöver bara för rgb
int brightnessG = 0; behöver bara för rgb
int brightnessB = 0; behöver bara för rgb
int pos = 0; behöver bara för servo
int timer = 0;
Servo myservo; behöver bara för servo
void setup()
{
sensors.setResolution (Sensor1, 10); för temp
sensors.setWaitForConversion(false); för temp
sensors.requestTemperatures(); för temp
myservo.attach(9); behöver bara för servo som pin servo är kopplad
Serial.BEGIN(9600);
Ethernet.BEGIN (mac, ip);
Server.BEGIN();
Serial.println("ready");
pinMode(3,OUTPUT);
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
pinMode(7,OUTPUT);
}
void loop()
{
Denna timer håller temp sensorn från kör för mycket och sakta ner skiss
timer = (timer + 1);
om (timer == 1000) {
sensors.requestTemperatures(); för temp
timer = 0;
}
EthernetClient klient = server.available();
om (klient) {
samtidigt (client.connected()) {
om (client.available()) {
räknare som visar antalet pin ändringsbegäranden
int digitalRequests = 0;
int analogRequests = 0;
om (client.find ("GET /")) {/ / Sök efter "GET"
hitta tokens börjar med "pin" och stoppa på den första tomma raden
söka till slutet av raden för "pin"
samtidigt (client.findUntil ("pin", "\n\r")) {
char type = client.read(); D eller A
Nästa ascii heltalsvärdet i strömmen är PIN-koden
int pin = client.parseInt();
int val = client.parseInt(); heltalet efter det är värdet
int valg = client.parseInt();
int valb = client.parseInt();
om (typ == hade ") {
Serial.Print ("Digital pin");
pinMode (pin, utgång);
digitalWrite (pin, val);
}
om (typ == s ') {
Serial.Print ("Servo input");
myservo.write(val);
POS = val;
Delay(15);
}
om (typ == "C") {
Serial.Print("Color");
analogWrite (3, val).
analogWrite (5, valg);
analogWrite (6, valb);
brightnessR = val;
brightnessG = valg;
brightnessB = valb;
}
om (typ == "P") {
Serial.Print("pwn");
pinMode (pin, utgång);
analogWrite (pin, val);
om (pin == 3) {
brightnessR = val;
}
om (pin == 5) {
brightnessG = val;
}
om (pin == 6) {
brightnessB = val;
}
}
annars om (typ == "A") {
Serial.Print ("Analog pin");
analogWrite (pin, val);
analogRequests ++;
}
Serial.Print(PIN);
Serial.Print("=");
Serial.Print(val);
Serial.Print(",");
Serial.Print(valg);
Serial.Print(",");
Serial.println(valb);
}
}
Serial.println();
///*
Skicka ett standard http-svarshuvud
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: application/json");
client.println();
utgående värdet för varje analog ingångsstift json-p-objekt
client.Print("{");
client.Print("\"a1");
client.Print ("\": ");
client.Print(analogRead(1));
client.Print(",");
//***********************************
client.Print("\"a0");
client.Print ("\": ");
client.Print(analogRead(0));
client.Print(",");
//***********************************
client.Print("\"S0");
client.Print ("\": ");
client.Print(POS);
client.Print(",");
//************************************
client.Print("\"Red");
client.Print ("\": ");
client.Print(brightnessR);
client.Print(",");
//***********************************
client.Print("\"Green");
client.Print ("\": ");
client.Print(brightnessG);
client.Print(",");
//***********************************
client.Print("\"Blue");
client.Print ("\": ");
client.Print(brightnessB);
client.Print(",");
client.Print("\"D7");
client.Print ("\": ");
int sw1 = digitalRead(7);
om (sw1 == hög) {
client.Print("1");
}
om (sw1 == låg) {
client.Print("0");
}
client.Print(",");
//***********************************
client.Print("\"Temp");
client.Print ("\": ");
flyta tempC1 = sensors.getTempC(Sensor1);
client.Print(DallasTemperature::toFahrenheit(tempC1));
client.Print(",");
client.println("}");
bryta;
}
}
de web webbläsare möjlighet att ta emot data
Delay(1);
client.stop();
}
}