Hirdetés
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Brogyi: CTEK akkumulátor töltő és másolatai
- sziku69: Fűzzük össze a szavakat :)
- eBay-es kütyük kis pénzért
- sziku69: Szólánc.
- Meggyi001: Kórházi ellátás: kuka vagy finom?
- Luck Dragon: Asszociációs játék. :)
- sh4d0w: Kalózkodás. Kalózkodás?
- sh4d0w: StarWars: Felismerés
- gban: Ingyen kellene, de tegnapra
-
LOGOUT
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
-
cog777
őstag
Hoppa, tenyleg felhuztak a forditot. Letoroltem a korabbi Arduino IDE 2.3.6-ot, es ujratepelitettem. Lehet hogy a multkor csak ratelepitettem es megtartotta a korabbit?
Serial.print("C++ standard: ");Serial.println(__cplusplus);
Serial.print("GCC: ");Serial.println(__VERSION__);
08:57:15.466 -> C++ standard: 202002
08:57:15.466 -> GCC: 14.2.0
Nagyon koszi! -
cog777
őstag
válasz
Tankblock
#23910
üzenetére
Zephyr felbukkant mint freertos alternativa, de sok mindent nem talaltam rola…
Hogyan hasznalod, vscode, platformio-val vagy magaban?
Az arduinos library-k mennyire mennek vele?
Freertos elegge kompatibilis mindennel, csak arra kell figyelni hogy a halozati cuccok egy bizonyos cpu magon menjenek Esp32-n.
Szoval kivancsi lennek a tapasztalataidra mert freertos inkabb csak egy okos utemezo, total nincs vedelme. -
cog777
őstag
C++ a fő profilom, azt szerettem volna csiszolni, főleg mikrokontrolleren. Nekem ez jó tanulós platform. Freertos pedig egy remek többfeladatosságot kínáló OS, ami még Uno alatt is működik 2KB memóriával. Csupa jó dolgok ezek

Ha még kameráktól kezdve, szenzorok stb működnek az tökéletes. Persze tudom hogy most már hobbi szintű megoldás az nem éri el egy boltban kapható eszköz szintjét, de még is jó érzés, bármilyen c++ új fícsört, vad ötletet is ráadásul simán kipróbálhatok. -
cog777
őstag
válasz
Janos250
#23897
üzenetére
Te az Arduino IDE 2.x kornyezet kapcsan emlited a c++ standardot? Mert ott a flag-ek szerint meg mindig a c++11-et preferaljak kompatibilitas miatt.
A platformhoz kotodo flageknel lehet valamit allitgatni, de az nem tamogatott hivatalosan + par library is elhasalt, meg kellett javitanom oket. -
cog777
őstag
respekt
En ASM-el addig foglalkoztam, amig rajottem hogy a c fordito jobb kodot general mint en asm-ben
Kesobb apam is megcsinalta egy fenyujsag programjat asm-ben, en c-ben (sdcc), proci ugyanaz volt, es az en programom gyorsabban letudta kezelni a feladatokat. Hihetetlen jol optimalizalnak a c forditok. -
cog777
őstag
Ja, meg hozza teszem, tavaly munkat kerestem, es otthon Arduino Nano ESP32-on egy real-time-os okosotthon rendszert keszitettem. Aztan az interjun ezt adtam elo rogtonozve es vegul is ez segitett, hogy megkapjam a mostani munkamat. Szoval koszi Arduino

-
cog777
őstag
válasz
Dißnäëß
#23888
üzenetére
Raspberry pont jo az ilyenre, de talan par korabbi Arduinos lap is tudott ilyeneket...csak valahogy nem terjedt el annyira mint a Raspberry.
Korabban hasznaltunk direkt ilyen disztribuciot, Yocto-nak hivtak, hat eleg bonyolult. Sok idonket elvette amig konfiguraltuk. Forditasi ido volt vagy 10 ora 300GB tarhelyet fogyasztott. Masik a Buildroot, ami egyszerubb, menuvel lehet konfiguralni. (Mind a kettovel lehet Raspberry Pi-re forditani linuxot)
Ezeken jellemzoen normal linuxos c++ vagy python futott, specialis kernel drajveren keresztul erhettuk el az extra periferiakat, CAN buszt, belso halozatot stb.
Most egy ipari pc alaplapra sajat fejlesztesu halozati kartyakat keszitunk, linux pedig egy normal fedora, PCI buszon keresztul tortenik a kommunikacio. Sima c++ alkalmazas felugyeli a kartyakat. -
cog777
őstag
válasz
Dißnäëß
#23886
üzenetére
Haha
, hat, ha a futo c++ program egyszer csak csonta fagy es 1 het elmegy arra hogy megtalald a hibat, akkor az ember el kezdi megbecsulni a pythont, ami legtobbszor kiirja a hiba helyet. Pythonban azert van valami vedelem.
C++ nagyon kenyes joszag, ha nincs egy csomo vedelem bekapcsolva. Mikrokontrollerem jellemzoen nincs... siman fagyhat olyan helyen, ahol nincs hiba, csak mert valami mas korabban felulirta a memoriat. Igy kb total nincs tampont hogy mi tortent.Korabban en sem foglalkoztam a pythonnal, kozel 30 ev c++ tapasztalat utan, raereztem mennyire gyorsan lehet fejleszteni benne. Persze a Micropython kicsit mas mint a PC valtozat.
-
cog777
őstag
válasz
Dißnäëß
#23882
üzenetére
Hat, ketsegkivul az Arduino sokat adott mikrokontrollerek teren. Apam meg sajat egetot epitett a 89c2051-es procijainak es ASM-ben programozta. En az sdcc-t ismertem meg mint c fordito, a 2000-es evekben, kesobb irigykedtem az Arduinokra hogy milyen konnyen lehet USB-rol programozni, akkoriban nekem draga volt.
Aztan beszereztem egy klont (tobbet is
), vegul elertem egy szintre hogy mar kellett a WiFi es az internetes kapcsolat. Ott leptem at az ESP32-re es ott is ragadtam. (Szerencsere Arduino is kihozta sa sajatot, nem csalodtam a minosegben)Kitalatak egy komplett okoszisztemat amit a hobbistak es a tanulok konnyen tudtak hasznalni. De aztan ennek nagyon konnyen kijottek a hatranyai, kezdetben nem tamogattak az ESP32-t es mas "idegen" procikat, Arduino IDE-bol valo forditas hihetetlen lassu, lemaradtak a c++ szabvanyokban stb.
Egy kicsit bent ragadtak. Ha azt nezem hogy a Web IDE-ben mar evek ota keptelenek implementalni a sotet temat (jobban szeretem mint a vilagosat), akkor nekem azt sejteti hogy nagyon kis koltsegvetessel dolgoznak vagy elaproztak az eroforrasaikat. (Minek 3 IDE-t fejleszteni? Sot asszem van valami micropythonos ide is talan
) Khm.. most mar a negyedik az ArduLab szemelyeben...
Masik dolog hogy voltak ficsorok amiket feltuntettek, illetve termeket, de azok kevesebb tamogatast kaptak, keves volt a doksi es a pelda program stb.
Ugy velem pont kellett nekik egy kis verfrissites, felrazas.Qualcomm meg az ellenkezo iranybol erkezik, bizonyos szint alatt levegonek nezik a felhasznalokat, most ugy latszik lehajolnak az aproert? Fontos nekik hogy a hobbistakat, tanulokat (kesobbi donteshozok) megszolitsak?
Ha innen nezem a dolgot, akkor mind a ket cegnek jot tesz a megvetel. Aztan az ido eldonti...A bejelentett termek nekem izgalmasan hangzik, elmult evtizedben beagyazott linuxot programoztam, + mikrokontrollereket, UNO Q pont hozza a linux altal nyujtott szolgaltatasokat integralva a mikrokontrollerrel.
-
cog777
őstag
válasz
Ton-ton
#23869
üzenetére
UNO Q eleg jo cucc, pont gondolkodtam egy AI-s kameras megoldason, de az ESP32-ben nincs eleg szufla, erre most osszelegoztak az ARM procit az STM32-vel + AI kepes GPU + emmc. Megvan a karacsonyi kockulos ajandekom.
Ja, amugy a Sonnet 4.5 AI segitett atkonvertalni az ArduCam OV2640 c++-os drajveret Micropythonra ESP32-hoz. Jelentem, mar mukodik kisebb felbontasban, de meg debuggolnom kell magasabbon. Ha valakinek kell, szivesen megosztom, kesobb csinalok neki public Github projectet. -
cog777
őstag
Na, elegetve par nap szabadidot. (Khm, asszony leszalajtott szappanert. Nem mentem. Mondtam, ott a tusfurdom
Ti megertitek ezt.)Mukodik. Marmint amit kiprobaltam:
Arduino Nano ESP32-n az OTA-t es az Arduino IoT-t. Most hogy az oktoberi fejleszteskor kep komponens is belekerult, lehet feltolteni a kameram kepet. 2.5 eurot havonta meger a dashboard.Egy feltetelem volt: mukodjon FreeRTOS alatt.
Mukodik, viszont be kell allitani a stack-et neki. Sima C++ thread-eket hasznaltam. Elotte crash-elt, de a stack miatt, mint kiderult. Nem volt egyszeru, mert amit el lehetett szurni, azt igazi profihoz melton elszurtam, hogy aztan profihoz melton kikalapaljam
Rossz particionalas miatt 1 napig kinlodtam mire firmware mode-ban visszaallitottam a cuccot. Aztan rosszul masoltam a "secret"-et, space az elejen bennemaradt, aztan a stack... ilyesmi.
Orom-bodotta, megyek szappanert + kaja.#include "arduino_secrets.h"
#include <thread>
#include <esp_pthread.h>
#include "thingProperties.h"
void iot_task() {
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
while(1) {
ArduinoCloud.update();
}
}
void setup() {
Serial.begin(11500);
delay(1500);
auto cfg = esp_pthread_get_default_config();
cfg.thread_name = "iot_task";
cfg.stack_size = 32000;
cfg.pin_to_core = 1;
esp_pthread_set_cfg(&cfg);
auto task = std::thread(iot_task);
task.detach();
}
void loop() {
Serial.println("H");
delay(10000);
}
void onTempHallChange() {
// Add your code here to act upon TempHall change
Serial.print("Value changed: ");
Serial.println(String(temp_hall));
}
void on_enable_alarm_change() {
Serial.print("Value changed: ");
Serial.println(String(enable_alarm));
} -
cog777
őstag
Ha valaki van olyan elvakult, hogy WSL2-ben akar PlatformIO-t hasznalni es feltolteni a mikrokontrollerbe a firmware-t, itt vannak a lepesek.
0. VSCode es platformIO, telepitese Windows alatt. Linux telepitese WSL-ben
1. usbipd telepitese: winget install usbipd
2. Windows alatti soros port osszekapcsolasa a futo WSL-hez: https://github.com/dorssel/usbipd-win/wiki/WSL-support
Bovebben:
- A BUSID megjegyzese "usbipd list" paranccsal
- Megosztani az eszkozt az admin joggal futtatott "usbipd bind --busid X-Y" utasitassal
- Osszekapcsolni a futo WSL-el: "usbipd attach --wsl --busid 4-4"
3. Telepitsuk a python-t es a python3-venv WSL alatt. "sudo apt install -y python3-venv"
4. UDEV szabalyokat adjuk hozza: https://raw.githubusercontent.com/arduino/ArduinoCore-mbed/refs/heads/main/post_install.sh
4.1 Restart WSL (wsl --shutdown)
5. Megnyitjuk a PlatformIO projektet WSL alatt
6. Forditjuk es feltoltjuk -
cog777
őstag
válasz
Gergosz2
#23227
üzenetére
Miert, milyen erzekelo kell ha szeretnem tudni hogy ha valami langra kap a lakasban es fust keletkezik?
@Postas99: meg nem vettem semmit, eloszor kerdezek!

Kalibracio? Arra gondoltam, ha mar a gyari riasztok gyarilag kalibralva vannak, akkor talan tudok venni olyat amivel nem kell vacakolni, kimeregetni kulonbozo tavolsagokbol az egest es azt detektalni. Tehat egy kulcsrakesz megoldast szeretnek I/O-val az ESP32-hoz. Mintha regebben lattam volna talan 20-30 euroert de most nem talalom.Amugy BUEK!

-
cog777
őstag
Valaki hasznalt mar MQ-2 fusterzekelot vagy mas alternativat? Kell kalibralni ezeket a szenzorokat vagy egybol tudom hasznalni? Megbizhatoak ezek a szenzorok?
Jo lenne ha kuldene uzenetet a telefonomra az ESP32 ha valami "gaz" van a konyhaban, amikor valamelyik csaladtag foz. ESP32-hoz mar sikeresen kapcsoltam kamerat, meg tudnam nezni mi a helyzet.
A szomszed srac veszettul jatszott a konyhajukban a gepen "sutott" valami kajat, amikor megszolalt a fusterzekelo, a felesege bement es latta hogy vagni lehet a fustot, de a srac total nem eszlelte a kulvilagot jatek kozben...

-
cog777
őstag
Esetleg "Reset bootloader Mode" szeruseg ami Arduino-n van? En ezzel kinlodtam hogy feltoltsem a bootloadert, lehet hogy annak az ESP32-nek is van hasonlo modja amivel fel lehet eleszteni.
Meg B1-et GND-re kellett rakni es ugy megnyomni a reset gombot. -
cog777
őstag
válasz
.-..-.
#22866
üzenetére
Nekem az Arduino Esp32 valami nem jol mukodo boot loaderrel jott, esett kelt, mindenfele ritualet kellett csinalnom hogy valtogassak feltoltes es alkalmazas mod kozott. Aztan frissitettem a boot loadert es minden out of box kezdett mukodni. Nem volt szukseg gombokat nyomogatni. Probald frissiteni a bootloaderet.
-
cog777
őstag
válasz
Janos250
#22856
üzenetére
Koszi az infot! Jo tudni.
Ettol fuggetlenul nem lattam garantaltnak, hogy egy-egy ficsor egy adott procin rendesen implementalva van-e, vagy rendesen konfiguralva leforditva.
Pl elozo munkahelyen par dolog le volt tiltva: exception-ok, RIIA
Illetve Arduino IDE-be bedrotozott gcc-vel problemaim voltak C++17-et engedelyezve, nem fordult par cucc - nekem ugy tunt hogy nem kompatibilis, warning problemak miatt - letiltani nehezen tudtam oket.+ FreeRTOS-t hasznalva nehezen hittem el, hogy rendesen implementaltak a multiszalas dolgokat. Hat, rendesen implementaltak.

Most PlatformIO-t hasznalva, sokkal jobb a helyzet. -
cog777
őstag
Hianyoltam az egyszeru kommunikaciot a szalak kozott, regebben Qt-t es Boost signal-t hasznaltam. Aztan kiderult hogy tok egyszeru a promise-al kuldeni adatot a belole kinyert future-be.
Itt van egy masik pelda adatcserere, a producer megvarja amig a consumer elindult, majd kuldi az adatot. Az egyik direkt async-et hasznal, a masik thread-et. FreeRTOS alatt a Thread ugyanugy FreeRTOS utasitasokat hasznal csak el van rejtve a stack meg egy csomo minden. De a Promise-future paros tenyleg nagyon jo. Ha megvan irva a move constructor es assignment operatora a struct-nak, akkor nincs nagy adatmozgas ha promise-t hasznalsz.
Gyakorlatilag: konstruktor hivas, majd move konstruktor.#include <iostream>
#include <future>
#include <thread>
#include <chrono>
/*
Ez tortenik a struct keszitesekor:
ctor2
move ctor
move ctor
Received signal: 42
*/
struct data_s
{
data_s() { std::cout << "ctor1" << std::endl; }
data_s(int v) : data(v) { std::cout << "ctor2" << std::endl; }
data_s(data_s &&rhs) : data(std::move(rhs.data)) { std::cout << "move ctor" << std::endl; }
data_s &operator=(const data_s &rhs)
{
std::cout << "copy operator" << std::endl;
if (this == &rhs)
return *this;
data = rhs.data;
return *this;
}
data_s &operator=(data_s &&rhs)
{
std::cout << "move operator" << std::endl;
data = std::move(rhs.data);
return *this;
}
int data{0};
};
void task_consumer_fnc(std::future<data_s> &&f, std::promise<void> &&ready_signal)
{
ready_signal.set_value();
while (true)
{
if (f.wait_for(std::chrono::milliseconds(100)) == std::future_status::ready)
{
auto d = f.get();
std::cout << "Received signal: " << d.data << std::endl;
break;
}
}
}
void task_producer_fnc(std::promise<data_s> &&signal, std::shared_future<void> &&ready_slot)
{
ready_slot.get();
// std::this_thread::sleep_for(std::chrono::milliseconds(1000));
signal.set_value({42});
}
int main()
{
std::promise<data_s> signal;
auto slot = signal.get_future();
std::promise<void> ready_signal;
std::shared_future<void> ready_slot(ready_signal.get_future());
std::packaged_task<void(std::promise<data_s> &&, std::shared_future<void> &&)> task_producer(task_producer_fnc);
auto future_producer = std::async(std::launch::async, std::move(task_producer), std::move(signal), std::move(ready_slot));
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
std::packaged_task<void(std::future<data_s> &&, std::promise<void> &&)> task_consumer(task_consumer_fnc);
std::thread thread(std::move(task_consumer), std::move(slot), std::move(ready_signal));
thread.join();
return 0;
} -
cog777
őstag
Leteszteltem, FreeRTOS alatt rendben mukodnek a C++ szalak: Future, Promise, Thread.
Az elso kettovel az adatcsere is mukodik!
Nem kell hasznalni a queue-kat...Szal inditas:
void thread_worker()
{
while (1)
{
auto thread_id = std::this_thread::get_id();
Serial.printf("Thread ID: %d", thread_id);
Serial.println(F(""));
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
...
// 2 szal inditasa:
auto th = std::thread(thread_worker);
th.detach();
auto th2 = std::thread(thread_worker);
th2.detach();Adat csere:
void task_producer_fnc(std::promise<data_s> &&signal)
{
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
Serial.println(F("SIGNAL from thread"));
signal.set_value({.data = 42});
}
...
std::promise<data_s> signal;
auto slot = signal.get_future();
std::packaged_task<void(std::promise<data_s> &&)> task_producer(task_producer_fnc);
auto future_producer = std::async(std::launch::async, std::move(task_producer), std::move(signal));
// Var az szignalra
auto value = slot.get();
Serial.printf("Data_s Value: %d", value.data);Bocsanat, ha trivialis, talan FreeRTOS kezdoknek jol johet. Engem is meglepett hogy hogy ezek a C++ ficsorok mukodnek.
-
cog777
őstag
Na, meglepodtem, le tudom forditani az std::future-t es a std::promise-t ESP32-re.
Ma nincs idom, de majd megnezem hogy tenylegesen mukodik-e az adatcsere ket feladat kozott... ha mukodik, akkor nem kell queue-t hasznalni. -
cog777
őstag
válasz
Istv@n
#22799
üzenetére
"A freertos takokból meg lehet egyáltalán hívni egy "sima" függvényt?"
Hello, persze. Szerintem probald ki elorol felepiteni a programot, nem mindent atmasolva. Sok a hibalehetoseg es igy nehez segiteni.A setup-ban latom a Wifi csatlakozast, az jol mukodik, ido beallitas stb.
Az MQTT, adatbazis kapcsolodas, szenzorok kezelesehez hozzarendelhetsz egy-egy orokke mukodo FreeRTOS feladatot. Ezekbol nem kell kilepni, mert futhatnak folyamatosan.Itt van egy FreeRTOS pelda, probald eloszor ki, ket feladatot futtatva:
Ha ez mukodik, akkor elkezdheted megirni a programodat, pl MQTT. A kliensnek itt a library-ja, letoltod es megnezed az mqtt_basic peldat.
Latod hogy meg kell hivni a loop-ot:if (!client.connected()) {
reconnect();
}
client.loop();Szoval az egesz MQTT kezelest beleteheted egy FreeRTOS task-ba. Tehat:
void mqtt_task(void *param)
{
EthernetClient ethClient;
PubSubClient client(ethClient);
while(1)
{
if (!client.connected()) {
reconnect();
}
client.loop();
}
}Szenzor feladatnak is keszithetsz sajat feladatot, es elindithatod akar a masik CPU magra is teheted.
Az adatokat megoszthatod atomic-al a szenzor es az MQTT feladatok kozott:
std::atomic<float> homerseklet;Komolyabb kommunikaciot a feladatok kozott queue-val szoktak (xQueueCreate-ra keress ra).
Tovabba erdemes a feladatokat kulon .cpp es .h fajlokba tenni, igy szetvalasztva logikailag a programot.
Most ennyi idom van, esetleg irhatnal par szot mire kell az MQTT es az adatbazis?
FreeRTOS programozasnal figyelj a stack beallitasra. Erdemes lepesrol lepesre felepiteni es tesztelni a programot mert nagyon nehez megtalalni a hibat ha egybol mindent beleteszel. Asszem debuggolni lehet ha eredeti Arduino ESP32-t vasarolsz. -
cog777
őstag
-
cog777
őstag
válasz
Tankblock
#22705
üzenetére
Attol tartok nem lesz olyan egyszeru, a ChatGPT ezt irta:
...
Configure Memory Allocation: In FreeRTOSConfig.h, set the following macros:
#define configSUPPORT_STATIC_ALLOCATION 0
#define configSUPPORT_DYNAMIC_ALLOCATION 1
Use heap_3.c: heap_3.c doesn’t rely on configTOTAL_HEAP_SIZE. Instead, it uses the heap allocated by the linker. Ensure that heap_3.c is included in your build.
heap_3.c-t meg lehet talalni a letoltott forraskodban.Most ezt probalom. NewLib kavarast is meg kell meg neznem.
"Az általad említett ArduinoJSON könyvtár leírása szerint hacsak nem több szálból szeretnél 1 JSON t írni nem lesz gond..."
Nincs problemam ezzel, a malloc es free multiszalas eleressel van. Remelem a fenti megoldja."kérdés h megéri e, kell e, jó ez a SW arhitektúra.... kell e több szál vagy sem."
Ez nem kerdes, minden ceg hasznal RTOS-t a komolyabb mikrokontrollereken, es most ezen a teruleten dolgozom. 10 ev beagyazott linux tapasztalat mellett ezt is meg akarom tanulni. -
cog777
őstag
Sok helyen olvastam, illetve a cegnel ki lett debuggolva.
"When using FreeRTOS, malloc() and free() are not considered thread safe. As a result, it’s recommended that you use pvPortMalloc() and vPortFree() instead."Steps to use FreeRTOS with newlib reentrant Memory Allocation
Szoval 100%-ban hiszem.
A problema hogy sok kulso portolt library csak sima mallocot hasznal pvPortMalloc helyett (tehat ki kell cserelni), illetve ami meg nem tiszta, hogy neha ez sem eleg, ezert kell a newlib-et hasznalni, de ez meg nem tiszta nekem. -
cog777
őstag
válasz
cog777
#22701
üzenetére
Exception-ok mukodnek, bena voltam.
Amugy megtalaltam hogy a heap3 memoria allokacios strategia thread safe-et csinal a malloc-bol es a free-bol:
heap_3– simply wraps the standardmalloc()andfree()for thread safety.
platformio.ini-be tettem ezt:
board_build.freertos.heap_model = heap_3 -
cog777
őstag
Hasznal valaki exception-oket ESP32-on FreeRTOS alatt, kivancsi vagyok tamogatja-e, mert sok stl megoldas exception-t dob ha problema van.
Kiprobaltam egy egyszeru try catch blokkot, es boot loop-ba kerult az ESP32-om.
Lehet engedelyezni az exception-okat? -
cog777
őstag
válasz
Tankblock
#22696
üzenetére
Termeszetesen a TCP socket sajat Task-ban mukodik, mikozben mas thread/task ugyanugy hivja a malloc-ot. A C library malloc _NEM_ thread safe. Ez a problema. Tehat barmilyen ket Task, amibol malloc van hivva egyszerre, az problemas.
"Kérdés embedded környezetben miért szeretnél folymatosan memóriát foglalni"
Azert, mert szamtalan kulso library dinamikusan memoriat foglal memoriat, pl TCP socket vagy ArduinoJSON. Ez ellen nem lehet mit csinalni, hacsak nem lesznek megirva statikus allokaciora, ezt pedig a ceg altalaban nem fogja megengedni mert rengeteg ido, hacsak nem szuper kritikus helyen, nagyon celzottan keszul a rendszer, ahol a Misra C-nek megfelelo szabvanyt kovet a fejlesztes. Ami draga lesz. -
cog777
őstag
válasz
Tankblock
#22694
üzenetére
Hat, azert van par library ami biztosab dinamikus memoria allokaciot hasznal, pl. ArduinoJson, TCP socket stb, siman hasznalnak malloc-okat parhuzamosan, amig a hardvert en kezelem manualisan, gyakorlatilag minden hardveren egy azt mukodteto forraskod/task/driver ul es az fel van keszitve a tobbszalas eleresre.
Atomic jo otlet, nem jutott eszembe, hogy mar azt is lehet hasznalni...Amugy kivancsi vagyok, hogy a memoria toredezettseg nagy problema-e, mert hozzaszoktam a johoz desktop-on
pl optional-ba csomagolt variant ertekeket kuldok at a queue-on egyik task-bol a masikba ... -
cog777
őstag
válasz
Tankblock
#22689
üzenetére
Ha az ember hasznal egy csomo library-t, akkor azok valoszinuleg hasznalnak dinamikus memoria allokaciot. Ha csak a sajat kodot kellene lekezelni, akkor egyszerubb lenne, de ugye az ember probal idot sporolni es felhasznalni mas lib-eket. Mas megoldast annyira nem ismerek mint megcsinalni a malloc-ot es a free-t thread safe-re.
-
cog777
őstag
Hasznal valaki FreeRTOS alatt thread safe memoria allokaciot? Valamit modositani kell hogy thread safe legyen, azt probalom kiokoskodni.
Itt olvastam, ez eleg?extern "C" void __malloc_lock(struct _reent *REENT)
{
vTaskSuspendAll();
}
extern "C" void __malloc_unlock(struct _reent *REENT)
{
xTaskResumeAll();
}
Irnak vallami newLib-rol is, nem tudom ez kell-e? -
cog777
őstag
Ismer valaki mozgas detektalast segito library-t vagy algoritmust ami ESP32-on mukodik? Az ArduCam kamera kepet szeretnem felhasznalni. Gondolom valamennyi pixel valtozast eszlelnek.
Ha nincs semmi otlet, akkor a kovetkezot probalom meg:
kis felbontasban (VGA) eltarolom az elso kepet, majd a kovetkezot osszehasonlitom az elozovel mennyi pixel valtozast eszlelt. Lehetne pl a pixelvaltozast is hangolni, pl RGB ertekeknel csak ha 10 feletti a valtozas, az jelenti az igazi pixelvaltozast, kulonben figyelmenkivul hagyom.
A kis PIR-em nem igazan megbizhato, volt hogy semmit nem erzekelt. Mikrohullamuhoz mozgaserzekeleshez most jelenleg nincs idom.
A kameras mozgaserekelesnek a nagyobb energiafogyasztas a hatranya a PIR-hez kepest... -
cog777
őstag
Na, mukodik az ArduCam Mini OV2640 kepkeszites, erdemes az Arducam Mini LowPowerMode peldat megnezni. Egesz jo kepet keszit! Orulok ennek a kameranak.
Telegram-ra feltolteshez pedig egy olyan peldat erdemes nezni ahol 1KB-onkent tolti fel a telegramra. A beepitett pelda nekem crash-t okoz.
A ket peldat ossze kellett mixelnem, mert az utobbi telegrammos nem hasznalja az SPI-t.
Problemak voltak:
- Arduino Nano ESP32 bootloader nelkul jott (1.5 het, kabel problemat gyanitottam)
- telegrammos peldaban nem zartam le az atvitelt, igy nem is erkezett meg egy beepitett pelda kep
- soros porton atvitelkor az egy szamjegyu ertekek hexaban ervenytelenek voltak pl 0x00 helyett csak 0x0 lett atkuldve, igy a konvertalo progi ami lementette binarisban ervenytelen kepet mentett le.
- teszt kep meretet hasznaltam fel a rendes kamera kep merete helyett.Na, kb 3 het utan el kezdett mukodni

Fejlesztem tovabb FreeRTOS alapokon az okos otthoni rendszeremet. -
cog777
őstag
Valakinek mukodik a kep kiolvasasa az ArduCam Mini-bol? OV2640-os modul van meg.
Valamilyen adathalmaz jon ha elinditom a kiolvasast, de az nem JPEG kep.UHhh, bena vagyok. Valaki mondja meg hogyan kell a programkod formazast hasznalni?
A kivalasztom es beillesztem modszer nem mukodik.
Inicializalas:myCAM.set_format(JPEG); myCAM.InitCAM(); myCAM.OV2640_set_JPEG_size(OV2640_1600x1200); delay(1000); myCAM.clear_fifo_flag(); Serial.println(F("Camera initialized."));
Capture inditasa:
// Start capture myCAM.flush_fifo(); myCAM.clear_fifo_flag(); vTaskDelay(1000 / portTICK_PERIOD_MS); myCAM.start_capture(); vTaskDelay(1000 / portTICK_PERIOD_MS); while (!myCAM.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK)) { vTaskDelay(100 / portTICK_PERIOD_MS); }
uint32_t length = myCAM.read_fifo_length(); image_size = length; Serial.print(F("Captured image size: ")); Serial.println(String(length)); image_buffer = (unsigned char *)ps_malloc(length * sizeof(unsigned char)); myCAM.set_fifo_burst(); uint8_t temp = 0, temp_last = 0; int idx = 0; myCAM.set_bit(ARDUCHIP_GPIO, GPIO_PWDN_MASK); vTaskDelay(100 / portTICK_PERIOD_MS);
while ((temp != 0xD9) | (temp_last != 0xFF)) { temp_last = temp; temp = myCAM.read_fifo(); Serial.print(String(temp, HEX)); image_buffer[idx++] = temp; delayMicroseconds(10); }
myCAM.clear_fifo_flag(); -
cog777
őstag
válasz
cog777
#22640
üzenetére
Na mit szivtam... mar a vegere rajottem hogyan kell feltolteni egy programot, de zavart hogy ki-be kellett huzkodni a csatlakozot, reset gombot nyomogatni stb hogy feltoltsek barmit.
Egyszer csak bevillant, toltsem fel a BOOTLOADER-t! Es voala, el kezdett mukodni a debugger is, nem csak a feltoltes es futtatas.
Almomban sem gondoltam hogy bootloader nelkul jon
Most tokeletesen mukodik!
-
cog777
őstag
válasz
Janos250
#22629
üzenetére
Kozben tortent elorelepes: ha ESP32 board-okbol valasztom ki az Arduino Nano ESP32-t akkor lefordul, de nincs debug. Ha Arduino Boardok kozul valasztom ki, akkor egy csomo error-t ir ki a warningok miatt az ArduCam library-ra. pl ez miatt: -Wno-error=unused-variable
Lehet modositani a platform.txt-t?Esetleg hasznalom az altalanos ESP32-t es akkor nem hasznalom a debug-ot ...
"Lehet, csak újabb verzióval kellene fordítani, azaz az Arduino keretrendszer újabb verzióját használni!"
Hm, hogyan tudom upgradelni?
**************
Mas problema. Eredeti Arduino Nano ESP32-ot hasznalva nem mukodik a soros port. Nem ertem. Ha mindenfele szinben villog a mikrokontroller LED-je, akkor nincs soros port a Windows alatt, ha dupla reset gomb megnyomasaval csak zolden, akkor fel tudom tolteni a firmware-t, de nem mukodik a mikrokontroller.
NAGYON furcsa, mert egy klon Lilygo ESP32-vel nem volt ilyen keveres, egybol mukodott feltoltes utan a soros port, igaz - linux alatt probaltam. Most Windows alatt nem mukodik. Azt hiszem, telepithetek linuxot kiprobalni hogy ott mukodik-e. -
cog777
őstag
Megcsinaltam a programomat, kivalasztottam az Arduino esp32 board-ot, engedelyeztem a c++17-et, letoltottem az Arducam library-t, majd kaptam egy csomo forditasi hibat a konyvtaron pl inicializalatlan valtozo stb. Valahogy nem szereti az Arducam konyvtar a c++17-et, igy viszont irhatom at a progimat. Lehet bizonyos konyvtarakra letiltani warning-okat Arduino Ide-t hasznalva?
-
cog777
őstag
válasz
ViZion
#22582
üzenetére
Koszi a valaszt es az okos otthon topik ajanlast, elsiklottam felette. Arra is gondoltam hogy a homerseklet, esetleg fust erzekeloket nem DIY keszitem, mert allandoan toltogetnem kell az aksikat, hanem gyarit veszek tobb eves mukodesi idovel, viszont a "kozpont"-ot en csinalom esp-vel
, teszek ra telegram-ot, jo kis freertos/c++ gyakorlasnak. Persze integralhatnam valahogy HA rendszerbe, illetve valamilyen okos otthoni, google, amazon stb rendszerbe, de ... meg itt nem tartok, illetve szeretnem a freertost jobban megismerni.
Megnezem a linkeket, koszi megegyszer.Mas.
Valaki meg tudna mondani mi ez a "Matter" az Arduino Matter uj mikrokontrollerevel kapcsolatban? Meg egy Zigbee-hez hasonlo protokol? -
cog777
őstag
Ha van egy zigbee-s PIR, akkor azt ossze tudom kapcsolni az esp32 mikrokontrolleremmel? Persze egy zigbee modulon keresztul. Nagyon vonzo a PIR tobb eves mukodese elemmel, az esp32 pedig ugy is 220-rol es tapegysegrol mukodik.
-
cog777
őstag
Talatam egy esp32-hoz passzolo kamerat: ArduCam Mini 2mp
Viszont a lencset le szeretnem cserelni nagyobb latoszogure. Ha valaki ert hozza, megnezhetne hogy milyen adaptert es lencset kell kivalasztanom ... elvileg lehetseges a csere, CS-mount / M12.
Masik webshop, talan par Euroval olcsobb.
Amazon.de-n talaltam lencset, de nem vagyok biztos hogy melyik megfelelo. -
cog777
őstag
Masik kerdesem: nem tudom a flash-t hasznalni. Arduino IDE-ben kivalasztottam az ESP32 Dev Module-t, 4MB flash-t kette osztottam 2MB App-ra es 2MB SPIFFS-re. Itt van a kod. Mi lehet a problema?
Mindog a "- failed to open file for reading" uzenetet latom, tehat nem kesziti el a fajlt.if (!SPIFFS.begin(true))
{
Serial.println("An Error has occurred while mounting SPIFFS");
return;
}
...
File file = SPIFFS.open("/startup.txt");
if (!file || file.isDirectory()) {
Serial.println("- failed to open file for reading"); //<<-- MINDIG EZT LATOM.
global_repo.startup_counter = 1;
}
...
file = SPIFFS.open("/startup.txt");
counter_str = String(global_repo.startup_counter);
Serial.print("Startup counter: ");
Serial.println(counter_str.c_str());
file.write((const uint8_t*)counter_str.c_str(), counter_str.length());
file.close();
Tehat valami startup szamlalot akarok kesziteni, beolvassa a szamlalot a fajlbol, megnoveli 1-el, majd kiirja. Ha nem sikerul beolvasni, akkor kiirja az 1-et.Mas. Szegyen, nem szegyen, valaki leirhatna hogyan lehet a kod formazot hasznalni, mert ha beillesztek programkodot, akkor 1-2 sorba rakja az osszes sort.Nekem kell shift+enter-eket utogetve + tabozni. Linux es Windows alatt is probaltam, kb bongeszo fuggetlenul nem tudok beilleszteni.
-
cog777
őstag
Lattam az egyik uzletben okos riasztorendszert, a PIR erzekelo pl 6 honapot megy elemrol.
Ez elegge tetszetos, leteznek szenzorok amelyekhez az ESP32 tud csatlakozni? Tehat a protokollja nem zart? Igy az ESP32-m mint kozponti vezerlohoz todnam csatlakoztatni ezeket a cuccokat. FreeRTOS-t tanulom, igy szeretnem ezt a reszt magam csinalni.
En is epithetek PIR szenzoros riasztot, de az nem fog fel evig mukodni elemrol, vagy 5V-os tapra kotom, de azert jo lenne az elemes megoldas...
Total nem vagyok kepben a mostani okos otthoni rendszerekkel kapcsolatban, hogy mind kompatibilis-e egymassal, vagy vannak zartak... passz. -
cog777
őstag
Keresek egy eredeti Arduino-s board-ot, amit bluetooth BLE kommunikaciora akarok hasznalni, es tul sok reszelgetes es forrasztgatas nelkul is tud jo deep sleep aramot, kb <100uA
Van valakinek tapasztalata? Nano 33 BLE vagy mas esetleg?
-
cog777
őstag
Telegramos vezerles tok jo, ingyenes. Remekul mukodik

-
cog777
őstag
Ahogy latom, Arduinosok kihoztak egy uj board-ot: Arduino Nano Matter
Doksija szerint ultra low power-t igernek 16 mA mukodes kozben, illetve jumpert rovidrezarva 5Vin-en taplalva deep sleep-et.Amire kivancsi vagyok hogy milyen meglevo library-val kompatibilis, hiszen teljesen mas CPU, osszehasonlitva az esp32-vel...
-
cog777
őstag
Talatam SPI-s kamerat, 3-5Mpx, lehet beizzitom az esp32-met.
EU-s link
I2C LCD kijelzo, statusz adatoknak
Telegram-on vezerelni a cuccot, karmerat lekerdezni.
Ezeket osszekombinalva csinalok egy okos rendszert, tanulasi cellal
Tudom, meg lehet csinalni RPi-vel is, de most a mikorkontrollerek jobban erdekelnek... -
cog777
őstag
Van egy uj projektem. Egy kezi radio audio kimenetet kellene monitoroznom, es szamolnom hanyszor nyitott ki a zajzar. Szerintem egy meglevo esp32-ot hasznalok fel, annak van kijelzoje, fogyasztas mindegy, mert usb-rol taplalom.
Kerdes hogy hogyan kossem ossze fizikailag az esp32-vel, talan vezetekekkel es proba panellal?
Mekkora lehet a max feszultseg egy kezi radio audio jack csatlakozojan? (Quansheng k5-k6-rol lenne szo) Szerintem az ESP32 3V-ot visel el, asszem...Az egesznek az a lenyege, hogy ha nem vagyok radiokozelbe, akkor is tudjam kesobb, hogy valaki kereshetett (amolyan nem fogadott hivas szamlalo).
-
cog777
őstag
Ha valakit erdekel hogy telepitsuk vscode szervert RPi4-re (vagy PC-re): [link]
PlatformIO-t is sikerult raspberry pi-re, eloszor cpptools-t kellett letoltenem a marketplace-rol es telepitenem manualisan, majd ugyanazt a platformio-val.
Forditas mar mukodik, feltoltest meg nem probaltam, illetve a PIO Home nem jelenitodik meg, de lehet hogy csak a raspberry pi miatt van.
VPN-en keresztul tavolrol, akar egy tablettel is lehet kodolni az esp32-t. -
cog777
őstag
Valaki probalt PlatformIO-val hasznalni Adafruit_ST7789.h?
hianyolja az mbed-et, mikozben Arduino IDE-vel tokeletes.
.pio/libdeps/esp32dev/Adafruit_ST7789/Adafruit_ST7789.h:21:10: fatal error: mbed.h: No such file or directory -
cog777
őstag
válasz
lanszelot
#21080
üzenetére
Elvileg az Arduino IDE-ben vannak esp32-hoz kapcsolodo "camera" peldak.
Azokat probald meg feltolteni ugy hogy beirod a wifi azonositot es jelszot. Remelhetoleg szabvanyosan kotottek ossze a kameraval a esp32-t.En a Lilygo valtozatot fogom megvenni, azt legalabb latom a neten, hogy valaki mar kiprobalta.
Ha telepitesz egy VPN klienst, akkor Interneten keresztul is meg tudod nezni. [link]
-
cog777
őstag
Pushover tokeletesen mukodik FreeRTOS alatt is. [link]
-
cog777
őstag
Valaki hasznalt mar Arduino Cloud-ot?
Ugy tunik csak a Web Editorban lehet legeneralni a cloud kodot.
Kicsit nehezkes egy letezo projekthez hozzaadni a cloud source fajlokat. -
cog777
őstag
Talaltam egy 5 eszkozig ingyenes VPN szolgaltatot, esp32-re is
https://husarnet.com/ -
-
cog777
őstag
válasz
Undoroid
#20969
üzenetére
Jelen pillanatban a szerver egy esp32 es TCP szerverkent is funkcional. Tehat az esp8266 felebred, elkuldi az homersekletet a kertbol es a padlasrol es elalszik. A szerver folyamatosan mukodik es kijelzi a korabban vett adatokat. Ha bizonyos ideig nincs frissites akkot kitorli az adott szenzorhoz tartozo adatot. Igy tudom meg ha kifogyott az elem ha nincs kijelzes az adott szenzorhoz.
Amugy ezt a valtozatot micropythonban irtam, tuti egyszeru volt.
Most c++-ra irom at es FreeRTOS-t hasznalva. Akarok hasznalni pushovert es arduino cloud-ot. -
cog777
őstag
Na, eloszedtem egy TTGO ESP32 modult, siman mukodik a FreeRTOS + a WiFi. Meg a rajta levo 3 gomb egyiket sem kell megnyomnom feltolteskor. Arduinos sracok egesz jo okoszitsztemat hoztak letre.
-
cog777
őstag
Na, hal istennek fagy a wifi ha freertos-t hasznalok raspberry pico-n.
Keresek valamilyen Arduino-s megoldast ami stabil es tamogatja a wifi-t, freertos-t.
Talan Arduino Nano ESP32? Gondolom az van vele egy ligaban es tamogatja az Arduino Cloud-ot. -
cog777
őstag
Hasznal valaki Arduino IDE 2.x-et Raspberry Pi Pico W-vel?
Ujbol kedvet kaptam az Arduino IDE hasznalatahoz, viszont problema van a leforditott binaris feltoltesevel.Amikor BOOTSEL modban van, tehat megjelenik a drive a szamitogepen, akkor kivalasztom azt mint port es remekul feltolti. Viszon csinal egy reboot-ot es onnantol nem lehet feltolteni semmit sem, hiaba valasztottam ki a portot. Tehat ujbol ki kell hoznom es nyomva tartani a gombot amikor csatlakoztatom. Ami gaz.
Lehet hogy valamit kihagyok? Linuxot hasznalok amugy. -
Új hozzászólás Aktív témák
- Xiaomi 15 - kicsi telefon nagy energiával
- EA Sports WRC '23
- Horgász topik
- Android alkalmazások - szoftver kibeszélő topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Samsung Galaxy Felhasználók OFF topicja
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Folytatja küzdelmét az Intel az NVIDIA (és az AMD) ellen
- Akciókamerák
- További aktív témák...
- LG 27UL500P-W - 27" IPS - 3840x2160 4K - 60Hz 5ms - HDR10 - AMD FreeSync - 300 Nits - sRGB 99%
- Apple iPhone 12 Pro 128 GB Pacific Blue 1 év Garancia Beszámítás Házhozszállítás
- Asus ROG G20AJ - Intel Core i7-4790, GTX 980 + eredeti doboz
- Samsung Galaxy S22 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- MÉG OLCSÓBB 10.21. !!! Új elekrtomos rollerek 2/3 áron és e-bike dobozban, 1 év garanciával:
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő

respekt
, hat, ha a futo c++ program egyszer csak csonta fagy es 1 het elmegy arra hogy megtalald a hibat, akkor az ember el kezdi megbecsulni a pythont, ami legtobbszor kiirja a hiba helyet. Pythonban azert van valami vedelem.


ekkold
