Mündəricat:
- Addım 1: Quraşdırma mühiti yaratmaq
- Addım 2: Mənbə Kodunu alın, Konfiqurasiya edin və Qurun
- Addım 3: Avadanlıq Komponentlərini birləşdirin
- Addım 4: Flash və Run
- Addım 5: Qarşılıqlı əlaqə
- Addım 6: Tətbiq Təfərrüatları
Video: WiFi LED Şeridi + ESP8266 ilə İstilik Sensoru: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu dərslik, ESP8266 qurmaq və həm temperatur sensoru, həm də LED şeridi ilə danışmaq, eyni zamanda WiFi üzərindən MQTT ilə giriş qəbul etmək və çıxarmaq imkanı əldə etmək üçün addımları təsvir edir. Layihə, Payız 2016-da Cal Poly San Luis Obispo'da alınan bir kurs üçün hazırlanmışdır- CPE 439: Real Time Embedded Systems. Ümumi məqsəd, ucuz avadanlıqlarla internetə bağlı bir "şey" yaratmağın asanlığını nümayiş etdirmək idi.
Lazımi təchizatlar/avadanlıqlar:
- NodeMCU ESP8266 inkişaf lövhəsi
- WS2812B LED şeridi
- MAX31820 Temperatur sensoru
- Çörək lövhəsi
- 4.7K ohm müqavimət
- 220 ohm müqavimət
- tullanan tellər
- mikro usb kabeli
- Linux (məsələn, Ubuntu) işləyən PC (və ya VM)
Varsayımlar/ön şərtlər:
- əmr satırı alətlərindən istifadə və paketləri debian əsaslı bir distroya quraşdırmaq təcrübəsi
- Makefile sintaksisi haqqında əsas anlayış
- birləşdirən tellər
Addım 1: Quraşdırma mühiti yaratmaq
Layihəni qurmaq üçün maşınınıza esp-open-sdk quraşdırmalısınız. Linki izləyin və tikinti təlimatlarını oxuyun. Bir sözlə, asılılıqları qurmaq üçün bir sudo apt-get əmrləri, esp-open-sdk-ni klonlamaq/yükləmək üçün təkrarlanan bir git klonu və nəhayət esp-open-sdk qurmaq əmri verəcəksiniz.
Mənə bax
Addım 2: Mənbə Kodunu alın, Konfiqurasiya edin və Qurun
İndi esp-open-sdk qurulduğundan, layihə anbarını klonlayın.
git klonu
Layihə qovluğuna keçin,.local qovluq yaradın və nümunə parametrlərini kopyalayın.
cd esp-rtos-testləri
mkdir -p.cp cp settings.example.mk.local/settings.mk
İndi hər hansı bir mətn redaktoru ilə.local/settings.mk açın və aşağıdakı parametrləri dəyişdirin:
- OPENSDK_ROOT: 1-ci addımda qurduğunuz esp-open-sdk-nin yeri üçün mütləq yol
- WIFI_SSID: WiFi şəbəkənizin SSID -si
- WIFI_PASS: WiFi şəbəkənizin şifrəsidir
- PIXEL_COUNT: WS2812B LED şeridinizdəki piksellərin sayı
Qeyd: Bu layihə LEDləri idarə etmək üçün SPI istifadə etdiyindən və onları təchiz etmək üçün NodeMCU 3.3v istifadə etdiyindən, ehtimal ki, ~ 60 LED -dən çox idarə edə bilməyəcəksiniz.
Qeyd: Digər parametrlərin dəyişdirilməsinə ehtiyac yoxdur, ancaq istəsəniz ola bilər. Tapşırıqların prioritet sırasını saxlamaq tövsiyə olunur. Prioritet sayı nə qədər aşağı olsa, vəzifənin prioriteti o qədər aşağı olar.
İndi layihəni qurun:
etmək -C nümunələri/cpe439
Hər şey düzgün qurulubsa, tərtib etməyə başlamalıdır. Sonda görməlisiniz:
Uğurla 'firmware/cpe439.bin' yaradıldı
Mənə bax
Addım 3: Avadanlıq Komponentlərini birləşdirin
İndi kod tərtib edildikdən sonra ətraf qurğularımızı birləşdirmə vaxtıdır.
Əvvəlcə NodeMCU -nu çörək taxtasına yapışdırın, sonra diaqramda göstərildiyi kimi əlaqələri qurmaq üçün keçid tellərindən istifadə edin.
Bilməli olduğunuz bir neçə şey:
- Vacibdir: WS2812B məlumat xətti ikitərəfli deyil. Şeridin LED tərəfindəki işarələrə yaxından baxsanız, bir istiqamətə işarə edən kiçik oxlar görməlisiniz. NodeMCU -nun D7 -dən çıxışı, diqqətlə baxdığınız təqdirdə diaqramda görə biləcəyiniz istiqamət işarəsi ilə eyni şəkildə WS2812B -yə daxil olmalıdır.
- WS2812B -nin hansı bağlayıcılarla təchiz olunduğundan asılı olaraq, onları çörək lövhəsinə etibarlı şəkildə bağlamaq üçün bəzi dəyişikliklər etməlisiniz. Timsah kliplərindən də çörək taxtasında işləyə bilən keçid kabellərinə qoşulmaq üçün istifadə edə bilərsiniz.
- MAX31820 sancaqlar daha kiçik bir meydançaya malikdir və standart 0.1 "/2.54 mm atlayıcılardan daha incədir, bu da onları birləşdirməyi çətinləşdirir. Bunun bir yolu, dişi-kişiyə tullanan tellərdən istifadə etmək, plastik qutunu qadın tərəfdən çıxarmaq, daha sonra dişi tullanan uclarını daha kiçik MAX31820 sancaqlar ətrafında sıx bağlamaq üçün bir neçə pens istifadə edin.
Komponentlərə zərər verməmək üçün NodeMCU-nu işə salmadan əvvəl əlaqələri iki dəfə yoxlayın.
Addım 4: Flash və Run
Yanıp sönür
Bütün avadanlıqlar bağlı olduqda, NodeMCU'nuzu qoşun və aşağıdakı əmrlə yanıb sönün:
flash etmək -C nümunələri/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0, NodeMCU -nun altında görünməli olan serial com. Başqa bir serial cihazınız varsa, /dev /ttyUSB1 və ya başqa bir nömrə kimi görünə bilər. Yoxlamaq üçün bu əmri iki dəfə işlədə bilərsiniz, bir dəfə NodeMCU ayrılmadan və bir dəfə qoşularaq fərqi müqayisə edin:
ls /dev /ttyUSB*
Qarşılaşa biləcəyiniz başqa bir problem, cihaza giriş icazəsinin olmamasıdır. Bunu düzəltməyin iki yolu var:
-
İstifadəçinizi dialout qrupuna əlavə edin:
sudo adduser $ (whoami) dialout
- chmod və ya cihazı bağlayın:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Qalıcı bir həll olduğu üçün birinci üsula üstünlük verilir.
Qaçır
Flaş əmrini uğurla işlədikdən sonra cihaz dərhal açılacaq və tərtib edilmiş kodu işə salacaq. İstənilən nöqtədə yanıb söndükdən sonra serial çıxışı izləmək üçün aşağıdakı əmri işlədə bilərsiniz:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Vaxtınıza qənaət etmək üçün bunu ~/.bashrc faylınıza əlavə edə bilərsiniz:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
.. ki, bu komanda üçün başqa ad olaraq "nodemcu" yazmağa imkan verir.
Hər şey düzgün qurulubsa, LED şeridiniz yaşıl rəngdə yanmalıdır və serialda WiFi bağlantısı, bir IP ünvanı, MQTT -ə qoşulma və temperatur məlumatlarının itildiyi mesajları görməlisiniz.
MyWiFiSSID ilə əlaqəli, kanal 1dhcp müştəri başlanğıcı… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, maska: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: rt_Wq_tq_tq: (Yenidən) MQTT serverinə bağlanır test.mosquitto.org… xQueueReceive +25.50xQueueSend tamam tamamlandı MQTT bağlantısını göndərin … MQTTv311donexQueueReceive +25.56 xQueueSend tamam
Addım 5: Qarşılıqlı əlaqə
Cihazınızın WiFi və MQTT brokerinə uğurla qoşulduğunu güman etsəniz, MQTT ilə NodeMCU -dan məlumat göndərə və ala biləcəksiniz. Hələ etməmisinizsə, ağcaqanad müştəriləri paketini quraşdırın:
sudo apt-get ağcaqanad müştəriləri quraşdırın
İndi kabuğunuzdan mosquitto_pub və mosquitto_sub proqramlarından istifadə etməlisiniz.
Temperatur yeniləmələrinin alınması
Temperatur məlumatlarını almaq üçün, NodeMCU -nun yayımladığı mövzuya abunə olmaq üçün mosquitto_sub əmrindən istifadə etmək istərdik.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Terminala gələn temperatur məlumatlarını (Selsi ilə) görməlisiniz.
+25.87+25.93+25.68…
LED şeridi rəngini uzaqdan təyin etmək
RGB dəyərlərini MQTT üzərindən NodeMCU -ya göndərmək üçün sadə bir mesaj formatı istifadə olunur. Komanda formatı belə görünür:
r: RRRg: GGGb: BBB ~
RRR, GGG, BBB göndərmək istədiyiniz rəngin RGB dəyərlərinə (0-255) uyğundur. Əmrimizi göndərmək üçün mosquitto_pub əmrindən istifadə edəcəyik. Budur bəzi nümunələr:
mosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 0g: 255b: 0 ~ ' # greenmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m' r: 0g: 0b: 255 ~ ' # mavi
Yaradıcılıq etmək istəyirsinizsə, bunun kimi bir onlayn rəng seçici tapın və seçdiyiniz hər hansı bir RGB dəyəri ilə əmri redaktə edin.
Diqqətli ol
Bu layihədəki mövzular, ümumi bir MQTT brokerində /cpe439 /rgb və /cpe439 /temp olaraq təyin olunur, bu da başqasının sizinlə eyni mövzuları nəşr etməsinə və ya abunə olmasına mane olan heç bir şey olmadığını göstərir. Bir şeyi sınamaq üçün ictimai bir brokerdən istifadə etmək yaxşıdır, ancaq daha ciddi layihələr üçün parol qorunması olan bir brokerə qoşulmaq və ya öz brokerinizi serverdə idarə etmək istəyəcəksiniz.
Addım 6: Tətbiq Təfərrüatları
Onewire
ESP8266, yalnız 1 nüvəyə malikdir, belə ki, uzun müddətdir ki, temperatur sensörünün temperatur ölçməsini yerinə yetirməsi üçün 750 ms gözləmək, normal olaraq WiFi -nin yaxşı işləməməsinə və hətta qəzaya səbəb ola bilər. FreeRTOS paradiqmasında, bu uzun gözləmələri idarə etmək üçün vTaskDelay () çağırırsınız, ancaq oxunuşlar və yazılar arasında FreeRTOS sistem işarəsindən daha qısa olan və buna görə də vTaskDelay () ilə qarşısını almaq mümkün olmayan bir çox qısa gözləmə tələb olunur. Bunların da öhdəsindən gəlmək üçün, bu layihədəki bir telli sürücü, hər 10 mikro saniyədə ən aşağı olan hadisələri tetikleyebilen ESP8266-nın aparat taymeri ilə idarə olunan bir dövlət maşınından çıxmaq üçün yazılmışdır. onewire oxumaq/yazmaq əməliyyatları arasında tələb olunan vaxt. Digər tətbiqlərin çoxu, bunu həll etmək üçün delay_us () və ya buna bənzər bir maneə törədən zəngdən istifadə edir, ancaq daim temperatur yeniləmələri alırsınızsa, bütün gecikmələr artmağa başlayır və daha az həssas bir tətbiq ilə nəticələnir. Kodun bu hissəsinin mənbəyi extras/onewire qovluğunda yerləşir.
WS2812B
ESP8266, 800KHz -də LED şeridləri idarə etmək üçün kifayət qədər sürətli PWM üçün heç bir standart hardware seçiminə malik deyil. Bunun öhdəsindən gəlmək üçün bu layihə LEDləri idarə etmək üçün SPI MOSI pinindən istifadə edir. SPI -nin saat sürətini tənzimləyərək və SPI yükünü dəyişərək hər bir LED -in kifayət qədər etibarlı idarə olunmasına nail ola bilərsiniz. Bu metodun qüsurları da yoxdur- LED-lərin 5V-luq bir qaynaqla təchiz edilməsi və SPI pininin çıxışına bir səviyyə dəyişdirici əlavə edilməlidir. Ancaq 3.3V işləyir. İkincisi, SPI metodundan istifadə etməklə vaxtın mükəmməl olmaması səbəbindən yaranan qüsurlar var. Üçüncüsü, SPI -dən başqa bir şey üçün istifadə edə bilməzsiniz. Bu metodla bağlı əlavə məlumatı burada tapa bilərsiniz və kodun bu hissəsinin mənbəyi extras/ws2812 qovluğunda yerləşir.
LED şeridlərini idarə etmək üçün daha etibarlı bir üsul i2s istifadə etməkdir. Bununla birlikdə, bu metodun çipə xas olan bir çox çatışmazlığı var, buna görə SPI öyrənmə məşqi olaraq daha yaxşı bir seçim kimi görünürdü.
Tövsiyə:
Bluetooth və Wifi ESP8266 istifadə edən Simsiz RGB Led Şeridi: 3 addım
Bluetooth və Wifi ESP8266 istifadə edən Simsiz RGB Led Şeridi: Bluetooth və WIFI istifadə edərək RGB Led Zolağı Ətraflı məlumat üçün youtube Video
ESP8266 NodeMCU + LM35 + Blynk (IOT Hava İstasyonu/ Rəqəmsal İstilik Sensoru): 4 addım
ESP8266 NodeMCU + LM35 + Blynk (IOT Hava İstasyonu/ Rəqəmsal İstilik Sensoru): Salam uşaqlar! Bu Təlimat kitabında, LM35 sensorunun NodeMCU ilə necə əlaqələndiriləcəyini və Blynk tətbiqi olan bir smartfonda bu temperatur məlumatlarını İnternetdə göstərməyi öyrənəcəyik. (Bu layihədə Blc -də SuperChart widgetından istifadə edəcəyik
ESP8266 ilə WiFi İdarə olunan RGB LED Şeridi: 5 addım
ESP8266 ilə WiFi İdarə olunan RGB LED Şeridi: Fikir WiFi -dən idarə oluna bilən bir LED işıqları yaratmaqdır. Miladdan sonra bir az ehtiyat LED şeridim var, buna görə LED -in WiFi -dən idarə olunmasına imkan verən ESP8266 -ya geri qaytarıram
ESP8266 və Blynk Tətbiqi ilə Uzaqdan İstilik və Nəmlik Monitorinqi: 15 addım
ESP8266 və Blynk Tətbiqi ilə Uzaqdan İstilik və Nəmlik Monitorinqi: ESP8266 çipli ilk layihəm idi. Evimin yaxınlığında yeni bir istixana qurdum və mənim üçün maraqlı idi ki, bir gün ərzində orada nə baş verir? Demək istəyirəm ki, temperatur və rütubət necə dəyişir? İstixana kifayət qədər havalandırılırmı? Deməli, mən
WiFi İstilik Qeydiyyatı (ESP8266 ilə): 11 Addım (Şəkillərlə)
WiFi Temperatur Logger (ESP8266 ilə): Salam, sizi burada görməkdən məmnunuq. Ümid edirəm ki, bu dərslikdə faydalı məlumatlar tapa bilərsiniz. Mənə təkliflər, suallar göndərməkdən çekinmeyin … Burada bəzi əsas məlumatlar və layihənin qısa bir icmalı var. Mobil istifadəçilər üçün: Video.Mənə bildirin