Stipriai ir seniokiškai pabambėsiu apie gyvenimą ir Arduino. 🙂 Aš tikrai nenoriu instaliuotis visą IDE ir SDK eksperimentui. Ir tikrai nenoriu mokytis tos iškreiptos kvazi programavimo kalbos. Nes ji skiriasi skirtinguose puslapiuose.
Yra tokie mikro moduliai ESP8266, kas netingi juos gamina, su visokiom atmintim ir panašiai. Mintis gera- minimalistinis kompiuteriukas kuris bendrauja su WiFi. Tačiau yra vienas pagrindinis minusas- tai kiniškas produktas. Vadinasi mažą daikto kainą reikia kompensuoti savo nervinėmis ląstelėmis.
Kodėl? Štai keletas randominių screenšotų:
Tai čipo gamintojo naujausias įrankis programinimui. Matyt jie galvoja, kad visi dar naudoja XP ir 75dpi rezoliuciją. Ko pasekoje, GUI “biški” nepataiko. Tą dar galima atleisti, bet ar galima atleisti tai, kad prie čipo prisijungia tik kas 5-tą kartą, atlikus ištraukimo-inkišimo veiksmą. Irgi į tai galim nekreipti dėmesio, bet kitas softas to nereikalauja. Ko vertas tas “busy” taškiukų ir brukšniukų paišymas, kai MCU iš viso nebendrauja.
Tai irgi iš gamintojo puslapių. Iš šriftinio chaoso, svaro simbolio ir specifinio šrifto, iškarto galima spėti, kad pas developerį defaultinė kalba kinų- mandarinų. Ir kodėl maksimalus COM portas 16? Ir išviso, kam tas debilnas sąrašas. Juk kitas softas netgti automatiškai pamato COM portus. Beja, mano rašytas softas irgi moka susirinkti esamus COM portus, o ne debilnai rodyti sąrašą nuo nulio iki šimto.
Kitas “gamintojas”:
Šis softas puikiausiai (bent jau atrodo) programuoja tuos modulius be jokių didelių pastangų. Tačiau jų pačių firmvarė išpampo ir ant mikro modulių paprasčiausiai neveikia.
Kitas “gamintojas”:
Šitas “programuotojas” pats durniausias. Jis iš esmės neveikia. Beja, COM20 galima įrašyti, bet neaišku, ar jį naudoja. Manau, kad susipaprastina iki COM2. Ką reiškia “download”? 🙂
Dar apie visokius WWW su informacija ir softu. Jei neišbrauksim arduino- tai 99% puslapių rodys, kaip ant breadboardo sujungti modulį su COM portu. Dažniausiai nuorodos į failus bus kituose domeinuose ir dažnai baigsis 404 klaida. Ir aišku bus siūloma instaliuotis arduino- “nes ten viskas automatiškai”. Blя, aš norių žinotik kaip ten viskas veikia, o ne nusikrauti. Paaiškinimu nebus, bet dažnai bus parašyta, kad šis “škečas” ištrins jūsų firmware ir daugiau per jokį terminalą jis neveiks. O konfiguracija, tai žinot, ikompiliuojama į firmware, taigis jei reikės pakeisti IP ar AP pavadinimą, tai persikompiliuok su arduino iš naujo.
Arba labai “aiškiai” dėstomos mintys:
Ka jis ten norėjo pasakyti apart to, kad bitai nuo baitų skiriasi?
Šiaip, tai kad nereikėtu žiūrėti į kažkokias lenteles, tai tam reikalui naudojami linkeriai, kurie sukompiliuotus failus sulinkina ir sudėlioja pagal loaderio instrukcijas (bent jau pas ARM). Ir “flašinant” nereikia atsiminti adresų ir panašiai. Tiesa, kai kurie “binarai” šiam moduliui kogero normaliai sukompiliuoti ir sumontuoti- vienišas failas su nuliniu startu.
Kaip gi veikia:
Ogi nelabai. Va vienas iš firmwarų, kuris tipo palaiko AT komandas. Pirmiausia šitas šūdas kogero nepalaiko CRLF ar LFCR kombinacijų. Bent jau defaultinis windowsinis putty visiškai ignoruojamas. Turiu baisų įtarimą, kad firmwarės programeris dirba su obuoliu. Kodėl? Todėl, kad kai kuriuose archyvuose yra obuoliniai sisteminiai failai apie ikonas. Ir viename forume buvo parašyta, kad “dėmesio arduiininkai, šis modulis nori, kad eiltutė baigtusi \r, o ne \n“. Gal ir taip, bet putty kažkaip ignoruojamas arba AT parseris iš viso neveikia.
Tačiau nusikrovus patį seniausią firmwarą, kažkodėl reaguoja į terminalą:
Tačiau jokios laimės- palaiko gal kelias komandas, beveik visos komandos iš gamintojo puslapio gauna error atsakymą. Vadinasi firmwarė kardinaliai skiriasi nuo manualo…
Galima pagalvoti, kad mano modulis tik imitacija. Tačiau kažkos alfa versijos, jau kogero nepalaikomas projektas “ESP8266 basic” puikiausiai veikia. Prisijungia prie WiFi (arba pats dirba AP) ir netgi veikia- galiu pajunginėti kojas, PWMeminti jas, gal dar kažką daryti. Vadinasi modulis veikia.
Ar dabar suprantat, kodėl aš taip kritiškai žiūriu į šiuos kiniškus išradimus? Ir kartu suprantant, kodėl tokie moduliai sunkiai prasiskins kelią iki industrinio panaudojimo. Pirmiausia kinams reikia pamiršti savo didybę ir pasisamdyti angliškai kalbanti vertėja- programuotoją, pageidautinai – baltą žmogų, kuris kiek kitaip supranta duomenų pateikimą. Toliau kinams reikia pamiršti savo hieroglifus ir softą kurti pirmiausia su angliškų interfeisų, ir tik prie tos programos kabinti savo kalbą (ar kokią kitą), naudoti šiuolaikines programavimo kalbas kurios palaiko unikodą, o ne naudoti savo custom kodavimus iš Windows3.1 laikų. (Čia kaip rusai su savo КОИ-8 ir CyrWin. Kai mano pašto serveryje padariau filtrą, kuris jei laiške randamas kiniška, koi ar cyrwin koduotė, iškarto atmetą laišką, tai spamo kiekis sumažėjo gal 50%. Todėl, kad daugelis spamerių naudoja archaines priemones).
Reikia neužmiršti gerosios komandinės eilutės- ji tikrai leidžia apeiti visus dizaineriškus bells’n’whistles ir greičiau viską paleisti, ypač jei nuplaukia kokie DPI.
Ir kai norint paleisti projektą reikia iš esmės “hakinti” kažką, tai nerodo developerio krūtumo, o tik pasako, kad projektas iš esmės yra žalias, alfa stadijos ir dar daug daug reikėtu apšikti žolės, prieš paviešinant savo pasiekimus.
Šiaip net nežinojau, kad yra ale tokie shit visokie softo uploader per uart i ta 8 bit mcu. Aš kiek žaidęs vos pora kartų tai labiau linkęs per github pasiimt kažkieno jau darytą tą visą web interface ir žinoma pagal save pamodifikuoti. Bet kuo sutinku dėl tų china visų modulių, tai kad nėra techninės hardware normalaus aprašymo, buvau pagal pirmines schemas pasidariau pcb tokią kaip ir maketinę su esp-12E moduliu ir neveikė, nes pasirodo buvau pamiršęs kažkur puldown rezstorių uždėti ant kažkurio pin, kad daiktas persijungtų į boot režimą. Bet tiesa kartais susidaro aplamai elektronikos pramoneje jausmas, kad naudojant ne pagrindinių gamintojų dalis (TI, ANALAOG, ST (tik mcu)), net jau ir naudojant Onsemi ir surinkus viską pagal detalės techninį aprašymą detalė tinkamai neveiks ir tuomet pradedi galvot ar tau pardavė china padirbinį, ar tie nekokybiški integriniai lustai jau stumiami brokuoti į rinką. Ypatingai susiduriu su tuo naudojant visokius rinkoje esančius pigesnius dc/dc boost keitiklius. Jau keletą kartų teko nusivilti ir tuo Onsemi, ST power ic chipais, maxim power IC
Nelabai supratau prie ko čia tas vargšas Arduino IDE (kuris yra ir WEB versijoje, visada naujausias, su naujausiomis bibliotekomis). Na, nebent tuo, kad kaip ir linuxe – pilna visokių mėgėjų tarpusavyje mažai apgalvotai surištų, neturinčių vieningo ir aiškaus interface, modulių, kaip pvz MFC ar Clib, bet jis ir buvo darytas mokytis vaikams ar pradedantiems, panašiai kaip PASCAL ar BASIC. O ESP čia jau visai ne Arduino, tik kad atsirado norinčių jo palaikyma įdėti į Arduino, nes tai platforma mėgėjams, o profesionalai imasi visai kitų sprendimų ir ESP ju visai nedomina.
Šiaip, ponai(čiai), jūs patys kalti, kad išsirinkote Biden’ą vietoje nemokančio gražiai komunikuoti Trump’o, kuris ir norėjo padaryti, kad amerikiečiai patys gamintų kažką, o ne tik lipdukus klijuotų, kaip 99% EU “gamintojų”.
Nebuvo paminėtas šis “čipo gamintojo naujausias įrankis programinimui”:
https://github.com/espressif/esptool
Kurį “po apačia” ir naudoja Arduino IDE.
Puiki dokumentacija, daug žmonių naudoja, todėl nemanau, kad esti didėlė tikimybė susidurti su kažkokia klaida pirmąjam – dažniausiai sprendimai gūglinasi per kelias minutes.
Dėl putty (na, jis nėra “defaultinis windowsinis”, labiau cross-platform freeware įrankis iš ne-Microsoft kūrėjų) – nustatymuose prie “Terminal” skilties yra line-ending konfigūravimas. Taip, jis skiriasi tarp platformų, todėl jį reikia nustatyti pačiam.
Pabaigai, projektas projektui nelygu – juk gi ir tam pačiam nemokamam putty yra parašyta:
“THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND” – tipinė MIT-derived licencija.
Darant AT parserį (aš tokį dariau), reikia galvoti apie skirtingus eilučių terminatorius. (apie putty settingus žinau, nepadėjo). O ne palikti kokio nors obuolio.
Jūsų nuoroda veda prie daugybės failų kratinio, greičiausiai linuxams ir pitonui. Kad paleisti tą pitona ant windozės, kogero reikės dar pasipisti. Todėl darant “A Python-based, open source, platform independent, utility to communicate with the ROM bootloader in Espressif ESP8266 & ESP32 chips” reikėtu pagalvoti apie tai, kad tai nėra patogu pradedančiajam- instrukcijose komandinė eilutė ant linux. Juolab, kad aš to pitono nežinau. Ir nelabai norių dar vieno užsikrauti, kai jų puslapyje pamatai “Note that Python 3.9+ cannot be used on Windows 7 or earlier.” Koks skirtumas programavimo kalbai kokie windowsai, jei nelendi prie windowsu spec priemonių? Ypač kai tai cross platform development.
O dėl paskutinės eilutės- tai mikroschemos gaminamos tam, kad užsidirbti pinigų. O ne dėl to, kad krūtai hakinti. Tą suprato AVR, tą suprato microchip kuris iš piktumo nupirko AVR. Tą suprato STM. Tą suprato Microsoft ir tą net suprato Intel (kai nupirko Alterą). Tereikia tik pradžioje griežtai pavaldyti toolchainą ir neleisti užsibrančinti iki pilno chaoso.
O dėl Arduino- jus teisingai pastebėjot. Tai yra vaikų mokymo platforma.
Dėl ESP sakyčiau jie labiau suderinami su Arduino platfroma 🙂 bet visai nebūtina jos naudot.. taip pat kaip ir nebūtina su atmel dirbti per Aduino 🙂 tam kam nepatinka Arduino puikus įrankis yra PlatformIO, ten jau viskas artima C. Ir libus susirenka. Paskutiniu metu buvau apstulbes ESPHome sprendimu, kadangi namų automatizacijai naudoju HomeAssistant, tai ESP programuojasi praktiškai per YAML 😀 nu aišku.. labiau gal konfigūruojasi 🙂
Šiaip, aš ji norėjau panaudoti kai WiFi-UART modulį, su kokiom nors AT komandomis. Kaip kokį GSM modulį. Tačiau kiniškas kažkaip buvo tuštokas, o normalaus firmwaro per vieną vakarą neradau 🙂
Tačiau nepavyko. Jei turi kokį firmwarą, duokit linką.
O gal geriau neisradineti dviracio ir pasiimti kokybiska Serial&GPIO to Ethernet (+Wireless) moduli kaip xPico 110? Ir firmware ir control software parasyta tiesiomis rankomis ir jei kyla klausimu – kokybiskai supportas veikia.
Ir aš nusipirkęs šitų moduliukų bet taip ir nepavyko nieko į juos įpūsti. Voliojasi kažkur prie kitų modulių su paskirtimi “kadanors darysiu”
Dviračio neišradinėjam, taip praleidinėjam karantiną. Kaip tik iš serijos- “stalčius – kadanors darysiu”. Va dabar ką tik pabaigiau programinti girliandą- mėtesi sudegęs kiniškas RGB kontroleris ir kokie 6 metrai RGB juostos. Labai labai švelniai keičia spalvą- epilepsijos tikrai nebus.
atmega328p PWM RGB LED x-mas light.
Daugelis atmegų puikiai suvalgo atomarinę f-ją PINx = (1
Nustojau “optimizuoti” šiuos elementus kai pasinagrinėjau ką išspjauna šiuolaikinis kompiliatorius. Kad ir kaip kvailai parašytum tos kojos keitimą, po optimizacijos lieka viena asemblerio eilutė SBI.
O dėl kodo- tai copy-paste ir neišlaižytas.
Mano kode (šiame) nėra PORT |= pin reikšmė. Tai asembleryje nėra SBI:
SBI lieka tik tiems atvejams, kur porto adresas iki 0x1F imtinai, o juk dauguma portų/vidinės įrangos registrų yra virš 0x1F, todėl išvirsta į tris operacijas, per kurias dar gali įvykti pertraukimas ar kažkas pakisti porte aparatiškai, pvz PWM, komunikacijų įvykiai ir t.t.
Pvz jei m2560 naudosi vidinius pull-up’us ir šitaip dirbsi su portais virs 0x1F, tai apturėsi situaciją, kai į port-pin’ą įrašysi 0 ir uždrausi pull-up’ą, tuo pačiu pasmerkdamas šį pin’ą plaukiojančiai padėčiai, jei jo nepritempia niekas nei prie 0, nei prie 1. O tokių portų net 4 – H,J,K,L.
O neteko susidurt su MBED? Iš pirmo žvilgsnio labai gera operacinė sistema ARM procesoriukams, daugybė bibliotekų, palaikymo forumai, panašu, kad labai daug žmonių tai naudoja. Bet bent jau man pavyko kažką normalaus pasidaryti tik kažkada ant OS V2 (dabar yra V6.5). Dauguma pavyzdžių, aprašymų V2 versijai, o palaikoma dabartinė versija tikrai prastai dokumentuota. Pasiimi oficialų pavyzdį, pakeiti vieną funkciją ir gauni OS crash. Niekas net negali atsakyti kodėl. Yra WEB compileris, yra instaliuojama MBED Studio – abiejų veikimas panašu kad šiek tiek priklauso nuo mėnulio fazės. Tai palyginus Arduino – labai labai puikus dalykas. Šiaip aš pagrinde užsiimu FBD, LAD, STL, sequence programavimu – tai apie ESP gana mažai žinau. O apie minėtų xPico 110 gamintoją Lantronix – galiu tik labai gerai atsiliepti, ne taip kaip apie kokį Siemens.