Мазмұны:

WiFi LED жолағы + ESP8266 бар температура сенсоры: 6 қадам
WiFi LED жолағы + ESP8266 бар температура сенсоры: 6 қадам

Бейне: WiFi LED жолағы + ESP8266 бар температура сенсоры: 6 қадам

Бейне: WiFi LED жолағы + ESP8266 бар температура сенсоры: 6 қадам
Бейне: Использование термопары MAX6675 с ESP32 Bluetooth 2024, Қараша
Anonim
WiFi LED жолағы + ESP8266 бар температура сенсоры
WiFi LED жолағы + ESP8266 бар температура сенсоры

Бұл оқулықта ESP8266 орнату және оны температура сенсорымен де, жарық диодты жолақпен де сөйлесу, сонымен қатар WiFi арқылы MQTT көмегімен шығуды қабылдау мен жіберуге болатын қадамдар сипатталған. Жоба Cal Poly San Luis Obispo-да 2016 жылдың күзінде өткен курс үшін жасалған- CPE 439: Real Time Embedded Systems. Жалпы мақсат-арзан жабдықтары бар интернетке қосылған «затты» құрудың қарапайымдылығын көрсету.

Қажетті жабдықтар/жабдықтар:

  • NodeMCU ESP8266 тақтасы
  • WS2812B жарық диодты жолағы
  • MAX31820 Температура сенсоры
  • Нан тақтасы
  • 4,7 кОм резистор
  • 220 Ом резисторы
  • секіргіш сымдар
  • микро-USB кабелі
  • Linux (мысалы, Ubuntu) жұмыс істейтін компьютер (немесе VM)

Болжамдар/пререквизиттер:

  • пәрмен жолы құралдарын қолдану және пакеттерді debian-дистрибутивке орнату тәжірибесі
  • Makefile синтаксисі туралы негізгі түсінік
  • байланыстырушы сымдар

1 -қадам: Құрылыс ортасын құру

Жобаны құру үшін сізге компьютерде esp-open-sdk орнатылуы қажет. Сілтемені орындаңыз және құрылыс нұсқауларын оқыңыз. Қысқаша айтқанда, сіз тәуелділікті орнату үшін sudo apt-get пәрмендерін, esp-open-sdk клондау/жүктеу үшін қайталанатын git clone, және esp-open-sdk құруға арналған команданы жасайсыз.

Маған қара

2 -қадам: бастапқы кодты алыңыз, конфигурациялаңыз және жасаңыз

Енді esp-open-sdk құрылды, жоба репозиторийін клондау.

git клоны

Жоба каталогына ауысыңыз,.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 жарық диодты жолағындағы пикселдер саны

Ескерту: Бұл жоба жарықдиодты шығару үшін SPI қолданатындықтан және оларды жеткізу үшін NodeMCU 3.3v пайдаланатындықтан, сіз ~ 60 светодиодтан артық жүргізе алмайтын шығарсыз.

Ескертпе: Басқа параметрлерді өзгерту қажет емес, бірақ қажет болған жағдайда болады. Тапсырманың басымдылық тәртібін сақтау ұсынылады. Басымдық саны неғұрлым төмен болса, тапсырманың басымдығы соғұрлым төмен болады.

Енді жобаны құрыңыз:

жасау -C мысалдары/cpe439

Егер бәрі дұрыс орнатылған болса, ол компиляцияны бастау керек. Соңында сіз көруіңіз керек:

Сәтті «микробағдарлама/cpe439.bin» құрылды

Маған қара

3 -қадам: Жабдық компоненттерін қосыңыз

Аппараттық компоненттерді қосыңыз
Аппараттық компоненттерді қосыңыз

Енді код құрастырылған кезде, біздің перифериялық құрылғыларды қосатын кез келді.

Алдымен NodeMCU тақтасына жабыстырыңыз, содан кейін диаграммада көрсетілгендей қосылымдарды орнату үшін өтпелі сымдарды қолданыңыз.

Бірнеше нәрсені білу керек:

  1. Маңызды: WS2812B деректер желісі екі бағытты емес. Егер сіз жолақтың жарықдиодты жағындағы белгілерге мұқият қарасаңыз, онда бір бағытты көрсететін кішкентай жебелерді көруге болады. NodeMCU D7 -нің шығысы WS2812B -ге бағыттаушы таңбасы сияқты бағытталуы керек, егер сіз мұқият қарасаңыз, оны диаграммадан көре аласыз.
  2. WS2812B қандай қосқыштармен бірге келетініне байланысты, оларды тақтаға сенімді түрде қосу үшін сізге кейбір өзгертулер қажет болуы мүмкін. Сондай-ақ, аллигатор қысқыштарын оларды тақтаға қосылатын кабельдерге қосу үшін пайдалануға болады.
  3. MAX31820 түйреуіштерінің қадамы кішірек және стандартты 0,1 дюймдік/2,54 мм секіргіштерге қарағанда жұқа, бұл оларды қосуды қиындатады. Мұның бір жолы-әйелден еркекке секіргіш сымдарды қолдану, пластикалық корпусты әйел жағынан алу, содан кейін кіші MAX31820 түйреуіштерінің айналасындағы секіргіштердің ұштарын қысу үшін кейбір қысқыштарды пайдаланыңыз.

NodeMCU қосылмас бұрын компоненттерге зақым келтірмеу үшін қосылымдарды екі рет тексеріңіз.

4 -қадам: Жарқыл және іске қосыңыз

Жыпылықтайды

Барлық жабдықтар қосылған кезде 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 файлына қосуға болады:

бүркеншік nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q'

..бұл пәрменге бүркеншік ат ретінде «nodemcu» теруге мүмкіндік береді.

Егер бәрі дұрыс конфигурацияланған болса, сіздің жарық диодты жолағыңыз жасыл түспен жанып тұруы керек, ал сериялы жағдайда сіз 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: rt_Wq_tq_tq: (Қайта) MQTT серверіне қосылу test.mosquitto.org… xQueueReceive +25.50xQueueSend OK жасалды

5 -қадам: өзара әрекеттесу

Егер сіздің құрылғы WiFi мен MQTT брокеріне сәтті қосылған болса, сіз NodeMCU -ден MQTT көмегімен деректерді жібере және қабылдай аласыз. Егер сізде әлі жоқ болса, москит клиенттерінің пакетін орнатыңыз:

sudo apt-get москит-клиенттерді орнатыңыз

Енді сіз mosquitto_pub және mosquitto_sub бағдарламаларын қабығыңыздан пайдалана аласыз.

Температура жаңартуларын алу

Температура туралы ақпаратты алу үшін біз NodeMCU жариялайтын тақырыпқа жазылу үшін mosquitto_sub пәрменін қолданғымыз келеді.

mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp

Терминалға келетін температура деректерін (Цельсий бойынша) көру керек.

+25.87+25.93+25.68…

Жарық диодты жолақтың түсін қашықтан орнату

Хабарламаның қарапайым форматы RGB мәндерін NodeMCU -ге MQTT арқылы жіберу үшін қолданылады. Пәрменнің форматы келесідей:

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 ~ ' # көк

Егер сіз шығармашылықпен айналысқыңыз келсе, Интернетте осындай түс таңдаушыны табыңыз және сіз таңдаған RGB мәні бар пәрменді өңдеңіз.

Қауіптену

Бұл жобадағы тақырыптар ашық MQTT брокерінде /cpe439 /rgb және /cpe439 /temp күйіне орнатылған, бұл басқа біреудің сіз сияқты тақырыптарды жариялауға немесе жазылуына кедергі келтіретін ештеңе жоқ екенін білдіреді. Бір нәрсені сынап көру үшін ашық брокерді қолдану жақсы, бірақ маңызды жобалар үшін сіз парольмен қорғалған брокерге қосылғыңыз келеді немесе серверде жеке брокерді қосқыңыз келеді.

6 -қадам: Іске асыру мәліметтері

Onewire

ESP8266 -де тек 1 ядро бар, сондықтан ұзақ уақыт бойы температура сенсорының температураны өлшеуін күтетін 750 мс күту сияқты блоктау міндеттері әдетте WiFi -дің жақсы жұмыс істемеуіне және тіпті апатқа әкелуі мүмкін. FreeRTOS парадигмасында сіз осы ұзақ күтуді орындау үшін vTaskDelay () шақырасыз, бірақ оқу мен жазудың арасында FreeRTOS жүйесінің белгісінен қысқа болатын көптеген қысқа күту қажет, сондықтан оны vTaskDelay () көмегімен болдырмауға болмайды. Оларды айналып өту үшін, бұл жобаның бір сымды драйвері ESP8266 аппараттық таймерімен басқарылатын күйдегі машинаны өшіру үшін жазылды, ол оқиғаларды әр 10 секунд сайын жүргізе алады, бұл ең қысқа болады. бір сымды оқу/жазу әрекеттері арасындағы қажетті уақыт. Басқа бағдарламалардың көпшілігі delay_us () немесе бұған ұқсас бұғаттау қоңырауын пайдаланады, бірақ егер сіз үнемі температура жаңартуларын алып отырсаңыз, барлық кешігулер қосыла бастайды, нәтижесінде жауап беру қабілеті төмен болады. Кодтың осы бөлігінің көзі extras/onewire қалтасында орналасқан.

WS2812B

ESP8266 -да 800 кГц жиілікте жарықдиодты жолақтарды басқаруға жеткілікті жылдамдықтағы PWM стандартты аппараттық опциялары жоқ. Бұл мәселені шешу үшін, бұл жоба жарықдиодты жарықтандыру үшін SPI MOSI түйреуішін қолданады. SPI сағаттық жиілігін реттеу және SPI жүктемесін өзгерту арқылы сіз әрбір жеке жарықдиодты сенімді басқаруға қол жеткізе аласыз. Бұл әдістің кемшіліктері де жоқ емес- бір светодиодты 5В көзінен алу керек және SPI түйреуішінің шығысына деңгей ауыстырғышты қосу керек. Бірақ 3.3 В жұмыс істейді. Екіншіден, SPI әдісін қолдану арқылы уақытты жетілдірмегендіктен пайда болатын ақаулар бар. Үшіншіден, енді сіз SPI -ді басқа ештеңе үшін пайдалана алмайсыз. Бұл әдіс туралы қосымша мәліметті мына жерден табуға болады, ал кодтың осы бөлігінің көзі extras/ws2812 қалтасында орналасқан.

Жарық диодты жолақтарды жүргізудің сенімді әдісі - i2s пайдалану. Дегенмен, бұл әдісте көптеген чиптер бар, сондықтан SPI оқу жаттығуы ретінде жақсы таңдау болып көрінді.

Ұсынылған: