24 decembrie 2017

Programator simplu pentru modulele ESP-01

           Cu ceva timp in urma am inceput sa dezvolt aplicatii simple pentru modulele din familia ESP8266. Primul modul cu care m-am familiarizat a fost modulul NodeMCU. Am optat pentru acesta versiune deoarece prezinta urmatoarele avantaje:
- dezvoltarea programelor este foarte simpla. Initial am utilizat limbajul LUA, dar l-am inlocuit rapid cu Arduino, datorita numarului mare de biblioteci si aplicatii open source
- este dotat cu o multime de pini GPIO cu functii multiple, cum ar fi: SPI, I2C, CAN, etc
- are port serial incorporat, astfel ,depanarea programelor devine foarte simpla
- este dotat cu un programator incorporat, compatibil cu portul USB al calculatorului
- alimentarea acestuia se poate face atit din portul USB cit si prin intermediul pinilor specializati
            Tot din familia ESP8266 folosesc pentru aplicatiile mele si modulul ESP-01. Acesta este o bijuterie in miniatura, prezinta dimensiunile 25 x 15 mm, are 8 pini si,in functie de versiune, este dotat cu capacitati diferite de memorie. Este conceput in mai multe variante, nu cunosc exact numarul acestora, personal intilnind doar varianta standard AI Cloud si versiunea ESP-01S. Miniaturizarea modulului prezinta si unele dezavantaje. Astfel, au fost eliminati o parte din pinii GPIO, stabilizatorul de tensiune si etajul de programare al modulului. Prin eliminarea etajului de programare, am fost pus in situatia neplacuta de a construi un programator compatibil cu acesta. Din fericire pentru mine, pe internet sint o multime de pagini care descriu constructia unui astfel de programator. Eu am folosit circuitul urmator:


           Aceast circuit functioneaza foarte bine atit timp cit cele doua butoane sint apasate in ordinea corecta si mentinute pe timpul programarii. Nu voi descrie acest proces, el regasindu-se descris pe foarte multe pagini de internet.
           Deoarece la programare greseam ordinea corecta de apasare a butoanelor, sau pur si simplu uitam sa le apas, aveam erori. Din dorinta de a inlatura aceste neajunsuri am inceput sa studiez circuitul electronic din descrierea modulului NodeMCU. Astfel, am constatat ca cele doua butoane sint inlocuite cu doi tranzistori care prin intermediul pinilor de comanda DTR si RTS, din convertorul USB la Serial, seteaza automat trecerea in modul de programare. Schema de principiu a programatorului din descrierea modulului NodeMCU este urmatoarea:


            Avind ca inspiratie circuitul electronic de mai sus, mi-a venit ideea sa utilizez programatorul de pe modulul NodeMCU, pentru programarea modulelor mele. Deoarece semnalele de comanda, nRST si GPIO0, TxD si RxD, folosite la programare, se regaseasc pe pinii de conexiune ai modulului, folosirea acestuia ca programator pentru modulele ESP-01, devine realitate. In aceasta situatie singura problema care mai trebuie rezolvata este dezactivarea modulului ESP-12 din componenta modulului NodeMCU. Pentru rezolvarea acestei probleme sint posibile doua solutii: inlaturarea definitiva a acestuia sau dezactivarea hardware. A doua varianta este cea mai simpla si comoda. Astfel daca pinul ENABLE este trecut din nivelul HIGH in LOW, functionarea modulului ESP-12 este intrerupta. Iata circuitul electronic propus de mine:


            Toate testele realizate cu acest circuit au dat rezultate pozitive. Am testat modulul folosind programele: Arduino, NodeMCU Firmware Uploader, LUA Loader si ESplorer. Acestea au functionat fara erori. Programarea este simpla, automata si fara a se apasa vreun buton din componenta modulului NodeMCU. Iata cablajul imprimat si realizarea practica a programatorului:

       



            De mentionat este faptul ca pentru programator eu am folosit modulul NodeMCU V3 de la firma LoLin cu dimensiunile 60 x 31 mm. Pe piata se gasesc si alte versiuni ale acestui modul, personal mai posed unul de la Amica cu dimensiunile 50 x 25 mm. Cind am proiectat cablajul nu am tinut cont de acest aspect si imi pare rau. Puteam realiza cablajul astfel incit sa fie folosit cu ambele versiuni. Am testat functionarea modulului Amica prin conectori flexibili cu fir si nu au fost probleme, acesta a functionat perfect. Iata versiunea 2 a cablajului in care pot fi conectate ambele versiuni de module NodeMCU:

         

Aceasta versiune nu a fost construita !


            Acestea sint setarile corecte, la programare, cind se foloseste platforma Arduino IDE:


            Montajul este realizat pe o bucata de cablaj imprimat cu dimensiunile 35 x 78 mm. Desi nu recomand, cine nu are rabdare sa confectioneze cablajul, poate folosi conectori flexibili cu fir, astfel am realizat si eu primele mele teste. Personal cred ca aceasta este cea mai simpla si eleganta solutie pentru programarea modulelor ESP-01. Succes!



Descarca cablajul imprimat programator: 

Pentru realizarea proiectului m-am inspirat din:

Constantin Badican  - YO7FWS
---  73's   YO7FWS  ---