Sisukord:

Kaugjuhtimisega taimer koos NodeMCU -ga: 14 sammu
Kaugjuhtimisega taimer koos NodeMCU -ga: 14 sammu

Video: Kaugjuhtimisega taimer koos NodeMCU -ga: 14 sammu

Video: Kaugjuhtimisega taimer koos NodeMCU -ga: 14 sammu
Video: 60-секундный таймер обратного отсчета с чтением чисел. 2024, November
Anonim
Kaugjuhtimisega taimer koos NodeMCU -ga
Kaugjuhtimisega taimer koos NodeMCU -ga

Siin loome taimerit NodeMCU ja Adafruit abil. Näitame oma taimerit koos LED -ribaga ja saame seda oma telefoni või arvuti abil juhtida!

Meie eesmärk:

Looge LED -riba abil taimer, mida saame: käivitada, peatada ja lähtestada oma telefoni või arvuti abil.

Tarvikud

Riistvara:

  • SõlmMCU ESP 8266
  • Adafruit NeoPixel LED -riba

Raamatukogud:

  • Adafruit_NeoPixel.h
  • AdafruitIO_WiFi.h

Muu:

Korralik WiFi ühendus

Samm: loome Adafruitis voo

Loome Adafruitis voo!
Loome Adafruitis voo!

Nüüd, kui oleme saanud kõik vajaliku, oleme valmis ehitama! Kõigepealt peame looma Adafruitis sööda. Adafruit on teenus, mis muudab meie Arduino Interneti -ühenduse ühendamise ja kasulike kaugjuhtimisfunktsioonide tegemise väga lihtsaks. Kui te pole seda veel teinud, registreeruge Adafruitile.

Nüüd loome uue voo

Me võime oma voogu nimetada mida iganes tahame, mina nimetan seda taimeriks.

Voog salvestab kõik, mida me teeme, armatuurlauale (mille me loome vaid minutiga) ja saadab need andmed meie tahvlile, kuid seda vaatame kohe, kui meil on andmed saadetavad.

Samm: Nüüd teeme armatuurlaua

Nüüd teeme armatuurlaua
Nüüd teeme armatuurlaua
Nüüd teeme armatuurlaua
Nüüd teeme armatuurlaua
Nüüd teeme armatuurlaua
Nüüd teeme armatuurlaua

Nüüd, nagu me voogu tegime, loome uue armatuurlaua. Ma kutsun oma armatuurlauda: „taimeriliides”, sest see on põhimõtteliselt meie armatuurlaud: liides nuppudega, mis juhivad meie taimerit.

Samm: hankige meie võti

Võtke meie võti
Võtke meie võti

Kui tahame oma Arduino oma vooga ühendada, peame hankima oma Adafruit -võtme, see on teie salajane parool, mis tagab, et ainult teie saate oma kanalitega ühenduse luua.

Võtme saate kätte, kui klõpsate Adafruitis ekraani paremas ülanurgas kollast nuppu AIO Key.

Salvestage see võti kuhugi, me vajame seda hiljem.

Ärge jagage oma võtit! Vastasel juhul võivad halva kavatsusega inimesed teie voogude ja seadmetega ühenduse luua.

Samm: avage voo lugemise näide

Avage voo lugemise näide
Avage voo lugemise näide

Nüüd avame oma Arduino IDE ja alustame kodeerimisprotsessi. Kõigepealt peame installima Adafruit IO Arduino raamatukogu.

Ei tea, kuidas raamatukogusid installida? see on Adafruit'i suurepärane juhend: Arduino raamatukogud

Adafruit pakub meile palju eelvalminud näiteid, mida kasutada ja millest õppida. Üks neist näidetest on: adafruitio_21_feed_read. Selle näite leiate siit: Fail - näited Adafruit IO Arduino adafruitio_21_feed_read

(vabandage minu hollandi liidest pildil)

Samm: seadistame oma ühenduse

Kui olete edukalt avanud eskiisi adafruitio_21_feed_read, peaksite oma visandis nägema kahte vahelehte: adafruitio_21_feed_read ja config.h. See visand tehti selleks, et saaksime ühendada vooga, mille tegime 1. etapis.

Selle vooga ühenduse loomiseks peame täitma mõned üksikasjad meie WiFi ja Adafruit konto kohta,

Reisime aadressile config.h, siin täidame järgmised üksikasjad:

Teie Adafruit'i kasutajanimi:

#define IO_USERNAME "joopert"

Teie Adafruit -võti:

#define IO_KEY "1234567890abcdefghijklmnop"

Teie WiFi nimi:

#define WIFI_SSID "MyWifi"

Ja teie WiFi parool:

#define WIFI_PASS "aVerySecretPassword"

Nüüd läheme tagasi vahekaardile adafruitio_21_feed_read ja täidame:

Teie Adafruit'i kasutajanimi… uuesti:

#define FEED_OWNER "joopert"

Ja lõpuks teie voo nimi (voost, mille tegime 1. sammus):

AdafruitIO_Feed *sharedFeed = io.feed ("taimer", FEED_OWNER);

Samm: kontrollige ühendust Adafruit IO -ga

Kontrollige ühendust Adafruit IO -ga
Kontrollige ühendust Adafruit IO -ga

Et kontrollida, kas varem tehtud sammud on õigesti täidetud, laadime oma visandi NodeMCU -sse üles. Kui avate oma seeriamonitori, peaks see välja nägema nagu ülaltoodud pilt. Esiteks näitab jadamonitor teile, et üritab luua ühenduse teie WiFi ja Adafruitiga. kui see on täielik, peaks see ütlema:

Adafruit IO ühendatud

See on suurepärane uudis! Nüüd saame hakata oma taimerile funktsioone lisama …

Samm 7: võimaldab LED -i

Võimaldab LED -i
Võimaldab LED -i
Võimaldab LED -i
Võimaldab LED -i

Nüüd on aeg meie LED -riba sisse lülitada!

Ühendage oma LED -riba D5 PIN -koodiga (kui te ei leia D5 -d, ühendage see teise PIN -koodiga ja muutke koodis LED_PIN).

Määrake LED -riba

Järgmine kood lisab NeoPixeli raamatukogu (selle raamatukogu kohta leiate lisateavet siit: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) ja veenduge, et meie Arduino teab, kus meie LED-riba asub ja kui palju tal tulesid on. Kui teie LED -ribal on erinevad spetsifikatsioonid, muutke seda koodis.

Lisage tühja seadistuse () kohale järgmine kood:

// NeoPixeli ühenduse seadistamine #include #ifdef _AVR_ #include #endif

#define LED_PIN D5 // Kuhu LED -riba on ühendatud?

#define LED_COUNT 30 // Mitu pikslit sellel on?

#define BRIGHTNESS 50 // NeoPixeli heledus, 0 (min) kuni 255 (max)

Adafruit_NeoPixel riba (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

Käivitage LED -riba

Nüüd käivitame oma LED -riba ja seadistame heleduse (heledus on vahemikus 0 min kuni 255 max, kuid ma soovitan 50… 255 on TÕESTI hele).

Lisage tühisesse seadistusse () järgmine kood:

riba.algus (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // Lülita kõik pikslid ASAP riba välja. SetBrightness (50); // Seadke Heledus umbes 1/5 (max = 255)

ledsOn (); // Kutsub funktsiooni iga LED -i ükshaaval sisse lülitama

Lülitage tuled sisse

Võib -olla olete juba märganud, et kutsume funktsiooni, mida veel pole, see on meie järgmine kodeerimise osa. Kui tahame oma tulesid sisse lülitada, peame looma „silmuse jaoks”, mis lülitab iga LED -i ükshaaval sisse (ei tea, mis on silmus? Vaadake seda siit: www.arduino.cc/reference/ et/keel/struktuur/kontroll-struktuur/jaoks/).

Nüüd loome funktsiooni: ledsOn ();

Lisage järgmine kood BOLOW void handleMessage ():

void ledsOn () {for (int i = 0; i <strip.numPixels (); i ++) {// Iga riba piksli kohta … strip.setPixelColor (i, 0, 0, 255); // Määra piksli värv siniseks ribaks.show (); // Värskenda riba sobivaks}}

Laadi üles

Nüüd on lõbus osa, laadime oma koodi NodeMCU -sse üles … Kui kõik töötab õigesti, peaks teie LED -riba nüüd täielikult siniseks muutuma!

Kas piksleid ei kuvata ?: kas olete riba ühendanud õige PIN -koodiga? Või on teie Interneti -ühendus kadunud.

Kas ainult mõnda pikslit ei kuvata?: Kontrollige, kas olete määranud õige pikslite hulga!

Samm: lisage taimerile ajastus

Nüüd veendume, et meie taimer tegelikult … noh … korda, midagi.

Arduinoga saab ajastada erinevaid viise, üks on viivitus (), see peatab meie tahvli töötlemise kindlaksmääratud aja jooksul. Me ei kavatse seda kasutada, kuna meie Arduino külmub viivituse ajal põhimõtteliselt ja me tahame, et meie tahvlit värskendatakse regulaarselt. Nii et me hakkame kasutama Millist (), see on elegantsem viis Arduino ajastamiseks, Millis () abil saame siiski intervallide vahel koodi käivitada.

Kui olete huvitatud sellest, kuidas see töötab, saate seda artiklit vaadata:

Lisame Millise () koodi:

Pange see kood tühja seadistuse kohale ()

allkirjastamata kaua eelmineMillis = 0; // salvestab viimati LED -riba uuendamise intervalli = 1000; // meie taimerite intervall (millisekundid)

Ja paneme selle koodi tühjusse ():

allkirjata pikk voolMillis = millis ();// käivita TIMER RYTHM ******************************************** ********* if (currentMillis - previousMillis> = intervall) {previousMillis = currentMillis;

// lõpp TIMER RYTHM ******************************************** ***********

Me just lõime oma LED -ribale rütmi LED -de väljalülitamiseks, järgmises etapis lisame koodi, et seda teha.

9. samm: loendamine

Selles etapis: teeme funktsiooni, mis tagab, et iga sekund (või mis tahes teie määratud intervall) lülitame riba lõpus välja ühe LED -i, kuni kõik meie LED -id kustuvad.

Loome ülaosas „int” nimega „led”. See ütleb hiljem meie taimerile, mitu LED -i peab veel välja lülitama.

Lisage tühja seadistuse () kohale järgmine kood:

int ledid = LED_COUNT-1; // ütleb, mitu pikslit peaks olema valgustatud

Lisame nüüd funktsiooni 'timer ();', see lülitab tule välja iga sekundi tagant

Lisage järgmine kood tühjade LED -ide () alla ():

void timer () {strip.setPixelColor (ledid, 0, 0, 0);

if (ledid> -1) {leds--; } muu {blinkie (); }}

Tahame anda kasutajale tagasisidet, et taimer on tehtud pärast kõigi tulede põlemist. Koos 'blinkie ();' LED -id hakkavad pärast taimeriga punast vilkuma!

Lisage tühja seadistuse () kohale järgmine kood:

int blinkStatus = 1; // ütleb blinkie (); funktsioon, kas valgus peaks olema sisse või välja lülitatud

Lisage järgmine kood tühjusetaimeri () alla:

tühine blinkie () {if (blinkStatus == 1) {

blinkStatus = 0; riba.selge (); } else {blinkStatus = 1; for (int i = 0; i <strip.numPixels (); i ++) {// Iga riba piksli kohta… strip.setPixelColor (i, 255, 0, 0); // Määra piksli värvi (RAM -is) riba.show (); // Värskenda riba sobivaks}}}}

Lõpuks peame helistama funktsiooni oma tühjusahelas ();, Kas mäletate taimerirütmi, mille lisasime sammus 8? Selles if -lauses kutsume funktsiooni taimeriks ();.

TIMER RYTHM peaks nüüd välja nägema selline:

// käivita TIMER RYTHM ******************************************** *********

if (currentMillis - previousMillis> = intervall) {previousMillis = currentMillis; taimer (); strip.show ();} // lõpeta taimer RYTHM ************************************* *******************

Nüüd laadige see kood üles!

Praegu peaks teie LED -riba välja lülitama 1 LED iga sekund ja vilkuma punaselt, kui see on tehtud …

Nüüd teeme selle emaarmase puldiga!

10. samm: muutke see kaugjuhtimiseks: I osa

Muutke see kaugjuhtimiseks: I osa
Muutke see kaugjuhtimiseks: I osa
Muutke see kaugjuhtimiseks: I osa
Muutke see kaugjuhtimiseks: I osa

Meil on taimer, see on kõik korras ja vägev, aga ma lubasin teile, et saate seda oma telefoniga juhtida? Läheme oma projekti viimasesse etappi: meie taimeriga kaugjuhtimine.

Kas vahekaart Adafruit on endiselt avatud? Läheme tagasi saidile io.adafruit.com ja läheme oma taimeriliidese juhtpaneelile ja loome uue ploki: TOGGLE

  1. Ühendage lüliti taimeriga
  2. Seadke ON väärtus: 1
  3. Seadke väärtuseks OFF: 0

Selle põhjuseks on asjaolu, et Adafruit ei saada meie NodeMCU -le tekstiandmeid, vaid ainult numbreid.

Soovi korral saate Toggle'ile ka nime anda, näiteks: "On/Off switch"

Nüüd pöördume tagasi Arduino IDE juurde

Lihtsalt veendumaks, et meie kood on ajakohane, laadime oma koodi uuesti.

Avage seeriamonitor, kui see on üles laaditud, ja vajutage paar korda meie Adafruit armatuurlaual nuppu. Nüüd peaks meie seeriamonitoris ilmuma midagi sellist:

saadud <- 0saadetud <- 1 saadud <- 0 saadud <- 1 saanud <- 0

See tähendab, et saame tegelikult oma NodeMCU -le juhtelemente saata!

Kui te ei saa neid sõnumeid, kontrollige, kas teie konfiguratsioonis h esitatud Adafruit'i andmed on ikka õiged.

11. samm: muutke see kaugjuhtimiseks: II osa

Nüüd jääb üle vaid teha midagi meie saadud juhtnuppudega.

Selleks peame muutma oma TIMER RYTHM if avaldust tühjusringis (); natukene.

Me ütleme oma NodeMCU -le, et see peaks taimeri käivitama alles siis, kui oleme Adafruitilt saanud 1 (mis tähendab: ON).

Kõigepealt kogume andmeid, mida Adafruit meile saadab

Lisage tühja seadistuse () kohale järgmine kood:

int adaData; // kogub andmeid, mida AdaFruit meile saadab

Nüüd kogume need andmed tegelikult

Lisage tühja käepideme SISSE järgmine kood (Message ():

adaData = andmed-> toInt ();

Muudame oma tühjusahelat ();

TIMER RYTHM peaks nüüd välja nägema selline:

// käivita TIMER RYTHM ******************************************** ********* if (currentMillis - previousMillis> = intervall) {previousMillis = currentMillis; if (adaData == 0) {Serial.println ("im ei tööta"); } else if (adaData == 1) {timer (); } strip.show (); } // lõpp TIMER RYTHM ******************************************* ************

LAADI oma kood…

Nüüd peaksite saama taimeri sisse ja välja lülitada, kasutades Adafruit'i lülitit!

12. samm: mängige ringi! Oleme valmis … või oleme?

Praegu peaks teil olema täielikult toimiv kaugtaimer! Kui see on teie jaoks, siis tänan teid selle projektiga kaasa tulemast!

Kui soovite jätkata natuke kauem, lisame järgmiste sammude ajal oma taimerile RESET -nupu!

Samm 13: LISAKOHT: looge hetke nupp

LISAD: Loo hetke nupp
LISAD: Loo hetke nupp

Naaseme oma armatuurlaua juurde. Nüüd tahame taas luua uue ploki.

  1. Loo hetke nupp
  2. Ühendage see taimeri vooga
  3. Määrake pressimisväärtuseks: 2
  4. EEMALDA vabastusväärtus
  5. Anna sellele kena värv!

Mugavalt on hetkeline nupp juba nimega 'Lähtesta'!

Kui olete selle ploki loonud, katsetage seda, töötab nupp, kui saate:

sai <- 2

Teie jadamonitoris.

Kui te seda teadet ei näe, proovige visand uuesti üles laadida

14. samm: LISAD: lisage lähtestamisfunktsioon

Et lähtestusnupp midagi teha, peame lisama funktsiooni, mis taastab kõik valgusdioodid algsesse olekusse.

Tühja blinkie () alla lisage järgmine kood:

tühine kordus () {ledid = LED_COUNT; ledsOn (); }

Nüüd jääb üle vaid oma funktsiooni kutsumine, selleks peame viimast korda TIMER RYTHMi muutma

TIMER RYTHM peaks nüüd välja nägema selline:

// käivita TIMER RYTHM ******************************************** ********* if (currentMillis - previousMillis> = intervall) {previousMillis = currentMillis if (adaData == 0) {Serial.println ("im not running"); } else if (adaData == 1) {timer (); } else if (adaData == 2) {rerun (); } strip.show (); } // lõpp TIMER RYTHM ******************************************* ************

LAADI oma kood üles …

Nüüd peaksite saama taimerit ka nupule vajutades lähtestada!

Soovitan: