Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Wacha Tuunde Malisho katika Adafruit
- Hatua ya 2: Sasa Tufanye Dashibodi.
- Hatua ya 3: Pata ufunguo wetu
- Hatua ya 4: Fungua Mfano wa Soma ya Kulisha
- Hatua ya 5: Wacha tuanzishe Uunganisho wetu
- Hatua ya 6: Angalia Uunganisho kwa Adafruit IO
- Hatua ya 7: Lets LED
- Hatua ya 8: Ongeza Muda kwa Timer
- Hatua ya 9: Kuhesabu tena
- Hatua ya 10: Fanya Udhibiti wa Kijijini: Sehemu ya I
- Hatua ya 11: Fanya Udhibiti wa Kijijini: Sehemu ya II
- Hatua ya 12: Cheza Karibu! Tumefanyika… au Je
- Hatua ya 13: ZIADA: Unda Kitufe cha Muda
- Hatua ya 14: ZIADA: Ongeza Kazi ya Upya
Video: Kipima muda kinachodhibitiwa na NodeMCU: Hatua 14
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Hapa tutaunda timer kutumia NodeMCU na Adafruit. Tutakuwa tukionyesha kipima muda chetu na kipande cha LED na tutaweza kudhibiti kwa kutumia simu au kompyuta!
Lengo letu:
Tengeneza kipima muda kwa kutumia kipande cha LED ambacho tunaweza: kuanza, kusitisha na kuweka upya kutumia simu au kompyuta.
Vifaa
Vifaa:
- NodeMCU ESP 8266
- Ukanda wa LED ya Adafruit NeoPixel
Maktaba:
- Adafruit_NeoPixel.h
- AdafruitIO_WiFi.h
Nyingine:
Muunganisho mzuri wa WiFi
Hatua ya 1: Wacha Tuunde Malisho katika Adafruit
Sasa kwa kuwa tumepata kila kitu tunachohitaji, tuko tayari kuanza kujenga! Kwanza kabisa tunapaswa kuunda malisho katika Adafruit. Adafruit ni huduma ambayo inafanya iwe rahisi sana kwetu kuunganisha Arduino yetu kwenye wavuti na kutengeneza huduma muhimu za kudhibiti kijijini. Ikiwa bado haujasajili Adafruit.
Sasa wacha tuunde mpasho mpya
Tunaweza kutaja malisho yetu chochote tunachotaka, ninaiita 'timer'.
Je! Malisho hufanya nini kurekodi kila kitu tunachofanya kwenye dashibodi yetu (ambayo tutaunda kwa dakika moja tu) na kutuma data hiyo kwa bodi yetu, lakini hiyo ndio kitu tutakachotazama mara tu tutakapokuwa na data ya kutumwa.
Hatua ya 2: Sasa Tufanye Dashibodi.
Sasa kwa njia ile ile ambayo tulitengeneza malisho, tutaunda Dashibodi mpya. Nitaita dashibodi yangu: 'interface ya timer' kwa sababu hiyo ndio dashibodi yetu itakuwa: kiunganishi na vifungo vya kudhibiti timer yetu.
Hatua ya 3: Pata ufunguo wetu
Ikiwa tunataka kuunganisha Arduino yetu na malisho yetu tunahitaji kupata kitufe chetu cha Adafruit, hii ni nywila yako ya siri ambayo itahakikisha ni wewe tu unaweza kuunganisha kwenye milisho yako.
Unaweza kupata ufunguo wako kwa kubofya kitufe cha manjano cha AIO cha kulia juu kulia kwa skrini yako huko Adafruit.
Okoa ufunguo huu mahali pengine, tutahitaji baadaye.
Usishiriki ufunguo wako! Vinginevyo watu wenye nia mbaya wangeweza kuungana na milisho yako na vifaa.
Hatua ya 4: Fungua Mfano wa Soma ya Kulisha
Sasa wacha tufungue IDE yetu ya Arduino na tuanze utaratibu wa usimbuaji. Kwanza kabisa tunahitaji kuwa na maktaba ya Adafruit IO Arduino iliyosanikishwa.
Sijui jinsi ya kufunga maktaba? hii ni mwongozo mzuri na Adafruit: Maktaba za Arduino
Adafruit hutoa mifano mingi iliyotengenezwa tayari kwa sisi kutumia na kujifunza kutoka. Moja ya mifano hii ni: adafruitio_21_feed_read. Unaweza kupata mfano huu hapa: Faili - Mifano Adafruit IO Arduino adafruitio_21_feed_read
(samahani interface yangu ya Kidachi kwenye picha)
Hatua ya 5: Wacha tuanzishe Uunganisho wetu
Ikiwa umefanikiwa kufungua mchoro wa adafruitio_21_feed_read unapaswa kuona tabo 2 kwenye mchoro wako: adafruitio_21_feed_read na config.h. Mchoro huu ulifanywa ili tuweze kuungana na malisho ambayo tulifanya katika hatua ya 1.
Ili kuungana na lishe hii tunahitaji kujaza maelezo kadhaa kuhusu WiFi yetu na akaunti yetu ya Adafruit,
Wacha tusafiri kwenda kusanidi.h, hapa tutajaza maelezo yafuatayo:
Jina lako la mtumiaji wa Adafruit:
#fafanua IO_USERNAME "joopert"
Kitufe chako cha Adafruit:
#fafanua IO_KEY "1234567890abcdefghijklmnop"
Jina la WiFi yako:
#fafanua WIFI_SSID "MyWifi"
Na nenosiri lako la WiFi:
#fafanua WIFI_PASS "neno la siri sana"
Sasa turudi kwenye kichupo cha adafruitio_21_feed_read na ujaze:
Jina lako la mtumiaji wa Adafruit… tena:
#fafanua FEED_OWNER "joopert"
Na mwishowe jina lako la kulisha (kutoka kwa malisho tuliyotengeneza katika hatua ya 1):
AdafruitIO_Feed * sharedFeed = io.feed ("timer", FEED_OWNER);
Hatua ya 6: Angalia Uunganisho kwa Adafruit IO
Kuangalia ikiwa hatua tulizochukua hapo awali zimetekelezwa kwa usahihi, tutapakia mchoro wetu kwa NodeMCU. Ukifungua mfuatiliaji wako wa serial, inapaswa kuangalia kitu kama picha hapo juu. Kwanza mfuatiliaji wa serial anakuonyesha kuwa inajaribu kuungana na WiFi yako na Adafruit. ikiwa hiyo ni kamili inapaswa kusema:
Adafruit IO imeunganishwa
Hii ni habari njema! Sasa tunaweza kuanza kuongeza utendaji kwa kipima muda wetu…
Hatua ya 7: Lets LED
Sasa ni wakati wa kuwasha ukanda wetu wa LED!
Unganisha ukanda wako wa LED kwenye PIN ya D5 (ikiwa huwezi kupata D5 unganisha kwenye PIN nyingine na ubadilishe LED_PIN kwenye nambari).
Fafanua ukanda wa LED
Nambari ifuatayo itaongeza maktaba ya NeoPixel (jifunze zaidi juu ya maktaba hii hapa: ina taa ngapi. Ikiwa ukanda wako wa LED una maelezo tofauti, ibadilishe kwa nambari.
Ongeza nambari ifuatayo JUU ya usanidi batili ():
// weka unganisho la NeoPixel # ni pamoja na #ifdef _AVR_ # pamoja #endif
#fafanua LED_PIN D5 // Je! mkanda wa LED umeunganishwa wapi?
#fafanua LED_COUNT 30 // Ina saizi ngapi?
#fafanua NURUFU 50 // mwangaza wa NeoPixel, 0 (dakika) hadi 255 (upeo)
Ukanda wa Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Anza ukanda wa LED
Sasa tutaanzisha ukanda wetu wa LED na kuweka mwangaza (mwangaza huenda kutoka dakika 0 hadi 255, lakini ninapendekeza 50… 255 ni mkali KWELI).
Ongeza nambari ifuatayo KATIKA usanidi batili ():
strip. kuanza (); // INITIALIZE NeoPixel strip kitu (INAHitajika) strip.show (); // ZIMA saizi zote ASAP strip.setBrightness (50); // Weka Nuru kwa karibu 1/5 (max = 255)
ledsOn (); // Inaita kazi kuwasha kila LED moja kwa moja
Washa taa
Labda tayari umeona kuwa tunaita kazi ambayo haipo bado, hiyo itakuwa sehemu yetu inayofuata ya usimbuaji. Ikiwa tunataka kuwasha taa zetu lazima tuunde 'kwa kitanzi' ambacho kinawasha kila mtu mmoja mmoja LED (hawajui kitanzi ni nini? Angalia hapa: www.arduino.cc/reference/ sw / lugha / muundo / udhibiti-muundo / kwa /).
Sasa tutakuwa tukiunda kazi: ledsOn ();
Ongeza nambari ifuatayo HAPA CHINI batili ya kushughulikiaMessage ():
ledsOn () {for (int i = 0; i <strip.numPixels (); i ++) {// Kwa kila pikseli katika ukanda… strip.setPixelColor (i, 0, 0, 255); // Weka rangi ya pikseli kwenye ukanda wa bluu. Onyesha (); // Sasisha kipande ili kilingane}}
Pakia
Sasa ni sehemu ya kufurahisha, wacha tupakie nambari yetu kwa NodeMCU… Ikiwa kila kitu kitafanya kazi kwa usahihi ukanda wako wa LED sasa uwe wa bluu kabisa!
Je! Hakuna saizi zinazojitokeza?: Umeunganisha ukanda kwenye PIN sahihi? Au labda muunganisho wako wa mtandao umepotea.
Je! Saizi zingine hazijionyeshi?: Angalia ikiwa unaweka saizi sawa!
Hatua ya 8: Ongeza Muda kwa Timer
Sasa tutahakikisha kwamba kipima muda wetu kweli… vizuri… nyakati, kitu.
Kuna njia tofauti za kufanya wakati na Arduino, moja ni kuchelewesha (), hii inasimamisha usindikaji wa bodi yetu kwa muda uliowekwa. Hatutatumia hii kwani Arduino yetu inafungia wakati wa kuchelewesha, na tunataka bodi yetu kusasisha mara kwa mara. Kwa hivyo tutatumia Millis (), hii ni njia nzuri zaidi ya kufanya wakati huko Arduino, na Millis () bado tunaweza kuendesha nambari kati ya vipindi.
Ikiwa una nia ya jinsi hii inavyofanya kazi unaweza kuangalia nakala hii:
Wacha tuongeze nambari ya Millis ():
Weka nambari hii juu ya usanidi batili ()
unsigned muda mrefu uliopitaMillis = 0; // itahifadhi mara ya mwisho ukanda wa LED uliposasishwa kwa muda = 1000; // muda wa saa yetu (milliseconds)
Na hebu tuweke nambari hii katika kitanzi batili ():
unsigned long longMillis = millis ();// anza TIMER RYTHM ************************************************* ********* ikiwa (currentMillis - previousMillis> = muda) {previousMillis = currentMillis;
// kumaliza TIMER RYTHM ************************************************* ***********
Tulichofanya tu ni kuunda densi kwa ukanda wetu wa LED kuzima LED, katika hatua inayofuata tutaongeza nambari ya kufanya hivyo tu.
Hatua ya 9: Kuhesabu tena
Katika hatua hii: tutafanya kazi ambayo itahakikisha kila sekunde (au muda wowote ulioweka) tunazima LED MOJA mwishoni mwa ukanda hadi taa zetu zote zikiwa zimezimwa.
Tutaunda 'int' juu inayoitwa 'leds'. Hii baadaye itamwambia kipima muda wetu ni ngapi ilisababisha kuzima.
Ongeza nambari ifuatayo JUU ya usanidi batili ():
int leds = LED_COUNT-1; // simu ni saizi ngapi zinapaswa kuwashwa
Sasa wacha tuongeze kazi 'timer ();', hii itakuwa ikizima taa kila sekunde
Ongeza nambari ifuatayo HAPA chini ya ledsOn batili ():
timer timer () {strip.setPixelColor (leds, 0, 0, 0);
ikiwa (leds> -1) {leds--; } mwingine {blinkie (); }}
Tunataka kutoa maoni kwa mtumiaji kwamba kipima muda kimefanywa baada ya taa zote kuwaka. Na 'blinkie ();' LEDs zitaangaza nyekundu baada ya kipima muda kukamilika!
Ongeza nambari ifuatayo JUU ya usanidi batili ():
int blinkStatus = 1; // anamwambia blinkie (); kazi wether taa inapaswa kuwashwa au kuzimwa
Ongeza nambari ifuatayo CHINI YA kipima muda ():
blinkie batili () {if (blinkStatus == 1) {
blinkStatus = 0; ukanda. wazi (); } mwingine {blinkStatus = 1; kwa (int i = 0; i <strip.numPixels (); i ++) {// Kwa kila pikseli katika ukanda… strip.setPixelColor (i, 255, 0, 0); // Weka rangi ya pikseli (katika RAM) ukanda. Onyesha (); // Sasisha kipande ili kilingane}}}}
Mwishowe tunapaswa kuita kazi hiyo katika kitanzi chetu batili ();, Kumbuka TIMER RYTHM tuliyoongeza katika hatua ya 8? Katika hii ikiwa taarifa tutaita kipima muda cha kazi ();.
TIMER RYTHM sasa inapaswa kuonekana kama hii:
// kuanza TIMER RYTHM ************************************************* *********
ikiwa (currentMillis - previousMillis> = interval) {previousMillis = currentMillis; kipima muda (); strip. ******************
Sasa pakia nambari hii!
Hivi sasa kipande chako cha LED kinapaswa kuzima 1 LED kila sekunde na kuangaza nyekundu ikimaliza…
Sasa wacha tufanye kijijini hiki cha mama kupendekezwa!
Hatua ya 10: Fanya Udhibiti wa Kijijini: Sehemu ya I
Tunayo timer yetu, hiyo ni sawa na ya kupendeza lakini nimekuahidi kuwa utaweza kuidhibiti na simu yako sawa? Wacha tuingie hatua ya mwisho ya mradi wetu: kuifanya timer yetu kudhibiti kijijini.
Bado umefungua kichupo chako cha Adafruit? Wacha tusafiri kurudi io.adafruit.com na tuende kwenye dashibodi yetu ya kiunga cha timer na tuunda kizuizi kipya: TOGGLE
- Unganisha kugeuza kwa mlisho wa TIMER
- Weka dhamana ya ON kwa: 1
- Weka thamani ya OFF kuwa: 0
Sababu ya hii ni kwamba Adafruit haitumii data ya maandishi kwa NodeMCU yetu, lakini nambari tu.
Unaweza pia kupeana jina ikiwa ungependa, labda: 'Zima / Zima swichi'
Sasa turudi kwa Arduino IDE
Ili tu kuhakikisha nambari yetu imesasishwa, wacha TUPAKUE nambari yetu tena.
FUNGUA MONITOR WA HUDUMA baada ya kumaliza kupakia na BONYEZA TOGGLE kwenye dashibodi yetu ya Adafruit mara kadhaa. Tunapaswa sasa kuona kitu kama hiki kikijitokeza kwenye mfuatiliaji wetu wa serial:
imepokea <- 0 imepokea <- 1 imepokea <- 0 imepokea <- 1 imepokea <- 0
Hii inamaanisha kuwa tunaweza kutuma vidhibiti kwa NodeMCU yetu!
Ikiwa haupokei ujumbe huu, angalia ikiwa Takwimu yako ya Adafruit katika usanidi wako bado ni sawa.
Hatua ya 11: Fanya Udhibiti wa Kijijini: Sehemu ya II
Sasa kilichobaki ni kufanya kitu na udhibiti wetu uliopokea.
Ili kufanya hivyo tulibadilisha TIMER RYTHM ikiwa taarifa katika kitanzi batili (); kidogo.
Tutaambia NodeMCU yetu kwamba inapaswa kuanza tu kipima wakati tutakapopokea '1' (ambayo inamaanisha: ON) kutoka Adafruit.
Kwanza hebu kukusanya data Adafruit hututumia
Ongeza nambari ifuatayo JUU ya usanidi batili ():
int adaData; // hukusanya data AdaFruit hututumia
Sasa wacha tukusanye data hiyo
Ongeza nambari ifuatayo NDANI ya kushughulikia batiliMessage ():
adaData = data-> kwaInt ();
Wacha tubadilishe kitanzi chetu cha utupu ();
TIMER RYTHM sasa inapaswa kuonekana kama hii:
// kuanza TIMER RYTHM ************************************************* ********* ikiwa (sasaMillis - uliopitaMillis> = muda) {previousMillis = currentMillis; ikiwa (adaData == 0) {Serial.println ("im not running"); } mwingine ikiwa (adaData == 1) {timer (); } onyesha (); } // // kumaliza TIMER RYTHM ************************************************ ************
PAKUA msimbo wako…
Sasa unapaswa kuwasha na kuzima kipima muda kwa kutumia swichi katika Adafruit!
Hatua ya 12: Cheza Karibu! Tumefanyika… au Je
Hivi sasa unapaswa kuwa na timer ya kijijini inayofanya kazi kikamilifu! Ikiwa ndio hiyo kwako basi asante kwa kuja pamoja na mradi huu!
Ikiwa unataka kuendelea kidogo, katika hatua chache zifuatazo tutaongeza kitufe cha Rudisha kwa kipima muda chetu!
Hatua ya 13: ZIADA: Unda Kitufe cha Muda
Wacha turudi kwenye dashibodi yetu. Sasa tunataka TUUNDE ZUI JIPYA tena.
- Unda kitufe cha Kitambo
- Unganisha kwenye malisho ya 'timer'
- Weka thamani ya waandishi wa habari kuwa: 2
- Ondoa thamani ya kutolewa
- Ipe rangi nzuri!
Kwa urahisi kitufe cha kitambo tayari kinaitwa 'Rudisha'!
Mara tu ukiunda kizuizi hiki jaribu, kifungo hufanya kazi ikiwa unapokea:
imepokea <- 2
Katika mfuatiliaji wako wa serial.
Ikiwa hauoni ujumbe huu, jaribu kupakia tena mchoro
Hatua ya 14: ZIADA: Ongeza Kazi ya Upya
Ili kufanya kitufe cha kuweka upya kufanya chochote tunachohitaji kuongeza kazi ambayo inarudisha taa zote kwenye hali ya asili.
Ongeza nambari ifuatayo CHINI ya blinkie batili ():
reun reun () {leds = LED_COUNT; ledsOn (); }
Sasa kilichobaki ni kuita kazi yetu, kwa kuwa tunalazimika kubadilisha TIMER RYTHM mara ya mwisho
TIMER RYTHM sasa inapaswa kuonekana kama hii:
// anza TIMER RYTHM ************************************************* ********* ikiwa (currentMillis - previousMillis> = muda) {previousMillis = currentMillis if (adaData == 0) {Serial.println ("im not running"); } mwingine ikiwa (adaData == 1) {timer (); } mwingine ikiwa (adaData == 2) {rerun (); } onyesha (); } // // kumaliza TIMER RYTHM ************************************************ ************
PAKUA msimbo wako…
Sasa unapaswa pia kuwa na uwezo wa kuweka upya kipima muda kwa kubonyeza kitufe!
Ilipendekeza:
Kipima muda cha 555 Kutoa Ishara ya Kukatiza Atmega328: 7 Hatua
555 Timer to Emit Signal to Interrupt Atmega328: Lengo kuu la mzunguko huu ni kuokoa nishati. Kwa hivyo, sitazungumza juu ya arduino kwa sababu bodi yenyewe ina nguvu isiyo ya lazima juu ya bidhaa ya mwisho. Ni nzuri kwa maendeleo. Lakini, sio nzuri sana kwa miradi ya mwisho inayoendesha batt
Kutumia kipima muda cha 556 kuendesha gari ya Stepper: Hatua 5
Kutumia kipima muda cha 556 kuendesha gari ya Stepper
Pembe kubwa ya Elektroniki Kutumia Kipima muda cha 555: Hatua 9 (na Picha)
Pembe kubwa ya Elektroniki Kutumia Kipima muda cha 555: LM555 hutoa ishara ya pembe ya elektroniki ambayo imeongezewa na LM386. Sauti na sauti ya pembe inaweza kutofautiana kwa urahisi. Pembe inaweza kutumika katika gari, pikipiki, baiskeli, na pikipiki. Usisahau Kujiandikisha kwa miradi zaidi: YouTubePCB
Tumia simu ya rununu kama kipima joto kisichoweza kuwasiliana / kipima joto cha kubebeka: Hatua 8 (na Picha)
Tumia simu ya rununu kama kipima joto kisichoweza kuwasiliana / kipima joto cha kubebeka: Kupima joto la mwili na wasio kuwasiliana / wasio na mawasiliano kama bunduki ya thermo. Niliunda mradi huu kwa sababu Thermo Gun sasa ni ghali sana, kwa hivyo lazima nipate mbadala wa kutengeneza DIY. Na kusudi ni kufanya na toleo la chini la bajeti.SuppliesMLX90614Ardu
Jinsi ya Kutengeneza Kengele ya Gari bandia Kutumia Kipima muda cha 555: Hatua 5
Jinsi ya Kutengeneza Kengele ya Gari bandia Kutumia Kipima muda cha 555: Mradi huu unaonyesha jinsi ya kutengeneza taa inayowaka ya LED na ucheleweshaji wa sekunde tano ukitumia NE555. Hii inaweza kutumika kama kengele ya gari bandia, kwani inaiga mfumo wa kengele ya gari ikiwa na taa nyekundu yenye kung'aa ya LED. Kiwango cha ugumu Mzunguko yenyewe sio mgumu