- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- CMF Phone 2 Pro - a százezer forintos kérdés
- Nem túl penge, viszont olcsó az új ZTE Blade
- iPhone topik
- Samsung Galaxy A54 - türelemjáték
- Okosóra és okoskiegészítő topik
- Android alkalmazások - szoftver kibeszélő topik
- 6 év biztonsági támogatást ígér a Motorola
- Fotók, videók mobillal
- Poco F6 5G - Turbó Rudi
-
Mobilarena
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Janos250
őstag
Na, aki a mostani kiadású Sonoffot akarja Arduino alatt programozni, némi info:
Lecserélték benne egy másik típusra a flash IC-t, ezért nem megy a régi beállításokkal.
DIO helyett DOUT-ra kell állítani. -
Janos250
őstag
válasz
Tankblock #7763 üzenetére
Az RGB-s óra nekem is tetszik, de én ESP32-vel akarom megcsinálni.
Passzióból csináltam néhány féle módon az ESP32-re RGB led meghajtókat.
RMT-vel is párféleképpen, meg anélkül is, mert elég gyors a proci, ha mindkét core-t használjuk, simán szoftverből is megy, RMT nélkül is. -
Janos250
őstag
Na, most üt meg a guta
Régebben többször használtam Sonoff basicet, semmi gond nem volt velük, símán mentek.
Már egy ideje nem foglalkoztam velük, most az ESP32-vel élvezkedek.
Jött egy kolléga, hogy tegyek fel neki a sonoffjára egy programot. Semmiség, mondom.
Felment, OK. De semmi életjel. Nem indul el, se wifi, se led, semmi. Serial monitorra azt írja, hogy busy. Fene a gusztusát. Próbáltam nem az USB-soros konverter tápjával, hanem erősebb táppal. Semmi. Másik sonoff. Semmi. Másik gép. Semmi. Az újhold a gond, vagy mi a fene lehet vele, gőzöm nincs. Pedig hány embernek dícsértem. Több embernek tanítottam meg a használatát. Most meg én képtelen vagyok használni. -
Janos250
őstag
válasz
choco01 #7719 üzenetére
Tapasztalatom szerint nincs felhasználás szempontjából lényegi különbség a különböző ESP32 panelek között, kivétel, ha nagyon régi.
ESP-WROOM-32 legyen rajta. Ez ugyanaz, ami korábban az ESP32S. USB szintén legyen rajta, amiről programozni is, tápolni is lehet. A többi szerintem mindegy.
Én ezekből használok/tam párat.
link -
Janos250
őstag
Mint már mondtam, nem értek hozzá, de azért dumálok
Abból tanul a (vén) gyerek, ha kérdez.
"mai átlag SI dioda nyitó feszültsége 0.6- 0.7v"
Miért csak Si? OA1160? Még ma is kapható.
Ellenállás: nem akkor lesz zajosabb, ha nagyobb ellenállást raksz rá? Ha kisebb az ellenállás akkor kevésbé lesz zajos, de torzít, nem? Nekem - valahonnan - a vonalszintre haloványan 600 (800?) ohm rémlik, de ez csak úgy dereng.
Mivel a hangerőt akarja összehasonlítani különböző helyeken, és a jelet úgyis simítja, szerintem nem annyira lényeges se a gyökkettő, sem a precíz integrálás.
Apropó, simítás! Én ezt használnám:
x*előző jel + (1-x)*friss jel. Mint a lineáris algebrában a két vektor végpontja közti szakasz. 0<x<1 -
Janos250
őstag
válasz
MineFox54 #7680 üzenetére
Mivel nem vagyok elektronikai szakember, lehet, hogy nagy hülyeséget mondok, de majd a profik javítanak, ha nagy marhaság:
Ha hangerőt akarsz mérni, és a "0 szintet középre teszed", akkor utána matematikailag kell "egyenirányítanod" a jelet, hogy szintet tudj mérni. Nem lehetne ezt hardverben egyszerűbben megoldani? Graetz? Akkor a műveleti erősítő se kellene? Vagy egyszerűen vágni, mint hajdanában a detektoros rádióknál? -
Janos250
őstag
válasz
MineFox54 #7667 üzenetére
Nekem továbbra sem sikerült tökéletesen megértem, ezért bocs, ha számodra trivialitást írok.
Az a baj, hogy a "nincs jel" esetén nem 0 decibelt jelez? Jól értem a problémát?
A nincs jel ugyanis nem 0, hanem mínusz végtelen decibel, ezért az lenne a hiba, ha 0-t jelezne.
A programban első ránézésre sehol nem látok decibel számítást (logaritmus) -
Janos250
őstag
válasz
Teasüti #7622 üzenetére
Nálam általában nem volt jeltorzulás. Az utána következő ledek jól működtek.
Egy szalagnál úgy tűnt, hogy egy hullámot "elnyelt", így az utána következők színe torzult aszerint.
Ha a bit utáni részt elég hosszúra vettem (pl. 2 microsec periódusidő), akkor egyáltalán nem tapasztaltam hibát. 6-7 microsec periódusidőig jól mentek, afölött viszont resetelt, tehát csak az első led világított valamit. -
Janos250
őstag
Ezért csinálok én gyakran saját drivert.
Valamikor tavaly ilyenkor a DHT11-re csináltam egyet, de már nem emlékszem részletekre. Beletekintve - úgy látom - elég általános, mert delay()-el vannak az időzítések, tehát - elvileg - nem kontrollerfüggő. Nem tudom, DHT22-re jó-e. Ha gondolod, próbáld ki. Vagy az időzítéseket át is írhatod a DHT22-re. Tettem bele annak idején az időzítésekről egy Móricka ábrát, gondolván arra, hogy egy év múlva, már fogalmam se lesz, mit miért csináltam.Nekem most nincs kéznél DHT22, nem tudom kipróbálni.
link -
Janos250
őstag
WS2812 "pixel hibás" RGB led szalag ügyében a tapasztalatok:
Amelyik pixel hibás bizonyos időzítéssel és bizonyos fényerővel, az nem biztos, hogy más beállításokkal is hibás.
Pl. nálam egyik szalag egy pixelje:
R=128-al kialszik, de 64-el és 255-el jól működik.Célravezetőbb megoldás:
A teljes bit ciklusidőt növeljük, akár 2 microsec-ig, akkor az a pixel is megfelelően működik, ami más beállítással hibás. Így nálam a hibás pixel is megfelelően működött minden kipróbált fényerőnél.
Vagy ha a 0 bit magas szintjének idejét csökkentjük, akkor is azt tapasztaltam, hogy működött, de a teljes ciklusidő növelése célravezetőbb, gyorsabb.
Tehát a "hardveres olló" használata előtt célszerű kipróbálni a "szoftveres ollót"! -
Janos250
őstag
"nem is szöveget ad vissza, hanem számokat"
Persze.
WiFiType.h:typedef enum {
WL_NO_SHIELD = 255, // for compatibility with WiFi Shield library
WL_IDLE_STATUS = 0,
WL_NO_SSID_AVAIL = 1,
WL_SCAN_COMPLETED = 2,
WL_CONNECTED = 3,
WL_CONNECT_FAILED = 4,
WL_CONNECTION_LOST = 5,
WL_DISCONNECTED = 6
} wl_status_t; -
Janos250
őstag
Hirtelenjében nem teljesen tekintem át, de:
1. A webPage stringet feltöltöd a setupban. Utána a loopban adogatsz hozzá még valamit. Akkor az folyamatosan hízni fog!
Én - ha hasonlóan akarnám csinálni - , akkor a server.send-ek előtt készíteném el az aktuális stringet.
Pl.:
webPage2 = webPage;
webPage2 += "<h2>Input is HIGH</h2>"; (itt persze if-el, de azt nem akartam leírni)
server.send(200, "text/html", webPage2);
2. Én a delay-t a loopba tenném.
3. Én a server.send-et a végére szoktam rakni (ahol most a delay van), de ez nem hinném, hogy számít valamit
4. Én szoktam a web lapnak fejét, törzsét csinálni, bár a mai böngészők nélküle is elfogadják. -
Janos250
őstag
Én legolcsóbbnak ezt találtam:
link
Egy a lényeg: ESP-WROOM32 (tehát az a fém tokos hibrid valami) legyen rajta. Amire azt írják, hogy ESP32S, ma már az is ugyanaz. Nézd meg a kinagyított fényképét.
A neten ajánlják azt is, amin van oldalt egy fehér tápcsati, de itt korábban valaki azt írta, hogy a + és - fordítva van bekötve, tehát figyelni kell.Bizony a kínai vásárláshoz türelem kell
-
Janos250
őstag
válasz
távcsőves #7550 üzenetére
Szubjektív vélemény:
"1 hete használok STM32DUINO"
Jó is az! Előnye, hogy ARM. Annak ellenére, hogy az ESP32 dokumentációja is egyre bővül, az STM32-vel még nem veheti fel a versenyt részletesség és pricizitás terén. Az F103-at én is használtam, szerettem. Viszont mire az F4 boardjaim megérkeztek, addigra már az ESP32 támogatása is olyan szintre jutott, hogy az STM-ek a fiókba kerültek.
Az ESP32 előnye:
szintén sok memória, rengeteg periféria, 240 Mhz órajel kettő maggal, és mindkét mag jól használható. Ez némi párhuzamos programozási technikákat is lehetővé tesz. Az arduino környezetbe illesztése mostmár szinte tökéletes. A freeRTOS op. rendszer fut rajta, arra van ráillesztve az arduino héj, de elérhető az op. rendszer - majdnem minden - saját függvénye is. Nagy előnye a beépített WiFi és BT. Van benne olyan spéci lehetőség is, mint pl. az RMT. Az UNO-ra megírt programok gyakorlatilag változtatás nélkül futnak rajta. A GPIO lábak low/high állítására külön regiszterek is vannak, nem kell a lábak állapotát beolvasni, majd úgy módosítani közvetlen regiszter használat esetén se. Előny még az ára: 1600 Ft körül már kapható.
Hátránya:
Nem ARM. Ha az ember a C++ -nál lentebb akar menni, azaz a regisztereket közvetlenül akarja elérni, még akad dokumentációs hiányosság. Bármelyik periféria bármelyik lábhoz kapcsolható, ez gyakran előny, de néha bonyolítja a dolgunkat. A regiszterek kezelése jó, de mivel 32-nél több GPIO van, ezért a GPIO-hoz kapcsolódó regiszterek 2 x 32 controll regiszterhez tartoznak. Nem minden GPIO használható szabadon, de ezek nem a 32-n túliak. Egyik-másik funkció leírása még vagy nincs meg, vagy gyér.Összefoglalva:
Én az ESP32 mellett vagyok. Ha valaki csak C++ -szinten (tehát csak "arduino" módon) használja, akkor a felsorolt hátrányait nem érzi, előnyeit viszont igen.
A regiszterek közvetlen kezelése nem szükséges normál esetben, de nekem jó játék. -
Janos250
őstag
válasz
Victoryus #7545 üzenetére
Amit leírtál, az tanulságos lehet mindenki számára, aki új lapra tér át. Ne vegye komolyan, ami a lapra van írva. Igaz, meg lehet nézni a hozzá tartozó fájlban, hogy melyik lábat minek nevezi, ha biztosan tudjuk, hogy azzal a lappal van dolgunk. Én nem is szoktam használni a lábak neveit, tehát én ilyet többnyire nem használok, pl. hogy pinmode(D2, hanem pinmode(2, .
Ha ezt átviszem egy másik lapra, ott is megkeresem, hogy melyik a GPIO2, és nincs gond.
Gyakori, hogy új lapnál leellenőrzöm leddel, hogy ténylegesen az a láb-e az adott sorszámú. -
Janos250
őstag
válasz
Teasüti #7546 üzenetére
"Ezt olvastad?" Mostmár igen
Kösz.
Egyébként a helyzet az, hogy mivel itt vannak már az olcsó, gyors, viszonylag sok memóriával rendelkező kontrollerek, én egyszerűen nem akarok már AVR-el foglalkozni. Annak idején számos rutint sok munkával megcsináltam Z80-ra, és elöntött a hú milyen jó érzése. Viszont pár év múlva jöttek a jobb procik, és a sok munka egyszerűen hamuvá vált. Ennek tapasztalatai alapján nem nagyon akarom már nyakatekert megoldásokkal kissé feljebb tornászni a proci teljesítményét, inkább használok jobbat. Most pl. ESP32-t, mint rajtam kívül még sokan mások.A leírt időzítéses dolgok viszont tanulságosak, érdemes elolvasni!
Azt, hogy az 1 bitet meddig szabad magasan tartani, ki fogom próbálni, mert ez érdekes. Mivel nekem semmi konkrét célom nincs ezekkel a ledekkel, csak játszom velük, így azokat a dolgokat próbálom ki, ami számomra érdekes, szórakoztató.
Más:
Mondjátok, Ti honnan a csudából tudjátok egy kínai led szalagról, hogy az most éppen melyik típus? Ráírva semmi info nincs erről, a kis kínai meg felsorolja majdnem az összes típust, hogy keresésnél minél többen megtalálják.
Én egyszerűen játszottam az időzítésekkel, hogy mi válik be legjobban, de fogalmam sincs, hogy éppen melyik típus van a kezemben. -
Janos250
őstag
Na, akkor én a következőt mondanám:
Portable verzió!
Letöltöd az arduino rendszert, kicsomagolod egy külön könyvtárba, pl C:\arduinoPortable. Lehetőleg ne a dokumentumokba, mert akkor túl hosszú lesz a path, amit nem fog szeretni. () MIELŐTT ELŐSZÖR ELINDÍTOD, csinálsz egy portable könyvtárat. Most már elindíthatod az arduino.exe-t. Ebbe töltöd le az ESP8266-ot a szokásos módon. A portable verzió nem akad össze a fenn lévő másik verzióval/verziókkal.
-
Janos250
őstag
válasz
Teasüti #7523 üzenetére
"Ha szerencsés vagy, akkor üzembiztos lesz. Ha nem, akkor sorra jönnek elő a pixelhibák aktív használat közben"
Van valakinek pixelhibás led szalagja? Ki tudná próbálni, hogy ha a 0 bit hosszát lényegesen lecsökkenti (mondjuk 0.25, vagy 0.2 microsecre), nem szűnik-e meg a hiba? Két szalagot próbáltam, az egyikben egy, a másikban két olyan pixel volt, ami gyakran hibázott egy idő után. Levittem a 0 bit hosszát, és megszűnt a pixelhiba. -
Janos250
őstag
válasz
Teasüti #7523 üzenetére
Mivel nem ismertem a WS2813-at, rákerestem.
"250us or more of reset time, it won’t cause wrong reset while interruption, it work on the lower frequency and inexpensive MCU."
Ez egy fontos szempont lehet, ha nem akar az ember nyűglődni az interrupt letiltásával. Próbára rendelek is egyet!Smart home:
Vannak már rá példák. Én is ki akarom próbálni, de még nem jutottam odáig. Pl. Sonoff cuccok jól illeszthetők. -
Janos250
őstag
Karácsony : arduino + WS2812 kombó:
linkMiért nem előbb találtam meg?
-
Janos250
őstag
válasz
pigster #7487 üzenetére
Eddig még soha nem használtam BT modult - bár többször terveztem- ,
de többször használtam más modulokat, amik soros vonalon kapcsolódnak. Nem UNO-hoz ugyan, de arduino lapokhoz.
Gyakori hibák okai voltak:
ZAJ!!!
Próbáld meg minél rövidebb madzaggal kötni az UNO-hoz, illetve a jel és a föld vezetéket összecsavarva vezesd oda.
Nekem volt, amikor a pullup segített.
Tapasztalatom szerint gyakran segített, ha a jel és a föld vezeték közé betettem egy ellenállást terhelésnek.
Van olyan projektem is, ahol a mai napig nem tudtam megoldani másként a zaj problémát, csak elemről való táplálással. (földhurok, vagy a fene tudja mi miatt).
Persze mindezek csak tippek, lehet, hogy a Te problémád egész másból adódik. -
Janos250
őstag
válasz
Teasüti #7485 üzenetére
Nem könyvtárat írok hozzá, csak játszom vele, próbálgatom. Változtatgattam az időzítéseket, hogy mire hogyan reagál. Először azt hittem, hogy a Saleae8-as dobta fel a talpát és badarságot mér, de egy másik példánnyal is ugyanezt adta. Akkor az a ritka eset következett be, hogy a Saleae8-as helyett elővettem a 16-ost, de azzal is ugyanazokat a pulzus időket adta. Mivel nem RMT-vel csináltam, 0.18 microsec volt a legrövidebb idő, amit be tudtam állítani, de azzal még stabilan ment. Majd megpróbálom RMT-vel rövidebb idővel is. A netes 0.35 -nél az egyik szalagon egy led, a másikon kettő nagyon gyakran hibázott. 0.3-nál már kevesebbet, 0.25-nél meg teljesen stabil minden led. 0.4-nél baromságokat csinál.
-
Janos250
őstag
válasz
ngabor2 #7476 üzenetére
"Okozhat-e gondot" Tegyél be egy diódát!
"5V-os relét a 3.3 V-os jelszint kapcsolja-e"
Reléje válogatja, de mindenképp illesztő használata a korrekt.
"egy ilyen modul"
Na, olyan nem :-) (nézd meg, mit linkeltél!)
Az órákig járás nem probléma. Nekem kb egy hónapja megy egy ESP32 szerver kiakadás nélkül. Egy WiFi routerhez kapcsolódik, azon keresztül tudom a "világból" elérni. -
Janos250
őstag
Na, kicsit foglalkoztam a WS2812 LED szalag lelkivilágával.
Nem tudom, ti hogyan tudjátok, hogy nektek melyik verzió van? Nekem a legolcsóbb noname kínaiakból kétféle. Az eredeti gyártó leiratában 0.4/0.8 időzítések vannak. Ezzel rengeteget hibázik. A neten 0.35/0.9 is van, azzal már elég keveset hibázik. Legstabilabbnak 0.2-0.25 /0.9-el tűnt. Eredetileg 50 microsecet írnak, hogy annyitól "kezdi újra". Én 8 microsec körüli értéket mértem. Aki már használta, mi vele a tapasztalat időzítés ügyben? -
Janos250
őstag
válasz
szabifotos #7467 üzenetére
Lehet buta kérdés, de ugye az IP cím és a port (mosquitto 1993) be van állítva? A mosquitton is. Vagy nem mosquitto?
-
Janos250
őstag
válasz
szabifotos #7467 üzenetére
Ebben a topicban kevesebben foglalkoznak MQTT-vel.
Inkább itt:
link
Viszont, ha már itt tartunk, én is kérdezek.
Láttam valahol, hogy valaki rakott fel arduino rendszer alá MQTT brokert. Próbálta már valaki, mert én is ki akarom próbálni az MQTT-t. -
Janos250
őstag
válasz
modeller #7418 üzenetére
Valóban teljesen két külön dologról beszélünk. Mint korábban már írtam, a coprocessor programozását soha nem próbáltam. Egyszer néztem (https://github.com/krzychb/ulp-loop/blob/6f7c3d843e8a27137d77fd2f28c04c16919e5681/main/ulp_example_main.c), de mivel nem volt rá szükségem, hagytam is. Az ott leírt kód ugyan "IDF szemléletű", de az így írt kódok - tapasztalatom szerint - simán futnak arduino környezetben is, persze az egyes részeket a megfelelő helyre másolva. Érdekes lenne kipróbálni. Ha valaki már próbálta, írja le lsz!
-
Janos250
őstag
válasz
modeller #7409 üzenetére
Például így:
xTaskCreatePinnedToCore(
InCore0Code, // Task function.
"Core0prg", // String with name of task.
1000, // Stack size in words.
NULL, // Parameter passed as input of the task
3, // Priority of the task.
&InCore0, // Task handle.
0 // core
);
xTaskCreatePinnedToCore(
InCore1Code, // Task function.
"Core1prg", // String with name of task.
1000, // Stack size in words.
NULL, // Parameter passed as input of the task
1, // Priority of the task.
&InCore1, // Task handle.
1 // core
);
Az elsőt (most épp Incore0Code függvényt) a 0-ás core-ra teszi, a másikat az egyesre.
A kód meg a szokásos, csak a végén vTaskDelete kell:void InCore0Code( void* parameter){
// utasítások
vTaskDelete(NULL);
} ; -
Janos250
őstag
válasz
modeller #7407 üzenetére
"arduino-ban lehet programozni a co-processzort?"
Nem tudom, még soha nem próbáltam. Én egyszerűen csak a core0 és core1, mint két mag programozására értettem, hogy mindkettőn lehet könnyedén futtatni programrészeket.
Ha IDF-ben lehet, akkor - elvileg - Arduinoban is lehet, mert - szintén elvileg - elérhetők a freeRTOS függvényei. Legfeljebb inkludolni kell a helyüket.
Amit az IDF-ben freeRTOS alatt nem lehet, azt Arduino alatt sem valószínű.
Az utolsó mondatot, meg - azt hiszem - Teasütinek szántad.
Egyébként azóta rájöttem hogy megvannak a perifériák sorszámai. -
Janos250
őstag
válasz
Teasüti #7383 üzenetére
"Példánál maradva:"
Ha ugyanabból a
hardware\espressif\esp32\cores\esp32\esp32-hal-gpio.c
fájlból a pinMode-ot idézed, még szembetűnőbb a dolog. A 77. sortól a 165-ig tart!
Na, ezekért választom én is az Arduinot. Persze azért fél szemmel lesem azt is, hogy freeRTOS-ben mi van mögötte, illetve, hogy a freeRTOS mögött mi van regiszter szinten. -
Janos250
őstag
Teasüti jól összefoglalta a dolog lényegét, pár dolgot tennék hozzá:
Az Arduino ugyebár egy de facto "programozási szabvány". Azt mondja ki, hogy ha portolják egy kontrollerre, akkor bizonyos függvényeket, osztályokat kötelező az adott kontroller "nyelvén" megcsinálni, ami utána az "Arduino része" lesz. Ez nagyon nagy könnyebbség. Az STM32-re is portolták az Arduinot, elég jó is.
Az ESP32 kissé más, mint a többi:
Először is adott két mag. Azonkívül az általam ismert kontrollereknél a perifériák regisztereit memória címen símán elértem. Többnyire adott volt, hogy melyik periféria melyik lábhoz tartozik. Na, ez az ESP32-nél nem ennyire egyszerű. Bevezettek egy mátrixot, ezen keresztül lehet elérni a perifériákat. Ez nagyfokú rugalmasságot biztosít, mert bármelyik periféria bármelyik lábhoz kapcsolható, de egyben bonyolultságot is, mert meg kell mondanod,hogy mi mihez kapcsolódjon. Aztán, hogy még bonyolítsuk a dolgot, a perifériák alapállapotban "alszanak", pl. órajelet se kapnak.
Így még a hozzá tartozó regisztereket se tudod se írni, se olvasni. Először kell nekik órajelet adni, és resetelni, utána írhatók, olvashatók a regiszterei. Az órajel adás és a resetelés elvileg egyszerű: elérhető regiszterekben az adott perifériához tartozó bitet kell beállítani órajelhez, illetve törölni a resethez.
Igen ám, csakhogy az ESP azt nem mondja meg, hogy melyik perifériához melyik bit tartozik. Sebaj, kinézzük az illesztő programokból, gondolja Móricka. Viszont az illesztő programok lefordított assembly programok, aminek a forráskódját az ESP nem hozta nyilvánosságra eddig. Tehát a processzor közeli programozás még egy ideig macerás lesz. Az Arduino rendszerben viszont minden elég jól ki van dolgozva.
Tehát:
Az ESP megcsinálta az alapvető kezelést biztosító assembly nyelvű rutinokat.
Erre épülve készült el rá a freeRTOS. Ezt használja az IDF is. A freeRTOS-ra épülve portolták az Arduinora.
A freeRTOS függvényeit - általában - Arduino rendszerben is lehet használni, hiszen az Arduino "szabvány" függvényei is ebben íródtak.
Összefoglava:
Arduinoban programozása kényelmes, nagyon gyors, rengeteg a periféria, a két mag más programozási technikákat is lehetővé tesz, de ha processzor közeli módon akarod használni, az azért még jelenleg szívás. -
Janos250
őstag
válasz
ngabor2 #7385 üzenetére
Én ezt így oldottam meg:
https://www.aliexpress.com/item/Mantistek-WR300-Wifi-Router-Repeater-802-11N-B-G-Computer-Networking-Range-Expander-Wireless-300M-Roteador/32797460376.html?ws_ab_test=searchweb0_0,searchweb201602_5_10152_10065_10151_10344_10068_5000016_10345_10342_10343_10340_5060016_10341_5130016_10541_10084_10083_10304_10307_10302_10539_10312_10059_10313_5080016_10314_10534_100031_10604_10603_10103_10605_10594_10596_10142_10107,searchweb201603_31,ppcSwitch_5&algo_expid=207c876a-062e-40dd-9580-789d0625f104-2&algo_pvid=207c876a-062e-40dd-9580-789d0625f104&rmStoreLevelAB=1
Az egész házban mindenre van erős WiFi.Szerk: most vettem észre, hogy a készülék házról beszélsz. Arra persze nem jó, de azért a linket hagyom, hátha valakinek gyenge WiFi gondja van, mert arra nekem nagyon bevált.
Ehhez adnak antennát, de csatit nem látok a panelon. Pedig tényleg jó lenne bizonyos esetekben.
https://www.ebay.com/itm/4-MB-Flash-WEMOS-ESP-32-Lolin32-CP2104-WIFI-Bluetooth-Card-2-4G-SMA-Antenna/322918312671?hash=item4b2f6e6adf:m:mZNqIunaMOUkNkwzeHbjrCg -
Janos250
őstag
válasz
Janos250 #7348 üzenetére
Még annyit, hogy itt látható, mi van ez ESP-WROOM-32 hibrid chipben:
https://github.com/boseji/ESP-Store/blob/d80a4bafb5d0d2b9f78954681f995429110383d6/Ref-Designs/ESP-WROOM-32/SCH/sch.pdf
De ha magadnak akarsz gyártani, a gerber adatok is megvannak:
https://github.com/boseji/ESP-Store/commit/d80a4bafb5d0d2b9f78954681f995429110383d6 -
Janos250
őstag
Én most nem tudok olcsót, általában min 1500 Ft körül vannak.
A verziók gyakorlatilag megegyeznek. Az ESP32 ugyebár az alap chip. Amikor ez megjelent, akkor pár gyártó gyorsan el is kezdett vele lapot gyártani. Mivel nagyon vártam az ESP32-t, én is rendeltem gyorsan tavaly ősszel 9000 Ft-ért egy ilyen panelt, ami azóta is a fiókban hever. Akkor még nem volt megfelelő támogatás hozzá.
Igen gyorsan megjelent az ESP32S, ami egy hibrid tokozás fém tokban, tartalmazza az ESP32 chipet, flash memóriát, és még pár alkatrészt. Aztán gyakorlatilag ugyanezt elkezdte gyártani az Espressif is, ESP-WROOM-32 néven. Ma már ez gyakorlatilag egyeduralkodóvá vált, ezt érdemes venni. Amit ESP32S megjelöléssel hirdetnek, ma már azok is általában ezt tartalmazzák.
Pl.: https://www.ebay.com/itm/ESP32-ESP32S-CH340G-Development-2-4GHz-Dual-Mode-WiFi-Bluetooth-Module-Antenna/282633370924?epid=866775664&hash=item41ce42fd2c:geMAAOSwv-ZZ9YZE
Én pl. ezeket használom, mert szeptember elején ezeket lehetett 1200 Ft körüli áron megvenni. Nem volt vele gondom:
https://www.ebay.com/itm/ESP-32S-ESP-32-Development-Board-2-4GHz-Dual-Mode-WiFi-Bluetooth-Antenna-Module/302252239864?hash=item465fa32bf8:g3kAAOSwTM5Yx~38
A különböző gyártók által gyártott lapok között nem különösebben lényeges az eltérés. A lábaknak a panelra írt elnevezése különböző, de azt általában tartalmazza az Arduino IDE, ha a megfelelő panelt választjuk ki.
A hardware\espressif\esp32\boards.txt fájlban láthatjuk, mennyi féle laphoz van meg a saját támogatás, de az ESP32S-et választva se szokott gond lenni. A lábak elnevezése, stb. a hardware\espressif\esp32\variants könyvtárban található verzióként.
USB mindenképpen legyen rajta. Az USB chipek közül ki melyiket szereti, az ízlés kérdése. Megfelelő driverrel mind jól működik tapasztalatom szerint. -
Janos250
őstag
válasz
Janos250 #7317 üzenetére
Korrekció:
"A priorításokat is hiába variáltam, gyakorlatilag mindegy volt, hogy 1-es, vagy 24-es (25 a max) volt."
Nem 25 a max, hanem 24. (25 db. szint van, de a nullás is beleszámolandó)
Tehát 0 a legalacsonyabb prioritás, 24 a legmagasabb. (lehetne variálni, de minek) -
Janos250
őstag
válasz
Teasüti #7320 üzenetére
Nem a számolással van gond, mert mint írtam rá az assembly sort, azzal le lehet kérdezni a számlálót, ami egy másodperc alatt 240 milliószor lép, tehát igen nagy felbontású. Ez az utasítás behelyezhető egy C++ programba egy utasításként, tehát kényelmes magas szintű nyelven is.
-
Janos250
őstag
Na, akkor lássuk konkrétan, hátha mást is érdekel:
Láttam, hogy Teasüti egy kész könyvtárat használt a WS2812 led szalag vezérlésére. Innen jött az ötlet, hogy - játékból - kipróbáljam, hogy az elég bonyolult kész program helyett a "kézzel" való vezérlést használjam.
Ennek a szalagnak a vezérlése úgy történik, hogy a szalag minden egyes ledjéhez kiküldjük a saját színét, 24 biten. A kiküldés bitenként megy: pl. a 400 nanos hoszú impulzus jelenti a "0" értékű bitet, a 800 nanos az "1"-et.
Ha beállítok egy lábon magas sztintet, akkor ha ez 0 értékű bit, akkor 400 nano múlva kell levinnem alacsony szintre, ha 1 a bit értéke, akkor 800 nano múlva. Ezt kell ismételni a szalag minden egyes ledjére sorban egymás után, ahogy a szalagon vannak. Egy led színe 24 bit, tehát egy 100 ledből álló szalagra 2400 db. - az egyes led kívánt színei szerint - különböző hosszúságú impulzust kell kiküldeni.
Viszont, ha egy 400 nanos impulzus középén jön egy megszakítás, akkor mire "visszatér" a task, az már akár 800 nanos is lehet, tehát hibásan másik bitként értelmezi a led.
Na, ez talán a legtipikusabb példája az ESP32 "RTM" funkciójának. Az egyes impulzusok adatait feltöltöm egy megadott memória területre, és ráeresztem a hardvert, ami teljesen önállóan kiküldi ezeket az impulzusokat, igen nagy pontossággal, mert 15 biten írom le az impulzus hosszát. A 16. bit jelzi, hogy a megadott ideig L vagy H szinten kell lenni az adott lábnak.
Ezt nevezi az ESP32 RTM-nek. Eredetileg az infrás távvezérlők szimulálására ajánlják, mert lehet úgy programozni, hogy egy magasabb vivőfrekvenciát moduláljon az adott hosszal.
Tehát - mint írtam - nem egy élő projekt problémájáról van szó, hanem kíváncsiságról. -
Janos250
őstag
válasz
Teasüti #7315 üzenetére
Na, de ha pl. egy 500 nanos jelet akarsz kiküldeni kézzel, akkor beállítod a pint 1-re, aztán figyeled az időt és 500 nano múlva átteszed 0-ba, de lehet, hogy közben megszakít, és akkor az már nem 500 nano lesz! Mivel gyors a proci, ezért menne így, kézzel is, ha biztosan nem lenne szaggatás. Elvileg persze le lehet tiltani a megszakítást, de hiába tiltottam le, akkor is közbejön néha egy pici szaggatás. Próbáltam az egyéb taskokat is leállítani, de nem jártam sikerrel. Tehát, ha valamire NAGYON GYORSAN kell válaszolnod, az nem biztos, hogy nagyon gyors lesz. Tudom, persze, használjunk RTM-et, PWM-et, vagy interruptot, de a kíváncsiság hajtott.
Elvileg "until"-os időzítés is van, de nekem azzal se jött össze. A priorításokat is hiába variáltam, gyakorlatilag mindegy volt, hogy 1-es, vagy 24-es (25 a max) volt. Még jó, hogy csak kíváncsiságból játszogattam vele, nem éles dologban.
-
Janos250
őstag
válasz
Teasüti #7312 üzenetére
Hát, ezt éppen nem próbáltam. Elég érdekes ez a két mag, több task rendszer. Azért pár dolgot leírok, nem Neked, hanem azoknak, akik még most kezdik. Automatikusan a core1-re megy a loop. Azt úgy lehet áttenni a core0-ra, ha megkeressük a main programot, és átírjuk benne 0-ra. Megy, bár lehetnek gondok, pl. mindkét magnak - úgy tűnik - külön számlálója van, ezért vigyázni kell az időzítésekkel. A számlálót ezzel lehet olvasni:
__asm__ __volatile__("esync; rsr %0,ccount":"=a" (CycleCount32));
Ez 240 MHz-el jár, de csak 32 bites, ezért tizen.. másodpercenként átfordul. Én csináltam hozza egy 64-bitest, az már az unokám életében sem fog átfordulni. Viszont, mivel gyors, finom időzítéseket lehet vele csinálni. Elvileg. Ugyanis hiába próbálunk mindent átrakni a core1-ről a 0-ra, akkor is szaggat valami. Talán a saját szoftver számlálója, amit az xTaskGetTickCount()-al lehet olvasni. A 240 MHz-es számlálót írni lehet, de ne írd, mert megbolondul az időzítés. Hogy pontosan mi hol fut, azt nem lehet tudni, mert a vTaskList nem működik. Meg a statisztika sem. A taskok számát le lehet kérdezni, de nem sokra mentem vele, hogy tudom, hogy nálam 7 task van, amiből háromról tudom, hogy mi, a többiről nem. A taskról információt akkor lehet lekérni, ha tudjuk a "nevét". Na, ezt nem tudjuk. Az IRAM-ba rakással is vigyázni kell, mert amit oda pakolunk, csak az egyik magon futtatható. Na, így egy szuszra ennyit.
Egyébként, ha a specialitásait nem akarja kihasználni az emberfia, akkor nagyon jó kis proci, ajánlom mindenkinek. Két mag, gyors, multitasking, de hiába freeRTOS, nem igazán RT (real time), a már említett okok miatt. Előbb-utóbb csak megoldja valaki, hogy a core1-en ne legyen szaggatás, de ezt még a neten is keresik.
Ha mondjuk egy UNO-n futó programot teszünk rá, akkor természetesen ilyen gondok nincsenek, csak annyit tapasztalunk, hogy megy mint a szélvész. Ajánlom is mindenkinek, hiszen alig drágább mint egy kínai UNO, az eredeti UNO árából meg féltucatot vehetünk.
Neked:
Kíváncsiságból megnéztem az RTM kezelést, de csak megnéztem, mert elég macerásnak tűnik első látásra, pedig nagyon jó lenne. Berakja az ember egy külön memória területre az adatokat (1 bit, hogy hi vagy low, és 15 bit a hossz, az időzítés), és utána elindítja, és a hardver sorra veszi ezeket a 16 bites (32= 2*16) adatsorokat és öntevékenyen kiküldi a "PWM" jelet.
Az eredeti kérdésedhez: a static változókra mindenképpen vigyázz, mert az közös! -
Janos250
őstag
-
Janos250
őstag
válasz
Teasüti #7278 üzenetére
A Saleae tudja azt, már többször ajánlottuk:
https://www.ebay.com/itm/24MHz-8CH-USB-Logic-Analyzer-8-Channel-Logic-Analyzer-Compatible-to-Saleae/162134953459?hash=item25bfff0df3:g:Jz0AAOSwh2xYBDu5 -
Janos250
őstag
válasz
vargalex #7263 üzenetére
Ja, most jöttem rá, hogy mit írtál
Azt hiszem, érdemes lenne prohardver tanfolyamot tartani.
Nekem nem sikerült, az, ami Neked igen.
Persze más is van, ami nekem nem megy. Pl. nem tudok keresni, általában semmi eredményt nem ad vissza. Lehet, hogy azért, mert nálam a böngésző nagyon le van korlátozva a sok mocsok reklám blokkolása érdekében?
Na, közben kipróbáltam, tényleg jó a szerkesztés, ha program kódként adjuk megKösz!
Engem az zavart meg, hogy a szerkesztői ablakban még nincs változás. -
Janos250
őstag
válasz
Teasüti #7249 üzenetére
az esp32-hal-gpio.h-ban találod:
//GPIO FUNCTIONS
#define INPUT 0x01
#define OUTPUT 0x02
#define PULLUP 0x04
#define INPUT_PULLUP 0x05
#define PULLDOWN 0x08
#define INPUT_PULLDOWN 0x09
#define OPEN_DRAIN 0x10
#define OUTPUT_OPEN_DRAIN 0x12
#define SPECIAL 0xF0
#define FUNCTION_1 0x00
#define FUNCTION_2 0x20
#define FUNCTION_3 0x40
#define FUNCTION_4 0x60
#define FUNCTION_5 0x80
#define FUNCTION_6 0xA0
#define ANALOG 0xC0Látszik, hogy melyik bit mit jelent.
Ezt hogy lehetett volna úgy bevinni, hogy ne csússzanak el?
-
Janos250
őstag
válasz
Spuri2000 #7242 üzenetére
Első ránézésre:
az if (kapcsolo1 == HIGH) {
utáni két if nem tűnik tökéletesnek:
A pin2, pin11 állapotától függően vagy az egyiket, vagy a másikat volna célszerű végrehajtani.
A pint akkor is lehet olvasni, ha outputra állítottad, akkor azt adja vissza, amit utoljára kiírtál. -
Janos250
őstag
Mivel ESP-WROOM-32 van benne, nagy gond nem lehet. Ez az ESP32-nek a "gyári tokozott" verziója, tehát ez az alap. A display még egy kis hab a tortán, szerintem nagy gond nem lehet vele. Mondom én, aki még soha nem használtam a display-es verziót.
Eltérés abban lehet, hogy milyen lábszámok vannak a panelra szitázva, egyébként ugyanaz. -
Janos250
őstag
válasz
Teasüti #7208 üzenetére
"történt már veletek, hogy a watchdog reboot-ol, mert nincs etetve a Core 0-n?"
Igen :-(
Én megkerültem a problémát: A loopból hívom meg a taskot újra és újra, és amikor a task elvégezte a dolgát, kilép [vTaskDelete(NULL)].
Még nem igazán sikerült tisztán látnom kutya ügyében. Mindjárt az első, hogy ők hányan vannak: minden Core-nak, vagy minden tasknak van egy-egy? Aztán, hogy hogyan lehet törölni?
"Én eddig azt hittem az RTOS fel is tudja függeszteni az adott folyamatot, hogy cpu időt adjon a többi folyamatnak."
Én is azt hittem, de ez se igazán így van. Továbbá én korábban azt hittem, hogy a core1-en nincs megszaggatás, ott mehetnek a realtime dolgok. Na, ez se így van: ott is van interrupt.
Ezt írják:
"Also make sure you disable interrupt watchdog on CPU1 when not using RTOS" "(Also disable the tick interrupt app watchdog, as Ivan said, otherwise it'll complain.)" "A OS-Environment on CPU0,
and pure "undisturbed" power on CPU1."
Na, de ezt hogyan csinálom Arduino alatt? A szokásos Arduinos módszer még - úgy tűnik - nincs implementálva :-(
A PCNT_ENTER_CRITICAL használatában is vannak homályos dolgok. És még számos egyéb is."Amúgy nem gáz, hogy ezeket itt tárgyaljuk ki? Engem nem zavar, de nem tudom azoknak zavaró-e, akik a vanilla Arduino-n dolgoznak."
Miért nem? Szerintem azért, mert előbb-utóbb mások is áttérnek korszerűbb procikra az Arduino alatt, és így látják, mire térjenek át: ESP8266, ESP32, STM, stb.
Pl. ha én nem olvastam volna ezt a topicot, nem érdekelt volna a WS2812 led szalag. Azért kezdtem el kiváncsiskodni, mert itt olvastam. Vagy pl. Te se biztos, hogy ESP32-t használnál, ha nem olvastad volna ezt a topicot. Nekünk már volt belőle hasznunk. Reméljük másnak is.
Egyébként a topicnak van egy gazdája, ha nem akarja, hogy ilyesmiről itt szó essen, majd szól, hogy húzzunk el külön el topicba. Én így gondolom. -
Janos250
őstag
válasz
szuszinho #7199 üzenetére
Hú, akkor nem tudom :-(
Én amikor pár éve ráálltam az ESP-re, akkor már volt a 12E, ill. a NodeMCU klónjai, én azokkal kezdtem. Azokban van elég memória, hogy feltöltsük rá az Arduino rendszert. Megtanulhatod az ESP-n az AT parancsok használatát, de előbb-utóbb úgyis átállsz valami nagyobbra, és akkor már semmi hasznát nem veszed az AT parancsok ismeretének.
Én ezt
vagy ezt
Ezt még nem használtam, de nekem tetszik
Ezen meg van plusz GND, VCC, és I/O port csatlakozás, amiből mindig kevés van.Vagy ha egy kicsit több pénzt szánsz rá, akkor ez már alapvető minőségi ugrás
-
Janos250
őstag
válasz
szuszinho #7195 üzenetére
Az ESP8266 önmagában többet tud, mit az UNO.
Mióta portolták az Arduinot az ESP-re, azóta nem célszerű az AT parancsokat küldözgetni, hanem az UNO-n futó programot szőröstül/bőröstül átrakjuk az ESP-re, és azon futtatjuk. Az UNO-t meg eltesszük emlékbe.
Az AT parancsokkal a WiFit vezérelnénk, de az ESP-n a WiFi kezelésére kész osztályok vannak, amik SOKKAL kényelmesebbek.
Lehet, hogy valami régi irodalom alapján próbálod, amikor még így kellett?
Az UNO előnye az ESP8266-hoz képest, hogy több I/O portja van.
Ha kell a sok I/O port, akkor meg az ESP32 a célszerű. egy-két ezer Ft körül van ebay-en, attól függ, mikor és hol. Most 11.11-én ismét kb. 1300 Ft volt.
Az ESP8266-os lapból is van egy csomó, Neked melyik van? -
Janos250
őstag
válasz
Teasüti #7191 üzenetére
Ugye nem a másik topicban tárgyalt áthallásos problémát akarod szoftveresen megoldani? Mert az nem fog menni! Ez az átka a nagy energiatakarékosságnak, hogy olyan pici áramok mennek, hogy akár a Kossuth rádió is bezavar. Muszáj ellenállással mesterségesen megterhelni. Én a soros átvitelnél tapasztaltam ugyanezt: kb 20 centis vezeték a két IC között, és a csomagok 10-20 százaléka CRC hibásan érkezett.
Mit akarsz variálni?
"Az ESP32-n a HardwareSerial.cpp fájlba kell belenyúlnod. (hardware\espressif\esp32\cores\esp32)"
"int HardwareSerial::read(void)
{
if(available()) {akarmi =uartRead(_uart);
Itt megcsinálod amit akarsz
return itt meg adod neki ami jó Neked!
}
return -1;
}"Az szerintem nem lesz egy ördöngősség! Egyszerűen az uartRead(_uart); rész után csinálsz valamit, nem azonnal adod a returnnek.
-
Janos250
őstag
válasz
Teasüti #7188 üzenetére
Mélyrehatóan nem, de valami:
Az ESP32-n a HardwareSerial.cpp fájlba kell belenyúlnod. (hardware\espressif\esp32\cores\esp32)
A Stream osztály virtuális függvényként megadja, hogy minden gyerekének (pl az egyes processzorok serialjei) kötelezően miket kell tartalmaznia,
ezzel nagyjából biztosít egy bizonyos kompatibilitást.
(class HardwareSerial: public Stream)int HardwareSerial::read(void)
{
if(available()) {
return uartRead(_uart);
}
return -1;
}}
size_t HardwareSerial::write(uint8_t c)
{
uartWrite(_uart, c);
return 1;
}Mint látható, használják az esp32-hal-uart.c fájlból az uartRead-et az meg a hardware\espressif\esp32\tools\sdk\lib\xQueueReceive.a assembly fájl tartalmát.
Érdemes még egy pillantást vetni a HardwareSerial.cpp fájl include-ok utáni első sorára: HardwareSerial Serial(0);
Itt példányosítja előre a mi beavatkozásunk nélkül "Serial" néven a 0-ás UART-hoz kapcsolva. Ezért nem kell őt nekünk példányosítani. -
Janos250
őstag
Na, az UNO feeling kedvelőinek megjelent az ESP32 is "UNO-szerű" kivitelben:
https://www.ebay.com/itm/MINI-Wemos-D1-TTGO-UNO-R3-D1-R32-ESP32-CH340-WIFI-Bluetooth-Devolopment-Board-4M/263305416343?hash=item3d4e39ce97:g:ZRcAAOSwIJlaAZr4 -
Janos250
őstag
Srácok!
Valaki használta már ESP32-n a CCOUNT-ot? (getCycleCount(), vagy hasonlók)
A guta megüt vele, összevissza adatokat ad, és nem tudom, mi a bánatos Télapó a baja.
Ez egy uint32_t regiszter, ami az órajelciklusokat számlálja, de az uint32_t 240 Mhz-nél tizenegynéhány másodpercenként átfordul, tehát így időzítésre nem igazán jó.
Lehet resetelni (XTHAL_SET_CCOUNT(0)), úgy már jó lenne, de a getCycleCount() a program futása során ugyanarra az utasítássorra egyre nagyobb értékeket ad, még a delay() is egyre lassabb lesz. Mintha egyre csak lassulna, lassulna a gép.
Próbálta már valaki? -
Janos250
őstag
válasz
Teasüti #7140 üzenetére
Elnézve a macerát, kezd az az érzésem támadni, hogy igaza volt annak, aki megírta "gyalog" módszerrel a WS2812 RGB led szalag programozását az ESP32-re, mert az legalább egyszerű, és működik. Mivel nagy a sebesség, és van 2 mag, nem szorít az idő, hogy hardware alapon kezeljük a szalagot, bár kétségkívül az a szebb, ezért meg kellene próbálni, valami egyszerűbb, áttekinthetőbb megoldást találni rá.
-
Janos250
őstag
válasz
Tankblock #7119 üzenetére
Ki, de kiakadt.
A demo2 már sokkal logikusabb.
Teasüti, azt nézd!
https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers/tree/master/esp-idf
Ezt a részét tedd a setupba:
gpioSetup(16, OUTPUT, LOW);
gpioSetup(17, OUTPUT, LOW);
gpioSetup(18, OUTPUT, LOW);
gpioSetup(19, OUTPUT, LOW);
if (digitalLeds_initStrands(STRANDS, STRANDCNT)) {
ets_printf("Init FAILURE: halting\n");
while (true) {};Ezt meg a loopba:
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS;
rainbow(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}Minden egyéb mehet az elejére a setup elé.
A millis() és a delay() deklarációját kommentezd ki!
Innen:
https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers/tree/master/arduino-esp32/demo1a
esp32_digital_led_lib.h és a esp32_digital_led_lib.cpp fájlpkat másold be oda, ahol a programod van.
Új hozzászólás Aktív témák
Hirdetés
- Napi 1000 -ft tól elvihető RÉSZLETFIZETÉS BANKMENTES MSI Cyborg 15 A13VE
- MacBook felváráslás!! MacBook, MacBook Air, MacBook Pro
- 127 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080 (ELKELT)
- 100.000 ft -tól Országosan a legjobb BANKMENTES részletfizetési konstrukció! ASUS ROG Strix G18
- BESZÁMÍTÁS! ASUS H170M i7 6700 16GB DDR4 512GB SSD GTX 1660 Ti 6GB KOLINK Observatory Lite TT 500W
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest