Orodha ya maudhui:

Ukanda wa LED ya WiFi + Sensorer ya Joto Na ESP8266: Hatua 6
Ukanda wa LED ya WiFi + Sensorer ya Joto Na ESP8266: Hatua 6

Video: Ukanda wa LED ya WiFi + Sensorer ya Joto Na ESP8266: Hatua 6

Video: Ukanda wa LED ya WiFi + Sensorer ya Joto Na ESP8266: Hatua 6
Video: Введение в плату разработки NodeMCU ESP8266 WiFi с примером HTTP-клиента 2024, Novemba
Anonim
Ukanda wa LED ya WiFi + Sensorer ya Joto Na ESP8266
Ukanda wa LED ya WiFi + Sensorer ya Joto Na ESP8266

Mafunzo haya yanaelezea hatua za kuanzisha ESP8266 na kuifanya izungumze na sensorer ya joto na ukanda wa LED, wakati pia ikiweza kupokea pembejeo na kutuma pato na MQTT juu ya WiFi. Mradi huo ulifanywa kwa kozi iliyochukuliwa huko Cal Poly San Luis Obispo mnamo Fall 2016- CPE 439: Mifumo Iliyoingizwa ya Real Time. Lengo la jumla lilikuwa kuonyesha urahisi wa kuunda "kitu" kilichounganishwa na mtandao na vifaa vya bei rahisi.

Ugavi / Vifaa vinahitajika:

  • NodeMCU ESP8266 bodi ya dev
  • Ukanda wa LED wa WS2812B
  • Sensor ya joto ya MAX31820
  • Bodi ya mkate
  • Kinga ya 4.7K ohm
  • Kinga ya 220 ohm
  • waya za kuruka
  • kebo ndogo ya usb
  • PC (au VM) inayoendesha linux (kwa mfano Ubuntu)

Mawazo / Vipaumbele:

  • uzoefu wa kutumia zana za laini ya amri na kusanikisha vifurushi kwenye distro ya msingi wa debian
  • uelewa wa kimsingi wa syntax ya Makefile
  • kuunganisha waya

Hatua ya 1: Kuunda Mazingira ya Kuunda

Ili kujenga mradi, utahitaji esp-open-sdk iliyosanikishwa kwenye mashine yako. Fuata kiunga na usome maagizo ya ujenzi. Kwa kifupi utakuwa unafanya amri za kupata apt-apt kusanikisha utegemezi, git clone --recursive to clone / download esp-open-sdk, na mwishowe fanya amri ya kujenga esp-open-sdk.

Niangalie

Hatua ya 2: Pata Nambari ya Chanzo, Sanidi, na Ujenge

Sasa kwa kuwa esp-open-sdk imejengwa, onyesha hifadhi ya mradi.

clone ya git

Badilisha kwenye saraka ya mradi, unda folda ya.local, na nakili mipangilio ya mfano.

cd esp-rtos-vipimo

mkdir -p. mipangilio ya cp ya ndani. mfano.mk.local / mipangilio.mk

Sasa fungua.local / settings.mk na kihariri chochote cha maandishi na ubadilishe mipangilio ifuatayo:

  • OPENSDK_ROOT: Njia kamili ya eneo la esp-open-sdk uliyoijenga katika hatua ya 1
  • WIFI_SSID: SSID ya mtandao wako wa WiFi
  • WIFI_PASS: Nenosiri la mtandao wako wa WiFi
  • PIXEL_COUNT: Idadi ya saizi kwenye ukanda wako wa WS2812B LED

Kumbuka: Kwa kuwa mradi huu unatumia SPI kuendesha LED na kutumia NodeMCU 3.3v kuzisambaza, labda hautaweza kuendesha zaidi ya ~ 60 LEDs.

Kumbuka: Mipangilio mingine haiitaji kubadilishwa, lakini inaweza kuwa ikihitajika. Inashauriwa kuweka utaratibu wa vipaumbele vya kazi. Nambari ya kipaumbele inapungua, kipaumbele cha kazi kinapungua.

Sasa jenga mradi:

fanya -C mifano / cpe439

Ikiwa kila kitu kimewekwa kwa usahihi, inapaswa kuanza kukusanya. Mwishowe unapaswa kuona:

Imefanikiwa kuunda 'firmware / cpe439.bin'

Niangalie

Hatua ya 3: Unganisha vifaa vya vifaa

Unganisha vifaa vya vifaa
Unganisha vifaa vya vifaa

Sasa kwa kuwa nambari imekusanywa, ni wakati wa kuunganisha vifaa vyetu.

Kwanza, weka NodeMCU kwenye ubao wa mkate, kisha utumie waya za kuruka ili kufanya unganisho kama inavyoonyeshwa kwenye mchoro.

Mambo kadhaa ya kufahamu:

  1. Muhimu: Mstari wa data wa WS2812B sio wa pande mbili. Ikiwa unatazama kwa karibu alama kwenye upande wa LED wa ukanda, unapaswa kuona mishale midogo inayoelekeza mwelekeo mmoja. Pato kutoka kwa D7 ya NodeMCU inahitaji kuingia WS2812B sawa na alama ya mwelekeo, ambayo unaweza kuona kwenye mchoro ikiwa unatazama kwa karibu.
  2. Kulingana na aina gani ya viunganisho WS2812B yako inakuja nayo, huenda ukahitaji kufanya marekebisho kadhaa ili kuzifanya ziunganishwe salama kwenye ubao wa mkate. Unaweza pia kutumia klipu za alligator kuziunganisha na nyaya za jumper zinazoweza kutumia ubao wa mkate.
  3. Pini za MAX31820 zina lami ndogo na ni nyembamba kuliko kiwango cha kuruka cha 0.1 "/2.54mm, na kuzifanya kuwa ngumu kuunganika. Njia moja kuzunguka hii ni kutumia waya za kuruka za kike hadi za kiume, toa kasha la plastiki kutoka upande wa kike, kisha tumia koleo zingine kubana kuruka kwa kike kumalizika vizuri karibu na pini ndogo za MAX31820.

Angalia miunganisho kabla ya kuwezesha NodeMCU kuwasha ili isiharibu vifaa.

Hatua ya 4: Flash na Run

Kuangaza

Pamoja na vifaa vyote vilivyounganishwa, ingiza NodeMCU yako na uangaze na amri ifuatayo:

fanya flash -C mifano / cpe439 ESPPORT = / dev / ttyUSB0

/ dev / ttyUSB0 ni serial com ambayo NodeMCU inapaswa kuonyesha chini. Ikiwa una vifaa vingine vya serial vimeunganishwa, inaweza kuonekana kama / dev / ttyUSB1 au nambari nyingine. Kuangalia unaweza kukimbia amri hii mara mbili, mara moja na NodeMCU haijachomwa, na mara moja nayo imeingia, na kulinganisha tofauti:

ls / dev / ttyUSB *

Suala jingine unaloweza kukutana nalo ni kukosa ruhusa ya kufikia kifaa. Njia mbili za kurekebisha hii ni:

  1. Ongeza mtumiaji wako kwenye kikundi cha kupiga simu:

    mazungumzo ya sudo adduser $ (whoami)

  2. chmod au chown kifaa:

sudo chmod 666 / dev / ttyUSB0 sudo chown $ (whoami): $ (whoami) / dev / ttyUSB0Njia ya kwanza inapendelewa kwani ni suluhisho la kudumu.

Kimbia

Baada ya kutekeleza amri ya flash kwa mafanikio, kifaa kitaanza mara moja na kuanza kutumia nambari iliyokusanywa. Wakati wowote baada ya kuangaza unaweza kutumia amri ifuatayo kutazama pato la serial:

python3 -m serial.tools.miniterm -eol CRLF -exit-char 003 / dev / ttyUSB0 500000 -raw -q

Ili kuokoa wakati unaweza kuongeza hii kwenye faili yako ya ~ /.bashrc:

alias nodemcu = 'python3 -m serial.tools.miniterm -eol CRLF -exit-char 003 / dev / ttyUSB0 500000 -raw -q'

ambayo inakuwezesha kuandika tu "nodemcu" kama jina la amri hiyo.

Ikiwa kila kitu kimesanidiwa kwa usahihi, ukanda wako wa LED unapaswa kuwasha kijani, na kwenye serial unapaswa kuona unganisho la WiFi, pata anwani ya IP, unganisha na MQTT, na ujumbe ambao data ya joto inasukumwa nje.

iliyounganishwa na MyWiFiSSID, kituo cha 1dhcp mteja anza… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, mask: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okOquest temp OKwifi_task: status = 5xQueueReceivetTt 2553KekeKupokea: 25.43: (Re) unganisha kwa MQTT server test.mosquitto.org… xQueueReceive + 25.50xQueueTuma ok doneTuma MQTT unganisha… MQTTv311donexQueueReceive +25.56 xQueueTuma sawa

Hatua ya 5: Kuingiliana

Kwa kudhani kifaa chako kimeunganishwa na WiFi na broker wa MQTT kwa ufanisi, utaweza kutuma na kupokea data kutoka NodeMCU na MQTT. Ikiwa haujafanya hivyo, sakinisha kifurushi cha wateja wa mbu:

Sudo apt-install wateja wa mbu

Sasa unapaswa kutumia programu ya mbu na mosquitto_sub kutoka kwa ganda lako.

Kupokea sasisho za joto

Kupokea data ya joto tutataka kutumia amri ya mbu_sub kujisajili kwa mada ambayo NodeMCU inachapisha.

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

Unapaswa kuona data ya joto (kwa Celsius), ikifika kwenye kituo.

+25.87+25.93+25.68…

Kuweka rangi ya ukanda wa LED kwa mbali

Muundo rahisi wa ujumbe hutumiwa kutuma maadili ya RGB kwa NodeMCU juu ya MQTT. Fomati ya amri inaonekana kama hii:

r: RRRg: GGGb: BBB ~

Ambapo RRR, GGG, BBB inalingana na maadili ya RGB (0-255) ya rangi unayotaka kutuma. Kutuma amri yetu, tutatumia amri ya mbu_pub. Hapa kuna mifano:

mosquitto_pub -h mtihani.mosquitto.org -t / cpe439 / rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h mtihani.mosquitto.org -t / cpe439 / rgb -m 'r: 0g: 255b: 0 ~ '# greenmosquitto_pub -h mtihani.mosquitto.org -t / cpe439 / rgb -m' r: 0g: 0b: 255 ~ '# bluu

Ikiwa unataka kupata ubunifu, tafuta mchumaji wa rangi mkondoni kama hii, na uhariri amri na thamani yoyote ya RGB unayochagua.

Jihadharini

Mada katika mradi huu zimewekwa kwa / cpe439 / rgb na / cpe439 / temp kwa broker wa umma wa MQTT, ambayo inamaanisha kuwa hakuna kitu kinachomzuia mtu mwingine kuchapisha au kujisajili kwa mada sawa na wewe. Kwa kujaribu kufanya mambo, kutumia broker ya umma ni sawa, lakini kwa miradi mikubwa zaidi utataka kuungana na broker na ulinzi wa nenosiri, au kuendesha broker yako mwenyewe kwenye seva.

Hatua ya 6: Maelezo ya Utekelezaji

Onewireire

ESP8266 ina msingi 1 tu, kwa muda mrefu, kazi za kuzuia kama kusubiri 750ms kwa sensor ya joto kufanya kipimo cha joto kawaida inaweza kusababisha WiFi kutofanya kazi vizuri, na labda hata ajali. Katika dhana ya FreeRTOS, unaita vTaskDelay () kushughulikia kusubiri kwa muda mrefu, lakini pia kuna subiri fupi nyingi zinazohitajika kati ya kusoma na kuandika ambazo ni fupi kuliko mfumo wa FreeRTOS, na kwa hivyo haiwezi kuepukwa na vTaskDelay (). Ili kuzunguka pia, dereva wa mradi huu aliandikiwa kukimbia mashine ya serikali ambayo inaendeshwa na kipima muda cha vifaa vya ESP8266, ambacho kinaweza kusababisha hafla za chini kwa kila sekunde 10 ndogo, ambayo ni fupi zaidi muda unaohitajika kati ya shughuli zote za kusoma / kuandika. Utekelezaji mwingine mwingi hutumia simu ya kuzuia kuchelewesha_us () au sawa kushughulikia hili, lakini ikiwa unachukua kila wakati sasisho za joto, ucheleweshaji wote huanza kujiongezea, na kusababisha programu isiyo na msikivu. Chanzo cha sehemu hii ya nambari iko kwenye folda ya ziada / juu.

WS2812B

ESP8266 haina chaguzi zozote za vifaa vya kawaida kwa PWM haraka vya kutosha kuendesha vipande vya LED kwa 800KHz. Ili kuzunguka hii, mradi huu hutumia pini ya SPI MOSI kuendesha LEDs. Kwa kurekebisha kiwango cha saa cha SPI, na kubadilisha malipo ya SPI kote, unaweza kufikia udhibiti wa kuaminika wa kila LED ya kibinafsi. Njia hii sio bila kasoro zake- kwa moja LED zinapaswa kuwezeshwa na chanzo cha 5V na shifter ya kiwango inapaswa kuongezwa kwa pato la pini ya SPI. Lakini 3.3V inafanya kazi. Pili, kuna glitches ambayo hufanyika kwa sababu ya muda kamili kwa kutumia njia ya SPI. Na ya tatu sasa huwezi kutumia SPI kwa kitu kingine chochote. Historia ya ziada juu ya njia hii inaweza kupatikana hapa, na chanzo cha sehemu hii ya nambari iko kwenye folda ya ziada / ws2812.

Njia ya kuaminika zaidi ya kuendesha vipande vya LED ni kutumia i2s. Walakini njia hii ina hacks nyingi maalum za chip, kwa hivyo SPI ilionekana kuwa chaguo bora kama zoezi la kujifunza.

Ilipendekeza: