Агуулгын хүснэгт:

WiFi LED зурвас + ESP8266 бүхий температур мэдрэгч: 6 алхам
WiFi LED зурвас + ESP8266 бүхий температур мэдрэгч: 6 алхам

Видео: WiFi LED зурвас + ESP8266 бүхий температур мэдрэгч: 6 алхам

Видео: WiFi LED зурвас + ESP8266 бүхий температур мэдрэгч: 6 алхам
Видео: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Арваннэгдүгээр
Anonim
WiFi LED зурвас + ESP8266 бүхий температур мэдрэгч
WiFi LED зурвас + ESP8266 бүхий температур мэдрэгч

Энэхүү гарын авлагад 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 -ийг талхны тавцан дээр наалдуулж, холбогчийг диаграммд үзүүлсэн шиг холбоно.

Анхаарах ёстой хэд хэдэн зүйл:

  1. Чухал: WS2812B мэдээллийн шугам нь хоёр чиглэлтэй биш юм. Хэрэв та туузны LED тал дээрх тэмдэглэгээг сайтар ажиглавал нэг чиглэлийг зааж буй жижиг сумнууд харагдаж байна. NodeMCU -ийн D7 -ийн гаралт нь WS2812B руу чиглүүлэгчтэй ижил чиглэлтэй байх ёстой бөгөөд үүнийг анхааралтай ажиглавал диаграмаас харж болно.
  2. Таны WS2812B ямар төрлийн холбогчтой байгаагаас шалтгаалан тэдгээрийг талхны самбар дээр найдвартай холбохын тулд зарим өөрчлөлт хийх шаардлагатай болж магадгүй юм. Та мөн матрын хавчаарыг талхны самбар дээр холбогч кабельд холбох боломжтой.
  3. 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*

Танд тулгарч болзошгүй өөр нэг асуудал бол төхөөрөмжид хандах зөвшөөрөлгүй байх явдал юм. Үүнийг засах хоёр арга байна:

  1. Дуудлага хийх бүлэгт хэрэглэгчээ нэмээрэй:

    sudo adduser $ (whoami) дуудлага хийх

  2. 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 нь сургалтын дасгал хийхэд илүү тохиромжтой сонголт юм шиг санагдсан.

Зөвлөмж болгож буй: