Kaip sukurti savo prijungto „Wi-Fi“ mygtuką naudojant ESP8266

Kaip sukurti savo prijungto „Wi-Fi“ mygtuką naudojant ESP8266

Daiktų internetas turi didžiulį „pasidaryk pats“ potencialą. Turėdami pakankamai žinių ir keletą pigių komponentų, galite sukurti sudėtingą prijungtų įrenginių sistemą.





Tačiau kartais norisi kažko paprasto. Jokių varpų ar švilpukų, tik mygtukas, atliekantis vieną užduotį. Galbūt jau esate susipažinęs su panašiu dalyku, jei kada nors naudojote „Amazon Dash“ mygtuką kasdieniams namų apyvokos daiktams pertvarkyti.





Šiandien mes padarysime „Wi-Fi“ įgalintą mygtuką naudodami „NodeMCU“ ir užprogramuosime jį naudoti IFTTT, kad būtų galima padaryti ... na, bet ką! Rašytinės instrukcijos po vaizdo įrašo, jei norite.





Ko jums reikės

Jums reikės:

  • Galima įsigyti 1 x „NodeMCU“ (ESP8266) plokštę 2-3 USD „AliExpress“
  • 1 x mygtukas
  • 1 x LED (neprivaloma)
  • 1 x 220 omų rezistorius (neprivaloma)
  • Duonos lenta ir sujungimo laidai
  • „Micro USB“ programavimui
  • Kompiuteris su įdiegtu „Arduino IDE“

Be „NodeMCU“, daugumą šių dalių turėtumėte rasti bet kuriame „Arduino“ pradiniame rinkinyje. Šioje pamokoje bus daroma prielaida, kad naudojate pasirenkamą šviesos diodą ir rezistorių, tačiau jie nėra būtini.



1 žingsnis: grandinės nustatymas

Aparatinės įrangos sąranka šiame projekte yra labai paprasta. Nustatykite lentą pagal šią schemą.

Purpurinė viela pritvirtinama kaištis D0 į vieną mygtuko pusę. Žalia viela jungia kitą mygtuko pusę su RST kaištis . Mėlyna viela eina iš kaištis D1 prie rezistoriaus ir šviesos diodo. Neigiama šviesos diodo kojelė pritvirtinama prie GND kaištis „NodeMCU“.





Kai bus sumontuota duonos lenta, ji turėtų atrodyti maždaug taip:

kad „Windows 10“ atrodytų kaip „Windows XP“

Jei jums įdomu, kaip aš pasiekiau savo šviesos diodą prie įžeminimo kaiščio, naudodamas tik tuos mažus kabelio gabalus, tai greitai duonos lentos avarijos kursas turėtų padėti išsiaiškinti! Patikrinkite sąranką ir prijunkite „NodeMCU“ prie kompiuterio per USB.





2 veiksmas: IDE nustatymas

Prieš pradėdami koduoti, turite šiek tiek pasiruošti. Jei to dar nepadarėte, nustatykite „Arduino IDE“, kad jis atpažintų jūsų „NodeMCU“ plokštę. Galite pridėti jį prie savo lentų sąrašo per Failas> Nuostatos .

Išsamesnį šio žingsnio paaiškinimą rasite mūsų „NodeMCU“ įvadiniame straipsnyje.

Šiam projektui reikalingos dvi bibliotekos. Eikite į Eskizas> Įtraukti biblioteką> Tvarkyti bibliotekas . Ieškoti ESP8266WIFI sukūrė Ivanas Grokhotkovas ir ją įdiegė. Ši biblioteka skirta „Wi-Fi“ ryšiams užmegzti naudojant „NodeMCU“ plokštę.

Toliau ieškokite IFTTTWebhook John Romkey ir įdiekite naujausią versiją. Ši biblioteka skirta supaprastinti žiniatinklio užklausų siuntimo į IFTTT procesą.

Tai viskas, ko mums reikia, leiskite koduoti!

Kaip kodeksas veiks

Mes naudosime ESP8266WIFI biblioteką, kad sukurtumėte „Wi-Fi“ ryšį. The IFTTTWebhooks biblioteka pateikia IFTTT prašymą-šiuo atveju paskelbti „Twitter“. Tada, norėdami taupyti energiją, nurodykite „NodeMCU“ plokštei užmigti, kai ji nenaudojama.

Paspaudus mygtuką, jis susies D0 ir RST smeigtukai. Tai iš naujo nustato plokštę ir procesas kartojasi.

Dauguma šios pamokos kodo yra pakankamai paprasta pradedantiesiems. Tai reiškia, kad jei pradėsite veiklą, tai bus daug lengviau suprasti sekus mūsų „Arduino“ vadovas pradedantiesiems .

Ši pamoka dalimis peržvelgia kodą, kad padėtų suprasti. Jei norite pradėti verslą, galite jį rasti visą kodą Pastebin . Atminkite, kad vis tiek turėsite užpildyti „Wi-Fi“ ir IFTTT kredencialus šiame kode, kad jis veiktų!

3 žingsnis: gilaus miego testavimas

Norėdami pradėti, mes sukursime paprastą testą, kuris parodys, kaip veikia gilus miegas. Atidarykite naują eskizą „Arduino IDE“. Įveskite šiuos du kodo gabalus.

#include
#include
#define ledPin 5
#define wakePin 16
#define ssid 'YOUR_WIFI_SSID'
#define password 'YOUR_WIFI_PASSWORD'
#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Čia mes įtraukiame savo bibliotekas ir apibrėžiame keletą kintamųjų, kurių mums reikės mūsų eskize. Pastebėsite, kad „ledPin“ ir „wakePin“ čia sunumeruoti skirtingai, palyginti su aukščiau pateikta „Fritzing“ diagrama. „NodeMCU“ turi skirtingą „Arduino“ plokščių kontaktą. Tačiau dėl šios patogios diagramos tai nėra problema:

Dabar sukurkite sąrankos funkciją:

void setup() {
Serial.begin(115200);
while(!Serial) {
}
Serial.println(' ');// print an empty line before and after Button Press
Serial.println('Button Pressed');
Serial.println(' ');// print an empty line
ESP.deepSleep(wakePin);
}

Čia mes nustatome savo nuoseklųjį prievadą ir laukiame, kol jis prasidės, naudodami ciklo ciklą. Kadangi šis kodas suveiks paspaudus atstatymo mygtuką, spausdiname „Mygtukas paspaustas“ prie serijinio monitoriaus. Tada liepiame „NodeMCU“ eiti giliai miegoti, kol mygtukas, jungiantis „wakePin“ į RST kaištis paspaudžiamas.

Galiausiai, norėdami išbandyti, pridėkite tai prie savo kilpa () metodas:

void loop(){
//if deep sleep is working, this code will never run.
Serial.println('This shouldn't get printed');
}

Paprastai „Arduino“ eskizai po sąrankos nuolat vykdo ciklo funkciją. Kadangi siunčiame plokštę miegoti prieš baigiant sąranką, ciklas niekada neveikia.

Išsaugokite eskizą ir įkelkite jį į lentą. Atidarykite serijinį monitorių ir turėtumėte pamatyti „Mygtukas paspaustas“. Kiekvieną kartą paspaudus mygtuką, lenta iš naujo nustatoma ir pranešimas vėl spausdinamas. Tai veikia!

Pastaba apie serijinį monitorių

Galbūt kai kurių savo projektų metu pastebėjote nesąmoningus simbolius serijiniame monitoriuje. Paprastai taip yra dėl to, kad nenustatytas nuoseklusis monitorius į tą patį duomenų perdavimo spartą kaip Serial.begin (XXXX) norma.

Daugelis vadovų siūlo pradėti nuoseklųjį ryšį naudojant 115200 duomenų perdavimo spartą tokiam projektui. Išbandžiau daugybę derinių, ir jie visi buvo įvairaus laipsnio kvailystės prieš ir po serijinių pranešimų. Remiantis įvairiais forumo pranešimais, tai gali būti sugedusios plokštės ar programinės įrangos suderinamumo problema. Kadangi tai neturi didelės įtakos projektui, renkuosi apsimesti, kad tai nevyksta.

telefono įkrovimas, bet neįsijungimas

Jei turite problemų su serijiniu monitoriumi, išbandykite skirtingas duomenų perdavimo spartas ir pažiūrėkite, kas jums labiausiai tinka.

4 veiksmas: prisijunkite prie „Wi-Fi“

Dabar sukurkite prisijungimo prie „Wi-Fi“ tinklo funkciją.

void connectToWifi() {
Serial.print('Connecting to: SSID NAME'); //uncomment next line to show SSID name
//Serial.print(ssid);
WiFi.begin(ssid, password);
Serial.println(' ');// print an empty line
Serial.print('Attempting to connect: ');
//try to connect for 10 seconds
int i = 10;
while(WiFi.status() != WL_CONNECTED && i >=0) {
delay(1000);
Serial.print(i);
Serial.print(', ');
i--;
}
Serial.println(' ');// print an empty line
//print connection result
if(WiFi.status() == WL_CONNECTED){
Serial.print('Connected.');
Serial.println(' ');// print an empty line
Serial.print('NodeMCU ip address: ');
Serial.println(WiFi.localIP());
}
else {
Serial.println('Connection failed - check your credentials or connection');
}
}

Šis metodas bando prisijungti prie jūsų tinklo dešimt kartų, o tarpas yra tarpas. Sėkmingai arba nepavykus prisijungti prie serijinio monitoriaus.

5 veiksmas: ryšio metodo iškvietimas

Šiuo metu, connectToWifi () niekada nėra vadinamas. Pridėkite skambutį prie sąrankos funkcijos tarp pranešimo „Mygtukas paspaustas“ ir lentos užmigdymo.

connectToWifi();

Jei jums įdomu, kur tai tinka, jis turėtų atrodyti taip:

Eskizo viršuje pakeiskite ssid ir Slaptažodis kintamuosius su jūsų „Wi-Fi“ prisijungimo duomenimis. Išsaugokite eskizą ir įkelkite į lentą.

Dabar, kai lenta bus paleista, ji bandys prisijungti prie jūsų „Wi-Fi“ tinklo, prieš grįždama prie sąrankos funkcijos. Dabar leiskite nustatyti IFTTT integraciją.

6 veiksmas: IFTTT integracijos nustatymas

IFTTT leidžia integruotis su daugybe žiniatinklio paslaugų. Mes jį panaudojome savo „Wi-Fi“ kompiuterio bokšto LED pamokoje, kad išsiųstume įspėjimą, kai gaunamas naujas el. Šiandien mes jį naudosime norėdami išsiųsti tviterį paspausdami mygtuką.

Eikite į Mano programėlės puslapį ir pasirinkite Nauja programėlė

Spustelėkite +šis ir prisijungti prie Žiniatinklio kabliukai . Pasirinkite „Gauti žiniatinklio užklausą“ ir pavadinkite savo įvykį. Daryk paprastai ! Užsirašykite įvykio pavadinimą, vėliau turėsite jį pridėti prie savo „NodeMCU“ kodo. Spustelėkite „Sukurti trigerį“ .

Dabar pasirinkite +tai . Ieškokite „Twitter“ paslaugą ir prisijungti prie jos-turėsite ją įgalioti paskelbti savo „Twitter“ paskyroje. Pasirinkite „Paskelbkite tviterį“ ir pasirinkite savo žinutę.

Kitame ekrane bus paprašyta peržiūrėti programėlę. Spustelėkite baigti. Viskas!

7 veiksmas: IFTTT kredencialų pridėjimas prie kodo

Grįžę į „Arduino IDE“ turėsite pridėti savo IFTTT API raktą ir įvykio pavadinimą prie apibrėžtų kintamųjų. Norėdami rasti API raktą, eikite į Mano programėlės ir pasirinkite Žiniatinklio kabliukai po Paslaugos skirtuką. Pasirinkite Dokumentacija kad galėtumėte pasiekti savo raktą.

Nukopijuokite raktą ir įvykio pavadinimą į savo kodą, pakeisdami jiems nustatytus laikinus pavadinimus.

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Atminkite, kad apversti kableliai turi likti, tik pakeisti tekstą.

Tarp skambučių connectToWifi () ir nusiųsdami lentą miegoti, sukurkite IFTTTWebhook bibliotekos objekto egzempliorių. Šviesos diodas signalizuoja, kad užduotis baigta prieš gilų miegą.

kaip ištrinti antrą „Word“ puslapį
//just connected to Wi-Fi
IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
//now sending board to sleep

Skambinimo trigeris kabliukas objektas suaktyvinamas iš IFTTT programėlės ir turi būti paskelbtas jūsų „Twitter“ paskyroje. Išsaugokite eskizą ir įkelkite. Dabar turėtumėte turėti visiškai veikiantį tweeting mygtuką.

Jei atrodo, kad jis neveikia, atidžiai patikrinkite savo kodą ir įgaliojimus, ar nėra klaidų. Jei tikrai įstrigote, gaukite visą kodą iš viršaus ir palyginkite jį su savo.

Padaryta! Kaip galėtumėte tai dar labiau patobulinti?

Tai yra pagrindinė „Wi-Fi“ mygtuko versija, tačiau yra daug būdų, kaip ją patobulinti. Paprastumo dėlei čia naudojama USB jungtis. Akumuliatorius būtų visiškai mobilus, o grandinė, kurioje būtų grandinė, būtų puikus pradedantysis 3D spausdinimo projektas.

Nepaisant to, kad naudojate gilų miegą, galite pastebėti, kad baterija išsikrauna gana greitai. Yra daug „Arduino“ energijos taupymo patarimai kurie padeda įgyvendinti tokio tipo projektus. Nors ir sunkiau nei ši pamoka, jei nuo pat pradžių sukūrėte savo energiją tausojantį „Arduino“, baterijomis maitinamas „Wi-Fi“ mygtukas gali trukti mėnesius!

Šis projektas puikiai tinka išmaniųjų namų programoms. Jų jau yra nemažas kiekis namų automatikos programėlės galima rasti IFTTT. Baigę pagrindus, galite naudoti beveik bet kurį jutiklį ar jungiklį, kad suaktyvintumėte beveik bet kokią įsivaizduojamą paslaugą.

Vaizdo kreditas: Vadmary / Depositphotos

Dalintis Dalintis „Tweet“ Paštu 6 garsinės alternatyvos: geriausios nemokamos ar pigios garso knygų programos

Jei nenorite mokėti už garso knygas, čia yra keletas puikių programų, leidžiančių nemokamai ir legaliai jų klausytis.

Skaityti toliau
Susijusios temos
  • Pasidaryk pats
  • Arduino
  • „Pasidaryk pats“ projekto vadovėliai
Apie autorių Ianas Buckley(Paskelbti 216 straipsniai)

Ianas Buckley yra laisvai samdomas žurnalistas, muzikantas, atlikėjas ir vaizdo įrašų prodiuseris, gyvenantis Berlyne, Vokietijoje. Kai jis nerašo ar ne scenoje, jis užsiima „pasidaryk pats“ elektronika ar kodu, tikėdamasis tapti pamišusiu mokslininku.

Daugiau iš Ian Buckley

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia