Mundarija:

WiFi LED tasmasi + ESP8266 bilan harorat sensori: 6 qadam
WiFi LED tasmasi + ESP8266 bilan harorat sensori: 6 qadam

Video: WiFi LED tasmasi + ESP8266 bilan harorat sensori: 6 qadam

Video: WiFi LED tasmasi + ESP8266 bilan harorat sensori: 6 qadam
Video: Yeni Ofisimizin ilk Videosu, 3in1 NANO ve ESP Shieldler 2024, Noyabr
Anonim
WiFi LED tasmasi + ESP8266 bilan harorat sensori
WiFi LED tasmasi + ESP8266 bilan harorat sensori

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

Uskuna komponentlarini ulang
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:

  1. 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.
  2. 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.
  3. 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:

  1. Foydalanuvchini qo'ng'iroqlar guruhiga qo'shing:

    sudo adduser $ (whoami) dialout

  2. 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: