- OLED TV topic
- AMD Ryzen 9 / 7 / 5 10***(X) "Zen 6" (AM5)
- Milyen belső merevlemezt vegyek?
- Milyen billentyűzetet vegyek?
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Milyen videókártyát?
- Hobby elektronika
- HiFi műszaki szemmel - sztereó hangrendszerek
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Kivégzi a Firewire-t az új macOS verzió?
-
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
-
onagyi
csendes tag
Jelenleg egy PC-n (Win 10) fut egy általam írt karakteres TCP server (C##) egy ACCESS adatbázisba lepakolja a kapott adatokat. A kliensek jelenleg D1 Mini adatgyűjtők (hőmérséklet, páratartalom mérése), amik a TCP serverrel kommunikálnak és küldik az adatokat (10 percenként). Ez működik.
Gondoltam, ha lehetne ESP32-ről közvetlenül írni egy MYSQL/MARIA DB-be, akkor az adatbázis lehetne egy Raspberry-n és nem lenne szükség a PC-re és a TCP serverre.Üdv: Nagy István
-
onagyi
csendes tag
Találtam ESP32-höz Maria DB közvetlen kapcsolati libraryt. Sajnos a minta példák sem működnek.
Próbálkozott már vele valaki?
Nagyon megköszönnék egy működő kódot.Üdv
agy István
-
#70211840
törölt tag
Nos, próbálgattam kicsit a powerbank adaptert, de valami nincs rendben. [így néz ki]
Azt játssza, hogy amikor elindul a "kütyüm" (esp-01s + 0.96 oled + aht20 szenzor) akkor bekapcsol a powerbank, ezt vizuálisan egy piros led is jelzi, majd pár másodperc után kikapcsol és leáll a "kütyü". Majd kezdődik elöről az egész folyamat. Van, hogy még a netkapcsolatig sem jut el. Alkalmanként 20-30 másodpercet is üzemel, szépen mutatja a szenzor értékeit aztán ugyancsak lekapcsol.
Nem értem a dolgot, hol csúszhat ennyire félre valami. Elméletileg 800mA-t folyamatos üzemben tudnia kellene. Ugyan nem mértem (majd megteszem), de szinte biztosan nem lépheti ezt túl. -
#70211840
törölt tag
válasz
#70211840 #18523 üzenetére
Na, közben meg is lett a válasz. Van lehetőség PL2303-al programozni az ESP-01S modult.
Manuálisan kell az PIO-0 portot GND-re zárni és így elfogadja működik.Elnézést a topic "szemetelésért", de gyakran történik velem olyan, hogy mikor leírok egy problémát, nagyon hamar beugrik a megoldás. Vagy éppen azt követően, hogy leírtam amit szeretnék megtudni, nagyon hamar rátalálok a neten arra, amire addig nem.
Szóval ... elnézést. -
#70211840
törölt tag
Van egy ESP-01S modulom. Még nem használtam ilyet és szeretném kipróbálni. Ha beválik több projectben is felhasználnám majd. (pl: több ilyennel, érzékelőtől gyűjtött adat központi szerverre továbbítva)
Úgy látom ehhez létezik egy kimondottan ehhez való USB programozó, amibe szépen beleilleszthető a modul. Nekem most ilyen nincs a kezemben sajnos, erről megfeletkeztem.
Az volna a kérdésem, hogy ez kizárólag ezzel programozható vagy megoldható a PL2303 Serial adapterrel is? (esetleg 3V3-ra moddolt CH341A van még)
Más:
Tudnátok ajánlani olcsó, apró, itthon beszerezhetó MCU-t amivel annyi lenne a feladat, hogy I2C hőmérséklet érzékelő értékét I2C OLED kijelzőre kiírjam? Csak lenne a feladata, az olcsóság és az apró méret a szempont ennél a projectnél. -
Lehet nem új már, ha valakinél téma lenne: esp8266 altatása.
-
tibi-d
tag
válasz
Wolfram #18478 üzenetére
Lehet, hogy rosszul tettem fel a kérdést. Egy olyan készülékhez kéne, amit, önállóan is kell tudni kezelni, mobil, tablet nélkül. Természetesen lesz mobilos lehetősége is.
Másik kérdés. Van-e olyan mobilos applikáció, amellyel az ESP32-ről érkező adatokat diagram formájában fel tudja rajzolni a telefon, tablet kijelzőjére (online). -
tibi-d
tag
ESP32-höz milyen kb. 5' kijelzőt javasoltok. (Ár-érték)
-
ViZion
félisten
Milyen project? Erről annyi van, h talán ESP-t RF-el, falon túlról is irányítani. Nem tudjuk hány funkció, vagy mit miért. Linkeltünk RF modulokat, volt tutorial, ahol távirányító jelét dekódolták és rendeltek hozzá funkciót (ez vicces volt, valami ledvezérlő RF távirányítót alakítottak át az ESP irányítására, amivel azután led szalagot vezéreltek. OK, lehet csak a tutorial miatt volt).
-
its_grandpa
tag
válasz
Wolfram #18436 üzenetére
Infrával is lehet arduinót vezérelni (olyan távirányítót linkeltél az elején), én sem értem igazán miért bonyolítod túl - https://www.instructables.com/Arduino-IR-Remote-receiver/
Tudom wemos-t akarsz, a lényeg szempontjából mindegy, hogy ESP vagy Arduino.
A wemosra eNeS megoldása jó lehet - https://bitekmindenhol.blog.hu/2019/02/21/egyszeru_433mhz-es_vevo_modul . -
válasz
Wolfram #18424 üzenetére
A wifi protokoll nem alkalmas távirányítónak.
- Vagy csinálsz egy weboldalt, amit wifin keresztül megnyitsz mondjuk egy mobiltelefonnal, és akkor arra annyi gombot teszel, amennyit csak szeretnél.
- Vagy az ESP32-n van Bluetooth is, ahhoz bármilyen Bluetooth távirányítót vagy billentyűzetet párosíthatsz.
- Vagy egy másik esp-vel esp-now kapcsolaton l kapcsolódj, annak a GPIO-inak a felhasználásával építs egy saját távirányítót.
- Vagy vegyél egy RF modult, azt kösd rá egy tetszőleges Arduino lapra, és lásd az eggyel korábbitValójában rengeteg féle távirányítót lehet és szoktunk is használni, csak pont olyan nincs, amit te keresel.
Az RF frekvenciája fix? Egy tetszőleges (pl.: [link] ) RF távirányító jelét el lehet kapni és dekódolni
Nem, sokféle frekvencia és mégtöbb protokoll létezik.
-
ViZion
félisten
válasz
ReFleXx #18417 üzenetére
Nem mutat az semmit... Nem látszik a kódon, mert azt a devices vezérli -nem foglal helyet itt, "gyárilag" ESPEasy tudja. A kódban frissülnek az adatok, de a kijelzőt gombbal tudom bekapcsolni és hogy ne felejtsem úgy, 35 sec után kikapcsolja.
Normális esetben nem kell nézegetni, teszi a dolgát. De azért ott van, fűtés debuggolásraWolfram: "Legalább lélekben támogatnak a fórumon." Bátya, ha elmondanád, h mit szeretnél, mire használnád, stb... akkor már a progit is megírta volna rá valaki. Fél, sőt negyed információkkal találjuk ki, h mi lenne a megfelelő.
Ha visszaolvasol pár héttel, a kazán projecthez volt itt egy konkrét leírásom, aki olvasta az értette a problémát, a feladatot és hogy én milyen megoldásra gondoltam. Úgy lehet segíteni. Pár hete telepítettem az első ESPeasy-met (előtte én is arduino-s tutorialokkal hadakoztam, WLED működik, a többit összeraktam-szétkaptam), most meg várja a 2. hogy összerakjam...
-
ViZion
félisten
válasz
t72killer #18413 üzenetére
Nem tudom mi hajCSa... de nekem van 2 kinti hőmérőm, AA és AAA elemesek, kb. évente csere. Az bírja. Nem tudom, h mi lenne jobb ennél.
Fenti kódhoz:
Thingspeak-ot ebből kiszedtem, nem nézegetem. Tervben volt külső hőmérő is, de igazán nincs jelentősége. A timerek így is adnak munkát a kis Wemosnak. A korábbi verzió 14-18% load-ot sikerült 22-25-re tolnom.
A LET ciklusok az ESPEasy-n 1 sec-esek, de az halálos, ezzel már vállalható. Sajnos a timer value-t nem tuja máshogy kiírni, elvileg tervben van, talán majd valamelyik frissített verzióban. Ahogy a változók értéke sem lehet szöveg és még az oled clear-t sem lehet csak sorokra vagy oszlopokra alkalmazni. Vannak korlátai, de nagyon jól használható, ha tudunk a hibáival együtt élni. -
ViZion
félisten
válasz
Wolfram #18401 üzenetére
RF-el sokkal nagyobb távolságok hidalhatóak át, de ált. egyirányú a kommunikáció.
Nem tudjuk most sem, h mire kell, felvázoltak több lehetőséget is. Ha az energiatakarékosság + mobilitás is kell, akkor RF a jó sztem. Ha van wifi, és ritkán kell, akkor telefonos megoldás is jó. Ha két eszköz között kell adatcsere, akkor ESPNOW is jó, vagy MQTT, de ezek az RF-nél macerásabbak szerintem. A felébred, kapcsolódik, adatot küld és alszik az tipikusan szenzoros ESP, ahol X percenként mér, küld.
Wifis távirányító: a mobilod... BT távirányító és kis szerencsével akár IR távirányító is. -
ViZion
félisten
-
Tankblock
aktív tag
válasz
Wolfram #18396 üzenetére
Szia,
Mit szeretnél? Opcióból nincs hiány....
- Hostolhatsz weblapot/websocketet amin keresztül tudod GPIO vezérelni --> onnan a rádiódat
- készíthetsz másik távot ami ESPNOW protokollon keresztül küld üzenetet az elsőnnek amelyik gombot lenyomtad kiküldi mint üzenet aztán ha nem jön több gombnyomás deep sleep....
- IR receiver boardot már látom belinkeltékezeket egyszerre is meg lehet csinálni....
-
ViZion
félisten
opto leválasztás után csak úgy tudtam bekötni, h a 3.3 V-t adja rá az opto a gpio-ra. inputra sok helyen a pull up (0) és gnd-re kapcsolást (1) írják . optoval olyen volt a példa is, működik is, a kérdésem hogy ezt az esp mennyire tolerálja, kapjon-e soros ellenállást? telo, azé a typo...
-
Janos250
őstag
válasz
janohi #18370 üzenetére
Akinek írtam, annak ESP32-je van, és azon van printf, a Te Megádon nem tudom, van-e. :-(
De - ha jól emlékszem - a Serial.printf ugyanezt teszi, de rég volt már a kezemben Mega. Ha hülyeséget írtam, majd javítanak, akik jobban ismerik a Megát.
A printf a szabványban benne van, és az ESP32 a szabványos fordítót használja, tapasztalatom szerint mindent lefordít, ami szabványos a C++11-ig. -
válasz
t72killer #18365 üzenetére
Nno, előre izgi, ekkorát még nem vásároltam
Azért rakom ki, mert pár darab még ardus viszonylatban is nagyon jó árúnak tűnt:
- 2db arduino nano USB-c, forrasztott
- 2db NEO-8M GPS-modul (egyelőre a saját antennájával, erre a projektre sztem elég)
- 2,5mm-es jack végű kábel (végülis egy marék 2,5->3,5mm-es átalakítót vettem fél gombnyi összegért, jó lesz az még másra is)
- egy kazal male-to-female DuPont kábel (F-F van itthon)
- 3 marék 55pontos mini-breadboard*
- méretre vágható "neapirosatvágdelhanemakéket! - dehát itt minden kábel barna#&&#@!" 20centis breadboard kábelek*
- 5db 16340-es tápegység, +bele kék akksik
- DHT22+ESP-01s "hányfokvankint" szenzorok ("projekt B")
- Egyelőre 2db 0.96"-os OLED kijelző
- Primitív blankoló fogócska (nemröhög, eddig késsel nyestem a kábelszigeteléseket)
Itthon van pattintott kőkorszaki kőbalta forrasztó (kétlem, hogy ezzel az ardus cuccokhoz akarok majd nyúlni), egy fazék ellenállás, tranyó és még MOSFET-eket is találtam a pár évvel ezelőtt feladott projektből.
*iigenigen, első körben nemröhög nem szeretnék forrasztgatni
-
válasz
Ton-ton #18361 üzenetére
, szem előtt tartom ezt is. Közben visszatereltem magam a 16340-es megoldáshoz. Összességében kicsit drágább, de ezzel usb-tölthető kütyüket tudok generálni.
ON: ESP-01s programozásához USB-s kütyüt használnátok vagy az arduino nano is ugyanolyan jó lesz? (uno-s példa itt a 6-7.oldalon)
-
Az ESP-01s wifije kb meddig "lát el"? Wifis hőmérőkön gondolkozom DHT22-vel párosítva, lenne egy egység a a kertben kb 20méterre a házban lévő routertől, ott, ahol telefonnal még éppen-éppen látok wifit. Van esély rá, hogy működni fog, vagy nézzek antennás lapkát?
-
ViZion
félisten
Jah, ESP32 mindenben IS jobb. Nem tudom mi a project, mivel én Wemos fan vagyok (sőt már nem is fan, hanem split klíma
), így azt javasoltam a korábbiakra, alapvetően az Uno helyett.
Wolfram: nah, ez tényleg fain hely, gratula. Árak is jók, főleg ha küldenek külföldre is, ócón.
-
Janos250
őstag
válasz
#70211840 #18319 üzenetére
Ha mindenféléket tudni akarsz a lapodról, akkor futtasd le:
void setup() {
Serial.begin(115200);
delay(3000);
printf("Internal RAM:\n");
printf("HeapSize = %d , 0x%08X \n",ESP.getHeapSize(),ESP.getHeapSize());
printf("FreeHeap = %d , 0x%08X \n",ESP.getFreeHeap(),ESP.getFreeHeap());
printf("MinFreeHeap = %d , 0x%08X \n",ESP.getMinFreeHeap(),ESP.getMinFreeHeap());
printf("getMaxAllocHeap = %d , 0x%08X \n\n",ESP.getMaxAllocHeap(),ESP.getMaxAllocHeap());
printf("SPI PSRAM:\n");
if(psramInit()){
printf("PsramSize = %d , 0x%08X \n",ESP.getPsramSize(),ESP.getPsramSize());
printf("FreePsram = %d , 0x%08X \n",ESP.getFreePsram(),ESP.getFreePsram());
printf("MinFreePsram = %d , 0x%08X \n",ESP.getMinFreePsram(),ESP.getMinFreePsram());
printf("MaxAllocPsram = %d , 0x%08X \n\n",ESP.getMaxAllocPsram(),ESP.getMaxAllocPsram());
}else{
Serial.println("PSRAM not available");
} ;
printf("ChipRevision = %d \n",ESP.getChipRevision());
printf("ChipModel = %s \n",ESP.getChipModel());
printf("ChipCores = %d \n",ESP.getChipCores());
printf("CpuFreqMHz = %d \n",ESP.getCpuFreqMHz());
printf("SdkVersion = %s \n",ESP.getSdkVersion());
printf("FlashChipSize = %d, 0x%08X \n",ESP.getFlashChipSize(),ESP.getFlashChipSize());
printf("FlashChipSpeed = %d \n",ESP.getFlashChipSpeed());
printf("FlashChipMode = %d \n",ESP.getFlashChipMode());
printf("SketchSize = %d, 0x%08X \n",ESP.getSketchSize(),ESP.getSketchSize());
printf("FreeSketchSpace= %d, 0x%08X \n",ESP.getFreeSketchSpace(),ESP.getFreeSketchSpace());
printf("EfuseMac = %d, 0x%08X \n",ESP.getEfuseMac(),ESP.getEfuseMac());
printf("SPI_FLASH_SEC_SIZE = %d, 0x%08X \n\n",SPI_FLASH_SEC_SIZE,SPI_FLASH_SEC_SIZE);
printf("\nPartition table:\n");
esp_partition_iterator_t it;
esp_partition_t *pPart;
it = esp_partition_find(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_ANY, nullptr);
while (it != nullptr)
{
pPart = (esp_partition_t *) esp_partition_get(it);
printf("main: partition type = %d.\n", pPart->type);
printf("main: partition subtype = %d.\n", pPart->subtype);
printf("main: partition starting address = %x.\n", pPart->address);
printf("main: partition size = %x.\n", pPart->size);
printf("main: partition label = %s.\n", pPart->label);
printf("main: partition subtype = %d.\n", pPart->encrypted);
printf("\n");
it = esp_partition_next(it);
}
it = esp_partition_find(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, nullptr);
while (it != nullptr)
{
pPart = (esp_partition_t *) esp_partition_get(it);
printf("main: partition type = %d.\n", pPart->type);
printf("main: partition subtype = %d.\n", pPart->subtype);
printf("main: partition starting address = %x.\n", pPart->address);
printf("main: partition size = %x.\n", pPart->size);
printf("main: partition label = %s.\n", pPart->label);
printf("main: partition subtype = %d.\n", pPart->encrypted);
printf("\n");
it = esp_partition_next(it);
}
esp_partition_iterator_release(it);
}
void loop() {
} -
válasz
ViZion #18339 üzenetére
Én már írtam neki az ESP-s hanglejátszást, mondjuk hónapokkal ezelőtt és ESP32-t javasoltam, mert azon van dedikált sztereo i²s kimenet, de ha a 8266 is tudja, akkor csak még jobb.
Mondjuk ha egy UNO-val is lehet wav-ot lejátszani, akkor logikus. Alacsony bitrátájú, mono mp3-ból szerintem simán befér néhány a 4MB flash-be.
-
válasz
#70211840 #18319 üzenetére
Ha a chip-en Esp wroom van, akkor nyugodtan állítsd be annak, aminek vetted (pl ESP32 NodeMCU).Akár Generic ESP32-t is beállíthatsz, legfeljebb a lábak elnevezésével lehet némi zavar, de belül az összes ugyanaz.
Igen, ha van rajta usb csatlakozó, az alapvetően pont a feltöltés miatt van rajta. Feltöltésnél előfordulhat, hogy nem tudja magát automatikusan resetelni (nem mindegyik tudja), akkor valamelyik gomb (talán a boot?) nyomvatartása mellett kell majd gépre dugni a feltöltés előtt.
-
#70211840
törölt tag
Urak.
Van egy 38pin-es ESP32 MCU-m. Pontosan nem tudom melyik típus, mert feliratot nem látok rajta, a webshopban ahol vettem, pedig nem pontosan olyan kép van, mint amit kaptam. [link]
Hogyan tudnám kideríteni, hogy milyen verzió és az ArduinoIDE-ben mit kell beállítanom?
Illetve ehhez is szükséges USB-UART átalakító a feltöltéshez vagy a microUSB tud adaportként is működni?(Mondjuk elég bosszantó, hogy a pin-ek is úgy voltak beforrasztva, hogy befele álltak a lábak kicsit. mindet ki kellett szednem és újraforrasztanom)
-
ratkaics
senior tag
Sziasztok!
Tudtok olyan kész panelt/eszközt ajánlani, aminek van minimum 3db reléa kimenete és minimum 2 db digitális bemenete? Lehet ESP és Arduino meg más mikrokontroller is. A lényeg az lenne, hogy ne kelljen nekem NYÁK-ot készíteni, meg forrasztgatni.
-
Szancsó
aktív tag
Sziasztok!
Lenne egy kis méret problémám: túl nagy lett... a kódCsak próbálkozom egyelőre a témával (hobby projekt), egy ESP32 -t kezdtem nyüstölni.
Amiket használok: TFT kijeltő, flash memória, RTC modul, WiFi, Bluetooth, apróságok (rotary encoder, pár kimeneten MOSFET -ek, stb - viszont ezek nem sok vizet zavarnak kód szinten).
Library -k, amiket egyelőre használok:
RTClib (pontos idő, hőmérséklet)
TFT_eSPI (kijelzőhöz)
ArduinoJson (beállítások mentése-visszatöltése, adatátvitel)
PNGdec (flash -en tárolt saját ikon/animáció megjelenítéshez)
SPIFFS.h (adatbetöltés)
BluetoothSerial.h, WiFi.h (kommunikáció majd app -hoz)
stb.A gondom az, hogy még várhatóan lesz más (egyelőre csak magamnak csináltam a kiejlzőre animációt, hogy legyen valami, de később menü lenne rajta) és UI -hoz kell majd még telepíteni + OTA is lenne, de már most 1.47MB a fordított release. Már átpartícionáltam, így felfér, de tényleg ekkora helyet foglalnak ezek? (Mikor elkezdtem használni a Bluetooth-t levett vagy 4-500kB -t)
Vagy valaki tud zsigerből ezeknél jobb megoldást? -
válasz
t72killer #18303 üzenetére
Mi a baj ezzel, amit linkeltél? Elég jó árban van, és nem kell hozzá külön μC, mert rajta van egy esp8266. Ami különben elég jó választás lenne, mert nem kell neki külön 5V táp, mivel 3,3V-ról megy, viszont a bemenetei 5V toleránsak.
az 5V/0V digi jel nem túl erős-e a mikrofonbemenetnek
Miféle mikrofonbemenetről van szó? Aktív, mint a PC mikrofonbemenete, vagy passzív, mint a telefon headsetje?
Nem a saját mikrofonjába akarsz kívülről belecsipogni?Vételi oldalon egy opamp-ból kialakított sávszűrő kell, például a fent említett 1200-2200Hz sávra, és megpróbálhatod szoftverből számolni a frekvenciát megszakítással. Valami GCR kódot használnék hozzá.
-
ReFleXx
addikt
válasz
ViZion #18264 üzenetére
az arduinos sketchekbol olloztam ossze egy kodot.
wifi kereses nincs, megadom az SSID , password parost es megy ki a wifi.begin()
ezen a devkit boardon is D2 labra van kötve a builtin LED de az nincs bekapcsolva.
neked espeasyben mennyi ido a wifi csatlakozas deepsleepbol ebredve? -
ViZion
félisten
válasz
ReFleXx #18263 üzenetére
A saját lednek is van "GPIO-ja". Wemosnál GPIO2-t kell high-ra állítani.
Nem tudom mit használsz rajta, de van olyan ESPEasy-ben, h ne keressen wifit, hanem az utolsóra jelentkezzen be. Jó esetben ez rövidebb idő, mint előről kezdeni a folyamatot. ms ez is, de lehet, h számít. A másik a wifi power, amit lehet szabályozni, ha jó a vétel, akkor limitálni kell. Power led az ilyen, kéri a power-t. -
ReFleXx
addikt
esetleg mérte itt valaki az ESP32 modul aramfelvetelet deep sleepben? neten biztos talalnek de engem a helyi kozosseg tapasztalata erdekelne.
Erdekessegkepp itt egy mérés development boardon, ez egy kozel 2.5perces arammeres ahol 1 percenkent felébred a mcu feljelentkezik wifire es visszamegy rogton deepsleepbe.
ebredes utan wifi csatlakozassal kb 110mA az aramfelvetel atlagosan de vannak ilyen 500mA-t meghalado par miliszekundumos kiugrasok is.
Sajnos deepsleep aramfelvetelt nem tudok mondani, mert a devkit boardon folyamatosan eg a power led ami miatt olyan 2.6mA volt a deepsleepben is. Leforrasztani nem szerettem volna csak emiatt. power leddel felejtos az elemes üzemeltetes -
Wolfram
aktív tag
válasz
ViZion #18254 üzenetére
Írtam hogy nano-t akarok,
ezért jó minden ami legalább a nano szintjét hozza,
de szempont hogy előforrasztott legyen.
Amiben nem vagyok biztos az a kompatibilitás, ezeket az ESP32, wemos cuccokat ismeri az ard ide? Egy ard tutorial-t milyen könnyen tudok átültetni ezekre a nextgen lapokra? -
ViZion
félisten
Hestore jó, de picit drágább. Kérdés, h mire lenne szükség?
Wemos D1 mini szint, több IO, picit magasabb ár: [link]
ESP 32-vel, ami erősebb, szintén pici méretben: [link] [link] STM-et nem linkelek, nem ismerem, h UNO-hoz képest mit tud. Nano klón, sok IO-val: [link]
Ez csak az első link. Szal. van választék szerintem. A SOC-ot nézd, a többi csak körítés. Persze visszajutunk oda, h mi a terv? Mennyi, milyen IO kell rá? Csak pár szenzor, vagy valami komolyabb a feladat?Janos250: agyalok, h wemos helyett a pici ESP-01-et és valami ESP32-t is kipróbálok. Nem mintha a feladat igényelné...
De tényleg durva már a Wemos tudása is, az ESP32 meg mindenből több, jobb, erősebb... Ezt nézegettem, mert lenne egy tervem, h több RGB zónát vezérelni egy eszközzel. Csak ez nekem ismeretlen, de majd utánaolvasok, h mi is kellene.
-
Amit szeretnél az egyrészt már eléggé scifibe hajlik, másrészt GDPR illetve személyiségi jogokat sért(het).
Szoba szinten automatikusan működő és olcsó jeladó/vevő szerintem infravörös alapokon lehetne megvalósítható, esetleg Bluetooth LE, mert az zsebből is működik, míg az IR optikai rálátást igényel. De legjobb, ha router szinten próbáljátok megoldani, ahogy fentebb javasolták.Illetve még egy eszembe jutott, ha minden laptop wifivel kapcsolódik, egy esp (wemos) figyelhetné a közelben lévő laptopok/eszközök Mac címét.
-
ViZion
félisten
igen, ezt találtam, kiosk mode browser.
Wolfram: magyar boltok, amiket próbáltam és megbízhatóak:
https://www.microcontroller.hu/termekkategoria/mikrokontrollerek/
https://modulshop.hu/
https://www.elektrobot.hu/ itt kevés ESP cucc van
https://www.wireless-bolt.hu/ itt se sok az ESP, de néha van brutál ócó bármi
https://www.hestore.hu/ mindenhez van adatlapEzeken túl is vannak, pl. conrad, rs online, emag, stb... de drágábbak.
-
válasz
#70211840 #18211 üzenetére
De, szerintem jól gondolod. Az IO pinek közvetlenül a chipre vannak vezetve, ami 3,3V-ot kap, valószínűleg visszafelé nem fog 5V menni egyiken se.
A touch részét viszont majd faragni kell, mert a library az UNO analóg bemenetére van megírva, ami 10bites, 0-5V közt 0-1023 értéket ad vissza, ebből ugye csak a 0-3,3V közti értékeket használja ki, ami 0-675 közti értékeket jelent, az ESP-n viszont 12bites az analóg bemenet, ami azt jelenti, hogy a 3,3V jelszint 4095 értéket fog jelenteni. 6tal osztani kell majd mindent.
-
#70211840
törölt tag
Persze, lib-et hozzáigazítom majd, ha szükséges.
Ezen a képen nézve a TFT 5V pin mintha közvetlenül a 3.3V fesz.stabhoz menne.
Ha ez tényleg így van és máshol nem jelenik meg a shield-en, akkor szerintem nem lehet gond akkor sem, ha esetleg megjelenik az ESPduino-32 pinen az 5V.
Vagy nem jól gondolom? -
válasz
#70211840 #18205 üzenetére
Lábkiosztásban csak akkor, ha a D0-D13 A0-A5 lábakat értelmezni tudja / lefordítja automatikusan IO26, IO25 stb lábakra, ellenkező esetben át kell írnod a library-ben a lábak nevét.
Jelszintben van rá esély, hogy az alapvetően 5V jelszintre felkészített shield működni fog 3,3V jelszintről is konverzió nélkül is, de lehet vele probléma, ez csak teszteléssel derül ki.
Viszont arra vigyázni kell, hogy ha az ESPduino-32 5V pinjén megjelenik az 5V, akkor azt megkapja a shield, és azon keresztül esetleg megjelenhet valamelyik I/O pinen is, amit az ESP32 nem szeret. Ezt adott esetben füstjelekkel adhatja tudomásodra. -
ViZion
félisten
válasz
Izeka82 #18201 üzenetére
Szia! Mivel használod? ESPEasy, vagy Arduino-ból írtad és töltötted fel a programot? Kijelző folyamatos üzemben van, vagy ki-be kapcsolod? Mindkettő I2C busz, lehet ott néha beakad a dolog. Próbáld másik táppal, de erős a toippem, h inkább kijelző nélkül, hogy úgy is fagyogat-e.
-
#70211840
törölt tag
"Nincs szükség ellenállásra, a belső felhúzó ellenállás önmagában is elég magas."
Ez csak STM32 esetében igaz vagy jellemző már az összes hasonló eszközre?
Azért kérdem, mert példákat nézve látni ilyen-olyan megoldásokat.
Ezen az oldalon például használnak ellenállást a nyomógombhoz.
Tehát elég csak bekötnöm egy gombot egy pin-gnd közé? Ennyire egyszerű volna?"... lehet készen is kapni ellenállás létrát"
Ez nagyon jó tipp és helytakarékos is. Ki fogom próbálni mindenképpen."... én szoftveres debouncingra gondoltam, ..."
Ezen a lehetőségen átsiklottam. Természetesen ha kényelmesen megoldható, akkor az lesz a megfelelő nekem. Ennek a lehetőségnek még akkor utánna kell olvasnom.
Köszönöm a tippeket, a segítséget.
-- off begin --
Más:
Jelenleg igen komoly szoftveres problémával küzdök a fejlesztőkörnyezettel.
Az első és talán legfontosabb dolog, hogy STM32 használathoz az eddig ArduinoIDE-hez használt STM32 Board Core nem megfelelő. A Roger Clark helyett az STM32duino Core-t kell használnom. Egyszerűen azért, mert több Library-ba is belefutok, amelyek nem fordulnak a másik core-al.
Úgy tűnik az kevésbé van optimalizálva STM32-höz, mint a másik.Példa:
TFT_eSPI Library : [link]1. http://dan.drown.org/stm32duino/package_STM32duino_index.json
Ezzel nem fordul a könyvtár.2. https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
Ezzel minden probléma nélkül.Csak kiragadva egy lényeges momentumot:
STM32-n szépen beállítható az SPI1 és SPI2 sebessége. Ez a könyvtár használja is STM32 esetében ezt. Azonban az első Core SPI moduljából hiányzik a setSpeed lehetőség, míg a másodikban megvan. Az első fix 8MHz-ez használ (gondolom Arduino örökség lehet)
Egy SPI kijelző esetében látványos a különbség.Van viszont egy komoly probléma ezzel a maggal.
1. Windows - ArduinoIDE
Iszonyatosan lassan fordít!!! Ez azt jelenti, hogy egy üres setup()+loop() percekig tart neki.
Egy képernyőre kiírt "hello world" 3-8perc. Minden módosításnál az egészet újrafordítja.
Neten kutakodva más is ezzel küzd.2. Windows - SloeberIDE
Hibába fut, nem fordul semmi. Nem egyedi gondom van ezzel, másnál is ez van. A probléma egyelőre feloldhatatlan.3. Linux - ArduinoIDE
Itt nincs gond. Gyorsan fordít és apróbb kódot is csinál, mint a másik core.4. Linux - SloeberIDE
Nem tudom elindítani. Érthetetlen, hogy miért nem indul, miközben JDK11 mellett más Eclipse alapú cucc simán fut.A probléma viszont az, hogy nekem a Sloeber kellne, mert az ArduinoIDE nagyon hiányos a fejlesztési funkciókkal.
-- off end --
-
ViZion
félisten
ESPEasy gyorsjelentés: ~4 nap uptime, semmi hiba vagy magas CPU használat. 99%, h a rules cache a betegség oka.
-
Janos250
őstag
válasz
#70211840 #18155 üzenetére
Akkor miért nem rakod össze csak C-t, és a hivatkozott libraryt használva Arduino IDE-ben.
Megtanulsz egy csomó dolgot STM32-re, ami máshol nem úgy lesz? Ezért jó ez az Arduino, hogy a C/C++ fölött egy egységes "szabványt" ad, hogy mit hogyan használj.
A C dolgok teljes egészében mennek Arduino alatt is. Nekem legalábbis az ESP32-n, de gondolom máson is, bár mást már jó ideje nem használtam.
Régebben, mikor STM32-t használtam, akkor még nem merült fel bennem ilyen kérdés, így nem próbáltam.
Én - ha épp olyan kedvem van - pl. simán használom a C fájl kezelését. Ha az alapokra kell leennem valamiért, az interneten (WiFi) keresztüli kezelést is C fájlként oldom meg.
Igaz, hogy a Cube-ban grafikusan látod, hogy mit hova, de az holt tudás lesz, ha másra akarsz áttérni. -
ViZion
félisten
ESPEasy cucc webes felületét megnyitod, tools, advanced és ott van, h rules enabled, ha ezt kattintod, akkor alatta az enable rules cache is bekapcsol, na ezt kapcsoltam ki, bódottság van, 14% körül a load, amikor nézegetem. 24+ óra uptime, másikkal ilyenkor már harcoltam bőven.
Ahogy írtam is, ez az ok szerintem, de alaposan nem jártam körbe, viszont alig változott a rules-ban vagy eszközökben.
-
-
ViZion
félisten
ESPEasy-t használ valaki?
Az új verziónál (ESPEasy-mega-20221105) pár óra után felmászik a CPU használat, nincs webes kapcsolat. A dolgát teszi szépen. Restart is sokáig tart. Most egy Wemost töröltem, újra flasheltem, csak úgy natúrban is ez a jelenség, szal. nem hiszem, h a programom kavarja meg. Mintha a régi gyorsabb lett volna. Normal, 302 és VCC verziókat is próbáltam. Többi okosbizbasz csatlakozik a routerre, elérhetőek. Már kicsit a Wemos klónra gyanakszom. Mert ilyenem még nem volt:
Mondjuk a 4.0-ás verzióval is ez van...
Valaki más tapasztalt ilyesmit? -
ViZion
félisten
Csak hogy biztos legyen, mert egyértelműen nem találtam ESPEasy-n... Wemos D1 mini gombbal GND-re reseteli a wemost. Ide kell vmi ellenállás, vagy mehet direktbe GND-re? A reset az nem factory reset, csak rebootol, ugye? Flash-t nem fogja piszkálni?
Táp megvonással néha hülyeségeket írnak a szenzorok, reboot után jók. Most kikapcsoltam az ECO módot, szerintem az okozta a bánatot, de azért pattintanék rá reset gombot is.
-
vegyszer
addikt
Sziasztok!
Gondoltam megosztom veletek első igazi, számomra átütő érzést hozó esp32 projektem örömét.
M5STACK Core2 ASW-sel egyszem infra érzékelő segedelmével egy kartonozó gép végére sikerült egy doboz számlálót kreálnom, ami az adatokat a felhőbe fel is tolja, hogy percenként hány tranzitot érzékelt, illetve (elvileg, mondjuk ezt épp nem teszteltem) logolja is egy SD kártyára ugyanezt. Felhő szolgáltatás gyanánt az io.adafruit.com szolgáltatásának az ingyenes verzióját használom. Nagyon tetszik, (a főnökömnek is) hogy az adatok valós idejű grafikonon szemlélhetőek.
A dolog hétfő óta teszi a dolgát. De érdekes módon délután kettő-három körül minden nap hálózati gondok lépnek fel. Ki-ki marad egy-egy pont(csoport) a grafikonon. Vagyis, mondjuk 9 percig nem jön semmi, majd 5 adat egyszerre egy másodpercen belül.
Sajnos az ingyenesség ára az, hogy a percenkénti MQTT üzenetek száma van korlátozva. Viszont mivel posztgraduális képzésen veszek részt, a Microsoft Azure education opcioja nekem is nyitva van. Viszont az még idegenebb, mint ez volt. Ebbe esetleg mélyedt el valaki?
Van esetleg olyan felhő, illetve MQTT szolgáltatás az ismeretekben, ami mondjuk két-három mondjuk pontosvesszővel tagolt string értékeket szét tud szedni, és berajzolni hasonló grafikonon? Pl így nézne ki a küldött üzenet:
ÉÉÉÉHHNNÓÓPPMM;donozperperc;ÖsszeElhaladtDoboz
Mert ha késik az adat csomagom, az nem gond (hisz ebben benne van az időbélyegző). És itt az idő az x tengely, a két másik adat meg egy egy külön függvény (vonaldiadram). Tudom, hogy QOS 2 lenne az igazi, de ezt se tudja az adafruit.Illetve nem kerek, de ha két külön feedet indítok, akkor nem jönnek az adatok stabilan. Ez az adafruit sajátja lehet, vagy más se szereti, ha egyszerre két moszkító feedet indítok egy eszközről. Mondjuk szerintem ennek nem kellene gondnak lennie.
-
ViZion
félisten
válasz
ViZion #18086 üzenetére
Nah, megtaláltam ESPEasy leírásában, ez szerint volt belőve:
"The function of the pull-up is to activate the internal pull-up Resistor of the ESP. A pull-up Resistor connects the GPIO to VCC(=3.3V) through a relativly high Resistor (ie 10KOhm). This makes sure the GPIO reads a stable 1 when not connected to GND (it could float).When using a normal switch or tactile switch, it should be activated. That should be all for a default switch."
Vagyis a belső pull-up ellenállást használta -egy ideig... utána nem volt stabil, ekkor váltottam active high-ra és kap 3,3 V-ot, ha a relé zárja az áramkört. Megpróbálom külső ellenállással, hátha jobb lesz. -
ViZion
félisten
Sziasztok!
Ehhez kell pull-up ellenállás? [link]
Az oldalon is hibásak az adatok, lábakon nem ez van. Rengeteg helyen a modulhoz is raknak ellenállást, másik oldal azt írja, h nem kell. Egy helyen meg azt olvastam, h a frissített library-val egyáltalán nem kell. ESPEasy írja, h kell. Ha a modulon van, akkor viszont több modul párhuzamos kötésénél már változik az ellenállás, szal. szvsz nem lenne logikus rápattintani a modulra alapból. -
Gergosz2
veterán
Sziasztok!
Milyen ESP32 boardot ajánlatok? Stabil és minél egyszerűbb megoldás érdekelne.
-
ViZion
félisten
válasz
ekkold #18057 üzenetére
Hmmm... van egy régebbi, marha nagy "kockám", ami nyomtatóé volt talán. Eddig nem találtam a helyét, mert 19 V és 9V DC talán a kimenetei (meg kell keresnem, de vmi ilyen ma már nem járatos feszek voltak, meg fura csatlakozó).
Tankblock: a korábbi ESPEasy programra is ránéztél? Vélemény, javaslat?
-
Tankblock
aktív tag
válasz
ViZion #18040 üzenetére
Szia
Őszintén ESPEasy vel sohasem foglalkoztam, szerintem egy csőtermosztáttal többre mész.
Az se biztos hogy csak 1 hőmérőre bíznám magam.
Ugye nem gázkazán?Ha sima kályha én az előremenő víz hőmérsékletét nézném és 50 fok felett keringetném, hogy ne hűtse le, mert akkor kátrányosodik gyorsan.
-
ViZion
félisten
válasz
Tankblock #18039 üzenetére
erre az ESPEasy programra is ránézhetnél. Kicsit azóta reszeltem még rajta, de nem a lényegi részen.
Már ez vezérli a keringetőt, meleg van, szal... egyelőre OK.
Következő a statisztika, ESP Home, meg ilyesmik. De egyelőre a csöveket kell szigetelnem, csak már az is hiánycikk.
Köszönöm a javaslatokat és Grandpa-nak is a segítséget. -
ViZion
félisten
válasz
its_grandpa #18001 üzenetére
Szia!
Takarítottam a puffert, nem volt vészes, radiátor cserénél a régi meglepően tiszta volt.
Vegyes kazán, fával fűtve, annak meg 70°C alatt nem jó, mert kátrányosodik, ami savas és "megeszi" a lemezt.Köszönöm, rohanok most, káosz van. Csak az ESPEasy ami új a programozásban, mást már használtam, valahol a Basic-tól indulva, javascript, webes mindenfélék, kicsi ez, kicsi az. Villanyos részhez meg műszerész vagyok, a gyenge áram is olyan, mint a nagyobb, csak a fogása más...
-
ViZion
félisten
válasz
ViZion #17999 üzenetére
Alap probléma: keringető szivattyú 35-45W fogyasztás redukálása, mert sokat pörög feleslegesen. Nem nagy a ház, jól szigetelt, vegyestüzelés+puffer. De a csövezés, meg az egész rendszer nagy átfolyásra van tervezve (szándékosan), emeleten termofejek, lent meg kb szaladhat, amúgy is minden egyben van.
Elvileg okos keringető mehetne, de mint megtudtam, az az átfolyást nézi, tehát nálunk automatán visszavenné a teljesítményét (másnál is ez a tapasztalat, okos keringetőt manuálban használnak), nem jutna/sokára jutna meleg víz a távolabbi pontokra.Visszatérő mérése differenciál termosztátos megoldással: ez sem jó, mert a fürdő (szándékosan) külön kör, ahol gyorsan megfordul a víz, a visszatérő így meleg hamar. Megbontani nem akarom, lehetne mágnesszelep, vagy másik szivattyú... drága az ESP-hez képest.
Akkor mérjünk... időt. A legtávolabbi radiátor a kihűlt állapotból a forróra kevesebb, mint 5 perc alatt melegszik fel, ha megy a keringető. Itt a hőleadás sebessége és a kis légköbméter/radiátor miatt van egy durva túllövése a rendszernek, ha a keringetőt a belső termosztát kapcsolja. Erre is lett volna alternatív megoldás, különböző okok miatt elengedtem ezeket.
A programról: boot-nál idők és hőmérsékletek dummy változóba mentve, ha meghalok, akkor is tudják kezelni...
Min hőmérséklet: kazán/puffer a kimenőnél ha eléri, csak akkor keringethet.
mid hőmérséklet: átlagos üzeni alsó határa
max: 90°C-nél minden mindegy, valamit elkeféltem a kazánnál, túlfűtöttem, keringessen hamar.
rögtön indítja is a vége ciklust, ami 2 percenként nézi, h mi a szituáció a hőfokokkal.
A fűtés még az érdekes, ha a minimum-optimum közé esik, akkor hosszabb keringetés (mert a kazán vagy hűl, vagy melegszik), majd szünet. Utána ha még a termosztát "be" állapotban van, akkor ismételje meg, keringetés hosszan, szünet.
Ha az optimális felett van a hőfok, akkor fűtésnél elég, ha ~5 percig keringet, majd vár, ha termosztát még aktív, akkor újra.A lényeg, h sokkal kevesebbet megy a szivattyú, a "túllövések" is ritkábbak lesznek, ehhez az időket finomítani kell, tapasztalat szerint. 3 szenzor van, az egyik a külső hőre, a másik csak infó a pufferről. A külső hőmérséklet kód nincs még benne, ez annyi, hogy mint pl. ma, ha 18°C felett van kint, akkor ne fűtsön 23-ra, mert minek, tutira szellőztetünk is ilyenkor. Akkor az a meleg maradjon estére inkább.
-
ViZion
félisten
ESPEasy kérdés, rules-ban mi a különbség ha event,csinádeztnév vagy ha csak simán csinádeztnév van megadva?
on akármi do
csinádeztnév
endon -
ViZion
félisten
Nah, kezdő gyakorlatként leprogramoztam egy gombot, ami bekapcsolja a kijelzőt. Ma már végleges(ebb) a HW, át kell írkálni GPIO-kat, stb. Akkor vettem észre, h a display-nál kérdezi, h melyik pinre kapcsoljon be... OK
Sok dolgot tud a progi, pl. változóknál agyaltam, h mi lesz a tizedesekkel (számolnia is kell velük kicsit), de az is beállítható, nem kell rules-t írni rá.Eddig nagyon tetszik,elkezdtem az alapokat összeírni, vázlatolni, h mikor mi legyen. Ezt meg már csak bele kell pötyögni, h értse is. Hihetetlen az ESPeasy, rules méret miatt aggódok, de majd kiderül.
...és a relémodulon van led. -
its_grandpa
tag
válasz
ViZion #17981 üzenetére
Nem teljesen jó de kiindulási alapnak....
Kell egy dummy device name=Rel_1, és State nevü változó.on System#Boot do
Monitor GPIO,15 //Relay1_GPIO-ja
timerSet,1,600 //Set Timer 1 for the next event in 600 seconds
Rel_1#State = 0
endon
On Rules#Timer=1 do //When Timer1 expires, do
Rel_1#State = 1
endon
on GPIO#15=0 and Rel_1#State = 1 do //Relay1 low
Rel_1#State = 0
http://<espeasyip>/control?cmd=LongPulse,Relay2_GPIO,1,300 //Relay2 5 minute on
endon
A GPIO-kat és az IP-t konfigodnak megfelelően kell beállítani.
ESP nélkül írtam, nincs tesztelve. -
ViZion
félisten
válasz
its_grandpa #17978 üzenetére
Olvasgatom, meg a randomnerds-et és az espeasy.readthedocs.io-t is nézem.
A HW rész már majdnem kész, de ma megint nem lesz időm szenzorokat forrasztgatni. Finder relét is kaptam "olcsón", ami a neten 1100 Ft, itt egyik boltban csak tartóval van ~4900 Ft, másikban kaptam tok nélkül 2800 Ft-ért... Hát annyi, h ez itt van, de a postaköltséget "beépítették" az árba.
Kérdésem is lenne:
az egyik bemenetre active low switch-et állítok, ezt a relé (relé 1) zárja GND-re.
Ehhez a szabály, h ha low, akkor indítson egy másik relét (relé 2) egy időzítővel meghatározott időre (timerset mittomén 5 perc). A kérdés az, h ha letelik az 5 perc, de a relé 1 még low-on tartja a pin-t, akkor a timer újrakezdi?
Mert amit szeretnék az kb ez:
relé 1 low -> 5 percig relé 2 be -> 10 perc szünet -> relé1 újra figyel -
its_grandpa
tag
válasz
ViZion #17971 üzenetére
Rendben de előbb ezt a két oldalt nézd át.
https://www.letscontrolit.com/wiki/index.php/Tutorial_Rules
https://www.letscontrolit.com/wiki/index.php?title=ESPEasy_Command_ReferenceÉn ESPEasy-vel kezdtem a saját eszközök építését (kapcsoló,hőmérő).
Ma már vannak Tasmotás eszközeim is de talán az ESPEasy nekem jobban kézre áll.
Ha vége lesz a kerti szezonnak ismét neki látok. -
ViZion
félisten
válasz
Dißnäëß #17974 üzenetére
wat? Ez local (ESP saját weboldalába lépsz be, a belső hálón. Kifelé router nem is engedi, ahogy pl. nas vagy a nyomtató sem tud kifelé kapcsolatot létrehozni, mert nekik nincs net), nem tuya vagy ilyesmi, amitől az okosotthon topikban rettegnek. Magam is aggódom, h a kínaiak tudják, h valami fogyaszt a konnektorokban, meg kapcsolgatom a villanyt... veszélyes. És igen, működnek net nélkül is.
-
ViZion
félisten
UP!
nah, ezt a topikot kerestem...
ESPeasy-vel valaki foglalkozott már? -
Tomika86
senior tag
Csináltam képeket, hogy mit is csinál, hátha észrevesz valaki valamit benne, pastebinre feltettem a kódot.
- ip cím/nextion beírásakor bejön az index oldal
- aktív lesz a feltöltés gomb is(kód szerint csak akkor ha az esp megkapja a fájl méretet)
- ha rányomok akkor megjelenik a fájl méret tehát belép a soros kiiratáshoz
- mivel nincs rákötve a kijelző, így a hibához lép a programban(statusmessage is megjelenik a soros monitoron), de a failure_html már nem töltődik be. 102. sor
- a weboldal elkezd gondolkodni és hibát ad egy idő után (soros monitoron pedig odalép ahol meghívná 105.sor soros kiiratás)Innét viszont a böngészővel hiába lépek az index oldalra, mindig az Error-t írja csak.
(csak .tft fájl hibaüzenet működik, de itt is megáll a server, hiába lépek a kezdőlapra)Köszönöm a segítséget!
Itt a pastebin:
teljes kód[hiba üzenet soros monitoron]
[gomb megnyomva]
[index és fájl kiválasztva]
[index kép] -
Tomika86
senior tag
Sziasztok!
Átírtam és kommenteztem a Nextion webserveres feltöltést. Az átalakítás oka, hogy a programkódban legyen a 3db html oldalkód, eredetileg SPIFFS-re volt feltöltve.
Lenne kérdésem ezzel kapcsolatban:
- Mi a különbség, hogy send vagy sendHeader (csak mert eredetileg a sendHeader küldte)
- Ez így jó e?
Eredetileg így volt://server.sendHeader(F("Location"),"/failure.html?reason=" + nextion.statusMessage);
Erre írtam át (itt is látni, eredetileg senHeader volt):nextion_update_server.send(200, "text/html", "failure_html?reason=" + nextion.statusMessage);
- Ez így a kiválasztott fájl méretét adja a programnak át, jó így?// Fogadjuk a fájl méretét egyszer, amikor kiválasztjuk a fájlt.
nextion_update_server.on("/fs", HTTP_POST, [](){ // Ez mit jelent? "/fs"
fileSize = nextion_update_server.arg(F("fileSize")).toInt(); // "fileSize" a weboldalról jön
nextion_update_server.send(200, F("text/plain"), "");
});Köszönöm a segítséget!
Itt a teljes kód, loop nélkül:
#include <WiFiClient.h>
#include <ESPmDNS.h>
#include <WebServer.h>
#include <ESPNexUpload.h>
/*
ESP32 használja a hardveres soros portot RX:16, TX:17
Soros port pinek ESPNexUpload.cpp fájlban vannak definiálva
*/
// Wifi adatok
const char *host = "ezaz"; // Host név beállítása
const char *ssid = "ESP"; // Hálózati azonosító név beállítása
const char *password = "xxx"; // Kapcsolódáshoz jelszó
IPAddress local_ip(192,168,10,150); // ESP32 IP cím beállítása
IPAddress local_mask(255,255,255,0); // Maszk cím beállítása
IPAddress gateway(192,168,10,150); // Átjáró cím beállítása
// used only internally
int fileSize = 0;
bool result = true;
// Nextion objektum létrehozása
ESPNexUpload nextion(115200);
// Webserver objektum létrehozása a megadott portszámmal
WebServer nextion_update_server(100);
// Hiba oldal
char failure_html[] = R"=====(
<!DOCTYPE html>
<html lang="en">
<head>
<title>Nextion kijelző frissítő</title>
<script>
function getUrlVars() { // Ez mit csinál?
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
function setReason() { // Ez adja át a reason értékét a weboldalra?
var reason = getUrlVars()["reason"];
document.getElementById("reason").innerHTML = decodeURIComponent(reason);
}
</script>
</head>
<body onLoad="setReason()">
<h2>Frissítés sikertelen!</h2>
Üzenet: <strong><span id="reason"></span></strong>
</body>
</html>
)=====";
// Index oldal
char index_html[] = R"=====(
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Nextion kijelző frissítő</title>
</head>
<body>
<h3>Válaszd ki a .tft fájlt a feltöltéshez</h3>
<form method="post" enctype="multipart/form-data">
<input type="file" name="name" onchange="valSize(this)">
<input id="button" type="submit" value="Feltöltés és frissítés" disabled>
</form>
<script>
function valSize(file){ // megszerezzük a kiválasztott fájl méretét és elküldjük az ESP-nek
var fs = file.files[0].size;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200) { // Ha az ESP megkapta a fileSize-t akkor engedélyezzük a gombot(Feltöltés)
document.getElementById("button").disabled = false;
}
};
xhttp.open("POST", "/fs", true); // Ez a 3 sor mit csinál?
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fileSize="+fs);
}
</script>
<p>A frissítés sokáig tarthat, ha nagy a .tft fájl. Ellenőrizd a feltöltés folyamatát a kijelzőn.</p>
</body>
</html>
)=====";
// Sikeres oldal
char success_html[] = R"=====(
<!DOCTYPE html>
<html lang="en">
<head>
<title>Nextion kijelző frissítő</title>
</head>
<body>
Frissítés sikeres!
</body>
</html>
)=====";
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Fájl feltöltés kezelés
bool handleFileUpload() {
HTTPUpload& upload = nextion_update_server.upload(); // HTTP alapú fájl feltöltés
if (!upload.filename.endsWith(F(".tft"))) { // Ellenőrizzük, hogy a fájl .tft végű-e
nextion_update_server.send(500, F("text/plain"), F("CSAK .TFT FÁJL ENGEDÉLYEZETT!\n")); // Ha nem akkor hibaüzenet kiiratása
return false; // Visszatérési érték flase
}
if (!result) { // Ha result értéke hamis
nextion_update_server.sendHeader("Connection", "close"); // Átirányítjuk a failure.html oldalra a klienst
nextion_update_server.send(200, "text/html", "failure_html?reason=" + nextion.statusMessage); // reason hogy megy innét át a html fájlba? Így jó?
//server.sendHeader(F("Location"),"/failure.html?reason=" + nextion.statusMessage); // Ezt hogy tudom a felső sorba beírni?
return false; // Visszatérési érték false
}
if (upload.status == UPLOAD_FILE_START) { // upload.status értékét vizsgáljuk, értéke 0
Serial.println(F("\nFajl fogadva. Nextion frissitese..."));
result = nextion.prepareUpload(fileSize); // Előkészítjük a Nextion kijelző soros küldéshez és elküldjük a fájl pontos méretét
if (result) { // Ha készen áll a Nextion kijelző a fogadásra
Serial.print(F("Feltoltes inditasa. A fajl merete: "));
Serial.print(fileSize); // Fájl méretének kiírása
Serial.println(F(" bytes"));
}
else {
Serial.println(nextion.statusMessage + "\n"); // Ha végzett akkor kiiratjuk a státusz üzenetet
return false; // Visszatérési érték false
}
}
else if (upload.status == UPLOAD_FILE_WRITE) { // upload.status értékét vizsgáljuk, értéke 1
result = nextion.upload(upload.buf, upload.currentSize); // Írjuk a fogadott byte-kat a Nextion kijelzőbe
if(result) {
Serial.print(F(".")); // Amíg a feltöltés tart, addig pontokat iratunk ki
}
else {
Serial.println(nextion.statusMessage + "\n"); // Ha végzett akkor kiiratjuk a státusz üzenetet
return false; // Visszatérési érték false
}
}
else if (upload.status == UPLOAD_FILE_END) { // upload.status értékét vizsgáljuk, értéke 2
nextion.end(); // Soros kapcsolat bontása és Nextion szoftveres újraindítása
Serial.println("");
Serial.println(nextion.statusMessage); // Kiratjuk a státusz üzenetet
return true; // Visszatérési érték true
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void setup(void) {
Serial.begin(115200);
WiFi.mode(WIFI_AP); // WIFI Access Point módba állítása
WiFi.softAP(ssid, password, 1, 0, 1); // WIFI konfiguráció: SSID és Jelszó, csatorna, rejtett ssid, maximum csatlakozható eszközök
delay(500); // Késleltetés
WiFi.softAPConfig(local_ip,gateway,local_mask); // IP címek beállítása
Serial.print("AP neve ");
Serial.println(ssid); // SSID kiírása
Serial.print("IP cim: ");
Serial.println(WiFi.softAPIP()); // IP cím kiírása
if (!MDNS.begin(host)) {
while (1) {
delay(1000);
}
}
// Szerver inicializálás
nextion_update_server.on("/", HTTP_POST, [](){
Serial.println(F("Succesfully updated Nextion!\n")); // Sikeres Nextion frissítés kiiratása soros monitoron
nextion_update_server.sendHeader("Connection", "close");
nextion_update_server.send(200, "text/html", success_html); // Átirányítjuk a klienst a sikeres oldalra, miután kezeltük a fájl feltöltést
return true;
},
handleFileUpload // Fogadás és fájl mentése kijelzőre
);
// Fogadjuk a fájl méretét egyszer, amikor kiválasztjuk a fájlt.
nextion_update_server.on("/fs", HTTP_POST, [](){ // Ez mit jelent? "/fs"
fileSize = nextion_update_server.arg(F("fileSize")).toInt(); // "fileSize" a weboldalról jön
nextion_update_server.send(200, F("text/plain"), "");
});
nextion_update_server.begin();
Serial.println(F("\nHTTP szerver elinditva"));
} -
válasz
Krilehor #17928 üzenetére
Ha jól gugliztam utána, nem túl komplikált/sok funkciós a távirányítója, esetleg meg lehetne próbálni a távirányítót szétszedni és a kontaktusokra egy-egy vezetéket forrasztva egy ESP32-ről közvetlenül vezérelni azt (emulálni a gombnyomásokat).
Tudsz esetleg szerezni hozzá egy másik távirányítót (hogy ne az eredetit tedd tönkre)? -
Krilehor
tag
Sziasztok.
Kezdő vagyok és segítséget szeretnék kérni. Vagy egy 868.4MHz-en működő rádiós mélyládám (Canton Sub 1200R) amit egy Logitech Harmony Elite távirányítóval szeretnék vezérelni, ami csak infrát ismer. Értelmezésem szerint nekem egy IR-RF gatewayt kellene építenem. Amit kezdésnek gondoltam beszerezni:
- Arduino Uno (Rev3)
- WiFi Module: ESP8266
- Radio module: RFM69HCW vagy AR-LORA-868 vagy egyéb? (itt nekem elég max 10m-es hatótáv)
- valami IR LED és IR receiver
- ha kész akkor mondjuk egy Arduino Nano-ra ráforrasztani és valami házba betenni?WiFi modulet azért gondoltam, hogy weben keresztül is meg lehessen nézni az aktuális állapotot, esetleg még vezérelni is. Ahogy néztem cikkeket, ez evvel a modullal meg is oldható
Rádió modullal valahogy dekódolni is kellene majd a távirányító kódjait, remélem ezt valamilyen libbel meg lehet oldani, legvégső esetben olvastam manuálisan is kivitelezhető
Amiket kinéztem jó irány lenne? Főként a 868MHz-es rádió modulnál vagyok elég bizonytalan, mert mindenhol a 433MHz-ról vannak tutorialok.
-
Tomika86
senior tag
A 3 html fájlt belerakhatom Stringként a forráskódba, át kellene alakítani hozzá. Vagy így a jobb ha fájlként fel van töltve az esp32-re?
Esp32 ota programban benne vannak a forráskódban.
A szerveres dolgot átgondoltam
-
Tomika86
senior tag
válasz
Janos250 #17917 üzenetére
Már szerkeszteni nem tudtam
Szeretnék egyet kérdezni, ha tud valaki segíteni ebben.
Van ebben a könyvtárban webserveres példaprogram.Viszont én már az ESP32 ota feltöltéshez is azt használok, ebbe belezavar ha most a kijelzőét is beletenném a programba?
Ezek első blikkre mindkettőben ott vannak
MDNS.begin(host);
WebServer server(80);
server.begin();
server.handleClient();Nextion upload webserver
#include <FS.h>
#include <WiFi.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <SPIFFS.h>
#include <ESPNexUpload.h>
/*
ESP32 uses Hardware serial RX:16, TX:17
Serial pins are defined in the ESPNexUpload.cpp file
*/
const char* ssid = "your_wlan_ssid";
const char* password = "your_wlan_password";
const char* host = "nextion";
// used only internally
int fileSize = 0;
bool result = true;
// init Nextion object
ESPNexUpload nextion(115200);
WebServer server(80);
String getContentType(String filename){
if(server.hasArg(F("download"))) return F("application/octet-stream");
else if(filename.endsWith(F(".htm"))) return F("text/html");
else if(filename.endsWith(".html")) return F("text/html");
else if(filename.endsWith(F(".css"))) return F("text/css");
else if(filename.endsWith(F(".js"))) return F("application/javascript");
else if(filename.endsWith(F(".png"))) return F("image/png");
else if(filename.endsWith(F(".gif"))) return F("image/gif");
else if(filename.endsWith(F(".jpg"))) return F("image/jpeg");
else if(filename.endsWith(F(".ico"))) return F("image/x-icon");
else if(filename.endsWith(F(".xml"))) return F("text/xml");
else if(filename.endsWith(F(".pdf"))) return F("application/x-pdf");
else if(filename.endsWith(F(".zip"))) return F("application/x-zip");
else if(filename.endsWith(F(".gz"))) return F("application/x-gzip");
return F("text/plain");
}
bool handleFileRead(String path) { // send the right file to the client (if it exists)
Serial.print("handleFileRead: " + path);
if (path.endsWith("/")) path += "index.html"; // If a folder is requested, send the index file
String contentType = getContentType(path); // Get the MIME type
String pathWithGz = path + ".gz";
if (SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)) { // If the file exists, either as a compressed archive, or normal
if (SPIFFS.exists(pathWithGz)) // If there's a compressed version available
path += ".gz"; // Use the compressed verion
File file = SPIFFS.open(path, "r"); // Open the file
size_t sent = server.streamFile(file, contentType); // Send it to the client
file.close(); // Close the file again
Serial.println(String("\tSent file: ") + path);
return true;
}
Serial.println(String("\tFile Not Found: ") + path); // If the file doesn't exist, return false
return false;
}
// handle the file uploads
bool handleFileUpload(){
HTTPUpload& upload = server.upload();
// Check if file seems valid nextion tft file
if(!upload.filename.endsWith(F(".tft"))){
server.send(500, F("text/plain"), F("ONLY TFT FILES ALLOWED\n"));
return false;
}
if(!result){
// Redirect the client to the failure page
server.sendHeader(F("Location"),"/failure.html?reason=" + nextion.statusMessage);
server.send(303);
return false;
}
if(upload.status == UPLOAD_FILE_START){
Serial.println(F("\nFile received. Update Nextion..."));
// Prepare the Nextion display by seting up serial and telling it the file size to expect
result = nextion.prepareUpload(fileSize);
if(result){
Serial.print(F("Start upload. File size is: "));
Serial.print(fileSize);
Serial.println(F(" bytes"));
}else{
Serial.println(nextion.statusMessage + "\n");
return false;
}
}else if(upload.status == UPLOAD_FILE_WRITE){
// Write the received bytes to the nextion
result = nextion.upload(upload.buf, upload.currentSize);
if(result){
Serial.print(F("."));
}else{
Serial.println(nextion.statusMessage + "\n");
return false;
}
}else if(upload.status == UPLOAD_FILE_END){
// End the serial connection to the Nextion and softrest it
nextion.end();
Serial.println("");
//Serial.println(nextion.statusMessage);
return true;
}
}
void setup(void){
Serial.begin(115200);
Serial.println(F("\nRunning UploadServer Example\n"));
Serial.setDebugOutput(false);
if(!SPIFFS.begin()){
Serial.println(F("An Error has occurred while mounting SPIFFS"));
Serial.println(F("Did you upload the data directory that came with this example?"));
return;
}
//WIFI INIT
Serial.printf("Connecting to %s\n", ssid);
if (String(WiFi.SSID()) != String(ssid)) {
WiFi.begin(ssid, password);
}
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print(F("\nConnected! IP address: "));
Serial.println(WiFi.localIP());
MDNS.begin(host);
Serial.print(F("http://"));
Serial.print(host);
Serial.println(F(".local"));
//SERVER INIT
server.on("/", HTTP_POST, [](){
Serial.println(F("Succesfully updated Nextion!\n"));
// Redirect the client to the success page after handeling the file upload
server.sendHeader(F("Location"),F("/success.html"));
server.send(303);
return true;
},
// Receive and save the file
handleFileUpload
);
// receive fileSize once a file is selected (Workaround as the file content-length is of by +/- 200 bytes. Known issue: https://github.com/esp8266/Arduino/issues/3787)
server.on("/fs", HTTP_POST, [](){
fileSize = server.arg(F("fileSize")).toInt();
server.send(200, F("text/plain"), "");
});
// called when the url is not defined here
// use it to load content from SPIFFS
server.onNotFound([](){
if(!handleFileRead(server.uri()))
server.send(404, F("text/plain"), F("FileNotFound"));
});
server.begin();
Serial.println(F("\nHTTP server started"));
}
void loop(void){
server.handleClient();
} -
Tomika86
senior tag
Sziasztok!
Ha valakinek kellene:
[link]Nextion kijelzőre .tft fájl feltöltése ESP32-n keresztül, WIFI kapcsolattal
-
Tomika86
senior tag
válasz
Tomika86 #17908 üzenetére
Na így jó:
#define Gyujtas 15
#define Led 2
unsigned long aktualis_millis;
unsigned long mentett_millis;
unsigned long ido = 20000;
unsigned long kulonbseg_millis;
byte ido_futott;
byte beleptunk;
void setup() {
pinMode(Gyujtas, INPUT);
pinMode(Led, OUTPUT);
Serial.begin(115200);
}
void loop() {
if ((digitalRead(Gyujtas) == 1) || beleptunk) {
kikapcsolas();
}
Serial.println("Fut a program");
delay(1000);
}
void kikapcsolas() {
beleptunk = 1;
if(ido_futott == 0) {
mentett_millis = millis();
ido_futott = 1;
}
kulonbseg_millis = millis() - mentett_millis;
if (kulonbseg_millis <= ido) {
if (digitalRead(Gyujtas) == 0) {
ido_futott = 0;
beleptunk = 0;
Serial.println("Kilepes");
return;
}
Serial.print("Ido kulonbseg: ");
Serial.println(kulonbseg_millis);
Serial.println("Idozitoben vagyunk");
}
else {
Serial.println("Esp leallas itt");
// deep_sleep();
digitalWrite(Led, HIGH);
}
} -
Tomika86
senior tag
Lehet az elején rosszul fogalmaztam, bocsi.
Ez lenne a lényege:
A gomb a gyújtás jel(itt a szimulátorban) . Most úgy van a kijelzőm hogy leveszem a gyújtást akkor átáll a kijelző a bejelentkező oldalra, elmentem az eepromba amit kell és kikapcsolom a kimeneteket.
Itt jön a delay, vár 20secet, majd altatom a kijelzőt és az esp32őt is.Minden jó vele, de ha leveszed a gyújtást, majd vissza egyből akkor a delaynél megáll, és meg kell várni. Utána ébred csak fel újra, ha elaludt.
Ha a kikapcsolas függvénybe belépek mindig kezdenie kellene a 20secnek, ha kilépek belőle akkor nullázódik.
A függvényből kilépés a returnal lenne -
Janos250
őstag
válasz
Tomika86 #17890 üzenetére
Hát, én külön task-be tenném a két külön feladatot, ami globális változókon keresztül tartaná egymással a kapcsolatot. Ha nincs tennivalója az adott task-nek, azonnal adja is tovább a vezérlést, így nem foglal le lényeges időt. Ha mellesleg még másik magra is teszed, akkor meg végképp nem!
Ha az ESP32 mellett döntöttél, érdemes megtanulni, amit nyújt a két mag, és a C++11 ! Vagy még a FreeRTOS, ha sok az időd, de ennek zöme a C++ -al megoldható. -
válasz
Tomika86 #17896 üzenetére
Ez eddig nem volt feladat
#define Gomb 15
#define Led 2
unsigned long aktualis_millis;
unsigned long mentett_millis;
unsigned long ido = 20000;
unsigned long kulonbseg_millis;
void setup() {
pinMode(Gomb, INPUT);
pinMode(Led, OUTPUT);
Serial.begin(115200);
}
void loop() {
if (!digitalRead(Gomb)) {
mentett_millis = millis();
kikapcsolas();
}
Serial.println("Fut a program");
delay(1000);
}
void kikapcsolas() {
kulonbseg_millis = millis() - mentett_millis;
if (kulonbseg_millis <= ido) {
if (digitalRead(Gomb)) {
Serial.println("Visszalep");
return;
}
Serial.println(kulonbseg_millis);
Serial.println("Leallas idozitoben");
}
else {
Serial.println("Esp leall itt");
// deep sleep
}
} -
Tomika86
senior tag
Eddig jutottam, de csak addig működik az időzítés amíg a 20sec le nem telik. Utána egyből jön a leállítás. (Wokwiban próbálom szimulálni, azért van így)
#define Gomb 15
#define Led 2
unsigned long aktualis_millis;
unsigned long mentett_millis;
unsigned long ido = 20000;
unsigned long kulonbseg_millis;
void setup() {
pinMode(Gomb, INPUT);
pinMode(Led, OUTPUT);
Serial.begin(115200);
mentett_millis = millis();
}
void loop() {
if (!digitalRead(Gomb)) {
kikapcsolas();
}
Serial.println("Fut a program");
delay(1000);
}
void kikapcsolas() {
kulonbseg_millis = millis() - mentett_millis;
if (kulonbseg_millis <= ido) {
if (digitalRead(Gomb)) {
Serial.println("Visszalep");
}
Serial.println(kulonbseg_millis);
Serial.println("Leallas idozitoben");
}
else {
Serial.println("Esp leall itt");
// deep sleep
}
} -
Tomika86
senior tag
Sziasztok
Szeretnék segítséget kérni hogy tudom megoldani a következőt:
1.Fut a programom
2. Kikapcsolok egy gpiot
3. Átváltok egy oldalra a kijelzőmön és elindul egy időzítő(10sec)
4. Ha letelt a 10sec akkor deep sleep az esp32Ez eddig 1db delayel megy, de a 10sec mindig eltelik.
Azt szeretném ha a 10sec alatt a gpio mégis bekapcsol, akkor lépjen vissza az 1.pontra, meg képernyőt is váltanom kell.
Ha újra kikapcsolom a gpiot, akkor ismét indul a 10sec.Nem jövök rá mivel tudnám megcsinálni ezt. Pedig tuti egyszerű
Köszönöm
Új hozzászólás Aktív témák
Hirdetés
- OLED TV topic
- Beperelték az Apple-t a részvényesei, mert túlzott az AI-fejlesztések kapcsán
- Elkaszálja az autóipart célzó üzletágát az Intel
- Exkluzív órák
- Óra topik
- Robogó, kismotor
- Nagyrobogósok baráti topikja
- Óvodások homokozója
- Kerékpárosok, bringások ide!
- Álláskeresés, interjú, önéletrajz
- További aktív témák...
- ROG Maximus Z790 Dark Hero
- Új MSI KATANA 17 Gamer Tervező Laptop 17,3" -35% i7-13620H 10Mag 16/1TB RTX 4060 8GB FHD 144Hz
- Apple Iphone 13 128gb csillagfény színű OLCSÓN . Csere/beszámítás
- OnePlus Pad 2 + OnePlus Pad 2 billentyűzet + Extrák
- AKCIÓ!!! GAMER PC: Új i5-14400F +RTX 4060/5060/4070/5070 +Új 16-64GB DDR4! GAR/SZÁMLA! 50 FÉLE HÁZ!
- Csere-Beszámítás! Prémium vizhűtéses számítógép! I9 11900K / RTX 3090 / 64GB DDR4 / 1TB SSD
- SAMSUNG DDR4 REG ECC 32GB 2666MHz RDIMM szerver RAM modulok, nettó 15740Ft+ÁFA, 1 év gar., több db
- Bomba ár! Dell Latitude 5310 - i5-10GEN I 16GB I 256SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
- BESZÁMÍTÁS! MSI Z390 i5 9400F 16GB DDR4 512GB SSD RTX 2060Super 8GB Corsair Carbide Series 200R 600W
- BESZÁMÍTÁS! Dell Latitude 5550 üzleti -Intel Ultra 7 165U16GB DDR5 RAM 1TB SSD Intel Graphics WIN11
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest