- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Milyen okostelefont vegyek?
- iPhone topik
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Google Pixel topik
- Milyen hagyományos (nem okos-) telefont vegyek?
- Xiaomi 14T Pro - teljes a család?
- Pixel készülékeket hozhat a Google és a Vodafone együttműködése
- Apple iPhone 16 Pro - rutinvizsga
- Motorola Edge 50 Ultra - szépen kifaragták
-
Mobilarena
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
Miért kell neked SoftwareSerial, miért nem jó a sima Serial?
void helloWorld() {
Serial.println(" helloWorld ");
} ;A SoftwareSerial a régi idők serialje.
"nagyon más a programozása az ARM processzor miatt?"
A C++ elvileg ugyanaz minden processzorra, csak a periféria kezelő rutinok lehetnek mások, de a Serial minden portolásnál alap. -
Janos250
őstag
válasz
mhegedusmh #8071 üzenetére
"nem egeszen ertem ez hogyan segitene rajtam"
Azt hittem, ő is jár még erre, és ellát tanáccsal, mivel neki van tapasztalata.
Ha esetleg egy privát üzenetet küldesz neki? -
Janos250
őstag
válasz
Tankblock #8069 üzenetére
A try - catch -et egyszer régen próbáltam és nem ment, de szerintem azt még nem ESP32-n próbáltam, de kipróbálom majd. Vagy ha valakinek van ingerenciája, próbálja ki, és írja ide, okulásunk céljából!
Tudod, én már elég öreg vagyok ahhoz, hogy számos alkalommal megtapasztaltam a spéci dolgok hátrányait. Már ifjú koromban, amikor az Algol60 programot át kellett tenni Fortranra, vagy a Cobolban írtat egy minibol nevű csodára. Aztán később a Basicről már nem is beszélve. -
Janos250
őstag
Eléggé sztochasztikusan.
Az elsőt a core0-ra teszi, a másodikat a core1-re, a többit meg hasraütésszerűen.
Az xTaskCreate mindenképpen rugalmasabb, mert tudsz stack méretet, prioritást adni."Tök jó, viszont ez ha jól értem csak érdekességképpen készül, nem azért mert csak így tudsz megvalósítani valamit?"
Igen, az xTaskCreate-el ugyanezt meg lehet valósítani, mert ő is ezzel oldja meg.
Viszont a szállal az szabványos, máshol megírt program is futtatható, illetve az itteni átvihető máshova is, míg az xTaskCreate csak a freeRTOS-t használó rendszeren van. A szabványosság miatt kerestem a konzolra írást (cout) is. -
Janos250
őstag
Apropó! Ha már itt tartunk, hogy az ESP32 arduinoja ismeri a szabvány C++ zömét, akkor már mutatok a 11-nek más tulajdonságára is példát.
Nem feltétlenül kell a több task esetén a freeRTOS task kezelését használni, lehet az oskolában C++ órán tanultakat is:#include <iostream>
#include <thread>
//#include <mutex>
using namespace std;
void helloWorld1() {
for (uint8_t i = 0 ; i < 10 ; i++){
cout << " Hello World1 ! " << endl;
delay(1000) ;
} ;
} ;
void helloWorld2() {
for (uint8_t i = 0 ; i < 10 ; i++){
cout << " Hello World2 ! " << endl;
delay(2000) ;
} ;
} ;
void setup() {
Serial.begin(115200) ;
delay(2000);
thread szal1(helloWorld1);
thread szal2(helloWorld2);
szal1.join();
szal2.join();
}
void loop() {
}Egyre több minden szól az ESP32 mellett
-
Janos250
őstag
Na, megvan a console átirányítás az ESP32-n (a legkézenfekvőbb, de ki gondolta, hogy működik)
freopen("/dev/uart/0", "w", stdout);
Persze a 0 helyett az aktuális -
Janos250
őstag
Ezt elsődlegesen az oprendszernek kellene tudni, mert pl:
cplusplusprogramom > eredmeny.txt
átirányítja a konzolt az eredneny.txt fájlba.
Itt a freeRTOS valószínűleg tudja valahogy, de egyelőre fogalmam sincs, hogyan.
Vagy programban az
freopen("eredmeny.txt","w",stdout);
Na, ezt még majd bogozom, de hogyan irányítok mondjuk egy Serial-re, arról gőzöm sincs, mert stream ugyan, de valahogy mégse passzol.
A windows ilyen szempontból nemigen ad információt.
Isten nem ver bottal, csak windows-zal. -
-
Janos250
őstag
válasz
Teasüti #8053 üzenetére
Köszi, ezek C++ kiírások, csak azt nem tudtam, hova megy. Úgy látszik, hogy ha megnyitjuk a Serial-t, akkor oda. Ez azért továbbra sem tiszta, hogy tudom máshova áttenni, meg ilyesmik.
Így viszont a Serial ablakba ír://#include <stdio.h>
#include <iostream>
using namespace std;void setup() {
Serial.begin(115200) ;
delay(2000);
cout << "proba kiiras ";
std::cout << std::endl;
uint8_t i = 5 ;
std::cout << "i: " ;
// std::cout << i ;
std::cout << std::endl;
cout << "proba kiiras2 ";
std::cout << std::endl;
}void loop() {
} -
Janos250
őstag
válasz
fecske13 #8050 üzenetére
"az egyiknek 8-al több lába van"
Hú, az sok!
Most nincs előttem a két lap, de akkor azért itt kell szólni az alábbiakról:
AZ ESP-WROOM-32 kivezeti azokat a lábakat is, amit mi nem használhatunk, mert az ESP32-nek ezek a lábai a flash memória címzését szolgálják, mi - normál esetben - nem használhatjuk. Ezt egyes lapok kivezetik pinre, mások nem. Lehet ez az oka, de majd egyszer kinyomtatom a két lap képét és átbogarászom.
Nem kompatibilisek?
Ha azt értjük a kompatibilitás alatt, hogy ugyanott vannak a kivezetett GPIO-k, akkor messze nem kompatibilisek. Bizony meg kell keresni az adott lapon, hogy az adott GPIO hova van kivezetve.
Egyébiránt meg teljesen kompatibilisek. -
Janos250
őstag
Srácok! Nálam okosabbak segítsetek lsz!
Mi a fene a stdout az ESP32-nél.
Hova ír ki az alábbi program?//#include <stdio.h>
#include <iostream>
using namespace std;void setup() {
delay(2000);
cout << "proba kiiras";
uint8_t i = 5 ;
std::cout << "i: " << i << std::endl;
}void loop() {
}A freeRTOS-ben sem találom, hogy tudnám kijelölni
Másként ki lehet íratni persze, de én a cout-ra és a cin-re lennék kíváncsi.
-
Janos250
őstag
válasz
fecske13 #8044 üzenetére
Többféle lap van. Amiken ESP-WROOM-32 van, akkor semmi lényeges különbség nincs köztük.
Amiben különbözni szoktak pl. hogy hány GND láb van, meg hasonlók, továbbá a lábak mellé írt "név", mert nem mindig egyformán nevezik a lábakat. Ezért én többnyire a GPIO sorszámmal és nem a nevével adom meg a lábakat, hogy ha egy másik lapot választok ki, ne tekintse ismeretlennek a lábak elnevezéseit.Hangsúlyozom mégegyszer, hogy ha a képen ki van takarva annak a fém burkolatos százlábúnak a felirata, akkor az bizony többnyire ESP8266, nem 32. Persze az se rossz, de a párszáz Ft különbség ellenére a ESP32 SOKKAL többet tud, ma már nem éri meg ESP8266-ot venni. A 8266 programjai is futnak a 32-n is. A 8266-nak én egyetlen előnyét látom: fizikailag kisebb a kevés lábszám miatt, ezért ha picike helyre kell bepasszírozni, akkor az a 8266-al könnyebben megy.
-
Janos250
őstag
A kíváncsi népség kedvéért azt is tegyük hozzá, hogy "rotary encoder" néven keresse a neten.
Pl.
https://www.youtube.com/watch?v=v4BbSzJ-hz4
https://www.youtube.com/watch?v=dPBKTZw_xi4 -
Janos250
őstag
válasz
mhegedusmh #8024 üzenetére
-
Janos250
őstag
válasz
DiceBlade #8022 üzenetére
Ilyesmik miatt nagyon jó, ha van az embernek egy ilyen:
https://www.ebay.com/itm/24MHz-8CH-USB-Logic-Analyzer-24MHz-8-Channel-Compatible-to-Saleae-ARM-FPGA-M100/272337085235?hash=item3f688e2333:gNcAAOSwPCVYBD2b
Egy vevővel és ezzel meg lehet nézni, mit ad a távirányító, és mit ad ez a szerkezet.
-
Janos250
őstag
válasz
Teasüti #8016 üzenetére
"A másik érdekes dolog meg a ledek sorba fűzése lesz. Mondjuk nem fizikailag, hanem leprogramozni a random helyeken lévő pixelek animációját"
Azt megoldotta, beszámozta a ledeket a feltett rajzán, és ha hullámot akar, akkor az jó, egyetlen jelvezetékről lehet meghajtani mindhárom ágat.Kiváncsiságból belenéztem a FABled dolgaiba. Annak a használata valóban egyszerű.
-
Janos250
őstag
válasz
ZTE_luky #8013 üzenetére
"ha arduino rendszeres ez is meg az is , akkor nem ugyanolyan írt kóddal működik?"
De, az alapvető dolgok ugyanazok, mert arduino ez is, az is. Viszont az egyes kontrollerek mások, ezért ha akarja az emberfia, akkor kihasználhatja a specialitásait. Az eredeti arduino "szabvány" definiál egy csomó függvényt, konstanst, amit ha valaki illeszt az arduinoba egy másik kontrolleres lapot, azokat "kötelező" megírni rá. Viszont azokra az újabb tulajdonságokra, amik az eredeti arduinóban nincsenek, arról nem szól a fáma, hogy azokra mit írjunk meg. Az ESP32-nek van néhány újdonsága, pl. az úgynevezett RMT (remote controller), ami ennél a kontrollernél jelent meg, és a WS2812-höz nagyon jól jön. Na, én ezt a spécit használtam élvezkedésként.
"gondolod hogy ehhez a kis rendszerhez szükség lenne az enyémnél komolyabb kontroller kell?"
Én úgy tippelem, hogy elegendő a nano is. Csupán azt mondom, hogy a FASTled programot nem használtam, abban nem tudok tanácsot adni, hanem majd azok, akik ismerik.
Egyébként azt hiszem, egyre kevesebben használják a régi lapokat. Ezt abból gondolom, hogy az elfekvő nano készletemből úgy gondoltam, áruba bocsátok párat, hátha jól jön valakinek, amit én nem használok. Hetekig hirdettem itt, de nem kellett a kutyának se, végül egy valakinek kellett egy darab 500 Ft-ért. Le is vettem a hirdetést, mert ennyi pénzért a macerát se éri meg. Ellesznek a fiókban a többi kacat között. Pedig egyszerűbb dolgokra valóban jó, csak aki MOST vesz lapot, az már korszerűbbet vesz, mert alig drágább -
Janos250
őstag
válasz
ZTE_luky #8011 üzenetére
"ha nem sikerül arduino-val akkor beszerzek egy ilyen kis kütyüt"
Arduino rendszerbe gyártott lap sokféle van, többféle kontrollerrel.
Az ATmega328P egy elég régi típus, elég lassú, kicsi a memóriája, de vannak, akik kisebb feladatokhoz kedvelik, mert már 500 Ft körüli áron is beszerezhető. Én az ESP32-t szoktam ajánlani, én azt kedvelem. Ezt is Arduino rendszerben használjuk, az ára 1500 Ft körüli.
Például:
https://www.ebay.com/itm/ESP32-ESP32S-CH340G-CP2102-2-4GHz-Dual-Mode-WiFi-Bluetooth-Module-Antenne/263307790295?hash=item3d4e5e07d7:ggsAAOSwq4VaOPmF
Arra kell vigyázni, hogy ESP-WROOM-32 legyen rajta az a szögletes fém borítású hibrid, mert most elterjedt, hogy 1000-1200 Ft-ért árulnak régebbi, ESP8266 lapokat,
de ESP32 néven. Az átverés, a fényképeken a feliratot kitakarják.
Az ESP32 kettő maggal, sok memóriával rendelkezik, 240 MHz-el jár -
Janos250
őstag
válasz
ZTE_luky #8008 üzenetére
Na, arra sajnos nem jó, mert speciálisan az ESP32 regisztereinek a közvetlen használatával van megcsinálva a ledet kezelő része, viszont az a lényeg. Állítólag a FASTLED talán a Te controllereden is elmegy, azt nem tudom. A WS2812 programozása elég macerás, mert elég pontos időzítések kellenek. Én már nem akarok ráállni annak a régi controllernek a programozására. Azt a kezelő programot Teasüti bogarászta ki, és pofozta át a saját igénye szerint. Ha erre jár, majd az ő véleményét vedd figyelembe.
-
Janos250
őstag
válasz
ZTE_luky #8003 üzenetére
Nekem tetszik.
Ha a hullámot akarod, akkor - szerintem - jó a bekötés is.
Mindenképpen ESP32-t javasolok.
Ha gondolod, tehetek fel működő komplett programot, ami a tutorial céllal készültek egyike, csak még nem volt időm a dumát is megírni mellé. A célja miatt jól el van benne különítve minden, ha egy pici lövésed is van a programozáshoz, akkor megérted, és változtatni is tudod. -
Janos250
őstag
Én azért ennyire pesszimista nem vagyok.
A Mosquitto mit csinál: "soros porton" várja a kódolt adatot, és arra generál egy másik kódolt választ, amit a megfelelő szerkentyűnek elküld szintén "soros porton".
Azért idézőjel, mert most ténylegesen nem soros porton, hanem WiFin jön az adat, de ugyanúgy, mintha soros porton jönne. Már amennyire én tudom, de nem mélyedtem nagyon bele ebbe a témába. -
Janos250
őstag
válasz
Vasinger! #7961 üzenetére
Ha mindenképpen készletben gondolkodsz, akkor egy készlet, amiben vannak szenzorok, kapcsolók, miegymás. Azt a 8.72 Eurot még meg is éri. Van benne 37 db. mindenféle.
https://www.banggood.com/Geekcreit-37-In-1-Sensor-Module-Board-Set-Kit-For-Arduino-p-1137051.html?rmmds=detail-top-buytogether-auto__5&cur_warehouse=CN -
Janos250
őstag
Ezért jó ez, mert minden egy helyen van, kevesebb, mint 600 Ft-ért:
https://www.ebay.com/itm/8-Tasten-Ziffern-Digital-LED-8-Bit-TM1638-Display-Module-f%C3%BCr-AVR-Arduino/172471641665?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649 -
Janos250
őstag
Csakhogy a mosquitto brokert is C-ben, illetve C++ - ban írták. (MQTT környezetben a szervert brokernek nevezik). Az MQTT protocol tulajdonképpen egy soros (mert most az a divat
) protocol.
http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/
Ha valakit részletesebben érdekel, itt van egy leírás:
http://www.steves-internet-guide.com/mqtt/
Persze, hozzá kell tenni, hogy nem csak az MQTT létezik okos otthon témában, hanem még néhány más megoldás/szabvány is, de ez teljesen nyílt, ingyenes, nem kell félni, hogy valami disznóságot csinál.Erről jut eszembe: mostanában installáltam fel valakinek egy legális windowst. Olyankor is elég sokat fogalmaz a neten, amikor ott elvileg semmi keresnivalója nem lenne. Víruskergető semmit nem jelez. A leggyanúsabb, hogy megnyitott web lap esetén időnként magától rákattint valamelyik linkre. Téboly, valaki mégiscsak felmászott rá, de win környezetben ez szinte kideríthetetlen.
-
Janos250
őstag
válasz
Teasüti #7970 üzenetére
Ezekkel a megoldásokkal itt foglalkoznak sokan:
https://prohardver.hu/tema/okos_otthon_smart_home/friss.html
Ami a 32-n megy, az - ha nincsenek benne túl extrém dolgok, pl. RMT - akkor a 8266-on is megy. A wifi kezelés ugyanaz. Ezeknél az okosotthonos megoldásoknál általában kell valami központi szerver, ami vagy helyben mondjuk egy PI, vagy valami távoli. Én azt várnám, hogy valaki csinálja már meg a MOSQUITTO megfelelőjét ESP32-re. -
Janos250
őstag
válasz
Vasinger! #7961 üzenetére
Az én (egyéni) véleményem:
Vegyél 1 (egyetlen egy) UNO-t, ha most kezded a témát, mert az a neten az iskolapélda. Hozzá valami modernebbet, mert - majd látod - hogy ami UNO-n megy, az máson is. Viszont kezdőnek ha gondja van, könnyen mondja, hogy "bizonyára azért, mert nem UNO". Ha van mód kipróbálni UNO-n, akkor megnyugszik, és megkeresi a programban a hibát. Én jelenleg az ESP32-t tartom a legjobb érték/ár arányúnak, kb 1600 Ft körül vannak a lapok.
Korábban ezeket írtam:https://prohardver.hu/tema/arduino/hsz_6219-6219.html
https://prohardver.hu/tema/arduino/hsz_5810-5810.html
Ezt is javasoltam elolvasni:
http://www.instructables.com/id/IOT-Made-Simple-Playing-With-the-ESP32-on-Arduino-/ -
Janos250
őstag
Okosat nem tudok mondani, csak hangosan gondolkodom:
" Serial.println("Failed to read from DHT sensor! Rebooting.");
ESP.restart();"Ha hibás a DHT olvasás, de van WiFi kapcsolat, akkor reboot? Nem tudom, a router mit szól ehhez, hogy ugyanolyan IP-vel újra kapcsolódni akarsz. Persze ez csak egy elképzelés.
Hibás DHT11 olvasás? Én valamikor régen próbáltam a DHT.h-val a DHT11-et, de gondjaim voltak, inkább csináltam másikat.
Nem nagyon emlékszem már rá, de valamikor feltettem a netre:
link
Persze valószínűleg az idő rég eljárt felette. -
Janos250
őstag
Most jut eszembe: ha valakinek ESP32 RMT Register Summary kellene:
https://www.esp32.com/viewtopic.php?f=19&t=4113&p=20834#p20834 -
Janos250
őstag
Csak elmélkedés: Lecsatlakozol, és újra fel ugyanarra az IP címre? Kilépéskor lezáródott rendesen a kapcsolat? Eléggé közel van az ESP a routerhez? Nincs túl nagy forgalom a sávon, hogy tudjon csatlakozni? Az ESP működik, csak a WiFire nem tud csatlakozni, vagy az ESP is áll?
"csatlakozik, csak nem ahhoz, amit megadtam neki" ????
Ez elég érdekesnek tűnik! Honnan tudja a másik adatait?De jó helyen van ez az ESP, hogy 30 fok van
-
Janos250
őstag
Szerintem is Tanblocknak van igaza. Én annyit tennék hozzá, hogy az IDF is ugyanazzal működik, mint az Arduino IDE. Valahol meg is van ugyanaz a konfig fájl, amit az IDF-ben állítasz, én egyszer régebben ott állítgattam valamit, de már nem emlékszem mit, és miért. Ezek csak user interface-ek. Jó az a 8266! Az meg, hogy mindenki fejleszt rá mindenfélét, és azok egymással nem csereszabatosak, az mindkettőnél megvan. Hogy az alaplapok között is van apróbb különbség, az is. Pl. megírod a programot, aztán a másik lapon nem ugyanaz a beépített led neve, és nem ugyanazon a GPIO-n van, de más eddig nekem nem okozott gondot. Ezért én be szoktam írni a program elejére kommentben, hogy milyen könyvtárral és milyen lappal használtam, milyen lapra fordítottam.
Aztán egy év múlva keresem ugyanazt a könyvtárat, de közben átírták.
-
Janos250
őstag
Az esp-wrom-32 a lényeg.
"Itt lehet olyat csinálni..."
Persze. Ez C++ , vagyis amit C++-ban lehet, azt lehet. A C++ tk. a C bővítése. Attól lesz arduino, hogy egy csomó (C++, C, assembly) fgv, type, constans már definiálva van, amit includol. Ugyanúgy main() is van , csak nem látod, de megkeresheted.
A main egyszer lefuttatja a setup függvényt, utána végtelen ciklusban hívogatja a loop-ot. -
Janos250
őstag
Melyikről beszélünk, ESP8266 vagy ESP32?
ESP32-n jó ideje stabilan működő programból kopiztam ki a beírt részletet.
ESP32-n nálam:
config elöl. utána begin: sztochasztikus viselkedés.
begin elöl, utána config: stabil viselkedés.
Azért kezdtem el kutakodni 32 ügyben a neten, mert az első verzió esetén nekem is gondjaim voltak.
A neten írták a második verziót. Amióta azt használom, azóta stabil. Tehát felkapcsolódunk, kapunk IP-t.
Utána változtatjuk meg az IP-nket. -
Janos250
őstag
Én korábban ESP8266-ból a "fehér panelesből" forrasztottam be néhányat, azokat ma is használtam egy mérésnél, nem volt velük gond. Amikor már kezdtek terjedni, akkor már nem érte meg forrasztgatni, akkor kész Wemosokat vettem, de "üzemszerűen" a régi fehér panelosokat használom, mert azokkal van összerakva a mérés. Viszont ezeket egyfolytában huzamosabb ideig nem használtam még. Ami folyamatosan jár hónapok óta, az ESP32 DOIT panelon. Ez egy telnet szerver, ez hónapok óta jár, csak áramszünet esetén nem. A valamelyik internetes állomásról elküldött adatokat ismétli minden egyes bejelentkezett állomásra. Nincs vele gond.
-
Janos250
őstag
Így sajnos nem stabil.
A neten írták, és én is ezt tapasztaltam, hogy a
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
közé kell egy delay(1000)
Ne kérdezzétek miért, én sem értem.Így próbáld, én ezt egy saját programból kopiztam hirtelenjében, stabilan működik:
WiFi.begin(ssid, password );
delay(1000); // legalabb 1000 kell, hogy tudjon kapcsolodni
IPAddress ip(192,168,1,140); //Node static IP
IPAddress gateway(192,168,1,1) ;
IPAddress subnet(255,255,255,0) ;
WiFi.config(ip, gateway, subnet) ;
delay(1000);A WiFi.config sok leírás szerint a WiFi.begin elé is jó lenne, de a gyakorlatban nem, pedig az lenne a logikusabb.
-
Janos250
őstag
Kétféle verziót tölthetsz le:
1. Amit installálsz, és az felrakja magát ahova kell, a programjaid könyvtára - ha jól emlékszem - a dokumentumokba kerül.
2. Portable verzió:
Amit letöltöttél, azt egyszerűen kibontod egy könyvtárba valahova, de lehetőleg olyan helyre, hogy ne legyen túl hosszú a path.
Ahogy kibontottad, lesznek ilyen könyvtárak pl.: hardware, libraries, stb.
Ugyanide csinálsz egy portable nevű könyvtárat MÉG AZ ELSŐ INDÍTÁS ELŐTT.
Akkor néhány dolgot ebbe rak, pl. sketchbook könyvtárat csinál a programjaidnak, stb.
Én mindenben, még a video lejátszóban/szerkesztőben és egyebekben is azt a verziót szeretem, amit nem installálok, hanem csak futtatom ott, ahol kibontottam. -
Janos250
őstag
A nagyon nagy helyfoglalás reális.
Az ESP32-re felrakja az RTOS oprendszert, az kiteszi a helyfoglalás zömét, arra rakja rá a te pici programodat.
library:
Nekem kiválasztja a megfelelőt annak ellenére, hogy kiírja, hogy többszörös, stb.
Mivel én mindig a portable verziót használom, így könyvtárakat hová tegyük ügyben csak a portable verziót illetően tudok nyilatkozni. -
Janos250
őstag
válasz
ngabor2 #7898 üzenetére
A különböző panelokon különböző a lábkiosztás!
Én több mint egy évvel ezelőtt próbáltam, ennyit jegyeztem fel magamnak, de már nem emlékszem a dolgokra:
WemosD1-en BME280 I2C Test.ino működik
Final data sheet
BME280
Combined humidity and pressure sensor :"The 7-bit device address is 111011x. The 6 MSB bits are
fixed. The last bit is changeable by SDO value and can be changed during operation.
Connecting SDO to GND results in slave address 1110110 (0x76) ;
connection it to VDDIO results in slave address 1110111 (0x77) ,
which is the same as BMP280’s I²C address.
The SDO pin cannot be left floating; if left floating, the I²C address will be undefined." -
Janos250
őstag
"Atmega328 uC csinál benne minden mérést"
Igen, az csinálja a méréseket is, nem csak a megjelenítést. Mivel 3 bemenete van, és semmi megkötés arra, hogy a bemenetek melyikébe milyen alkatrész melyik lábát dugod, rengeteg variációt végig kell próbálni, hogy kitalálja, mit dugtál és hova. Biztosan meg lehetne építeni, de nem hiszem, hogy megérné. Képzeld el a programot, ami a mérésekből kitalálja, hogy ez egy tekercs, egy FET, vagy micsoda. Ha pl. FET, tranzisztor, dióda, ellenállás, kondenzátor, zener, stb, akkor megmondja, melyik láb micsoda, mik a paraméterei, miegymás. Szerintem nagyon hasznos. Én pl. a napokban is arra használtam, hogy a FET készletemből megnézzem, melyik nyit a legalacsonyabb gate feszen, hogy az ESP32 mellé azt tegyem.
Elég megtévesztő a neve, hogy tranzisztor tester, mert az csak egy funkció a rengeteg közül.
Kipróbálom a TC-t, ezer éve nem használtam. -
Janos250
őstag
Nem teljesen Arduino, csak félig:
Win 8.1
A keresés jól megtalálja a dolgokat pl. a .h fájlokban, de semmit nem talál meg az .ino fájlokban.
Bill G. már nagyon csuklik.
Tud valaki valami üdvözítőt? Hiába variálom a beállításokat is, semmi. Ha átnevezem .txt-re, .h-ra, akkor megtalálja ami benne van, de ha .ino akkor nem.
Andaxin -
Janos250
őstag
"működik"
Ez a lényeg!
"enyémen kell a GPIO2 +3,3V"
A GPIO2 néhány panelon a beépített led, így alapállapotban megvan a magas szintre húzás, viszont akinek nem, az most jegyezze meg a tapasztalatod!
"elvileg az egész modul nem 5V toleráns"
Így igaz, de a neten sokan állítják, hogy ők kipróbálták, és a GPIO vonalak elviselik az 5 V-ot is. Én nem próbáltam, és nem is akarom, maradok a 3.3V-nál. Korábban már írtam, hogy nekem egy 5 V-os WS2812 is elviselte a 9V-ot, mégsem arról hajtom természetesen. Tehát mindig igyekezzünk maradni a gyártó által megadott paramétereknél. Ha az nem egyértelmű - mert a fejlesztők kommunikációja sem az ezügyben - akkor maradjuk mindig a biztonságosabb módnál. -
Janos250
őstag
Kedves HCl "sósav"
Csak egy bugyuta kérdés: az USB-TTL konvertert ugye 3.3 voltos üzemre állítottad, nem felejtetted véletlenül 5V-on? Mert állítólag az 5V-os üzemet is elbírja, de sokkal gyakrabban hibázik (ezt csak valahol a neten olvastam, nem próbáltam). Mindkét panelt célszerű külön tápról hajtani. Egyszerűbb konverter már 2-300 Ft-ért is kapható:
link
Én többnyire olyan szabályozható tápokat használok mostanában, mik ki is írják a feszültséget, pl. :
link
A 230-ról pedig vagy régi, kidobott nyomtatók, szkennerek tápját, vagy a piacokon olcsón beszerezhető LED tápokat használom. -
Janos250
őstag
Na, itt jön be az ESP32 multitask, két core, előnye:
Annyi önálló taskot futtatsz, amennyit akarsz. Egy feladat, egy task. Amikor elvégezte a dolgát, akkor megfelelő delay, ami nem fogja meg a procit, hanem átadódik a vezérlés másik tasknak. Amit meg közben nagyon figyelni akarsz (pl http kérés), megy önállóan a másik core-ra. Lehet egy 1000 + 1000 Ft-os ESP8266 + UNO kontrollerekre mindenféle tótágasos programozási trükkökkel mindent felpaszírozni, de egyszerűbb egy 1600 Ft-os ESP32-n kisujjból kirázni. Ha azt is hozzávesszük, hogy az ESP32 mellé már az UNO se kell, még olcsóbb is lesz, sokkal nagyobb teljesítménnyel, sokkal egyszerűbb programozással.
Én mindenkinek azt javasolom, hogy ha kezdésként egyszerűbbel akarja kezdeni, akkor tényleg az egyszerűbbel (azaz korszerűbbel) kezdje. Ha már minden jól megy, akkor ha nagyon akarja, rátérhet a régebbi eszközökön sokkal bonyolultabban és drágábban megoldani ugyanazt.
Én csak a pofonegyszerű dolgokra használom fel a régebbről megmaradt ESP8266-okat. Pl. egyszerű WiFis ki-bekapcsolás, illetve a Sonoffban is az van, ott adott. Nagyon kedveltem az ESP8266-ot, és az STM32-t, amíg nem jelent meg az ESP32, illetve, amíg gyér volt a támogatottsága. Ma már - az egyébként szintén jó - STM32 helyett is ESP32-t használok. -
Janos250
őstag
Olyan ESP32-t vegyél, amin van USB port. A maiak 99 %-a olyan.
Semmi nem kell hozzá, csak USB kábel.
A WS2812-höz való csatlakoztatáshoz én ilyesmi kábeleket használok:
link
Táphoz ilyet, de persze bármi jó:
link
meg ilyet:
link
Meg ez is jól jön:
link
Ha komolyabban akarsz majd a későbbiekben az Arduinoval foglalkozni, akkor egy ilyen is nagyon jól jön:
link
Egy ilyen is nagyon hasznos alkatrészek teszteléséhez:
link
Itt jobban látszik néhány példa azokból, amiket, tud. Nem csak tarnsistor tester, hanem szinte mindent, aminek nincs háromnál több lába. Bedugod, és megkeresi saját maga, hogy mi az, kirajzolja a bekötését, kiméri a paramétereit.
linkMilyen oldalt javasolok? Hát ez egy nehéz kérdés. Az Arduino rendszer a C++ nyelvet ismeri, a szabad fordítóval fordít. Az Arduino annyival több mint a sima C++, hogy bizonyos függvények minden kontroller típushoz kötelezően definiálva vannak, ebből adódik, hogy a specialitásokat nem használó programok bármely Arduino kompatibilis lapon ugyanúgy futnak.
Na, ennyi olvasnivalót mára. -
Janos250
őstag
Először azt kell eldöntened, hogy milyen ledet akarsz, mert minden további attól függ.
Az általad mellékelt linken analóg van: 60 led/m, azaz 20*(1 vörös, 1 zöld, 1 kék ). Ehhez kell a FET. A WS2812-ben minden pixel önmagában RGB, tehát egy pixelbe van berakva mind a 3 szín. Ha WS2812, akkor nem kell FET. -
Janos250
őstag
"A terv, hogy egy WS2812 fog futtatni egy http servert és azon keresztül tudom majd vezérelni a szín beállításokat az Arduino Uno-n keresztül."
Na, én már végképp nem értem. Milyen szalag, milyen kontroller?AZ IRL540 jó.
"A legfogósabb kérdés számomra a LED szalag, mert nem nagyon láttam leírásokat a szalagokról, hogy az most analóg, vagy digitális"
Nézd meg, hány madzag megy bele. ha négy (R táp, G táp, B táp, GND), akkor analóg. Ha 3 (GND, táp, vezérlés), és gyakran még külön 2, hogy azon is lehessen tápot adni, ha valaki úgy akarja, akkor digitális. Bár a WS2813-nak szintén több bemenete van, mert ott van még egy plusz data volanl valamiért, de az úgyis drágább még. -
Janos250
őstag
Még egy kis kiegészítés:
"Van esetleg Arduino-hoz szimulátor?"
Nem tudom, lehet, hogy van, de az a lábak, prifériák kezelését biztosan nem tudja azokon a kontrollereken, amiket ma használunk.
"Elvileg van annyi analóg pin a cuccon, hogy akár egy negyedik szalagot is tudjak vezérelni."
Attól függ, milyet használsz. STM32-n, ESP32-n jóval több is, ha mindenképpen analóg megoldást keresel. WS2812-re digitális pin meg aztán végképp.
"Teszek majd MOSFETeket a szalagok meghajtásához, bár elvileg el kellene bírnia a kb 50cm-es darabokat."
Szerintem FET nélkül nem fogja elbírni az analóg ledet. -
Janos250
őstag
Az én kommentem:
Színenként és szalagonként kell egy-egy FET, tehát összességében egy tucat. Ehhez kell valami panel, doboz, miegymás.
A fényerőt vagy úgy állítod, hogy szaggatod a jelet (PWM), vagy a FET részleges nyitásával fűtesz.
Az okosotthon témában sok androidos vezérlő megoldás van rengeteg dologra, egy része egész szép, de én ezeket nem használom/tam. Én szeretek saját WiFi/html megoldást használni.
Ahogy én csinálnám:
WS2812 RGB led, 810 Ft/m, 30 led/m. Én pár hete még 600-ért vettem, szépen múködnek, elég gyorsan be is érkezett.
link
Külön madzag van a tápnak, és külön a vezérlésnek. Kódok küldésével adjuk meg, hogy melyik szín milyen erővel világítson. Ami kódot egyszer kiküldtünk, az a táp kikapcsolásáig él, nem kell frissítgetni, csak amikor változtatni akarunk.
A vezérléshez használt madzag 3.3V-al is hibamentesen működik. Tápnak 5V kell, de kevesebbel is elmegy. A tévedésből rákötött 9V-ot egyszer régebben még elviselte, de a mostanában véletlenül ráadott 12-t már rossz néven vette.
A neten vannak rá programok, Teasüti gyakorlatban alkalmazza őket. Én nem ezeket használtam, mert túlbonyolítottnak találtam, én saját magam írtam rá egyszerűbbeket, ESP32-re (én mostanában mindenre az ESP32-t használom, mert olcsó. 2 ezer Ft alatti összegért gyors, 2 magos, sok szolgáltatással felvértezett kontrollert kapunk)
A több led használata a legegyszerűbben úgy oldható meg, hogy a pin számot váltogatod, mert minden megoldásban úgyis van egy változó, ami a GPIO számot definiálja.
Előnye, hogy ha a későbbiekben variálgatni akarod (pl. folyamatosan , akár pixelenként változó szín, fényerő), nem kell hozzá semmi hardver módosítás, csupán szoftver, arra meg azt írtad, ismered a C-t.
Van persze, az a távirányítóval vezérelhető led szalag is, valahogy bizonyára azt is lehet valahogy Arduinoról vezérelni, de annak az ára is közel van a WS2812-höz.Még utólag: ha wifi is van a tervek között, akkor kizárólag ESP8266, vagy ESP32 a mai világban. A net tele van régi, ma már elavultnak számító, drága, bonyolult megoldásokkal régebbi kontrollerekre, de - szerintem - nem érdemes energiát pazarolni rájuk. A korszerűbb olcsóbb, és egyszerűbb.
-
Janos250
őstag
" Mondjuk lehet, hogy erre magában az ESP is elég"
Így igaz, és úgy egyszerűbb.
"első körben Arduinoval együtt képzeltem el."
Na, úgy már bonyolultabb!
Ahhoz, hogy az AT parancsokat fogadja az esp, kell fusson rajta valami program. Úgy tudom, gyárilag van rajta valami ilyesmi, de ha valaki már töltött fel rá valami mást...
Én az AT parancsokat soha nem próbáltam, mert csak az esp-re rakni a programot egyszerűbb.
Én a másik oldaláról fognám meg. Az esp-re program, ami figyel, és küldi a POST,GET-et, és soros porton küldi az UNO-ra, amit mindenképpen az UNO-n akarnék. -
Janos250
őstag
Na, ez érdekes!
Azt nem mondanám, hogy tökéletesen megértettem, de mindenesetre ennyi pénzért (900 Ft) az NRF51 ami egy Cortex M0 mag + BT, az azért elég jó!
A MicroBittel nekem egyetlen bajom van: az ára. 4-5 ezer Ft.
Ennyi pénzért már az Orange pi sokkal többet tud.
Ez az NRF51 viszont érdekes lehet az okos otthon/miegymás témában.
Előnye mindenesetre, hogy ARM. A Cortexekből én az STM32 szériából használtam, amik szintén igen jók, de nekem a WiFi nagyon hiányzik belőlük.
Az ESP32 nem menő, csak olcsó. -
Janos250
őstag
válasz
Teasüti #7805 üzenetére
"Hogy mi? Ezt most látom először.
Akkor ezért nem működik egy csomó RTOS parancs?
Itt is vmi jogosultsági rendszer van? Meg kell szerezni a root jogot, vagy mi a szösz?"
Csak a WDT regiszter írásához kell a jelszó, de azt a rendszer elvileg csinálja.
Tehát a hardver WDT etetése a leírás szerint így működik:#define TIMG_WDT_WKEY_VALUE 0x50D83AA1 // ez a "jelszó"
TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
TIMERG0.wdt_feed=1;
TIMERG0.wdt_wprotect=0;Az esp_task_wdt_feed() meg az esp_task_wdt.h ban van, kifejtve meg a libesp32.a-ban, vagyis nem tudjuk, hogyan működik.
"Ezt a scheduler-t a mai napig nem értem."
Én sem!
Néztem régebben szkóppal: 1 millisec-enként szakít meg - ha nem fut a magon tőlem semmi - akkor kb 3 microsecre. Valamit az alatt a 3 alatt csinál, de nem tudom mit. A millist biztosan növelgeti szoftverből -
Janos250
őstag
Tudok olyan helyet, ahol nagyjából akkoriban törölték még a Neptunból is (oktatási adminisztrációs program) azt a választható tárgyat, aminek keretében PIC-kel olvastak egyszerűbb szenzorokat, vezéreltek mintaként ledeket, lámpákat, szervo és léptető motorokat.
"Erre csak a villamosmérnököknek van szüksége", mondták. Ma, ha egy mérésnél a készülék fűtését telefonról (ESP8266) vezérlik, és ott olvassák le az adatokat, arra, mint értelmetlen hibbant, különcködő ötletre tekintenek az intézménynél. Érdekes, hogy leginkább a tanítottak éreznek rá ennek az ízére. -
Janos250
őstag
Egyre több helyen ismerik fel, hogy az Arduino az oktatásban is mennyire hasznos lehet.
A BETT oktatástechnikai kiállításon ez egyértelműen kiderült:
linkSajnos nálunk nem így áll a dolog.
Ötleteket lopni nem tilos! -
Janos250
őstag
válasz
Panhard #7788 üzenetére
Igen, erről érdemes még néhány szót szólni, hátha másnak is lesz ilyen problémája.
Nem a másik core-on futó taskot fogta meg, hanem ugyanazon a core-on a többi taskot.
Ugyanis a freeRTOS futtat még pár egyéb rendszer-taskot is, amit pontosan nem tudunk mit, mert elvileg a
vTaskList() lenne hivatott kilistázni, de az Arduino alatt valamiért nem működik.
Írjuk be a következő programot:void loop() {
Serial.println("loop begin");
uint8_t i = uxTaskGetNumberOfTasks( );
Serial.print("uxTaskGetNumberOfTasks = "); Serial.println(i);
delay(60000) ;
Serial.println("loop end");
} ; // end loopA WDT nem okoz gondot, hiába a hosszú várakozás, mert a scheduler által beállított prioritások miatt futhat a többi task is.
Ezt a kiírást kapjuk:
uxTaskGetNumberOfTasks = 7Tehát a mi loop taskunkon kívül még vannak a core-on hatan, akik szintén futni akarnak.
Ezért lényeges a prioritás.Ha megnézzük a main.cpp-t :
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);
}
Itt a loop prioritása 1, így igazából én sem teljesen értem, hogy miért nem futhatnak a többiek is, hiszen a loop prioritása is 1, meg Te is ugyanezt a prioritást adtad, de valahogy mégis megfogja a többit.
Tehát mégis az van, hogy ha valaki hatalomra jut, és olyan hangosan kiabál, hogy senki mást nem hagy szóhoz jutni, akkor egy idő után a WDT miatt összeomlik a rendszer. Szükséges egy delay!Még egy megjegyzés:
Ha a loopodat akarod a másik core-ra tenni, azt a mainben tudod átírni, az xTaskCreatePinnedToCore paraméterében. Én néha átteszem a core0-ra, ha a core1-en elég időkritikus taskot futtatok. -
Janos250
őstag
válasz
Panhard #7783 üzenetére
Tippek:
Gyanítom, hogy nem a várakozó task okozza a galibát, hanem valami másik, aki közben "nem jut szóhoz"
1. Próbáld meg a prioritást variálni, hogy amíg a függvényed fut, mások is szóhoz jussanak
2. tegyél be pl. vTaskDelay(20)-at, mert akkor is futhat más task is
3. ha végképp nem megy, akkor én kilépnék a taskból, majd újra be.A freeRTOS valahogy taskonként kezeli a WDT-t, ezt nem tudom hogy csinálja, de megoldja. A WDT-t lehetne közvetlen írással nullázni, de nem tudom, felborít-e valami mást a freeRTOS-ban
Egyébként az ESP32 kutyusa hardver szinten "idomítva van, hogy csak a gazditól fogadjon el kaját".
A gazdi az, aki tudja a jelszót, ami valami 32 bites szám. -
Janos250
őstag
válasz
Teasüti #7779 üzenetére
Egy kis kiegészítés az ESP32 soros portjaihoz:
Van UART0, UART1,UART2
Mindháromnak van RXD,TXD,CTS,RTS, de DSR és DTR csak az UART0-nak. Én eddig még csak az RXD,TXD-t használtam.
Az ESP periféria kezelése kétféleképp történik:
1. "GPIO matrix":
Ezzel bármelyik periféria kapcsolható bármelyik lábhoz, egy un. GPIO matrixon keresztül. Ezt úgy kell elképzelni, mint pl. a klaviatúra mátrixát.
Tehát a mátrixnak vannak sorai, ami a perifériák jelei. Vannak oszlopai, ami a 34 láb ("GPIO pad"), amik sajnos nem folytonos számozásúak: (0-19, 21-23, 25-27, 32-39).
Ha a megfelelő jel és a láb (pad) kereszteződésébe teszel egy pöttyöt, akkor a jel és a láb hardveresen össze lesz kapcsolva.
2. "IO_MUX":
Ezzel 5 gyors jel (Ethernet, SDIO, SPI, JTAG, UART) közvetlenül (bypass) kapcsolható a lábakhoz, de itt előre definiált, hogy melyik jel melyik lábhoz kapcsolódik.
Ez gyors, mert elkerüli (bypass) a GPIO matrixot.Mi következik nekünk ebből az UARTokra vonatkozóan?
Ha az UARTok példányosításánal nem adunk meg lábat, akkor a gyors bypass szerinti láb rendelődik hozzá az alábbiak szerint:
U0TXD -> GPIO1
U0RXD -> GPIO3U1TXD -> GPI010
U1RXD -> GPIO9U2TXD -> GPI017
U2RXD -> GPI016
Ezzel a következő a bajunk:
A mai lapokon az ESP-WROOM-32 fémházas hibrid áramkör van (ne is vegyen senki meg olyat, amin nem ez van), tartalmazza többek között az ESP32-t és plusz memóriát.
Ennek a plusz memóriának a címzéséhez használja többek között a GPIO9-et, és a GPIO10-et.
Ezért az UART1 soros portot más lábakra kell rakni, a másik kettő meg maradhat a hardveres kiosztáson.
Ezért kell megadni a soros1-hez a felhasználni kívánt lábakat:
pl: Serial1.begin(57600, SERIAL_8N1, Serial1_RXPIN, Serial1_TXPIN) ; -
Janos250
őstag
válasz
Teasüti #7779 üzenetére
Ja, értem.
A panelon persze van USB, az a sima serial.
Most sietnem kell, de gyorsan kerestem egy régebbi programomból egy részletet, amit bemásolok.#define Serial1_RXPIN 26
#define Serial1_TXPIN 27HardwareSerial Serial1(1);
HardwareSerial Serial2(2);void setup() {
pinMode(Serial1_RXPIN,INPUT_PULLUP);
pinMode(Serial1_TXPIN,OUTPUT);
Serial.begin(115200) ; // TX0, RX0
Serial1.begin(57600, SERIAL_8N1, Serial1_RXPIN, Serial1_TXPIN) ;
Serial2.begin(57600); // pin 16=RX2, pin 17=TX2pinMode(2, OUTPUT) ; // BUILTIN_LED = 2
while (! Serial);
while (! Serial1);
while (! Serial2);
delay(500);loopban ilyesmik vannak:
while (!Serial1.available()) {} ;
xA1 = Serial1.read() ;
Serial2.print("A1 hex = ") ; Serial2.printf("%02X",xA1) ; Serial2.println() ;Ez meg az info soros portra megy (nálam debug jelleggel):
Serial.println("megvan A0, A1") ;
Új hozzászólás Aktív témák
Hirdetés
- PROHARDVER! feedback: bugok, problémák, ötletek
- Milyen routert?
- gban: Ingyen kellene, de tegnapra
- Azonnali informatikai kérdések órája
- PlayStation 4
- Debrecen és környéke adok-veszek-beszélgetek
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Medence topik
- Kerékpárosok, bringások ide!
- További aktív témák...
- Corsair CX750M 750W Moduláris Tápegység
- DJI Mini 3 Fly More Combo drón telefonos távirányítóval
- Core i7 9700 processzor - 6 hó garival
- Dell 24" 1920x1080 full HD - webkamerás konferencia monitor hangszóróval! - gyári garancia 2028ig
- Dell Latitude 5590, 15,6" FULL HD IPS, I5-8350U CPU, 16GB DDR4, 256GB NVMe SSD, WIN 11 ÚJ AKKU
- Több mint 70.000 eladott szoftverlicenc
- AKCIÓ! GIGABYTE AORUS MASTER RX 6800 XT 16GB videokártya garanciával hibátlan működéssel
- A Panasonic Toughbook CF-54 i5-5300u i5-6300u TN, IPS touch Budapest, MPL Foxpost
- Telefon felvásárlás!! Samsung Galaxy A20e/Samsung Galaxy A40/Samsung Galaxy A04s/Samsung Galaxy A03s
- BESZÁMÍTÁS! Dell Latitude 5550 üzleti -Intel Ultra 7 165U16GB DDR5 RAM 1TB SSD Intel Graphics WIN11
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest