Բովանդակություն:
- Քայլ 1: Ստեղծեք կառուցողական միջավայր
- Քայլ 2: Ստացեք աղբյուրի կոդ, կազմաձևեք և կառուցեք
- Քայլ 3: Միացրեք ապարատային բաղադրիչները
- Քայլ 4: Flash և գործարկել
- Քայլ 5: Փոխազդեցություն
- Քայլ 6: Իրականացման մանրամասներ
Video: WiFi LED ժապավեն + ջերմաստիճանի տվիչ ESP8266- ով ՝ 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս ձեռնարկը նկարագրում է ESP8266- ի ստեղծման և այն խոսելու ինչպես ջերմաստիճանի տվիչի, այնպես էլ LED շերտի քայլերը, միևնույն ժամանակ կարողանալ մուտքագրել և ելք ուղարկել MQTT- ով WiFi- ով: Նախագիծը կազմվել է 2016 թվականի աշնանը Cal Poly San Luis Obispo- ում անցկացված դասընթացի համար- CPE 439: Իրական ժամանակի ներդրված համակարգեր: Ընդհանուր նպատակն էր ցուցադրել էժան սարքավորումներով ինտերնետին միացված «իր» ստեղծելու հեշտությունը:
Պահանջվող պարագաներ/սարքավորումներ.
- NodeMCU ESP8266 dev տախտակ
- WS2812B LED ժապավեն
- MAX31820 peratերմաստիճանի տվիչ
- Breadboard
- 4.7K Օմ դիմադրություն
- 220 օմ դիմադրություն
- jumper լարերը
- միկրո USB մալուխ
- Համակարգիչ (կամ VM), որն աշխատում է Linux- ով (օրինակ ՝ Ubuntu)
Ենթադրություններ/նախադրյալներ.
- հրամանի տող գործիքների օգտագործման և դեբյան վրա հիմնված դիստրոյի վրա փաթեթներ տեղադրելու փորձ
- Makefile շարահյուսության հիմնական ըմբռնումը
- միացնող լարեր
Քայլ 1: Ստեղծեք կառուցողական միջավայր
Նախագիծը կառուցելու համար ձեզ հարկավոր է esp-open-sdk, որը տեղադրված է ձեր մեքենայի վրա: Հետևեք հղմանը և կարդացեք կառուցման հրահանգները: Մի խոսքով, դուք պետք է որոշ sudo apt-get հրամաններ կատարեք ՝ կախվածություններ տեղադրելու համար, git clone ՝ ռեկուրսիվ ՝ clon/download esp-open-sdk և վերջապես make հրաման ՝ 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 LED շերտի պիքսելների քանակը
Նշում. Քանի որ այս նախագիծը SPI- ն օգտագործում է LED- ները վարելու համար և NodeMCU 3.3v- ն դրանք մատակարարելու համար, հավանաբար չեք կարողանա վարել ավելի քան 60 ֆունտ LED:
Նշում. Մնացած պարամետրերը փոփոխման կարիք չունեն, բայց ցանկության դեպքում կարող են փոփոխվել: Առաջարկվում է պահպանել առաջադրանքի առաջնահերթությունների կարգը: Որքան ցածր է գերակայության թիվը, այնքան ցածր է առաջադրանքի առաջնահերթությունը:
Այժմ կառուցեք նախագիծը.
կատարել -C օրինակներ/cpe439
Եթե ամեն ինչ ճիշտ է տեղադրված, ապա այն պետք է սկսի հավաքել: Վերջում դուք պետք է տեսնեք.
Հաջողությամբ ստեղծվեց «որոնվածը/cpe439.bin»
Նայիր ինձ
Քայլ 3: Միացրեք ապարատային բաղադրիչները
Այժմ, երբ ծածկագիրը կազմված է, ժամանակն է միացնել մեր ծայրամասային սարքերը:
Նախ, կպցրեք NodeMCU- ն սեղանի վրա, այնուհետև օգտագործեք jumper լարերը `միացումները կատարելու համար, ինչպես ցույց է տրված գծապատկերում:
Մի քանի բան, որոնց մասին պետք է տեղյակ լինել.
- Կարևոր. WS2812B տվյալների գիծը երկկողմանի չէ: Եթե ուշադիր նայեք շերտի LED կողմի գծանշումներին, ապա պետք է տեսնեք մի փոքր ուղղահայաց սլաքներ: NodeMCU- ի D7- ից ստացվող ելքը պետք է ուղղվի դեպի WS2812B այնպես, ինչպես ուղղության նշիչը, որը ուշադիր նայելու դեպքում կարող եք տեսնել դիագրամում:
- Կախված այն բանից, թե ինչպիսի միակցիչներով է գալիս ձեր WS2812B- ը, գուցե անհրաժեշտ լինի որոշ փոփոխություններ կատարել, որպեսզի դրանք ապահով կերպով միանան հացատախտակին: Դուք կարող եք նաև օգտագործել ալիգատորների տեսահոլովակներ `դրանք միացնելու համար տախտակին հարմարվող ցատկող մալուխներին:
- MAX31820 կապումներն ունեն ավելի փոքր սկիպիդար և ավելի բարակ են, քան ստանդարտ 0.1 դյույմ/2.54 մմ թռիչքները, ինչը նրանց բարդ է դարձնում: Դրա շուրջ մեկ ճանապարհն է `օգտագործել կանանցից տղամարդու ցատկող լարերը, պլաստիկ պատյանը հանել կանանց կողմից, այնուհետև օգտագործեք որոշ տափակաբերան աքցաններ, որոնք սեղմում են կանանց թռիչքի ծայրերը ՝ ավելի փոքր MAX31820 կապում:
NodeMCU- ն միացնելուց առաջ կրկնակի ստուգեք միացումները, որպեսզի չվնասեք բաղադրիչները:
Քայլ 4: Flash և գործարկել
Flashրամեկուսացում
Միացված բոլոր սարքավորումներով միացրեք ձեր NodeMCU- ը և բռնկվեք հետևյալ հրամանով.
կատարել flash -C օրինակներ/cpe439 ESPPORT =/dev/ttyUSB0
/dev/ttyUSB0- ը սերիական com է, որի ներքո պետք է հայտնվի NodeMCU- ն: Եթե այլ սերիական սարքեր ունեք միացված, այն կարող է ցուցադրվել որպես /dev /ttyUSB1 կամ որևէ այլ համար: Ստուգելու համար կարող եք երկու անգամ գործարկել այս հրամանը ՝ մեկ անգամ NodeMCU- ն անջատված, և մեկ անգամ այն միացված, և համեմատեք տարբերությունը.
ls /dev /ttyUSB*
Մեկ այլ խնդիր, որին կարող եք հանդիպել, սարքի մուտքի թույլտվություն չունենալն է: Սա շտկելու երկու եղանակ է.
-
Ավելացրեք ձեր օգտվողին dialout խմբին.
sudo adduser $ (whoami) dialout
- chmod կամ chown սարքը.
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami) ՝ $ (whoami) /dev /ttyUSB0Առաջին մեթոդը նախընտրելի է, քանի որ այն մշտական լուծում է:
Վազում
Flash հրամանը հաջողությամբ գործարկելուց հետո սարքն անմիջապես կբեռնվի և կսկսի աշխատել կազմված կոդը: Flashրամեկուսացումից հետո ցանկացած պահի կարող եք գործարկել հետևյալ հրամանը ՝ սերիական ելքը դիտելու համար.
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Saveամանակ խնայելու համար կարող եք սա ավելացնել ձեր./. 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_tasktemuqt: (Վեր) միացում MQTT սերվերին test.mosquitto.org… xQueueReceive +25.50xQueue Ուղարկել լավ, ուղարկեք MQTT միացում… MQTTv311donexQueueReceive +25.56 xQueueSend լավ
Քայլ 5: Փոխազդեցություն
Ենթադրելով, որ ձեր սարքը հաջողությամբ միացված է WiFi- ին և MQTT բրոքերին, դուք կկարողանաք տվյալներ ուղարկել և ստանալ NodeMCU- ից MQTT- ով: Եթե դեռ չեք հասցրել, տեղադրեք մոծակների հաճախորդների փաթեթը.
sudo apt-get տեղադրեք մոծակների հաճախորդներ
Այժմ դուք պետք է կարողանաք օգտագործել mosquitto_pub և mosquitto_sub ծրագրերը ձեր պատյանից:
Temperatureերմաստիճանի թարմացումներ ստանալը
Temperatureերմաստիճանի տվյալներ ստանալու համար մենք կցանկանանք mosquitto_sub հրամանի միջոցով բաժանորդագրվել այն թեմային, որին հրապարակում է NodeMCU- ն:
mosquitto_sub -h test.mosquitto.org -t /cpe439 /տեմպ
Դուք պետք է տեսնեք ջերմաստիճանի տվյալները (elsելսիուս), որոնք հասնում են տերմինալին:
+25.87+25.93+25.68…
LED շերտի գույնի հեռակա կարգավորում
Հաղորդագրության պարզ ձևաչափը օգտագործվում է 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 արժեքով:
Watchգուշացե՛ք:
Այս նախագծի թեմաները դրված են /cpe439 /rgb և /cpe439 /temp հանրային MQTT բրոքերի վրա, ինչը նշանակում է, որ ոչինչ չի խանգարում որևէ մեկին հրապարակել կամ բաժանորդագրվել ձեզ հետ նույն թեմաներին: Ամեն ինչ փորձելու համար հանրային բրոքեր օգտագործելը լավ է, բայց ավելի լուրջ նախագծերի համար կցանկանաք գաղտնաբառով պաշտպանված բրոքերին միանալ կամ սերվերի վրա գործարկել ձեր սեփական բրոքերը:
Քայլ 6: Իրականացման մանրամասներ
Onewire
ESP8266- ն ունի ընդամենը 1 միջուկ, այնքան երկար, այնքան արգելափակող առաջադրանքները, ինչպիսիք են ջերմաստիճանի տվիչին 750 մ ջերմաստիճանի չափման սպասելը, սովորաբար կհանգեցնի նրան, որ WiFi- ն լավ չի գործի, և գուցե նույնիսկ վթարի ենթարկվի: FreeRTOS- ի պարադիգմում դուք զանգահարում եք vTaskDelay () ՝ այս երկար սպասումները լուծելու համար, բայց կան նաև շատ ավելի կարճ սպասումներ, որոնք պահանջվում են ընթերցումների և գրությունների միջև, որոնք ավելի կարճ են, քան FreeRTOS համակարգի տիզը և, հետևաբար, հնարավոր չէ խուսափել vTaskDelay () - ով: Այս նախագծի միակ վարորդը գրել է, որ դուրս է գալիս պետական մեքենայից, որը շարժվում է ESP8266- ի ապարատային ժամանակաչափով, որը կարող է իրադարձություններ առաջացնել ամեն 10 միկրո վայրկյանի պես, ինչը, ամենայն հավանականությամբ, ամենակարճն է: պահանջվող ժամանակը մեկ կամ մեկ այլ ընթերցման/գրելու գործողությունների միջև: Այլ իրականացումներից շատերն օգտագործում են արգելափակման կանչ ՝ delay_us () կամ նմանատիպ ՝ դա կարգավորելու համար, բայց եթե դուք անընդհատ ջերմաստիճանի թարմացումներ եք կատարում, այդ բոլոր ուշացումները սկսում են ավելանալ, արդյունքում ՝ ավելի քիչ արձագանքող ծրագիր: Կոդի այս հատվածի աղբյուրը գտնվում է լրացուցիչ/onewire թղթապանակում:
WS2812B
ESP8266- ը չունի PWM- ի համար բավականաչափ արագ ապարատային ընտրանքներ, որոնք կարող են LED շերտեր վարել 800 ԿՀց հաճախականությամբ: Այս խնդիրը շրջանցելու համար այս նախագիծը օգտագործում է SPI MOSI քորոցը ՝ LED- ները վարելու համար: Կարգավորելով SPI- ի ժամաչափը և փոխելով SPI- ի բեռնվածքը, կարող եք հասնել յուրաքանչյուր առանձին LED- ի բավականին հուսալի վերահսկողության: Այս մեթոդը առանց թերությունների չէ. Մեկի համար LED- ները պետք է սնուցվեն 5 Վ աղբյուրով, իսկ SPI քորոցի ելքին պետք է ավելացվի մակարդակի փոխարկիչ: Բայց 3.3 Վ -ն աշխատում է: Երկրորդ, կան խափանումներ, որոնք առաջանում են SPI մեթոդի կիրառմամբ թերի ժամկետների պատճառով: Եվ երրորդը `այժմ դուք չեք կարող SPI- ն օգտագործել այլ բանի համար: Այս մեթոդի լրացուցիչ նախապատմությունը կարելի է գտնել այստեղ, և կոդի այս հատվածի աղբյուրը գտնվում է լրացուցիչ/ws2812 պանակում:
LED շերտերի վարման ավելի հուսալի մեթոդ է i2s- ի օգտագործումը: Այնուամենայնիվ, այս մեթոդը շատ չիպերի համար հատուկ հաքեր ունի, ուստի SPI- ն ավելի լավ ընտրություն էր որպես ուսումնական վարժություն:
Խորհուրդ ենք տալիս:
Ինտերֆեյս DS18B20 ջերմաստիճանի տվիչ Arduino- ի և ESP8266- ի հետ. 8 քայլ
Ինտերֆեյս DS18B20 ջերմաստիճանի տվիչ Arduino- ի և ESP8266- ի հետ. Այ, ինչ կա, տղերք: Աքարշ այստեղ ՝ CETech- ից: Այսօր մենք մտադիր ենք մեր զինանոցում ավելացնել նոր տվիչ, որը հայտնի է որպես DS18B20 ջերմաստիճանի տվիչ: Դա DHT11- ի նման ջերմաստիճանի տվիչ է, բայց ունի այլ կիրառման շարք: Մենք կհամեմատենք այն
Կառուցեք Apple HomeKit ջերմաստիճանի տվիչ սարք ՝ օգտագործելով ESP8266 և BME280: 10 քայլ
Կառուցեք Apple HomeKit ջերմաստիճանի տվիչ ՝ օգտագործելով ESP8266 և BME280. Այսօրվա ուսանելի դասում մենք կկատարենք ցածր գնով ջերմաստիճանի, խոնավության և խոնավության տվիչ ՝ հիմնված AOSONG AM2302/DHT22 կամ BME280 ջերմաստիճանի/խոնավության տվիչի, YL-69 խոնավության տվիչի վրա: և ESP8266/Nodemcu հարթակը: Եվ ցուցադրելու համար
ESP8266 NodeMCU + LM35 + Blynk (IOT եղանակային կայան/ թվային ջերմաստիճանի տվիչ). 4 քայլ
ESP8266 NodeMCU + LM35 + Blynk (IOT եղանակային կայան/ թվային ջերմաստիճանի տվիչ). Բարև տղերք: Այս Ուղեցույցում մենք սովորելու ենք, թե ինչպես միացնել LM35 սենսորը NodeMCU- ին և ցուցադրել այդ ջերմաստիճանի տվյալները ինտերնետում սմարթֆոնով Blynk հավելվածով: (Նաև այս նախագծում մենք կօգտագործենք SuperChart վիջեթը Bl
IoT ջերմաստիճանի տվիչ ESP8266- ով `6 քայլ (նկարներով)
IoT ջերմաստիճանի տվիչ ESP8266- ով. Ինձ ոգեշնչեց ստեղծել ջերմաստիճանի տվիչ, որը կարող եմ վերահսկել WiFi- ով: Այս նախագիծը նոր չէ, բայց ինձ դուր է գալիս անվտանգության համար միջանկյալ շերտ ունենալու և երթուղիչում ձեր IoT սարքի նավահանգիստ չբացելու գաղափարը: Հիմնական գաղափարը կտարածվի
Պարզ LED թվային ջերմաստիճանի տվիչ ՝ 3 քայլ
Պարզ LED թվային ջերմաստիճանի տվիչ. Պարզ, ցածր գնով, թվային էլեկտրոնային ջերմաստիճանի տվիչ H: Վիլյամ Jamesեյմս, օգոստոս, 2015 Վերացական Թարթող LED- ները պարունակում են մի փոքր IC չիպ, որը ստիպում է նրանց անընդհատ թարթել և անջատել, երբ լարումը կիրառվում է: Այս ուսումնասիրությունը ցույց է տալիս, որ աչքերը թարթելը