LAKI PINGVINI Razlika je u belini
Nije tako kratak put od najave na našem sajtu o ESP32-S2 (mart 2020, i.sk.rs/n1198), do pisanja o njemu naširoko i iz prve ruke. Naime, potrudili smo se da na osnovu ESP32-S2 napravimo razvojnu ploču sa gomilom dodataka i „produvamo” svaki njen aspekt. Kompletne podatke, šemu, korak-po-korak tutorijal možete da pronađete na GitHubu. Stoga vam predlažemo da, pre nego nastavite sa čitanjem, skoknete do i.sk.rs/358138. Tada će vam priča koja sledi biti dosta jasnija. ESP32-S2 modul o kom govorimo je WROOM. U odnosu na standardni ESP32 ima određene razlike, neke su prednosti, ali ima i mana. Dva čipa su definitivno mogla da ponesu drugačije oznake. Za razliku od čipa koji se pojavio, sada već prilično davno (pre pet godina), S2 dolazi sa jednim jezgrom sa taktom na 240 megaherca. Xtensa arhitektura je i dalje prisutna, ali sa LX7 jezgrom u 32-bitnoj varijanti. Sam čip na raspolaganju ima 128 kilobajta ROM-a, 320 kilobajta SRAM-a i 16 kilobajta SRAM-a u RTC-u. Nedostatak jednog jezgra je očekivano povukao i Bluetooth sa sobom. Na S2 na raspolaganju imamo samo WiFi 802.11n, sa protokom do 150 megabita u sekundi. ESP32-S2 čipu pod metalnom haubom modula na sebi društvo pravi i četiri megabajta SPI fleš memorije. Ako izuzmemo SPI memorijski čip, sam S2 ima osetno manje memorije u odnosu na starijeg brata. I dalje je to ozbiljno više ako ga gledamo kroz prizmu Una. Prave prednosti S2 čipa ogledaju se u interfejsima. Pored standardnih GPIO, SPI, UART, I2C i I2S, ESP32-S2 ima i interfejs kamere, IR, pulse counter, PWM, TWAI, ADC, DAC, temperaturni senzor. Međutim, najvažniji, po našem mišljenju, jeste USB OtG 1.1 (On-the-Go). Ovo je prvi čip iz Espressifa koji ima direktnu USB podršku, mada već sada ne i jedini. O prednostima USB OtG kasnije u tekstu. Sa druge strane, S2 nema CAN. Mi smo, držeći se tehničkih specifikacija i prvog rešenja Espressif Saola, napravili razvojnu ploču koja iz ESP32-S2 „izvlači poslednje mrvice”. Pritom, imajte u vidu da je ploča kompletirana pre više od šest meseci, u međuvremenu su se pojavila i druga rešenja, neka slična našem, ali ipak kasnije. Mnoga rešenja nemaju USB OtG port, druga obrnuto. WHITEBoard Saola ima oba porta. Naše oslanjanje na Saolu je i dovelo do toga da zadržimo naziv. Na našoj Saoli, pored WROOM-a, imamo i adresabilnu RGB LED WS2812B, žiroskop MPU-6050, kao i druge komponente. (Već smo pisali o adresabilnim LED u SK 12/2020, pa i u ovom broju; o žiroskopu nismo, ali u planu je zaseban tekst.) Tu je korisnički taster, zatim ’BOOT’ i ’RST’ tasteri. Kao UART čip, iskoristili smo CP2102. Koristeći jedan od dva mikro-USB porta, korisnički program lako možemo da prebacimo na Saolu, bilo iz Arduino okruženja, bilo CircuitPython. Prilikom prebacivanja skeča preko UART-a nije potrebno držati neki taster pritisnutim, Saola će se sama prebaciti u BOOT režim zahvaljujući jednom kondenzatoru na EN liniji. Mnoge razvojne ploče zasnovane na ESP32 i dan-danas nemaju rešen taj problem. Ovde se sa tehnikalijama ne zaustavljamo. Na ploči je i JST konektor LiPo baterije, uz strujna kola za njeno punjenje, kao i automatsko prebacivanje na 5V liniju USB-a, ako napon postoji. Tu je i naponski razdelnik za merenje „soka” u bateriji. Dodali smo i mali bočni prekidač, tako da Saolu komotno možemo da ostavimo povezanu na bateriju, bez bojazni da će ploča raditi. Dijagram Saole možete pronaći na GitHubu. Ipak, reći ćemo da smo izveli kompletan pinout WROOM modula, od kojih bismo izdvojili neke. IO46 je input only pin, IO8 i IO9 su pinovi I2C interfejsa, IO34-37 SPI, IO19-21 su pinovi OtG linija, a trudili smo se da ih zalemimo headerima različite boje. Na ploči imamo izvedene RESET i BOOT pinove, GND, 5V i 3.3V. Za napajanje ploče možemo da koristimo bilo koji USB port, bateriju ili 5V pin. Na 5V pin možemo da dovedemo i nešto viši napon, ali ne preko šest volti. Ploču smo maksimalno „maltretirali” mesecima, bez ijednog problema. Ispod ploče je nekoliko džampera za lemljenje. Recimo, ako nam zatreba BTN taster, zalemićemo JP1 ka BTN, a obratno ćemo ga zalemiti ka 40, jer je sa IO40 BTN i povezan. Isto se odnosi na naponski razdelnik baterije (IO1) i RGB LED (IO18). Ostavili smo i jedan za odabir I2C adrese MPU-6050. Da bismo dodali podršku za ESP32-S2 u okviru Arduino IDE, potrebno je instalirati ESP32 2.0 paket ploča. U okviru ovog paketa dobijamo i podršku za ESP32-C3, o čemu možete očekivati lepe vesti na ovim stranicama u nekom od narednih brojeva. Podršku dobijamo kroz JSON paket, a postupak imate na GitHubu, da ne prepričavamo ovde kompletan postupak. Na istom mestu su i primeri kojima smo pokrili kompletan hardver na ploči. Nakon toga, biramo ESP32-S2 kao i svaku drugu ploču, povezujemo sa računarom preko PROG porta, a upload korisničkog programa ide veoma brzo. Ako se desi da računar nema kontakt sa pločicom, prekidač sa strane je ostao u „Off”. Rekli smo da je jedan od najvećih „fičersa” USB OtG. Skeč iz Arduino IDE možemo da prebacimo i preko OtG porta. Prethodno treba povezati Saolu sa računarom preko OtG, držeći pritisnut ’BOOT’ da bi se aktivirao BOOT režim. Računar će prepoznati da je nešto povezano, ali ne i šta. To rešavamo sa Zadig softverom i instaliramo ESP32-S2(Interface_2) drajver, koji je i preporučen. Prebacivanje skeča se odvija potpuno isto, s tim razlikama da nam se port prijavljuje kao ESP32S2 Dev Module, kao i da treba da nakon svakog uploada skeča resetujemo Saolu ’RST’ tasterom da bi izašla iz BOOT režima. Evo jednog primera Blink skeča koristeći RGB LED. #include <Adafruit_NeoPixel.h> #define PIN 18 Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); strip.setBrightness(50); strip.show(); // Initialize all pixels to ’off’ } void loop() { colorWipe(strip.Color(0, 255, 0), 1000); // Green colorWipe(strip.Color(0, 0, 0), 1000); // white } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } Kao razvojna ploča, WHITEBoard Saola može se koristiti za testiranje oba načina prebacivanja skeča. Nakon prebacivanja skeča drugom metodom, IDE će prijaviti grešku da je čip prebačen u download režim preko IO0, što i jeste, ali da esptool.py nema način da iz njega izađe preko USB veze, što je isto tako tačno. To moramo da uradimo manuelno, preko ’RST’ tastera. Još jedan drawback OtG metoda je serijski interfejs i komunikacija sa terminalom računara. On je na Saoli moguć samo preko PROG porta i CP2102 UART čipa. CircuitPython traži nekoliko stvari. Kompletan korak-po-korak je na pomenutoj GitHub stranici. Ipak, treba nam poslednja verzija Pythona i Esptool, ali Development Mode Esptool. Na Prozorima koristimo Command Prompt, a nakon uspešne instalacije Esptoola trebalo bi da dobijemo spisak komandi, ali i spisak svih podržanih varijanti ESP32, među kojima je i C3, ali i mnoge druge koje se za sada i ne pominju. Potrebno je još preuzeti BIN fajl CircuitPython firmvera sa circuitpython.org, gde biramo ESP32-S2, pa dalje Saola1 w/WROOM. Sadržaj čipa brišemo sa: esptool.py --chip esp32s2 erase_flash Nov firmver pišemo komandom: esptool.py --chip esp32s2 --port COM7 --baud 921600 write_flash -z 0x000 C:{location}adafruit-circuitpython-espressif_saola1_wroom-en_US-6.3.0.bin Ovde treba voditi računa o portu i direktnoj putanji ka preuzetom BIN fajlu, kao i o njegovom nazivu. Nakon reseta, Saola će se prijaviti kao CIRCUITPY drajv. Koristeći neki od dostupnih editora, MU recimo, možemo lako da programiramo Saolu, a o samom postupku je bilo reči kada smo pisali o Pico Malini (SK 3/2021, i.sk.rs/29330). MicroPython trenutno ne podržava S2, što će se, nadamo se, promeniti. Sledi primer čitanja stanja ’BTN’ tastera: import time import board from digitalio import DigitalInOut, Direction, Pull btn = DigitalInOut(board.IO40) btn.direction = Direction.INPUT btn.pull = Pull.UP while True: if not btn.value: print("BTN is down") else: print("BTN is up") pass time.sleep(0.1) # sleep for debounce Testirali smo Saolu poprilično i nismo našli niti jednu falinku. Postoje određeni problemi u vezi sa CircuitPython bibliotekama za WS2812, što je jako čudno. U Arduino IDE okruženju apsolutno sve na pločici radi savršeno; barem mi nismo imali problema. Na testovima računanja broja PI, S2 se pokazao osetno lošijim od barebone ESP32. Dva jezgra i više memorije prave osetnu razliku. Mada i dalje mnoge takmace „ostavlja u prašini”, S2 „starijem bratu” naprosto nije dorastao. Pozivamo vas da se priključite i pomognete da proširimo i obogatimo repozitorijum. Za sva pitanja, adresu foruma znate.
|
||||||||||
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Microsoft Majorana 1 Kvantna topologija Topološki kvantni računar otporan je na uticaj kosmičkog zračenja, ali i dalje mora da se ohladi skoro do apsolutne nule... AMD Ryzen 9 9950X3D Jedan, da svima vlada Ako vam je potreban najbrži procesor, i za igranje, i za ozbiljnije zadatke, Ryzen 9 9950X3D nema konkurenciju... Gigabyte GeForce RTX 5070 Ti Aero OC 16G i GeForce RTX 5070 Ti Gaming OC 16G I za kreativce, i za igrače Sasvim sposoban da se nosi sa 4K rezolucijom u svim igrama i pruži sasvim pristojne performanse, dok u 1440p apsolutno blista... Asus ROG Strix Scar 18 (G835LX) Fantastična zver i kako je kupiti (3) Laptop namenjen onima koji „ne žale pare” da imaju ono što je trenutno najbolje i najbrže... Deset najboljih Microsoft PowerToys alatki Najbolji od najboljih PowerToys Run je alatka kojoj treba da se okrenete ukoliko vam sistemska rutina za pretragu ne odgovara... Apple iPhone 16e Malo muzike za mnogo para Problem nije samo cena i slabiji grafički podsistem, već i trajanje baterije... Cemu 2.6 Wii U emulacija Cemu omogućava pokretanje i privođenje kraju oko 57 procenata igara „napisanih” za Wii U... .rs: nove usluge eUprave - novi propisi - najava 5G Mnogo eNoviteta U novom esDnevniku roditelji će dobijati notifikacije za ocene i izostanke... Trgovinski rat Istoka i Zapada Velika igra, nesagledive posledice Kao u igri „kukavice”, dve supersile kreću se velikom brzinom jedna prema drugoj, izazivajući drugu da prva skrene... South of Midnight Magična igra koja izgleda kao živa bajka, animirana u stilu filmskog serijala „Spiderverse”... |
||||||||||