Etape 1: Construire l’arduino Circuit
Assembler le circuit arduino par l’image. Charge le croquis fourni n’oubliez pas de mettre votre adresse ip à un disponible sur votre réseau. Une fois que cela a été fait, vous pouvez tester l’installation sans le logiciel openremote en utilisant un web browser, Chrome ou firefox fonctionnent mieux lorsqu’ils ne tentent de télécharger le fichier. Il suffit de mettre en http://192.168.2.157 ou ce qui est votre adresse ip que vous avez utilisé et vous devriez obtenir quelque chose comme ça
{« A1 »: 373, « A0 »: 371, « S0 »: 91, « RED »: 0, « VERT »: 255, « BLUE »: 54, « D7 »: 0, « TEMP »: 77,90,}
C’est un fichier JSON, il montre la valeur de 2 entrées analogiques, la position du servo, la rage de couleur pour les 3 LED de 0 - 255, le statut du commutateur 1 sur la broche 7 et la temp. Pour modifier une des valeurs dans le navigateur web entrez http://192.168.2.157/pinP3=200 cela va changer le site de
{« A1 »: 364, « A0 »: 363, « S0 »: 91, « RED »: 200, « VERT »: 255, « BLUE »: 54, « D7 »: 0, « TEMP »: 77,90,}
et la led rouge ira à presque pleine luminosité. Mettez le commutateur 1 sur (digital pin7) usage
http://192.168.2.157/pinD7=1 pour sur ou http://192.168.2.157/pinD7=0 pour désactiver
{« A1 »: 369, « A0 »: 368, « S0 »: 91, « RED »: 200, « VERT »: 255, « BLUE »: 54, « D7 »: 1, « TEMP »: 77,90,}
Remarquez la « D7 » modifiés par un 1 et la LED doit être entré le. Si vous voulez changer tous les 3 couleurs à une fois que vous pouvez utiliser ce http://192.168.2.157/pinC1, 255,255,255 , cela mettra tous les 3 couleurs R, G, B dans cet ordre à son intensité maximum 255.
{« A1 »: 365, « A0 »: 364, « S0 »: 91, « RED »: 255, « VERT »: 255, « BLUE »: 255, « D7 »: 1, « TEMP »: 77,90,}
Voici une copie de l’arduino IDE croquis
/*
* Répondre aux demandes dans l’URL pour modifier les ports de sortie analogiques et numériques
* indiquer le nombre de ports a changé et la valeur des broches d’entrée analogiques.
* par exemple :
envoi de http://192.168.1.157/?pinD2=1 tourne broche numérique 2
envoi de http://192.168.1.157/?pinD2=0 désactive la broche numérique 2
envoi de http://192.168.1.157/?pinP3=150 transforme la couleur rouge à 150
envoi de http://192.168.1.157/?pinP5=100 transforme la couleur verte à 100
* envoi http://192.168.1.157/?pinC1, 255,255,255 transforme toutes les couleurs jusqu'à blanc sur une seule ligne
envoi de http://192.168.1.157/?pinP6=200 transforme la couleur bleue à 200 val max de 0 à 255
envoi de http://192.168.1.157/?pinS1=90 déplace de servo à 90 marque deg
envoi de http://192.168.2.157 {« A1 »: 369, « A0 »: 368, « S0 »: 11, « RED »: 0, « vert »: 255, « BLUE »: 54, « D7 »: 1, « TEMP »: 78.35,}
*/
#include
#include
#include
#include //only de temp ds18b20
#include //only de temp ds18b20
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS) ;
Capteurs DallasTemperature (& oneWire) ;
Capteur1 DeviceAddress = {0 x 28, 0xAC, 0xD2, 0x6E, 0 x 04, 0 x 00, 0 x 00, 0xF9} ; différent pour chaque appareil ! Utilisez des croquis pour trouver
la mac de Byte [] = {}
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xF0} ;
IPAddress ip (192,168,2, 157) ;
IPAddress myDns(192,168,2,254) ;
Adresse IP passerelle (192, 168, 2 254) ;
EthernetServer server(80) ;
int brightnessR = 0 ; besoin seulement pour rgb
int brightnessG = 0 ; besoin seulement pour rgb
int brightnessB = 0 ; besoin seulement pour rgb
int pos = 0 ; besoin seulement pour servo
minuterie d’int = 0 ;
Servo myservo ; besoin seulement pour servo
void setup()
{
sensors.setResolution (Capteur1, 10) ; pour temp
sensors.setWaitForConversion(false) ; pour temp
sensors.requestTemperatures() ; pour temp
myservo.Attach(9) ; besoin seulement pour servo quel servo de broche est attaché
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()
{
Cette minuterie empêche le capteur de température en cours d’exécution à une grande partie et en ralentissant esquisse
Timer = (minuterie + 1) ;
Si (minuterie == 1000) {}
sensors.requestTemperatures() ; pour temp
Timer = 0 ;
}
EthernetClient client = server.available() ;
Si {(client)
tandis que (client.connected()) {}
Si (client.available()) {}
demandes de changement de compteurs pour afficher le nombre de broches
int digitalRequests = 0 ;
int analogRequests = 0 ;
Si (client.find ("GET /")) {/ / recherche pour « GET »
trouver des jetons commençant par « NIP » et arrêter sur la première ligne vide
Rechercher à la fin de ligne pour « code pin »
tandis que (client.findUntil (« pin », « \n\r »)) {}
type de char = client.read() ; D ou A
la valeur de nombre entier ascii suivante dans le flux est la broche
broche int = client.parseInt() ;
int val = client.parseInt() ; l’entier après que c’est la valeur
valg int = client.parseInt() ;
valb int = client.parseInt() ;
Si (type == avait ') {}
Serial.Print (« NIP numérique ») ;
pinMode (pin, sortie) ;
digitalWrite (broches, val) ;
}
Si (type == les de ') {}
Serial.Print ("input Servo ») ;
myservo.Write(Val) ;
POS = val ;
Delay(15) ;
}
Si (type == « C ») {}
Serial.Print("Color") ;
analogWrite (3, val) ;
analogWrite (5, valg) ;
analogWrite (6, valb) ;
brightnessR = val ;
brightnessG = valg ;
brightnessB = valb ;
}
Si (type == « P ») {}
Serial.Print("pwn") ;
pinMode (pin, sortie) ;
analogWrite (broches, val) ;
Si (broche == 3) {}
brightnessR = val ;
}
Si (broche == 5) {}
brightnessG = val ;
}
Si (broche == 6) {}
brightnessB = val ;
}
}
ElseIf (type == « A ») {}
Serial.Print (« NIP analogique ») ;
analogWrite (broches, val) ;
analogRequests ++ ;
}
Serial.Print(pin) ;
Serial.Print("=") ;
Serial.Print(Val) ;
Serial.Print(",") ;
Serial.Print(valg) ;
Serial.Print(",") ;
Serial.println(valb) ;
}
}
Serial.println() ;
///*
Envoyer un en-tête de réponse http standard
client.println ("HTTP/1.1 200 OK") ;
client.println ("Content-Type : application/json") ;
client.println() ;
la valeur de chaque broche d’entrée analogique de sortie comme un objet 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 == faible) {}
client.Print("0") ;
}
client.Print(",") ;
//***********************************
client.Print("\"Temp") ;
client.Print ("\": ") ;
float tempC1 = sensors.getTempC(Sensor1) ;
client.Print(DallasTemperature::toFahrenheit(tempC1)) ;
client.Print(",") ;
client.println("}") ;
rupture ;
}
}
donner le temps de navigateur web pour recevoir les données
Delay(1) ;
client.Stop() ;
}
}