Fórum témák

» Több friss téma
Lapozás: OK   128 / 137
(#) Kera_Will válasza KoblogPerGyok hozzászólására (») Máj 12, 2023 /
 
webrádiót csinálnak esp32vel és ott még a wifiről leis kell fejteni a UDP csomagokban lévő adatokat és rátolni az DAC-ra és egyébb mást is kell csinálni, ott beleférnek az ESP sebességébe.
De lehet külső DAC vagy mp3 encoder van mellé rakva.(mélyebben nem lestem meg miként de van róla topic)
(#) vargham válasza KoblogPerGyok hozzászólására (») Máj 12, 2023 /
 
Ahogy látom, ez Arduino kód. Felejtsd el.
(#) KoblogPerGyok válasza Elektro.on hozzászólására (») Máj 12, 2023 /
 
Igen, de a most és a micros() az nem a kiírások előtt és után vannak. Azok a tényleges mérendő proci időhöz tartoznak.
(#) usane válasza KoblogPerGyok hozzászólására (») Máj 12, 2023 / 1
 
A LEDC orajele 80Mhz. A felbontastol fuggoen a maximalis elerheto PWM freki:
80000000/2^bit_num
Vagyis 10 biten kb. 75kHz, 8 biten kb. 315kHz, stb.
"ELMELETILEG"

De talaltam egy ilyet. Hatha segit megerteni.
(#) asch válasza KoblogPerGyok hozzászólására (») Máj 12, 2023 /
 
Tulajdonképpen mit akarsz ezzel a programmal megvalósítani?
Először számolni érdemes, hogy amit akarsz, az elméletileg lehetséges-e? Mindenekelőtt az adatlapból kell kiindulni. Péládul: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-ref...c.html
Ez kell neked innen: "Outputting continuous analog signal by DMA. The DAC will convert the data in a buffer at a specified frequency." Tehát tud olyat, hogy beteszel mintákat egy pufferbe és DMA segítségével egy adott frekivel kitolja. Olvasd el, hogy milyen frekvenciára képes az adatlap szerint. Utána ha találsz hozzá megvalósítást, akkor az a nyerő, ha nem, akkor az adatlap alapján meg kell valósítani.
(#) kapu48 válasza KoblogPerGyok hozzászólására (») Máj 13, 2023 / 2
 
A szimulátorod a lassú!
Nekem valódi ESP32 Dev Modulal ezek az eredményeket kaptam:
Idézet:

08:34:33.269 -> 240
08:34:33.315 -> Feltöltési idő micro sec: 43837
08:34:33.315 -> DAC-ra írás ideje micro sec: 60
08:34:33.315 -> Elérhető max frekvencia KHz: 500
08:34:33.315 -> PWM kitöltési tényezőjének 2x változása micro sec: 21


Ha kinagyítod a képet láthatod az arduino beállításokat.
A hozzászólás módosítva: Máj 13, 2023
(#) kapu48 válasza kapu48 hozzászólására (») Máj 13, 2023 / 2
 
IRAM-ba raktam a rutinjaidat:
  1. #include <Arduino.h>
  2. #include <cstdint>
  3. // Include DAC and Math Libraries
  4. //#include <driver/dac.h>
  5. #include <math.h>
  6.  
  7. #include <esp32-hal-ledc.h>
  8. #include <esp32-hal-dac.h>
  9. // Include DacESP32 Library
  10. #include <DacESP32.h>
  11. #include "analogWrite.h"
  12. #include "ESP32PWM.h"
  13.  
  14. #define PARALLEL_0  12
  15.  
  16. #define LED_GPIO   5
  17. #define PWM1_Ch    14
  18. #define PWM1_Res   8
  19. #define PWM1_Freq  200000
  20.  
  21. long eltelt;
  22. byte Adatok[60000];
  23.  
  24. // Define DAC pins
  25. #define DAC_CH1 25
  26. #define DAC_CH2 26
  27.  
  28. int PWM1_DutyCycle = 0;
  29.  
  30.  
  31. void IRAM_ATTR parallel_set_inputs(void) {
  32.   REG_WRITE(GPIO_ENABLE_W1TC_REG, 0xFF << PARALLEL_0);
  33. }
  34.  
  35. void IRAM_ATTR parallel_set_outputs(void) {
  36.   REG_WRITE(GPIO_ENABLE_W1TS_REG, 0xFF << PARALLEL_0);
  37. }
  38.  
  39. uint8_t IRAM_ATTR parallel_read(void) {
  40.   uint32_t input = REG_READ(GPIO_IN_REG);
  41.  
  42.   return (input >> PARALLEL_0);
  43. }
  44.  
  45. void IRAM_ATTR parallel_write(uint8_t value) {
  46.   uint32_t output =
  47.     (REG_READ(GPIO_OUT_REG) & ~(0xFF << PARALLEL_0)) | (((uint32_t)value) << PARALLEL_0);
  48.  
  49.   REG_WRITE(GPIO_OUT_REG, output);
  50. }
  51.  
  52. void setup() {
  53.   Serial.begin(115200);
  54.  
  55.     ledcAttachPin(LED_GPIO, PWM1_Ch);
  56.     ledcSetup(PWM1_Ch, PWM1_Freq, PWM1_Res);
  57.  
  58.     uint32_t getCpuFrequencyMhz();
  59.     Serial.println(getCpuFrequencyMhz());
  60.  
  61.    //Port létrehozása:
  62.     for (int i = 0; i < 8; i++) {
  63.     pinMode(PARALLEL_0 + i, OUTPUT);
  64.  
  65.     }
  66.  
  67.     unsigned long most;
  68.     unsigned long eltelt;
  69.     unsigned int frekvencia=400000;
  70.     double dt=1/frekvencia;
  71.     double omega=2*PI*frekvencia;
  72.     double omega_dt;
  73.  
  74.     omega_dt=omega*dt*64;//Mert el kell tolni, de ez konstans
  75.     most=micros();
  76.     //Adatok feltöltése
  77.   for (unsigned long i= 0; i<=60000;i++)
  78.   {
  79.     Adatok[i]=(byte)128+(omega_dt*i);
  80.   }
  81.   eltelt=micros()-most;
  82.   Serial.print("Feltöltési idő micro sec:  ");
  83.   Serial.println(eltelt);
  84.  
  85.   most=micros();
  86.   dacWrite(DAC_CH2, Adatok[100]);
  87.   eltelt=micros()-most;
  88.   Serial.print("DAC-ra írás ideje micro sec:  ");
  89.   Serial.println(eltelt);
  90.  
  91.  
  92.   // Port kimenetre állítva
  93.   parallel_set_outputs();
  94.   most=micros();
  95.   parallel_write( Adatok[100]);
  96.   eltelt=micros()-most;
  97.   unsigned int frekvencia_max =1000/eltelt;
  98.   Serial.print("Elérhető max frekvencia KHz:  ");
  99.   Serial.println(frekvencia_max);
  100.  
  101.   Serial.print("PWM kitöltési tényezőjének 2x változása micro sec:  ");
  102.  
  103.   //PWM kitöltési tényezőjének változtatása:
  104.     most=micros();
  105.     ledcWrite(PWM1_Ch, PWM1_DutyCycle++);
  106.     ledcWrite(PWM1_Ch, PWM1_DutyCycle++);
  107.     eltelt=micros()-most;
  108.     Serial.println(eltelt);
  109. }
  110.  
  111. void loop() {
  112.  
  113.   delay(1000);
  114. }

És az eredmény javult:
Idézet:

09:21:18.056 -> 240
09:21:18.103 -> Feltöltési idő micro sec: 43838
09:21:18.103 -> DAC-ra írás ideje micro sec: 59
09:21:18.103 -> Elérhető max frekvencia KHz: 1000
09:21:18.103 -> PWM kitöltési tényezőjének 2x változása micro sec: 22
(#) kapu48 válasza kapu48 hozzászólására (») Máj 13, 2023 / 1
 
Még a HW. amin futtatam: Bővebben: Link
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Máj 14, 2023 /
 
Sziasztok mesterek!

Belemerültem nagyon egy modell számításba, meg le is robbantam 1-2 napra. Köszi a válaszokat, nagyon hasznosak, kipróbálom őket!
A hozzászólás módosítva: Máj 14, 2023
(#) KoblogPerGyok válasza asch hozzászólására (») Máj 14, 2023 /
 
Ezzel még semmit sem, csak tesztelem mit bír. A beépített DAC ezek szerint nekem nem elég. Tudom, hogy van beépített cos generátora, de pl nem tudom annak mekkora a frekije maximum, adott 8 bit felbontás mellet, időben pedig úgy, hogy egy periódusra 10 érték essen. A port írási sebessége éppen ezért lenne fontos, mert parallel DAC simán lehet ilyen gyors, ami nekem kell, az ESP tudná etetni. A portokat definiálhatnám úgy is, hogy 8bit + a DAC egyéb vezérlő lábai. A PWM-el való jétékot a korábbi tapasztalataimból tettem bele, mert azzal is lehet jelet előállítani.
De közben előállítottam egy algoritmust, ami a sin függvény tárolt elemeiből a frekit meghatározza a fázis viszonyokkal. Teljesen jól működik, most éppen a gyorsításán ügyködöm. Szerintem ez az ESP tudni fogja ezt, de kell egy parralel DAC. 400KHz lenne aza tempó, amivel etetni kellene a DAC-ot, de nem tisztán szinuszos jellel, ezért kell némi számítás is, aminek 2.5mikro sec alatt le kellene futnia. Ez nem kis teljesítmény azért. (egy összeadás és egy szorzás, majd ennek értéke ki a port-ra ennyi idő alatt.
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Máj 14, 2023 /
 
Ok, a 400 tényleg az álom, de 200 mindenképpen kellene.
(#) kapu48 válasza KoblogPerGyok hozzászólására (») Máj 15, 2023 /
 
Nekem kerek 1MHz mért a port írásra, 100 adattal tesztelve!
Ez szerintem bőven felette van a vágyaidnak!
És még a CORE0-ást nem is használtam!
Nézd csak meg a Szo, 9:25 hozzá szólásomat!
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Máj 15, 2023 /
 
Szeritem járható az út. Azért tesztelgetek, kérdezek, mert már több eszközt váároltem, jó lenne csökkenteni kiadásokat. Valaki kérdezte miért nem számolok. Hát éppen azt teszem, meg zimulálok is Proteus-ban, de épp Arduino és ESP-t nem tudok. Kifagy folyton...
(#) asch válasza KoblogPerGyok hozzászólására (») Máj 15, 2023 / 1
 
A számolást úgy kell érteni, hogy el kellene olvasni az adott periféria adatlapját, és abban benne kell lennie, hogy milyen módon készül az órajel, hogyan működik a DAC kimenet, stb. Ebből ki kell derülnie, hogy mi a kimeneti oldal legnagyobb elérhető sebessége. Ez szerintem a te házi feladatod lenne megnézni. Persze ha volna valaki aki fejből tudná itt, az biztos beírta volna.

A másik oldalról pedig etetni kell adattal. Ki lehet indulni abból, hogy amilyen periféria be van építve azt képes kiszolgálni adattal a proci, első megközelítésben nem kell számolni, hanem elég ezt elhinni. De ha biztosra akarsz menni, akkor ezt is lehet számítással becsülni, hogy mennyire lesz képes a gép. A vezérlő néhánytíz megahertz környékén szokott ketyegni, általában néhány órajel egy érték kiírása, tehát bőven 1MHz felett kellene lenni a mintakiírás sebességének, nem lehet ez a szűk keresztmetszet. Linkeltem, hogy elvileg van DMA, ami még gyorsabb kell hogy legyen, mint mintánként programozottan etetni. A DMA adatlapjából ki kell derülnie, hogy mi a beállítható órajel.
(#) vargham válasza KoblogPerGyok hozzászólására (») Máj 15, 2023 / 1
 
Számolj az adatlap alapján.
Arduino-t felejtsd el, túl sokat lassít rajta.
(#) Animus1724 válasza KoblogPerGyok hozzászólására (») Máj 18, 2023 /
 
Timer overflow flag

Én más okból de naponta egyszer lefuttatom.

extern unsigned long timer0_millis;
extern unsigned long timer0_overflow_count;

void timer_reset(void)
{
//---------------------------------------------- timer_reset ----------------------------------------------
timer0_overflow_count = 0;
timer0_millis = 0;

//---------------------------------------------- timer_reset ----------------------------------------------
}


Erre gondolsz?
(#) neogeo2 hozzászólása Máj 22, 2023 /
 
Sziasztok Mesterek!

Arduinoban írok egy programot egy ESP8266 modulra. Egy webszervert futtatok ESP8266WebServer.h és LittleFS.h használatával. A feladat az lenne, hogy a settings.html állományt a fájlrendszerből kell küldeni a kliensnek. A gond az, hogy elég nagy az említett html. Extraként még küldés közben módosítani is kell a html-t.

Eddigi próbálkozások:
1. Ez jó lenne, ha nem kellene módosítani az adatokat menet közben:
  1. File file = LittleFS.open("settings.html", "r");
  2. size_t sent = server.streamFile(file, contentType);
  3. file.close();


2. Ez jó ís kicsi méretű html adatoknál, sajnos jelenleg nem fér bele a page változóba a szükséges adatmennyiség:
  1. File settings = LittleFS.open("/settings.html", "r");
  2. String page = settings.readString();
  3. settings.close();
  4. //itt módosítom amit kell
  5. server.send(200, "text/html", page);


3. Ez jó lenne, de nem küldi ki végig a settings.html fájlt (nem tudom miért). Ami érdekes, hogy teszt céljából serialra is küldöm ugyan azt amit a kliensnek és ott végig küldi az adatot:
  1. File settings = LittleFS.open("/settings.html", "r");
  2. server.setContentLength(CONTENT_LENGTH_UNKNOWN);
  3. server.send(200, "text/html", "");
  4. while (settings.available()) {
  5.   String line = settings.readStringUntil('n');
  6. //itt módosítom amit kell
  7.   server.sendContent(line);
  8.   Serial.println(line);
  9. }
  10. settings.close();

nem sikerült a "\ n"-t a kódba írni a settings.readStringUntil függvényhez

Próbáltam itt a témában visszakeresni az infót, mert mintha már lett volna erről szó régebben. Sajnos nem találtam meg az ide vonatkozó hozzászólásokat. Illetve a google sem volt a barátom, mert nagyjából ugyan ezeket a megoldásokat találtam csak.
Mit csinálok rosszul? Hogyan lehetne megoldani a problémámat?
Köszönöm!
(#) icserny válasza neogeo2 hozzászólására (») Máj 22, 2023 /
 
Nem tudom, hogy segít-e, de SPIFFS "fáljrendszerrel" én csak így csinálnám:
  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266WebServer.h>
  3. #include <FS.h> // Becsatoljuk az SPIFFS könyvtárat
  4. #include "secrets.h"
  5. ESP8266WebServer server(80); // Webserver objektum példányosítása
  6. void setup() {
  7.  setup_wifi();
  8.  SPIFFS.begin(); // Becsatoljuk az SPI Flash fájlrendszert
  9.  server.serveStatic("/", SPIFFS, "/index.html");
  10.  server.serveStatic("/style.css", SPIFFS, "/style.css");
  11.  server.onNotFound([]() {
  12.  server.send(404, "text/plain", "404: Not Found");
  13.  });
  14.  server.begin(); // Elindítjuk a webszervert
  15. }
  16. void loop() {
  17.  server.handleClient(); // A háttérben mozgatjuk a szálakat...
  18. }


Ha vannak változó részek, akkor azt meg az AJAX technikával oldanám meg.
Ennek az oldalnak a legalján az utolsó két előadásban foglalkoztam hasonlókkal. Van előadásvázlat, mintapélda és videó is.

Az utolsó előadásból a ESP8266_WS_bme280_SPIFFS.ino mintapéldát ajánlom megtekintésre.
Az egyszerűbb (JSON nélküli) AJAX technika ismertetése pedig az utolsóelőtti előadás végén található.

Amit nem tudok, hogy mekkora a legnagyobb fájl, amivel még működik, mert én csak nyúlfarknyi programokkal próbáltam.
A hozzászólás módosítva: Máj 22, 2023
(#) pipi válasza neogeo2 hozzászólására (») Máj 22, 2023 /
 
Ilyesmibe én is belefutottam, úgy érzem kinőttem a 8266-ot, gyorsan váltottam ESP32-re, nem bántam meg, stabilabbnak tűnik, és hegyekben áll a flash meg a ram, a 8266-hoz képest.
(#) neogeo2 válasza icserny hozzászólására (») Máj 22, 2023 /
 
Köszönöm a segítő szándékot.

Az SPIFFS helyett ma már inkább a LittleFS használata a javasolt. Szerencsére nem túl nehéz az átállás és a programok átírása. Ugyan azok a függvények vannak a LittleFS-nél is. Egyedül talán az Arduino IDE átszabása volt valamilyen szinten problémás nálam, de már erre is vannak jó leírások a neten.

Ezeket az előadásokat már nézegettem régebben is. Nagyon jól összeszedett és hasznos tananyag. Köszönjük!

Terjedelmi okokból nem raktam ki az egész kódot a kérdésemnêl, de hasonló módon vannak megoldva a programban lévő változók értékeinek kiírása és frissítése kliens böngészőben.
A kérdésem nem igazán erről szólt, csak nem voltam egészen egyértelmű. Amikor küldöm a settings.html fájlt, akkor az ott található szövegbeviteli mezők, listák alapértelmezett értékeit/feltöltését szeretném elvégezni a programban. Ezeket a html részleteket kell kicserélni küldés közben. Ez nem megy. Illetve megy a serialra de nem a kliensek. Ott egy idő után megszakad az adatküldes és félbe marad a html oldal.
(#) neogeo2 válasza pipi hozzászólására (») Máj 22, 2023 /
 
Nálam meg az ESP8266 áll hegyekben
Van vagy 15-20 darab még, mert sokat rendeltem a kínaiaktól régebben. Tudom, mindenben jobb az ESP32, de az még nincs egy sem.
(#) pipi válasza neogeo2 hozzászólására (») Máj 22, 2023 / 1
 
Ez a küldés közbeni cserebere szerintem kicsit átláthatatlanabbá teszi a kódot ... Tisztább szárazabb érzés, ha dinamikus a weboldal.
Ahonnan én indultam ESP8266-al (https://www.john-lassen.de/en/projects/esp-8266-arduino-ide-webconfig) sajnos már megszűnt, de itt az 5.oldalon van a https://www.esp8266.com/viewtopic.php?f=29&t=4060&start=16 ESP_WebConfig_Master.zip
meg a további oldalakon(9) (irrigation1..5.zip) Az biztos hogy át kell rágni kicsit a kódot, de könnyen megérthető a mikroajax hogyan tölti ki a weboldalt "utólag". Amit ebből barkácsoltam, utána nem volt nagy cucc áttenni esp32-re sem.
Webszerkesztővel szépen megszerkeszthető a html, utána mehet egy konstans stringbe, vagy akárhová....
Szerintem....
A John-ra rákeresve:
Találtam egy yt videót: https://www.youtube.com/watch?v=3lBCmOHnF3w
Sokan felhasználták: https://www.instructables.com/Desktop-Ring-Clock/ https://github.com/ancalex/Desktop_Ring_Clock https://github.com/thunderace/ESP_WebConfig
A hozzászólás módosítva: Máj 22, 2023
(#) neogeo2 válasza pipi hozzászólására (») Máj 23, 2023 /
 
Köszönöm, megnézem a linkelt oldalakat. Elsőre nem tűnik egyszerűnek...
(#) pipi válasza neogeo2 hozzászólására (») Máj 23, 2023 /
 
De szerintem megéri rászánni az időt. A minta programban sokféle html "mező" megtalálható, amiket ki tud tölteni, arról nem is beszélve, hogy akár (időzítve) változó cuccot is meg tud jeleníteni...
Az hogy egy progi a html-t majd hogy soronként küldi egyesével, meg közben berakja a megjelenítendó adatot, igencsak macerás feldarabolni a html fájlt, beírogatni a kismillió küldést, egy párs soros weboldalnál, mintában elmegy, de komolyabb weboldalnál.....
pl rossz ránézni, a gyári mintára: \hardware\esp8266com\esp8266\libraries\ESP8266WebServer\examples\HelloServer\HelloServer.ino
szerintem...
(#) neogeo2 válasza pipi hozzászólására (») Máj 26, 2023 /
 
Végül sikerült az eredeti elképzelés szerint megoldani a soronkénti küldést.

A működő kódrészlet a következő lett:
  1. File settings = LittleFS.open("/settings.html", "r");
  2.   server.setContentLength(CONTENT_LENGTH_UNKNOWN);
  3.   server.sendHeader("Content-Type", "text/html", true);
  4.   server.sendHeader("Transfer-Encoding", "chunked", true);
  5.   while (settings.available()) {
  6.     String line = settings.readStringUntil('\\nn');
  7.  
  8. //itt módosítom amit kell
  9.  
  10.     server.sendContent(line);
  11.   }
  12.   settings.close();


Persze az általad javasolt megoldást is vizsgálom még és alkalmazni fogom a későbbiekben, de ez már így fog maradni.

Köszönöm a segítséget!
(#) neogeo2 válasza icserny hozzászólására (») Máj 26, 2023 / 1
 
Sikerült az eredeti elgondolás szerint megoldani.
Ez természetesen nem feltétlenül a legszebb megoldás, de működik.

A tananyagot mégegyszer köszönöm szépen, továbbra is hasznos.
(#) icserny válasza neogeo2 hozzászólására (») Máj 27, 2023 /
 
(#) KoblogPerGyok hozzászólása Jún 5, 2023 /
 
Üdv!
Megjött az ESP32s, amivel játszhatok is.
Feltettem az Arduino IDE 2.01-vagy melyik változatot. El sem indult a rendszer, mert nem volt USB driver. Letöltöttem egyet, felismeri, minden ok-nak tűnik de:

Idézet:
„A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Failed uploading: uploading error: exit status 2”


Azt tudom, hogy letöltési módban kell lennie, meg valamelyik gombot nyomni kellene, de nem tudom melyiket, illetve nem is szeretném. Van erre megoldás? Másik driver kellene?
Win 10 64 bit,Arduino IDE 2.1.0, Driver:
Bővebben: Link
És onnan a:

CP210x Windows Drivers
v6.7.6
9/3/2020

lett letöltve.
Köszönöm!
A hozzászólás módosítva: Jún 5, 2023
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Jún 5, 2023 /
 
Az előző hozzászolásomnál az ESP32S-re klikkelve előjön amit rendeltem innen. Az Arduino IDE-ben pontosan melyik Board-ot kell kiválasztanom? Mert a Chipen wroom is szerepel.
Köszönöm!
(#) kapu48 válasza KoblogPerGyok hozzászólására (») Jún 5, 2023 /
 
Szerintem ez alapján el tudsz indulni: Bővebben: Link
Nem olyan vészes azt a két gombot megnyomni mielőtt elindítod a feltöltést, kis gyakorlattal menni fog!
Következő: »»   128 / 137
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem