Բովանդակություն:

Flash ESP-01 (ESP8266) Առանց USB- ի սերիական ադապտեր `օգտագործելով Raspberry Pi: 3 քայլ
Flash ESP-01 (ESP8266) Առանց USB- ի սերիական ադապտեր `օգտագործելով Raspberry Pi: 3 քայլ

Video: Flash ESP-01 (ESP8266) Առանց USB- ի սերիական ադապտեր `օգտագործելով Raspberry Pi: 3 քայլ

Video: Flash ESP-01 (ESP8266) Առանց USB- ի սերիական ադապտեր `օգտագործելով Raspberry Pi: 3 քայլ
Video: SKR Pro V1.1 - TMC2209 UART with Sensor less Homing 2024, Նոյեմբեր
Anonim
Flash ESP-01 (ESP8266) Առանց USB- ի սերիական ադապտեր `օգտագործելով Raspberry Pi
Flash ESP-01 (ESP8266) Առանց USB- ի սերիական ադապտեր `օգտագործելով Raspberry Pi

Այս Instructable- ը ուղեկցում է ձեզ, թե ինչպես սկսել ձեր ESP8266 միկրոկառավարիչի ծրագրավորումը ESP-01 WIFI մոդուլի վրա: Սկսելու համար անհրաժեշտ է (իհարկե, ESP-01 մոդուլից բացի)

  • Ազնվամորի Պի
  • Jumper լարերը
  • 10K դիմադրություն

Ես ցանկանում էի հին մահճակալի լամպը վերանորոգել ժամանակակից Alexa- ի կողմից վերահսկվող LED գիշերային լամպի մեջ: Ոչ մի արտառոց բան չկա ՝ պարզապես միացնել/անջատել ձայնային հրամանի միջոցով: Ես առցանց պատվիրեցի ամենապարզ ESP-01 WIFI մոդուլը, ռելեն և մետաղալարերը LED- ով, և ընդհանրապես մոռացա պատվիրել USB- սերիական ադապտեր ՝ ESP8266 միկրոկոնտրոլերը ծրագրավորելու համար: Բայց քանի որ ես ունեի Raspberry Pi, և Raspberry Pi- ն և ESP-01 տախտակն ունեին UART կապեր, ես մտածեցի, որ կարող եմ օգտագործել իմ RPi- ն ՝ ESP8266- ը առանց ադապտեր ծրագրելու համար:

Քայլ 1: Կարգավորեք Rapberry Pi- ն

Կարգավորեք Rapberry Pi- ն
Կարգավորեք Rapberry Pi- ն

Ես օգտագործեցի Raspberry Pi 3 Model B+, այնուամենայնիվ, հրահանգները պետք է աշխատեն այլ տարբերակների վրա, հատկապես B մոդելի վրա:

Այսպիսով, առաջին հերթին ՝ մենք պետք է միացնենք UART- ը Pi- ում:

Գնացեք RPi կազմաձևման կարգավորումներ: Տերմինալային պատուհանի գործարկում

$ sudo raspi-config

Գնացեք 5 Interfacing Options, այնուհետև ընտրեք P6 սերիան: Այնուհետև դուք հուշեցիք. Կցանկանա՞ք, որ մուտքի պատյանը հասանելի լինի սերիայի միջոցով: ընտրեք, քանի որ մենք չենք ցանկանում օգտագործել UART- ը Pi- ն անգլուխ գործարկելու համար, այլ շփվել այլ սարքերի հետ, ուստի հետևյալ էկրանին, երբ հարցնում են, կցանկանայի՞ք, որ սերիալային պորտի ապարատը միացված լինի: ընտրել. Վերագործարկեք Pi- ն, ինչպես հուշվում է: UART- ը այժմ պետք է միացված լինի Raspberry Pi 3.- ի RX և TX կապի սերիական հաղորդակցության համար: Նշում. Դրանից հետո /boot/config.txt- ի վերջում պետք է հայտնվի նոր գրառում enable_uart = 1:

Քայլ 2. Միացրեք ESP-01- ը Raspberry Pi- ին

Միացրեք ESP-01- ը Raspberry Pi- ին
Միացրեք ESP-01- ը Raspberry Pi- ին

Այժմ մենք սկսում ենք ամեն ինչ միասին միացնել:

Նախ, ձեր RPi 3.3V հոսանքի և GND (գրունտային) կապում նշեք ESP8266 միկրոկոնտրոլերը, TXD (փոխանցել) և RXD (ստացեք) կապերը, և երկու ընդհանուր նպատակը `ESP8266- ի (կապերը, որոնք կարող են դրվել կամ բարձր կամ բարձր) ցածր): Փնտրեք քորոցի դասավորությունը pinout.xyz- ում կամ մուտքագրեք տերմինալ.

$ pinout

Երկրորդը `ESP-01- ի անհրաժեշտ կապում հայտնաբերելը: Բայց սկզբում մենք պետք է հասկանանք ESP-01 կապանքները: Ես գտա ինտերնետում առկա մի շարք օգտակար ռեսուրսներ, որոնք կօգնեն ձեզ այդ հարցում: Այս մեկն ամենակարճն է, մինչդեռ այս մեկն ավելի լավ բացատրություն է տալիս: Կարճ ասած. Կան 8 կապում, որոնցից 7 -ի կարիք կունենանք, այն է ՝ VCC հոսանքի և GND (ստորերկրյա) կապում ուժի համար, TXD և RXD կապեր կապի համար, և RST (վերականգնում), CH_PD (Chip Power Down, երբեմն պիտակավորված) CH_EN կամ չիպը միացնելու հնարավորություն) և GPIO0 ՝ մոդուլը գործարկելու համար: Սովորաբար ESP8266- ը գործում է սովորական ռեժիմով, բայց ESP8266 կոդը վերբեռնելիս այն ուշադրություն է դարձնում բռնկման ռեժիմին: Սովորական կամ նորմալ շահագործման ռեժիմի համար մոդուլը պետք է միացված լինի հոսանքին (ակնհայտորեն), բայց նաև CH_PD կապը պետք է միացված լինի VCC- ին 10K- ի միջոցով (այս արժեքը տատանվում է տարբեր աղբյուրներում, ես գտել եմ մինչև 3K արժեքներ) քաշքշուկ դիմադրություն բեռնման ժամանակ: Մյուս կողմից, ingրամեկուսացման կամ ծրագրավորման ռեժիմ մուտք գործելու համար հարկավոր է բեռնման ժամանակ հիմնավորել GPIO0 կապը: GPIO0- ի միջոցով անսահմանափակ ընթացիկ հոսքը կանխելու համար խորհուրդ է տրվում միացնել GPIO0- ին գետնին `ցածր դիմադրության 300Ω - 470Ω դիմադրության միջոցով (այս մասին ավելին այստեղ): RST կապը, ինչպես անունն է հուշում, վերականգնում (կամ վերագործարկում է) MCU- ն: Սովորական աշխատանքի ընթացքում այն կարող է միացվել VCC- ին 10K ձգվող դիմադրության միջոցով, սակայն պետք է հիմնավորված լինի `միկրոկոնտրոլերը վերակայելու համար: Թեև միշտ հնարավոր է օգտագործել ֆիզիկական կոճակներ RST և GPIO0 կապումներն ամրացնելու համար (կամ նույնիսկ ձեռքով միացնել լարերը ՝ կոճակը մոդելավորելու համար), շատ ավելի հաճելի փորձ է օգտագործել Raspberry Pi կապում ՝ մոդուլի RST և GPIO0 լարվածությունը բարձր և ցածր սահմանելու համար: քորոցներ: Նաև այդ դեպքում կարիք չկա 10K և 470Ω դիմադրիչների:

Այժմ տեղյակ լինելով ESP-01 կապում առանձնահատկություններին, մենք կարող ենք սկսել ամեն ինչ իրար միացնել: Դուք կարող եք օգտագործել հետևյալ աղյուսակը որպես հղում ՝ վերը նշված գծապատկերին զուգահեռ.

ESP-01 Ազնվամորի Պի

  • VCC (3.3V) PIN #1 (3.3V)
  • GND կապում #6 (GND)
  • TXD քորոց #10 (RXD / BCM 15)
  • RXD քորոց #8 (TXD / BCM 14)
  • CH_PD կապում #1 (3.3V)
  • RST կապում #3 (BCM 2)
  • GPIO 0 փին #5 (BMC 5)

Միացրեք VCC կապը վերջինը: Այն օրինակը, որը միացրել եք VCC- ին, ձեր Wi-Fi մոդուլը միացված կլինի: Օգտագործեք էկրանը կամ minicom- ը `ստուգելու համար, թե արդյոք RPi- ն և ESP8266- ը կարող են հաղորդակցվել UART- ի միջոցով (նշեք. Գուցե անհրաժեշտ լինի նախ տեղադրել էկրան կամ minicom, քանի որ դրանք ըստ երևույթին տեղադրված չեն Raspbian- ի վրա):

Էկրանի գործարկում օգտագործելով.

$ sudo էկրան /dev /serial0 115200

Օգտագործելով minicom run:

$ sudo minicom -b 115200 -o -D /dev /serial0

Նշում. Շատ առցանց ռեսուրսներ առաջարկում են միանալ ESP8266- ին /dev /ttyAMA0- ին, բայց դա չի գործում RPi 3 կամ ավելի ուշ (ներառյալ զրոյական W) համաձայն RPi փաստաթղթերի: Փոխարենը միացեք /dev /serial0- ի կամ /dev /ttyS0- ի միջոցով:

Էկրանի կամ փոքրիկի մուտքագրումից հետո ESP8266- ի հետ հաղորդակցվելու համար օգտագործեք AT հրամաններ: Մուտքագրեք AT, այնուհետև սեղմեք Enter և այնուհետև Ctrl+J ՝ հրաման ուղարկելու համար: Դուք պետք է ստանաք OK ի պատասխան: Մատչելի AT հրամանների ցանկը կարելի է գտնել espressiff.com կայքում կամ պարզապես այստեղ:

Սարքերը ֆիզիկապես կապված են և խոսում են միմյանց հետ: Մենք կարող ենք սկսել ծրագրավորումը RPi GPIO կապում և, վերջապես, բուն ESP8266- ը:

Քայլ 3. Softwareրագրաշարի տեղադրում (Python- ը գործարկելու համար և Arduino IDE- ն `ծրագրին)

ՄԱՍ 1. Պիտոնի օգտագործումը `ESP8266 ռեժիմները փոխելու համար

Ինչպես նշվեց վերևում, հարմար է օգտագործել RPI- ի GPIO կապում `ESP8266- ի շահագործման ռեժիմները փոխելու համար: Ես գրեցի երկու հիմնական պիթոնի ծածկագիր, որոնք ESP8266- ը դնում էին սովորական կամ ծրագրավորման ռեժիմի:

Սովորական ռեժիմ. Միկրոկոնտրոլերը կանոնավոր աշխատանքի ռեժիմի դնելու համար մենք պարզապես պետք է միացնենք այն և CH_PD- ն ձգվող ռեզիստորի միջոցով միացնենք VCC- ին, սակայն ծրագրավորումը MCU- ից նորմալ ռեժիմի անցնելու համար անհրաժեշտ է այն վերականգնել (մտածել վերագործարկման մասին): RPi- ով դա անելու համար մենք պատրաստվում ենք համառոտ իջեցնել RSP- ի GPIO- ն, որը միացված է RST կապին ESP-01- ի վրա (լռելյայն այն RPi կապը, որն օգտագործել եմ վերակայման համար, սահմանվում է HIGH): Որքան կարճ: Ինձ համար դա սպեկուլյատիվ հարց է: Կարող եք փորձել տարբեր ժամանակային ընդմիջումներ, բայց ես գտա, որ 200 - 500 մկսը լավ են աշխատում: Գրեք մեկնաբանություններում, եթե ավելի լավ գաղափար ունեք: Պահեք ձեր կոդը որպես reset.py:

#!/usr/bin/python

ներմուծել RPi. GPIO- ն որպես GPIO ներմուծման ժամանակը GPIO.setmode (GPIO. BOARD) # սահմանում է GPIO- ի նույնականացումը ըստ ֆիզիկական կապի համարների resetPin = 3 # նույնականացնել RPi ֆիզիկական կապը, որը միացված է ESP8266 RST քորոց GPIO.setup (resetPin, GPIO. OUT) # set reset կապել որպես ելք GPIO.output (resetPin, GPIO. LOW) # նվազեցնել լարումը RST pin time.sleep (.2) # սպասել.2 s GPIO.output (resetPin, GPIO. HIGH) # վերականգնել լարումը RST pin GPIO- ի վրա: cleanup () # վերականգնել RPI- ի կապում ՝ ապագա գործարկման նախազգուշացումները կանխելու համար

  • Mingրագրավորման ռեժիմ. MCU- ն ծրագրավորման ռեժիմի մեջ դնելու համար մենք պետք է սնուցենք ESP8266- ը GPIO0- ով հիմնավորված կամ բեռնման ընթացքում այլընտրանքաբար այն վերականգնենք և հիմնավորենք GPIO0- ով (կրկին լարման անկման ճշգրիտ տևողությունը ինձ այնքան էլ հայտնի չէ, այնպես որ խիստ մի եղեք: առաջնորդվելով օգտագործված արժեքներով): Պահեք կոդը որպես flash.py կամ ներբեռնեք ստորև: Գործողությունների հաջորդականությունը հետևյալն է.

    • ներքև քաշեք RST քորոցը
    • ներքև քաշեք GPIO0 կապը
    • քաշեք RST քորոցը
    • քաշեք GPIO0 կապը

#!/usr/bin/python

ներմուծել RPi. GPIO- ն որպես GPIO ներմուծման ժամանակը GPIO.setmode (GPIO. BOARD) # սահմանում է GPIO- ի նույնականացումը ֆիզիկական կապի համարների միջոցով resetPin = 3 # նույնականացնել ESP8266 RST- ի կապակցված RPi ֆիզիկական կապը flashPin = 5 # նույնականացնել ESP8266 GPIO0 կապին միացված RPi ֆիզիկական քորոցը GPIO.setup (resetPin, GPIO. OUT) # սահմանեք վերակայման քորոցը որպես ելք GPIO.setup (flashPin, GPIO. OUT) # նշեք ֆլեշ քորոցը որպես ելք GPIO.output (resetPin, GPIO. LOW) # լարման անկում RST փին ժամանակի վրա: քուն (.2) # այս սպասման կարիքը սպեկուլյատիվ GPIO.output (flashPin, GPIO. LOW) # լարման անկում է GPIO0 time.sleep (.2) # այս սպասման կարիքը սպեկուլյատիվ GPIO.output (resetPin, GPIO. HIGH) # սկսել բեռնաթափում ESP8266 time.sleep (:

Տերմինալային փոփոխությունների թույլտվություններում.

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Այսուհետ, երբ անհրաժեշտ լինի մուտք գործել տերմինալում աշխատող ծրագրավորման ռեժիմ.

$ python /flash.py

նորմալ աշխատանքային ռեժիմ մուտք գործելու համար ծածկագիրը վերբեռնելուց հետո գործարկեք.

$ python /reset.py

Այս պահին դուք կարող եք նաև թարմացնել ESP8266 որոնվածը: Կան բազմաթիվ առցանց ձեռնարկներ, թե ինչպես դա անել, այնպես որ ես չեմ մանրամասնի, թե ինչպես դա անել:

ՄԱՍ 2. Arduino IDE- ի կարգավորում

եթե արդեն տեղադրված եք Arduino IDE- ն, միևնույն է, գուցե ցանկանաք շրջանցել հատվածը ՝ համոզվելով, որ ձեր IDE- ն պատրաստ է ESP8266- ի համար:

Rapberry Pi- ում կարող եք օգտագործել Arduino IDE- ն ՝ ձեր ESP8266 ծրագիրը ծրագրավորելու համար: RPi- ի վրա IDE- ն տեղադրելու երկու եղանակ կա.

  • apt-get install- ի միջոցով պահեստների հրամանի տողի միջոցով
  • բեռնել և տեղադրել ձեռքով arduino.cc- ից:

Ես կտրականապես առաջարկում եմ գնալ վերջին ճանապարհով: Պահեստներից IDE տարբերակը կարծես հնացած է, և դուք, անշուշտ, պետք է ավելին անեք, նախքան պատրաստ կլինեք սկսել ծրագրավորումը ESP8266: Խնդիրներից խուսափելու համար գնացեք Arduino.cc ներբեռնման էջ և ներբեռնեք Linux ARM տարբերակը: Հաջորդը սեղմել և տեղադրել.

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

Սա պետք է ապամոնտաժի ֆայլը arduino-X. Y. Z պանակին: Գործարկել:

$ sudo./arduino-X. Y. Z/install.sh

Սա պետք է տեղադրի IDE- ն: Տեղադրման ավարտից հետո սկսեք IDE- ն:

  • Arduino IDE- ից անցեք Ֆայլ> Նախապատվություններ: Նախընտրանքների պատուհանի ներքևում փնտրեք «Լրացուցիչ խորհրդի ղեկավարների հասցեներ»: Մուտքագրեք https://arduino.esp8266.com/stable/package_esp8266com_index.json «Տախտակի կառավարչի լրացուցիչ հասցեներ» դաշտում, կտտացրեք «Լավ» կոճակին:
  • Գնացեք Գործիքներ> Տախտակ. XXX> Տախտակների կառավարիչ: Պատուհանում օգտագործեք որոնումը կամ ոլորեք ներքև, ընտրեք ESP8266 տախտակի ընտրացանկը և կտտացրեք տեղադրել: Սպասեք, մինչև տեղադրումը ավարտվի և փակվի պատուհանը:
  • Կրկին գնացեք Գործիքներ> Տախտակ. XXX և փնտրեք ESP8266 տախտակներ: Ընտրեք ընդհանուր ESP8266 մոդուլ:

Այժմ IDE- ն պատրաստ է ծրագրավորել ESP8266 ծրագիրը: Մուտքագրեք կամ տեղադրեք ցանկալի կոդը IDE պատուհանում և պահեք այն: Սեղմեք Վերբեռնել: Flash.py տերմինալից սկսած, սա պետք է ձեր խորհուրդը դնի ծրագրավորման ռեժիմ: Սպասեք մի քանի րոպե, մինչև IDE- ն կավարտի կազմման և վերբեռնումը (նկատ. Այժմ ձեր ESP-01 խորհուրդը պատրաստ է կատարել պարտականությունները:

Խորհուրդ ենք տալիս: