Sadržaj:
- Supplies
- Korak 1: Kreirajmo feed u Adafruit -u
- Korak 2: Sada napravimo nadzornu ploču
- Korak 3: Uzmite naš ključ
- Korak 4: Otvorite primjer čitanja izvora
- Korak 5: Postavimo našu vezu
- Korak 6: Provjerite vezu s Adafruit IO
- Korak 7: Omogućava LED
- Korak 8: Dodajte mjerenje vremena tajmeru
- Korak 9: Odbrojavanje
- Korak 10: Omogućite daljinsko upravljanje: I dio
- Korak 11: Omogućite daljinsko upravljanje: Dio II
- Korak 12: Igrajte se! Gotovi smo … ili Jesmo?
- Korak 13: DODATNO: Kreirajte trenutno dugme
- Korak 14: DODATNO: Dodajte funkciju poništavanja
Video: Tajmer na daljinsko upravljanje sa NodeMCU: 14 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Ovdje ćemo stvarati mjerač vremena koristeći NodeMCU i Adafruit. Prikazat ćemo tajmer s LED trakom i moći ćemo ga kontrolirati pomoću telefona ili računara!
Naš cilj:
Napravite tajmer pomoću LED trake koji možemo: pokrenuti, pauzirati i resetirati pomoću telefona ili računara.
Supplies
Hardver:
- NodeMCU ESP 8266
- Adapruit NeoPixel LED traka
Biblioteke:
- Adafruit_NeoPixel.h
- AdafruitIO_WiFi.h
Ostalo:
Pristojna WiFi veza
Korak 1: Kreirajmo feed u Adafruit -u
Sada kada imamo sve što nam je potrebno, spremni smo za početak gradnje! Prije svega moramo stvoriti feed u Adafruit -u. Adafruit je usluga koja nam jako olakšava povezivanje našeg Arduina s internetom i stvaranje korisnih daljinski upravljanih funkcija. Ako već niste, prijavite se za Adafruit.
Sada kreirajmo novi feed
Našoj hrani možemo dati ime kako god želimo, ja to zovem 'timer'.
Ono što feed radi je bilježenje svega što radimo na našoj nadzornoj ploči (koju ćemo stvoriti za samo minutu) i slanje tih podataka na našu ploču, ali to ćemo pogledati nakon što imamo podatke za slanje.
Korak 2: Sada napravimo nadzornu ploču
Sada, na isti način na koji smo napravili feed, stvorit ćemo novu nadzornu ploču. Nazvat ću svoju nadzornu ploču: 'timer interface' jer će to u osnovi i biti naša nadzorna ploča: sučelje s gumbima za kontrolu našeg tajmera.
Korak 3: Uzmite naš ključ
Ako želimo povezati naš Arduino s našim feedom, moramo nabaviti naš Adafruit ključ, ovo je vaša tajna lozinka koja će osigurati da se samo vi možete povezati sa svojim izvorima.
Ključ možete dobiti klikom na žuto dugme AIO ključ u gornjem desnom uglu ekrana u Adafruit -u.
Sačuvajte ovaj ključ negdje, trebat će nam kasnije.
Ne dijelite svoj ključ! U suprotnom bi se ljudi sa lošim namjerama mogli povezati s vašim sažecima sadržaja i uređajima.
Korak 4: Otvorite primjer čitanja izvora
Sada otvorimo naš Arduino IDE i započnimo proces kodiranja. Prije svega, moramo imati instaliranu Adafruit IO Arduino biblioteku.
Ne znate kako instalirati biblioteke? ovo je sjajan Adafruit vodič: Arduino biblioteke
Adafruit nudi mnogo unaprijed izrađenih primjera za upotrebu i učenje. Jedan od ovih primjera je: adafruitio_21_feed_read. Ovaj primjer možete pronaći ovdje: Datoteka - Primjeri Adafruit IO Arduino adafruitio_21_feed_read
(oprostite na holandskom interfejsu na slici)
Korak 5: Postavimo našu vezu
Ako ste uspješno otvorili skicu adafruitio_21_feed_read, trebali biste vidjeti 2 kartice u skici: adafruitio_21_feed_read i config.h. Ova skica je napravljena tako da se možemo povezati s feedom koji smo napravili u koraku 1.
Za povezivanje s ovim feedom potrebno je ispuniti nekoliko detalja o našoj WiFi mreži i našem Adafruit računu,
Putujmo na config.h, ovdje ćemo popuniti sljedeće detalje:
Vaše korisničko ime Adafruit:
#define IO_USERNAME "joopert"
Vaš Adafruit ključ:
#define IO_KEY "1234567890abcdefghijklmnop"
Ime vašeg WiFi -ja:
#define WIFI_SSID "MyWifi"
I vaša WiFi lozinka:
#define WIFI_PASS "aVerySecretPassword"
Vratimo se sada na karticu adafruitio_21_feed_read i popunimo:
Vaše korisničko ime Adafruit … opet:
#define FEED_OWNER "joopert"
I na kraju vaše ime feeda (iz feeda koji smo napravili u koraku 1):
AdafruitIO_Feed *sharedFeed = io.feed ("timer", FEED_OWNER);
Korak 6: Provjerite vezu s Adafruit IO
Da bismo provjerili jesu li koraci koje smo prethodno poduzeli ispravno izvedeni, učitat ćemo našu skicu u NodeMCU. Ako otvorite serijski monitor, trebao bi izgledati poput gornje slike. Prvo vam serijski monitor pokazuje da se pokušava povezati na vašu WiFi mrežu i Adafruit. ako je to kompletno, trebalo bi reći:
Adafruit IO povezan
Ovo je odlična vijest! Sada možemo početi dodavati funkcionalnost našem mjeraču vremena …
Korak 7: Omogućava LED
Sada je vrijeme da uključite našu LED traku!
Povežite LED traku s PIN -om D5 (ako ne možete pronaći D5, povežite ga s drugim PIN -om i promijenite LED_PIN u kodu).
Definišite LED traku
Sljedeći kôd će dodati NeoPixel biblioteku (saznajte više o ovoj biblioteci ovdje: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) i pobrinite se da naš Arduino zna gdje je naša LED traka i koliko svetla ima. Ako vaša LED traka ima različite specifikacije, promijenite je u kodu.
Dodajte sljedeći kod IZNAD void setup ():
// postavljanje NeoPixel veze #include #ifdef _AVR_ #include #endif
#define LED_PIN D5 // Gdje je LED traka spojena?
#define LED_COUNT 30 // Koliko piksela ima?
#define BRIGHTNESS 50 // NeoPixel svjetlina, 0 (min) do 255 (max)
Adafruit_NeoPixel traka (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Pokrenite LED traku
Sada ćemo pokrenuti LED traku i postaviti svjetlinu (svjetlina ide od 0 min do 255 max, ali preporučujem da je 50… 255 stvarno svijetlo).
Dodajte sljedeći kod u void setup ():
strip.begin (); // INICIALIZE NeoPixel strip objekt (OBAVEZNO) strip.show (); // ISKLJUČI sve piksele ASAP strip.setBrightness (50); // Postavite BRIGHTNESS na otprilike 1/5 (max = 255)
ledsOn (); // Poziva funkciju za uključivanje svake LED diode jednu po jednu
Upalite svjetla
Možda ste već primijetili da pozivamo funkciju koja još ne postoji, to će biti naš sljedeći dio kodiranja. Ako želimo uključiti svjetla, moramo stvoriti "for loop" koji uključuje svaku pojedinačnu LED diodu jednu po jednu (ne znate šta je for petlja? Provjerite ovdje: www.arduino.cc/reference/ en/jezik/struktura/kontrolna-struktura/za/).
Sada ćemo kreirati funkciju: ledsOn ();
Dodajte sljedeći kod ispod void handleMessage ():
void ledsOn () {for (int i = 0; i <strip.numPixels (); i ++) {// Za svaki piksel u traci … strip.setPixelColor (i, 0, 0, 255); // Postavi boju piksela na plavu strip.show (); // Ažuriraj traku da odgovara}}
Upload
Sada je zabavni dio, prenesite naš kod na NodeMCU … Ako sve radi ispravno, vaša LED traka bi sada trebala postati potpuno plava!
Ne pojavljuju li se pikseli?: Jeste li traku spojili na pravi PIN? Ili je možda vaša internetska veza prekinuta.
Zar se samo neki pikseli ne prikazuju?: Provjerite jeste li postavili pravu količinu piksela!
Korak 8: Dodajte mjerenje vremena tajmeru
Sada ćemo se pobrinuti da naš tajmer zapravo … pa … puta, nešto.
Postoje različiti načini mjerenja vremena s Arduinom, jedan je delay (), ovo zaustavlja obradu naše ploče na određeni vremenski period. Ovo nećemo koristiti jer se naš Arduino u osnovi zamrzava tijekom kašnjenja i želimo da se naša ploča redovno ažurira. Dakle, koristit ćemo Millis (), ovo je elegantniji način mjerenja vremena u Arduinu, s Millisom () još uvijek možemo pokrenuti kod između intervala.
Ako vas zanima kako ovo funkcionira, možete pogledati ovaj članak:
Dodajmo kod za Millis ():
Stavite ovaj kod ISPRED postavki void ()
unsigned long previousMillis = 0; // pohranit će zadnji put ažuriranje LED trake u intervalima = 1000; // interval našeg tajmera (milisekunde)
I stavimo ovaj kod u void loop ():
bez potpisa duga strujaMillis = millis ();// pokretanje TIMER RITMA ******************************************* ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis;
// kraj TIMER RITMA ********************************************* ***********
Ono što smo upravo učinili je stvorili ritam za našu LED traku kako bi isključili LED diode, u sljedećem koraku ćemo dodati kôd za to.
Korak 9: Odbrojavanje
U ovom koraku: napravit ćemo funkciju koja će se pobrinuti da svake sekunde (ili bilo koji interval koji ste postavili) isključujemo JEDNU LED na kraju trake dok se sve naše LED diode ne isključe.
Na vrhu ćemo stvoriti 'int' pod nazivom 'LED'. Ovo će kasnije reći našem mjeraču vremena koliko LED dioda još mora isključiti.
Dodajte sljedeći kod IZNAD void setup ():
int LED = LED_COUNT-1; // govori koliko piksela treba biti osvijetljeno
Sada dodajmo funkciju 'timer ();', ovo će isključiti svjetlo svake sekunde
Dodajte sljedeći kod Ispod void ledsOn ():
void timer () {strip.setPixelColor (LED diode, 0, 0, 0);
if (LED diode> -1) {LED diode--; } else {blinkie (); }}
Želimo dati povratnu informaciju korisniku da je mjerač vremena urađen nakon što su sva svjetla izgorjela. Sa 'blinkie ();' LED diode će treperiti crveno nakon isteka mjerača vremena!
Dodajte sljedeći kod IZNAD void setup ():
int blinkStatus = 1; // govori blinkie (); funkcija bilo da svjetlo treba biti uključeno ili isključeno
Dodajte sljedeći kôd Ispod void timera ():
void blinkie () {if (blinkStatus == 1) {
blinkStatus = 0; strip.clear (); } else {blinkStatus = 1; for (int i = 0; i <strip.numPixels (); i ++) {// Za svaki piksel u traci… strip.setPixelColor (i, 255, 0, 0); // Postavljanje boje piksela (u RAM -u) strip.show (); // Ažuriraj traku da odgovara}}}}
Na kraju moramo pozvati funkciju u našoj void loop ();, Sjećate li se TIMER RITMA koji smo dodali u koraku 8? U ovom if iskazu pozvat ćemo funkciju timer ();.
TIMER RYTHM bi sada trebao izgledati ovako:
// pokretanje TIMER RITMA ********************************************* *********
if (currentMillis - previousMillis> = interval) {previousMillis = trenutniMillis; timer (); strip.show ();} // kraj TIMER RITMA ************************************** ******************
Sada učitajte ovaj kôd!
Trenutno bi vaša LED traka trebala gasiti 1 LED svake sekunde i treptati crveno kad to završi …
Sada učinimo ovo majkoljublje daljinskim upravljanjem!
Korak 10: Omogućite daljinsko upravljanje: I dio
Imamo tajmer, sve je u redu i uredno, ali obećao sam vam da ćete ga moći kontrolirati svojim telefonom, zar ne? Uđimo u završnu fazu našeg projekta: postavljanje tajmera na daljinsko upravljanje.
Još uvijek imate otvorenu karticu Adafruit? Vratimo se nazad na io.adafruit.com i idemo na našu nadzornu ploču vremenskog sučelja i kreirajmo novi blok: TOGGLE
- Spojite prekidač na TIMER izvod
- Vrijednost ON uključite na: 1
- Vrijednost OFF postavite na: 0
Razlog za to je što Adafruit ne šalje tekstualne podatke u naš NodeMCU, već samo brojeve.
Toggle -u također možete dati ime ako želite, možda: 'Uključivanje/isključivanje prekidača'
Vratimo se sada na Arduino IDE
Samo da bismo bili sigurni da je naš kôd ažuran, hajde da UPLOADIMO naš kôd još jednom.
OTVORITE SERIJSKI MONITOR nakon što završite s učitavanjem i nekoliko puta PRITISNITE ZADATAK na našoj Adafruit nadzornoj ploči. Sada bismo trebali vidjeti ovako nešto kako se pojavljuje na našem serijskom monitoru:
primljeno <- 0primljeno <- 1 primljeno <- 0 primljeno <- 1 primljeno <- 0
To znači da zapravo možemo poslati kontrole na naš NodeMCU!
Ako ne primate ove poruke, provjerite jesu li vaši Adafruit podaci u vašem config.h još uvijek točni.
Korak 11: Omogućite daljinsko upravljanje: Dio II
Sada ostaje samo učiniti nešto s našim primljenim kontrolama.
Da bismo to učinili, moramo promijeniti naš TIMER RYTHM if izraz u void loop (); malo.
Reći ćemo našem NodeMCU -u da bi trebao pokrenuti mjerač vremena samo kad primimo '1' (što znači: UKLJUČENO) od Adafruit -a.
Prvo prikupimo podatke koje nam Adafruit šalje
Dodajte sljedeći kod IZNAD void setup ():
int adaData; // prikuplja podatke koje nam AdaFruit šalje
A sada prikupimo te podatke
Dodajte sljedeći kod UNUTAR void handleMessage ():
adaData = podaci-> toInt ();
Promijenimo našu void petlju ();
TIMER RYTHM bi sada trebao izgledati ovako:
// pokretanje TIMER RITMA ********************************************* ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis; if (adaData == 0) {Serial.println ("ne radim"); } else if (adaData == 1) {timer (); } strip.show (); } // kraj TIMER RITMA ****************************************** ************
UČITAJTE svoj kôd …
Sada biste trebali moći uključiti i isključiti mjerač vremena pomoću prekidača u Adafruit -u!
Korak 12: Igrajte se! Gotovi smo … ili Jesmo?
Trenutno biste trebali imati potpuno funkcionalan daljinski mjerač vremena! Ako je to za vas, hvala vam što ste došli s ovim projektom!
Ako želite nastaviti malo duže, u sljedećih nekoliko koraka dodat ćemo gumb RESET za naš mjerač vremena!
Korak 13: DODATNO: Kreirajte trenutno dugme
Vratimo se našoj kontrolnoj tabli. Sada želimo ponovo stvoriti novi blok.
- Kreirajte dugme Momentary
- Spojite ga na 'timer' feed
- Postavite vrijednost štampe na: 2
- UKLONITE vrijednost otpuštanja
- Dajte mu lijepu boju!
Prikladno je da se trenutno dugme već naziva 'Reset'!
Nakon što kreirate ovaj blok, isprobajte ga, dugme funkcionira ako primite:
primljeno <- 2
U vašem serijskom monitoru.
Ako ne vidite ovu poruku, pokušajte ponovo otpremiti skicu
Korak 14: DODATNO: Dodajte funkciju poništavanja
Da bismo učinili da gumb za resetiranje učini bilo što, moramo dodati funkciju koja vraća sve LED diode u prvobitno stanje.
Dodajte sljedeći kod Ispod void blinkie ():
void rerun () {leds = LED_COUNT; ledsOn (); }
Sada preostaje samo pozivanje naše funkcije, za to moramo zadnji put promijeniti TIMER RITM
TIMER RYTHM bi sada trebao izgledati ovako:
// pokretanje TIMER RITMA ******************************************* ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis if (adaData == 0) {Serial.println ("ne radim"); } else if (adaData == 1) {timer (); } else if (adaData == 2) {rerun (); } strip.show (); } // kraj TIMER RITMA ****************************************** ************
UČITAJTE svoj kôd …
Sada biste također trebali moći resetirati tajmer pritiskom na gumb!
Preporučuje se:
Tvrda torba za daljinsko upravljanje Apple TV Siri s Bluetooth tražilicom pločica: 7 koraka (sa slikama)
Apple TV Siri daljinsko tvrdo kućište s Bluetooth tražilicom pločica: Jednom sam pročitao opis iPhonea kao "štapić maslaca natopljen uljem i poprskan WD40 za dobru mjeru!" Mislim da je to bilo kada je izašao model 6 i svi su bacali svoje skupe nove telefone i razbijali stakla
Desenvolvendo Aplikacije za daljinsko upravljanje za Dragonboard 410c Usando IDE Eclipse: 17 koraka
Desenvolvendo Aplikacije za daljinsko upravljanje za Dragonboard 410c Usando IDE Eclipse: O objektivi za dokumente é najčešće kao neophodne parametre za konfiguraciju ambijenta desenvolvimento, modo que o HostPC -u (računalo / prijenosno računalo), atrav é s do IDE Eclipse kompajlirajte os c ó digos i izvozite za Alvo (povucite
Automobil na daljinsko upravljanje sa komunikacijskim modulom NRF24L01 PA LNA: 5 koraka
Automobil na daljinsko upravljanje s komunikacijskim modulom NRF24L01 PA LNA: U ovoj temi želimo podijeliti informacije o tome kako napraviti automobil na daljinsko upravljanje s modulom NRF24L01 PA LNA. Zapravo postoji nekoliko drugih radio modula, poput 433MHz, HC12, HC05 i LoRa radio modula. Ali po našem mišljenju, mod NRF24L01
Automobil na daljinsko upravljanje: 3 koraka
Automobil na daljinsko upravljanje: Danas (ili večeras, kako god najbolje radili) napravit ćemo automobil na daljinsko upravljanje. Preći ćemo na proces izgradnje automobila, od korištenja unaprijed napravljenog seta za izradu samog automobila, do prototipiranja daljinskog upravljača na ploči, pa konačno lemljenja
POMODORO TEHNIČKI TAJMER - LAKA UPOTREBA HARDVERA ZA UPRAVLJANJE VREMENOM: 4 koraka
POMODORO TEHNIČKI TAJMER - LAKA UPOTREBA HARDVERSKOG UREĐAJA ZA UPRAVLJANJE VREMENOM: 1. Šta je ovo? Pomodoro tehnika je vještina upravljanja vremenom koja dijeli radno vrijeme u blok od 25 minuta i slijedi pauzu od 5 minuta. detalji dolje: https: //francescocirillo.com/pages/pomodoro-techni…Ovaj mjerač vremena je jednostavan za korištenje