Мазмуну:

WiFi LED Strip + ESP8266 менен температура сенсору: 6 кадам
WiFi LED Strip + ESP8266 менен температура сенсору: 6 кадам

Video: WiFi LED Strip + ESP8266 менен температура сенсору: 6 кадам

Video: WiFi LED Strip + ESP8266 менен температура сенсору: 6 кадам
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Июль
Anonim
WiFi LED Strip + ESP8266 менен температура сенсору
WiFi LED Strip + ESP8266 менен температура сенсору

Бул окуу куралы ESP8266 орнотуу жана аны температура сенсору менен жана LED тилкеси менен сүйлөшүү үчүн, ошондой эле WiFi аркылуу MQTT менен чыгууну кабыл алуу жана жөнөтүү кадамдарын сүрөттөйт. Долбоор 2016-жылдын күзүндө Cal Poly San Luis Obispoдо өткөн курс үчүн жасалган- CPE 439: Real Time Embedded Systems. Жалпы максат арзан жабдыктар менен интернетке туташкан "нерсени" түзүүнүн оңой экендигин көрсөтүү болчу.

Керектелүүчү жабдуулар/жабдуулар:

  • NodeMCU ESP8266 иштеп чыгуучу тактасы
  • WS2812B LED тасмасы
  • MAX31820 Температура сенсору
  • Breadboard
  • 4.7K Ом каршылыгы
  • 220 Ом каршылыгы
  • секирүүчү зымдар
  • микро-USB кабели
  • Linux (мисалы, Ubuntu) иштеген PC (же VM)

Болжолдоолор/Пререквизиттер:

  • командалык сап инструменттерин колдонуу жана пакеттерди debian негизделген дистрибутивге орнотуу тажрыйбасы
  • Makefile синтаксиси жөнүндө негизги түшүнүк
  • туташтыруучу зымдар

1 -кадам: Курулуш чөйрөсүн түзүү

Долбоорду куруу үчүн сизге esp-open-sdk орнотулушу керек. Шилтемени ээрчиңиз жана куруу көрсөтмөлөрүн окуңуз. Кыскача айтканда, сиз көз карандылыкты орнотуу үчүн бир нече sudo apt-get буйруктарын, esp-open-sdkти клондоо/жүктөө үчүн рекурсивдүү git klonун жана акырында esp-open-sdkти куруу буйругун аткарасыз.

Me Watch

2 -кадам: Булак кодун алыңыз, конфигурациялаңыз жана куруңуз

Эми esp-open-sdk курулгандыктан, долбоордун репозиторийин клондоштуруңуз.

git клону

Долбоордун директориясына кирип,.local папкасын түзүңүз жана мисал орнотууларын көчүрүңүз.

cd esp-rtos-тесттери

mkdir -p.clocal 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" түзүлдү

Me Watch

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Биринчи ыкма туруктуу чечим болгондуктан артыкчылык берилет.

Чуркоо

Флэш командасын ийгиликтүү иштеткенден кийин, түзмөк дароо жүктөлөт жана компиляцияланган кодду иштете баштайт. Жарк эткенден кийин каалаган убакта сериялык чыгарууну көрүү үчүн төмөнкү буйрукту иштетсеңиз болот:

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: ok_twq_twq_tq: (Re) MQTT серверине туташуу test.mosquitto.org… xQueueReceive +25.50xQueueSend ok doneSQL MQTT connect… MQTTv311donexQueueReceive +25.56 xQueueSend 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…

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 -кадам: Ишке ашыруу чоо -жайы

Onewire

ESP8266 бир гана ядрого ээ, ушунчалык узак, температура сенсорун температураны өлчөө үчүн 750 мс күтүү сыяктуу милдеттерди токтотуу, адатта, WiFi жакшы иштебей калышы мүмкүн, ал тургай кыйрашы мүмкүн. FreeRTOS парадигмасында сиз vTaskDelay () чакырып, бул узак күтүүлөрдү иштетесиз, бирок окуу менен жазуунун ортосунда талап кылынган көптөгөн кыска күтүүлөр бар, алар FreeRTOS тутумуна караганда кыска, ошондуктан vTaskDelay () менен качууга болбойт. Буларды айланып өтүү үчүн, бул долбоордогу onewire драйвери ESP8266 аппараттык таймеринин жардамы менен иштей турган машинаны өчүрүү үчүн жазылган, бул ар бир 10 микро секундага чейин болгон окуяларды ишке ашыра алат, бул эң кыска. onewire окуу/жазуу операцияларынын ортосундагы талап кылынган убакыт. Көпчүлүк башка колдонмолор муну чечүү үчүн delay_us () же окшош нерсеге бөгөт коюу чалуусун колдонушат, бирок эгер сиз дайыма температура жаңыртууларын алып турсаңыз, анда бардык кечигүүлөр кошула баштайт, натыйжада анча жооп бербеген колдонмо пайда болот. Коддун бул бөлүгүнүн булагы кошумча/onewire папкасында жайгашкан.

WS2812B

ESP8266да 800 КГц диоддуу LED тилкелерин айдап кете ала турган PWM үчүн стандарттуу аппараттык параметрлер жок. Муну айланып өтүү үчүн, бул проект LEDларды айдаш үчүн SPI MOSI пинин колдонот. SPI сааттын ылдамдыгын тууралоо жана SPI жүгүн айланасында өзгөртүү менен, сиз ар бир жеке LEDди кыйла ишенимдүү башкарууга жетише аласыз. Бул методдун кемчиликтери жок эмес- бирөө үчүн 5В булагы бар светодиоддор иштеши керек жана SPI төөнөгүчүнүн деңгээлине которгуч кошулушу керек. Бирок 3.3V иштейт. Экинчиден, SPI ыкмасын колдонуу менен убакыттын так эместигинен пайда болгон мүчүлүштүктөр бар. Үчүнчүсү, азыр SPIди башка нерсеге колдоно албайсыз. Бул методдун кошумча фонун бул жерден тапса болот жана коддун бул бөлүгүнүн булагы extras/ws2812 папкасында жайгашкан.

LED тилкелерин айдоонун дагы ишенимдүү ыкмасы i2s колдонуу. Бирок, бул ыкма чипке мүнөздүү көптөгөн бузукулуктарга ээ, ошондуктан SPI окуу көнүгүүсү катары жакшы тандоо болуп көрүндү.

Сунушталууда: