- lezso6: Nem látszik a kurzor Chrome alatt a beviteli mezőkben?
- vrob: Az IBM PC és a játékok a 80-as években
- eBay-es kütyük kis pénzért
- hdanesz: Elektromos autózás - első élmények
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Lalikiraly: SÜNI energiaital.
- zebra_hun: Hűthető e kulturáltan a Raptor Lake léghűtővel a kánikulában?
- Gurulunk, WAZE?!
- sziku69: Fűzzük össze a szavakat :)
-
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
-
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.
-
Janos250
őstag
Bár már gyakorlatilag aktualitását vesztette, de csak most jutott eszembe, hogy valakinek én régebben feltettem egy DHT11 kezelő mintaprogramot, amit azért is úgy tettem fel ahogy, hogy könyvtár témára is példa legyen:
[http://arduinouser.hu/szenzorok/] -
Janos250
őstag
Ezt hagyd ki:
int A;
int B;
int C;
int D;Felesleges, sőt zavaró. Ha mégis benne lenne, akkor kellene a this, ha nem a paraméterre, hanem a példány saját változójára hivatkozol, és megegyezik a nevük, de itt most olyan nem kell.
Más gondot én első ránézésre nem látok, de több szem többet lát. -
Janos250
őstag
Kutyafuttában pár megjegyzés:
1.Ne az osszeadas2 elé, hanem a SZAMOL elé tedd!
2.A hibatkozott példád:
class A2DD
{
int gx;
int gy;
public:
A2DD(int x,int y);
int getSum();
};Tehát KELL lenni egy public:
"A2DD(int x,int y);" -nek, azaz az osztály nevével megegyezően (konstruktor a neve)
a getSum()-nak nincs paramétere, mert a példányosításnál megadod."osszeadas2.osszeadas2(A, B)"
nagyon szerencsétlen a példánynak ugyanazt a nevet adni, amit egy tagfüggvénynek. Adj neki más nevet!Közben látom, újabb is van:
- "nem lehetne feltenni a
//class SZAMOL (int A, int B) { mögé?"
Nem!- vagy az osszeadsnak legyen paramétere, vagy a szamolnak. Mindkettőnek: konfúz!
- " this->A = A; //ezt a this részt nem értem, hogy mit csinál
this->B = B; /"
Egyelőre ne is használd, szerintem (tudod, pap, papné)
Helyi változónak lehetőleg ne legyen az a neve, ami a paraméternek!Többit legközelebb, mert most rohanok.
-
Janos250
őstag
válasz
MineFox54 #8660 üzenetére
Nagyon régen használtam nanot, de mivel - úgy látom - nem nagy a tolongás válaszadásra, ezért próbálkozom, kezeld kritikával!
Nekem ez az stk500 gyanús, hogy annak nem kéne ott lenni. Biztos, hogy azzal akarod tölteni?
Biztos, hogy ha nem, akkor az uploadot nyomtad meg, nem véletlenül az upload using programmert? -
Janos250
őstag
válasz
Tankblock #8650 üzenetére
Elsőre természetesen nekem is a táp volt gyanús, de erős külső táppal ugyanazt csinálja. Én nem mindig használok külső tápot, csak ha gond van. Tüskék természetesen beforrasztva, és a panel hátlapjára a külső táp csatija is. Bekapcsoláskor egy-két feltöltés gyakran sikerül, de ha egy óra múlva próbálom, sehogy se megy. Azért gyanakszom én is a baudrate stabilitására, amit az interneten is írtak, mert ha lerövidítem a csomagokat, akkor felmegy. Na, meg ha a kristályos USB-TTL átalakítót használom.
-
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
Fejlemények Sonoff touch ügyben:
Úgy tűnik, hogy az FT232RL USB-TTL csatolómmal a szinkron elvesztése miatt nem mindig megy.
Ezen nincs kvarc, a másik csatolón, amivel megy, azon van.
A hosszú adatcsomag során - úgy tűnik - elcsúszik a szinkron, ha nem stabil a 115200 baud. A netes info alapján rövidíteni kell az adatcsomagot, amiről majd írok pár mondatot. Jelenleg ez megoldásnak tűnik. -
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" -
Janos250
őstag
Helyzetjelentés Sonoff touch ügyben:
FT232RL-el próbálva:
Szinkront (baudrate) megtalálja, erase részeket megcsinálja, feltöltést elkezdi, majd kb 80%-nál kiakad, reprodukálhatóan.UNO-n keresztül:
Már a szinkront sem találja meg. Egyébként is fura az ügy, mert az Rx villog már a feltöltés elindítása előtt is, tehát a gép folyamatosan próbál valamit küldeni az UNO-nak. Ezt elvileg nem volna szabad így csinálnia.
Pedig ezek beállítva:
Uno - 8266
3V3 - Vcc
RX - TX
TX- RX
GND - GNDUno-n: Reset -> GND
PL2303HX USB-soros csatolóval:
A program továbbra is felmegy, működik, de nem értem, hogy ezzel miért, FT232RL-el miért nem?
Most az OTA is sikerült. Ha ez rendesen megy, jó kis eszköz lesz ez a kapcsoló.Persze egy baj is van:
Az asztali gépemen lévő PL2303HX driverével megy. Megpróbáltam laptopon, de ami drivereket találtam, azzal nem jelenik meg a soros portok között. :-( Arra már nem emlékszem, hogy az asztalihoz honnan vettem a drivert. -
Janos250
őstag
válasz
Teasüti #8633 üzenetére
Általános tapasztalatom:
Ha a program nem úgy működik kiíratással, vagy más függvények meghívása után, akkor a tömb indexe fut ki a tartományból, amit ugye a program nem ellenőriz. Pedig már a programozási anyanyelvemen (Algol60) is ellenőrizte a program az indexet. Úgy tudom, valami kapcsolóval ki lehet kényszeríteni az index ellenőrzést ennél a fordítónál is, de ehhez nem értek, de talán valaki igen.Az adott problémánál, ha a j minusz 1 lesz, akkor az ugyebár az uint8_t miatt a 255. elemet jelenti. Ha az létezik, mert akkorára van deklarálva, akkor abba ír, ha nem, akkor meg az más által használt terület, de ő bambán oda ír.
-
Janos250
őstag
válasz
Tankblock #8610 üzenetére
1 kapcsolós touch Eu.
Próbáltam külső táppal is, de úgy se ment. (így sikerült véletlenül 12V-ot ráadnom az egyikre). Próbáltam a ck előírása alapján is, mert az FTDI-n megvannak a lábak, meg próbáltam a "kézi" módszerrel is, úgy is, hogy a táppal resetelem, úgy is, hogy a reset lábra forrasztottam egy madzagot és azzal reseteltem, de semmi az FRDI-vel. Azaz kb 20-30-ból egy néha felment hiba nélkül. A vezetékeket is cseréltem, hátha ott van a gond. Holnap majd kipróbálom Teasüti módszerét, a CH340-el. -
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 #8597 üzenetére
Én arduino alatt az arduino környezetet értettem.
Volt az interneten valóban, aki egy arduino lapon keresztül programozta, de erre nem igazán tudtam rájönni, hogyan? Mit hova kötsz, milyen programot teszel az arduino lapra, a lefordított kész fájlt rakod fel, vagy hogyan csinálod? -
Janos250
őstag
Srácok!
Valaki programozta már a Sonoff touch fali villanykapcsolót arduino alatt?
Próbáltam FT232RL USB-soros csatolóval, ami eddig mindenhol bevált. Itt nem, a több példány közül egyik se. Kb. minden huszadik feltöltés lett jó. Utána próbáltam a sokat szidott PL2303HX-el. Csodák csodája, tökéletesen sikerült vele programozgatni. Utána próbáltam úgy felprogramozni, hogy OTA (Over The Air) módszerrel, azaz wifin keresztül lehessen feltölteni a programot. Meg is jelent a portok között a hőn áhított hálózati csatlakozás is, de feltölteni rá nem tudtam, kiakadt.
Véletlen: 12V az eszköznek, lelke kilehelve.
Folytatás másik ugyanilyen kapcsolóval. Erre a példányra meg semmilyen USB-soros csatolóval se tudok arduino alól programot feltölteni.Van valakinek ezzel az eszközzel arduinos tapasztalata?
-
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. -
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. -
Janos250
őstag
válasz
choco01 #8415 üzenetére
Nem nehéz.
Ez a main.cpp (mivel az Arduino programja is C++, természetesen van main.cpp is, csak arra nem szokták felhívni a figyelmünket.)#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "Arduino.h"
#if CONFIG_AUTOSTART_ARDUINO
#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif
void loopTask(void *pvParameters)
{
setup();
for(;;) {
micros(); //update overflow
loop();
}
}
extern "C" void app_main()
{
initArduino();
xTaskCreatePinnedToCore(loopTask, "loopTask", 8192, NULL, 1, NULL, ARDUINO_RUNNING_CORE);
}
#endifAlapesetben, ha nem írod át a main.cpp-ben, akkor a loop a core 1-en fut.
Ha csinálsz függvényt, azt ugyanígy a xTaskCreatePinnedToCore-al tudod hívni, és meghatározhatod, hogy melyik magon fusson.
Itt mutattam rá egy programomból egy mintapéldát.
https://prohardver.hu/tema/arduino/hsz_8403-8403.html -
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.
} ; -
Janos250
őstag
Nem kell megfejteni!
Ennyi a loop lényege:void loop() {
taskDISABLE_INTERRUPTS() ;
for ( uint8_t i = 0 ; i < ledNum ; i++) {
transmitOnePixel(lightArray [lightArrayIndexPortWriting][i]) ;
} ;
taskENABLE_INTERRUPTS() ;
delay(1000) ;
} ; // end loopA transmitOnePixel paramétere egy tömb.
typedef struct RGB {
uint8_t r, g, b;
};
RGB lightArray[2][ledNum] ;Az első indexe 0, vagy 1. Amíg az egyik első indexxel a tartalmát küldöd a led szalagra, addig a core0-á a másik indexxel számolod a következő értéket.
Ezt célszerűen egy
xTaskCreatePinnedToCore
hívással célszerű megtenni.Ezt:
void lightShowInCore0Code( void* parameter){
static uint8_t showNum = 0 ;
switch (showNum) {
case 0:
for ( uint8_t i = 0 ; i < ledNum ; i++) {
lightArray[lightArrayIndexCalculating][i] = RGB {0,0,0} ;
} // end for
lightArray[lightArrayIndexCalculating][0] = RGB {255,255,255} ; // first, last pixel controll
lightArray[lightArrayIndexCalculating][ledNum - 2] = RGB {255,255,255} ;
lightArray[lightArrayIndexCalculating][3] = RGB {255,255,255} ;
break;
case 1:
for ( uint8_t i = 0 ; i < ledNum ; i++) {
lightArray[lightArrayIndexCalculating][i] = RGB {(128-i*(128/ledNum)),i*(128/ledNum),0} ;
} // end for
break;
case 2:
for ( uint8_t i = 0 ; i < ledNum ; i++) {
lightArray[lightArrayIndexCalculating][i] = RGB {0,0,32} ;
} // end for
break;
case 3:
for ( uint8_t i = 0 ; i < ledNum ; i++) {
lightArray[lightArrayIndexCalculating][i] = RGB {0,32,0} ;
} // end for
break;
case 4:
for ( uint8_t i = 0 ; i < ledNum ; i++) {
lightArray[lightArrayIndexCalculating][i] = RGB {32,0,0} ;
} // end for
break;
case 5:
for ( uint8_t i = 0 ; i < ledNum ; i++) {
lightArray[lightArrayIndexCalculating][i] = RGB {(128-i*(128/ledNum)),0,i*(128/ledNum)} ;
} // end for
break;
default:
for ( uint8_t i = 0 ; i < ledNum ; i++) {
lightArray[lightArrayIndexCalculating][i] = RGB {16,16,16} ;
} // end for
}
showNum++ ;
showNum = showNum % 6 ;
vTaskDelete(NULL);
} ; // end lightShowInCore0Codecsak mintapéldának írtam hasraütésszerűen náhány verziót, ami a case szerint sorra veszi.
A
static uint8_t showNum = 0 ;
miatt sorra veszi őket.Persze lehet a kész könyvtárakkal is, ha már azzal kezdted el, bizonyára úgy is kell mennie.
A vékony drót esetét én sem értem, de vannak még csodák.Ha valamelyik led nem azt csinálja, amit kellene:
az többnyire amiatt van, hogy 1 msec időközönként megszakít, és ilyenkor túlszalad az idő.
Próbáld meg esetleg tiltani a megszakítást azon a magon, amíg tart az adatok feltöltése a szalagra! -
Janos250
őstag
Egyszer már mutattam, hogy mennyire pofon egyszerű mindenféle spéci könyvtárak nélkül az RMT-vel a WS2812 led szalag használata.
core1: a led feltöltés,
core0: minden egyéb.void transmitOnePixel( RGB pixel){
do {
} while (*((volatile uint32_t *) (0x3FF56060)) & (1 << 24) ) ; // busy?
uploadToRMTmem(pixel.g,0) ;
// start transmit:
// RMT.conf_ch[chanelNum].conf1.mem_rd_rst = 1;
*((volatile uint32_t *) (0x3FF56024)) |= (1 << 3) ;
// RMT.conf_ch[chanelNum].conf1.tx_start = 1;
*((volatile uint32_t *) (0x3FF56024)) |= 1 ;
uploadToRMTmem(pixel.r,1) ;
uploadToRMTmem(pixel.b,2) ;
}
void uploadToRMTmem( uint8_t oneByte, uint8_t n){
uint16_t offset = n*32;
uint8_t i ;
for ( i = 0 ; i < 8 ; i++) {
if ( oneByte & (128 >> i ) ){
*((volatile uint32_t *) (0x3FF56800 + n * 32 + i * 4)) = WS2812bitHIGH32 ;
}
else {
*((volatile uint32_t *) (0x3FF56800 + n * 32 + i * 4)) = WS2812bitLOW32 ;
} ;
} ; // end for
} ; // end uploadToRMTmem -
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());
} -
Janos250
őstag
válasz
moldan86 #8377 üzenetére
A sebességet ki tudod olvasni a GPS által küldött NMEA mondatból, mert benne van.
Ennek a szoftver része egyszerű, de a dobozolás, stb, az a macerás. Én nem vállalok melót, nem azért mondom
Ha elég a szokásos GPS-ek által mutatott pontosság a sebességre, akkor viszonylag olcsón megúszod, de ha nagyobb pontosságot akarsz, akkor MÉLYEN a zsebedbe kell nyúlni.
Akku töltöttség kijelzre szerintem akkor jársz a legjobban, ha rendelsz egy készet Kínából. -
Janos250
őstag
-
Janos250
őstag
válasz
pataslogeza #8325 üzenetére
Próba:
Az első néhány bájtot írd át binárisba, és ellenőrizd, nem a bitek helye van-e felcserélve. De az se kizárt, hogy valamilyen tömörített formátumban van letárolva, és bekapcsoláskor bontja ki. Jobb ötletem nincs. -
Janos250
őstag
válasz
ngabor2 #8302 üzenetére
Nem használok nanot, ezért csak ötletelek:
1. biztosan jó pinre dugtad?
2. Működik az a pin? Én kipróblnám egy leddel a blinket.
3. biztos, hogy a D2 = 2? (én kipróbálnám a 2 helyére a pinmode-ban és a digitalwrite-ban D2-t írni.)
4. a nano ábráján a D2 az INT0 is. Nem az kavar be? -
Janos250
őstag
Sajnos a Galileo támogatása - úgy látom - lassan halad. Én is várnám, mert mégiscsak Eu. Viszont az a tapasztalatom, hogy GPS + GLONASS gyakorlatilag tökéletes. Mindkettőből lát 6-10 holdat, az együtt már bőven sok, tud válogatni is. A BEIDOU nálunk szinte használhatatlan, 1-2 hold látszik gyengén. A Glonass - ha teljesen kiépítik - a korrekciója miatt kellene, hogy tudjon méter alatti pontosságot, ami azért jó lenne az olcsó chipeknél. Az már más kérdés, hogy tudtommal Magyarország nem csatlakozott, hogy felküldje az Mo területére vonatkozó korrekciós adatokat. De majd, hátha.
-
Janos250
őstag
válasz
fagylalt #8292 üzenetére
A flight controller is ugyanaz. Régebben G-mouse-nak nevezték. A flight controller néha légnyomásmérőt is tartalmaz a magasságméréshez.
Pl. ez olcsóbb, de az általad linkelt jobb.
https://www.ebay.com/itm/NEO-6M-GYNEO6MV2-GPS-Module-w-Antenna-Flight-Control-for-Model-Aircraft/253371916379?epid=677378824&hash=item3afe24a05b:g-cAAOSwoeRZk6sy
Az általad linkelt a NEO-M8N paraméterei igen kedvezőnek túnnek (még nem használtam, de valüszínűleg fogom -
Janos250
őstag
válasz
fagylalt #8286 üzenetére
Ez nekem bevált, bár én még kétezerért vettem:
https://www.ebay.com/itm/28dB-LNA-Gain-1575-42MHz-SMA-Male-GPS-Antenna-Active-Connector-Stronger-Singal/282685875671?epid=750817279&hash=item41d16425d7:g:TZoAAOSw1MBZ2dek
Lehet, hogy kell ilyen csati:
https://www.ebay.com/itm/IPEX-To-SMA-Female-Portable-GPS-Navigation-Antenna-Modified-External-better-w/271744072214?hash=item3f45357a16:gX8AAOSwkNZUl9DT
Ez a kategória is megfelelt számomra. Mértem, nem volt lényegi különbség.
https://www.ebay.com/itm/GPS-Active-Antenna-Cable-Hign-Gain-SMA-Male-Plug-Connector-1575-42-MHz/263422264589?hash=item3d5530c50d:gIYAAOSwMEtaUG7f
Erre azt írják, hogy GPS is és Glonass is.
Én a legelőször linkeltet is használni tudtam Glonasshoz is.
Ezt kipróbáltam, nekem jól működött:
https://www.ebay.com/itm/VK-172-USB-GPS-G-Mouse-Gmouse-Glonass-Ublox7-Windows-10-8-7-Vista-XP/262781763789?hash=item3d2f0380cd:g:TKwAAOSwR6RaOehW
Ez meg az, amit én még tízezer körül vettem, és picit gyengébb a jele, mint a legelőször linkeltnek.
Hopp, itt lemaradt a link, de már töröltem.Ezt most találtam, nem tudom milyen.
https://www.ebay.com/itm/1pc-BLUETOOTH-Module-GSM-GPRS-Module-SIM868-GLONASS-GPS-Module-Text-and-PDU/253073218931?hash=item3aec56dd73:g:xUAAAOSwEupZgCzw
Meg ezt is:
https://www.ebay.com/itm/NEO-M8N-GPS-Shield-for-Arduino-Indoor-Positioning-GPS-Galileo-GLONASS-BeiDou/272086464137?hash=item3f599df689:g:QcUAAOSw14xWIcMPRészletesebben nem tudom, mert én kb 2 éve vettem utoljára, és vevőként eggyel magasabb kategóriájút.
-
Janos250
őstag
válasz
fagylalt #8284 üzenetére
"Amúgy a GPS-szel egy önvezető járműnek a pozicióját szeretném begyűjteni"
Ebben az árkategóriában azt felejtsd el. Az félmilliónál kezdődik.
Ezeknek a GPS-eknek a fizikai okok (pl. változó légköri viszonyok, stb.) miatt a pontossága néhány méter.
Az önvezető autókhoz geodéziai "jellegű" GPS kell, ami egy egészen más kategória, eléggé más elven is működik.
A traktorokhoz az önvezető GPS másfél milliónál kezdődik. Ez ugyan irreálisan drága, ki lehet hozni olcsóbban de nem drasztikusan olcsóbban.
A geodéziai GPS-ek kategóriában keress! -
Janos250
őstag
-
Janos250
őstag
válasz
multipass4 #8278 üzenetére
Természetesen szivesen segítünk ha elakadsz, de itt több tapasztalatuk van:
https://prohardver.hu/tema/okos_otthon_smart_home/friss.html -
Janos250
őstag
Szerintem igen , de a döntés az övé, mert másként minden gondért a javasoló a hibás! Az én elvem, hogy mindig használjuk a legkorszerűbbet, ami ár/érték arányban még jó. AZ ESP32 a maga kategóriájában jelenleg mindent magasan ver ilyen szempontból. De ha ragaszkodik a 04-hez, akkor nincs mit tenni, használja. Azt se tudom, mennyi memória van a 04-ben. Belefér az Arduino, vagy AT parancsokkal kell programozni? Mert ha igen, akkor kell hozzá egy másik chip is, ami kezeli. Persze lehet, hogy felmegy rá az Arduino, nem tudom, ennek talán érdemes lenne utánanézni!
-
Janos250
őstag
Biztos, hogy ezt a 04-et akarod használni? Úgy gondolom,elég nehéz lesz olyan embert találni, aki még ezt a régi típust használja. Ha nem akarod az ESP32 vonalat, hanem mindenképpen az ESP8266-nál akarsz maradni, akkor mi az oka, hogy nem az ESP12-t használod ugyanúgy, mint még sokan mások? Abból is van olyan verzió, ami picike, csak a chip (a fehér panelra rakható)
https://www.ebay.com/itm/Esp-12E-ESP8266-Serial-Port-WIFI-Transceiver-Wireless-Module-AP-STA-New/253142334988?epid=1279738338&hash=item3af0757e0c:ggwAAOSwgjFZqqLM
16 x 24 mm
Sokan használjuk ezt, amikor kicsi a hely. -
Janos250
őstag
Ezt
https://github.com/arendst/Sonoff-Tasmota
valaki próbálta már? -
Janos250
őstag
Ha saját PCB-t akarsz gyártani, akkor számításba jöhet maga az ESP-WROMM-32 modul, mivel az tartalmaz minden lényeges dolgot a modulon belül. Árulják hozzá a "fehér panelt", ami - ha kell - segítséget nyújthat a bekötéshez, vagy hosszú tüskékkel akár a panelra illesztve.
https://www.ebay.com/itm/ESP-WROOM-32-ESP32-ESP32S-IoT-Wifi-Wlan-BLE-Module-Adapter-Board-New/192253158352?hash=item2cc32e63d0:m:m-ZePhfZj7iMjfsrkyAZUiQ
USB-soros konverter nincs rajta, de ez úgyis csak a programozáshoz kell, a normál üzemhez nem. -
Janos250
őstag
Milyen méretre gondolsz?
Ha centire, akkor van:
https://www.ebay.com/itm/TTGO-MINI-Wemos-D1-ESP32-32S-WIFI-Development-Board-Bluetooth-CP2104-ESP8266/282765911347?hash=item41d6296533:m:muiXj0-qSqQnCUYjkXpIW3g -
Janos250
őstag
Megnéztem egy 60 pixeles szalag áramfelvételét 5V-os, és 3.3V-os táp esetén, maximális (255,255,255) fényerőnél
Nincs egy Li akkud pl. 18650 amivel ki tudod próbálni? Vagy egy laposelemed? Kisebb feszültséggel is stabilan működnek, csak kisebb a fényerejük. Szintillesztőt én sem használok, közvetlenül a led bemenetet kötöm az ESP32 lábára. Vagy próbáld ki, hogy ugyanarról az USB tápról hajtod meg a szalagot is, és az ESP-t is. Azaz feltöltöd a gépről, majd utána lecsatlakoztatod a gépről. Az az érintéses probléma nekem nagyon valamiféle "kóbor" delejre utal.
-
Janos250
őstag
Megvan a megoldás:
taskDISABLE_INTERRUPTS() ;
LEDek.show();
taskENABLE_INTERRUPTS() ;Így használd! Minden egyes LEDek.show(); előtt letiltjuk az interruptot. utána engedélyezzük.
Így már stabil!
Nem árt persze, egy erős táp, de mielőtt atomerőművet kapcsolsz a szalagra, javasolom, hogy ezt azért próbáld ki. Nem azért jó rövid szalagnál, mert kevesebb az áramfelvétel, hanem mert kisebb valószínűséggel szalad bele az 1 milliseces megszakításba. -
Janos250
őstag
Én nagyon szkeptikus vagyok az Adafruit könyvtár használatát illetően.
Az a kisebbik gond, amit már leírtam, hogy a számláló átfordul, van egy sokkal nagyobb:
Az 1 msec-enkénti megszakítás nincs kivédve.
Próbálgattam ezt a könyvtárat, de sehol nem akart működni, aztán megnéztem miért. Itt a képek.
Az 1 msec-enkénti megszakítás 7-8 microsec, ami pont a határon van. Elméletileg 50 microsecet írnak a határra, de én még olyan szalaggal nem találkoztam. Lehet, persze, hogy az eredeti Adafruit szalagok tudják, de ezek között a kínaiak között én még nem találtam olyat, aminél ne 7-8 microsec lenne a határ, tehát pont a kritikus "billegő" tartomány. -
Janos250
őstag
válasz
Janos250 #8229 üzenetére
Egy mondat magyarázat hozzá:
minden használat során kiolvassuk a 32 bites számlálót, de csinálunk egy "felső", magasabb helyiértékű 32 bitet is, ami induláskor 0 lesz. Ha a kiolvasott számláló értéke kisebb, mint az előző kiolvasásnál, akkor növeljük eggyel a magasabb helyiértékű 32 bitest is, mert akkor a számláló átfordult.
Ez jól működik mindaddig, amíg legalább 17 másodpercenként használjuk. -
Janos250
őstag
válasz
Teasüti #8228 üzenetére
UNO-nál nem tudom.
ESP32-n én így oldottam meg:
A union nem tartozik a lényegéhez, de nem volt most kedvem átberhelni, csak bekopiztam.typedef union konv {
uint64_t v64bit = 0 ;
struct {
uint32_t low32bit ;
uint32_t hi32bit ;
} s32bit;
struct {
uint16_t low32bit_low16bit ;
uint16_t low32bit_hi16bit ;
uint16_t hi32bit_low16bit ;
uint16_t hi32bit_hi16bit ;
} s16bit;
uint8_t v8bit[8];
};
uint64_t getCycleCount64() {
static uint32_t CycleCount32 = 0 ;
static konv CycleCount64 ;
static uint32_t ccount;
__asm__ __volatile__("esync; rsr %0,ccount":"=a" (ccount));
CycleCount32 = ccount ;
if (CycleCount64.s32bit.low32bit > CycleCount32 ) {
CycleCount64.s32bit.hi32bit++ ;
};
CycleCount64.s32bit.low32bit = CycleCount32 ;
return CycleCount64.v64bit ;
} ; -
Janos250
őstag
Belenéztem ebbe az Adafruit könyvtárba, és elvi problémám van vele:
deklarálja a szokásos módon:static inline uint32_t _getCycleCount(void) {
uint32_t ccount;
__asm__ __volatile__("rsr %0,ccount":"=a" (ccount));
return ccount;
}Ez rendben.
A bitek kezdeténél vár annyit, amennyit kell:while(((c = _getCycleCount()) - startTime) < period); // Wait for bit start
Ugyanígy várakozással időzít a magas szintnél is. Ez így jó (lenne), erre írtam egyszer korábban, hogy a "gyalog" módszer.
Nincs RMT, ciklusban vár, de OK, mert közben úgyse csinál semmit a proci.
Csakhogy:
a uint32_t _getCycleCount(void) mint láthatjuk 32 bites, tehát nagyjából 17 másodpercenként átfordul, és olyankor borul az időzítés!
Persze van elég nagy valószínűsége, hogy nem akkor írja a szalagot, de ha igen, akkor csúszik az egész. Nem csak egy pixel, mert "pixel végjel" nincs.
Ezért kell 64 bites verziót használni (szoftveresen megoldva) -
Janos250
őstag
Na, most megint csak a levegőbe dumálok:
Én a LEDek.show(); -t egy sorrál hátrébb tenném, tehát a kapcsos zárójel mögé.
Mert:
A for ciklus fusson végig, azaz töltsd fel a puffert teljesen, utána írja ki a dolgokat a LEDek.show();Hogy jobban megértsd mit csinálsz, javasolnék egy próbát:
a LEDek.setPixelColor(i,csunyafeher); helyére próbára:
LEDek.setPixelColor(i,LEDek.Color((255-i*4)/4,i,0)); Lusta voltam másikat csinálni.Tehát:
1. végigmegy a ciklus, azaz letárolja [LEDek.setPixelColor]
2. amikor a teljes show ki van számolva, le van tárolva, a LEDek.show(); kitölti a szalagra, és megjelennek a színek
3. vár 1000 msecet, azaz egy secet, és újra tölti.A villanás (gyanúm szerint) megszűnik, ha a LEDek.show() a cikluson kívülre kerül.
Így, hogy ugyanaz a szín lesz mindig kiírva, nem látszik a lényeg, de kipróbálhatod pl ezt:
for (i=szakasz1kezdet; i<LEDmennyiseg+1; i++)
{
LEDek.setPixelColor(i,csunyafeher);
} ;
LEDek.show();
delay(1000);
for (i=szakasz1kezdet; i<LEDmennyiseg+1; i++)
{
LEDek.setPixelColor(i,kikapcsolt);
} ;
LEDek.show();
delay(1000);
for (i=szakasz1kezdet; i<LEDmennyiseg+1; i++)
{
LEDek.setPixelColor(i,LEDek.Color((255-i*4)/4,i,0));
} ;
LEDek.show();
delay(1000); -
Janos250
őstag
Kösz!
Nem szedtem ki a dolgokat librarybe, mert ezek demonstrációs céllal készültek. Tehát nem belevittem a libraryt, hanem "nem vittem ki". Azt akarnám bemutatni, hogy mennyire egyszerűen lehet kezelni ESP32-vel a WS2812-t is. Majd ha lesz annyi időm, leírom, a még néhány hasonló megoldással együtt. Igen, az a próba van beleírva a lightShowInCore0Code()-ba a case-eknél, amit leírtál. Ez egy próba, hogy lássam, úgy működnek-e a ledek, ahogy szeretném. Látom, Nálad is úgy működnekJa, még annyit, hogy a két mag előnyét szándékoztam - többek között - bemutatni. Az egyik mag kezeli a ledeket, a másik meg kiszámítja, hogy mit kell kivinni. Így mehetnek párhuzamosan, nem zavarják egymást. Ha már van két magunk az ESP32-ben használjuk ki.
-
-
Janos250
őstag
Hoppla-hopp! Na, megvan a hiba.
A "No hardware SPI pins defined. All SPI access will default to bitbanged output"
hibajelzés, az nem a fordító hibajelzése, hanem a fastspi.h fileban van:# if !defined(FASTLED_INTERNAL) && !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
# ifdef FASTLED_HAS_PRAGMA_MESSAGE
# pragma message "No hardware SPI pins defined. All SPI access will default to bitbanged output"
# else
# warning "No hardware SPI pins defined. All SPI access will default to bitbanged output"
# endif
# endifEl kéne távolítani azt a fastspi.h-t!
Hú, erre a fene se gondolt.
-
Janos250
őstag
Közben megpróbáltam utánanézni ennek az SPI-s hibaüzenetnek. Amit találtam:
1. ESP8266 esetén kapták ezt az üzenetet. Biztosan ESP32-t állítottál be?
2. Mellesleg ez az utolsók egyike volt a hibaüzenetekben. Mindig a legelső hibaüzenetet kell nézni, bár az már általában nem látszik. Ezért én úgy szoktam, hogy a "hibaüzenetek másolása" gombbal kimásolom, és kiteszem notepadre, ott keresem ki a legelső hibát, mert az utána már generál még egy csomó, érthetetlennek tűnő hibát. -
Janos250
őstag
"de így is ugyanazt az üzenetet kapom."
Akkor valami egyéb gáz van, mert mielőtt feltettem, direkt próbára lefordítottam, annak a képét tettem fel.
És a másik verzió, amit a 8194-ben írtam? Abban még RMT sincs, csak digitalWrite(), annak aztán mindenképpen menni kellene! Az ESP32 elég gyors ahhoz, hogy RMT nélkül, csak a GPIO használatával is menjen, ha az interruptot letiltjuk.
Itt írom le, hogy ha valakinek nem elég a millis, micros, mert nagyobb felbontást akar, akkor a CCOUNT használható. Egy baja van, hogy csak 32 bites, de szoftverrel ezt meg lehet kerülni. Ezzel nagyon pontos időzítések állíthatók be bármire."De nekem szerintem a NodeMCU van."
Az tökmindegy, a rajta lévő IC a lényeg. Az ESP32-k közül sem különösebben lényeges, hogy melyiket állítod be azok közül, amelyiken ESP-WROOM-32, vagy lánykori nevén ESP32S van. Mellesleg amit én használok, az pont úgy néz ki, mint a Tied, a lábak is ugyanúgy vannak. -
Janos250
őstag
Ha végképp nem megy, tettem fel egy gyalogkakukk megoldást, amiben semmi más nincs, csak a CCOUNT a delay helyett. Ha megnézed a writeOneByte()-ot, látod, hogy felviszi a lábat magasra, helyben jár, ameddig magasan kell tartani, majd leviszi, és rögzíti az időt, hogy mikor kezdődhet az új bit kivitele. Az új kiírása előtt megnézi, hogy eletelt-e már a megfelelő idő.
link
Ebben tényleg semmi olyan nincs, ami miatt ne működne. Persze a másiknak is kell működni. -
Janos250
őstag
-
Janos250
őstag
Elvileg nem kizárt persze, hogy ez is, meg a
http://www.indiegamebundles.com/
linken felsorolt többi is jogtiszta legyen 1-2 százalékáért annak, amennyiért a kiadó, gyártó árulja.Akkor maradjunk annál, hogy jogtiszta.
-
Janos250
őstag
válasz
csadi0011 #8171 üzenetére
Ez ugye nem igazán jogtiszta? Ha jól értelmezem első ránézésre, 15 $-ért kapsz 14 könyvet, amiből néhánynak valószínűleg hasznát is veszed.
Szerintem háromféle letöltés létezik:
1. megveszed jogtisztán
2. letöltöd nem jogtisztán, de ingyen
3. letöltöd nem jogtisztán, de pénzértJól értem, hogy ez a harmadik kategóriába tartozik?
Ha rosszul értelmeztem, javíts ki, lsz! -
Janos250
őstag
Én az SR501-ekből szereztem be még régebben, de még a ládikában várnak jobb sorsukra. Azért azt, mert úgy láttam, hogy azt használják leginkább. Mivel TTL a kimenete (low/high) ezért elvileg simán kell (ene) működni Arduinoval. Jumperrel, potival lehet állítani. Ez csak sejtés, nem tapasztalat.
Más:
Az okosotthonhoz valóban jól kiegészíthetik egymást az Arduino és a málna. A baj az, hogy hiába adja meg a gyártó az árat, ez a gyakorlatban nem annyi. Az angol cégek közül én régebben egyet találtam, ami szállított Magyarországra, de annak eleve drágább volt az ára, plusz még rájött a posta. Így már messze nem annyiba került, mint amennyiért hirdették. Ráadásul még várni is kellett rá jó sokat, mert nem volt raktáron (Zero). Nálunk meg minden drágább. -
Janos250
őstag
Ilyet kéne csinálni Arduinoval:
https://www.facebook.com/dario.lavesero/videos/10215872372591655/ -
Janos250
őstag
Igen, úgy tűnik, mert mindenestül törölték. Nem tudni miért, mert én is írtam adatvédelmisnek, meg volt ELTE hallgatónak is javasoltam, hogy szóljanak már nekik. A lényeg, hogy törölték.
Viszont, ha beütöd Google-ba, amit beidéztem, 8 590 találatot ad ki. Azért ez borzalom! -
Janos250
őstag
Na, ezekután megnéztem a Scratch dolgait, mert az is valami hasonló, és elájultam. Meghekkelték az ELTE szerverét, és hamis útlevelet, miegymást hirdetnek rajta.
"Vásárolni az eredeti és a hamis jogosítvány, útlevél .........."
Már október 30 óta folyamatosan. Senki nem tesz ellene?
Aki ismer ott valakit, szólhatna nekik!
http://scratch.inf.elte.hu/lecke/attekintesek/ismerteto -
Janos250
őstag
Megnéztem az általad linkelt blocky (blöki, hogy legyen valami értelme
)
https://developers.google.com/blockly/
oldalt.
Jó játék, így összerakni egy programot. -
Janos250
őstag
"de mi van akkor ha én pl egyszerre akarom az első tíz LED-et vezérelni."
"Egyszerre" nem tudod vezérelni a 10 ledet. Mind a tíznek ki kell küldened egymásután ugyanazt a kódot.
A WS2812 úgy működik, hogy ami színkódot elsőként kiküldtél, azt elkapja magának az első led, amit másodszorra, azt az első továbbküldi, a második kapja el, stb.
Akkor kezdi elölről, ha nagyobb (pl. 10 microsec) szünet van a két kód érkezése között.Amit én feltettem, az tutorial céllal készült, ha valaki tanulmányozni akarja az ESP32 RMT használatát.
-
Janos250
őstag
Ja, látom, közben megoldódott, nem baj, egyelőre nem veszem le.
-
Janos250
őstag
Tettem fel egy hevenyészett fényképet a bekötésről, és azt a programot, amivel fut.
Ha akarod, megnézheted. A case után vannak, amit sorra vesz, azt kell átírogatni.
http://arduinouser.hu/esp32/WS2812/index.html
Új hozzászólás Aktív témák
Hirdetés
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen házat vegyek?
- OLED, Mini-LED, IPS, VA, TN - melyik panelt válaszd 2025-ben?
- Windows 7
- Gumi és felni topik
- PlayStation 5
- Subaru topik
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- exHWSW - Értünk mindenhez IS
- Ubuntu Linux
- További aktív témák...
- Lenovo Yoga 9i x360 Érintős Hajtogatós Laptop Tab 14" -60% i7-1260P 16/512 Iris Xe 2,8K OLED 90Hz
- Új DELL Inspiron 16 Fémházas Multimédiás Laptop 16" -40% Ryzen 7 8840U 8mag 16/1TB FHD+ IPS
- Sony FE 28-70 mm F3.5-5.6 OSS
- PS5 Slim Disc 1TB 2026.10.08 GARANCIA
- Bomba Ár! Dell Latitude 3190 - Intel N4120 I 4GB I 128GB SSD I 11,6" HD I Cam I W11 I Garancia!
- 15,6" Dell Latitude laptopok: E6540, E5550, E5570, 5580, 5590, 5500, 5501, 5510/ SZÁMLA + GARANCIA
- Használt és ÚJ Gamer Monitor Felvásárlás Gyors és Korrekt Ügyintézés!
- ÁRGARANCIA! Épített KomPhone Ryzen 5 9600X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
- Samsung Galaxy Xcover 5 64GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo ThinkCentre M720s SFF / M920T tower -Számla, garancia, WIN11
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest