- Milyen egeret válasszak?
- Nvidia GPU-k jövője - amit tudni vélünk
- Google Chromecast topic
- Milyen monitort vegyek?
- Milyen SSD-t vegyek?
- A Battlefield 6-tal tenné vonzóbbá Core CPU-it és Arc GPU-it az Intel
- OLED TV topic
- Nem indul és mi a baja a gépemnek topik
- Milyen notebookot vegyek?
- Épített vízhűtés (nem kompakt) topic
-
PROHARDVER!
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
-
-
olli
tag
válasz
Undoroid #20623 üzenetére
esp32
c:\Users\win11\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\libraries\WiFi\
c:\Users\win11\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\libraries\SPI\
avr
c:\Users\win11\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SPI\
saját
c:\Arduino\libraries\
IDE2.1
c:\Program Files\Arduino IDE\
A saját telepítési útvonalaidat nézd át, ugyan az a könyvtár előfordulhat több helyen, ill. látni kell a meglevő könyvtárakat. -
olli
tag
Boot folyamatosan nyomva, reset egyszer, boot felengedve a futó kijelzés leáll.
Továbbra is hiba a feltöltésnél.
A fatal error occurred: Failed to connect to ESP32: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Failed uploading: uploading error: exit status 2 -
-
Hát ennek a történetnek egyre kevésbé van értelme.
Az eszközkezelőben "Adafruit Feather 32u4" driver látszik, ami az ATmega32u4 chip drivere.
Az ATmega16u4 az eredeti UNO board-on az USB-UART szerepét töltötte be, amit a kínai klónokon CH340 és hasonló chipekkel helyettesítettek. Ennek a nagyobb testvére az ATmega32u4.
Hol van ez a chip?
Hol van a LoRa modul? Mindkettő a kijelző alatt lenne? 🤔A fényképen ESP32 dowdq6 chip látható, ami az alap ESP32, és természetesen nincs USB képessége.
Akkor mi a fene kommunikál közte és a PC közt? -
Wolfram
aktív tag
Hogy lehet az ADC bit szélességet csökkenteni ESP32S2-n, ez:
adc1_config_width(ADC_WIDTH_BIT_10);
miért dob: "Compilation error: 'ADC_WIDTH_BIT_10' was not declared in this scope" hibát? 😥 -
Wolfram
aktív tag
A hiba itt van leírva:
https://github.com/esphome/issues/issues/4368
ESP32-S2 (2db) nem csatlakozik a wifihez, auth expired hiba.
Valaki szakérti a megoldást:
"adding the 0.1uF capacitor on the S2 mini between 3V3 and EN"
Mire jó ez? Mit old meg? Aryes: van 0.1uF kondenzátorod? -
olli
tag
válasz
Wolfram #20534 üzenetére
In file included from c:\Arduino\libraries\WifiEspNow-main\src/WifiEspNowBroadcast.h:4:0,
from C:\Users\win11\AppData\Local\Temp\.arduinoIDE-unsaved2023430-7448-16to7q4.ddff\EspNowBroadcast\EspNowBroadcast.ino:15:
c:\Arduino\libraries\WifiEspNow-main\src/WifiEspNow.h:16:10: fatal error: cstddef: No such file or directory
#include <cstddef>
^~~~~~~~~
compilation terminated.
exit status 1
Compilation error: exit status 1LoRa32u4
Igen, ha minden passzol, de nem mindig.
[link] -
olli
tag
Lelkes amatőrként törekednem kell a megfelelő befektetés/haszon arányra.
Van egy hardwer gyártó, saját programozó platformmal, megtanulod, jön egy másik, meg újabbak. Standardok, szabványok, á minek.
Ezért kérdeztem a LoRa32u4 kapcsán más platformra.
Arduino alatt is sikerült a két esp közötti csomagküldésben a vezérlés megvalósítása, és ez volt a lényeg. -
olli
tag
válasz
Wolfram #20525 üzenetére
ESP32-S2 WiFi+Bluetooth-compatible Internet Of Things Dual Type-C Development Board Core Board ESP32-S2-MINI-1 For Arduino5.09 Reviews56 SoldHUF 1,633.89HUF 1,993.4218% off
ESP32-C3 Development Board WiFi+Bluetooth 5.0 Equipped With ESP32-C3-MINI-1 ESP32 Wifi Internet Of Things Module For Arduino5.04 Reviews28 SoldHUF 1,160.45HUF 1,320.6412% off
Én meg ezeket az árakat találtam, de mindegy.
Már érdeklődtem a programozásukról, most az espressif esp-idf és az arduino ide közötti lehetőségeket néztem, nekem a parancs mód nem nagyon fekszik. -
Wolfram
aktív tag
ESP32-C3-al van valakinek tapasztalata? Miért kerül kétszer annyiba mint az ESP32-S2?
-
olli
tag
Korábban már érdeklődtem az arduino esp-now protokolról, van valakinek tapasztalata ezzel kapcsolatban,
Egy LoRa32u4 BSFrance modulon néztem, az arduinos működéshez milyen könyvtárak kellenek? -
-
válasz
Undoroid #20472 üzenetére
Ha kimondottan szeretnél rá kijelzőt l'art pour l'art, akkor jó a Nokia is, lehet rá grafikont is rajzolgatni, de teljesen felesleges. Inkább mondanám az ESP32-t, abban van RTC is, nem kell külön venni, netre kötve az órát szinkronizálni lehet, és olyan csillivilli webes felületet csinálhatsz hozzá, amit nem szégyellsz, gombok és kijelző helyett.
Ráadásul ha ügyes vagy, még riasztást is tudnál vele küldeni (emailben vagy mondjuk telegram-on) az akkumulátor állapotáról, ha van ilyenre igény. -
válasz
its_grandpa #20473 üzenetére
A táp választást mivel indokolod? Ez egy step-up modul, az esp számára teljesen alkalmatlan, mivel lefelé nem tud konvertálni, csak felfelé.
-
its_grandpa
tag
-
Undoroid
őstag
Nagyon csendben vagytok, kedves szakik! Feldobok egy témát, hátha tudtok segíteni...
Szóval a feladatom az lenne, hogy egy 12V 100Ah savas akku feszültségét szeretném folyamatosan figyelni és a kapott adatokat lementeni addig, amíg be nem telik az átmeneti tároló epromja! Ezután a legrégebbi adatokat felülírná a legfrissebbel! A fesz. értékeket pedig -ha már szó esett róla- egy Nokia LCD-n szeretném megjeleníteni grafikus kijelzéssel és a mérési idő is kellene rá! Mivel sok adat lenne egyszerre a kijelzőn, ezért nyomógombbal léptetni is kellene! Nem kellene precíziós pontosságúnak lennie, pusztán tájékoztató/ellenőrző jellegre kellene! Egy egyszerű, kicsi kapacitású, napelemes szigetüzemű rendszer akkumulátorát szeretném rajta figyelemmel kísérni!
Ti, gyakorlottabb szakik! Milyen elemekből építenétek föl ezt az egészet? Néhány alkatrésszel rendelkezem! Mikrovezérlő (ESP vagy NANO), Nokia kijelző, 8csatornás szintillesztő, óramodul+eprom az adatokhoz, nyomógombok, stb...
Köszönöm az ötleteket!
-
olli
tag
válasz
vargalex #20469 üzenetére
Kiíratás:
Received packet :1 HELLO 36.50 34.00 38369' with RSSI -99 Status: 1 BOILER
vagyis így már egy csomagból működik a pin 13 vezérlése is.
Korábban rákérdeztem az ESP-NOW vonalra a két esp közötti kommunikáció egyik protokolra. A jelen megoldás és az között stabilitás és kidolgozottság lenne csak a különbség? -
olli
tag
loRa sender codban:
sensors.requestTemperatures();
float T1 = sensors.getTempC(D0);
float T2 = sensors.getTempC(D1);
Serial.print("Sending packet: ");
Serial.println(counter);
// send packet
LoRa.beginPacket();
LoRa.print(state);
LoRa.print(" ");
LoRa.print("HELLO");
LoRa.print(T1 );
LoRa.print(" " );
LoRa.print(T2 );
LoRa.print(" ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
ESP32u4 receiver codban:
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print("Received packet :");
// read packet
while (LoRa.available()) {
Serial.print((char)LoRa.read());
}
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
A packetből hogyan lehet a state értékét kinyerni?
-
Janos46
tag
Sziasztok.
Jó régen foglalkoztam a témával. Ismét szeretnék egy ESP8266/DHT11-et működésre bírni. Még megvannak a megfelelő könyvtárak, da ha elidítom, akkor már az ellenőrzésnél a következő üzenetet kapom:
In file included from C:\Users\Jano\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:33:0,
from C:\Users\Jano\Documents\Arduino\ESP8266_DHT11_WiFi_1\ESP8266_DHT11_WiFi_1.ino:4:
C:\Users\Jano\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:26:10: fatal error: queue.h: No such file or directory
#include <queue.h>
^~~~~~~~~
compilation terminated.
exit status 1
Hiba a(z) Arduino Uno alaplapra fordításra.
==========
Tudnátok segíteni hogy mi a gond? Előre is köszönettel: János -
Janos250
őstag
válasz
lanszelot #20426 üzenetére
Az ilyen multishieldek alapvetően jók, sok minden van rajtuk. Ha nem a gyári programját használod, akkor valóban jó lesz sok mindenre.
Viszont idővel majd bizonyára átállsz az UNO-nál korszerűbb lapra, és akkor látod majd, mennyivel egyszerűbb lesz az életed, nagyjából ugyanannyi pénzből.
Breadboard:
Én ezért csináltattam az ESP32-mhöz panelt, amin sok minden rajtavan, és ha lehet, azt használom. Terveztem már a neten fennlévő, egészen jónak tűnő panelt is csináltatni, de egyelőre az még elmaradt. A 10 db. panel volt 5 $ (0.5 $ /db. , ha 10-et csináltattam.) igaz, hogy 3-4-nél többet nem használok, a többi megy a szemetesbe, de így is sokat segít. Bár a szállítás sajnos elég drága. -
Janos250
őstag
Köszi, azt hiszem, valami ilyesmi lesz. Ilyen DC/DC-m van pár, de nem is kell a 3 potis, elég az 1 potis is, mert pl. áramkorlát nem kell.
Vagy tényleg 3 potis, és akkor az "indokolatnul nagy kondi", egy Li akku lesz, ami állandóan rajta lesz a töltőn, és az áram lekapcsolásakor is működik egy darabig.
Egyébként egy riasztó része lesz.
A mai "olcsó" kínai kamerák zöme is tudja az emberi alak felismerést, valamint nem csak mailre, hanem riasztó szerverre is tud küldeni egy karaktersorozatot TCP-n.
Ez a szerver egy ESP32 + SIM800 lesz, ami megcsörgeti a zsebemben lévő (buta) telefont, amivel telefonálni szoktam. Nem veszem fel, mert akkor ingyenes.Erre előveszem a táskából az okostelefont, bekapcsolom, és megnézem neten a kamerát, hogy a sok gyerek közül melyik az, amelyik megint le akarja verni kalapáccsal a vasszekrényről a lakatot.
-
Janos250
őstag
ESP32 + SIM800
ESP32 3.3 V, azzal nincs gond, de a SIM800 az 4V-os, és nem megy 3.3-ről, az 5V-ot meg nem bírja el. Viszont STABIL, és 2A (peek) kell neki. Ezeket Li akkukhoz illesztik, de én nem akarok akkut pluszba betenni.
Kinek milyen ötlete van, hogyan csináljak lehetően egyszerűen 4V, 2A-t? LDO-t nem találok 4V-ra, pedig az volna a legegyszerűbb.
DC/DC elég stabil ehhez vajon? -
Tomika86
senior tag
Sziasztok!
4MB Flash méretű ESP32 esetén amikor fordítok miért csak ennyit ír ki?
Flash: [======== ] 79.7% (used 1044901 bytes from 1310720 bytes)
Lehet valahogyan növelni a felhasználható flash méretet a programhoz?
Arduino IDE alatt van valami partició méret állítási lehetőség, de PlatformIO alatt nem tudom hol kell.
Tennék a programba még egy kis újítást, de 103,9% lett.
(van OTA frissítésem a programban már)
Köszönöm! -
fpeter84
senior tag
válasz
Janos250 #20354 üzenetére
éppen turkálom egy A6 C5 canbus hálózatait (elsősorban a powertrain vonalat), térképezgetem fel hogy milyen adatokat tudok onnan kinyerni, és azon agyaltam hogy hogyan lehetne a legjobban megjeleníteni őket, ha valami kis LCD-nél többet akarok? saját program windows-os tableten/laptopon? vb6 és delphi7 amivel utoljára játszottam...
vagy androidos program a fejegységen? ahhoz se konyítok, eddig a MIT app inventor volt a legmagasabb szint, de abban agyhalál lenne ennyi mindent össze puzzle-özni... ekkor jutott eszembe, hogy mi lenne ha egy ELM327-et emulálva a droidos Torque jelenítené meg a dolgokat? elkezdtem guglizni hogy hogyan is néz ki a protokoll, mi lenne a minimum amivel át tudnám verni az app-ot, erre belefutottam ebbe a szuper kis projektbe... Nano+HC06 BT adapterrel működött is pöcc-röff, de mivel a canbus-ról összeszedett adatokból szeretném etetni, a legkézenfekvőbb az lenne ha a natív BT-s és CAN-es ESP32-vel menne, esetleg a 2 CAN miatt a DUE+HC06... de sajnos sosem álltak össze a fejemben igazán tökéletesen ezek az objektum-orientált dolgok, csak totózok kísérletezek aztán van amikor sikerül ráérezni, de most sehogy sem akar menni...
-
Wolfram
aktív tag
ESP8266 újraindul 40-50 percenként.
ESP.getResetInfoPtr()->reason 4-es kódot mutat.
A kódban nincs reset parancs, mitől indulhat újra? Úgy tűnik nincs exception mert akkor 2-es lenne a kód. -
fpeter84
senior tag
Sziasztok!
Tudna valaki segíteni abban, hogy ezt a motorvezérlő+ELM327 emulátor lib-et hogyan tudnám átültetni hardveres sorosportra? Eredeti formájában Nano-val softserial-al működik, de szeretném vagy egy Due-n használni aminek van 2 CAN-je is, vagy esetleg ESP32-n a belső kékfoggal és CAN-el...
Amivel eddig próbálkoztam: OBDSerialComm.h -ban a 65-dik sorban lévő softserial sort lecseréltem erre: HardwareSerial *serial; valamint az OBDSerialComm.cpp -ben az 5-8 sorokat felcseréltem erre:
setBaudRate(9600);
// serial = new HardwareSerial();
serial->begin(9600);
serial->setTimeout(SERIAL_READ_TIMEOUT);
Valamint az #include után beszúrtam még egy HardwareSerial & serial = Serial1; -t... De arra nem tudok rájönni, hogy a serial=new... sorral mit kellene kezdeni - HardwareSerial()-al nem eszi meg. így fagy a vas, még egy Hello World kiiratásáig se jut el rögtön a setup elején...
Próbálkoztam egy olyan verzióval is, hogy a .h-ból teljesen kikommenteltem a 65-ös sort (nem próbáltam átírni) és helyette ez lett a .cpp-ben: [link] a módosított sorok végére // ### jelölést tettem hogy meg lehessen találni... Ezzel a módosítással lefordul a példa .ino, de nem reagál a kékfog adapterről érkező kérésekre. Természetesen a kapcsolás működik, serial passthrough kóddal látom ahogy a Torque próbál kérdezgetni az ELM-től az AT parancsokkal...
Ha valaki nagyon unatkozik, bele tudna nézni hogy hogyan lehetne feléleszteni? -
#68216320
törölt tag
Üdv.
Szeretek retro számítógépekkel bíbelődni és ehhez hozzátartozik a floppy lemez használat. Valódi lemez, nem emuláció.
Azonban szükségem van USB-s floppy meghajtóra. Sajnos az újabban beszerezhető usb-s floppy meghajtók minősége elég nagy szórást mutat, így a tervem az, hogy a hagyományos drive-ot illeszteném usb-n a modern pc-hez.Ismertek esetleg STM32 vagy ESP kontrollerrel (ezek vannak itthon) egyszerűen megvalósítható megoldást?
A régi drive-ból maradt egy ilyen vezérlő, de nem látszik rajta semmi. Van info, hogy mi lehet ez? [kép]
-
cog777
senior tag
Keresgeltem, de nem talaltam topikot a kerdesemre, remelem maradhat. Szoval, elhataroztam hogy ujraszervezem a hazi homeros projektemet, jelen pillanatban van egy ESP32 amely szerverkent funkcional megjeleniti egy LCD-n a kulonbozo ESP8266-ok altal kuldott adatokat, homerseklet, paratartalom.
Ezt a felallast szeretnem kivaltani egy okosabb rendszerrel. Elsosorban kellene riasztas vagy emal-ra, vagy telefonra ha a benti homerseklet eler egy kuszoberteket.
Amit most kigondoltam hogy az RPi lesz a szerver, es pythonnal kuldhetek email. Viszont vannak okosabb IoT rendszerek de ezeket nem ismerem. Van valami otletetek hogyan tudnam megoldani?
Talaltam IoT dashboard-okat de azok kb 10 dollartol kezdodnek havonta, nemelyiknek mobilos app-ja is van.
IFTTT-t nem ismerem, lehet hogy ez segit? pl email notification?
https://anthscomputercave.com/tutorials/ifttt/using_ifttt_web_request_email.htmlTovabba egy IoT dashboardot is keresek, aminek van mobilos app-ja, regebben volt ingyenes par eszkozig, de most nem talalok. Korabban csinaltam magam, bereltem egy szervert es domain nevet, grafana-t futtattam, de erre mar nincs idom, valami kulcsrakeszebb kellene.
Talan ti is hasznaltok ilyen IoT riaszto/dashboard szeruseget. Elore is koszi a tanacsokat.
-
cog777
senior tag
Vannak itt ott a lakasban es a kertben ESP8266 moduljaim, 4xAA aksival, dobozozokban. Ezek merik a homersekletet es kuldik egy ESP32-nek, amelyik megjeleniti az ertekeket.
A kertiek fel orakra elalszanak, 70uA-t fogyasztanak igy, kb 4-6 honapot siman mennek aksiva. Probapanelokra raktam az procikat es az alkatreszeket.
Par eve remekul mukodnek, de mosnanatba vettem eszre hogy nemelyik nem kapcsol be, pedig frissen toltott aksikat raktam be. Szerintem eselyes hogy a probapanelok korrodalodtak. A benti modul rendben mukodik.
A kinti homerseklet szenzorokat akarom valami megbizhato megoldasra cserelni.
Tud valaki kesz homerseklet modulokat (zart, kintit, elemmel v aksival mukodo), amelyek valamilyen ismert protokollon kuldik az adatokat es azokat tudnam feldolgozni?A szervert szivesen epitem en tovabbra is, nem kifejezetten konyhakesz rendszerben gondolkodom.
-
Wolfram
aktív tag
Foglalkozott már valaki hang rögzítéssel ESP-n?
Ha lementem a nyers analóg mikrofon értékeket egy file-ba, azt fel tudom valamivel dolgozni PC-n? (átkonvertálni wav vagy mp3 formátumba) -
Tomika86
senior tag
Ezt megnézem mit tehetek, mert az esp32-ben nincs pontos időm tárolva. akkor maximum azt teszem az x tengelyre, hogy mióta van megnyitva a kapcsolat. Igazából lényegtelen, hogy mikor történt bármi is, csak legyen viszonyítási alap.
Viszont most munkahelyemen kipróbáltam és simán viszi 50ms-et, hiba nélkül. Ezek szerint kliens oldalon se mindegy mi van.
-
Tomika86
senior tag
válasz
vargalex #20205 üzenetére
Szia!
Te nagyon kened vágod a témát, tudsz esetleg segíteni abban, hogy websocket segítségével, miért nem tudok 100ms alatti intervallummal adatot küldeni?
jelenleg van egy programom amit megcsináltam offline elérhetővé, illetve összerakosgattam a javascript kódot is.
Jelenleg 110ms-al próbálkozok (ezzel jó is), a szinusz és koszinusz csak teszt.
Jobb lenne ha 100ms alá tudnék menni, viszont ilyenkor megbolondul az ESP32, heap error, lefagy az adatátvitel, újraindulgat.Az a helyzet, hogy szeretnék kb 5 grafikont, és jelenleg még csak 2 van (de így se elég gyors).
[link]
src mappában a fájlokKöszönöm, ha bármiben tudsz segíteni, ötletet mondani. Illetve tuti találsz benne hülyeséget is, amit én nem tudok még.
-
Wolfram
aktív tag
ESP32-S2-n Ard IDE feltöltés után nem indul a progi (nem ír hibát az output-ban), csak ha megnyomom kézzel a reset gombot, valami rémlik korábbról de nem jut eszembe mi volt a megoldás?
-
Wolfram
aktív tag
válasz
Janos250 #20200 üzenetére
Valami ilyesmire gondoltam (kézi számolással demonstrálva):
long sinceSec =esp_timer_get_time()/1000000;
long min = sinceSec / 60;
long sec = sinceSec % 60;
Serial.printf(" ESP32 running since: " + min + " minutes " + sec + " seconds");de nem ismerem a C string formázást, vagy hogy a dátum objektumnak van-e valamilyen parse funkciója ami kiszámol egy komplett Dd HH:MM:SS dátumot.
-
Janos250
őstag
válasz
Wolfram #20199 üzenetére
"Hogy lehet ESP32-n nanosecond-ot /system_get_time()/ dátummá alakítani? "
Az biz' macerás lesz!
1. a 80 Mhz-es perifériális órajelet számlálja (ha az, amire én gondolok)
2. időnként túlcsordul -> átfordul
3. tudni kell valami kezdő időpontot, onnan tudod számolni
Én régen így oldottam meg, lehet, ha ma újra használnám, már másként csinálnám:
http://arduinouser.hu/esp32/ccount/ccount.txt
Ez persze csak a túlcsordulást/átfordulást kezeli, ettől még nem lesz dátum.Elvileg ez létezik, de még nem próbáltam
std::string s = date::format("%F %T", std::chrono::system_clock::now()); -
Wolfram
aktív tag
ESP-ben vannak thread-ek? Tudok valamit futtatni úgy hogy az nem blokkolja a loop-ot?
-
válasz
Wolfram #20171 üzenetére
Nem lehet, hogy nincs egyetlen delay sem a loop-ban és emiatt nem tud a CPU a wifivel foglalkozni? Bár ez ha jól tudom, ESP8266-ra jellemző, te meg ESP32-t használsz, de hátha ez a gond, egy próbát megér.
ESP-n a delay máshogy működik, más funkciót tölt be, mint az AVR-eken. -
Janos250
őstag
válasz
Wolfram #20171 üzenetére
Ezért nem használom én a többféle http fv. egyikét sem. Mivel egyszerű, magam írom meg hozzá kezelést.
Ha minden kötél szakad, akkor be kell tenni a fv-t a .ino mellé, esetleg át is nevezni, azt includolni, mert abba akkor tehetsz magadnak átmenetileg kiíratást, hogy mi a nyűgje.
Az ESP32 16 darab klienst tud kezelni. Nem forduhat elő, hogy többet nyitsz meg, mert még a régiek is élnek, mert nem kaptak választ?
Nincs benne olyan lehetőség, hogy csak akkor get-elj, ha van is ot valaki, aki várakozik?
Próbáld meg kiíratni az FD-jét, ha túlszalad a 63-on, akkor ez a baj. -
Wolfram
aktív tag
Ez az a kód ami miatt folyamatosan resetel az ESP (nem látni exception-t a serial monitoron) :
HTTPClient http;
http.begin(url);
int httpResponseCode = http.GET();egy idő után feladja a resetelgetést és lehal az egész lap.
Valaki szakértsen mi a gond ezzel a kóddal. -
-
Tankblock
aktív tag
válasz
Wolfram #20104 üzenetére
C++ try() catch() nekem tesztek alatt működik esp-idf et használok (configurálni kellett a sdkconfigot is hozzá), lehet dobni hibát throw() , arra nem esküszök meg hogy ESP_ERROR_CHECK makróra is tud e dobni, nálam működött....
másik megoldás a JTAG pl : [link] bár ezt még nem használtam, ha lesz ráidőm kipróbálom majd.
-
-
Wolfram
aktív tag
Amikor egy lap (ESP32) lefagy, milyen lehetőségek vannak a debugolásra?
Lehet a fagyást kódból kezelni, pl.: letárolni az utolsó hibát valahova? -
Janos250
őstag
válasz
lanszelot #20035 üzenetére
Ne delay-el old meg, hanem egy max6675 olvasás után tárold el a ms értéket, és csak akkor olvass, ha az aktuális ms, és a letárolt közti különbség nagyobb egy megadott értéknél. A gomnyomást meg állapotban tárolhatod, és ha állapot is, ms is jó, akkor alvasol.
Ha egyszer átállsz ESP32-re, akkor ez egyszerűbb lesz. -
its_grandpa
tag
válasz
KoVee84 #19967 üzenetére
Bocs de ez így egy ~ 130 soros borzalom.
A case ágak 0-3 ig ugyanazok, csak a név kiírása miatt van benne "magic number" azaz a texts[n].
Ez kb. a fele, 65 sor és remélem ugyanazt csinálja.int vref = 1100;
const char* persons[] = {"Kovács","Könözsi","Csepura","Németh"};
const uint64_t egy_nap = 86400000000;
RTC_DATA_ATTR unsigned int reboot_counter = 0;
void setup()
{
Serial.begin(115200);
delay(10);
epd_init();
delay(10);
// Correct the ADC reference voltage
esp_adc_cal_characteristics_t adc_chars;
}
void loop()
{
int persons_no = reboot_counter; // csak a szépség kedvéért
if reboot_counter < 4:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (persons[ persons_no]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
else if reboot_counter = 4:
{
epd_poweron();
delay(10);
int cursor_x = 550;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, ("SZELEKTÍV KUKA"), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 6);
esp_deep_sleep_start();
}
else
{
esp_restart();
}
} /* loop */
A switch ágak végére meg illenék a break csak a megszokás miatt.
(ez a notepad++ ból történő másolás, kódformázás nem lett az igazi, bocs)
-
KoVee84
senior tag
válasz
KoVee84 #19966 üzenetére
#include <Arduino.h>
#include "epd_driver.h"
#include "font/firasans.h"
#include "font/opensans72eb.h"
#include "esp_adc_cal.h"
#include "pins.h"
#include "time.h"
int vref = 1100;
const char* texts[] = {"Kovács","Könözsi","Csepura","Németh"};
const uint64_t egy_nap = 86400000000;
RTC_DATA_ATTR unsigned int reboot_counter = 0;
void setup()
{
Serial.begin(115200);
delay(10);
epd_init();
delay(10);
// Correct the ADC reference voltage
esp_adc_cal_characteristics_t adc_chars;
}
void loop()
{
switch (reboot_counter)
{
case 0:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[0]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 1:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[1]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 2:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[2]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 3:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[3]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 4:
{
epd_poweron();
delay(10);
int cursor_x = 550;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, ("SZELEKTÍV KUKA"), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 6);
esp_deep_sleep_start();
}
case 5:
{
esp_restart();
}
}
} -
KoVee84
senior tag
Nem raktam deep sleepet...
órakezelésben tudtok segíteni?
Íme a kód:#ifndef BOARD_HAS_PSRAM
#error "Please enable PSRAM !!!"
#endif
#include <Arduino.h>
#include "epd_driver.h"
#include "font/firasans.h"
#include "font/opensans72eb.h"
#include "esp_adc_cal.h"
#include "pins.h"
#include "time.h"
int vref = 1100;
const char* texts[] = {"Kovács","Könözsi","Csepura","Németh"};
const unsigned long het1 = 604800000UL;
const unsigned long het2 = 1209600000UL;
const unsigned long het3 = 1814400000UL;
const unsigned long het4 = 2419200000UL;
const unsigned long szelektiv = 2332800000UL; // utolsó nap
//teszt
//const uint32_t het1 = 20000;
//const uint32_t het2 = 40000;
//const uint32_t het3 = 60000;
//const uint32_t het4 = 80000;
//const uint32_t szelektiv = 70000;
void setup()
{
Serial.begin(115200);
delay(10);
// Correct the ADC reference voltage
esp_adc_cal_characteristics_t adc_chars;
epd_init();
epd_poweron();
epd_clear();
delay(10);
// első hét
//feszültség
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
//név
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[0]), &cursor_x, &cursor_y, NULL);
epd_poweroff_all();
}
void loop()
{
unsigned long currentMillis = millis();
switch (currentMillis)
{
case het1:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[1]), &cursor_x, &cursor_y, NULL);
epd_poweroff_all();
break;
}
case het2:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[2]), &cursor_x, &cursor_y, NULL);
epd_poweroff_all();
}
case het3:
{
epd_poweron();
epd_clear();
delay(10);
uint16_t v = analogRead(BATT_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
String voltage = "Feszültség: " + String(battery_voltage) + "V";
Serial.println(voltage);
int cursor_x = 60;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[3]), &cursor_x, &cursor_y, NULL);
break;
}
case szelektiv:
{
epd_poweron();
delay(10);
int cursor_x = 550;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, ("SZELEKTÍV KUKA"), &cursor_x, &cursor_y, NULL);
epd_poweroff_all();
break;
}
case het4:
{
esp_restart();
}
}
} -
vargalex
félisten
válasz
KoVee84 #19938 üzenetére
Mire iratod ki az adatokat? Ha nem e-ink kijelzőre, akkor ugye a kijelzés is harap erősen az akkuból.
Egyébként, ha e-ink, akkor ahogy a kolléga mondja, deep sleep-be kell küldeni az ESP32-t (én ESP8266-al csináltam percenként ébredő hőmérőket, amik 10 percenként wifi-re is csatlakoznak és post-olják az addig mért adatokat, azok egy 18650-es cellával 3-4 hónapig elvannak) és időzítve ébreszteni.Szerk.: mondjuk a developer board-ok nem biztos, hogy ideálisak a feladatra, mivel ha az ESP-t deep sleep-be is küldöd, attól a körítés, ami a lapon van, fogja enni az akkut. És nem biztos, hogy maga az ESP a legnagyobb fogyasztó. Én csupasz ESP12E-kett használtam a projektemhez.
-
válasz
KoVee84 #19938 üzenetére
Ez jól hangzik.
Nem ismerem ezt a kütyüt, csak a fotó alapján látom, hogy ESP32 van rajta, és abban van RTC modul, ha nem is a legpontosabb. Arra viszont szerintem pont jó, hogy felébressze a cuccot mondjuk minden éjszaka, NTP szerverről frissítse magát és visszaaludjon. Szívesen segítenék, de ESP-ben nem vagyok különösebben jártas, és a kütyü nélkül tesztelni sem tudnám, de ha ide beteszed (ha hosszú, töltsd fel valahová) akkor biztos megoldjuk.
-
válasz
lanszelot #19910 üzenetére
Ez a képen fogalmam sincs, hogy micsoda, de talán sejtem, mire gondolsz. Az Arduino előtt pár évig foglalkoztam PIC mikrokontrollerrel (PicKit2, 16F877 μC), a hozzá való szoftvert és programozót mai napig használom attiny μC-k felprogramozására, illetve debugolásra. Na most, hasonlóan az Arduino-hoz, azt is C-ben kell programozni, igaz ahhoz saját fejlesztőkörnyezet volt, és közel sem ennyi library és példakód, de a logikája némileg hasonló (regiszterek használata, portok kezelése). De azt azért túlzás lenne állítani, hogy aki az egyiket tudja, az a másikat is, kb mintha azt mondanám, hogy aki tud biciklizni, az tud repülőt is vezetni.
Más kérdés, ha egy adott μC-t integrálnak az Arduino ökoszisztémába (STM32, ESP).
-
vargalex
félisten
válasz
Tomika86 #19896 üzenetére
ESP oldalról válaszolod az átirányítást (ezt látnod is kell a böngészőben developer módban a network fülön, ahogy minden más választ is), de azt ajax hívás esetén a böngésző nem követi, azaz neked kell a javascript-ben a location-t beállítani. Ennek a résznek nincs köze az esp-hez, tisztán böngésző/javascript működés.
-
Tomika86
senior tag
válasz
vargalex #19893 üzenetére
Az esp32 kódjában lenne az átirányítás (nem a javascriptben)
Ahol a send(400, "text/plain", "FAIL CONNECTION")(sima szöveg küldés böngészőre)
de próbáltam ezzel is
request->redirect("/nextion_fail");
És ehhez megvan a hozzátartozó http_get kérés, ahol a html kódot küldöm el.
Ez a nextion.cpp az other mappábanDe akkor valamit félreértek, illetve teljesen máshogy kell csinálni.
Az ajax kód jó így.
Az esp32nél a post kódnál ahol ellenőrzöm a check_status értékét, ott egy hibaközlő html oldalt szeretnék megjeleníteni.Köszönöm
-
Tomika86
senior tag
válasz
vargalex #19890 üzenetére
Átalakítottam, így az ESP32 400-as kódot küld, ha true a check_status és nem jelenik meg az upload gomb.
De a fő probléma az hogy nem jelenik meg az oldalon a kiíratott üzenet sem:
if (check_status)
{
request->send(400, "text/plain", "FAIL CONNECTION");
// request->redirect("/nextion_fail");
Serial.println("Check status Fail");
}
else {
Serial.println("Check status Ok");
request->send(200);
}itt a redirect ki van kommentelve, de azzal sem jelenik meg, pedig a redirect még működik, de az ott lévő request->send(400, "text/html", fail_page); nem működik.
Tehát a fő probléma, hogy az átirányított oldal nem töltődik be, illetve még a sima text sem (nem a scriptben lévő alert)
Köszönöm!
-
Tomika86
senior tag
Sziasztok!
Hátha itt valaki tud segíteni, eddig sehol.
Röviden a program(teszt jelleggel van):
1. betallózva a fájlt, ellenőrzi a kiterjesztést, .tft esetén elküldi a méretet az esp32 felé. illetve aktív lesz az upload gomb.
Eddig működik
2. check_status direkt true értékkel van
3. ha a check_status értéke 1 akkor át kellene lépnem egy hibaüzenetet megjelenítő oldalra.Na a 3. lépésnél van a gond, nem csinálja meg.
Sima text/plain szövegkiírást sem ami a példában van.
Próbáltam redirectet is, de az ott lévő html oldalt sem jeleníti meg a böngésző (odalép pedig)Sehol sem találok ilyen példaprogramot, ahol átirányítás van és megjelenítve egy hibaoldal. Serial.print van mindenhol, ami nálam is működik, de ez nem felhasználóbarát. Inkább kiírnám a hibát az oldalon.
Ide tettem fel a programot:
[link]Köszönöm ha bárki tud hozzátenni valamit, akármi is legyen az.
-
Wolfram
aktív tag
Hang helyének/irányának meghatározása, csinált már valaki ilyet? A setup egy ESP32-S2 és 4db MAX4466 mikrofon egy 2x2m-es négyzet sarkain elhelyezve.
Kezdjek házilag matekozni, vagy van már valami megírt kód erre? -
Tud valaki olyan vezeték nélküli megoldást, ami elfér egy karórában ?
Anyukámnak szeretnék egy karra csatolható vészjelző eszközt csinálni, ami elmegy egy darab CR2032-es elemről. Attiny85 (Attiny12?) + IR LED + nyomógomb a terv, csak az a gond, hogy az IR nem megy át a falon. A vevő oldalon egy ESP8266 lenne IR vevővel, wifire kötve.
A másik ötletem, hogy magát az ESP8266-ot tenném az órába, van egy pucér ESP8266 modulom. Csak szemben az Attiny-vel, ami szépen elműködik 2,5V-ról is, ennek kellene stabilizátor és egy nagyobb áramot leadni képes táp, a wifi miatt.
Szóval valami rádiós eszköz kellene, ami méretben nem nagyobb egy gombelemnél. Az egyetlen, amit tudnia kell, hogy ~10m távolságban falon át egyetlen jelet/impulzust tudjon megbízhatóan átvinni a vevő oldalra.
-
Wolfram
aktív tag
ESP8266-on a hostnévből hogy tudok IP címet gyártani?
Konkrétan az a probléma hogy a websocket kliens úgy tűnik nem tudja feloldani a hostnevet, csak IP címmel kapcsolódik. -
válasz
lanszelot #19855 üzenetére
Na most gondolod rosszul, nem tud több szálon futni (kivétel mondjuk az esp32 ahol két mag van), ezt miből vontad le?
A program futása soronként történik, kivéve ha megszakítást használsz (de valójában ott is soronként fut a kód).
Ami téged félrevezetett, hogy a megoldás, amit adtam neked, egy modern oprendszer időosztásos módszeréhez hasonlóan látszólag egy időben, de valójában felváltva csinál több dolgot. -
ReFleXx
addikt
válasz
Harcipocok84 #19851 üzenetére
ha eleg egy uart akkor ott a jol bevalt arduino uno ha tobb is kell akkor pl arduino mega, stm32 bluepill vagy esp32
-
DigitXT
félisten
válasz
lanszelot #19836 üzenetére
Nagy vonalakban úgy, ahogy írod, egymagos processzoron: pont erre céloztam,
hogy azért a megszakítás ennek keresztbe tud verni rendesen, illetve többszálú
programnál egyéb problémák is felmerülnek a párhuzamosítással kapcsolatban.
(Márpedig egy ESP32 pl. kétmagos, szóval nem teljesen elrugaszkodott dolog.)Az a baj, hogy feltételezed, hogy adott programrészbe került és ott volt a baj a
delay funkcióval, pedig ez a legkevésbé valószínű.Sokkal valószínűbb, hogy
a kód nem is ott tartott. Ilyenkor hasznos beszúrni egy pár Serial.print(akármi)
hívást a kritikus részekre, és nézni a Serial Monitor-on, hogy mit írtál el...Nagyon könnyű elgépelni valamit, s ha megeszi a fordító, akkor sz.rul fog futni:
az egyik ilyen legtriviálisabb (kezdő*) hiba valami értékének a téves vizsgálata,
nevezetesen ha véletlenül nem az "==" operátort használod, hanem az "="-t...
Simán lefordul, simán fut, csak nem azt csinálja, amit gondoltál, hanem amivel
hasonlítanád, azt adja értéknek, majd értékeli, hogy 0 vagy 1* az eredmény.*: de nem csak kezdők követhetik el, hiszen lehet elgépelés is, emiatt néhány
fejlesztői környezet direkt nézi az ilyet, warningot dob rá, hogy ezt akartad-e...*: pontosabban "nem nulla", nehogy valaki belekössön... Egy gyors példa erre:
if (sensorValue = 90) { valami } else { egyéb } Ennél nem csak az a baj, hogy
az "egyéb" soha nem fog lefutni, hanem az is, hogy a sensorValue utána végig
90 lesz, egészen amíg újra be nem olvastad... (És ez egyetlen pici elgépelés.) -
Új hozzászólás Aktív témák
Hirdetés
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Apple iPhone 13 Pro Max 128GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 11 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3163, 100% Akkumulátor
- Honor X7 fekete 128GB 12 hónap jótállással!
- HIBÁTLAN iPhone 14 Pro Max 256GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3147
Állásajánlatok
Cég: FOTC
Város: Budapest