Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Lumikha Tayo ng isang Feed sa Adafruit
- Hakbang 2: Ngayon Gumawa Tayo ng isang Dashboard.
- Hakbang 3: Kunin ang Aming Susi
- Hakbang 4: Buksan ang Halimbawa ng Basahin ang Feed
- Hakbang 5: I-set up Natin ang aming Koneksyon
- Hakbang 6: Suriin ang Koneksyon sa Adafruit IO
- Hakbang 7: Hinahayaan ang LED
- Hakbang 8: Idagdag ang Timing sa Timer
- Hakbang 9: Countdown
- Hakbang 10: Gawin itong Remote Controlled: Bahagi I
- Hakbang 11: Gawin itong Remote Controlled: Bahagi II
- Hakbang 12: Maglaro sa Paikot! Tapos Na… o Tayo Na?
- Hakbang 13: EXTRA: Lumikha ng Button na Sandali
- Hakbang 14: EXTRA: Idagdag ang I-reset ang Function
Video: Remote Controlled Timer With NodeMCU: 14 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Narito lilikha kami ng isang timer gamit ang isang NodeMCU at Adafruit. Ipapakita namin ang aming timer sa isang LED strip at makokontrol namin ito gamit ang aming telepono o computer!
Ang aming layunin:
Lumikha ng isang timer gamit ang isang LED strip na maaari naming: simulan, i-pause at i-reset gamit ang aming telepono o computer.
Mga gamit
Hardware:
- NodeMCU ESP 8266
- Adafruit NeoPixel LED strip
Mga Aklatan:
- Adafruit_NeoPixel.h
- AdafruitIO_WiFi.h
Iba pa:
Isang disenteng koneksyon sa WiFi
Hakbang 1: Lumikha Tayo ng isang Feed sa Adafruit
Ngayon na nakuha namin ang lahat ng kailangan namin, handa na kaming magsimulang magtayo! Una sa lahat kailangan naming lumikha ng isang feed sa Adafruit. Ang Adafruit ay isang serbisyo na ginagawang madali para sa amin na ikonekta ang aming Arduino sa internet at gumawa ng mga kapaki-pakinabang na tampok na remote control. Kung hindi mo pa nagagawa, mag-sign up para sa Adafruit.
Ngayon ay lumikha tayo ng isang bagong feed
Maaari naming pangalanan ang aming feed ng anumang gusto namin, tinatawag kong 'timer'.
Ang ginagawa ng isang feed ay itala ang lahat ng ginagawa namin sa aming dashboard (na lilikha namin sa loob lamang ng isang minuto) at ipadala ang data na iyon sa aming board, ngunit iyon ang isang bagay na titingnan namin sa sandaling mayroon kaming ipadala na data.
Hakbang 2: Ngayon Gumawa Tayo ng isang Dashboard.
Ngayon sa parehong paraan na gumawa kami ng isang feed, lilikha kami ng isang bagong Dashboard. Tatawagan ko ang aking dashboard: 'timer interface' dahil iyon talaga ang magiging dashboard namin: isang interface na may mga pindutan upang makontrol ang aming timer.
Hakbang 3: Kunin ang Aming Susi
Kung nais naming ikonekta ang aming Arduino sa aming feed kailangan naming makuha ang aming key ng Adafruit, ito ang iyong lihim na password na makasisiguro na ikaw lamang ang makakakonekta sa iyong mga feed.
Maaari mong makuha ang iyong susi sa pamamagitan ng pag-click sa dilaw na pindutan ng AIO Key sa kanang tuktok ng iyong screen sa Adafruit.
I-save ang key na ito sa kung saan, kakailanganin natin ito sa paglaon.
Huwag ibahagi ang iyong susi! Kung hindi man ang mga taong may masamang hangarin ay maaaring kumonekta sa iyong mga feed at aparato.
Hakbang 4: Buksan ang Halimbawa ng Basahin ang Feed
Ngayon buksan natin ang aming Arduino IDE at simulan ang mga coding proces. Una sa lahat kailangan naming magkaroon ng naka-install na Adafruit IO Arduino library.
Hindi alam kung paano mag-install ng mga aklatan? ito ay isang mahusay na gabay ng Adafruit: Arduino Library
Nag-aalok ang Adafruit ng maraming paunang ginawa na mga halimbawa para magamit namin at matuto mula. Isa sa mga halimbawang ito ay: adafruitio_21_feed_read. Mahahanap mo ang halimbawang ito dito: File - Mga Halimbawa Adafruit IO Arduino adafruitio_21_feed_read
(patawarin ang aking interface ng dutch sa imahe)
Hakbang 5: I-set up Natin ang aming Koneksyon
Kung matagumpay mong nabuksan ang sketch ng adafruitio_21_feed_read dapat kang makakita ng 2 mga tab sa iyong sketch: adafruitio_21_feed_read at config.h. Ang sketch na ito ay ginawa upang makakonekta kami sa feed na ginawa namin sa hakbang 1.
Upang kumonekta sa feed na ito kailangan naming punan ang ilang mga detalye tungkol sa aming WiFi at sa aming Adafruit account,
Maglakbay tayo sa config.h, dito pupunan natin ang mga sumusunod na detalye:
Ang iyong username ng Adafruit:
# tukuyin ang IO_USERNAME "joopert"
Ang iyong key ng Adafruit:
#define IO_KEY "1234567890abcdefghijklmnop"
Ang pangalan ng iyong WiFi:
# tukuyin ang WIFI_SSID "MyWifi"
At ang iyong password sa WiFi:
# tukuyin ang WIFI_PASS "aVerySecretPassword"
Bumalik tayo ngayon sa tab na adafruitio_21_feed_read at punan:
Ang iyong username ng Adafruit… muli:
# tukuyin ang FEED_OWNER "joopert"
At sa wakas ang iyong feedname (mula sa feed na ginawa namin sa hakbang 1):
AdafruitIO_Feed * sharedFeed = io.feed ("timer", FEED_OWNER);
Hakbang 6: Suriin ang Koneksyon sa Adafruit IO
Upang suriin kung ang mga hakbang na kinuha namin dati ay naisakatuparan nang tama, ilalagay namin ang aming sketch sa NodeMCU. Kung buksan mo ang iyong serial monitor, dapat itong magmukhang katulad ng larawan sa itaas. Ipinapakita sa iyo ng una ang serial monitor na sinusubukan nitong kumonekta sa iyong WiFi at sa Adafruit. kung kumpleto na dapat sabihin:
Nakakonekta ang Adafruit IO
Ito ay mahusay na balita! Maaari na kaming magsimulang magdagdag ng pag-andar sa aming timer …
Hakbang 7: Hinahayaan ang LED
Ngayon ay oras na upang i-on ang aming LED strip!
Ikonekta ang iyong LED strip sa D5 PIN (kung hindi mo makita ang D5 ikonekta ito sa isa pang PIN at baguhin ang LED_PIN sa code).
Tukuyin ang LED strip
Ang sumusunod na code ay idaragdag ang NeoPixel library (alamin ang higit pa tungkol sa library na ito dito: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) at tiyakin na alam ng aming Arduino kung saan ang aming LED strip at ilan ang ilaw nito. Kung ang iyong LED strip ay may iba't ibang mga pagtutukoy, baguhin ito sa code.
Idagdag ang sumusunod na code SA itaas ng walang bisa na pag-setup ():
// set up NeoPixel connection # isama ang #ifdef _AVR_ # isama ang #endif
#define LED_PIN D5 // Saan nakakonekta ang LED strip?
#define LED_COUNT 30 // Ilan ang mga pixel nito?
#define BRIGHTNESS 50 // NeoPixel brightness, 0 (min) to 255 (max)
Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Simulan ang LED strip
Ngayon ay sisimulan namin ang aming LED strip at itatakda ang ningning (ang ningning ay magmula sa 0 min hanggang 255 max, ngunit inirerekumenda ko ang 50 … 255 ay talagang maliwanag).
Idagdag ang sumusunod na code SA walang bisa na pag-setup ():
strip.begin (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // OFF OFF all pixel ASAP strip.setBrightness (50); // Itakda ang KARAPATAN sa halos 1/5 (max = 255)
ledsOn (); // Tumatawag sa pagpapaandar upang i-on ang bawat LED nang paisa-isa
Buksan ang mga ilaw
Marahil napansin mo na na tumatawag kami ng isang pagpapaandar na wala pa, iyon ang aming susunod na bahagi ng pag-coding. Kung nais naming i-on ang aming mga ilaw kailangan naming lumikha ng isang 'para sa loop' na i-on ang bawat indibidwal na LED isa-isa (hindi alam kung ano ang para sa loop? Suriin ito dito: www.arduino.cc/referensi/ tl / wika / istraktura / control-istraktura / para /).
Ngayon ay lilikha namin ang pagpapaandar: ledsOn ();
Idagdag ang sumusunod na code BELOW void handleMessage ():
void ledsOn () {para (int i = 0; i <strip.numPixels (); i ++) {// Para sa bawat pixel sa strip… strip.setPixelColor (i, 0, 0, 255); // Itakda ang kulay ng pixel sa asul na strip.show (); // Update strip to match}}
Mag-upload
Ngayon ang kasiya-siyang bahagi, i-upload natin ang aming code sa NodeMCU … Kung gumagana ang lahat nang tama ang iyong LED strip ay dapat na ngayong ganap na maging asul!
Wala bang nagpapakita ng mga pixel ?: nakakonekta mo ang strip sa tamang PIN? O baka nawala ang iyong koneksyon sa internet.
Ang ilang mga pixel lamang ba ay hindi nagpapakita ?: suriin kung itinakda mo ang tamang dami ng mga pixel!
Hakbang 8: Idagdag ang Timing sa Timer
Ngayon ay titiyakin namin na ang aming timer ay talagang… mabuti … mga oras, isang bagay.
Mayroong iba't ibang mga paraan upang gawin ang tiyempo sa Arduino, ang isa ay pagkaantala (), ititigil nito ang pagproseso ng aming board para sa isang tinukoy na tagal ng panahon. Hindi namin ito gagamitin dahil ang aming Arduino ay karaniwang nagyeyelo habang naantala, at nais naming regular na mag-update ang aming board. Sa gayon gagamitin namin ang Millis (), ito ay isang mas matikas na paraan ng paggawa ng tiyempo sa Arduino, kasama si Millis () maaari pa rin tayong magpatakbo ng code sa pagitan ng mga agwat.
Kung interesado ka sa kung paano ito gumagana maaari mong suriin ang artikulong ito:
Idagdag natin ang code para sa Millis ():
Ilagay ang code na ito SA itaas ng void setup ()
unsigned matagal na nakaraangMillis = 0; // mag-iimbak ng huling oras na ang LED strip ay na-updateint interval = 1000; // agwat ng aming timer (milliseconds)
At ilagay natin ang code na ito SA void loop ():
unsigned long currentMillis = millis ();// simulan ang TIMER RYTHM ***** ********* kung (currentMillis - nakaraangMillis> = agwat) {nakaraangMillis = currentMillis;
// pagtatapos TIMER RYTHM ***** **** *****
Ang ginawa lang namin ay lumikha ng isang rythm para sa aming LED strip upang i-off ang mga LED, sa susunod na hakbang ay idaragdag namin ang code upang magawa iyon.
Hakbang 9: Countdown
Sa hakbang na ito: gagawa kami ng isang pag-andar na matiyak na bawat segundo (o anumang agwat na itinakda mo) ay pinapatay namin ang ONE LED sa dulo ng strip hanggang sa ang lahat ng aming mga LED ay naka-off.
Lilikha kami ng isang 'int' sa tuktok na tinatawag na 'leds'. Sasabihin nito sa paglaon sa aming timer kung gaano karaming mga leds ang kailangan pa nitong patayin.
Idagdag ang sumusunod na code SA itaas ng walang bisa na pag-setup ():
int leds = LED_COUNT-1; // tels kung gaano karaming mga pixel ang dapat na naiilawan
Ngayon idagdag natin ang function na 'timer ();', papatayin nito ang isang ilaw bawat segundo
Idagdag ang sumusunod na code BELOW the void ledsOn ():
void timer () {strip.setPixelColor (leds, 0, 0, 0);
kung (leds> -1) {leds--; } iba pa {blinkie (); }}
Nais naming magbigay ng ilang puna sa gumagamit na ang timer ay tapos na matapos ang lahat ng mga ilaw ay nasunog. Gamit ang 'blinkie ();' ang mga LED ay magpapikit pula matapos ang timer ay tapos na!
Idagdag ang sumusunod na code SA ITAAS ang walang bisa na pag-setup ():
int blinkStatus = 1; // says the blinkie (); pagpapaandar ng basa ang ilaw ay dapat na patayin o patayin
Idagdag ang sumusunod na code BELOW the void timer ():
void blinkie () {if (blinkStatus == 1) {
blinkStatus = 0; strip.clear (); } iba pa {blinkStatus = 1; para sa (int i = 0; i <strip.numPixels (); i ++) {// Para sa bawat pixel sa strip… strip.setPixelColor (i, 255, 0, 0); // Itakda ang kulay ng pixel (sa RAM) na strip.show (); // Update strip upang maitugma}}}}
Sa wakas kailangan nating tawagan ang pagpapaandar sa aming void loop ();, Naaalala ang TIMER RYTHM na idinagdag namin sa hakbang 8? Sa ito kung pahayag tatawagin namin ang function timer ();.
Ang TIMER RYTHM ay dapat magmukhang ganito:
// simulan ang TIMER RYTHM ***** *********
kung (currentMillis - nakaraangMillis> = agwat) {nakaraangMillis = currentMillis; timer (); strip.show ();} // pagtatapos ng TIMER RYTHM ***** ***** *****
Ngayon i-upload ang code na ito!
Sa ngayon ang iyong LED strip ay dapat na patayin ang 1 LED bawat segundo at kumurap pula kapag tapos na ito …
Ngayon gawin nating remote control ang motherlover na ito!
Hakbang 10: Gawin itong Remote Controlled: Bahagi I
Nakuha namin ang aming timer, lahat iyon ay mabuti at masarap ngunit ipinangako ko sa iyo na makokontrol mo ito sa iyong telepono di ba? Ipasok natin ang pangwakas na yugto ng aming proyekto: ginagawang remote control ang aming timer.
Nabuksan mo pa rin ang iyong tab na Adafruit? Maglakbay tayo upang bumalik sa io.adafruit.com at pumunta tayo sa aming dashboard ng interface ng interface at lumikha ng isang bagong bloke: TOGGLE
- Ikonekta ang toggle sa feed ng TIMER
- Itakda ang halaga na ON sa: 1
- Itakda ang halaga na OFF sa: 0
Ang dahilan para dito ay hindi nagpapadala ang Adafruit ng data ng teksto sa aming NodeMCU, ngunit mga numero lamang.
Maaari mo ring bigyan ang Toggle ng isang pangalan kung gusto mo, marahil: 'On / Off switch'
Ngayon bumalik tayo sa Arduino IDE
Upang matiyak lamang na napapanahon ang aming code, mag-UPLOAD ulit tayo ng ating code.
BUKSAN ANG SERIAL MONITOR sa sandaling tapos na ang pag-upload at pindutin ang TOGGLE sa aming Adafruit dashboard ng ilang beses. Dapat ay nakakakita na kami ngayon ng isang bagay tulad nito na lumalabas sa aming serial monitor:
natanggap <- 0tanggap <- 1 natanggap <- 0 natanggap <- 1 natanggap <- 0
Nangangahulugan ito na maaari talaga kaming magpadala ng mga kontrol sa aming NodeMCU!
Kung hindi mo natatanggap ang mga mensaheng ito, suriin kung ang iyong Data ng Adafruit sa iyong config.h ay tama pa rin.
Hakbang 11: Gawin itong Remote Controlled: Bahagi II
Ngayon ang natitira lamang ay ang paggawa ng isang bagay sa aming mga natanggap na kontrol.
Upang magawa iyon kailangan nating baguhin ang aming TIMER RYTHM kung pahayag sa void loop (); kaunti lamang.
Sasabihin namin sa aming NodeMCU na dapat lamang nitong simulan ang timer sa sandaling natanggap namin ang '1' (na nangangahulugang: ON) mula sa Adafruit.
Kolektahin muna natin ang data na ipinapadala sa amin ng Adafruit
Idagdag ang sumusunod na code SA itaas ng walang bisa na pag-setup ():
int adaData; // kinokolekta ang data na ipinadala sa amin ng AdaFruit
Talagang kolektahin natin ang data na iyon
Idagdag ang sumusunod na code SA LOOB ng void handleMessage ():
adaData = data-> toInt ();
Baguhin natin ang ating void loop ();
Ang TIMER RYTHM ay dapat magmukhang ganito:
// simulan ang TIMER RYTHM ***** ********* kung (currentMillis - nakaraangMillis> = agwat) {nakaraangMillis = currentMillis; kung (adaData == 0) {Serial.println ("im not running"); } iba pa kung (adaData == 1) {timer (); } strip.show (); } // pagtatapos TIMER RYTHM ***** *****
I-UPLOAD ang iyong code…
Ngayon ay dapat mong i-on at i-off ang timer sa pamamagitan ng paggamit ng switch sa Adafruit!
Hakbang 12: Maglaro sa Paikot! Tapos Na… o Tayo Na?
Sa ngayon dapat kang magkaroon ng isang ganap na paggana ng remote timer! Kung ito ang para sa iyo pagkatapos ay salamat sa pagsama sa proyektong ito!
Kung nais mong magpatuloy nang medyo mas mahaba, sa mga susunod na hakbang ay nagdaragdag kami ng isang pindutang I-reset para sa aming timer!
Hakbang 13: EXTRA: Lumikha ng Button na Sandali
Bumalik tayo sa aming dashboard. Ngayon nais naming lumikha ng isang BAGONG BLOCK.
- Lumikha ng isang pindutang Sandali
- Ikonekta ito sa feed na 'timer'
- Itakda ang halaga ng pindutin sa: 2
- TANGGALIN ang halaga ng paglabas
- Bigyan ito ng magandang kulay!
Maginhawa ang panandaliang pindutan ay tinatawag na 'I-reset'!
Kapag nagawa mo na ang block na ito ay subukin ito, gagana ang pindutan kung natanggap mo:
natanggap <- 2
Sa iyong serial monitor.
Kung hindi mo nakikita ang mensaheng ito, subukang muling i-upload ang sketch
Hakbang 14: EXTRA: Idagdag ang I-reset ang Function
Upang gawin ang pindutang pag-reset gawin ang anumang kailangan namin upang magdagdag ng isang pagpapaandar na i-reset ang lahat ng mga LED pabalik sa orihinal na estado.
Idagdag ang sumusunod na code BELOW the void blinkie ():
void rerun () {leds = LED_COUNT; ledsOn (); }
Ngayon ang natitira lamang ay ang pagtawag sa aming pag-andar, para doon kailangan nating baguhin ang TIMER RYTHM sa huling pagkakataon
Ang TIMER RYTHM ay dapat magmukhang ganito:
// simulan ang TIMER RYTHM ***** ********* kung (currentMillis - nakaraangMillis> = agwat) {nakaraangMillis = currentMillis kung (adaData == 0) {Serial.println ("hindi ako tumatakbo"); } iba pa kung (adaData == 1) {timer (); } iba pa kung (adaData == 2) {rerun (); } strip.show (); } // pagtatapos TIMER RYTHM ***** *****
I-UPLOAD ang iyong code…
Ngayon ay dapat mo ring ma-reset ang timer sa pamamagitan ng pagpindot sa pindutan!
Inirerekumendang:
Remote Controlled LED Eyes & Costume Hood: 7 Hakbang (na may Mga Larawan)
Remote Controlled LED Eyes & Costume Hood: Twin Jawas! Dobleng Orko! Dalawang mga aswang na aswang mula sa Bubble-Bobble! Ang costume hood na ito ay maaaring maging anumang LED-eyed na nilalang na pinili mo sa pamamagitan lamang ng pagbabago ng mga kulay. Una kong ginawa ang proyektong ito noong 2015 sa isang napaka-simpleng circuit at code, ngunit sa taong ito nais kong mag-cr
Leap Motion Controlled Remote Search and Disposal Robot: 5 Hakbang
Leap Motion Controlled Remote Search and Disposal Robot: Bilang bahagi ng aking pagpasok para sa Leap Motion # 3D Jam, nasasabik akong buuin ang wireless na kilos na kontrolado ang Search / Rescue Robot batay sa Raspberry Pi. Ang proyektong ito ay nagpapakita at nagbibigay ng isang minimalistic na halimbawa ng kung paano ang kilos ng wireless 3D hand ca
Transform-a-Car: Remote Controlled to Self Controlled: 4 Hakbang
Transform-a-Car: Remote Controlled to Self Controlled: Ito ay isang pag-hack sa isang RC car na may sirang remote. Maaari kang makahanap ng maraming sa mga benta sa garahe
ESP8266 RGB LED STRIP WIFI Control - NODEMCU Bilang isang IR Remote para sa Led Strip Controlled Over Wifi - RGB LED STRIP Smartphone Control: 4 Mga Hakbang
ESP8266 RGB LED STRIP WIFI Control | NODEMCU Bilang isang IR Remote para sa Led Strip Controlled Over Wifi | RGB LED STRIP Smartphone Control: Kumusta mga tao sa tutorial na ito matututunan natin kung paano gamitin ang nodemcu o esp8266 bilang isang IR remote upang makontrol ang isang RGB LED strip at ang Nodemcu ay makokontrol ng smartphone sa paglipas ng wifi. Kaya karaniwang maaari mong makontrol ang RGB LED STRIP sa iyong smartphone
AVR Microcontroller. Mga LED Flasher Gamit ang Timer. Nakagambala ang Mga timer. Timer CTC Mode: 6 na Hakbang
AVR Microcontroller. Mga LED Flasher Gamit ang Timer. Nakagambala ang Mga timer. Timer CTC Mode: Kamusta sa lahat! Ang timer ay isang mahalagang konsepto sa larangan ng electronics. Ang bawat elektronikong sangkap ay gumagana sa isang batayan sa oras. Nakakatulong ang base ng oras na ito upang mapanatili ang lahat ng trabaho na naka-synchronize. Ang lahat ng mga microcontroller ay gumagana sa ilang paunang natukoy na dalas ng orasan, ang