Mundarija:
- 1 -qadam: Qurilish muhitini yaratish
- 2 -qadam: Manba kodini oling, sozlang va yarating
- 3 -qadam: Uskuna komponentlarini ulang
- 4 -qadam: Flash va ishga tushirish
- 5 -qadam: o'zaro ta'sir
- 6 -qadam: Amalga oshirish tafsilotlari
Video: WiFi LED tasmasi + ESP8266 bilan harorat sensori: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Ushbu qo'llanmada ESP8266 ni sozlash va uni harorat sensori va LED tasmasi bilan gaplashish, shuningdek, WiFi orqali MQTT yordamida kirishni qabul qilish va yuborish mumkin bo'lgan qadamlar tasvirlangan. Loyiha 2016 yilning kuzida Cal Poly San Luis Obispo kursida o'tkazilgan- CPE 439: Real Time Embedded Systems. Umumiy maqsad, arzon uskunalar bilan Internetga ulangan "narsa" ni yaratish osonligini namoyish qilish edi.
Kerakli jihozlar/uskunalar:
- NodeMCU ESP8266 ishlab chiqarish kartasi
- WS2812B LED tasmasi
- MAX31820 harorat sensori
- Non paneli
- 4,7K ohmli qarshilik
- 220 ohmli qarshilik
- o'tish simlari
- mikro usb kabeli
- Linux (masalan, Ubuntu) ishlaydigan kompyuter (yoki VM)
Taxminlar/old shartlar:
- buyruq satri vositalarini ishlatish va paketlarni debianga asoslangan distroga o'rnatish tajribasi
- Makefile sintaksisi haqida asosiy tushuncha
- ulash simlari
1 -qadam: Qurilish muhitini yaratish
Loyihani yaratish uchun sizga kompyuteringizda esp-open-sdk o'rnatilgan bo'lishi kerak. Havolani kuzatib boring va qurilish bo'yicha ko'rsatmalarni o'qing. Muxtasar qilib aytganda, siz bog'liqliklarni o'rnatish uchun sudo apt-get buyruqlarini bajarasiz, esp-open-sdk-ni klonlash/yuklab olish uchun rekursiv git-klon va nihoyat esp-open-sdk-ni yaratish buyrug'ini bajarasiz.
Meni tomosha qiling
2 -qadam: Manba kodini oling, sozlang va yarating
Endi esp-open-sdk qurilgan bo'lsa, loyiha omborini klonlang.
git klon
Loyiha katalogiga o'ting,.local papkasini yarating va misol sozlamalarini nusxalash.
CD esp-rtos-testlari
mkdir -p. mahalliy cp settings.example.mk.local/settings.mk
Endi.local/settings.mk -ni istalgan matn muharriri bilan oching va quyidagi sozlamalarni o'zgartiring:
- OPENSDK_ROOT: 1-bosqichda esp-open-sdk joylashuvi uchun mutlaq yo'l
- WIFI_SSID: Wi -Fi tarmog'ingizning SSID -si
- WIFI_PASS: Wi -Fi tarmog'ingizning paroli
- PIXEL_COUNT: WS2812B LED chizig'idagi piksellar soni
Eslatma: Ushbu loyiha LEDlarni boshqarish uchun SPI -dan foydalanganligi va ularni etkazib berish uchun NodeMCU 3.3v -dan foydalanganligi sababli, siz ~ 60 dan ortiq LEDni boshqarolmaysiz.
Eslatma: Boshqa sozlamalarni o'zgartirish shart emas, lekin agar xohlasangiz bo'lishi mumkin. Vazifalarning ustuvorlik tartibini saqlash tavsiya etiladi. Imtiyozli raqam qanchalik past bo'lsa, vazifaning ustuvorligi shuncha past bo'ladi.
Endi loyihani tuzing:
qilish -C misollari/cpe439
Agar hamma narsa to'g'ri sozlangan bo'lsa, u kompilyatsiya qilishni boshlashi kerak. Oxirida siz ko'rishingiz kerak:
"Firmware/cpe439.bin" muvaffaqiyatli yaratildi
Meni tomosha qiling
3 -qadam: Uskuna komponentlarini ulang
Endi kod tuzildi, bizning tashqi qurilmalarimizni ulash vaqti keldi.
Birinchidan, NodeMCU -ni non paneliga yopishtiring, so'ngra ulanishlarni diagrammada ko'rsatilgandek o'tish uchun simlardan foydalaning.
Bilish kerak bo'lgan ikkita narsa:
- Muhim: WS2812B ma'lumotlar liniyasi ikki tomonlama emas. Agar siz chiziqning LED tomonidagi belgilarga diqqat bilan qarasangiz, siz bir tomonga ishora qiluvchi kichik o'qlarni ko'rishingiz kerak. NodeMCU -ning D7 -dan chiqishi WS2812B -ga yo'nalish belgisi bilan bir xil bo'lishi kerak, agar siz diqqat bilan qarasangiz, diagrammada ko'rishingiz mumkin.
- WS2812B qanday ulagichlar bilan ta'minlanganiga qarab, siz ularni taxtaga ishonchli ulash uchun ba'zi o'zgartirishlar kiritishingiz kerak bo'lishi mumkin. Bundan tashqari, alligator qisqichlaridan foydalanib, ularni taxtali o'tish kabeliga ulashingiz mumkin.
- MAX31820 pimlari kichikroq qadamga ega va standart 0,1 dyuymli/2,54 mm uzunlikdagi o'tish moslamalariga qaraganda ingichka bo'lib, ularni ulanishni qiyinlashtiradi. Buning bir yo'li-ayoldan erkakgacha o'tish simlarini ishlatish, plastik sumkani ayol tomondan olib tashlash, keyin qisqich yordamida urg'ochi jumperning uchlari kichikroq MAX31820 pimlari atrofida mahkamlanadi.
Komponentlarga zarar bermaslik uchun NodeMCU-ni yoqishdan oldin ulanishlarni ikki marta tekshiring.
4 -qadam: Flash va ishga tushirish
Miltillovchi
Barcha apparat ulangan bo'lsa, NodeMCU -ni ulang va quyidagi buyruq bilan yonib -o'chib turing:
flesh -C misollarini yarating/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 - bu NodeMCU ostida ko'rsatiladigan ketma -ket com. Agar sizda boshqa ketma -ket qurilmalar ulangan bo'lsa, u /dev /ttyUSB1 yoki boshqa raqam sifatida ko'rsatilishi mumkin. Tekshirish uchun siz ushbu buyruqni ikki marta ishlatishingiz mumkin, bir marta NodeMCU o'chirilgan va bir marta ulangan va farqni solishtiring:
ls /dev /ttyUSB*
Siz duch keladigan boshqa muammo - bu qurilmaga kirishga ruxsat yo'qligi. Buni tuzatishning ikkita usuli bor:
-
Foydalanuvchini qo'ng'iroqlar guruhiga qo'shing:
sudo adduser $ (whoami) dialout
- chmod yoki qurilmani ishga tushirish:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Birinchi usul afzalroqdir, chunki bu doimiy echimdir.
Yugurish
Flash buyrug'i muvaffaqiyatli bajarilgandan so'ng, qurilma darhol yuklanadi va tuzilgan kodni ishga tushiradi. Yonishdan keyin istalgan vaqtda ketma -ket chiqishni ko'rish uchun quyidagi buyruqni ishlatishingiz mumkin:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Vaqtni tejash uchun buni ~/.bashrc faylingizga qo'shishingiz mumkin:
taxallus nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
.. bu sizga "nodemcu" ni buyruq uchun taxallus sifatida yozishga imkon beradi.
Agar hamma narsa to'g'ri sozlangan bo'lsa, sizning LED tasmangiz yashil rangda yonib turishi kerak va ketma -ketlikda siz Wi -Fi ulanishini, IP -manzilni, MQTT -ga ulanishni va harorat ma'lumotlari o'chirilayotganini ko'rishingiz kerak.
MyWiFiSSID bilan ulangan, kanal 1dhcp mijozi ishga tushadi… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, niqob: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status_5qqt.4: (Qayta) test.mosquitto.org MQTT serveriga ulanmoqda … xQueueReceive +25.50xQueueSend ok bajarildi
5 -qadam: o'zaro ta'sir
Agar sizning qurilmangiz WiFi va MQTT brokeriga muvaffaqiyatli ulangan bo'lsa, siz MQTT yordamida NodeMCU ma'lumotlarini yuborishingiz va qabul qilishingiz mumkin bo'ladi. Agar siz hali qilmagan bo'lsangiz, chivin mijozlari paketini o'rnating:
sudo apt-get chivin-mijozlarni o'rnating
Endi siz mosquitto_pub va mosquitto_sub dasturlarini qobig'ingizdan ishlatishingiz kerak.
Harorat yangilanishlarini qabul qilish
Harorat ma'lumotlarini olish uchun biz mosquitto_sub buyrug'idan foydalanib, NodeMCU nashr qilayotgan mavzuga obuna bo'lishni xohlaymiz.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Terminalga keladigan harorat ma'lumotlarini (Selsiy bo'yicha) ko'rishingiz kerak.
+25.87+25.93+25.68…
LED chizig'ining rangini masofadan sozlash
RGB qiymatlarini MQTT orqali NodeMCU ga yuborish uchun oddiy xabar formati ishlatiladi. Buyruq formati quyidagicha ko'rinadi:
r: RRRg: GGGb: BBB ~
Bu erda RRR, GGG, BBB siz yubormoqchi bo'lgan rangning RGB qiymatlariga (0-255) to'g'ri keladi. Bizning buyrug'imizni yuborish uchun mosquitto_pub buyrug'idan foydalanamiz. Bu erda ba'zi misollar:
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 ~ ' # ko'k
Agar siz ijodkor bo'lishni xohlasangiz, Internetda shunga o'xshash rang tanlash vositasini toping va siz tanlagan RGB qiymatiga ega bo'lgan buyruqni tahrir qiling.
Ehtiyot bo `lmoq
Ushbu loyihadagi mavzular ochiq MQTT brokerida /cpe439 /rgb va /cpe439 /temp -ga o'rnatiladi, bu boshqa birovning siz bilan bir xil mavzularni nashr qilishiga yoki obuna bo'lishiga hech narsa to'sqinlik qilmaydi. Biror narsani sinab ko'rish uchun ochiq brokerdan foydalanish yaxshi, lekin jiddiyroq loyihalar uchun siz parol bilan himoyalangan brokerga ulanishni xohlaysiz yoki serverda o'z brokeringizni ishga solasiz.
6 -qadam: Amalga oshirish tafsilotlari
Yangi tel
ESP8266 faqat bitta yadroga ega, shuning uchun uzoq vaqt davomida harorat sensori harorat o'lchashini 750 ms kutish kabi blokirovka qiluvchi vazifalar odatda WiFi yaxshi ishlamasligiga va hatto ishdan chiqishiga olib keladi. FreeRTOS paradigmasida siz bu uzoq kutishlarni bajarish uchun vTaskDelay () ga qo'ng'iroq qilasiz, lekin o'qish va yozish o'rtasida FreeRTOS tizimi belgisiga qaraganda qisqa bo'lgan juda ko'p qisqa kutishlar mavjud va shuning uchun ham vTaskDelay () yordamida oldini olish mumkin emas. Bularning hammasini hal qilish uchun, ushbu loyihadagi bitta simli haydovchi ESP8266 apparat taymeri yordamida boshqariladigan, har 10 mikro sekundda sodir bo'ladigan hodisalarni ishga tushiradigan, eng qisqa vaqtga to'g'ri keladigan mashinani o'chirish uchun yozilgan. bitta simli o'qish/yozish operatsiyalari orasidagi vaqt. Boshqa dasturlarning aksariyati buni amalga oshirish uchun delay_us () yoki shunga o'xshash blokirovka chaqiruvidan foydalanadi, lekin agar siz doimo harorat yangilanishlarini olib tursangiz, bu kechikishlar qo'shila boshlaydi, natijada dastur kamroq javob beradi. Kodning bu qismi uchun manba qo'shimcha/onewire papkasida joylashgan.
WS2812B
ESP8266 -da PWM uchun LED chiziqlarini 800 kGts tezlikda haydash uchun etarlicha standart uskuna mavjud emas. Buning oldini olish uchun ushbu loyihada LEDlarni boshqarish uchun SPI MOSI pin ishlatiladi. SPI soat tezligini sozlash va SPI yukini o'zgartirish orqali siz har bir LEDni ishonchli boshqarishga erishishingiz mumkin. Bu usul kamchiliklardan xoli emas- LEDlar 5V manbali bo'lishi kerak va SPI pinining chiqish darajasiga o'zgartirish moslamasi qo'shilishi kerak. Ammo 3.3V ishlaydi. Ikkinchidan, SPI usuli yordamida nomukammal vaqt tufayli yuzaga keladigan nosozliklar mavjud. Uchinchidan, endi siz SPIni boshqa hech narsa uchun ishlata olmaysiz. Bu usul haqida qo'shimcha ma'lumotni bu erda topishingiz mumkin va kodning bu qismi uchun manba extras/ws2812 papkasida joylashgan.
LED chiziqlarini haydashning yanada ishonchli usuli - i2sdan foydalanish. Ammo bu usulda chiplarga xos bo'lgan ko'plab xakerlar bor, shuning uchun SPI o'quv mashg'uloti sifatida yaxshiroq tanlov bo'lib tuyuldi.
Tavsiya:
Arduino va ESP8266 bilan o'zaro ta'sirlashuvchi DS18B20 harorat sensori: 8 qadam
DS18B20 harorat sensori Arduino va ESP8266 bilan o'zaro bog'liq: Hey, nima bo'ldi, bolalar! Akarsh bu erda CETech -dan. Bugun biz o'z arsenalimizga DS18B20 harorat sensori deb nomlanuvchi yangi sensorni qo'shamiz. Bu DHT11 ga o'xshash harorat sensori, lekin boshqa ilovalar to'plamiga ega. Biz buni taqqoslaymiz
Bluetooth va WiFi ESP8266 yordamida simsiz RGB Led tasmasi: 3 qadam
Bluetooth va Wifi ESP8266 yordamida simsiz RGB Led tasmasi: Bluetooth va WIFIWatch yordamida RGB Led tasmasi batafsil ma'lumot uchun youtube video
ESP8266 va BME280 yordamida Apple HomeKit harorat sensori qurilmasini yarating: 10 qadam
ESP8266 va BME280 yordamida Apple HomeKit harorat sensori qurilmasini yarating: Bugungi kunda biz AOSONG AM2302/DHT22 yoki BME280 harorat/namlik sensori, YL-69 namlik sensori asosida past harorat, namlik va namlik sensori ishlab chiqaramiz. va ESP8266/Nodemcu platformasi. Va namoyish qilish uchun
ESP8266 bilan WiFi boshqariladigan RGB LED tasmasi: 5 qadam
ESP8266 bilan Wi -Fi orqali boshqariladigan RGB LED tasmasi: Asosiysi, WiFi orqali boshqariladigan LED chiroqlarni yaratish. Menda Rojdestvodan zaxira LED tasmasi bor, shuning uchun men uni ESP8266 ga qayta ishlayman, bu esa LEDni WiFi orqali boshqarishga imkon beradi
ESP8266 bilan IoT harorat sensori: 6 qadam (rasmlar bilan)
ESP8266 bilan IoT harorat sensori: Men Wi -Fi orqali kuzatiladigan harorat sensori yaratishga ilhom oldim. Bu loyiha yangi emas, lekin men xavfsizlik uchun oraliq qatlamga ega bo'lish va routerda portni IoT qurilmasiga ochmaslik g'oyasini yaxshi ko'raman