Paso 1: Construir el circuito de arduino
montar el circuito de arduino por la imagen. Carga el bosquejo siempre recordar establecer su dirección ip en uno disponible en su red. Una vez hecho esto puede probar la instalación sin el software openremote usando un web browser, Chrome o firefox funcionan mejor como que no tratan de descargar el archivo. sólo hay que poner en http://192.168.2.157 o lo que tu ip es usted y usted debe obtener algo como esto
{"A1": 373, "A0": 371, "S0": 91, "ROJO": 0, "VERDE": 255, "AZUL": 54, "D7": 0, "TEMP": 77.90,}
es un archivo JSON muestra el valor de 2 entradas analógicas, la posición del servo, la rabia de color para los 3 LED de 0 - 255, el estado del interruptor 1 en el pin 7 y la temperatura. Para cambiar uno de los valores en el navegador web introduzca http://192.168.2.157/pinP3=200 esto va a cambiar el sitio a
{"A1": 364, "A0": 363, "S0": 91, "ROJO": 200, "VERDE": 255, "AZUL": 54, "D7": 0, "TEMP": 77.90,}
y el led rojo de brillo casi completo. Colocar el interruptor 1 en (pin7 digital) utiliza
http://192.168.2.157/pinD7=1 para el o http://192.168.2.157/pinD7=0 de descuento
{"A1": 369, "A0": 368, "S0": 91, "ROJO": 200, "VERDE": 255, "AZUL": 54, "D7": 1, "TEMP": 77.90,}
Observe la "D7" cambió a un 1 y el LED debe haber venido en. Si desea cambiar todos los 3 colores en una vez que usted puede usar este http://192.168.2.157/pinC1, 255,255,255 esto ajustará todos 3 los colores R, G, B en ese orden a 255 brillo completo.
{"A1": 365, "A0": 364, "S0": 91, "ROJO": 255, "VERDE": 255, "AZUL": 255, "D7": 1, "TEMP": 77.90,}
Aquí es una copia del arduino IDE sketch
/*
* Responder a las solicitudes en la dirección URL para cambiar puertos de salida digitales y analógicas
* Mostrar el número de puertos cambiados y el valor de los pines de entrada analógicos.
* por ejemplo:
* envío de http://192.168.1.157/?pinD2=1 enciende el pin digital 2
* envío de http://192.168.1.157/?pinD2=0 apaga el pin digital 2
* envío de http://192.168.1.157/?pinP3=150 da color rojo a 150
* envío de http://192.168.1.157/?pinP5=100 da color verde a 100
* enviar http://192.168.1.157/?pinC1, 255,255,255 convierte todos los colores hasta el blanco en una línea
* envío de http://192.168.1.157/?pinP6=200 convierte de color azul a 200 val max de 0 a 255
* envío de http://192.168.1.157/?pinS1=90 mueve el servo a 90 marca grados
* envío de http://192.168.2.157 {"A1": 369, "A0": 368, "S0": 11, "rojo": 0, "verde": 255, "azul": 54, "D7": 1, "TEMP": 78.35,}
*/
#include
#include
#include
#include //only de temperatura ds18b20
#include //only de temperatura ds18b20
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors (& oneWire);
DeviceAddress Sensor1 = {0x28, 0xAC, 0xD2, 0x6E, 0 x 04, 0 x 00, 0 x 00, 0xF9}; diferente para cada dispositivo. Utilice el dibujo para encontrar
mac de bytes [] = {}
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xF0};
Ip dirección IP (192,168,2, 157);
MyDns(192,168,2,254) dirección IP;
Dirección IP gateway (192 168 2, 254);
Server(80) de EthernetServer;
int brightnessR = 0; necesita sólo para rgb
int brightnessG = 0; necesita sólo para rgb
brillob int = 0; necesita sólo para rgb
int pos = 0; necesita sólo para servo
int contador = 0;
Servo myservo; necesita sólo para servo
void setup()
{
sensors.setResolution (Sensor1, 10); para temperatura
sensors.setWaitForConversion(false); para temperatura
sensors.requestTemperatures(); para temperatura
myservo.Attach(9); necesita sólo para servo que servo pin está conectado
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()
{
Este temporizador impide que el sensor de temperatura mucho corriendo y frenar sketch
temporizador = (contador + 1);
Si (contador == 1000) {}
sensors.requestTemperatures(); para temperatura
Contador = 0;
}
Cliente EthernetClient = server.available();
Si {} (cliente)
mientras (client.connected()) {}
Si (client.available()) {}
solicitudes de cambio de contadores para mostrar el número de pin
int digitalRequests = 0;
int analogRequests = 0;
Si (client.find ("GET /")) {/ / buscar 'GET'
buscar fichas a partir de "pin" y parada en la primera línea en blanco
búsqueda hasta el final de línea para 'pin'
mientras que (client.findUntil ("pin", "\n\r")) {}
char tipo = client.read(); D o A
el siguiente valor entero de ascii en la corriente es el pin
pin int = client.parseInt();
int val = client.parseInt(); el entero después de el valor
valg int = client.parseInt();
valb int = client.parseInt();
Si (tipo == había ') {}
Serial.Print ("pin Digital");
pinMode (pin, salida);
digitalWrite (pin, val);
}
Si (tipo == de ') {}
Serial.Print ("entrada de Servo");
myservo.Write(Val);
pos = val;
Delay(15);
}
Si (tipo == 'C') {}
Serial.Print("color");
analogWrite (3, val);
analogWrite (5, valg);
analogWrite (6, valb);
brightnessR = val;
brightnessG = valg;
brillob = valb;
}
Si (tipo == 'P') {}
Serial.Print("Pwn");
pinMode (pin, salida);
analogWrite (pin, val);
Si (pin == 3) {}
brightnessR = val;
}
Si (pin == 5) {}
brightnessG = val;
}
Si (pin == 6) {}
brillob = val;
}
}
else if (tipo == 'A') {}
Serial.Print ("pin analógico");
analogWrite (pin, val);
analogRequests ++;
}
Serial.Print(PIN);
Serial.Print("=");
Serial.Print(Val);
Serial.Print(",");
Serial.Print(Valg);
Serial.Print(",");
Serial.println(valb);
}
}
Serial.println();
///*
Enviar un encabezado de respuesta http estándar
Client.println ("HTTP/1.1 200 OK");
Client.println ("Content-Type: aplicación/json");
Client.println();
el valor de cada pin de entrada analógica de salida como un objeto json-p
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 ("\": ");
sw1 int = digitalRead(7);
Si (sw1 == HIGH) {}
Client.Print("1");
}
Si (sw1 == LOW) {}
Client.Print("0");
}
Client.Print(",");
//***********************************
Client.Print("\"Temp");
Client.Print ("\": ");
Float tempC1 = sensors.getTempC(Sensor1);
Client.Print(DallasTemperature::toFahrenheit(tempC1));
Client.Print(",");
Client.println("}");
rotura;
}
}
darle tiempo al navegador de web para recibir los datos
Delay(1);
Client.STOP();
}
}