Satura rādītājs:
- Piegādes
- 1. darbība: izveidosim plūsmu Adafruit
- 2. darbība. Tagad izveidosim informācijas paneli
- 3. darbība: iegūstiet mūsu atslēgu
- 4. darbība. Atveriet plūsmas lasīšanas piemēru
- 5. darbība: izveidosim savienojumu
- 6. darbība. Pārbaudiet savienojumu ar Adafruit IO
- 7. solis: ļauj LED
- 8. solis: pievienojiet taimerim laiku
- 9. solis: atpakaļskaitīšana
- 10. darbība. Padariet to tālvadības pulti: I daļa
- 11. darbība. Padariet to tālvadības pulti: II daļa
- 12. solis: spēlējiet apkārt! Mēs esam pabeiguši … vai esam?
- 13. darbība: PAPILDUS: Izveidojiet īslaicīgu pogu
- 14. darbība: PAPILDUS: pievienojiet atiestatīšanas funkciju
Video: Tālvadības taimeris ar NodeMCU: 14 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Šeit mēs izveidosim taimeri, izmantojot NodeMCU un Adafruit. Mēs parādīsim savu taimeri ar LED sloksni, un mēs varēsim to kontrolēt, izmantojot tālruni vai datoru!
Mūsu mērķis:
Izmantojot LED sloksni, izveidojiet taimeri, ko mēs varam: sākt, apturēt un atiestatīt, izmantojot tālruni vai datoru.
Piegādes
Aparatūra:
- NodeMCU ESP 8266
- Adafruit NeoPixel LED sloksne
Bibliotēkas:
- Adafruit_NeoPixel.h
- AdafruitIO_WiFi.h
Cits:
Pienācīgs WiFi savienojums
1. darbība: izveidosim plūsmu Adafruit
Tagad, kad esam ieguvuši visu nepieciešamo, esam gatavi sākt būvniecību! Pirmkārt, mums ir jāizveido barība Adafruit. Adafruit ir pakalpojums, kas mums patiešām atvieglo Arduino savienošanu ar internetu un noderīgas tālvadības funkcijas. Ja vēl neesat to izdarījis, reģistrējieties Adafruit.
Tagad izveidosim jaunu plūsmu
Mēs varam nosaukt savu plūsmu par visu, ko vēlamies, es to saucu par “taimeri”.
Plūsma ieraksta visu, ko mēs darām, savā informācijas panelī (ko mēs izveidosim tikai minūtes laikā) un nosūta šos datus mūsu padomei, bet tas ir kaut kas, ko mēs izskatīsim, tiklīdz mums būs jānosūta dati.
2. darbība. Tagad izveidosim informācijas paneli
Tagad, tāpat kā mēs izveidojām plūsmu, mēs izveidosim jaunu informācijas paneli. Es saukšu savu informācijas paneli par “taimera saskarni”, jo tas būtībā būs mūsu informācijas panelis: saskarne ar pogām, lai kontrolētu mūsu taimeri.
3. darbība: iegūstiet mūsu atslēgu
Ja mēs vēlamies savienot savu Arduino ar mūsu plūsmu, mums ir jāiegūst mūsu Adafruit atslēga, tā ir jūsu slepenā parole, kas nodrošinās, ka tikai jūs varat izveidot savienojumu ar savām plūsmām.
Jūs varat saņemt savu atslēgu, noklikšķinot uz dzeltenās pogas AIO Key ekrāna augšējā labajā stūrī Adafruit.
Saglabājiet šo atslēgu kaut kur, mums to vajadzēs vēlāk.
Nedalieties ar savu atslēgu! Pretējā gadījumā cilvēki ar sliktiem nodomiem varētu izveidot savienojumu ar jūsu plūsmām un ierīcēm.
4. darbība. Atveriet plūsmas lasīšanas piemēru
Tagad atvērsim savu Arduino IDE un sāksim kodēšanas procesu. Pirmkārt, mums ir jāinstalē Adafruit IO Arduino bibliotēka.
Vai nezināt, kā instalēt bibliotēkas? šis ir lielisks Adafruit ceļvedis: Arduino bibliotēkas
Adafruit piedāvā daudz iepriekš sagatavotu piemēru, kurus mēs varam izmantot un no kuriem mācīties. Viens no šiem piemēriem ir: adafruitio_21_feed_read. Šo piemēru varat atrast šeit: Fails - Piemēri Adafruit IO Arduino adafruitio_21_feed_read
(atvainojiet manu holandiešu saskarni attēlā)
5. darbība: izveidosim savienojumu
Ja esat veiksmīgi atvēris skici adafruitio_21_feed_read, jūsu skicē vajadzētu redzēt 2 cilnes: adafruitio_21_feed_read un config.h. Šī skice tika izveidota, lai mēs varētu izveidot savienojumu ar plūsmu, ko izveidojām 1. darbībā.
Lai izveidotu savienojumu ar šo plūsmu, mums jāaizpilda daži dati par mūsu WiFi un Adafruit kontu,
Dosimies uz config.h, šeit mēs aizpildīsim šādu informāciju:
Jūsu Adafruit lietotājvārds:
#define IO_USERNAME "joopert"
Jūsu Adafruit atslēga:
#define IO_KEY "1234567890abcdefghijklmnop"
Jūsu WiFi nosaukums:
#define WIFI_SSID "MyWifi"
Un jūsu WiFi parole:
#define WIFI_PASS "aVerySecretPassword"
Tagad atgriezīsimies cilnē adafruitio_21_feed_read un aizpildiet:
Jūsu Adafruit lietotājvārds… vēlreiz:
#define FEED_OWNER "joopert"
Visbeidzot, jūsu plūsmas nosaukums (no plūsmas, ko izveidojām 1. darbībā):
AdafruitIO_Feed *sharedFeed = io.feed ("taimeris", FEED_OWNER);
6. darbība. Pārbaudiet savienojumu ar Adafruit IO
Lai pārbaudītu, vai iepriekš veiktās darbības ir izpildītas pareizi, mēs augšupielādēsim savu skici NodeMCU. Ja atverat seriālo monitoru, tam vajadzētu izskatīties līdzīgi kā attēlā iepriekš. Vispirms sērijas monitors parāda, ka tas mēģina izveidot savienojumu ar jūsu WiFi un Adafruit. ja tas ir pabeigts, vajadzētu teikt:
Pievienots Adafruit IO
Šī ir lieliska ziņa! Tagad mēs varam sākt pievienot funkcionalitāti savam taimerim …
7. solis: ļauj LED
Tagad ir pienācis laiks ieslēgt mūsu LED sloksni!
Pievienojiet savu LED sloksni D5 PIN (ja nevarat atrast D5, pievienojiet to citam PIN un nomainiet kodā esošo LED_PIN).
Definējiet LED sloksni
Šis kods pievienos NeoPixel bibliotēku (uzziniet vairāk par šo bibliotēku šeit: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) un pārliecinieties, vai mūsu Arduino zina, kur atrodas mūsu LED sloksne un cik tam ir gaismas. Ja jūsu LED sloksnei ir atšķirīgas specifikācijas, nomainiet to kodā.
Virs tukšuma iestatīšanas () pievienojiet šādu kodu:
// iestatīt NeoPixel savienojumu #include #ifdef _AVR_ #include #endif
#define LED_PIN D5 // Kur ir savienota LED sloksne?
#define LED_COUNT 30 // Cik pikseļu tam ir?
#define BRIGHTNESS 50 // NeoPixel spilgtums, 0 (min) līdz 255 (maks.)
Adafruit_NeoPixel sloksne (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Palaidiet LED sloksni
Tagad mēs sāksim savu LED sloksni un iestatīsim spilgtumu (spilgtums mainās no 0 min līdz 255 maks., Bet es iesaku 50… 255 ir PATIESI gaišs).
Pievienojiet šādu kodu tukšajā iestatījumā ():
strip.begin (); // UZSĀKT NeoPixel sloksnes objektu (OBLIGĀTS) strip.show (); // Izslēgt visus pikseļus ASAP strip.setBrightness (50); // Iestatiet BRIGHTNESS uz aptuveni 1/5 (maks. = 255)
ledsOn (); // Aicina funkciju ieslēgt katru LED pa vienam
Ieslēdziet gaismas
Varbūt jūs jau esat pamanījuši, ka mēs izsaucam funkciju, kas vēl neeksistē, tā būs mūsu nākamā kodēšanas daļa. Ja mēs vēlamies ieslēgt gaismas, mums ir jāizveido cilpa, kas ieslēdz katru LED atsevišķi (nezināt, kas ir cilpa? Pārbaudiet to šeit: www.arduino.cc/reference/ lv/valoda/struktūra/kontroles struktūra/par/).
Tagad mēs izveidosim funkciju: ledsOn ();
Zemāk pievienojiet šādu kodu void handleMessage ():
void ledsOn () {for (int i = 0; i <strip.numPixels (); i ++) {// Katram joslas pikselim… strip.setPixelColor (i, 0, 0, 255); // Iestatiet pikseļa krāsu uz zilu sloksni.show (); // Atjaunināt joslu atbilstoši}}
Augšupielādēt
Tagad ir jautrā daļa, augšupielādēsim savu kodu NodeMCU … Ja viss darbojas pareizi, jūsu LED sloksnei tagad vajadzētu kļūt pilnīgi zilai!
Vai neparādās pikseļi ?: vai esat pievienojis sloksni pareizajam PIN? Vai arī jūsu interneta savienojums ir zaudēts.
Vai tikai daži pikseļi netiek rādīti ?: pārbaudiet, vai esat iestatījis pareizo pikseļu daudzumu!
8. solis: pievienojiet taimerim laiku
Tagad mēs pārliecināsimies, ka mūsu taimeris patiesībā … nu … reizes, kaut kas.
Ir dažādi veidi, kā noteikt laiku ar Arduino, viens ir kavēšanās (), tas pārtrauc mūsu dēļa apstrādi uz noteiktu laiku. Mēs to neizmantosim, jo kavēšanās laikā mūsu Arduino pamatā sasalst, un mēs vēlamies, lai mūsu dēlis tiktu regulāri atjaunināts. Tātad mēs izmantosim Millis (), tas ir elegantāks laika noteikšanas veids Arduino, ar Millis () mēs joprojām varam palaist kodu starp intervāliem.
Ja jūs interesē, kā tas darbojas, varat apskatīt šo rakstu:
Pievienosim Millis kodu ():
Ievietojiet šo kodu virs spēkā neesošās iestatīšanas ()
neparakstīts ilgi iepriekšMillis = 0; // saglabās pēdējo reizi, kad LED sloksne tika atjaunināta intervālā = 1000; // mūsu taimera intervāls (milisekundes)
Un ievietosim šo kodu tukšajā cilpā ():
neparakstīta garā strāvaMillis = millis ();// start TIMER RYTHM ******************************************** ********* if (currentMillis - previousMillis> = intervāls) {previousMillis = currentMillis;
// beigas TIMER RYTHM ******************************************** ***********
Mēs tikko izveidojām ritmu mūsu LED sloksnei, lai izslēgtu gaismas diodes, nākamajā solī mēs pievienosim kodu, lai to izdarītu.
9. solis: atpakaļskaitīšana
Šajā solī: mēs izveidosim funkciju, kas nodrošinās, ka katru sekundi (vai jebkuru iestatīto intervālu) mēs izslēdzam VIENU gaismas diodi sloksnes beigās, līdz visas mūsu gaismas diodes ir izslēgtas.
Augšpusē izveidosim “int” ar nosaukumu “LED”. Tas vēlāk mūsu taimerim pateiks, cik gaismas diodes tam vēl ir jāizslēdz.
Virs tukšuma iestatīšanas () pievienojiet šādu kodu:
int LED = LED_COUNT-1; // norāda, cik pikseļu vajadzētu apgaismot
Tagad pievienosim funkciju 'taimeris ();', tas izslēgs gaismu katru sekundi
Pievienojiet šādu kodu zem tukšajām gaismas diodēm ():
void timer () {strip.setPixelColor (gaismas diodes, 0, 0, 0);
ja (gaismas diodes> -1) {leds--; } cits {blinkie (); }}
Mēs vēlamies lietotājam sniegt dažas atsauksmes, ka taimeris tiek darīts pēc visu gaismas izdegšanas. Ar 'blinkie ();' pēc taimera pabeigšanas gaismas diodes mirgos sarkanā krāsā!
Virs tukšuma iestatīšanas () pievienojiet šādu kodu:
int blinkStatus = 1; // stāsta blinkie (); lai gaisma būtu ieslēgta vai izslēgta
Zem tukšuma taimera () pievienojiet šādu kodu:
void blinkie () {if (blinkStatus == 1) {
blinkStatus = 0; sloksne.skaidrs (); } cits {blinkStatus = 1; for (int i = 0; i <strip.numPixels (); i ++) {// Katram joslas pikselim… strip.setPixelColor (i, 255, 0, 0); // Iestatiet pikseļu krāsu (RAM) joslu.show (); // Atjaunināt joslu, lai atbilstu}}}}
Visbeidzot, mums ir jāizsauc funkcija mūsu tukšajā ciklā ();, Vai atceraties taimeri, kas tika pievienots 8. darbībā? Šajā if paziņojumā mēs izsauksim funkciju taimeris ();.
TIMER RYTHM tagad vajadzētu izskatīties šādi:
// start TIMER RYTHM ******************************************** *********
if (currentMillis - previousMillis> = intervāls) {previousMillis = currentMillis; taimeris (); strip.show ();} // beigas TIMER RYTHM ************************************* ******************
Tagad augšupielādējiet šo kodu!
Pašlaik jūsu LED sloksnei vajadzētu izslēgt 1 LED katru sekundi un mirgot sarkanā krāsā, kad tā ir pabeigta …
Tagad padarīsim šo mātes mīļāko ar tālvadības pulti!
10. darbība. Padariet to tālvadības pulti: I daļa
Mums ir savs taimeris, tas viss ir kārtībā un smieklīgi, bet es jums apsolīju, ka jūs varēsit to kontrolēt ar savu tālruni? Sāksim mūsu projekta beigu posmu: padarīt taimeri tālvadāmu.
Vai joprojām atvērta cilne Adafruit? Dodamies atpakaļ uz io.adafruit.com un dodamies uz mūsu taimera saskarnes informācijas paneli un izveidojam jaunu bloku: TOGGLE
- Pievienojiet slēdzi TIMER padevei
- Iestatiet ON vērtību: 1
- Iestatiet OFF vērtību uz: 0
Iemesls tam ir tas, ka Adafruit nesūta teksta datus uz mūsu NodeMCU, bet tikai numurus.
Ja vēlaties, varat arī piešķirt Toggle nosaukumu, piemēram: “Ieslēgšanas/izslēgšanas slēdzis”
Tagad atgriezīsimies Arduino IDE
Lai pārliecinātos, ka mūsu kods ir atjaunināts, vēlreiz augšupielādēsim savu kodu.
ATVĒRT SERIĀLO MONITORU, kad tas ir augšupielādēts, un dažas reizes Nospiediet PĀRSLĒGU mūsu Adafruit informācijas panelī. Tagad mūsu sērijas monitorā vajadzētu redzēt kaut ko līdzīgu:
saņemts <- 0 saņemts <- 1 saņemts <- 0 saņemts <- 1 saņemts <- 0
Tas nozīmē, ka mēs faktiski varam nosūtīt vadīklas uz mūsu NodeMCU!
Ja nesaņemat šos ziņojumus, pārbaudiet, vai jūsu konfigurācijas h dati joprojām ir pareizi.
11. darbība. Padariet to tālvadības pulti: II daļa
Tagad atliek tikai kaut ko darīt ar mūsu saņemtajām vadības ierīcēm.
Lai to izdarītu, mums ir jāmaina mūsu TIMER RYTHM if paziņojums tukšuma cilpā (); nedaudz.
Mēs paziņosim savam NodeMCU, ka tai vajadzētu iedarbināt taimeri tikai tad, kad esam saņēmuši “1” (tas nozīmē: IESLĒGTS) no Adafruit.
Vispirms apkoposim datus, ko mums sūta Adafruit
Virs tukšuma iestatīšanas () pievienojiet šādu kodu:
int adaData; // apkopo datus, ko AdaFruit mums nosūta
Tagad faktiski apkoposim šos datus
Pievienojiet šādu kodu INSIDE void handleMessage ():
adaData = dati-> toInt ();
Mainīsim savu tukšuma cilpu ();
TIMER RYTHM tagad vajadzētu izskatīties šādi:
// start TIMER RYTHM ******************************************** ********* if (currentMillis - previousMillis> = intervāls) {previousMillis = currentMillis; ja (adaData == 0) {Serial.println ("im nedarbojas"); } cits if (adaData == 1) {timer (); } strip.show (); } // beigas TIMER RYTHM ******************************************* ************
Augšupielādēt savu kodu…
Tagad jums vajadzētu būt iespējai ieslēgt un izslēgt taimeri, izmantojot Adafruit slēdzi!
12. solis: spēlējiet apkārt! Mēs esam pabeiguši … vai esam?
Šobrīd jums vajadzētu būt pilnībā funkcionējošam tālvadības taimerim! Ja tas jums ir piemērots, tad paldies, ka piedalāties šajā projektā!
Ja vēlaties turpināt mazliet ilgāk, nākamajos soļos mēs savam taimerim pievienosim pogu RESET!
13. darbība: PAPILDUS: Izveidojiet īslaicīgu pogu
Atgriezīsimies pie mūsu informācijas paneļa. Tagad mēs vēlamies vēlreiz izveidot jaunu bloku.
- Izveidojiet īslaicīgu pogu
- Pievienojiet to “taimera” plūsmai
- Iestatiet preses vērtību uz: 2
- NOŅEMT atbrīvošanas vērtību
- Piešķir tai jauku krāsu!
Ērti mirkļa pogu jau sauc par 'Atiestatīt'!
Kad esat izveidojis šo bloku, pārbaudiet to, poga darbojas, ja saņemat:
saņēma <- 2
Sērijas monitorā.
Ja neredzat šo ziņojumu, mēģiniet atkārtoti augšupielādēt skici
14. darbība: PAPILDUS: pievienojiet atiestatīšanas funkciju
Lai atiestatīšanas poga darītu visu, mums jāpievieno funkcija, kas atgriež visas gaismas diodes sākotnējā stāvoklī.
Zem void blinkie () pievienojiet šādu kodu:
void rerun () {leds = LED_COUNT; ledsOn (); }
Tagad atliek tikai izsaukt mūsu funkciju, tāpēc mums pēdējo reizi ir jāmaina TIMER RYTHM
TIMER RYTHM tagad vajadzētu izskatīties šādi:
// start TIMER RYTHM ******************************************** ********* if (currentMillis - previousMillis> = intervāls) {previousMillis = currentMillis if (adaData == 0) {Serial.println ("im not running"); } cits if (adaData == 1) {timer (); } cits if (adaData == 2) {atkārtots (); } strip.show (); } // beigas TIMER RYTHM ******************************************* ************
Augšupielādēt savu kodu…
Tagad arī jums vajadzētu būt iespējai atiestatīt taimeri, nospiežot pogu!
Ieteicams:
Tālvadības pults slēdža tālvadības pults + palaidējs: 6 soļi (ar attēliem)
Tālvadības pults slēdža tālvadības pults + aktivizētājs: šī pedāļa tālvadības pults ir lieliski piemērota, lai apturētu animatorus, fotoattēlu arhivētājus, emuāru autorus un profesionāļus, kuri visu laiku nevar sasniegt savas kameras aizvara pogu vai kuriem ātri jāstrādā pie galda ar pievienotu kameru. augstas virs galvas. 2020. gada decembra atjauninājums: E
Televizora tālvadības pults kļūst par RF tālvadības pulti -- NRF24L01+ apmācība: 5 soļi (ar attēliem)
TV tālvadības pults kļūst par RF tālvadības pulti || NRF24L01+ apmācība: Šajā projektā es jums parādīšu, kā es izmantoju populāro nRF24L01+ RF IC, lai bezvadu režīmā pielāgotu LED sloksnes spilgtumu, izmantojot trīs bezjēdzīgas TV tālvadības pults pogas. Sāksim
555 Taimeris TV tālvadības traucētājs: 3 soļi
555 Taimeris TV tālvadības traucētājs: Kā darbojas TV traucētājs? Televīzijas tālvadības pults izmanto gaismu, lai pārraidītu signālus no tālvadības pults uz televizoru. Vadība uz tālvadības pults izstaro neredzamu infrasarkano gaismu, kas atbilst konkrētiem binārajiem kodiem. Šie binārie kodi satur tādas komandas kā
IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: 6 soļi
IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: ja kādreiz esat pazaudējis televizora vai DVD atskaņotāja tālvadības pulti, jūs zināt, cik apgrūtinoši ir staigāt, atrast un izmantot pašas ierīces pogas. Dažreiz šīs pogas pat nepiedāvā tādas pašas funkcijas kā tālvadības pults. Saņemt
Parastais tālvadības pults komplekts pārveidots par četru kanālu RC rotaļlietu tālvadības pulti: 4 soļi
Parastais tālvadības pults komplekts ir pārveidots par četru kanālu RC rotaļlietu tālvadības pulti:方法 非常 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照 视频 教程 完成 这个 电子 电子 项目 并 为 您。 玩具 这个 这个 电子 项目 并 为 为 服务。 玩具 提供 提供 远程 项目 并