Mündəricat:
- Təchizat
- Addım 1: Gəlin Adafruit -də Feed yaradaq
- Addım 2: İndi bir Tablosu hazırlayaq
- Addım 3: Açarımızı əldə edin
- Addım 4: Feed Read nümunəsini açın
- Addım 5: Əlaqəmizi quraq
- Addım 6: Adafruit IO ilə əlaqəni yoxlayın
- Addım 7: LED -ə icazə verin
- Adım 8: Zamanlayıcıya Zamanlama əlavə edin
- Addım 9: Geri sayma
- Addım 10: Uzaqdan idarə olun: I hissə
- Addım 11: Uzaqdan idarə olun: II hissə
- Addım 12: Ətrafda oynayın! Bitirdik … yoxsa biz mi?
- Addım 13: ƏLAVƏ: Anlıq Düymə yaradın
- Addım 14: ƏLAVƏ: Sıfırlama funksiyasını əlavə edin
Video: NodeMCU ilə Uzaqdan İdarə olunan Taymer: 14 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Burada bir NodeMCU və Adafruit istifadə edərək bir taymer yaradacağıq. Taymerimizi LED şeridi ilə göstərəcəyik və telefonumuzdan və ya kompüterimizdən istifadə edərək idarə edə biləcəyik!
Bizim məqsədimiz:
Bir LED şeridi istifadə edərək bir taymer yaradın: telefonumuzdan və ya kompüterimizdən istifadə edərək başladın, dayandırın və sıfırlayın.
Təchizat
Avadanlıq:
- NodeMCU ESP 8266
- Adafruit NeoPixel LED şeridi
Kitabxanalar:
- Adafruit_NeoPixel.h
- AdafruitIO_WiFi.h
Digər:
Yaxşı bir WiFi bağlantısı
Addım 1: Gəlin Adafruit -də Feed yaradaq
İndi ehtiyacımız olan hər şeyi əldə etdikdən sonra tikintiyə başlamağa hazırıq! Əvvəlcə Adafruit -də bir yem yaratmalıyıq. Adafruit, Arduinomuzu internetə bağlamağı və uzaqdan idarə olunan faydalı xüsusiyyətlər yaratmağı həqiqətən asanlaşdıran bir xidmətdir. Hələ etməmisinizsə, Adafruit -ə üzv olun.
İndi yeni bir feed yaradaq
İstədiyimiz yemi adlandıra bilərik, buna 'taymer' deyirəm.
Bir yemin etdiyi şey, tablosumuzda etdiyimiz hər şeyi (yalnız bir dəqiqə ərzində yaradacağıq) qeyd etmək və bu məlumatları lövhəmizə göndərməkdir, ancaq göndəriləcək məlumatları əldə etdikdən sonra baxacağıq.
Addım 2: İndi bir Tablosu hazırlayaq
İndi bir feed hazırladığımız kimi, yeni bir Tablosuna da yaradacağıq. Tablosuna zəng edəcəyəm: 'timer interfeysi', çünki tablosumuzun əsası belə olacaq: timerimizi idarə etmək üçün düymələri olan bir interfeys.
Addım 3: Açarımızı əldə edin
Arduinomuzu yemimizə bağlamaq istəsək, Adafruit açarımızı almalıyıq, bu, yalnız sizin yemlərinizə qoşula biləcəyinizə əmin olacaq gizli şifrənizdir.
Adafruit -də ekranınızın sağ üst tərəfindəki sarı AIO düyməsini basaraq açarınızı əldə edə bilərsiniz.
Bu açarı bir yerdə saxla, sonra ehtiyacımız olacaq.
Açarınızı paylaşmayın! Əks təqdirdə pis niyyətli insanlar lentinizə və cihazlarınıza qoşula bilər.
Addım 4: Feed Read nümunəsini açın
İndi Arduino IDE -ni açaq və kodlaşdırma prosesinə başlayaq. İlk növbədə Adafruit IO Arduino kitabxanasını quraşdırmalıyıq.
Kitabxanaları necə quracağınızı bilmirsiniz? bu Adafruit: Arduino Kitabxanaları tərəfindən əla bir bələdçidir
Adafruit, istifadə etməyimiz və öyrənməyimiz üçün bir çox əvvəlcədən hazırlanmış nümunələr təqdim edir. Bu nümunələrdən biri: adafruitio_21_feed_read. Bu nümunəni burada tapa bilərsiniz: Fayl - Nümunələr Adafruit IO Arduino adafruitio_21_feed_read
(şəkildəki Hollandiya interfeysini bağışlayın)
Addım 5: Əlaqəmizi quraq
Adafruitio_21_feed_read eskizini uğurla açmısınızsa, eskizinizdə 2 nişan görməli olacaqsınız: adafruitio_21_feed_read və config.h. Bu eskiz, 1 -ci addımda hazırladığımız yemə qoşula biləcəyimiz üçün hazırlanmışdır.
Bu yemə qoşulmaq üçün WiFi və Adafruit hesabımız haqqında bir neçə detal doldurmalıyıq.
Config.h saytına səyahət edək, burada aşağıdakı detalları dolduracağıq:
Adafruit istifadəçi adınız:
#oOUSERNAME "joopert" i təyin edin
Adafruit açarınız:
#IO_KEY "1234567890abcdefghijklmnop" təyin edin
WiFi -nin adı:
#WIFI_SSID "MyWifi" ni təyin edin
Və WiFi şifrəniz:
#aIFI_PASS "aVerySecretPassword" təyin edin
İndi adafruitio_21_feed_read sekmesine qayıdaq və dolduraq:
Adafruit istifadəçi adınız… yenə:
#FEED_OWNER "joopert" ni təyin edin
Və nəhayət feed adınız (1 -ci addımda hazırladığımız lentdən):
AdafruitIO_Feed *sharedFeed = io.feed ("timer", FEED_OWNER);
Addım 6: Adafruit IO ilə əlaqəni yoxlayın
Əvvəllər atdığımız addımların düzgün yerinə yetirildiyini yoxlamaq üçün eskizimizi NodeMCU -ya yükləyəcəyik. Serial monitörünüzü açarsanız, yuxarıdakı şəkilə bənzəməlidir. Əvvəlcə serial monitor sizə WiFi və Adafruit -ə qoşulmağa çalışdığını göstərir. tamam olarsa deməlidir:
Adafruit IO qoşulub
Bu əla xəbərdir! İndi sayğacımıza funksionallıq əlavə etməyə başlaya bilərik …
Addım 7: LED -ə icazə verin
İndi LED şeridimizi açmağın vaxtı gəldi!
LED şeridinizi D5 PİN -ə qoşun (əgər D5 -i başqa bir PİN -ə qoşa bilmirsinizsə və kodda LED_PİN -i dəyişirsinizsə).
LED şeridini təyin edin
Aşağıdakı kod NeoPixel kitabxanasını əlavə edəcək (bu kitabxana haqqında daha çox məlumatı buradan əldə edin: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) və Arduino-nun LED şeridimizin harada olduğunu bildiyinə əmin olun. neçə işıq var. LED şeridinizin fərqli xüsusiyyətləri varsa, onu kodda dəyişdirin.
Yuxarıdakı void setup () kodunu əlavə edin:
// NeoPixel bağlantısı qurun #include #ifdef _AVR_ #include #endif
#define LED_PIN D5 // LED şeridi haraya bağlıdır?
#define LED_COUNT 30 // Neçə pikseli var?
#define BRIGHTNESS 50 // NeoPixel parlaqlığı, 0 (dəq) - 255 (maksimum)
Adafruit_NeoPixel zolağı (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
LED şeridini işə salın
İndi LED şeridimizi işə salacağıq və parlaqlığı təyin edəcəyik (parlaqlıq 0 dəqiqədən 255 -ə qədərdir, amma 50… 255 -in həqiqətən parlaq olduğunu məsləhət görürəm).
Void setup () -a aşağıdakı kodu əlavə edin:
strip.begin (); // NeoPixel zolaq obyektini (TƏLƏB EDİR) strip.show () başlatın; // ASAP strip.setBrightness (50) ən qısa zamanda bütün pikselləri söndürün; // BRIGHTNESS -i təxminən 1/5 (maksimum = 255) olaraq təyin edin
ledsOn (); // Hər LED -i tək -tək açmaq üçün funksiyanı çağırır
İşıqları yandırın
Ola bilsin ki, hələ mövcud olmayan bir funksiyanı çağırdığımızı, bu kodlaşdırmanın növbəti hissəmiz olacaq. İşıqlarımızı yandırmaq istəyiriksə, hər bir LED -i tək -tək yandıran bir 'for loop' yaratmalıyıq (for loopun nə olduğunu bilmirsiniz? Bura baxın: www.arduino.cc/reference/ en/dil/quruluş/nəzarət-quruluş/üçün/).
İndi funksiyanı yaradacağıq: ledsOn ();
Aşağıdakı void handleMessage () kodunu əlavə edin:
void ledsOn () {for (int i = 0; i <strip.numPixels (); i ++) {// Şeriddəki hər piksel üçün… strip.setPixelColor (i, 0, 0, 255); // Pikselin rəngini mavi zolaq olaraq təyin edin.show (); // Zolağı uyğunlaşdırın}}
Yükləmək
İndi əyləncəli hissədir, kodumuzu NodeMCU -ya yükləyək … Hər şey düzgün işləyirsə, LED şeridiniz artıq tamamilə mavi rəngə çevrilməlidir!
Heç bir piksel görünmür ?: zolağı doğru PİN -ə bağlamısınız? Yoxsa internet bağlantınız kəsildi.
Yalnız bəzi piksellər görünmür ?: Düzgün piksel miqdarını təyin edib etmədiyinizi yoxlayın!
Adım 8: Zamanlayıcıya Zamanlama əlavə edin
İndi əmin olacağıq ki, taymerimiz əslində … yaxşı… dəfə, bir şey.
Arduino ilə vaxt qurmağın fərqli yolları var, biri gecikmədir (), bu da lövhəmizin işlənməsini müəyyən bir müddətə dayandırır. Arduino gecikmə əsnasında dondurduğundan bunu istifadə etməyəcəyik və lövhəmizin mütəmadi olaraq yenilənməsini istəyirik. Millis () istifadə edəcəyik, bu, Arduino'da vaxt qurmağın daha zərif bir yoludur, Millis () ilə yenə də aralıqlar arasında kod işlədə bilərik.
Bunun necə işlədiyi ilə maraqlanırsınızsa, bu məqaləyə baxa bilərsiniz:
Millis () kodunu əlavə edək:
Bu kodu void setup -ın üstünə qoyun ()
işarəsiz uzun əvvəlkiMillis = 0; // LED şeridi son dəfə yenilənəndə saxlayacaq interval = 1000; // taymerimizin aralığı (milisaniyə)
Və bu kodu boşluq döngəsinə () qoyaq:
işarəsiz uzun cariMillis = millis ();// TAYMER RİTMİNƏ başla ******************************************* ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis;
// TAYMER RİTMİNİ bitirin ******************************************* ***********
Etdiyimiz şey, LED şeritimizin LEDləri söndürməsi üçün bir ritm yaratmaq idi, növbəti addımda bunun üçün kodu əlavə edəcəyik.
Addım 9: Geri sayma
Bu addımda: bütün LEDlərimiz sönənə qədər hər bir saniyədə (və ya təyin etdiyiniz hər hansı bir aralıqda) zolağın sonunda BİR LED -i söndürdüyümüzə əmin olacağımız bir funksiya edəcəyik.
Yuxarıda 'leds' adlanan 'int' yaradacağıq. Bu daha sonra taymerimizə hələ də neçə ledin söndürülməli olduğunu söyləyəcək.
Yuxarıdakı void setup () kodunu əlavə edin:
int leds = LED_COUNT-1; // neçə pikselin yandırılması lazım olduğunu bildirir
İndi 'timer ();' funksiyasını əlavə edək, bu hər saniyədə bir işığı söndürəcək
Aşağıdakı kodu void ledsOn () altına əlavə edin:
void timer () {strip.setPixelColor (ledlər, 0, 0, 0);
if (leds> -1) {leds--; } başqa {blinkie (); }}
İstifadəçiyə taymerin bütün işıqlar yandıqdan sonra edildiyini bildirmək istəyirik. 'Blinkie ();' ilə Taymer bitdikdən sonra LEDlər qırmızı yanıb -sönəcək!
Yuxarıdakı void setup () kodunu əlavə edin:
int blinkStatus = 1; // göz qırpımını söyləyir (); işığın yandırılması və ya söndürülməsi zamanı
Void timer () altına aşağıdakı kodu əlavə edin:
boş blinkie () {if (blinkStatus == 1) {
blinkStatus = 0; strip.clear (); } başqa {blinkStatus = 1; for (int i = 0; i <strip.numPixels (); i ++) {// Şeriddəki hər piksel üçün… strip.setPixelColor (i, 255, 0, 0); // Pikselin rəngini təyin edin (RAM -da) strip.show (); // Şeridi uyğunlaşdırın}}}}
Nəhayət, boşluq döngəmizdəki funksiyanı çağırmalıyıq ();, 8 -ci addımda əlavə etdiyimiz TİMER RİTMİ yadınızdadırmı? Bu if ifadəsində timer () funksiyasını çağıracağıq.
TIMER RYTHM indi belə görünməlidir:
// TAYMER RİTMİNƏ başlayın ******************************************* *********
if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis; taymer (); strip.show ();} // TIMER RYTHM -i bitirin ************************************ ******************
İndi bu kodu yükləyin!
Hal -hazırda LED şeridiniz hər saniyədə 1 LED -i söndürməli və bitdikdə qırmızı yanıb -sönməlidir …
İndi gəlin bu ana sevgisini uzaqdan idarə edək!
Addım 10: Uzaqdan idarə olun: I hissə
Taymerimiz var, hər şey qaydasındadır, amma söz verdim ki, bunu telefonunuzla idarə edə biləcəksiniz? Layihəmizin son mərhələsinə daxil olaq: Taymeri uzaqdan idarə etmək.
Adafruit nişanınız hələ də açıqdır? Gəlin io.adafruit.com saytına qayıdaq və timer interfeys tablosuna gedək və yeni bir blok yaradaq: TOGGLE
- Keçidi TIMER yeminə qoşun
- ON dəyərini təyin edin: 1
- OFF dəyərini təyin edin: 0
Bunun səbəbi, Adafruit -in NodeMCU -ya mətn məlumatları göndərməməsi, ancaq nömrələrdir.
İstəsəniz, Toggle -a da bir ad verə bilərsiniz, bəlkə də: 'Açma/Kapama açarı'
İndi Arduino IDE -yə qayıdaq
Kodumuzun güncəl olduğundan əmin olmaq üçün kodumuzu bir daha YÜKLƏYƏCƏK.
Yükləmə tamamlandıqdan sonra SERİ MONİTÖRÜNÜ AÇIN və Adafruit tablosuna TOGGLE düyməsini bir neçə dəfə basın. İndi serial monitorumuzda belə bir şeyin ortaya çıxdığını görməliyik:
alındı <- 0 alındı <- 1 alındı <- 0 alındı <- 1 alındı <- 0
Bu o deməkdir ki, həqiqətən NodeMCU -ya idarəetmə göndərə bilərik!
Bu mesajları almırsınızsa, config.h -dəki Adafruit Məlumatlarınızın hələ də düzgün olub olmadığını yoxlayın.
Addım 11: Uzaqdan idarə olun: II hissə
İndi geriyə qalan yalnız alınan nəzarətlərimizlə bir şey etməkdir.
Bunu etmək üçün, void loop () ifadəsindəki TIMER RYTHM -ni dəyişdirməliyik; bir az.
NodeMCU -ya, Adafruit -dən '1' (yəni AÇIQ) aldığımız zaman sayğacın işə salınacağını söyləyəcəyik.
Əvvəlcə Adafruit -in bizə göndərdiyi məlumatları toplayaq
Yuxarıdakı void setup () kodunu əlavə edin:
int adaData; // AdaFruit -in bizə göndərdiyi məlumatları toplayır
İndi gəlin bu məlumatları toplayaq
Void handleMessage () daxilinə aşağıdakı kodu əlavə edin:
adaData = data-> toInt ();
Void loopumuzu dəyişdirək ();
TIMER RYTHM indi belə görünməlidir:
// TAYMER RİTMİNƏ başla ******************************************* ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis; əgər (adaData == 0) {Serial.println ("işləmirəm"); } başqa if (adaData == 1) {timer (); } strip.show (); } // ZAMAN RİTMİNİ bitirin ****************************************** ************
Kodunuzu YÜKLƏ …
İndi Adafruit -dəki açarı istifadə edərək taymeri aça və söndürə bilməlisiniz!
Addım 12: Ətrafda oynayın! Bitirdik … yoxsa biz mi?
Hal -hazırda tam işləyən uzaq bir taymeriniz olmalıdır! Bu sizin üçündürsə, bu layihə ilə birlikdə gəldiyiniz üçün təşəkkür edirik!
Bir az daha davam etmək istəyirsinizsə, növbəti bir neçə addımda timerimiz üçün RESET düyməsini əlavə edəcəyik!
Addım 13: ƏLAVƏ: Anlıq Düymə yaradın
İdarə panelimizə qayıdaq. İndi yenidən yeni bir blok yaratmaq istəyirik.
- Bir anlıq düymə yaradın
- 'Taymer' lentinə qoşun
- Mətbuat dəyərini təyin edin: 2
- Buraxılış dəyərini silin
- Gözəl bir rəng verin!
Əlverişli anlıq düyməyə artıq 'Sıfırla' deyilir!
Bu bloku yaratdıqdan sonra test edin, alsanız düymə işləyir:
alındı <- 2
Serial monitorunuzda.
Bu mesajı görmürsünüzsə, eskizi yenidən yükləməyə çalışın
Addım 14: ƏLAVƏ: Sıfırlama funksiyasını əlavə edin
Sıfırlama düyməsini bir şey etmək üçün bütün LED -ləri orijinal vəziyyətinə qaytaran bir funksiya əlavə etməliyik.
Void blinkie () altına aşağıdakı kodu əlavə edin:
void təkrar () {leds = LED_COUNT; ledsOn (); }
İndi qalan yalnız funksiyamızı çağırmaqdır, bunun üçün TIMER RYTHM -i son dəfə dəyişdirməliyik
TIMER RYTHM indi belə görünməlidir:
// TAYMER RİTMİNƏ başlayın ******************************************* ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis if (adaData == 0) {Serial.println ("işləmir"); } başqa if (adaData == 1) {timer (); } if if (adaData == 2) {rerun (); } strip.show (); } // ZAMAN RİTMİNİ bitirin ****************************************** ************
Kodunuzu YÜKLƏ …
İndi düyməni basaraq taymeri sıfırlaya bilməlisiniz!
Tövsiyə:
Təyyarə ilə idarə olunan radio idarə olunan ördək: 10 addım (şəkillərlə)
Jet Propelled Radio Controlled Duck: 40+ il əvvəl bir radio nəzarət qayığı almaq və yaxınlıqdakı Park Gölündə istifadə etmək istəyirdim, lakin Park Qapıcısı heç bir gəmiyə icazə verilməyəcəyini açıq şəkildə bildirdi. Bir gəmini ördək kimi gizlətmək üçün bu planı hazırladım. Bir az çatışmazlıq qiymət idi
ESP8266 - İnternet / ESP8266 ilə Taymer və Uzaqdan İdarəetmə ilə Bağ Suvarması: 7 Addım (Şəkillərlə)
ESP8266 - İnternet / ESP8266 ilə Taymer və Uzaqdan İdarəetmə ilə Bağ Suvarması: ESP8266 - Suvarma uzaqdan idarə və tərəvəz bağları, çiçək bağları və çəmənlər üçün vaxtı ilə. ESP-8266 sxemindən və suvarma qurğusu üçün hidravlik / elektrikli klapandan istifadə edir
Uzaqdan İdarə olunan Avtomobil - Simsiz Xbox 360 Nəzarətçisindən istifadə edərək idarə olunur: 5 addım
Uzaqdan İdarə Edilən Avtomobil - Simsiz Xbox 360 Nəzarətçisindən istifadə edərək idarə olunur: Bunlar simsiz Xbox 360 nəzarətçi ilə idarə olunan öz uzaqdan idarə olunan avtomobilinizi qurmaq üçün təlimatlardır
Uzaqdan idarəetmə ilə tranzistor idarə olunan motor; dövrə ümumi baxış: 9 addım
Uzaqdan İdarəetmə ilə Transistorla İdarə Edilən Motor; Dövrə Baxış: Bu dövrə uzaqdan idarə olunan tranzistorla idarə olunan bir motordur. Uzaqdan idarəetmə cihazı işə salır. Transistor mühərriki işə salır. Proqramın kodu motorun sürətini artıracaq və sonra motor sürətini sıfıra endirin
Elektrikli Cihazlarınızı Temperatur və Nəmlik Ekranı ilə Tv Uzaqdan (Uzaqdan) idarə edin: 9 Addım
Elektrikli Cihazlarınızı Tv Uzaqdan (Uzaqdan Uzaqdan) İstilik və Rütubət Ekranı ilə idarə edin: salam Mən Abhayam və Instructables -dakı ilk blogumdur və bu gün bunu quraraq televizorunuzun pultu ilə elektrik cihazlarınızı necə idarə edəcəyinizi sizə göstərəcəyəm. sadə layihə. materiala dəstək verdiyinə görə atl laboratoriyasına təşəkkür edirəm