Hirdetés
- Ne várj sokat a vásárlással: drágulás a láthatáron
- Azonnali alaplapos kérdések órája
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- SSD kibeszélő
- HiFi műszaki szemmel - sztereó hangrendszerek
- Bluetooth hangszórók
- A napi Windows-hiba? Teljes adatvesztés Bitlockerrel
- Milyen széket vegyek?
- OLED monitor topic
- Fujifilm X
-
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
-
Teasüti
nagyúr
Jó reggelt! Szeretnék egy gps és gsm modult, viszont csak egy UART portom van szabad (minden egyes egyéb port felhasználva az ESP-n). Van ilyen 2in1 modul, ami képes egy csatornán kommunikálni mindkét egységgel?
Mondjuk esetleg ez?Illetve filózok még azon, hogy akkuval kéne megtámogatni a projektet éppen a tracking miatt (amúgy gyújtásról megy a táp), ebben tudnátok segíteni? Ez lenne az első akkus kísérletem, se hardver terén, se programozásban nem ismerem a feltételeket.
Köszönöm! -
Teasüti
nagyúr
ESP32-nél a flash-hez kapcsolódó lábak mindig minden esetben foglaltak a háttértár műveletek számára?
Az SD2, SD3 lábakon lévő UART portot nem lehet felszabadítani vhogy? Nincs vmi olyan üzemmód, amikor csak fele csatornán megy a flash memória? -
Janos250
őstag
válasz
Teasüti
#8862
üzenetére
Elővettem egyet (doit , ESP32 devkit V1, mert ez van kéznél)
Van rajta egy sárga 107J tantál kondenzátor (https://www.ebay.com/itm/10PCS-6-3V-100UF-B-case-107J-10-SMD-Tantalum-Capacitors-3-5mm-2-8mm/391354380476?hash=item5b1e89f0bc:g:y5QAAOSw5dNWhitt)
Mellette két kisebb kondi felirat nélkül
Az USB csati kozelében látok egy kondit, egy fekete nemtudommit, egy csomó ellemállót, 2 db. J3Y tranyót, és két ledet.
A tokozott hibridben (ESP-WROOM-32) a kapcs. rajz alapján van több mint egy tucat kondi. -
Teasüti
nagyúr
válasz
Janos250
#8861
üzenetére
Táp szűrő kondikként is szoktak rá hivatkozni. Igen, a Vcc és GND közé rakott kondik a chip Vcc lába előtt.
Ha ezt nézem, akkor e szerint tele van bypass/táp kondikkal a devkit az LDO előtt és után, az usb-uart chip-nél és az esp modulnál.
Viszont ránézésre a kéznél lévő modulomon és a rajzon nem egyenlő számú kondit vélek felfedezni.
És be se tudom azonosítani a Vdd33-on lévő kondikat. -
Teasüti
nagyúr
ESP32 dev lapokon vannak bypass kondik, ugye?
-
tvamos
nagyúr
válasz
dangerzone
#8854
üzenetére
Szerintem vedd meg, nagyon szep dolog tamogatni az alapitvanyt! En is vettem toluk nehany Uno-t, meg Leonardot.
Amugy meg kene neked par szervo, meg tobb motor, mint ami ebben van!
Ahogyan aryes is javasolja, erdemes ESP32 alapu vezerlot venni, szerintem azt a verziot, ami van kis LiIon tolto, meg OLED display is. Akkor minden megvan, ami kell, es meg a szunetmentes tap is megoldott.
-
válasz
dangerzone
#8854
üzenetére
Ezt és ennyiért semmiképpen.

Vegyél egy esp32 alapú vezérlőt, ott rögtön wifi és bt vezérlési lehetőséget is kapsz külön eszközök nélkül, plusz kis méretű és pl a wemos lolin32 vagy annak klónjaiba az akkus táplálás is bele van építve töltő elektronikával. Hozzá lehetőleg i2c alapú motorvezérlő, és motorok. Ha érdekel, tudok adni pár linket azokról, amiket én rendeltem (AliExpressről). -
Teasüti
nagyúr
Ez egy 4 MB-os ESP8266 usb csatlakozóval és ch340 vezérlővel? Hmm, tetszik.
Nem találok infót, hogy miben különbözik a V2 és V3. Nem feltételezem, hogy más lenne a lábkiosztás, de azért ellenőrizd, hogy az adatbusz ugyanúgy van-e bekötve! Van másik eszköz is az adatbuszon, vagy csak a hőmérő? A felhúzó ellenállásokban talán lehet eltérés, meg kéne nézni szkóppal milyen minőségű jelet ad az egyik és a másik. Ha programozható, akkor kikapcsolnám és csak a külső felhúzókat használnám. Ha több eszköz is lóg a buszon, akkor ott lehet, hogy túl feszesek a felhúzók így együtt. Vagy pont ellenkezőleg. Mérés nélkül nem fog kiderülni.
Esetleg próbáld meg 100 kHz-en járatni a buszt! -
Janos250
őstag
Nem kell megijedni az IDF, freeRTOS függvények használatától arduino rendszerben, mert az is ezek felett dolgozik, általában használhatók a függvényei. (Általában, mert pl. a vTaskList() nem)
Pl.:
"The I2S peripheral supports DMA meaning it can stream sample data without requiring each sample to be read or written by the CPU."
https://espressif-docs.readthedocs-hosted.com/projects/esp-idf/en/latest/api-reference/peripherals/i2s.html -
Találkoztatok olyan ESP32 boarddal, amelyiken van USB /a könnyebb programozhatóság végett/, de le is lehet kapcsolni mindent az SoC-n kívül, ha valami low power cuccok akarok csinálni?
-
Tankblock
aktív tag
Hello
Tárolva hogy mekkora MHz működjön azt a sdkconfig-ban van.
MSYS32 ben / Linux alatt ha betallózod akkor
make menuconfigparanccsal tudod editálni relatíve egyszerűen.Nem javaslom kezdőként hogy ehhez hozzányúljon bárki is, főleg ha 3rd party Arduino libeket futattok amik függnek az órajeltől.
DMA más kérdés Technikal reference és a példaprogramok mutatják az utat. Én az ESP-IDF drivereit használom mert ahhoz van dokumentáció, és működik a DMA is --> RTM jó példa.
-
Janos250
őstag
" a 2 mag egyben 240 MHz-e, tehát külön 120-120 MHz-en fog menni?"
Mindkettő külün-külön 240-en jár. Ez biztos, használtam.
"órajel pontosságról nincs információd?"
Sajnos nincs.
"Jó lenne ha fejlesztenék a kevésbé használt részeket is ESP32-nél."
Fejlesztegetik azt,
https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
A legutóbbi májusi. Ez az ESP32-re a biblia.
RTC: 0x3FF4800C, 0x3FF48010 ? 634. oldaltól
A DMA-ról is van valami, a 115. oldaltól.
Ne feledd, hogy az AHB bus csak 80 Mhz-es! Mivel az összes periféria bármely pinhez kapcsolható, ezért egy - számomra - szokatlan megoldást használ, de ha beleéli magát az ember az ESP32 gondolkodásmódjába, elég jól használható.
Időzítésre én az órajel ciklusok számlálóját használtam, az a 240 Mhz miatt nagy felbontású. -
válasz
Janos250
#8827
üzenetére
Köszi a részletes kifejtést.

Azt nem tudod esetleg, hogy a 2 mag egyben 240 MHz-e, tehát külön 120-120 MHz-en fog menni?
Én is olvastam, hogy 32 kHz-es kristályt 2 GPIO feláldozásával hozzá lehet kötni az ESP32-höz. Viszont fórumon azt írták, hogy kicsit bugos, illetve annyira jó minta kód erre sincs. Úgy érzem el kell engednem ezt a részt

Egyébként amit meg szeretnék valósítani, annak egyik részét az óra kiíratása képezné. Mivel nekem nem kell semmilyen dátum, csak egyedül az óra, perc, másodperc kiíratás, ezért nem szeretnék külső RTC modult használni. ESP32 időzítővel generálok másodpercenként egy megszakítást és ebből számolom a percet, órát. Na és itt jön a kérdés ami miatt keresgéltem honnan veszi a CPU az órajelet és az mennyire lehet pontos (erre még mindig nem találtam sajnos választ a neten, órajel pontosságról nincs információd?
), mert a timer a CPU órajelet osztja le és generál megszakítást. Eddigi 1 napos teszt alapján másodperc alapon úgy látom, hogy pontos és nem késik. Persze 1 nap az kevés, ha mikrosec vagy kisebb késés van akkor ahhoz jóval több nap/hónap kell hogy kiderüljön.
Bizonyos részeket egyszerűbb volt STM32-vel megvalósítani, de igazad van ott is kell azért sokszor adatlapozni. Jó lenne ha fejlesztenék a kevésbé használt részeket is ESP32-nél. Vagy ha másként nem, akkor STM-el kell megvalósítani, az általánosabb dolgoknál mehet ESP32. -
Janos250
őstag
"ESP32S az melyikhez tartozik,"
Egyikhez se! 240-en megy. Az ESP32S az ESP32WROOM hibrid leánykori neve, ami tartalmazza magát a procit, + memóriát, és pár egyéb alkatrészt.
https://c.76.my/Malaysia/ai-thinker-esp32-esp-32s-wifi-wlan-bluetooth-module-varsembedded-1703-21-varsembedded@9.jpg
https://pbs.twimg.com/media/Cuf9fLzVIAEdzo_.jpg"Ha nem RTOS-t használok"
Tudtommal bárhogy is használod - extrém alacsony szintet kivéve - mindenképpen RTOS felett dolgozol, legfeljebb nem látod, de használható a teljes apparátusa.
Ha Arduino alatt használod, akkor a WiFi a 0-n megy, a saját programjaid az 1-en, de megszabhatod, mi hol menjen. Hogy a loop hol menjen, azt a main.cpp-ben állíthatod.
"DMA-val nem nagyon találtam mintákat sajnos, kíváncsiságból pedig jó lenne." Én se, pedig én is kíváncsi ember vagyok :-)
"Ezek közül jelenleg csak az órajel a kérdéses, illetve az, hogy azt honnan veszi"
Nem tudom honnan veszi, de 240Mhz. Egyik módszerrel LED meghajtásnál én ebből számoltam az időzítést, és szkóp szerint is jó lett.
"nehézkesebb egy STM32-höz képest." Így igaz! :-(
Az RTC, azt hiszem tud használni külső 32kHz-es kristályt, de az KÜLÖN PROCESSZOR,SAJÁT UTASÍTÁS KÉSZLETTEL, SAJÁT MEMÓRIÁVAL! Azt assembly szinten programozni szintén macerás.
Egyébként az STM32-nél is muszáj megnézni a manuálban a regisztereket, ha érteni akarod, hogy mit csinálsz.
A hardver manualja már az ESP32-nek is elég jó, bár messze nem teljes, sőt, hibát is találtam benne. -
Nekem ESP32-nél volt hogy nem használtam 2-3 hetet. Most ismét elővettem és vagy eltűnt a drivere az USB-TTL chipnek vagy nem tudom mi történt, de újra kellett telepíteni. Igaz nálam nem volt ilyen hibaüzenet, de egy próbát megérhet az FTDI chip driver újratelepítése, ha van újabb verzió akkor azzal.
-
válasz
Janos250
#8820
üzenetére
Adatlap szerint: "7-stage pipeline to support the clock frequency of up to 240 MHz (160 MHz for ESP32-S0WD and ESP32-D2WD)" Nem tudom ESP32S az melyikhez tartozik, mert így lehet 160 MHz is, illetve egyenként 160 vagy 240, esetleg a kettő együtt adja ki. Utóbbira gondolok amiből jön a következő kérdés.
Ha nem RTOS-t használok, akkor nem lehet tudni melyik cpu-t használja a program futtatására? Lehet csak egyik, de lehet akár mind a kettő is? Ezt jó lenne tudni, mert nem mindegy egy számításigényes program esetén.
DMA-val nem nagyon találtam mintákat sajnos, kíváncsiságból pedig jó lenne.Ezek közül jelenleg csak az órajel a kérdéses, illetve az, hogy azt honnan veszi. A többi csak érdekelne, mert ki tudja mikor jöhetne jól. Viszont kezd körvonalazódni, hogy a gyakori feladatokra van megírva az arduino IDE, egyébre mint a DMA vagy órajel változtatás már nehézkesebb egy STM32-höz képest. Mivel nem rég szóba került, hogy egy 2 éves hardver esetén még mindig nincs meg minden támogatottság szoftver oldalról, vagy teljesen vagy részben pl bluetotoh mesh, de most az órajel és a DMA is nekem úgy tűnik hasonló cipőmen jár, kicsit sajnálom, mert egyébként jó eszköz az ESP32.
(#8819) Tankblock
Köszi, ez így szimpatikus. Ha eljutok eddig a projektemben, akkor rá fogok nézni jobban és lehet akkor lesz majd még kérdésem. -
Janos250
őstag
CPU órajele 240 Mhz. Van valahol egy fájl - úgy emlékszem - ahol lehetne csökkenteni, de nem emlékszem mi, nem próbáltam.
A prifériák órajele 80 Mhz.
"Ha nem rtos-ban programozok". Tudtommal nincs kidolgozva az RTOS nélküli lehetőség ESP32-re magasabb szinten.
"DMA-t támogatja az ESP"
Úgy tudom, hogy az SPI, UART, I2S ezt használja, de mintha külön engedélyezni kellene, nem használtam.
A DMA mindenképpen csak az iRAM-ot tudja használni, tehát amit használni akarsz, oda kell helyezni.Minden, ami benne van használható, csak egyik-másik elég macerás. A Technical Refrence már elég jó, abból lehet kibogarászni, de munkás dolog regiszter szinten állítgatni az egyes biteket.
Én az RMT használatát bogarásztam ki, és tanultam meg, de bizony idő kellett hozzá. -
Nézegetem az órajeleket, timer-t. Kíváncsi voltam, hogy mit használ alapból a timer-hez. Adatlap szerint a cpu órajelét használja. Azt hogy a CPU mit használ elvileg be lehet állítani de arduino alatt nem találtam meg, hogyan lehet változtatni, hogy mit használjon a CPU. Ahogy néztem van egy 40 Mhz-es kristály a shield alatt. Tehát lehet belső 8 MHz, külső 40 MHz és ha külsőleg csatlakoztatni 32 kHz-es kristály.
Azt, hogy ezeket hogyan lehet beállítani, melyiket használja, ne menjen mondjuk 160 MHz-el, hanem csak 80 MHz-el a cpu arudino alatt hogyan lehet beállítani? Közben pedig még egy kérdés jutott eszembe. Ha nem rtos-ban programozok, akkor magától választja ki melyik mag dolgozza fel a kódot vagy csak egyiket használja? A 160 MHz ki van használva valahogyan?
Még egy dolog, a DMA-t támogatja az ESP, de arduinora szintén nem találtam kódot. Erre sincs példa?
Így hirtelen sok a kérdés, remélem sikerül mindre választ kapni. Egyre inkább előjön, hogy lehet még se mindenre a legjobb arduino-ban a programozás és korlátokba ütközök?
-
tvamos
nagyúr
Ebbol a LED-bol gondoltam rendelni otthoni projekthez: SK6812 RGBNW . Van pozitiv, vagy negativ tapasztalatotok? Eddig csak WS2812B-t hasznaltam. (Gond nelkul...)
Ja igen... ESP8266EX-szel hajtanam meg. -
-
Janos250
őstag
válasz
choco01
#8793
üzenetére
Így?
#define WEBport yyyyy
ESP8266WebServer WEBserver ( WEBport );
vagy ESP32WebServer WEBserver ( WEBport );
uint8_t ServerIPlocal[4] {192,168,1,140} ; //Node static IP kinek mi
uint8_t gatewayIPlocal[4] {192,168,1,1} ; // ami neked
uint8_t subnetIPlocal[4] {255,255,255,0} ;
const char* ssid = "mySSID";
const char* password = "1234567890";
void setup(void) {
WiFi.begin(ssid, password );
delay(1000); // min 1000
WiFi.config(ServerIPlocal, gatewayIPlocal, subnetIPlocal) ;
delay(1000);
WEBserver.on("/", handle_index);
WEBserver.begin();
} ;
void handle_index() {
String s = "<html>\r\n";
s += "<!DOCTYPE HTML>\r\n";
s += "<head>\r\n";
s += "<meta charset=\"UTF-8\">\r\n";
s += "<title>minta</title>\r\n" ;
s += "</head>\r\n";
s += "<body>\r\n";
.
.
.
.
.
s += "</body>\r\n";
s += "</html>\n";
WEBserver.send(200, "text/html", s);
} ; -
Janos250
őstag
válasz
choco01
#8790
üzenetére
"milyen lehetőségeim vannak"
Pl. a legegyszerűbb:
ESP32 AP, WEB szerver, és erre kapcsolódnak a szenzorok is.
Rálépsz az ő wifi hálójára telefonnal és látod.Ha kintről is akarod látni: Egy Wii routerhez kapcsolódik az ESP 32. WEB egy adott portra, amit a routerben átirányítasz az ESP-re. Így Ausztráliából is látod.
-
dew28
aktív tag
Arra mi lehet a megoldas, hogyha esp32 alol kiesik az AP, akkor legalabb probaljon meg ujracsatlakozni? se wifi.reconnectre nem reagal, se semmire se nagyon..
-
Teasüti
nagyúr
Na várjál az más téma! Én ott végfelhasználó voltam, én ott letojtam hogy milyen SDK-t ad kicsoda. De azért a játékfejlesztőknek már a kezükben kellett legyen a cucc előre, különben hogy érkeznek rá a címek? Mi itt kérem szépen "fejlesztők" vagyunk (muhahha).
Miért nincs teljes körű SDK-nk?
(Nem Arduino Core, hanem még az ESP IDF se támogat mindent, amit a hardver tudna.) -
choco01
addikt
Valaki foglalkozott már itt MQTT-s adatgyűjtéssel?
Most akkor ehhez ha jól értem egy script az esp-re és egy php-ban a webserveremen?


-
Tankblock
aktív tag
válasz
Teasüti
#8775
üzenetére
A MESH egy hálózati topológia. A HW -nek elvileg képesnek kellene lennie rá. Az ESP32 egyértelműen a Wifire és a Bluetooth 4LE épített. Ezek számomra a használati értékét növelik. Simán el tudnám képelni, hogy a meglévő SonoFF Touch ba panelt cserélek ESP32 re és átugrok BLE-MESH networkre, vagy a mostanival Wifi MESH re. Még filózok rajta, mert a 8255 is képes Wifi-Mesh re. A Gateway modul a problémás ami összeköti a MESH hálózatot a saját Networkkel/felhővel/serverrel....
Arra még nem láttam - számomra - jó megoldást.
-
Tankblock
aktív tag
Most találtam GitHubon ütik az ESP fejlesztőit már vagy 2 éve a Bluetooth MESH-ért is. A Wifis épp csak megyeget, már látni Demokat.
Ha ez működik rendesen akkor majd lehet igazán jó projecteket csinálni ESP32-vel. -
Tankblock
aktív tag
válasz
vargalex
#8764
üzenetére
én meg ESP-01 et ehhez a projecthez meg AtTiny13A-t.
A beépített linear DC-DC miatt - ezek sohasem lesznek jók másra, mint kipróbálni hogy működik e - ha azt lecserélnék egy sokkal hatékonyabbra akkor talán...
van 2 Wemos board de nem nyűgözött le, maradok a saját tervezésű boardoknál, igaz lassabban jutok el a project végére, mert több idő, több hibalehetőség, és több füst :-P
-
Teasüti
nagyúr
válasz
Janos250
#8754
üzenetére
Lehet az a parancs nem bonyolultabb, mint egy Serial.print().
De a wifi konfigurálása igen. Az adhoc hálózat telefonon meg körülményes ha közben nem akarsz lecsatlakozni a router-ről sem - nem is hiszem, h ez megoldható Android-on. Illetve a mobilnethez is konfigurálni kell a telefont, mert amúgy az ESP-n keresi a netet. Nem az ESP-n kényelmetlen, hanem a telefonon.
Amíg BT-t megkeresem csatlakozok és örülök (és párosítás után mindez az alkalmazásból történik pár pillanat alatt), addig a wifi nem ilyen felhasználóbarát. Wifi az csak úgy jó, ha router-re csatlakozik az eszköz. Peer-to-peer csatlakozásra szerintem nem való.
Ez majd a Wifi Direct-el változhat - az nem dob le a csatlakozott hálózatról sem a telefonon -, de addig is a BT az egyetlen kényelmes megoldás csatlakoztatott eszközökre*.*Wiki szerint az IOT is ebbe a kategóriába esik, de amit ezalatt én értek, az inkább a hordozható eszközök amik közvetlenül kapcsolódnak a vezérlő eszközhöz, nem hálózaton keresztül. Pl egy okosóra, az a legjobb példa a csatlakoztatott eszközre az én értelmezésemben.
A Classic BT Serial teljes mértékben implementálva lett tavaly óta, így már én sem a BLE könyvtárat erőszakolom meg erre a feladatra. Classic BT Serial-ra meg van egy rakás alkalmazás is Play-en, de én pl MIT App Inventor-ban kalapálok hozzá sajátot.
Van hozzá beépített példa is, tutorial se kell.
Ennyi az egész zanzásítva:#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
SerialBT.begin("ESP32test"); //Bluetooth device name
SerialBT.write();
SerialBT.read();De valóban olyan egyszerű az egész, hogy be is másolom ide:
#include "BluetoothSerial.h"
//#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
//#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
//#endif
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32test"); //Bluetooth device name
Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.write(SerialBT.read());
}
delay(20);
} -
Janos250
őstag
Mindenkinek mondom, akik artista mutatványokkal akarnak ESP WiFi-n P2P küldeni egy karaktert - ahogy korábban én is - használjátok a WiFiClient osztályt!
-
Az A0 port analóg feszültséget mér, 0 és a tápfesz közt, az akkumulátor feszültségét is meg tudja mérni 3,3V-ig, de afölött tönkremegy. Ezért két ellenállásból csinálsz feszültségosztót, ami leosztja az akku feszültségét, és azt méred meg az analóg porton.
A bekötési vázlat alapján akár 4,2V-ot is kaphat az A0 port teljes töltöttségnél, ez nem túl egészséges szerintem. Mint ahogy az sem, hogy 3,0-4,2V tápot adsz neki az 5V lábon. A belső konverteren kb 0.6V esik, tehát 3,6V akkufeszültségnél az esp 3,0V körüli tápot kaphat. Nem tudom mennyi a minimum tápfeszültség, aminél elindul, de ez nekem határesetnek tűnik. Inkább egy 3,3V boost-buck konverter kéne, és a 3,3V lábon megtáplálni. -
Janos250
őstag
Lehet, rosszat mondok, akkor bocs:
az ESP8266WiFi.cpp fájl végén van aESP8266WiFiClass WiFi;sor. Tehát az ESP8266WiFiClass típusú, WiFi nevű objektumot hozza létre, ezért használhatjuk a programban a WiFi,begin és hasonló metódusokat.
Nem tudom, soha nem próbáltam, enged-e több ESP8266WiFiClass objektumot létrehozni, de én ezt próbálnám ki:ESP8266WiFiClass WiFi2;
.
.
WiFi2.begin(ssid, password );Gőzöm nincs, hogy működik-e.
Ha csak időnként kellene az egyikre írni, időnként a másikra, akkor én ezt próbálnám:
Bezárnám WiFi.end()-el, és némi várakozás után megnyitnámWiFi.begin(ssid, password );
másik ssid, password párossal. -
Teasüti
nagyúr
válasz
Janos250
#8733
üzenetére
Mindkettőnek megvan a maga szerepe. IOT-re és önálló eszközökre egyértelműen wifi. A csatlakoztatott eszközökre viszont inkább a BT. Wifi nem igazán helyettesíti a BT-t (Wifi Direct-re meg még nem láttam példát ESP32-n, az még várat magára), az adhoc AP üzemmód meg a legkevésbé se ideális megoldás peer-to-peer használatra, az túl kényelmetlen és kompromisszumos a vezérlő eszközön, valamint bonyolultabb is a BT-nél: BT egyszerű mint az UART, wifihez meg kell először is egy konfig, aztán lehet tartalmat gyártani a webes letöltéshez - na inkább hagyjuk.
Ár/értékben meg lehet hogy a legjobb az ESP, de akárhogy is nézem annak az áráért egy maréknyi Atmel-t lehet venni. És nagyon sok feladathoz amúgy is overkill egy ESP32. -
válasz
Janos250
#8731
üzenetére
Ugye a hsz többi részét is olvastad?

Különben meg arra gondoltam, hogy annak idején, mikor én jöttem először ide tanácsért, és kérdeztem a wireless lehetőségekről, valamelyik kollégával hosszasan vitáztatok, hogy az esp mennyivel jobb a hc-06-nál, a wifi a Bluetooth-nál. Nem rosszindulatból írtam.
-
Szerintem rendelhetsz nyugodtan többet, mert ha egyszer elkezdesz arduinozni, úgysem tudod abbahagyni.

Persze más (nem usb centrikus) feladatokra a fent említett ESP32 a legjobb ár-érték arányú lap most a piacon.
most látom, hogy Dell helyett Lenovo-t írtam az előbb, de a lényeg ugyanaz.

-
Janos250
őstag
Apránként jutnak eszembe a dolgok:
a Serial.print megfelelőjeként az ESP32-n a szokásos cout is használható, pl.:cout << " Hello World ! " << endl;Ennek ugyan semmi előnye a Serial.print-hez képest, de van aki inkább ezt a C++ szokásost kedveli, van aki az Arduino jellegű Serial.print-et.
-
Tankblock
aktív tag
Lassan szervezhetnénk arduino nyári tábort

Tematika:
Elektronikai alapfogalmak
Programozás alapjai C, C++
Eszközök használata (Multimeter, oszcilloszkóp, tápegység)
Tervezés és Kivitelezés - azaz hogyan olvass manuállt Atmega328P v ESP8266 v ESP32
Tervezési minták
Project próbapanelon
Hibakeresés - honnan száll a füst....
forrasztásA probléma az hogy minegyik része több hetes lehetne......
-
válasz
choco01
#8681
üzenetére
Ha minden igaz ez a mintakód neked is meg van, az esp32-vel települ fel. Itt csak a wifi.h kell. Webserver, Webclient nem. Nem tudom ezek mennyire "official" fájlok, de próbáld meg csak a wifi.h-t használni többi wifi-s header fájlt kommentezd ki, lehet másikban is van hasonló és bezavar.
WebServer server ( 80 );Ezt pedig ne így nevezd el hanem:WiFiServer server(80); -
choco01
addikt
válasz
choco01
#8679
üzenetére
Most ilyen: De ugye hibát dob annál a sornál..

Lehet a WebServer server ( 80 );-vel van baj? WifiServer server(80) is létezik..
#include <ESP32WebServer.h>
#include <Wire.h>
#include "Adafruit_BME280.h"
#include "SSD1306.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
WebServer server ( 80 );
const char* ssid = "esp";
const char* password = "12345678";
#define I2C_SDA 21
#define I2C_SCL 22
#define SEALEVELPRESSURE_HPA (1013.25)
#define BME280_ADD 0x76
Adafruit_BME280 bme(I2C_SDA, I2C_SCL);
SSD1306 display(0x3c, 21, 22);
double pt,lny,hp,hom;
/*double lny=1015.20;
double hp=-32.12;
double hom=-32.12;
double pt=62.07;*/
void idojaras(void);
void kijelzo(void);
void html(void);
void setup() {
Serial.begin(115200);
Serial.println("Program Start");
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
bme.begin();
idojaras();
delay(100);
kijelzo();
delay(100);
}
void loop()
{
idojaras();
delay(1000);
kijelzo();
delay(1000);
html();
delay(100);
}
void idojaras()
{
pt = bme.readHumidity();
hom = bme.readTemperature();
hp = hom - 0.36 * (100.0 - pt);
lny = bme.readPressure() / 100.0F ;
lny=lny+13;
delay(1000);
}
void kijelzo()
{
display.init();
display.drawString(0, 0, "Hömérséklet:");
display.drawString(62, 0,String(hom) );
display.drawString(90, 0, " °C");
display.drawString(0, 10, "Páratartalom:");
display.drawString(65, 10, String(pt));
display.drawString(90, 10, " %");
display.drawString(0, 20, "Harmatpont:");
display.drawString(62, 20, String(hp));
display.drawString(90, 20, " °C");
display.drawString(0, 30, "Légnyomás:");
display.drawString(60, 30, String(lny));
display.drawString(98, 30, " hPa");
display.drawString(0, 40, "Légszenny.:");
display.drawString(60, 40, "nA");
display.drawString(85, 40, " %");
display.drawString(0, 50, "UV sugárzás:");
display.drawString(65, 50, "nA");
display.display();
}
void html()
{
WiFiClient client = server.available();
while (client.connected())
{
if (client.available())
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML><html><head>");
client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head>");
client.println("<h1>ESP32 - Web Server</h1>");
client.println("</html>");
break;
client.println( "<body>");
client.println("<br><br>");
client.println("<body><h1>Időjárás adatok:</h1>");
client.println("<table border=\"2\" width=\"456\" cellpadding=\"10\"><tbody><tr><td>");
client.print("</td><td colspan=\"2\"><h2>Hőmérséklet = ");
client.println(hom);
client.print("<h2>Páratartalom = ");
client.println(pt);
client.print("%</h2></td></tr><tr>");
client.print("<h2>Harmatpont = ");
client.println(hp);
client.print("°C</h2></td>");
client.print(" <h2>Légnyomás = ");
client.println(lny);
client.print("hPa</h2></td></tr><tr>");
client.println("</h3>");
client.print("<br>");
client.print("</body>");
client.print("</html>");
delay(10);
client.stop();
Serial.println("client disconnected");
}
}
} -
choco01
addikt
Na most letöltöttem egy másikat a ami direkt esp32 és i2c és abban már át van írva alapból így már megy!

Elvileg mennie kéne mellette a webservernek is?Itt elindul kiírja serialra az IP-t de csak tölti az oldalt nem jön be..meg így mellette a kijelző sem frissül mint ha megakadna a net függvény..
8266-on ment simán, itt valamiért nem akar pedig lefutni lefut ez a kód:
void net()
{
WiFi.enableSTA(true);
delay(2000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(300);
server.begin();
Serial.println ( "HTTP server started" );
WiFiClient client;
client.println( "<!DOCTYPE html>");
client.println( "<html>");
client.println( "<head><META HTTP-EQUIV=\"refresh\" CONTENT=\"15\"></head>");
client.println( "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />");
client.println( "<body>");
client.println("<br><br>");
client.println("<body><h1>Időjárás adatok:</h1>");
client.println("<table border=\"2\" width=\"456\" cellpadding=\"10\"><tbody><tr><td>");
client.print("</td><td colspan=\"2\"><h2>Hőmérséklet = ");
client.println(hom);
client.print("<h2>Páratartalom = ");
client.println(pt);
client.print("%</h2></td></tr><tr>");
client.print("<h2>Harmatpont = ");
client.println(hp);
client.print("°C</h2></td>");
client.print(" <h2>Légnyomás = ");
client.println(lny);
client.print("hPa</h2></td></tr><tr>");
client.println("</h3>");
client.print("<br>");
client.print("</body>");
client.print("</html>");
delay(100);
client.stop();
Serial.println("Lecsatlakoztatva.");
} -
choco01
addikt
Valaki próbált már ESP32-vel BME280-ból adatokat kiíratni oledre?
Valamiért 0,00-t olvas ki és azt írja ki mondjuk hőmérsékletnek..

-
Janos250
őstag
válasz
Teasüti
#8647
üzenetére
Attól függ, mit értünk protokoll hiba alatt.
Az elején kiküld a gép az ESP felé néhány bájtot, ebből állapítja meg az ESP a baudrate-et. Úgy látszik, hogy amikor komplett csomagot küld, akkor nem minden bájt elejétől kezdi a szinkront, hanem "számolja", és ha hosszú a csomag, akkor kvarc nélküli lapokon elcsúszhat.
Az megoldás, ha ez ember az esptool.py-ban lecsökkenti az adatcsomag hosszát. Akkor viszont a bin fájlt kell exportálni, és az esptool.py-al kell feltölteni. Le lehetne fordítani esptoll.exe-re - elvileg. Nekem nem sikerült működőképes verziót varázsolni.
Kipróbáltam alacsonyabb baudrate-el, de úgy meg az elején kiakadt. -
Janos250
őstag
"Resetet nem VCC-re kell húzni?" Nem. Földre.
"Másik hogy az USB-TTL konverter az UNO lapon szerintem 5V-os, te pedig 3v3-ra kötötted a 8266-ot"
Az UNO kapta a delejt a gépről, azaz 5V-ot. Az ESP 3.3V-ot.
Az ESP több információ szerint elviseli az 5V-os szintet a lábain, ha VCC 3.3V.Mellesleg jellemző a kis kínaira:
A konverter chipre HX van írva, a programjuk meg XA/HXA-ként azonosítja.
"Windows 8 is NOT supported in HXA/XA chip versions" -
Teasüti
nagyúr
válasz
vargalex
#8629
üzenetére
Úgy tűnik éppen ez a hiba forrása.
Nem tudom mi történik pontosan mikor a j átfordul nullán, de olybá tűnik felülír vhol vmit, amit nem kéne.
Ezt alátámasztandó a hiba elhárul ha az elemek számát 255-re emelem vagy megakadályozom, hogy átforduljon.
Ahogy tanulmányozgattam a C string-eket, ezek csak pointerek és nincs megkötve az elemek száma. Ezért is nem panaszkodott, mikor a data[8]-ba beraktam vagy háromszor annyi elemet.
ESP32-nél talán azért nem jött elő, mert szimplán mocskosul sok memóriája van az Uno-hoz képest.
-
vargalex
félisten
válasz
Teasüti
#8630
üzenetére
Egy ESP32 van éppen kéznél, azon jónak tűnik.
-
Teasüti
nagyúr
Azért kell reset-ben tartani az Uno-t, mert ugyanazon az UART porton van ilyenkor az Atmel328 és az ESP8266. Soros buszon meg nyilván nem lóghat egyszerre három eszköz.
Mondjuk szerintem az is jó, ha kikapod az IC-t a helyéről, de akkor már egyszerűbb bedugni egy darab vezetéket a reset-re.
(#8605) aryes
Prózai oka van: nincs usb-soros konverterem. És miért vegyek külön, amikor van belőle minden usb képes lapon? A Nano-kon ott a CH340g, az eredeti Uno-mon meg tököm tudja mi. De működik szuperül.
-
Teasüti
nagyúr
válasz
Janos250
#8598
üzenetére
Semmit nem kell csinálni vele. Én csak az usb-soros chipet használom róla.
Az Uno le van húzva reset-re, így fel se boot-ol. Ellenben a TX/RX lábak bypass mennek tovább az ESP-re.Ennyi az egész:
Uno - 8266
3V3 - Vcc
RX - TX (5V toleráns az I/O lábakon)
TX- RX
GND - GNDUno-n: Reset -> GND
Gyakorlatilag USB-Soros konverterként használod a lapot.
IDE-ben meg egyértelműen az Uno Com portjára csatlakozol és alaplapnak meg az ESP-t állítod be. -
Janos250
őstag
Ha szóba került a memória chipek programozási módja, egy adalék hozzá:
All the SPI Flash manufacturers call the following things by slightly different names. I'm going to use Gigadevice's command names in this post because they map well to the Espressif names. However your SPI Flash chip's datasheet may use different names. The command hex codes should be the same, though.
Not all chips support all of these modes. The datasheet is the best source to know what supports what.
DIO - SPI host uses the "Dual I/O Fast Read" command (BBh). Two SPI pins are used to write the flash address part of the command, and to read flash data out. Therefore these phases need half the clock cycles compared to standard SPI.
DOUT - SPI host uses the "Dual Output Fast Read" command (3Bh). Two SPI pins are used to read flash data out. Slightly slower than DIO, because the address is written via the single MOSI data pin.
QIO - SPI host uses the "Quad I/O Fast Read" command (EBh). Four SPI pins are used to write the flash address part of the command, and to read flash data out. Therefore these phases need a quarter the clock cycles compared to standard SPI.
QOUT - SPI host uses the "Quad Output Fast Read" command (6Bh). Four SPI pins are used to read the flash data out. Slightly slower than QIO, because the address is written via the single MOSI data pin.In terms of performance: QIO > QOUT > DIO > DOUT. I'm fairly sure the flash cache issues 32 byte reads each time, so QOUT or QIO are substantially faster than DIO or DOUT.
-
Janos250
őstag
válasz
Teasüti
#8592
üzenetére
A Sonoff újabb eszközeiben a memóriának nem csupán a mérete más, hanem az elérés típusa is.
A régebbi Sonoff cuccokban az elérést DIO-ra kellett állítani, de az ÚJABB, UGYANOLYAN TÍPUSNEVŰ Sonoffokban DOUT-ra. Ha így állítja be az emberfia, akkor megy az ESP8266 kijelöléssel is.
Ettől függetlenül egyes típusokkal vannak gondjaim, de ez majd egy külön kérdés lesz mindjárt. -
Teasüti
nagyúr
Srácok!
ESP8266 kapcsán (Sonoff TH16) miért nem fut a feltöltött programom?
A feltöltés megy szépen, flash mód, feltölt, kész.
Viszont se kép se hang, Serial monitorban sincs semmi.
Vmi ötlet esetleg?A bekötés jó, az eredeti FW működőképes volt az Uno-ra kötve, volt wifi kommunikáció, villogtak a ledek, meg ami kell. RX/TX lábak megfelelő sorrendben. 3V3-ról kapja a delejt, Uno reset-re húzva így az UART port bypass az ESP-re kapcsolódik. Elvileg minden jó.
Lehet az alaplap beállítások nem jók, de ahhoz lövésem sincs. Túl sok a változó, netes útmutatókban nincs ennyi opció.
-
válasz
Teasüti
#8567
üzenetére
Igen de amikor túl vagy a tesztelésen és meg szeretnéd építeni az adott projektet, oda nem vezetékeket raksz gondolom. Ezért kérdeztem, hogy mondjuk ami helyettesít 2 nyomógombot, de csak magát a kapacitív felületet biztosítja van-e, mert jó hogy támogatja az ESP32, de amiket találtam azoknál mind van plusz elektronika ami kezeli az érzékelést, viszont ESP-nél már benne van a mikrovezérlőben, így csak egy felület kellene hozzá.
-
Teasüti
nagyúr
válasz
Tankblock
#8564
üzenetére
Van szkópod?
(#8566) xboy89
[link]
Mondjuk ami engem érdekelne, hogy vajon az ESP32 és az Atmel328p el van-e látva ESD védelemmel a QTouch interfészeken? Nem szoktam látni egy példában sem külön védelmet.
Nano-n volt ilyen projektem, ott gyakorlatilag egy darab vezetékkel működik a dolog egy ADC bemeneten. Ahogy látom ESP is pont ugyanazon az elven működik. -
válasz
Teasüti
#8563
üzenetére
Igen növelve 100 ms-nál javult minimálisan, de még lehet növelem, szerencsére nem kell gyors reakció.
A korábban (#8547) Atti777 által linkelt megoldás esetén ESP32-vel hogyan lehetne kivitelizn. Arra gondolok, hogy ESP32 alapból támogatja a kapacitív bemenetet, így a linkelt panel elhagyható, de milyen felületet lehet hozzá használni egy PCB-n? Egy sima kapacitív felülettel ellátott PCB kell hozzá?
-
tvamos
nagyúr
Próbálta már valaki ezt a ESP4S2-t?
-
Tankblock
aktív tag
Sziasztok,
Most én szeretnék közös gondolkodásra sarkallni titeket.
Esp32 amit esp-idf ben használok. Nyomógomb perlmentesítését HW végezném.
A gpio posedge szabadna triggerelödnie, de a gomb megnyomásakor is triggerelődik, neg a felengedésekor. A második zavar. A fenti példán annyit módosítottam, h a 220k ellenállás helyett 300k használok és a 330 ohm elhagytam.
2 eset lehet, az ellenállás kell, v a idf nem ok valami.
Vagy bem tudok számolni és programozni sem

-
válasz
Tankblock
#8551
üzenetére
Ez is jó ötlet, amiket láttam hardveres megoldásra mind több alkatrészt igényelt, ezért mentem a szoftveres irányban. Viszont egy kondi még nem vészes. Kipróbálom majd ezt is.
Amúgy érdekes, mert pl ESP32-es board esetén, de STM32F4 dicovery boardnál is a nyomógombbal párhuzamosan kötik a kondit, nem sorosan. Ha jól értem te sorosan kötöd. Ha nem jól értem akkor nem értem
Miért párhuzamosan kell kötni?(#8552) aryes
Az simán belefér
Olyanra gondoltam, hogy nem lesz-e valami nagy kavarodás a hardver kimeneten, ezért nem mertem használni eddig, így viszont bátrabb leszek és máskor is használom majd, ha két állapot/időpont közötti eltelt időt szeretnék meghatározni. Köszi 
-
A delayt csak próba miatt tettem bele, nem szép, de rá akartam jönni hol csúszik el a dolog. A kijelzős részt nem teljesen jól írtam le, úgy gondoltam, hogy egy timerrel számolom a 2 másodpercet és az megszakításként változtatna egy változót, ami mondjuk egy if szerkezeten belül végrehajtaná a kijelzést.
Ha már itt tartunk ESP32-re van jó timer leírás megszakítással egybekötve? Uno-hoz jól le van írva több helyen is hogy timer0 millis és delay-ért felelős, timer1 és timer 2 pedig szabadon használható. Mi a helyzet ESP32 esetében?
(#8544) aryes
Igen mert amiket próbáltam nem működött, ezért nem is tettem bele, csak a kódot magát hogy látszódjon amiből kiindulnék. -
Tankblock
aktív tag
Hello
Sw watchdog is van sokféle, pl lehet monitorozni adott idő alatt hányszor futott le adott szál, illetve minden fontos szál lefutott-e. Esp-idf ben volt rá példa.
Másik amikor 2 magon futtatod ugyanazt a számolást és megnézed hogy az eredménye ugyanaz e.
Hw wachdog legegyszerűbb megvalósítása N555 ahogy Teasüti leírta, de vannak bonyolultabb megoldások is, pl időre kérdés válasz elvén egy másik uC nézi h pl adott szám komplemensét kapja e vissza...
Biztonságkritikus alkalmazásnál a tervezéskor is a biztonság az első. Monitorozásokat kell beépíteni és informálni a vezetőt ha valamelyik részkomponens nem megbízhatóan működik, és funkciót letiltani.
Szép szakma ez

-
Teasüti
nagyúr
SW watchdog amikor az ESP32 újraindul, mert szarul írtad meg a programot és az egyik mag túl nagy időszeletet kap a program számolására és nem adja vissza a vezérlést az oprendszernek.
Atmel328p-n is lehet készíteni egyfajta SW watchdog-ot - van rá kész könyvtár is. Én sikerrel debug-oltam vele a programjaimat, amik megakadtak mondjuk egy végtelen ciklusban vhol.HW watchdog meg az, amikor egy külső chip a proci működését figyeli és ha az kifagy, akkor reset-eli a rendszert.
ESP32-n úgy rémlik van SW és HW watchdog is. Így az én esetemben csak meghibásodásról beszélhetünk.A HW watchdog-ot én egy monostabil 555 chip-el oldottam meg, amit a kontroller pwm jele triggerel és fent tart egy relét, ami a bemenetek közt vált (külső vagy belső pwm).
-
Teasüti
nagyúr
válasz
Tankblock
#8519
üzenetére
Motor projekt. Dekor világításnak indult, de aztán kicsit felokosítom a gépet mindenféle vezérlésével. Pl saját tervezésű 5630 ledekből épített pwm vezérelt féklámpa 2000 lumenes fényerővel.
6 külön csatornán mennek a szalagok, és csak azért nem 8 mert ha jól értem az ESP32-t, akkor az RMT csatornákon zajlik a hardveres pulse counter is, amiből kell kettő a fordulatszám és sebesség jeladókhoz.
És miért van szétdobálva 6 csatornára? A fizikai kialakítás miatt. 4 különböző helyen vannak elhelyezve szalagok, ezen kívül az irányjelzők is ws2812b alapú RGB ledek lesznek. Hátul egy-egy 8 ledes stick, nyomtatott burkolattal. Elől meg még vizsgálom a lehetőségét vagy egy 120 led/m szalag elhelyezésének a fényszórókban, vagy egyedi formájú panel készítése 5050 RGB chip-ekkel.Persze megoldható lenne az egész hóbelebanc felfűzése egy láncba, de az nem volna praktikus. Na meg ws2812b lévén nem árt ha nem az egész lánc döglik meg egy pixelhibánál.

-
Janos250
őstag
"Amúgy arduinoról nem szívesen hajtok semmit, max opti izolátorokat."
Na, én erre használom az ESP8266-ot, azaz optocsatoló helyett.
Például az egyik dobozban akkuról hajtva a hőmérők konverterei, és az egyik ESP, ami küldi a jelet WiFin a másik dobozban lévő másik ESP-nek, ami kapcsolgatja az erősebb (48 V 3A) delejt. -
Teasüti
nagyúr
Hali,
Elővettem megint az Arduino IDE-t hosszú idő után, felraktam a Core-t ESP32-höz, majd fordítom az utolsó programot, hogy minden megy-e még és azt kapom vissza, hogy a tárhely csak 131 KB.
Vmit biztos rosszul állítottam be, alaplapnak a sima "esp32 dev module" van kiválasztva és a 4 mega flash mellé. Emlékeim ha nem csalnak - és tuti nem csalnak -, akkor tuti nem használtam ki 97%-ra a program tárhelyet, ami inkább olyan 480 KB körül mozgott annó.
Mit kell buzerálni rajta, hogy nagyobbra partícionálja? Végig próbáltam a partíció sémákat is, mind 131 KB csupán. Ez így lóf.sz, még a RAM is 300 KB majdnem, mi a fenéért biztosít csak 130KB ROM-ot??
Köszi! -
Dalee
aktív tag
Sziasztok,
Szeretnék segítséget kérni.
Kaptam egy példakódot, melynek az egyik sora a boost gyűjtemény egyik elemét használná:
boost::fusion::for_each(this->m_data, [](const auto& a) {
std::cout << a << ' ';
});Ez a sor (a komplett programmal együtt) le is fordul PC konzolra, de ESP8266 alá kapok egy csomó hibaüzenetet, hiába telepítettem a github-ról a boost_1_51_0 és a működéséhez szükséges boost StandardCplusplus könyvtárakat.
Az első pár hibaüzenet:
Arduino.h: 267:12: error: 'std::isinf' has not been declared
using std*: isinfArduino.h: 268:12: error: 'std::isnan' has not been declared
using std*: isnancpp_type_traits.h: 82:10: error: redefinition of 'struct std::__true_type
struct __true_type { } -
Janos250
őstag
válasz
choco01
#8413
üzenetére
Az ESP8266-nál valahonnan a netről töltöttem le, és a mintapéldában láttam a használatát. Egyszerűnek tűnt. ezért azt használtam. Utána írták, hogy az esp8266WEBserver működik némi megszorításokkal az ESP32-n is, aztán valaki elkezdte bütykölni, hogy rendesen menjen. Valaki írta, hogy neki egyszerre csak egy klienst tud lekezelni, de nekem az elég.
-
Janos250
őstag
válasz
choco01
#8411
üzenetére
Én - ha jól emlékszem - ezt töltöttem le:
http://www.fisch.lu/junk/ESP32-WebServer.zipAzért ezt, mert én az ESP8266-on is ennek az elődjét használtam, és azt megszoktam.
Egyéb oka nem volt.Segédletem sajnos nincs.
-
Janos250
őstag
válasz
choco01
#8407
üzenetére
Nekem ez az eleje:
#include <WiFi.h>
#include <WiFiClient.h>
#include <ESP32WebServer.h>"DHT22 miert NA adatot ír állandóan"
Én ezért szoktam saját lekezelőt csinálni, mert a kész könyvtárak időnként nem azt csinálják, amit én szeretnék. DHT11-re csináltam sajátot, 22 még nem. -
Janos250
őstag
taskDISABLE_INTERRUPTS();
Az ESP32 rendszere a freeRTOS op. rendszeren fut, annak a függyvényei is használhatók.
Azt csinálja, ami a neve, letiltja az interruptot, a taskENABLE_INTERRUPTS() pedig újra engedélyezi.
Ezeket próbáld a saját programodba is betenni a szalagra írás előtt és után. Csak próba, mert lehet, hogy nálad a könyvtár dolgaival összeakaszkodik.A loop automatikusan a core1-en indul, ha nem rakod át. A WiFi kezelés a core0-n van, elvileg nem zavarhatják egymást.
A szalagra kiküldendő adatok kiszámítását, meg bármi járulékos dolgot tedd a core0-ra. Beteszed egy függvénybe, és azt pl. ehhez hasonlóan hívod meg.
Így lehet pl. egy "lightShowInCore0Code" nevű függvényt úgy meghívni a loopban, hogy ne a core1-en, hanem a core0-n fusson:xTaskCreatePinnedToCore(
lightShowInCore0Code, /* Task function. */
"lightShow", /* String with name of task. */
1000, /* Stack size in words. */
NULL, /* Parameter passed as input of the task */
3, /* Priority of the task. */
&lightShowInCore0, /* Task handle. */
0 /* core */
);uint8_t:
"uint8_t lövésem sincs mi, gondolom egy közvetlen lenyúlás egy hardverközelibb szintre"
Nem.
A különböző rendszerekre való könnyebb átvitel érdekében a különböző hosszúságú egészeket célszerű így deklarálni, hogyint8_t : előjeles 8 bites egész
uint8_t : előjel nélküli 8 bites egész, vagyis 0..255 közötti az értéke.
A 8 helyett állhat 16, vagy 32 is, attól függően, mekkora kell.Én lightShowInCore0Code-nak neveztem el azt a függvényt, ami az adatokat kiszámolja, tehát ami nevet adsz a függvényednek, azt írd a helyére. A többi maradhat változatlanul.
void lightShowInCore0Code( void* parameter) {
// Ide kerül a tényleges program, amire azt akarod, hogy a core0-n fusson.
vTaskDelete(NULL); // ezt ne felejtsd el beírni a függvényed utolsó sorába.
} ; -
válasz
Teasüti
#8394
üzenetére
Röviden: gyakorlat.
Láttátok korábbi hozzászólásaimban a szenvedésemet, az 56 LED-es szalag nem megfelelő működéséről.
Vettem egy step-down áramkört, hátha azzal megjavul, de ugyanez volt a helyzet.Egy külföldi fórumon (már meg nem mondom melyiken) egy srác is küzdött és ott javasolták neki, hogy tegyen vékonyabb vezetéket és egy ellenállást a kontroller és a szalag közé. Én is így tettem, és hirtelen minden megjavult, csak annyi LED világít amennyi kell, és úgy ahogy azt a forráskódban leírtam.
Most azzal küzdök, hogy a wifi-re felcsatlakoztattam az eszközt, csináltam rá egy webszervert, hogy ki és be tudjam kapcsolni. (igazából ez csak teszt, mert a színeket akarom csak variálni wifi-n keresztül) De valamiért 2 LED folyamatosan világít a szalagon. Talán az lehet a gond, hogy a webszerver és a LED vezérlést is ugyanaz a CPU mag csinálja és emiatt az időzítések/órajelek megcsúsznak a szalagon, legalábbis ezt olvastam. Szét kell választanom, hogy külön CPU feleljen a vezérlésért, vagy a led vezérlésnek kell úgy emlékszem DMA-t engedélyezni. Ez utóbbit viszont nem tud az AdafruitNeopixel library, csak a FastLED, ami viszont nem támogatott ESP32-őn. (Rövid távon valószínűleg jobban jártam volna egy sima Arduino-val, mert arra minden van.)
-
choco01
addikt
Hali.
ESP32 (és 8266-on) hogy lehet rábírni hogy elérjem másik porton ha WiFiServer server(); zárójelei közé nem 80-as portot írok hanem mondjuk 1234-et?Hiába írom be ip:1234 nem éri el..csak ha 80-asra állítom..


-
Teasüti
nagyúr
Én kíváncsi lennék mire alapozod ezeket a következtetéseket!
Én ESP32-n használok 4 csatornán ws2812b szalagokat, ellenállás nincs az adatbuszon (a végleges változat be lesz ültetve nyák-ra, azon lesz), vezetékek hossza hasonló a tiédhez, de van ahol akár kétszerese is (egy sportmotor alsó idomján futnak körbe a szalagok, a vezérlés az ülés alatt) és a vezeték méretezésekor se vettem figyelembe semmit. Ugyanazzal a 10A-es szállal vannak behúzva az adatbuszok, mint amin a delej megy.
Hónapok óta üzemel gond nélkül. -
Üdv,
ismét itt vagyok és néhány tapasztalattal lettem gazdagabb. Utólag végig gondolva felsejlik előttem 1-2 előadás villanytanból és elektrotechnikából, de a franc se gondolta volna, hogy igazuk lehet tanároknak (meg Ampére-nek, meg Kirchoffnak, meg a többieknek).
Nálam az Adafruit Neopixel könyvtár tökélesnek látszik, hardver hiba miatt nem működött a szalag.
Az első hibát ott követtem el, hogy egy vastag, kb 0,5mm2 vezetékkel kötöttem össze az ESP32 vezérlő pinjét a LED szalaggal.
A másodikat, hogy nem jó helyre raktam az ellenállást a vezérlő vezetéken.(legalábbis több weboldal ezt mondja).Annak aki az ESP32 és a LED szalag közé 10 cm-nél hosszabb vezetéket akar tenni:
- a vezérlő PIN és a LED szalag közé minél vékonyabb vezetéket kell tenni (pl UTP vezetékből 1 szál)
- egy 200 Ohm és 400 Ohm közötti ellenállást kell tenni, a kontroller és a LED szalag közé, úgy, hogy az ellenállás minél közelebb legyen a szalaghoz.(talán a legjobb ha a szalagra van ráforrasztva az ellenállás és a vezeték az ellenállásra van forrasztva)Egyelőre úgy néz ki, hogy nálam bejött a dolog. kb 70 cm van az ESP32 és a LED szalag között az alábbi módon:
- 0,5 mm2 hangszóró vezetékkel van a táp bekötve a szalagra és az ESP32-re,
- 1 szál vékony vezeték (rossz PC-ből vettem a HDD LED egyik vezetékét)
- beforrasztottam a LED szalagra az ellenállást és erre forrasztottam rá a vezetéket.Jöhet a teszt drótozás (a jelenlegi állapotot másnak nem merem nevezni) átalakítása a végleges verzióba.
-
Janos250
őstag
válasz
bzolika10
#8383
üzenetére
Itt van rá egy minta:
#include <ESP8266WiFi.h>
const char* ssid = "d1server";
const char* password = "87654321";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println();
Serial.print("kapcsolodunk erre a wifi-re:");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password); // annak a wifi halozatnak az SSID-je es PW-je,
// ahova kapcsolodni akarunk
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print(ssid);
Serial.print(" SSID-ju WiFi-re felkapcsolodtunk, ezt az IP-t kaptuk:");
Serial.println(WiFi.localIP());
} -
bzolika10
aktív tag
Sziasztok!
A héten érkezett meg hozzám egy esp12E és egy NodeMcu v3. Ha bekapcsolom őket akkor mind a kettőnél létrejön egy saját wifi hálózat. Van nálam egy másik NodeMcu, de az nem csinál ilyet. Hogy lehet kikapcsolni a wifi hálózatokat?
-
MPU6050-et néztem ami 6DOF-os szenzor, 400Ft-ból meg van és tudja mind a kettőt. A fogyasztás lehet gond vele, ahogy néztem vannak olyanok szenzorok is amikbe van deepsleep mód talán az még jobb lenne. Viszont hogy deepsleep-ből felépbredjen az ESP (elsősorban 32 de 8266 is lehetne akár), ahhoz kellene egy komparátor talán, hogy meg legyen egy adott treshold esetén a logikai 1 érték.
-
Miért, a hall szenzor kicsi, befúrhatod az ajtóba, a mágnest az ajtófélfába és máris nem látszik. Vagy egy infrás reflexiós optokaput az ajtófélfába, az esp-vel együtt, nem is kell az ajtóba építeni.
A g szenzorhoz milyen tresholdot állítasz be? És ha kellően lassan nyitják ki az ajtót, akkor nem fog riasztani? Vagy ha a huzat megmozdítja? És ha kopognak rajta? -
Jó lenne mindenféle kapcsoló nélkül. Így kb majd hogy nem ESP méretben megvalósítható lenne, nem kellene semmi mechanikai bütykölés se.
(#8315) Attix70
Erre is hasonló lenne a válasz. Illetve itt még az elektronika hozzá talán még nagyobb méretet eredményezne, de legalább is a mechanikai megoldás biztos. -
Sziasztok!
Szerintetek mivel lenne jobb figyelni az ajtó nyitását, ha a lehető legkisebb méret számít. Gyorsulás vagy gyro? Emellett fontos lenne az ESP deepsleep mode is. Viszont hogy felébredjen az ESP külső jel hatására azt a reset pin változtatásával lehet. Arra gondoltam hogy a gyorsulás érzékelő egy adott limitet elérve kapcsolna egy komparátort így meglenne a szükséges digital 1 a resethez. Mehet a kiolvasás, majd megint mehet vissza alvó módba. Ennél van valakinek jobb ötlete?
-
ngabor2
nagyúr
Megírtam/összeollóztam Arduino Nano-ra egy egyszerű időzítőt DS3231-gyel és egy relével a D2 pinre kötve.
A program:
#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
int p2=0;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
pinMode(2, OUTPUT);
#ifndef ESP8266
while (!Serial); // for Leonardo/Micro/Zero
#endif
Serial.begin(9600);
delay(3000); // wait for console opening
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// following line sets the RTC to the date & time this sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop () {
DateTime t = rtc.now();
Serial.print(t.year(), DEC);
Serial.print('/');
Serial.print(t.month(), DEC);
Serial.print('/');
Serial.print(t.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[t.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(t.hour(), DEC);
Serial.print(':');
Serial.print(t.minute(), DEC);
Serial.print(':');
Serial.print(t.second(), DEC);
Serial.println();
if (t.hour() > 5 && t.hour() < 18 ){
digitalWrite(2, LOW);
}
else{
digitalWrite(2, HIGH);
}
delay(3000);
}Elvileg reggel 6-kor bekapcsol, este 6-kor kikapcsol... de nem kapcsol ki. Teljesen hasonlóan van egy másikra megírva, az működik (a különbség annyi, hogy ott a 4-es pinen van a relé). Hol van a hiba? Az időt szépen kiírja, tehát az órával elvileg nincs gond. Több ötletem nincs.
-
válasz
multipass4
#8278
üzenetére
A szervomotor teljesítménye elég lesz? A programozásban én úgy indulnék el, hogy külön-külön esetleg kisebb részfeladatokat összevonva írnám meg a kódot és tesztelném, ha egy rész két mehet a következő és minden egyes sikeres részfeladat után össze lehetne fűzni az előzőeket.
Valószínűleg más is ajánlani fogja ESP32-vel olcsóbban és kevesebb eszköz felhasználásával meg tudnád valósítani amit szeretnél UNO helyett de még is Arduino IDE-ben programozva.
Új hozzászólás Aktív témák
- Samsung Galaxy S20 FE - tényleg nem lite
- DJI topic
- Ne várj sokat a vásárlással: drágulás a láthatáron
- Arch Linux
- Azonnali alaplapos kérdések órája
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Path of Exile (ARPG)
- Garancia kérdés, fogyasztóvédelem
- SSD kibeszélő
- További aktív témák...
- ÚJ/Használt HyperX Pulsefire Haste Egerek Fehér/Fekete Bolti ár:20k INGYEN FOXPOST
- Lenovo Thinkpad T14s FHD, Érintőkijelző, I5-10210U CPU, 16GB DDR4, 256GB SSD, 27% ÁFÁS SZÁMLA, 1ÉV G
- HP Elitebook 850 G8 FHD, i7-1165G7 CPU, 16GB DDR4, 512GB SSD, 27% ÁFÁS SZÁMLA, 1ÉV GARANCIA!
- HP Elitebook 850 G7 FHD, i7-10610U CPU, 16GB DDR4, 512GB SSD, 27% ÁFÁS SZÁMLA, 1ÉV GARANCIA!
- HP Elitebook 850 G6 FHD, i7-8665U CPU, 16GB DDR4, 512GB SSD, 27% ÁFÁS SZÁMLA, 1ÉV GARANCIA!
- Telefon felvásárlás!! Samsung Galaxy A13/Samsung Galaxy A33/Samsung Galaxy A53
- BESZÁMÍTÁS! Asus Z790 i9 14900K 32GB DDR4 1TB SSD RTX 2080Ti 11GB Montech Air 1000 Lite 700W
- Xbox Series X 1 TB + kontroller 6 hó garancia, számlával!
- Honor 90 /12/512GB / Kártyafüggetlen / 12Hó Garancia
- Bomba ár! Lenovo ThinkPad T430 - i5-3GEN I 4GB I 320GB I 14" HD I Cam I W10 I Garancia!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő



Miért nincs teljes körű SDK-nk?





ekkold

