Агуулгын хүснэгт:
- Алхам 1: Бүтээлч орчныг бүрдүүлэх
- Алхам 2: Эх кодыг авах, тохируулах, бүтээх
- Алхам 3: Тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүдийг холбоно уу
- Алхам 4: Flash ба Run
- Алхам 5: Харилцах
- Алхам 6: Хэрэгжүүлэх дэлгэрэнгүй
Видео: WiFi LED зурвас + ESP8266 бүхий температур мэдрэгч: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Энэхүү гарын авлагад ESP8266 -ийг тохируулах, температур мэдрэгч болон LED зурвасын аль алинтай нь ярилцах, мөн WiFi -ээр MQTT ашиглан оролт хүлээн авах, гаралтыг илгээх боломжтой байх алхмуудыг тайлбарласан болно. Энэхүү төслийг 2016 оны намар Cal Poly San Luis Obispo-д авсан сургалтанд зориулж хийсэн- CPE 439: Real Time Embedded Systems. Ерөнхий зорилго бол хямд тоног төхөөрөмжөөр интернетэд холбогдсон "зүйлийг" бий болгоход хялбар байдлыг харуулах явдал байв.
Шаардлагатай хангамж/тоног төхөөрөмж:
- NodeMCU ESP8266 хөгжүүлэгч самбар
- WS2812B LED зурвас
- MAX31820 Температур мэдрэгч
- Талхны самбар
- 4.7K ом эсэргүүцэл
- 220 Ом эсэргүүцэл
- холбогч утас
- микро-USB кабель
- Linux (жишээ нь. Ubuntu) ажиллаж байгаа PC (эсвэл VM)
Таамаглал/урьдчилсан нөхцөл:
- тушаалын мөрийн хэрэгслүүдийг ашиглах, debian дээр суурилсан дистрост багц суулгах туршлагатай
- Makefile синтаксийн талаархи үндсэн ойлголт
- холбох утас
Алхам 1: Бүтээлч орчныг бүрдүүлэх
Төслийг бүтээхийн тулд таны машин дээр esp-open-sdk суулгасан байх шаардлагатай. Холбоосыг дагаж бүтээх зааврыг уншина уу. Товчхондоо та sudo apt-get командуудыг ашиглан хамаарал, git clone-recursive clone/download esp-open-sdk, эцэст нь esp-open-sdk-ийг бий болгох командыг хийх болно.
Намайг хар
Алхам 2: Эх кодыг авах, тохируулах, бүтээх
Одоо esp-open-sdk-ийг бүтээсэн тул төслийн репозиторыг хуулбарлана уу.
git clone
Төслийн лавлах руу орж,.local фолдер үүсгэж, жишээ тохиргоог хуулж ав.
cd esp-rtos-тестүүд
mkdir -p. local cp settings.example.mk.local/settings.mk
Одоо.local/settings.mk -ийг дурын текст засварлагчаар нээгээд дараах тохиргоог өөрчилнө үү.
- OPENSDK_ROOT: 1-р алхам дээр байгуулсан esp-open-sdk-ийн байршлын үнэмлэхүй зам
- WIFI_SSID: Таны WiFi сүлжээний SSID
- WIFI_PASS: Таны WiFi сүлжээний нууц үг
- PIXEL_COUNT: Таны WS2812B LED туузан дээрх пикселийн тоо
Тэмдэглэл: Энэхүү төсөл нь LED -ийг жолоодоход SPI ашигладаг бөгөөд NodeMCU 3.3v -ийг нийлүүлдэг тул та ~ 60 -аас илүү LED жолоодохгүй байх магадлалтай.
Тэмдэглэл: Бусад тохиргоог өөрчлөх шаардлагагүй боловч хэрэв хүсвэл өөрчилж болно. Ажлын тэргүүлэх чиглэлүүдийн дарааллыг хадгалахыг зөвлөж байна. Тэргүүлэх тоо бага байх тусам даалгаврын тэргүүлэх ач холбогдол буурна.
Одоо төслийг бүтээх:
болгох -C жишээ/cpe439
Хэрэв бүх зүйл зөв тохируулагдсан бол эмхэтгэж эхлэх хэрэгтэй. Төгсгөлд нь та харах ёстой:
'Firmware/cpe439.bin' -ийг амжилттай үүсгэсэн.
Намайг хар
Алхам 3: Тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүдийг холбоно уу
Кодыг эмхэтгэсэн бол бидний дагалдах хэрэгслийг холбох цаг болжээ.
Нэгдүгээрт, NodeMCU -ийг талхны тавцан дээр наалдуулж, холбогчийг диаграммд үзүүлсэн шиг холбоно.
Анхаарах ёстой хэд хэдэн зүйл:
- Чухал: WS2812B мэдээллийн шугам нь хоёр чиглэлтэй биш юм. Хэрэв та туузны LED тал дээрх тэмдэглэгээг сайтар ажиглавал нэг чиглэлийг зааж буй жижиг сумнууд харагдаж байна. NodeMCU -ийн D7 -ийн гаралт нь WS2812B руу чиглүүлэгчтэй ижил чиглэлтэй байх ёстой бөгөөд үүнийг анхааралтай ажиглавал диаграмаас харж болно.
- Таны WS2812B ямар төрлийн холбогчтой байгаагаас шалтгаалан тэдгээрийг талхны самбар дээр найдвартай холбохын тулд зарим өөрчлөлт хийх шаардлагатай болж магадгүй юм. Та мөн матрын хавчаарыг талхны самбар дээр холбогч кабельд холбох боломжтой.
- MAX31820 тээглүүр нь арай бага давирхайтай бөгөөд стандарт 0.1 "/2.54 мм үсрэгчээс илүү нимгэн тул тэдгээрийг холбоход төвөгтэй байдаг. Үүнийг тойрч гарах нэг арга бол эмэгтэй-эрэгтэй холбогч утас ашиглах, хуванцар хайрцгийг эмэгтэй талаас нь салгах, Дараа нь зарим бахө ашиглан эмэгтэй холбогчийг жижиг MAX31820 тээглүүрээр чангална.
Бүрэлдэхүүн хэсгүүдийг гэмтээхгүйн тулд NodeMCU-ийг асаахаасаа өмнө холболтыг дахин шалгана уу.
Алхам 4: Flash ба Run
Гялалзаж байна
Бүх тоног төхөөрөмж холбогдсон үед NodeMCU -аа залгаж дараах командыг ашиглан анивчаарай.
flash хийх -C жишээ/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0 бол NodeMCU доор харагдах ёстой цуврал ком юм. Хэрэв танд өөр цуваа төхөөрөмж холбогдсон бол энэ нь /dev /ttyUSB1 эсвэл өөр дугаараар гарч ирж магадгүй юм. Үүнийг шалгахын тулд та энэ тушаалыг хоёр удаа ажиллуулж болно, нэг удаа NodeMCU -ийг салгаж, нэг удаа залгаж, ялгааг харьцуулж үзээрэй.
ls /dev /ttyUSB*
Танд тулгарч болзошгүй өөр нэг асуудал бол төхөөрөмжид хандах зөвшөөрөлгүй байх явдал юм. Үүнийг засах хоёр арга байна:
-
Дуудлага хийх бүлэгт хэрэглэгчээ нэмээрэй:
sudo adduser $ (whoami) дуудлага хийх
- chmod эсвэл төхөөрөмжийг асаах:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Эхний арга нь байнгын шийдэл тул илүүд үздэг.
Гүйж байна
Flash командыг амжилттай ажиллуулсны дараа төхөөрөмж нэн даруй ачаалагдаж, хөрвүүлсэн кодыг ажиллуулж эхэлнэ. Флэш хийсний дараа хүссэн үедээ цуваа гаралтыг үзэхийн тулд дараах тушаалыг ажиллуулж болно.
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Цаг хэмнэхийн тулд үүнийг ~/.bashrc файлдаа нэмж болно.
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'
.. энэ нь танд "nodemcu" гэсэн тушаалыг өөр нэр болгон бичих боломжийг олгодог.
Хэрэв бүх зүйл зөв тохируулагдсан бол таны LED зурвас ногоон өнгөөр асах ёстой бөгөөд цуваа дээр та WiFi холболт, IP хаяг, MQTT -тэй холбогдох, температурын өгөгдлийг шахаж байгаа мессежүүдийг харах ёстой.
MyWiFiSSID -тай холбогдсон 1dhcp суваг үйлчлүүлэгчийг эхлүүлэх… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, маск: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status_5qqtt: (Re) MQTT сервертэй холбогдоно test.mosquitto.org… xQueueReceive +25.50xQueueSend OK хийгдэв
Алхам 5: Харилцах
Таны төхөөрөмж WiFi болон MQTT брокерт амжилттай холбогдсон гэж үзвэл та MQTT ашиглан NodeMCU -аас өгөгдөл илгээх, хүлээн авах боломжтой болно. Хэрэв та хараахан амжаагүй байгаа бол шумуулын үйлчлүүлэгчдийн багцыг суулгаарай.
sudo apt-get шумуул үйлчлүүлэгчдийг суулгаарай
Та одоо бүрхүүлээсээ mosquitto_pub болон mosquitto_sub програмуудыг ашиглах боломжтой байх ёстой.
Температурын шинэчлэлтийг хүлээн авч байна
Температурын мэдээллийг хүлээн авахын тулд бид mosquitto_sub командыг ашиглан NodeMCU -ийн нийтэлж буй сэдвийг захиалахыг хүсч байна.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Терминал дээр ирж буй температурын өгөгдлийг (Цельсийн хэмээр) харах ёстой.
+25.87+25.93+25.68…
LED туузны өнгийг алсаас тохируулах
RGB утгыг MQTT -ээр NodeMCU руу илгээхэд мессежийн энгийн форматыг ашигладаг. Командын формат дараах байдлаар харагдаж байна.
r: RRRg: GGGb: BBB ~
RRR, GGG, BBB нь таны илгээхийг хүссэн өнгөний RGB (0-255) утгатай тохирч байвал. Манай тушаалыг илгээхийн тулд бид mosquitto_pub командыг ашиглана. Энд хэдэн жишээ байна:
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 ~ ' # blue
Хэрэв та бүтээлч сэтгэлгээтэй болохыг хүсч байвал иймэрхүү өнгө сонгогчийг онлайнаар хайж олоод RGB-ийн үнэ цэнийг ашиглан командыг засаарай.
Болгоомжтой
Энэхүү төслийн сэдвүүдийг олон нийтийн MQTT брокер дээр /cpe439 /rgb ба /cpe439 /temp гэж тохируулсан бөгөөд энэ нь өөр хэн нэгэн тантай ижил сэдвийг нийтлэх эсвэл бүртгүүлэхэд саад болохгүй гэсэн үг юм. Аливаа зүйлийг туршиж үзэхийн тулд олон нийтийн брокер ашиглах нь зүгээр юм, гэхдээ илүү ноцтой төслүүдийн хувьд та нууц үгээр хамгаалагдсан брокертой холбогдох эсвэл сервер дээр өөрийн брокер ажиллуулахыг хүсч байна.
Алхам 6: Хэрэгжүүлэх дэлгэрэнгүй
Утас
ESP8266 нь зөвхөн 1 цөмтэй тул температур мэдрэгчийг хэмжихийн тулд 750 мс хүлээх гэх мэт хаах ажлуудыг хийх нь ихэвчлэн WiFi сайн ажиллахгүй, бүр сүйрэлд хүргэж болзошгүй юм. FreeRTOS парадигмд та эдгээр урт хүлээлтийг зохицуулахын тулд vTaskDelay () руу залгадаг боловч унших, бичих хооронд FreeRTOS системийн тэмдэглэлээс богино байдаг тул богино хүлээх шаардлагатай байдаг тул vTaskDelay () -ээс зайлсхийх боломжгүй юм. Эдгээр төслүүдийг тойрон гарахын тулд энэхүү төслийн нэг утсан драйверыг ESP8266-ийн тоног төхөөрөмжийн цаг хэмжигчээр удирддаг, 10 микро секунд тутамд хамгийн бага үйл явдлыг өдөөж болох төлөвт машиныг ажиллуулахаар бичсэн бөгөөд энэ нь хамгийн богино нь юм. onewire унших/бичих үйлдлүүдийн хоорондох шаардлагатай хугацаа. Бусад ихэнх хэрэгжилтүүд нь үүнийг зохицуулахын тулд delay_us () эсвэл түүнтэй төстэй дуудлага хийдэг боловч хэрэв та температурын шинэчлэлтийг байнга авч байх юм бол бүх саатал нэмэгдэх бөгөөд энэ нь хариу өгөх чадвар багатай програмыг бий болгодог. Кодын энэ хэсгийн эх сурвалж нь extras/onewire хавтсанд байрладаг.
WS2812B
ESP8266 нь 800 кГц давтамжтай LED туузыг ажиллуулахад хангалттай хурдан ХОУХ -ны стандарт тоног төхөөрөмжийн сонголтгүй байна. Үүнийг тойрч гарахын тулд энэхүү төсөл нь LED -ийг удирдахын тулд SPI MOSI зүүг ашигладаг. SPI -ийн цагийн хурдыг тохируулж, SPI -ийн ачааллыг өөрчилснөөр та LED тус бүрийг нэлээд найдвартай хянах боломжтой болно. Энэ арга нь өө сэвгүй зүйл биш юм. Учир нь нэг LED нь 5V эх үүсвэрээр тэжээгдэж, SPI зүүний гаралтанд түвшин шилжүүлэгчийг оруулах шаардлагатай. Гэхдээ 3.3V ажилладаг. Хоёрдугаарт, SPI аргыг ашиглан цаг хугацаа нь дутуу хийгдсэний улмаас алдаа гардаг. Гуравдугаарт, одоо та SPI -ийг өөр зүйлд ашиглах боломжгүй байна. Энэ аргын талаархи нэмэлт мэдээллийг эндээс авах боломжтой бөгөөд кодын энэ хэсгийн эх сурвалж нэмэлт/ws2812 фолдерт байрладаг.
LED туузыг жолоодох илүү найдвартай арга бол i2s ашиглах явдал юм. Гэсэн хэдий ч энэ арга нь олон тооны чипт зориулагдсан хакеруудтай тул SPI нь сургалтын дасгал хийхэд илүү тохиромжтой сонголт юм шиг санагдсан.
Зөвлөмж болгож буй:
ESP8266 дээрх BBQ температур ба махны мэдрэгч дэлгэцтэй: 5 алхам (зурагтай)
ESP8266 дээрх BBQ -ийн температур ба махны мэдрэгч дэлгэцтэй: Энэхүү зааврын дагуу би шарсан махныхаа одоогийн температурыг хэмжиж, шаардлагатай бол асаахын тулд сэнс асааж, шарах хэрэгслийн өөрийн хувилбарыг хэрхэн хийхийг танд үзүүлэх болно. Нэмж дурдахад махны үндсэн температур мэдрэгч attac байдаг
ESP8266 болон BME280: 10 алхам ашиглан Apple HomeKit -ийн температур мэдрэгч төхөөрөмжийг бүтээх
ESP8266 ба BME280 ашиглан Apple HomeKit-ийн температур мэдрэгч төхөөрөмжийг бүтээх: Өнөөдрийн зааварчилгаанд бид AOSONG AM2302/DHT22 эсвэл BME280 температур/чийгшил мэдрэгч, YL-69 чийг мэдрэгч дээр суурилсан хямд өртөг бүхий температур, чийгшил, чийгийн мэдрэгчийг хийх болно. болон ESP8266/Nodemcu платформ. Мөн харуулахын тулд
ESP8266 NodeMCU хандалтын цэг (AP) нь DT11 температур мэдрэгчтэй, хөтөч дэх температур ба чийгшил бүхий вэб серверийн хувьд: 5 алхам
Хөтөч дээр DT11 температур мэдрэгч, хэвлэх температур ба чийгшил бүхий вэб серверт зориулсан ESP8266 NodeMCU хандалтын цэг (AP): Сайн байна уу залуус бид ESP8266 -ийг ашигладаг ихэнх төслүүд болон ихэнх төслүүдэд ESP8266 -ийг вэб сервер болгон ашигладаг тул өгөгдөлд хандах боломжтой. ESP8266 -аас зохион байгуулагдсан вэбсервер рүү нэвтрэх замаар wifi сүлжээнд холбогдсон ямар ч төхөөрөмж, гэхдээ цорын ганц асуудал бол бидэнд ажиллах чиглүүлэгч хэрэгтэй болно
ESP8266 бүхий IoT температур мэдрэгч: 6 алхам (зурагтай)
ESP8266 -тай IoT температур мэдрэгч: Би wifi -ээр хянах боломжтой температур мэдрэгчийг бий болгоход урам зориг өгсөн. Энэ төсөл нь шинэ зүйл биш боловч аюулгүй байдлыг хангахын тулд завсрын давхаргатай байх, чиглүүлэгч дээрээ портоо өөрийн IoT төхөөрөмж рүү нээх шаардлагагүй байх нь надад таалагдаж байна
Matrix Led X4 MAX7219 + ESP8266 12E + Мэдрэгч DS18b20 (Температур): 6 алхам
Matrix Led X4 MAX7219 + ESP8266 12E + Мэдрэгч DS18b20 (Температур): Энэ тохиолдолд бид ESP8266 модуль бүхий нэгдсэн MAX7219 хөтөчтэй матриц руу хурдан туршилт хийх бөгөөд ингэснээр тийм ч хялбар биш тул мэдрэгчийн температурыг унших болно. DS18B20. Ирээдүйн хичээлүүд дээр бид үүнийг бусад платформд нэгтгэх болно