Sisukord:
- Tarvikud
- Samm: loome Adafruitis voo
- Samm: Nüüd teeme armatuurlaua
- Samm: hankige meie võti
- Samm: avage voo lugemise näide
- Samm: seadistame oma ühenduse
- Samm: kontrollige ühendust Adafruit IO -ga
- Samm 7: võimaldab LED -i
- Samm: lisage taimerile ajastus
- 9. samm: loendamine
- 10. samm: muutke see kaugjuhtimiseks: I osa
- 11. samm: muutke see kaugjuhtimiseks: II osa
- 12. samm: mängige ringi! Oleme valmis … või oleme?
- Samm 13: LISAKOHT: looge hetke nupp
- 14. samm: LISAD: lisage lähtestamisfunktsioon
Video: Kaugjuhtimisega taimer koos NodeMCU -ga: 14 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
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
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, 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
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
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
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
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
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
- Ühendage lüliti taimeriga
- Seadke ON väärtus: 1
- 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
Naaseme oma armatuurlaua juurde. Nüüd tahame taas luua uue ploki.
- Loo hetke nupp
- Ühendage see taimeri vooga
- Määrake pressimisväärtuseks: 2
- EEMALDA vabastusväärtus
- 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:
WiFi kell, taimer ja ilmajaam, Blynk juhitav: 5 sammu (koos piltidega)
WiFi -kell, taimer ja ilmajaam, Blynk juhitav: See on Morphing digitaalne kell (tänu Hari Wigunale kontseptsiooni ja morfiseerimiskoodi eest), see on ka analoogkell, ilmateatejaam ja köögitaimer. Seda juhib täielikult Blynk rakendus nutitelefonis WiFi kaudu. Rakendus võimaldab teil
Võitle koroonaviirusega: lihtne käsipesu taimer: 8 sammu (koos piltidega)
Võitlus koroonaviiruse vastu: lihtne käsipesu taimer: praeguse pandeemiaga maailmas tundub olukord päris hirmutav. Koroonaviirus võib olla igal pool. Niipalju kui me teame, võib viirust kanda paar päeva ilma mingeid sümptomeid ilmutamata. Õudne tõesti. Aga hei, ära karda liiga
Kõik ühes digitaalne kronomeeter (kell, taimer, äratus, temperatuur): 10 sammu (koos piltidega)
Kõik ühes digitaalne kronomeeter (kell, taimer, äratus, temperatuur): plaanisime teha mõne muu võistluse jaoks taimerit, kuid hiljem rakendasime ka kella (ilma RTC -ta). Programmeerimise juurde asudes tekkis meil huvi rakendada seadmele rohkem funktsioone ja lõpuks lisasime DS3231 RTC, nagu
Kaugjuhtimisega kodurakendus koos mälufunktsiooniga: 4 sammu
Kaugjuhtimisega kodurakendus mälufunktsiooniga: selle vooluahela abil saame juhtida kaugjuhtimispuldi abil 4 releed ja kasutades eepromi funktsiooni, mäletab see releede viimast olekut isegi voolukatkestuse ajal
Kaugjuhtimisega 6WD maastikurobot: 10 sammu (koos piltidega)
Kaugjuhtimisega 6WD maastikurobot: Enamik seni ehitatud roboteid olid neljarattalised robotid, mille kandevõime oli mitu kilogrammi. Seekord otsustasin ehitada suurema roboti, mis ületab hõlpsalt oma teel olevad takistused ja suudab liikuda vähemalt ühe