Étape 5: Le Code
CODE :
Eh bien, je vois vous êtes venus de loin, vous avez une idée sur le matériel, le schéma de câblage et le PCB, comment cas il gentiment. Nous allons maintenant étudier la magie immatériel qui rend tout ce travail.
Ici, nous écrivons le code dans le code à l’aide de l’IDE Arduino pour faire NodeMCU travailler avec un relais détecteur de mouvement PIR et utiliser IOT plate-forme carriots via WIFI
Les gars, j’ai passé un long moment en cas de problème avec ce projet. Il y a diverses questions. Je vais énumérer certains d'entre eux pour vous aider à sauter de brûler de l’huile de minuit.
1) cocher la NodeMCU pins si ils donnent les entrées/sorties correctes que vous assumez, pour par exemple permet de dire que vous prenez la broche nº4 (GPIO) comme une broche d’entrée. Maintenant par défaut cette broche doit se lire... bas that't droit, mais pour une raison quelconque il lit élevé même après l’initialisation de la broche d’entrée. Testez-la!! les conséquences des essais ne pas sont longs et pas tellement amusant.
2) à l’aide de la méthode HTTP get/post directe au lieu d’utiliser une fonction de visualisation fournie par Billy ou Thinger.io. Mon profond respect à ces gars-là pour construire des plates-formes et services incroyables.
Mes 2 cents : la raison étant que le PIR sortie reste élevé pour un couple d’envoie et vous devez apporter dans le délai nécessaire pour éviter d’envoyer des messages multiples. avec certains services tels que Billy ce retard provoque un problème. comme il est requis pour appeler cette fonction est une fois sec 6 ou 7. Il s’agit de mon expérience, je peux me tromper.
3) une fois, il remplit la condition de l’if loop, appeler une fonction, au lieu d’écrire tout avec la boucle. Cela apporte la clarté pour le code et l’aide au dépannage. Encore une fois, c’est mon sentiment.
Vous pouvez régler la sensibilité du PIR pour réduire le temps qu’il reste élevé. quelque chose que vous pourriez envisager...
Avoir du plaisir, ce qui rend ce dispositif ITO...
Rédigé par Junaid Ahmed
Il s’agit d’un logiciel libre, protégé par la licence creative commons
C’est pour tout comme utiliser et il peut y avoir des bugs et autres problèmes.
#include
#include « ESP8266WiFi.h »
const char * ssid = « NETGXXXXX » ;
const char * mot de passe = « XXXXXXXXX » ;
const char * serveur = « api.carriots.com » ;
const String APIKEY = « 1e2f6920a92e3ca079bf60329d7871d69b3881df88df9b2c44eXXXXXXXXXX » ; Remplacez par votre apikey Carriots
const String DEVICE = "lumière / / remplacer avec l’id_developer de votre appareil
int ledpin = 4 ;
int pirpin = 12 ;
int pirstate = faible ;
int val = 0 ;
void setup() {}
Serial.Begin(115200) ;
Delay(10) ;
pinMode(ledpin,OUTPUT) ;
pinMode(pirpin,INPUT) ;
Serial.println("Calibrating") ;
pour (int i = 0; i < 20; i ++) {}
Serial.Print(".") ;
Delay(1000) ;
}
démarrer le wifi
Serial.println() ;
Serial.println() ;
Serial.Print (« Connecting to ») ;
Serial.println(SSID) ;
WiFi.begin (ssid, mot de passe) ;
tandis que (WiFi.status()! = WL_CONNECTED) {}
Delay(500) ;
Serial.Print(".") ;
}
Serial.println("") ;
Serial.println ("WiFi connecté") ;
Serial.println ("adresse IP:") ;
Serial.println(WiFi.localIP()) ;
}
fonction pour parler à la plate-forme Carriot
Sub sendStream()
{
String txt = "" ; Texte à envoyer
Si (pirstate == HIGH) {/ / Alarm OFF
txt = « Mouvement détecté » ;
} else {/ / alarme sur
txt = « Mauvais Somethig » ;
}
Serial.println(txt) ;
Serial.println(Val); / / pour le débogage à titre indicatif seulement
WiFiClient client ;
const int httpPort = 80 ;
Si (client.connect (serveur, 80)) {/ / si il y a une connexion réussie
Serial.println(F("Connected")) ;
Construire le champ de données
String json = "{\"protocol\":\"v2\",\"device\":\""+DEVICE+"\",\"at\":\"now\",\"data\":{\"light\":\""+txt+"\ "}}" ;
Faire une demande HTTP
client.println ("POST /streams HTTP/1.1") ;
client.println ("Host : api.carriots.com") ;
client.println ("Accept : application/json") ;
client.println ("User-Agent : Arduino-Carriots") ;
client.println ("Content-Type : application/json") ;
client.Print ("carriots.apikey:") ;
client.println(apikey) ;
client.Print ("Content-Length:") ;
int thisLength = json.length() ;
client.println(thisLength) ;
client.println ("Connection : close") ;
client.println() ;
client.println(JSON) ;
}
else {}
Si vous n’avez pas une connexion au serveur :
Serial.println (F ("connexion a échoué")) ;
}
}
void loop() {}
Val = digitalRead(pirpin) ;
Serial.println(Val) ;
if(Val == High) {}
digitalWrite(ledpin,HIGH) ;
Si (pirstate == faible) {}
Serial.println ("mouvement détecté") ;
pirstate = élevé ;
Serial.println (F ("Send Stream")) ;
sendStream() ;
Delay(30000) ;
}
/ * while(client.available()) {}
Ligne de chaîne = client.readStringUntil('\r') ;
Serial.Print(Line) ;
Delay(30000) ;
} */
}
else {}
digitalWrite(ledpin,LOW) ;
if(pirstate == High) {}
Serial.println ("mouvement détecté courriel envoyé") ;
pirstate = bas ;
}
}
}