Kontrollera alla ljus eller elektrisk apparat med du Tablet PC eller smartphone (wifi) (4 / 9 steg)
Steg 4: kod
Kod:
Koppla in mikro-USB-kabeln till din mikroprocessor och laptop (kabeln du inte förstörde - det manliga överhuvudet du lödda servar för att driva endast). Jag programmerade allt i arduino. Observera att du kan också programmera i lua och vissa javascript-alternativ. Jag personligen gillar arduino bäst och tycker det är lättast. Nedan och bifogade hittar du koden jag använde med kommentarer. Om du har frågor, skriv dem i kommentarerna.
0) om du är ny till arduino, bli inte skrämd. Bara ladda ner den senaste versionen från arduino.cc och installera. Följ stegen nedan. Du behöver bara grundläggande logik tänkande för att förstå koden och ingen hjärna alls att ladda upp min kod.
Jag använde två bibliotek:
1) Blynk bibliotek, hitta senaste versionen på http://www.blynk.cc/getting-started/
2) elapsedMillis bibliotek, https://github.com/pfeerick/elapsedMillis
Observera också att du måste installera din styrelse. Om du använt wemos d1 mini som jag gjorde, gå till http://www.wemos.cc/tutorial/get_started_in_arduino.html. Välj din version av styrelsen och installationer ã ¥ tgärderna. Jag rekommenderar automatisk installation via arduino styrelsen manager (det är super snabb och lätt). Glöm inte att markera din styrelse senare när du laddar upp.
Utan den senaste versionen av biblioteken och inställningen rätt styrelse fungerar inte koden!
Viktigt: det tillstånd token i koden är den som du hittar i din telefon eller surfplatta i blynk app och mailade till dig själv i föregående steg. Här är viktigt. Också Glöm inte att ändra wifi lösenord och ssid.
Obs: Wemos mini pin layout är annorlunda än den på de vanliga ESP8266. Beakta detta när du arbetar med wemos och blynk. Se bifogad bild. Mörkgrönt är den pin layouten i Blynk, i arduino du bara använda den pin-kod markeras i styrelsen föregås av "D". Exempel: "digitalWrite (D1, låg);"
Koden:
skriven av Ruben Marc Speybrouck
Kolla in min instructables för mer bra grejer:
#define BLYNK_PRINT seriell / / kommentera här ute för att inaktivera utskrifter och spara utrymme #include #include
WidgetTerminal terminal(V1);
Du bör få Auth Token i Blynk App. / / gå till Projektinställningar (mutter ikon). char auth [] = "60b462d1df8c465bb4d7c7f9a21856a0" ;//
int switchstate = 0; int switchstate2 = 0; int relaystate = 0;
lagra de variabler som läser indata.
#include elapsedMillis timeElapsed; unsigned int intervall = 1000; Vänta en sekund (1000 mikrosekunder) mellan knapptryckningar att sätta ljuset på eller stänga igen. Detta undviker glitches och förbättrar stabiliteten. efter en hel del experimenterar fann jag en sekund att fungera bäst. Använd inte dröjsmål för detta eftersom dröjsmål också pausar din wifi-anslutning för en sekund, att göra det återställa. timeElapsed funktioner tillåter void öglan för att hålla igång, tvärtemot enkel dröjsmål funktion och är därför de enda som ska användas när du arbetar med nätverkskommunikation
void setup() {Serial.begin(9600); Blynk.BEGIN (auth, "SSID", "Lösenord"); Fyll i ditt ssid (namnet på ditt wifi-nätverk) och lösenord. Observera att citattecknen måste bo.
pinMode (D4, OUTPUT); pinMode (D2, OUTPUT); pinMode (D3, OUTPUT); pinMode (D5, OUTPUT); pinMode (D8, OUTPUT);
digitalWrite (D4, hög); digitalWrite (D2, hög); digitalWrite (D3, hög); digitalWrite (D5, hög); digitalWrite (D8, hög); Delay(1000);
digitalWrite (D4, låg); digitalWrite (D2, låg); digitalWrite (D3, låg); digitalWrite (D5, låg); digitalWrite (D8, låg);
Jag hittade att byta allt på och av vid uppstart gör sig av med statisk elektricitet och andra oegentligheter. Och extra bonus för att göra detta är att klick från reläet att du vet exakt när enheten är ansluten till internet och fullt startat
Delay(1000);
Terminal.println (F ("Blynk v"BLYNK_VERSION": enheten startade")); Terminal.flush(); Detta kommer att få terminal widget i din blynk app började}
void loop() {Blynk.run (); //initiate anslutning med blynk server, för din telefon app osignerade långa currentMillis = millis(); / / börja räkna millisekunder för förseningar mellan knapptryckningar
switchstate = digitalRead(D3); switchstate2 = digitalRead(D5); D3 är var din fysiska tryckknapp är, D5 är knappen i min blynk app jag väljer. Observera att gpios i blynk app har olika nummer. Serial.Print(switchstate); Serial.Print ("---"); Serial.Print(switchstate2); Serial.Print ("---"); Serial.Print ("RELÄET är:"); Serial.println(relaystate);
För felsökning ingår jag följetong print. Detta fungerar bara via usb från mikroprocessorn till din laptop med arduino's seriell övervaka öppen.
om (relaystate == låg) {om (switchstate == hög || switchstate2 == hög) {//if på fysisk knapp eller knappen i app trycks om (timeElapsed > intervall) / / om mer än en sekund har gått sedan förra gången en knapp trycktes, köra koden och ändra tillståndet relä. {relaystate = hög, digitalWrite (D8, hög), digitalWrite (D4, hög), terminal.println ("sovrum ljus bytte ON"); terminal.flush(); delay(5); timeElapsed = 0; / / återställa räknaren till 0 så räkna startar över...} }
annat {delay(5); / / liten fördröjning att förbättra stabiliteten}}
om reläet är i läge off (låg), slå på den om den blynk app knappen trycks eller fysiska knappen trycks. Ändra tillståndet för den variabeln relaystate till / / Skriv ut till blynk app terminal widget att sovrum ljuset är nu på.
annars om (relaystate == hög) {om (switchstate == hög || switchstate2 == hög) {om (timeElapsed > intervall) / / om mer än en sekund har gått sedan förra gången en knapp trycktes, köra koden och ändra tillståndet relä.
{
relaystate = låg; Terminal.println ("sovrum ljus bytte OFF"); Terminal.flush(); digitalWrite (D8, låg); digitalWrite (D4, låg); Delay(5); timeElapsed = 0; } }
annat {delay(5);}}
om reläet på position på, stänga av den om blynk app knappen trycks eller fysiska knappen trycks. Ändra tillståndet för den variabla relaystate off / / skriva ut till en blynk app terminal widget som sovrum ljuset är släckt.
}
Koden är också fäst i en separat fil, kopiera inte klistra in som det förstör layouten.