Arduino tanki juhtimine Wi-Fi kaudu. Masina juhtimine WiFi kaudu, kasutades ESP8266 NodeMCU Arduino android wifi koormuse juhtimist

Kunagi mõelnud mõne haldamise peale elektroonikaseadmed kasutades nutitelefoni? Nõus, oleks väga lahe juhtida robotit või muid seadmeid nutitelefonist. Pakume algajatele ja mannekeenidele lihtsat õppetundi, kuidas juhtida nutitelefoni Arduino abil Bluetoothi ​​kaudu. Kui soovite pärast seda õppetundi Arduinoga lähemalt tutvuda, leiate selle kohta raamatuid.

1. samm. Mida me vajame

Seadmed

Moodul – Bluetoothi ​​moodul HC 05/06
Juhatus - Arduino
Valgusdiood (LED)
Takisti - 220Ω
Android seade

Tarkvara

Arduino IDE
Android Studio (tegelikult pole vajalik, sest Androidi rakenduse leiate altpoolt)

2. samm. Kuidas see toimib

Tavaliselt teeme selle sammu lõpus, kuid selleks, et saaksite aru, mida peame saavutama, vaadake selle vaheetapi tulemust. Allpool oleme avaldanud ka samm-sammult videoõpetuse.

Samm 3. Hakkame vooluringi kokku panema

Meie õpetuses olev ahel on nii lihtne ja väike, et peame looma vaid mõned ühendused:

Arduino tihvtid_______________Bluetoothi ​​mooduli tihvtid
RX (pin 0)_______________________________________________________________
TX (pin 1)________________________________RX
5V______________________________VCC
GND____________________________GND

Ühendage LED-i negatiivne külg Arduino GND-ga ja positiivne kontaktiga 13 läbi takistuse 220 oomi – 1 kOhm. Üldiselt on meie alloleval joonisel kõik üsna selge.

Ärge ühendage RX to RX ja TX to TX Bluetooth väljundeid Arduino väljunditega, te ei saa andmeid, siin tähendab TX edastamist, RX vastuvõtmist.

4. samm: programmi üleslaadimine Arduinosse

Nüüd peame kirjutama programmi ja laadima selle oma Arduinosse. Kui te ei tea, kuidas seda veel teha, laadige alla raamatud. Allolev kood on täpselt see, mida peame Arduinosse laadima.

/* Bluetooh Basic: LED ON VÄLJAS * Kodeerija – Mayoogh Girish * Veebisait – http://bit.do/Avishkar * Laadige rakendus alla: https://github.com/Mayoogh/Arduino-Bluetooth-Basic * See programm võimaldab teil LED-i juhtimiseks arduino viigul 13, kasutades bluetooth-moodulit */ char data = 0; //Muutuja vastuvõetud andmete salvestamiseks void setup() ( Serial.begin(9600); //Määrab jadaandmeedastuse boodi pinMode(13, OUTPUT); //Määrab digitaalse viigu 13 väljundpistikuks ) void loop() ( if(Serial.available() > 0) // Saada andmeid ainult siis, kui saate andmeid: ( data = Serial.read(); //Loe sissetulevad andmed ja salvesta need muutujaandmetesse Serial.print(data); // Print Value sees Serial monitoris Serial.print("\n") //New line if(data == "1") // Kontrollib, kas andmete väärtus on võrdne 1-ga digitalWrite(13, HIGH); on 1, siis LED lülitub sisse else if(data == "0") // Kontrollib, kas andmete väärtus on 0 digitalWrite(13, LOW //Kui väärtus on 0, siis LED lülitub välja ) )

5. samm. Kuidas protsess toimib

HC 05/06 moodul töötab jadasidekanali kaudu. Androidi rakendus saadab andmeid järjestikku Bluetooth-moodulile, kui vajutate kindlat klahvi. Bluetooth teises otsas võtab andmed vastu ja saadab need TX-ühenduse kaudu Arduinosse Bluetooth moodul(Arduino RX ühendus) .

Arduinosse laaditud kood kontrollib saadud andmeid ja võrdleb neid. Kui vastu võetakse "1", lülitub LED sisse ja kustub, kui saabub "0". Avage jadapordi monitor ja jälgige saadud andmeid.

Samm 6. Rakendus Android-seadmetele

Selles õpetuses ei käsitle me Android-seadmetele rakenduste loomist. Rakenduse saate alla laadida GitHubist.

Kuidas rakendust kasutada?

Pärast Bluetoothi ​​kaudu ühenduse loomist peame alla laadima ja installima rakenduse, mis nutitelefoni abil :) juhib meie LED-i distantsilt. Rakenduse saate tasuta alla laadida saidilt Amazon.com. Ühendame nutitelefoni Bluetooth-mooduliga HC 05/06:

  1. Lülitage HC 05/0 moodul sisse
  2. Otsin seadet
  3. Loome ühenduse HC 05/06-ga, sisestades vaikeparooli “1234” või “0000” (neli nulli).

Pärast seda installime rakenduse oma nutitelefoni. Avame selle. Valige seade – valige loendist Bluetooth-moodul (HC 05/06). Pärast edukat ühendamist vajutage LED-i sisselülitamiseks nuppu ON ja LED-i väljalülitamiseks nuppu OFF. Seejärel saate Bluetooth-mooduliga ühenduse katkestamiseks klõpsata nupul Katkesta ühendus.

See oli juhend mannekeenidele ja algajatele Bluetooth-mooduli ühendamiseks Arduinoga. Seda projekti saab täiustada ja kõrgemale tasemele viia näiteks koduautomaatika jaoks läbi nutitelefoni juhtimise, juhitava roboti ja palju muud.

Püsivara, värskenduste ja muude andmete edastamine jootekolvi ja juhtmete abil ei ole Arduino jaoks parim lahendus. Arduino wi-fi mikrokontrollerid pole aga odavad ja neid pole alati vaja, mistõttu eelistavad kasutajad neid oma projektides asjatult mitte kasutada.

Kuid nüüd on turu vallutanud veel üks Hiina toode, mille abil saate ühendada oma wi-fi segaja esp8266 Arduino plaadi või muu süsteemiga ja saate stabiilse ühenduse mitmete muude eelistega. Nii et selgitame välja arduino uno wi-fi ja selle, kas seda moodulit tasub osta, ning milline on sarnane mikrokontroller arduino wi-fi-s.

Saadaval Wi-Fi moodulid Arduino jaoks

Tänapäeval enamik Arduino kasutajaid enam selliste seadmete hinna pärast ei muretse, kuigi 3 aastat tagasi peeti Arduino wi-fi moodulit luksuseks. Seda kõike tänu wi-fi segajale esp8266, mille tootjad tõid turule täiesti uue toote, mis on oma funktsionaalsuselt hämmastav ja samas üsna odav, mis andis olulise panuse ja tekitas selles suunas konkurentsi.

Seega peetakse arduino wi-fi esp8266 nüüd turul kõige soodsamaks mooduliks, nagu kõiki selle vendi. Seega algab hind välismaistel saitidel 2 dollarist, mis võimaldab osta neid mooduleid partiidena ja ei pea neid tuhat korda uuesti laadima, kontakte funktsionaalsuse säilitamiseks uuesti jootma.

Alguses kasutati seda Arduino wi-fi moodulit peamiselt arduino wi-fi-kilbina, kuna see oli odavaim variant ega jäänud kuidagi algsest alla. Seade on tõesti peaaegu legendaarne, sest selle hinna osas pole olulisi miinuseid. Teeke on palju, sealhulgas kasutajate omasid, ning toetab ka tööd jadasiinide ning lihtsaimate AT ja AT+ käskude kaudu. Tänu sellele pole vaja kurikuulsa C99 semantikat uurida, nagu seda sageli muude kolmandate osapoolte mikrokontrollerite puhul.

Sellest lähtuvalt saab isegi algaja selle mõne sekundiga selgeks ja professionaal saab kasutada juba ettevalmistatud teeke. Muud eelised hõlmavad järgmist:

  1. Protsessor on 160 MHz, kuid see on 32-bitine, mis jätab jõudlusele teatud jälje. Kuid tasub meeles pidada, et moodulit kasutatakse endiselt koos Arduino plaatidega, mis ise lõikavad kõrgeid sagedusi ja söövad teadmata põhjustel ära suurema osa ressurssidest.
  2. Wi-fi mooduli esp8266 välja andnud tootja ei peatanud huvitavaid projekte ja nüüd on olemas terve rida tõestatud kvaliteediga mikrokontrollereid.
  3. Kaasaegsed võrgu turvastandardid. Muidugi pole WPA ja WPA2 enam nii turvalised, kui me tahaksime, kuid nende olemasolu on nii odava kontrolleri puhul hea uudis.
  4. 16 väljundporti, sealhulgas 10-bitine, mis võimaldab teil tahvliga katsetada.

Veelgi olulisem on see, et karbist välja võttes leiate olenevalt plaadi tüübist kuni 4 megabaiti püsimälu ning see lihtsustab oluliselt suurte teekide ja isegi mõne meediumifailiga töötamist. Lõppude lõpuks peetakse enamikul Arduino plaatidel isegi 1 megabaiti taskukohaseks luksuseks.

Esp8266 wi-fi omadused on kindlasti julgustavad, eriti võrreldes selle kallimate konkurentidega, kuid kasutajal, kellel pole nende plaatidega varasemat kogemust, tekib küsimus, kuidas seda ühendada. Fakt on see, et moodulil on palju rohkem kontakte, kui algajad on harjunud nägema, ja seetõttu hakkavad nad paanikasse sattuma. Kui aga olukorrast aru saada, siis tegelikult pole selles midagi keerulist. Piisab joote- ja jootekolbi varumisest ning juhiste lugemisest.

Kuidas ühendada Wi-Fi moodul Arduinoga

Vaatame esp8266 esp 12e ühendamist ja mis on esp8266 wi-fi sild. Kõige rohkem küsimusi tekitab ju mooduli ühendamine ja seadistamine.


Kõigepealt otsustage, milline mikrokontrolleri versioon teil on. Esimeses on tihvtide lähedale sisse ehitatud LED-id ja teises, mida hakati tootma üsna hiljuti, asuvad signaaltuled antenni lähedal.

Enne ühenduse loomist peaksite alla laadima uusima püsivara, mis võimaldab teil suurendada paketi vahetuskurssi 9600 teabeühikuni sekundis. Ja me kontrollime ühendust usb-ttl kaabli ja CoolTermi vastava terminali abil.


Ülalkirjeldatud kaabli ühendamiseks mõeldud kontaktid on standardsed, kuid toide tuleb Arduino 3,3-voldise kontakti kaudu. Oluline on meeles pidada, et plaadi maksimaalset voolu ei saa seada üle 150 mA ning esp8266 esp 07 ja esp8266 vaimukas pilve wi-fi moodul arduino jaoks nõuavad 240 mA.

Kui aga muud vooluallikat pole, saab kasutada Arduino tavaversiooni, kuid plaadi võimsus kannatab. Kuigi, kui koormus pole suur, piisab 70 mA-st, olge valmis mikrokontrolleri äkilisteks taaskäivitusteks tippkoormuse ajal ja kirjutage tarkvara vastavalt sellele, et see filtreeriks ja jagaks faile ilma plaati üle koormamata.


Teine ühendusvõimalus on allpool. Tähtis - RX-TX kontaktid on ühendatud ristiga. Kuna ESP8266 mooduli signaalitasemed on 3,3 V ja Arduino 5 V, peame signaali taseme teisendamiseks kasutama takistuslikku pingejagurit.

Wi-Fi mooduli registreerimine Arduinos

Teatavasti saab korraliku kogemusega esp8266 ex 12e kilbi siduda nutitelefoniga, kuid algajatele tekitab raskusi esp8266 esp 12 registreerimine Arduino süsteemis. Tegelikult piisab mooduli ühendamisest ja selle funktsionaalsuse kontrollimisest, andes silumismenüü kaudu mitu standardset AT-käsku.

Näiteks saate lisada vilkumise tavalise LED-iga (ülaltoodud ühendusskeemi jaoks):

#define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay(1000) ;)

Niipea kui tahvel kinnitab, et näeb süsteemis mikrokontrollerit, saate sellega täielikku tööd alustada. Tasub aga tähele panna, et kui Arduino plaati ennast kasutatakse projektis ainult ühendamiseks selle kontrolleri kohta– see on irratsionaalne.

Piisab USB-UART-muundurist, kuna esp8266 ei kasuta Arduino “ajusid” ja selle välkmälust piisab paari põhiteegi ja püsivara salvestamiseks. Sellest tulenevalt pole mõtet lisaraha kulutada abiplaadile, kui saate selle lihtsalt konverteri külge jootma ja projektis edasi kasutada. Samal ajal ühendades lisatoiteallika ja muretsemata, et andmete edastamine lõpetatakse kõige olulisemal hetkel süsteemi võimsuse puudumise tõttu.

Oluline märkus! Viimase skeemi jaoks laadime eskiisi Arduinosse nagu tavaliselt, kuid kuna ESP8266 moodul on ühendatud kontaktidega 0 ja 1, muutub programmeerimine võimatuks. Kompilaator kuvab veateate. Ühendage ESP8266-le minevad juhtmed lahti kontaktidest 0 ja 1, tehke programmeerimine ja seejärel viige kontaktid tagasi oma kohale ja vajutage Arduino lähtestamisnuppu.

See kogub üha enam populaarsust ja Arduino on juba initsiatiivi haaramas – lisades need Wi-Fi moodulid toetatavate plaatide nimekirja.
Aga kuidas seda Arduinoga ühendada? Kas ilma Arduinota saab üldse kuidagi hakkama? Just sellest see artikkel täna räägibki.

Tulevikku vaadates ütlen, et tuleb teine, praktilisem artikkel püsivara ja ESP8266 mooduli programmeerimise teemal Arduino IDE arenduskeskkonnas. Aga kõigepealt kõigepealt.

See video dubleerib täielikult artiklis esitatud materjali.



Sees hetkel, selle mooduli variante on palju, siin on mõned neist:

Ja siin on ESP01, ESP03, ESP12 pinout:


*Seda pilti saab vaadata hea kvaliteediga sisse lülitatud. veebisait pighixxx.com.

Mulle isiklikult meeldib kõige rohkem ESP07 versioon. Vähemalt selle eest, et olemas on metallekraan (kaitseb mikroskeeme väliste häirete eest, tagades seeläbi stabiilsema töö), oma keraamiline antenn ja välisantenni pistik. See selgub, ühendades sellega välise antenni, näiteks nagu biquadrat, siis saate saavutada hea vahemiku. Lisaks on päris mitu sisend/väljundporti, nn GPIO (General Purpose Input Output - input/output ports üldine eesmärk), analoogselt Arduino - tihvtidega.

Tuleme tagasi meie lamba-Wi-Fi moodulite ja Arduino juurde. Selles artiklis vaatlen ESP8266 (mudel ESP01) ühendamist Arduino Nano V3-ga.

aga, seda teavet on asjakohane enamiku ESP8266 moodulite ja ka erinevate Arduino plaatide puhul, näiteks populaarseim Arduino UNO.

Paar sõna ESP01 jalgade kohta:

Vcc Ja GND(ülal pildil on need 8 ja 1) - toit, jala kohta Vcc dokumentatsiooni põhjal otsustades saab esitada, 3 kuni 3,6 V, A GND- maandus (miinus võimsus). Nägin, kuidas üks inimene ühendas selle mooduli kahe AA patareiga (antud juhul oli toitepinge umbes 2,7 V) ja moodul oli töökorras. Kuid ikkagi näitasid arendajad pingevahemikku, milles mooduli töö peaks olema garanteeritud, kui kasutate teist, see on teie probleem.

Tähelepanu! See moodul põhineb 3,3 V loogikal, samas kui Arduino on enamasti 5 V loogikal. 5 V võib ESP8266 kergesti kahjustada, seega tuleb seda Arduinost eraldi toita.

- Minu Arduinol on jalg, kus on kirjas 3,3 V, miks mitte seda kasutada?

Tõenäoliselt mõtlete. Fakt on see, et ESP8266 on üsna energianäljane moodul ja tipphetkedel võib see tarbida kuni 200 mA voolu ning peaaegu ükski Arduino ei suuda vaikimisi sellist voolu anda, välja arvatud Arduino Due, milles vool piki 3,3 V liini võib ulatuda 800 mA-ni, mis on piisavalt, muudel juhtudel soovitan kasutada täiendavat 3,3 V stabilisaatorit, näiteks AMS1117 3,3 V. Neid on palju nii Hiinas kui ka siin.

Jalg RST 6 - on mõeldud riistvarale mooduli taaskäivitamiseks, rakendades sellele korraks madalat loogilist taset, taaskäivitub moodul. Kuigi ma jätsin selle videos tähelepanuta, annan teile siiski nõu "vajutage" see jalg 10 kOhm takistiga toiteallika positiivsele külge, et saavutada mooduli töös parem stabiilsus, vastasel juhul taaskäivitaksin vähimagi häire korral.

Jalg CP_PD 4 (või muul viisil ET) - jällegi mooduli "viimiseks" energiasäästurežiimi, kus see tarbib väga vähe voolu. No jälle- Ei teeks paha seda jalga 10 kOhm takistiga positiivseks "vajutada" Pitalova Videos lõin selle jala rumalalt Vcc-le lühisesse, kuna sellist takistit mul käepärast polnud.

Jalad RXD0 7 TXD0 2 - riistvaraline UART, mida kasutatakse vilkumiseks, kuid keegi ei keela neid porte GPIO-na kasutada (vastavalt GPIO3 ja GPIO1). Pildil pole millegipärast GPIO3 märgitud, aga andmelehel on:

Muide, jalale TXD0 2 "Connect" LED on ühendatud ja see süttib, kui GPIO1 loogikatase on madal või kui moodul saadab midagi UART-i kaudu.

GPIO0 5 - ei saa olla ainult I/O port, vaid ka panna moodul programmeerimisrežiimi. Seda tehakse, ühendades selle pordi madala loogilise tasemega ("vajutades" seda GND-le) ja varustades moodulit toiteallikaga. Videos teen seda tavalise nupuga. Pärast vilkumist ärge unustage hüppajat välja tõmmata/nuppu vajutada (vilkumise ajal ei ole nuppu vaja hoida; sisselülitamisel läheb moodul programmeerimisrežiimi ja jääb sinna kuni taaskäivitamiseni).

GPIO2 3 - sisend/väljundport.

Ja veel üks oluline punkt, iga Wi-Fi-mooduli GPIO suudab ohutult edastada voolu kuni 6mA, et mitte põletada, asetage takistid kindlasti järjestikku nii, et sisend/väljundpordid on sisse lülitatud... Pidage meeles Ohmi seadust R = U/I = 3,3 V / 0,006 A = 550 Ohm, see tähendab, 560 oomi juures. Või jäta see tähelepanuta ja siis mõtle, miks see ei tööta.

ESP01-s toetavad kõik GPIO-d PWM-i, nii et meie nelja GPIO-ga, see tähendab GPIO0-3-ga, saate ühendada mootoridraiveri, ala L293 / L298, ja juhtida kahte mootorit, näiteks paate, või luua RGB Wi-Fi mis tahes. . Jah, jah, sellel moodulil on palju asju pardal ja lihtsate projektide jaoks pole Arduino viiuldajat vaja, ainult vilkumiseks. Ja kui kasutada ESP07, siis üldiselt on pordid peaaegu samad, mis Unol, mis võimaldab enesekindlalt ilma Arduinota hakkama saada. Tõsi, on üks ebameeldiv moment, ESP01-l pole analoogporte üldse ja ESP07-l on ainult üks, nimega ADC. Loomulikult muudab see analooganduritega töötamise keerulisemaks. Sel juhul aitab Arduino analoogmultiplekser.

Tundub, et kõik on seletatav pinoutiga ja siin on skeem ESP8266 ühendamiseks Arduino Nanoga:

Kas näete Arduino Nano RST- ja GND-kontaktidel hüppajat? See on vajalik, et Arduino ei segaks mooduli püsivara, kui ühendate ESP8266 Arduino abi- eeltingimus.

Samuti, kui ühendate Arduinoga, peab mooduli RX minema arduino RX-ile TX - TX. Selle põhjuseks on asjaolu, et muunduri kiip on juba ühendatud Arduino tihvtidega ristikujuliselt.

Samuti on oluline takistusjagaja, mis koosneb 1 kOhm ja 2 kOhm takistitest (saab valmistada kahest 1 kOhm takistist, ühendades need järjestikku) piki mooduli RX joont. Sest Arduino on 5 V loogika ja moodul 3.3. See osutub primitiivseks tasememuunduriks. See peab seal olema, sest RXD TXD mooduli jalad ei talu 5 V pinget.

Noh, saate täiesti ilma Arduinota hakkama, ühendades ESP8266 tavalise USB-UART-muunduri kaudu. Arduinoga ühenduse loomisel kasutame tegelikult tavalist usb- ja uart-liidese muundurit, jättes ajudest mööda. Miks kulutada lisaraha, kui saate üldse ilma Arduinota hakkama? Ainult sel juhul ühendame mooduli RXD muunduri TXD-ga, TXD - RXD.

Kui oled liiga laisk, et ühendustega jännata, takistite ja stabilisaatoritega askeldada, siis on olemas valmis NodeMcu lahendused:

Siin on kõik palju lihtsam: ühendage kaabel arvutiga, installige draiverid ja programm, lihtsalt ärge unustage kasutada GPIO0 hüppajat/nuppu, et lülitada moodul püsivara režiimi.

Noh, see on ilmselt teooriaga kõik, artikkel osutus üsna pikaks ja praktilise osa, ala püsivara ja mooduli programmeerimise avaldan veidi hiljem.

Üha keerukamate projektide õppimise ja kavandamise käigus saabub aeg, mil tekib vajadus ja soov õppida töötama nii levinud suhtlusliigiga nagu WiFi. Kuna seda tüüpi suhtlus võimaldab teil mugavalt luua oma nutikodu seadmetele ühtse võrgu ja juhtida neid näiteks mobiiltelefonist, tahvelarvutist või arvutist, ehk teisisõnu luua tõelise tark kodu, mis läheb sulle kümneid kordi odavamaks kui poest valmislahendusi ostes. WiFi kasutamine sellega muidugi ei piirdu ja näiteid seda tüüpi suhtluse kasutamisest on nii palju, et pole mõtet neid loetleda ja kui oled sattunud sellele lehele, tähendab see, et sul on juba vaja kasutage mingil põhjusel WiFi-d, peate lihtsalt välja mõtlema, kuidas sellega õigesti töötada.

Sorteerime selle kõige odavama ja populaarseima järgi WiFi moodul ESP8266-01. WiFi mooduli ESP8266-01 saate osta meie veebisaidilt.

Sellise mooduli üks peamisi eeliseid on mälu ja oma mikrokontrolleri olemasolu plaadil, mis võimaldab tal töötada iseseisvalt, laadides visandi otse moodulisse endasse.

ESP8266 WiFi-moodulis on tegelikult üsna palju modifikatsioone ja me ei hakka neid siin loetlema, kui olete õppinud ühega töötama, saate hõlpsalt teistega koostööd teha. Tahaksin kohe märkida, et WiFi-ga töötamine võib tunduda üsna keeruline ülesanne ja kui teie pagasis on vähe lõpetatud projekte, on parem praeguseks WiFi sidest loobuda ja kasutada oma projektides raadiosidet, millega töötades. on palju lihtsam mõista. WiFi moodulitega töötamiseks luuakse terved kogukonnad ja temaatilised foorumid, mis tõestab taas, kui raske on enamikul inimestest seda tüüpi suhtlust koheselt mõista ning pärast kogu info uuesti läbilugemist enamik inimesi lihtsalt loobub. Tõenäoliselt ma ei saa seda kõike teha oluline teave mahutage see ainuüksi selle artikli raamidesse ja sellel pole mõtet, vastasel juhul osutub see järjekordseks segaduseks. Püüan järgida kõige range järjestuse rada olulised punktid, et saaksite hakata mõistma seda tüüpi suhtluse toimimise põhimõtet ja seejärel lihtsalt arendada oma oskusi selles suunas.

Niisiis, alustame ja vaatame kõigepealt WiFi mooduli kontakte ESP8266-01.

VCC- moodulite toide 3V kuni 3,6V

GND- Maa.

RST- Lähtestage mooduli taaskäivitamise eest vastutav väljund.

CH_PD- "kiibi väljalülitamine", kui sellele toide antakse, aktiveeritakse mooduli töö.

TX- andmeedastus (UART liides)

RX- andmete vastuvõtt (UART-liides)

GPIO0

GPIO2- üldotstarbeline I/O port

GPIO0 ja GPIO2 tihvtid on täpselt samad digitaalsed tihvtid, millega töötame Arduino plaatidel erinevate anduritega ühendamiseks ja neid kasutatakse rakendamise korral iseseisev töö mooduli ESP8266-01 sisemisel WiFi mikrokontrolleril.

Mooduli ESP8266-01 usaldusväärseks toiteks kasutage välist stabiliseeritud 3,3 V toiteallikat ja parem on mitte proovida oma Arduino plaadilt toidet võtta, kuna moodul tarbib voolu kuni 215 mA ja see võib teie jaoks halvasti lõppeda. arendusnõukogu. Kust saada stabiliseeritud 3,3 V toiteallikat, loodetavasti pole see teie jaoks probleem, vastasel juhul on teil selgelt liiga vara selle mooduliga tegeleda. Näiteks meeldib mulle kasutada seda 3,3V ja 5,0V YWRoboti toitemoodulit vooluringide kiireks kokkupanemiseks leivalaudadele, mis võimaldab kiiresti saada 3,3V või 5V stabiliseeritud pinge leivalaua vastavatel toiteteedel.

Plussi ühendamine (+) meie 3,3 V toiteallikast kontaktile VCC moodul ESP8266-01 ja miinus (-) viia toiteallikas väljundisse GND. Selles olekus süttib mooduli punane LED-tuli, mis annab meile märku, et toide on õigesti ühendatud. Mooduli aktiveerimiseks on vaja ühendada ka pluss (+) toiteallikas koos väljundiga CH_PD moodul ESP8266-01 ja seda on soovitav teha otse läbi 10 kOhm takisti. Nüüd, kui toide sisse lülitame, peaks mooduli punane LED süttima ja sinine LED paar korda kiiresti vilkuma. Kui teiega nii juhtub, on kõik korras, olete kõik õigesti ühendanud ja teie moodul töötab. Vastasel juhul kontrollige ühendust uuesti või vahetage moodul välja, kuna see tõenäoliselt ei tööta.

Liigume edasi. ESP8266 WiFi-mooduliga töötamiseks vajame USB-UART-adapterit. Adaptereid on erinevaid, näiteks: FT232RL, CP2102, PL2303. Kuid eeldame, et teil selliseid adaptereid pole, ja kasutame USB-UART-adapterina Arduino plaati. Ma kasutan selleks Arduino NANO plaati, kuid võite kasutada mis tahes muud teie käsutuses olevat. Ühendus mis tahes plaadil on identne. Ühenduse teeme vastavalt järgmisele skeemile.

Vaatame, mida me siin teinud oleme. Pange kohe tähele, et oleme Arduino plaadi kontaktid ühendanud hüppajaga RST Ja GND. See manipuleerimine keelab mikrokontrolleri ja võimaldab meil teha meie Arduino plaadist tõelise USB-UART-adapteri.

Kuna toite ESP8266-01 WiFi mooduli eraldi välisest toiteallikast, siis pidage meeles, et peame oma projektides alati ühendama kõigi toiteallikate maanduse. Seetõttu ühendame väljundi GND Arduino lauad maandusega (-) meie väline 3,3 V toiteallikas, mis on mõeldud ESP8266-01 mooduli toiteks.

Järeldus TXühendage oma Arduino plaat tihvtiga TX ESP8266-01 moodul. See liin edastab andmed WiFi moodulist Arduino plaadile. Igaüks, kes tunneb UART-liidest, võib imestada: "Kuid kuidas saab seda kõikjal õpetada, et TX peab ühenduma RX-iga ja RX võtab vastu." Ja sul on õigus. Täpselt nii, TX on alati RX-iga ühendatud, aga juhul, kui teeme Arduinost UART-adapteri, on vaja seadmed otse ühendada. Pidage seda erandiks reeglist.

Liin RX Samuti ühendame teie Arduino plaadi otse liiniga RX ESP8266-01 moodul. See rida edastab teavet Arduino plaadilt WiFi mooduli plaadile. Kuid me teeme selle ühenduse läbi niinimetatud pingejaguri, mis koosneb kahest takistist nimiväärtustega 1 kOhm ja 2 kOhm. Peame selle liini pinget vähendama kahe takisti (pingejaguri) abil, kuna Arduino plaat edastab loogilist signaali pingega 5 V ja WiFi moodul töötab pingega 3,3 V. Loogikasignaali teisendamiseks võiksime kasutada spetsiaalset loogikataseme muunduri plaati, mis oleks muidugi õigem, aga oletame jällegi, et sul seda pole ja pidime valima lihtsama marsruudi ja tegema seda kasutades pingejagur.

Oleme nüüdseks ühendanud kõik edasiseks tööks vajaliku, kuid meil on veel kasutamata 3 kontakti ( GPIO0, GPIO2 Ja RST) sees WiFi moodul ESP8266-01. WiFi-mooduli stabiilseks tööks peame need ülejäänud kasutamata tihvtid positiivseks tõmbama (+) mooduli elektriliinid läbi 10 kOhm takistite.

See säästab meid mitmesugustest häiretest (häiretest) ja muudab mooduli töö stabiilseks. Parem on seda kohe teha. Vastasel juhul ärge imestage, et teie moodul on pidevalt ülekoormatud, toodab arusaamatut teavet või ei taha üldse töötada. Tõmbetakistite kasutamine mikrokontrolleri kasutamata tihvtidel peaks olema rusikareegel, kui soovite oma projektides stabiilset tööd.

Ja jälle kontrollime ESP8266-01 WiFi mooduli funktsionaalsust. Lülitage toide sisse ja vaadake, et punane LED-tuli süttib ja sinine LED-tuli vilgub paar korda. Kui kõik juhtub nii, siis suurepärane, lähme edasi. Vastasel juhul kontrollime ühenduste õigsust ja ka kõigi kontaktide kvaliteeti. See võib olla lihtsalt triviaalne olukord, kui kontrollisite kõike kümme korda ja veendusite, et kõik on õigesti ühendatud, kuid moodulit sisse lülitades näete, et sinine LED ei käitu adekvaatselt, põleb pidevalt, vilgub pidevalt, või ei reageeri üldse millelegi. Selle põhjuseks võib olla mõne liini halb kontakt. Näiteks leivaplaadile vooluringi kokkupanemisel ei istu üks takistitest tihedalt oma kohale ja see põhjustab häireid. Kontrollige ühenduste kvaliteeti. Moodul on väga tundlik. Ärge jätke seda tähelepanuta. See on ebastabiilse töö sagedane põhjus.

Üldiselt oleme ühendusega valmis. Nüüd peame ette valmistama Arduino IDE programmi, et töötada koos ESP8266-01 WiFi mooduliga. Selleks peame Arduino IDE-sse alla laadima ja installima vajaliku arhiivi koos teekide, näidete ja ESP-plaatidega, mis võimaldab meil hiljem visandeid otse mooduli ESP8266-01 mikrokontrollerisse üles laadida, püsivara muuta jne. Selle artikli jaoks me neid seadeid tõenäoliselt ei vaja, kuid mulle tundub, et pärast seda, kui oleme mooduli ühendamise välja mõelnud, on protseduur õige, kui laadime kohe alla kõik Arduino IDE-ga töötamiseks vajaliku. . Siin on kõik põhimõtteliselt lihtne.

Käivitage programm Arduino IDE ja minge menüüsse "Fail" - "Seaded"

Ilmuva akna ülemisele väljale kirjutame "esp8266". Selle tulemusena on meil aknas ainult vajalik püsivara. Kui klõpsate püsivara, kuvatakse nupp "Paigaldamine". Klõpsake nuppu "Paigaldamine" ja oodake, kuni kõik on installitud. Arhiiv on üsna suur, umbes 150 megabaiti, nii et peate ootama.

Pärast installimise lõpetamist. Taaskäivitame Arduino IDE ja näeme, kuidas uued ESP-plaadid on ilmunud menüüsse "Tööriistad" - "Tahvlid". See on kõik. Oleme Arduino IDE seadistamisega lõpetanud. Praegu me neid seadeid ei vaja, kuid edaspidi ei saa me ilma nendeta hakkama.

Meil on kõik ühendatud ja ette valmistatud, nüüd saame hakata juhtnuppe mõistma. Tegelikult jätkame nüüd mooduli kontrollimist ja konfigureerimist AT-käskude abil ning ilma selleta ei saa kuidagi hakkama. WiFi moodulid on realiseeritud nii, et kogu suhtlus nendega toimub nn AT käskude abil, mis on mooduli püsivarasse ühendatud. Kõiki AT käske me siin ei loetle, neid on päris palju ja kui tahad kõike hoolega uurida, leiad need Internetist lihtsalt üles. Ja nüüd kasutame alustamiseks ainult kõige vajalikumat.

Ja nii ühendame oma Arduino plaadi läbi USB-kaabel arvutisse. A väline allikas toit, mis toidab WiFi moodul ESP8266-01 Seda pole veel vaja sisse lülitada. Käivitame Arduino IDE programmi, valime menüüst "Tööriistad" meie Arduino tahvli, minu puhul on see Arduino NANO ja teie valite oma. Samuti ärge unustage valida porti, millega meie Arduino on ühendatud. Loodan, et saate sellest kõigest aru ja teate, kuidas seda teha.

Avatud pordi jälgimine "Tööriistad" - "Port Monitor". Pordi kiiruse valimine 74880 (sellel kiirusel moodul käivitub) ja valige vasakpoolsest loendist “NL & CR”.

Nüüd ühendame välise toiteallika, mis toidab meie WiFi-moodulit. Pärast seda peaksite pordimonitoris nägema ligikaudu järgmist teavet.

Siin näeme teavet meie WiFi mooduli kohta (kiirus, pardal oleva mälu maht jne). Saadud teave võib WiFi-mooduli püsivara versioonist olenevalt erineda. Ärgem keskendugem sellele. Tähtis on midagi muud. Allpool näeme mõttetute märkide komplekti, see tähendab, et meie määratud pordi kiirus (74880 baudi) sobib ainult mooduli esmaseks laadimiseks, et seda teavet normaalselt näha, kuid see kiirus ei sobi tavapäraseks suhtluseks WiFi moodul.

Õige pordi kiiruse valimiseks muudame lihtsalt pordi kiirust ja saadame porti sümbolid (ülaservas olev väli ja saatmisnupp) AT kuni saame vastuse OK. Kui proovite kohe tegelasi saata AT porti kiirusega 74880, saate vastuseks veel ühe või kaks mõttetut märki.

Proovige kohe seada kiirus 115200 boodi ja saata AT-käsk. Kõige sagedamini vilgutatakse mooduleid sellel kiirusel.

See on pilt, mida peaksite pordimonitoril nägema. Kui saate vastuseks endiselt arusaamatu tähemärkide komplekti, vähendage kiirust ja saatke uuesti AT käske, kuni vastus tuleb OK. Kui proovisite kõiki kiirusi ja ei saanud õiget vastust, siis pole teil õnne ja moodul vilgub püsivaraga ebastandardsel kiirusel. Siis jääb üle vaid moodulit tavalise püsivaraga värskendada, kuid see on eraldi artikli teema.

Loodan, et kõik on korras ja olete valinud õige kiiruse. Muide, kui proovite pärast õige kiiruse valimist WiFi-moodulit välja lülitada ja uuesti sisse lülitada, siis sama algteabe asemel, mis kuvati õigesti kiirusel 74880 boodi, siis vastupidi, näete segast tegelaste komplekti, kuid lõpus näete sõna "valmis". Kuid meil on võimalus seda algset teavet õigel kujul vaadata, selleks peame mooduli programmiliselt taaskäivitama, kasutades käsku AT AT+RST.

Oma ESP8266-01 WiFi-mooduli püsivara versiooni väljaselgitamiseks peate saatma pordimonitorile käsu AT+GMR ja vastuseks saate ligikaudu järgmise teabe:

ESP8266-01 WiFi-moodul võib töötada nii pääsupunkti kui ka kliendi režiimis. Et moodul saaks korraga töötada kõikides režiimides, saatke käsk pordimonitorile AT+CWMODE=3 ja vastuseks peaksite saama OK.

Meeskond AT+CWLAP võimaldab teil kõike näha WiFi punktid juurdepääsud, mida teie moodul praegu näeb. Minu moodul näiteks näeb praegu oma levialas vaid kolme WiFi pääsupunkti. Vastus peaks olema umbes selline:

Näiteks teame kolmanda pääsupunkti parooli ja sellega ühenduse loomiseks täidame käsu AT+CWJAP="nimi","parool", minu puhul näeb see käsk välja selline AT+CWJAP="dsl_unlim_512_home","11111111", millele saame eduka vastuse:

Käsu parameetrid kirjutatakse ESP8266-01 WiFi mooduli välkmällu ja kui me mooduli välja lülitame ja uuesti sisse lülitame, loob see automaatselt ühenduse selle pöörduspunktiga. Vaata, juhuslikult ära jäta käsus tühikut, muidu saad vastuse VIGA. Pange tähele, et uusimates püsivara versioonides on soovitatav kasutada käsku AT+CWJAP_CUR, see tähendab, et käsk näeb välja selline AT+CWJAP_CUR="nimi","parool". Kui äkki unustasime, millise pääsupunktiga meie moodul on ühendatud, peame saatma käsu AT+CWJAP? või AT+CWJAP_CUR? ja vastuseks saame pääsupunkti, millega WiFi moodul hetkel ühendatud on.

Ühendusega ja algseadistus WiFi moodul ESP8266-01 me arvasime selle välja. Moodul töötab ja on valmis Sinu tulevaste projektide elluviimiseks. Kõiki selle mooduliga töötamise võimalikke näiteid ühe artikli raames lihtsalt ei ole võimalik analüüsida ja seda käsitleme järgmistes artiklites. Ja neile, kes programmeerimisega väga kursis ei ole, aga soovivad väga kiiresti oma projekte WiFi abil haldama hakata, soovitan tutvustada RemoteXY WiFi projektidisainerit. See sait aitab teil hõlpsasti luua mobiiltelefoni või tahvelarvuti jaoks juhtimisliidese ja kasutada seda oma seadme juhtimiseks, millega ühendate WiFi-mooduli.

Sellest artiklist saate teada, kuidas luua süsteemi, mis suudab alalisvoolu koormusi mobiilirakenduse abil sisse ja välja lülitada. Samuti saate teada, kuidas seda ülesannet koheselt täita või eelseadistatud taimerite abil koormusi sisse ja välja lülitada.

Projekti ülevaade

Saate seda süsteemi rakendada, kui peate alalisvoolu koormuse teatud ajaks sisse lülitama. Meie Androidi rakendus, ilma riistvaraliidest, klaviatuuri või LCD-ekraani nõudmata.

Aksessuaarid

ESP8266 arendusnõukogu assamblee

ESP8266 on integreeritud mikrokontrolleri ja täieliku TCP/IP-protokollivirnuga odav SoC, mis tähendab, et sellel on otsene juurdepääs teie Wi-Fi-võrgule.

Kuna sellel kiibil on oma mikrokontroller, siis võid sinna panna oma rakenduse koodi või kasutada moodulit lihtsalt Wi-Fi transiiverina, mida me selles projektis ka tegema hakkame. Tõhusam oleks seda moodulit kasutada nii transiiveri kui ka kontrollerina, kuid koolituse eesmärgil suhtleme mooduliga Arduino abil.

ESP8266 kiip on saadaval erinevates moodulites. Kasutame ESP-01 moodulit. Muidugi saate kasutada mis tahes muud moodulit.

Esiteks peaksite teadma, et moodul töötab 3,3 V ja Arduino kõrge loogikataseme pinge peab olema sama, et vältida meie mooduli kahjustamist. Selleks on vaja pingetaseme muundurit Arduino plaadi (mis töötab pingega 5 V) ja mooduli vahel. Hea uudis on see, et muundur vajab Arduinosse saatmiseks ainult tihvti, kuna vastuvõtmise tihvt tunneb tavaliselt ära ESP8266 3,3 V loogikasignaalid.

Üks lihtsamaid viise selle teisenduse teostamiseks on Sparkfuni vooluahel. Saate tellida valmis mooduli.

Tasememuundur 5V → 3,3V

Alloleval joonisel on näidatud meie mooduli väljund ESP8266-l:

JäreldusEesmärk
UTXDAndmeedastus UART-i kaudu
URXDAndmete vastuvõtmine UART-i kaudu. Väljund, millega see ühendatakse, peaks olema 3,3 V.
CH_PDVäljalülitamine: madal tase sisendis lülitab kiibi välja, sisendi kõrge tase lülitab selle sisse; Sest normaalne töö moodul, on vaja see elektriliiniga ühendada.
GPIO0Laadimisel: normaalsele laadimisrežiimile sisenemiseks peab tase olema kõrge; siseneb madal tase erirežiimid allalaadimised.
GPIO2Alglaadimisel: madal tase põhjustab alglaaduri lülitumise välklaadimisrežiimi; kõrge tase põhjustab normaalse alglaadimisrežiimi.
RSTLähtesta; aktiivne tase - madal.
GNDMaa.
VCCVõimsus/3,3V.

Moodulile sobiva 3,3V toiteallika varustamiseks kasutasin LM317, konfigureeritavat lineaarset pingeregulaatorit väljundvooluga kuni 1,5A.

Märkus.Ärge kasutage Arduino 3,3 V viiku, kuna Arduino plaadil olev 3,3 V pingeregulaator ei suuda tagada mooduli jaoks vajalikku vooluhulka, eriti ülekande ajal energiatarbimise tipptasemel.

Loogikataseme muunduriks kasutasin BS170 (BSS138 asemel); mõlemad töötavad hästi.

Nüüd saate oma mooduli USB-TTL-muunduri abil arvutiga ühendada ja seda testida.

Relee leivalaua koost

Relee juhtimiseks kasutasin BC337 bipolaarset NPN transistori, mille alusel on 1 kOhm takisti. Et kaitsta selle eest vastupidine pinge poolid Kasutasin 1n4007 dioodi.

Otsustasin ühendada relee normaalselt suletud (NC) kontakti maandusega.

Arduino kood

Nüüd seisame silmitsi probleemiga. ESP8266 kasutab AT-käskude liidesena UART-i, samas kui Arduino Unol (mis kasutab Atmega328) on ainult üks UART-port. See port on juba ühendatud USB-TTL sillaga, samuti viigud 0 ja 1.

Lahendusena saate AltSoftSerial- või SoftwareSerial-teeke kasutades kasutada mõne teise Arduino digitaalse viigu UART-pordi emulaatorit. See võimaldab teil endiselt kasutada riistvaralist UART-porti silumiseks ja konsooli sõnumite printimiseks ning tarkvaraporti mooduliga suhtlemiseks.

Paljud inimesed (sealhulgas mina) teatavad probleemidest tarkvara jadapordiga suure andmeedastuskiirusega – nagu need, mida me kasutame esp8266, 115200 bps puhul. Võin öelda, et 50% moodulist saadavatest andmetest on tarkvaralise UART kasutamisel rikutud ja Arduinost moodulisse kantud andmetest pea 100% õiged. Need tulemused sain pärast RX- ja TX-liinide signaalide jälgimist.

Lahendusena lisasin koodile mõned defineerivad direktiivid, et oleks lihtsam riist- ja tarkvara UART-portide vahel valida. Pidage meeles, et te ei saa kasutada sama porti silumiseks ja mooduliga suhtlemiseks, seega peate nende vahel valima.

//uncomment Serial.*** kui soovite kasutada ESP-ga suhtlemiseks riistvaralist jadaporti (kontaktid 0,1) //uncomment esp8266.*** kui soovite kasutada tarkvara jadaporti (kontaktid 2,3) ) ESP-ga suhtlemiseks #define esp8266_Available() Serial.available() //esp8266.available() #define esp8266_Find(ARG) Serial.find(ARG) //esp8266.find(ARG) #define esp8266_Serial.Read()Serial read() //esp8266 .read() #define esp8266_Write(ARG1,ARG2) Serial.write(ARG1,ARG2) //esp8266.write(ARG1,ARG2) #define esp8266_Print(ARG) Serial.print(ARG) // esp8266.print(ARG)

Allikast leiate osa koodist, mis installib mooduli teie ruuteriga:

SendCommand("AT+RST\r\n", 2000, SILUMINE); // taaskäivitage moodul sendCommand("AT+CWMODE=1\r\n", 1000, SILUMINE); // seadistada pääsupunktiks sendCommand("AT+CWJAP=\"tur\",\"341983#tur\"\r\n", 3000, SILUDA); //**** MUUDA SSID-d ja PAROOLI VASTAVALT VÕRGULE ******// delay(10000); sendCommand("AT+CIFSR\r\n", 1000, SILUMINE); // hankige IP-aadress sendCommand("AT+CIPMUX=1\r\n", 1000, SILUMINE); // konfigureerige mitme ühenduse jaoks sendCommand("AT+CIPSERVER=1,1337\r\n", 1000, SILUMINE); // lubage server pordis 1337

Visanditsükkel ootab käskude saabumist WiFi ühendus. Praegu toetatakse järgmisi käske:

  • 'con', et saada pin oleku, loogika kõrge või madal;
  • ‘on=’ lubab vastava väljundi;
  • ‘of=’ lülitab vastava väljundi välja;
  • 'Tm=n/fS' määrake taimer vastavat väljundit sisse (n) või välja (f) välja lülitama.

Kõigil käskudel on kinnitusvastus.

Märkused:

  • mõned eskiisi osad põhinevad ;
  • kui kasutate mooduleid vana SDK-ga, võivad teil esineda samad vead, mis minul. Ainus lahendus sel juhul on püsivara värskendamine uusimale versioonile. Vaadake abi ESP8266 mooduli püsivara värskendamiseks. Värskendasin püsivara versioonilt 1.3 versioonile 1.5.4.

Täielik programmi kood:

#kaasa #define DEBUG 0 // kui kasutate ESP-ga suhtlemiseks riistvaralist jadaporti, muutke väärtuseks 0 #define ESPBaudRate 115200 #define HWSBaudRate 115200 #define OUTPUT1 11 #define OUTPUT2 12 #define OUTPUT2 12 #define Serial.un3comment13. *** , kui soovite kasutada ESP-ga suhtlemiseks riistvaralist jadaporti (kontaktid 0,1) //uncomment esp8266.*** kui soovite kasutada tarkvaraga jadaporti (kontaktid 2,3) suhtlemiseks ESP #define esp8266_Available() Serial.available( ) //esp8266.available() #define esp8266_Find(ARG) Serial.find(ARG) //esp8266.find(ARG) #define esp8266_Read() S //esp8266_Read() S /esp8266.read() #define esp8266_Write(ARG1 ,ARG2) Serial.write(ARG1,ARG2) //esp8266.write(ARG1,ARG2) #define esp8266_Print(ARG) Serial.print(ARG) //esp826 ARG) // Muudab Arduino RX liini viiguks 2 ja Arduino TX liiniks on viik 3. // See tähendab, et peate ühendama ESP TX liini Arduino viiguga 2 // ja RX joon ESP-st Arduino viiguni 3. SoftwareSerial esp8266(2, 3); /****************/ bait OUTPUTstate; bait OUTPUTTMRIsSet ; bait OUTPUTTMRSolek ; pikk OUTPUTTimer; /************/ /***Käsud**/ String GETSTATE = "con"; // Iga väljundi oleku väljaselgitamiseks taotlege mobiilirakendusest stringi String SETON = "on="; // Küsi stringi mobiilirakendusest väljundi lubamiseks String SETOFF = "of="; // Taotle mobiilirakendusest stringi väljundi väljalülitamiseks String TIMER = "tm="; // Taotlege mobiilirakenduse rida väljumistaimeri seadistamiseks /**************/ void setup() ( Serial.begin(HWSBaudRate); // Jadaport sõnumite saatmiseks Arduinost arvutisse esp8266.begin (ESPBaudRate) moodul sendCommand("AT+RST\r\n", 2000, DEBUG // konfigureerige pääsupunktina sendCommand("AT+CWMODE=1\r\) n", 1000, DEBUG); ** MUUDA SSID-d ja PAROOLI VASTAVALT OMA VÕRGULE ******// sendCommand("AT+CWJAP=\"tur\",\"341983#tur\ "\r\n", 3000, SILUMINE); / hankige IP-aadress sendCommand("AT+CIFSR\r\n", // konfigureerige mitu ühendust sendCommand("AT+ CIPMUX=1\r\n", 1000, DEBUG); server pordis 1337 sendCommand("AT+CIPSERVER=1,1337\r\n", 1000, SILUMINE); "); // See märk määrab meie sõnumi põhiosas käsu alguse String InStream; InStream = (char) esp8266_Read(); InStream += (char) esp8266_Read(); InStream += (char) esp8266_Read() if (DEBUG == true) Serial.println(InStream.equals(GETSTATE)) ( // vastus käsule Status=).<состояние_выхода_1><состояние_выхода_2><состояние_выхода_3>Stringi vastus = "Olek=";<= 9) { pinNumber *= 10; pinNumber += secondNumber; // получить вторую цифру, т.е., если вывод 13, то 2-ая цифра равна 3, // и добавить ее к первой цифре } if (pinNumber == OUTPUT1) OUTPUTstate = 1; else if (pinNumber == OUTPUT2) OUTPUTstate = 1; else if (pinNumber == OUTPUT3) OUTPUTstate = 1; digitalWrite(pinNumber, 1); String response = "Confg="; // Отклик на команду Confg=<номер_вывода>vastus += OUTPUTstate;<= 9) { pinNumber *= 10; pinNumber += secondNumber; // получить вторую цифру, т.е., если вывод 13, то 2-ая цифра равна 3, // и добавить ее к первой цифре } if (pinNumber == OUTPUT1) OUTPUTstate = 0; else if (pinNumber == OUTPUT2) OUTPUTstate = 0; else if (pinNumber == OUTPUT3) OUTPUTstate = 0; digitalWrite(pinNumber, 0); // изменить состояние вывода String response = "Confg="; // Отклик на команду Confg=<номер_вывода>vastus += OUTPUTstate;<= 9) { pinNumber *= 10; pinNumber += secondNumber; // получить вторую цифру, т.е., если вывод 13, то 2-ая цифра равна 3, // и добавить ее к первой цифре } if (esp8266_Read() == "n") { if (DEBUG == true) Serial.println("on"); if (pinNumber == OUTPUT1) OUTPUTTMRState = 1; else if (pinNumber == OUTPUT2) OUTPUTTMRState = 1; else if (pinNumber == OUTPUT3) OUTPUTTMRState = 1; } else { if (DEBUG == true) Serial.println("off"); if (pinNumber == OUTPUT1) OUTPUTTMRState = 0; else if (pinNumber == OUTPUT2) OUTPUTTMRState = 0; else if (pinNumber == OUTPUT3) OUTPUTTMRState = 0; } int j = 0; byte Atime; // Таймер может настроен на максимальное значение в 1 сутки // поэтому программа может принять 5 цифр, так как 1 сутки равны 86400 секундам long Time; // Прочитать секунды, значение имеет переменное количество цифр, поэтому читать, пока не получим "s", // что является символом завершения в теле моего сообщения от мобильного телефона while (1) { Time = esp8266_Read(); if (Time == "s") break; Atime[j] = Time - 48 ; j++; } switch (j) // секунды... { case 1: // одна цифра Time = Atime; break; case 2: // две цифры Time = Atime * 10 + Atime; break; case 3: // три цифры Time = Atime * 100 + Atime * 10 + Atime; break; case 4: // четыре цифры Time = Atime * 1000 + Atime * 100 + Atime * 10 + Atime; break; case 5: // пять цифр Time = Atime * 10000 + Atime * 1000 + Atime * 100 + Atime * 10 + Atime[j]; break; } if (DEBUG == true) { Serial.println("Timer:"); Serial.println(Time); } Time = Time * 1000 + millis(); if (DEBUG == true) { Serial.println("Pin:"); Serial.println(pinNumber); } if (pinNumber == OUTPUT1) { OUTPUTTMRIsSet = 1; OUTPUTTimer = Time; } else if (pinNumber == OUTPUT2) { OUTPUTTMRIsSet = 1; OUTPUTTimer = Time; } else if (pinNumber == OUTPUT3) { OUTPUTTMRIsSet = 1; OUTPUTTimer = Time; } String response = "tConfg="; // Отклик на команду tConfg=<номер_вывода>vastus += OUTPUTstate;< millis())) { digitalWrite(OUTPUT1, OUTPUTTMRState); OUTPUTstate = OUTPUTTMRState; OUTPUTTMRIsSet = 0; } if (OUTPUTTMRIsSet != 0 && (OUTPUTTimer < millis())) { digitalWrite(OUTPUT2, OUTPUTTMRState); OUTPUTstate = OUTPUTTMRState; OUTPUTTMRIsSet = 0; } if (OUTPUTTMRIsSet != 0 && (OUTPUTTimer < millis())) { digitalWrite(OUTPUT3, OUTPUTTMRState); OUTPUTstate = OUTPUTTMRState; OUTPUTTMRIsSet = 0; } /***************************************/ } /* Name: sendData Description: Функция, используемая для отправки данных на ESP8266. Params: command - данные/команда для отправки; timeout - время ожидания отклика; debug - печатать в консоль?(true = да, false = нет) Returns: Отклик от esp8266 (если есть отклик) */ String sendData(String command, const int timeout, boolean debug) { String response = ""; int dataSize = command.length(); char data; command.toCharArray(data, dataSize); esp8266_Write(data, dataSize); // передача символов на esp8266 if (debug) { Serial.println("\r\n====== HTTP Response From Arduino ======"); Serial.write(data, dataSize); Serial.println("\r\n========================================"); } long int time = millis(); while ((time + timeout) >millis()) ( while (esp8266_Available()) ( // esp-l on andmed, seega printige need konsooli char c = esp8266_Read(); // loe järgmine märk. vastus += c; ) ) if (silumine) ( Serial .print(response) tagastab vastus; ) /* Nimi: sendHTTPResponse Kirjeldus: funktsioon, mis saadab HTTP 200, HTML UTF-8 vastuse */ void sendHTTPResponse(int connectionId, String content) ( // loo HTTP vastuse string httpResponse; String httpHeader; // HTTP päis httpHeader = " HTTP/1.1 200 OK\r\nSisu tüüp: text/html; charset=UTF-8\r\n"; httpHeader += "Sisu pikkus: " httpPäis += sisu.length(); = " \r\n" " ei saadeta, seega lisasin lisaruumi sendCIPData(connectionId, httpResponse) /* Nimi: sendCIPDATA Kirjeldus: saadab käsu CIPSEND= ,<данные>*/ void sendCIPData(int connectionId, String data) ( String cipSend = "AT+CIPSEND="; cipSend += connectionId; cipSend += ","; cipSend += data.length(); cipSend += "\r\ n"; sendCommand(cipSend, 1000, DEBUG); sendData(data, 1000, DEBUG); ) /* Nimi: sendCommand Kirjeldus: funktsioon, mida kasutatakse andmete saatmiseks ESP8266-le.

Androidi rakendus

Parameetrid: käsk - andmed/käsk saatmiseks; timeout – vastuse ooteaeg; debug - print konsooli?(true = jah, false = ei) Tagastab: Vastus esp8266-lt (kui on vastus) */ String sendCommand(String käsk, const int timeout, Boolean silumine) ( String response = ""; esp8266_Print(käsk ); // märkide ülekandmine esp8266-sse long int time = millis( while ((aeg + timeout) > millis()) ( while (esp8266_Available()) ( // esp-l on andmed, seega printige need konsool char c = esp8266_Read( // loeb järgmise märgi vastuse += c) if (silumine) ( Serial.print(response); ) tagastab vastuse; Kõigi ülaltoodud riistvarakomponentide juhtimiseks kasutame lihtsat Androidi rakendust. See rakendus võimaldab meil väljundit otse või selle kaudu sisse või välja lülitada teatud periood

Märkus. aega.

  • Kõigepealt peate teadma oma mooduli IP-aadressi. Kui kasutasite tarkvara jadaporti, prinditakse IP-aadress konsooli. Kui kasutasite riistvaralist jadaporti, peate IP-aadressi nägemiseks kasutama kaablit RX- ja TX-liinide andmete jälgimiseks. Samuti peate teadma pordi numbrit, mis oli märgitud Arduino visandis. Pärast seda klõpsake kõigi kolme väljundi oleku vaatamiseks nuppu "ühenda". Peate veenduma, et teie Wi-Fi ruuter sisse lülitatud ja olete kohaliku võrguga ühendatud.
  • Nüüd klõpsake suvalist lülitit, mida soovite sisse/välja lülitada. Kui soovite, võite kõigi väljundite oleku värskendamiseks klõpsata "värskenda".
  • Vahekaardil "Taimerid" saate määrata mis tahes kolmest väljundist teatud aja (0 kuni 24 tunni) järel sisse/välja lülitama.
  • Pärast mis tahes toimingut saate kinnitusteate, mis näitab, kas käsk on edukalt lõpule viidud või ilmnes mõni tõrge.

Demo video

See on kõik! Loodan, et artikkel oli kasulik. Jäta kommentaarid!