-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Tankblock
aktív tag
válasz
Janos250 #13396 üzenetére
Google a barátod :-)
Lassan azt érzem, hogy az Arduino library jelen konceptciója mellett az emberek elfelejtenek programozni (Minden plug&play), ezért elmegyünk abba az irányba hogy uPython és mivel a sok egymásra halmozott réteg végett nagy az overload ezért egyre drágább uC kellenek... Pont a lényege fog elveszni az egésznek...
EPS32 hez nem is nagyon használtam Arduino IDE-t, csak 1-2 példa programot használtam.
-
Tankblock
aktív tag
"100 k erase/write cycles" a pontos érték. A csatoplt forrásban a wear leveling algoritmus leírása is szerepel.
Forrás : [link]Egy ilyen szép uC elpazarolni.... Inkább ATtiny szériából akár fix külső kristállyal.... és RTC vel is. 8 láb - 2 Vcc, Gnd, 1 Gép érzékelés, 2 i2C RTC hez 1 Rst, 1 LED , 1 gombnak, vagy a resetet használni..... Mazoistáknak ATTiny13A Assemblyben
1K Bytes of In-System Self-programmable Flash program memory
– 64 Bytes EEPROM
– 64 Bytes Internal SRAM
– Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
-
Tankblock
aktív tag
válasz
Janos250 #13379 üzenetére
Szia,
Annyit pontosítanák, hogy a "C string" jelen esetben egy constans char tömb.
const char[4]
lesz. Ami fordítási időben kerül lefoglalásra. Erre próbált meg a kolléga castolni egy String osztályt, és ezért kapott null pointert.Az Arduino String osztály létrehozásakor a const char * ból egy a String osztályban lévő tárolóba másolódik a tömb tartalma.
String::String( const char *value ){
if ( value == NULL ) value = "";
getBuffer( _length = strlen( value ) );
if ( _buffer != NULL )
strcpy( _buffer, value );
}
van = operátor, a definíció szerint az csak String osztályt képes String osztályal hasonlítani.
const String & String::operator=( const String &rhs ){ if ( this == &rhs ) return *this; if ( rhs._length > _length ) { free(_buffer); getBuffer( rhs._length ); } if ( _buffer != NULL ) { _length = rhs._length; strcpy( _buffer, rhs._buffer ); } return *this;}
Forrás : [link]
Jó feladat operátor overload megírása const char * ra
Szerk: code szétcsúszott.
-
Tankblock
aktív tag
válasz
zsolti_20 #13375 üzenetére
Szia,
Nem dob warningot?
[link] Arduino forrás szerint nincs = operátor csak amikor a String osztályt létrehozod.
A benne lévő függvéynekkel szabadon lehet módosítani, ha tudod mit mire szeretnél cserélni . replace() függvénnyel....String y1 = "mano";
String y2 = "mi a mano";
y1=y2;
//elvileg ez még működhet, vagy pointer :-)
-
Tankblock
aktív tag
-
Tankblock
aktív tag
válasz
csongi #13249 üzenetére
Szia, Őszintén mondva PLC-t utoljára középsuliban programoztam, az meg nem merem leírni mikor volt .... Azóta sokat fejlődhetett ....
Én azt mondom először szelepet válasz, ahhoz kell meghajtó elektronikát tervezni,
Majd milyen szenzorok és featurek kellenek, és utána lehet megnézni hány IO van szükség, saccolni h mi az ami szükséges. Alehetőségek tárháza kellően nagy, Ha az elején vagy nem mennék neki 6 szelepes rendszernek. Részegységenként mennék, és látni fogod milyen haamr tellik a flash/memória ekkor még eldöntheted h könyvtárak helyett optimalizálsz vagy kontrollert cserélsz...... lehet a végén ATMEga 2560 és ESP 01 fogsz használni, vagy akár ESP32, vagy STM-32 az a TE design döntésed kell hogy legyen....Ahogy a nagykönyv írja NO Free Lunch - ezt végig kell tanulnod, vagy megveszed...
-
Tankblock
aktív tag
válasz
Janos250 #13258 üzenetére
Websocket? Anno ESP8266 használtam, több eszközre is tudtam syncelni adatokat, ha jól tudom egész komoly projectek vannak vele....
LEtöltesz egy weboldalt a connecttel és a böngésző megnyitja a websocketet az ESP32 vel és az ESP32 feedeli az adatokat..... Droiddal és win 8.1 telóval is ment nekem anno.
-
Tankblock
aktív tag
válasz
csongi #13227 üzenetére
Elhiheted a végén drágább lesz, vagy az időd megy bele vagy megíratod a programot már itt több lesz mint amit írtál.... ls még nem adtam össze a HW, amit használsz/ elfüstölsz....
Én nem bíznám tesztelésen kívül próbanyákra az öntözőrendszeremet. Egy kontakt hiba rosszkor és ázik minden......
A nyák mert azért fog kelleni, mivel ha utánaszámolsz mennyi az annyi kelleni fog GPIO extender, a végén ha elhagyod az UNO-t és ESP32 cseéled fele annyi fejfájásból megvan....
Oda meg kelleni fog levelshifter 3V3 és 5V közé. A relének meg dióda meg opto az üzemeltetéshez, vagy veszel relé boardot.még sok helyen lehet probléma. Elsőre túl nagy falat. Bontsd kis feladatokra és old meg őket.
PL 1 csao üzemeltetése bemenő jel alapján, NTP óra, weboldal websocket használata..... -
Tankblock
aktív tag
válasz
csongi #13217 üzenetére
Szia,
pontos szeleptípust tudnál-e linkelni, ha jól sejtem itt még nyákot is kell tervezned, és GPIO extender is kellhet ha maradsz az eredeti Uno R3 melett. RTC/vagy wifin NTP mindenképpen kelleni fog. még a kijelző is kérdés mit szeretnél.... Halkan jegyzem meg a múltkor a sárga kék feliratos áruházban 1 híján 7e ért adtak ilyen időzítót igaz az csak 1 csatorna.... neked meg 6 kell szóval 42 Mátyás....számold ki mennyi lesz a buli, nehogy kiderüljön h egy kommersz termék többszöröse lesz....
-
Tankblock
aktív tag
válasz
csongi #13182 üzenetére
Bocs elkapott a meló....
Öntöző rendszer esetén a zárt alapállapotú szelep kell hogy legyen a rendszerben..... Különben elfolyik a víz....Másik a SONOFFra a Tasmota firmware MQTT vel kommunikálni és raspi-n egy Mosquitto MQTT broker és vagyHome Automation vagy Nodered mint logikai réteg.... Ez a megoldás moduláris később lehet kapcsoló+hőmérő, amit el tudsz képzelni...
A serveres megoldás html + javascript comboval működik, a security már más tészta... Azt nem engedném webre, márcsak anyagi megfontolásból se.....
-
Tankblock
aktív tag
válasz
csongi #13169 üzenetére
Szia,
Kitet linkeljél légy szíves....
Arduino Uno nem képes önmagában vezeték nélküli kommunikácóra. Ahhoz kelleni fog Wifi/Bluetooth chip....Nem tudom milyen öntözőrendszer lesz, mit is kell pontosan vezérelni, a helyedben készítenék egy tervet. Biztosan találsz hozzá akár kész projecttet is. Ha csak egy szivattyút kell működtetni akár még egy SONOFF Basic is megfelelő lehet, tág a spectruma a megoldási halmaznak.
Programozi meg muszáj lesz valamilyen szinten megtanulni....
-
-
Tankblock
aktív tag
válasz
Janos250 #13092 üzenetére
CAN onnan jutott eszembe hogy a ESP32 is van, meg STM is. Ezek meg bőven elérhető ár értékben vannak. Egy transciever meg nem a világ összes pénze, autó iparban bőven vannak 10+ éves kocsik CAN busszal, szóval annyira nem lehet rossz (Szakmai ártalom) Ahogy nézetem a FRAME eket kezelik az SDK-k, szóval az adat tartalommal kellene nekem bűvészkedni, de azt bármely protokollnál is nekem kellene....
Ennek az iránynak a fix 12V körbe a lakásba lenne a hátránya. Viszont építhetnék Power bankot ami áramkimaradás esetén is működő képessé teszi és csak véges ponton kellene megtáplálni, cserébe kisebb a 2.4Ghz forgalom....
még gondolkozom rajta.... A központi Relés rendszer is tetszik, mert egyszerű mint a faék...
-
Tankblock
aktív tag
válasz
Gergosz2 #13089 üzenetére
Vicces módon ettől a részétől nem félek, attól inkább, hogy lesz meg a 12 V jelalak.
Sok kérdés van a fejemben :
- menjek-e Ethernet irányba...
- központi Relay board és központi Gomb érzékelő board...
- CAN (eddig ezt nézem)
- RS485...A Design itt a legfontosabb. Nem érdekel ha egy CAN Transiever 1-2 eHUF/db ha működik min 10 évig nem érdekes,,,, Mindegyiknek van előnye és hátránya is.
Ami igazán érdekes, ha egyszer eldönttem milyen legyen onnan nincs visszaút....
Szívesen terveznék nyákokat is. -
Tankblock
aktív tag
válasz
Gergosz2 #13086 üzenetére
Szia,
Mindenképpen 12V, ban szeretnék gondolkodni, vagy többen. A másik megoldás a központi relay paneles lenne, amit a SuperHouse -os srác csinál.... Csak ott Dupla annyi vezeték kell... Gondolkozom melyik lehetne a legjobb. Nagy sebesség nem kell, megbízhatóság lenne a fontos. Wifi, BT, ZigBee és társai kizárva. CANt, vagy a nyomógombok jelét el tudom vezetni egy sima UTP kábelben is.... A néhai risztó is 12 V os rendszer volt szóval a mozgásérzékelők már be vannak kötve :-) Annak a dobozába játszva elférne egy központi vezérlő is a földszintre másik meg az emeletre....
-
Tankblock
aktív tag
Sziasztok,
Gondolkozok egy 12V CAN BUSos Home Automation rendszeren ahol a kapcsolók fogyasztók huzalozva lennének, mert hosszú távra tervezném...
Néztem eddig CAN transciever-t de nem jötem rá hogy lehet őket 12V -on járatni. Mindegyik Vdd-re húzná csak a vonalat, ami általában 3V3 ill 5V. Mivel lenne hosszabb táv is benne ezért jó lenne a 12V.
Húzzam fel a vonalakat 12V simán vagy mi a módja? esetleg teljesen rosszfele keresgélek?
Köszönöm előre is a segítséget.
-
Tankblock
aktív tag
válasz
Istv@n #12745 üzenetére
Szia,
Pontosan mire is gondoltál?
A
relayState
globális változót módosítja az ütemezés függvényében, bitenkénti operációval. Nézd meg acheckSched()
függvényt, ahol 1 re állítja a adott relé bitjét....
Oda bele tudod rakni azt ha pl nedvesség érzékelő alapján kell-e öntözni.... -
Tankblock
aktív tag
válasz
Janos250 #12159 üzenetére
Mentsük meg a routert a felesleges Wifi kapcsolatoktól
Ha jól sejtem akkor egy Raspiról mehetne a MQTT, Home Automation és a router funkciója is amire a teljes esp mesh fel tudna kapcsolódni.... Van benne kihívás. Komplett rendszert akár árulni is lehetne..... Gondolkodom, hogy mibe tegyek energiát, mert a Xiaomi pl Zigbee-t csinál és pár dolláros szenzorral ami évekig képes menni egy gombelemről nem biztos, hogy tudok versenyezni, bár vannak ötleteim. -
Tankblock
aktív tag
-
Tankblock
aktív tag
válasz
Izeka82 #12060 üzenetére
Hello,
Több megoldás is van erre a problémára.
8MHz állítsd be a belső órát,
Amint lehet deep sleep
Ami fogyasztó nem kell azt kapcsold ki - MOS FET el szakítsd meg a táp vonalat.
LEDek, feszültség konverterek kiforrasztására javaslom, sztem step up sem feltétlenül kell.Nekem egy AtTiny13A van a projectem elején és ezzel egy évben 2x töltöm a 2 db 18650 cellát, 5 percenként mérek és MQTTbe Wifire ESP8266-val..
-
Tankblock
aktív tag
Szia,
bemásolnád mi a hiba?
Nekem van projectem, igaz nem használok Arduinot, hanem ESP-idf et c++ szal.
CSak nyitottam egy plusz UART ot és megnéztem mit kell küldeni a Nextionnak, és fut két task, egy Tx és egy Rx... MQTT-n keresztül megy a villanykapcsolók és egy BMP280 szenzor adatokat tolok át meg vissza....#define TXD_PIN (GPIO_NUM_17)
#define RXD_PIN (GPIO_NUM_16)
#define nUART (UART_NUM_2)void initNextion() {
const uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};
uart_param_config(nUART, &uart_config);
uart_set_pin(nUART, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
// We won't use a buffer for sending data.
uart_driver_install(nUART, RX_BUF_SIZE * 2, 0, 0, NULL, 0);
}
int sendData(const char* logName, const char* data)
{
const int len = strlen(data);
const int txBytes = uart_write_bytes(nUART, data, len);
ESP_LOGI(logName, "Wrote %d bytes\n", txBytes);
ESP_LOGI(logName, "#%s#\n", data);
return txBytes;
}
void TxTask(void * parameters) {
string store ="";
//store += "page0.temp1.txt=\"11\"";
//store += endData;
//UBaseType_t ip;
int qL;
mqttTopic x;
while (1) {
// OK so here is where you can play around and change values or add text and/or numeric fields to the Nextion and update them
qL = uxQueueMessagesWaiting(queueTopic);
for(int i = 0; i< qL;i++)
{
xQueueReceive(queueTopic,&x,portMAX_DELAY);
store.clear();
if( x.sTopic == "livingroom/lightswitch/status")
{
store += "page2.livingroom.val=";
store += (x.sData=="ON") ?"1":"0";
store += endData;
sendData(TX_TASK_TAG, store.c_str());
}....
void RxTask(void * parameters) {
....
string sdata;
while (1) {
sdata.clear();
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false,true, 5000 / portTICK_PERIOD_MS);
const int rxBytes = uart_read_bytes(nUART, data, RX_BUF_SIZE, 500 / portTICK_RATE_MS);
if (rxBytes > 0) {
data[rxBytes] = 0;
ESP_LOGI(RX_TASK_TAG, "Read %d bytes: '%s'", rxBytes, data);
ESP_LOG_BUFFER_HEXDUMP(RX_TASK_TAG, data, rxBytes, ESP_LOG_INFO);
sdata += (char *)data;
printf("RxTask: #%s#",sdata.c_str());
if(sdata == "livingroom ON") {
esp_mqtt_client_publish(client, "livingroom/lightswitch/switch", "ON", 0, 0, 0);
}
Valahogy így .... -
Tankblock
aktív tag
Én nem szenvedék ezzel, használj portmanipulálást az 1-2 ciklusidő és nem oszt nem szoroz.
Adj inkább időt a delayhez....Vagy mérd meg scoppal....
Ugye nem külső osszcillátorról hajtod? mert akkor az nem is lesz annyira pontos, de az IR nem is kell annyira ha jól emlékszem, nagyon toleráns...
-
Tankblock
aktív tag
válasz
tonermagus #11714 üzenetére
-
Tankblock
aktív tag
-
Tankblock
aktív tag
Hello
Milyen ESP32 használsz?
Ha Devboardot akkor az nem lesz kevesebb,Ha egy sima ES32 használsz nyákra forrasztva az működhet sokkal kisebb felhasznált energiával is deepsleep mellett....
pl vannak időzítő aramkörök set / reset lábakkal amik vezérelhetnek sima lineár regulátort enabled pinjét, így [nA] tartományban is tartható az ESP32.
-
-
Tankblock
aktív tag
válasz
Teasüti #10297 üzenetére
Hello
Erre próbáltalak rávezetni...
A taskokat futattod, és a szükséges információkra vársz bennük.
xQueue meg küldöd az adatokat akár még interuptból is.A folyamatos object létrehozás és törléstől én óvakodnék real time rendszerben.
- Sok idő lehet amíg azobjetumok törlődnek és újból létrehozódka
- Ha valamit nem szabadítasz fel a memóriából, vagy az alatta lévő könyvtás hibás akkor memory leak jelenséged lesz.Tanácsom, hogy írd le mit szeretnél, --> requirement
tervezz hozzá tervezési minta alapján valami szép architectúrát
implement
teszt :-)Enjoy it!
-
Tankblock
aktív tag
válasz
Teasüti #10290 üzenetére
Szia
Vagy én néztem be (csak notepadba)
de csak a PCNT_CHANNEL_0 használod, tehát ugyanazt a csatornát próbálod meg 2x configolni.
static void initSpeedCounter(void)
{
pcnt_config_t pcnt_config = {
SPEED_SIGNAL_CAPTURE,
-1,
PCNT_MODE_KEEP,
PCNT_MODE_KEEP,
PCNT_COUNT_INC,
PCNT_COUNT_INC,
SPEED_COUNT_UNIT,
PCNT_CHANNEL_0
};és itt is ugyanaz a channel 0...
static void initTachoCounter(void)
{
pcnt_config_t pcnt_config = {
SPEED_SIGNAL_CAPTURE,
-1,
PCNT_MODE_KEEP,
PCNT_MODE_KEEP,
PCNT_COUNT_INC,
PCNT_COUNT_INC,
TACHO_COUNT_UNIT,
PCNT_CHANNEL_0
}; -
Tankblock
aktív tag
válasz
Teasüti #10285 üzenetére
Hello,
Én inkább a memória/erőforrás kezelés rovására írnám.
Direct használod mindig a PCNT0 csatornát? Az IDF es példaprogramban interuptba számolja az eventeket és xQueue küldi a fő programba.
Szerintem ott akad szét, hogy ugyanazt az erőforrást címzed meg 2 külön taskből és már a setupnál kifagy ahogy írtad.
Amikor megy gondolom valaiért az egyik szál kicsit megcsúszik a FreeRTOS miatt és nem egyszerre próbál funtni 2 init.
Szálkezeléshez jó tervezés kell, mert könnyen lehet Deadlockba futni.
-
Tankblock
aktív tag
-
Tankblock
aktív tag
válasz
Teasüti #10277 üzenetére
Hello,
Miért az összes file végződése .ino?
Azt nem értem, hogy miért van a fps_cap paramétered a Setup függvényben kiszámolva, de a task már rég fut mire odaérne a számolásban???
A taskok közötti változók kezelésére volatile kellene ha nem lehet máshogy muszáj. Ha meg csak 1x kell
futnia inkább tedd a Task elejére mielőtt a végtelen ciklus futna.....ez inkább C kód mint C++...
Amit tanácsolok, dekomponáld a projectet kisebb részegységekre majd egyesével integráld vissza.
NE használj változókat különböző taskokban főleg ha az csak egy konstans --> arra van a #defineMinimalizáld a változóidat és funkcionlításokat rendezzd classokba...
Task elején class init majd végtelen ciklusba számolja amit kell. Taskok közötti communikációra FreeRTOS is van ajánlása xQueue vagy xEventGroup ha szignálozni kellene,A debug üzeneteket is mentsd le, mert sokat segítenek abban, hogy merre kellene nézelődni. Pluszban most egy MQTT C++ dolgozom és memory leak után nyomozok.
Itt pl a
ESP_LOGI(TAG, "[APP] Free memory: %d bytes", esp_get_free_heap_size());
használom a szabad memória fellelhetőségének. -
Tankblock
aktív tag
válasz
Teasüti #10265 üzenetére
Hello
A második képeden a bementi változó referencia ként van átadva.
Ha tárolni szeretnéd, akkor egy rámutató pointerrel lehet megtenni, ha jól emlékszem. Mivel C++ ezért a PRivate részbe tenném bele és itt csak anyit tennék, hogyclass SillyClassNameRules {
protected :
Stream * s;
int x;
int y;
public:
SillyClassNameRules(Stream &p, int X, int Y) : s(p), x(X), y(Y)
{
// If I not made a huge mistake
//do init here pl.call any additional fnc()
}
} -
Tankblock
aktív tag
okay,
valami példa kód esetleg?
Home automationben szeretnék Nextion kijelzőket telepíteni, hogy lássam milyen idő lesz....
openweather jónak tűnt, mert JSON ként tudom kezelni Raspin az egészet....Kicsit macerás az adatok értelmezése a 3 órás szeletek miatt, de működhet....
időképnek milyen APIja van? -
Tankblock
aktív tag
Sziasztok,
időjárás előrejelzéshez szeretnék ötletet gyűjteni.
Eddig a openweathermap regisztráltam, ahol napi illetve 3 órás felbontásban 5 napi előrejelzés lehet lekérdezni.
Messze van a valóságtól, nagyon messze.....
Más ötlet?Amit szeretnék 3 napos előrejelzés min max hőmérséklet, időjárás.....
Előre is köszönettel.
-
Tankblock
aktív tag
-
Tankblock
aktív tag
Lineáris 0.1V és 3,1V között... Ez is van a linken amit küldtem. Bele kell tervezni a projectbe. Anno az attiny13A projectemben inkább a 1V referenciát választottam mint a tápfeszültségig mérést.
Ha meg nagy pontosság kell arra vannak cél ICk. Valamit valamiért....
Boldog 2019 et Mindenkinek! -
Tankblock
aktív tag
-
Tankblock
aktív tag
válasz
tvamos #10043 üzenetére
Hello
Kódot tudnál linkelni pl githubról?
Ha nem látom a kódot debuggolni sem tudok.
Aminek nézzél utána az a Design Patternek. Mennyi helyről jöhet a szignál, lehet e olyan h 1x többhelyről? Hányszor kell akkor kell akkor megcsinálni?
FreeRTOS van néhány megoldása ezen problémákra.Lehet simán az is h a másik taskod priorítása alacsoy és sosem fut.
A megoldásod CPU pazarló és nem engedi futni a többi taskot csak 100 ms enként talán.
Az enyém amíg a feltételek nem adottak nem foglal CPU erőforrást.Semaphor vagy Mutex is jó lehet, ott is van néhány Deadlock -nak nevezett csapdahelyzet.
-
Tankblock
aktív tag
válasz
tvamos #10039 üzenetére
Hello,
Mivel állítottad rá a figyelésre?
const static int TASK_0 = BIT0;
const static int AVAIL_BIT = BIT1;
const static int BUSY_BIT = BIT2;
static EventGroupHandle_t event_Handler = nullptr;/// setupba:
event_Handler = xEventGroupCreate();
// várakozó taskba:
EventBits_t uxBits;
const TickType_t xTicksToWait = 10000 / portTICK_PERIOD_MS;
uxBits = xEventGroupWaitBits(event_Handler, TASK_0 | AVAIL_BIT , pdTRUE,xTicksToWait);
if(uxBits & (TASK_0 | AVAIL_BIT ) == (TASK_0 | AVAIL_BIT )) {
// ide jön a kód
}//Kód jelző taskba
xEventGroupSetBits(event_Handler,TASK_0);
vagy az xQueue használd
-
Tankblock
aktív tag
Hello,
Bocs én nem olvastam végig csak addig h mi kellett volna:
A code fennt van a giten latest verziója 2.5
[link] vagy használod ezt, vagy gitre nézel egy gyorstalpalót és leszeded a 2.4 release path ot.
A codeban a auto kifejezéstől hasal el. Azt nem tudom h az Arduino milyen c++ ra fordít, gyanakszom, hogy valami legújabb verzió, így nem tud vele mit kezdeni. Valahol csak meg lehet mondani, milyen c++ verziót preferáljon. Erre most nem lesz időm.
-
-
Tankblock
aktív tag
Hello,
Ha feltelepítetted megérted...
NEM Windows alatt fut a keresztplatformos fordító, hanem MSYS2 alatt...
minden ami abban van egyfajta Linux féleség. Szépen működnek a unixos filemanager parancsok...igen terminált lehet használni, sőt és a githez csak azt használom.
Javaslom egy Eclipse-be belerakni az egészet azzal kicsit nehezebb configolni először, de az egy clikes fordít letölt vagy a kódkiegészítés sokat ér.... Nem egy Arduino IDE.. az egy sima notepad az eclipsehez képest.... -
Tankblock
aktív tag
Hello,
Belelestem abba a kódba amit linkeltél, ismert emberektől van, jóféle.
A projectben nincs configolva HW gomb egy darab se. UART és external UART ból olvas és BLE HID tolja tovább.A hol is kellene elkezdeni az [Development] Environment install guide.
NE felejtsd el az elérési utat exportálni mindig... "export idf_path= <elérési út>/esp/esp-idf"
Innen már csak a gittel leszedni a projectet amit linkeltél és módosítani HW gomboknak megfelelően. Példa része az
uart_parse_command()
függvényben van implementálva.Módosít, majd make menuconfig -> COM port beállítás, baudrate,... a végén meg make flash monitor
A gombokhoz szükséges interrupt és társait ebben a példában megtalálod:
[link]UI.: erősen javallott a Linuxos parancsok, fordító ismerete, mert az életünk így könnyebb.
Plusz ha ot vagy egy eclipsebe is tudod integrálni és akkor picit egyszerűbb az élet. -
Tankblock
aktív tag
válasz
fpeter84 #9839 üzenetére
Hello,
Találtam itthon egy Wemos D1 hez tartozó SD kártya foglalatot, sztem ezzel fogok protozni.
A problematica ott van, hogy amit találtam pédát ott vagy 6+2 láb kell ezen meg 4+2 táp van.....Minden vonalat kézzel kell 10k val felhúzni.. Meglássuk... ma sem értem rá...
-
Tankblock
aktív tag
Sziasztok,
Van valakinek egy bevált módszere arra, hogy SD kártyát lehessen olvasni/írni ESP32 vel.
Saját projecten dolgozgatom egy ideje, és most jött el az idő, hogy struktúrákat elmentsem és visszaolvassam....
C++ használok, de bárminek örülök. A ESP-idf ben 1 példa van össz vissz.... Azt ma este elemzem...
-
Tankblock
aktív tag
Hello,
Raspi-->
Nodered feltelepít és üzleti logika és Weblap generálva, minimális keresgéléssel, ha csak otthoni használatra lenne szükség.Ugyanide MQTT mosquitto server telepít.
A másik oldalra, SONOFF kapcsolóktól (pl TASMOTA firmware vagy saját kód) egészen az ethernet shielden valami Arduinoval át sok út vezethet. Ezzel nem kell annyit kódolni szerintem, az jó kérdés hogy milyen topológiában gondolkodsz.
A másik, meg hogy mennyit szánsz rá.... lehet annyiból vehetsz kész rendszert is....
-
Tankblock
aktív tag
válasz
adatfalo #9706 üzenetére
Hello,
Ha van wifi akkor ESP8266 re van One Task osztály: [link]
Azt mindenképpen tisztáznod kellene, hogy a pumpát is erről a tápegységről szeretnéd-e meghajtani. Én MOSFET tel mennék neki egy step up converterrel, aminek a tápjára tenném a FET et. A napelem cellát meg illene túlmértezin, ahogy az akksit is.
Sima arduino ha 8MHz belső clockal megy és 3V3 van használva is tud alacsony áramfelvételt, vagy akár még valamelyik AtTiny core is. Attiny13A van nekem sikerült lemenni 5,4 uA re a fogyasztással deepsleepre. Kérdés mennyire kell, hogy pontos legyen az az időzités.
Ha jó sacc / köblábra is akkor nem vesződnék semmilyen RTC vel, csak deep sleep és wakeupokkal számolgatnék mennyi van még hátra a 24 órából. Ha csak arra kell, hogy pl 2 hetet elmenjen amig nem vagy otthon és fontos, hogy battery + napelem kombó legyen. A TP4056 pl 1 cellának jó választás lehet. Az másik hogy az az egy cella mennyi ideig is fogja meghajtani azt a pumpát.
-
Tankblock
aktív tag
A többi board mind 1 magos ha jól sejtem, az ESP32 meg 2 core. Mivel mind a 2ről el lehet érni igy gondolom van restriction. Az ESP-IDF alatt is structúrán keresztül lehetett definálni ha jól emlékszem.
Bőven megfelelő a sebessége. Nézegesd inkább a példaprogramokat amit az ESP-IDF mellé kapsz. Az sokat fog segiteni. Az arduino erre a layerre húz rá még egyet.
-
Tankblock
aktív tag
válasz
gyapo11 #9547 üzenetére
Na pont ezért kérdeztem.
Alacsony fogyasztás esetén minnél kevesebb komponens a nyerő. Időnként a külső kristályt is el szokták hagyni. Nano, Uno egyremegy, nem nagyon lehet egy bizonyos szint alá szoritani a fogyasztást, ami a pont a lapon lévő plusz alkatrészek okozzák.
-
Tankblock
aktív tag
és a plusz pár sor egyik eleme
És jön csodálkozás hogy csak 20 sorral nőtt a kód. Az igazság az hogy beforditott kód nem hazudik. Érdemes megnézni a könyvtárat és a komplexitását is, mert lehet hogy még másik n-db másik includeba mutat.
Lehetséges h sokat lehet rajta optimalizálni --> Arduino helyett pl regiszterek használatával......
-
Tankblock
aktív tag
válasz
bzolika10 #9477 üzenetére
Hello,
LiquidCrystal_I2C.h
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Hello, world!");
}
void loop()
{
}a másik, hogy a i2c átalakitón a potit állitsd be rendesen, hogy látszódjon a szöveg. A cimét i2c scannerrel ki tudod deriteni.
have fun.
-
Tankblock
aktív tag
Hello
Az int az 4 byte lesz.
#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
string s = "abcd";
char * p;
long n = strtol( s.c_str(), & p, 16 );
if ( * p != 0 ) { //my bad edit was here
cout << "not a number" << endl;
}
else {
cout << n << endl;
}
}szerintem ez lehet hogy hasznos, bár én inkább levágnám R G B re 2 charonként és azt konvertálnám át....
Remélem nem kevertem össze semmit se.
-
Tankblock
aktív tag
válasz
Teasüti #9453 üzenetére
Hello
Bocs, munka az első,
Igen azért használják, mert hibát lehet detektálni, és zavartűrő.
Igy az analog jeleket ha a másik ECU olvassa, akkor nagyobb távolságra digitálisan és zavartűrően lehet továbbitani. Robosztus és nem kell métereken keresztül analog jeleket küldözgetni..... -
Tankblock
aktív tag
válasz
Teasüti #9443 üzenetére
Autóhoz vagyok inkább szokva, ott indításkor simán lehet zaj felextraponálhat a vonalra, és ha a jel több mint 3,6 [V] akkor bármi történhet. Ezért van azz autókban CAN hálózat, az analog jelek meg ha vannak akkor a legkisebb vezetéken, de inkább digitális mind.
Kérdés h mire akarod használni. Üres vezeték ne maradjon, mert antennaként viselkedik.
-
Tankblock
aktív tag
válasz
Teasüti #9440 üzenetére
Csak 2 észreételem lenne, ha megfogadod:
- uMCU pint közvetlenül ne köss ki külső pinre, zaj esetén tönkreteheti az egészet. Optikai v galvanikus leválasztó szükséges.- gyorsulásmérőt, ha nem tervezted a boardra akkor nyomd le teljesen, a végén ha minden működik, akkor ragaszd le. A vibráció lesz a legnagyobb ellenséged a másik meg a nedvesség. Amúgy is aktivan szürni kell majd a jelet, mert a vibráció torzitani fogja.
Új hozzászólás Aktív témák
Hirdetés
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- CPU léghűtés kibeszélő
- Elképesztő mértékben tömörítenék be a nagy nyelvi modelleket
- CASIO órák kedvelők topicja!
- Nintendo Switch 2
- Parkside szerszám kibeszélő
- LEGO klub
- EAFC 25
- Magga: PLEX: multimédia az egész lakásban
- További aktív témák...
- ÁRCSÖKKENTÉS LG 24" full HD LED IPS monitor (HDMI, DSUB, jack) eladó
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Apple Watch SE/Apple Watch SE 2 (2022)
- DELL PowerEdge R640 rack szerver - 1xGold 6138 (20c/40t, 2.0/3.7GHz), 64GB RAM,4x1G RJ, HBA330, áfás
- Telefon felvásárlás!! Xiaomi Redmi 9, Xiaomi Redmi 9AT, Xiaomi Redmi 10, Xiaomi Redmi 10 2022
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged