Stap 5: De Code
CODE:
Nou ik zie u ver zijn gekomen, heb je een idee over de hardware, het circuit diagram en de PCB, hoe mooi het geval van het. Laten we nu kijken naar de immateriële magie waardoor al dit werk.
Hier schrijven we de code in code met behulp van de Arduino IDE te maken NodeMCU werken met een estafette, PIR bewegingsmelder en gebruiken van IOT platform carriots via WIFI
Jongens ik heb een lange tijd en probleemoplossing met dit project. Er waren verschillende problemen. I 'm gonna lijst een aantal van hen te helpen u overslaan branden van de olie middernacht.
1) check de NodeMCU pinnen als ze de juiste i/o geven zoals u gaan ervan uit, voor bijvoorbeeld kunt zeggen dat u de pin 4 (GPIO) neemt als een input pin. Nu standaard deze pin lezen moet... lage that't recht, maar om wat voor reden die het leest hoog zelfs na het initialiseren van de pincode in te voeren. Test het! de gevolgen van het niet testen zijn lang en niet zo leuk.
2) met behulp van een directe HTTP get/post-methode in plaats van met behulp van een visualiseren functie verstrekt door BLYNK of Thinger.io. Mijn diepe respect naar deze jongens voor de bouw van de fantastische diensten en platforms.
Mijn 2 cent: de reden is dat de PIR uitgang blijft hoog voor een paar stuurt en u wilt brengen in de nodige vertraging om te voorkomen dat meerdere e-mails te sturen. met sommige diensten zoals BLYNK veroorzaakt deze vertraging een probleem. Als het nodig is om te bellen is die functie eenmaal 6 of 7 sec. Dit is mijn ervaring ik zou verkeerd kunnen zijn.
3) zodra het voldoet aan de voorwaarde van de als lus, roept u een functie, in plaats van het schrijven van alles met de lus. Daarmee duidelijkheid de code en hulp bij het oplossen van problemen. Nogmaals, dit is mijn gevoel.
U kan de gevoeligheid van de PIR te verminderen van de tijd dat het blijft hoog. iets wat die je zou kunnen overwegen...
Veel plezier maken dit IOT apparaat...
geschreven door Junaid Ahmed
Dit is een gratis software beschermd door de creative commons-licentie
Dit is voor als is gebruikt en kan er bugs en andere problemen.
#include
#include "ESP8266WiFi.h"
const char * ssid = "NETGXXXXX";
const char * wachtwoord = "XXXXXXXXX";
const char * server = "api.carriots.com";
Const String APIKEY = "1e2f6920a92e3ca079bf60329d7871d69b3881df88df9b2c44eXXXXXXXXXX"; Vervangen door uw Carriots apikey
Const String apparaat = "licht / / vervangen van de id_developer van uw apparaat
int ledpin = 4;
int pirpin = 12;
int pirstate = laag;
int val = 0;
VOID Setup {}
Serial.begin(115200);
delay(10);
pinMode(ledpin,OUTPUT);
pinMode(pirpin,INPUT);
Serial.println("calibrating");
for (int i = 0; ik < 20; i ++) {}
Serial.Print(".");
delay(1000);
}
beginnen met wifi
Serial.println();
Serial.println();
Serial.Print ("verbinden met");
Serial.println(SSID);
WiFi.begin (ssid, wachtwoord);
terwijl (WiFi.status()! = WL_CONNECTED) {}
delay(500);
Serial.Print(".");
}
Serial.println("");
Serial.println ("WiFi aangesloten");
Serial.println ("IP-adres:");
Serial.println(WiFi.localIP());
}
functie om te praten met het Carriot Platform
VOID sendStream()
{
String txt = ""; Tekst verzenden
Als (pirstate == HIGH) {/ / Alarm uitschakelen
txt = "Beweging gedetecteerd";
} else {/ / Alarm op
txt = "Somethig wrong";
}
Serial.println(txt);
Serial.println(val); / / voor foutopsporing slechts doel
WiFiClient de klant;
Const int httpPort = 80;
Als (client.connect (server, 80)) {/ / als er een succesvolle verbinding
Serial.println(F("Connected"));
Bouwen van het gegevensveld
Json string = "{\"protocol\":\"v2\",\"device\":\""+DEVICE+"\",\"at\":\"now\",\"data\":{\"light\":\""+txt+"\ "}}";
Maken van een HTTP-aanvraag
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 ("verbinding: sluiten");
client.println();
client.println(JSON);
}
else {}
Als je niet een verbinding met de server krijgen:
Serial.println (F ("verbinding mislukt"));
}
}
void loop {}
Val = digitalRead(pirpin);
Serial.println(val);
if(Val == High) {}
digitalWrite(ledpin,HIGH);
Als (pirstate == LOW) {}
Serial.println ("bewegingsdetectie");
pirstate = hoog;
Serial.println (F ("Send Stream"));
sendStream();
delay(30000);
}
/ * while(client.available()) {}
String regel = client.readStringUntil('\r');
Serial.Print(line);
delay(30000);
} */
}
else {}
digitalWrite(ledpin,LOW);
if(pirstate == High) {}
Serial.println ("voorstel speurder e-mail verzonden");
pirstate = laag;
}
}
}