- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- VR topik
- Gaming notebook topik
- 3D nyomtatás
- Bambu Lab 3D nyomtatók
- Vezeték nélküli fülhallgatók
- Fájdalmasan gyenge kijelzőt válaszott a Switch 2-höz a Nintendo
- Sony MILC fényképezőgépcsalád
- Milyen billentyűzetet vegyek?
- Kormányok / autós szimulátorok topikja
-
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
-
Janos250
őstag
A WS2812 egyik vége bemenet, a másik meg kimenet, amire újabb ledsort köthetsz, és így tovább, akár a 10-et is (gondolom, de ennyit még soha nem próbáltam) felfűzhetsz. Persze, akkor az idő is hosszabbodik, nem tudom, hogy mondjuk egy Uno mennyit bír, mert én ESP32-ben gondolkodom.
-
Ha mondjuk egy uno-ról beszélnénk, egy kimenet terhelhetősége ha jól emlékszem 25mA source (magas jelszint), 40mA drain módban (alacsony jelszint), ha jól tudom, nagyjából az összes atmega AVR hasonló, de még egy esp8266-nak is 17-20mA a terhelhetősége, miközben egy WS281x led din lábának a bemeneti ellenállása több kohm, esetleg Mohm is lehet, vagyis pusztán digitális bemenetekkel szerintem nem lehet túlterhelni egy ilyen kimenetet, legalábbis 10 bemenet erre nem valószínű, hogy elég lenne. A táppal más a helyzet, mivel 1db ledsor áramfelvétele önmagában is tetemes lehet, nem árt kiszámítani/kimérni, mekkora táp bírja el a 10 ledsort.
-
Janos250
őstag
Közben rájöttem, hogy nekem is van egy nagyon hasonló régről, amit el is felejtettem, mert soha nem használtam. Saját programot kellett volna installálni a telefonra, regisztrálni valahova, miegymás, ezért hagytam a francba. Van benne egy ESP8255, de nem lehet programozni, mert az Rx,Tx lábak közvetlenül egy ARM proci lábaira mennek, tehát valahogy ő programozza. Persze, az enyém csak hasonló, mint a Tied. Továbbá nem is mindenkit üt meg a guta, ha az ezredik applikációt kell telepíteni a telefonjára, és regisztrálni a kis kínaiakhoz.
Összefoglalva: lehet jó. -
htc07
addikt
válasz
puritan #12272 üzenetére
Az UPC routereden a WAN IP cím / külső cím / nem tudom hogy hívja az UPC, ha megegyezik az ipcimed.hu-n látott címmel, akkor publikus a címed. Ha nem, akkor nem lehet portot nyitni kívülről.
Port átirányításhoz meg az kell, hogy tudd a belső eszköz (ESP) IP címét (lehetőleg legyen statikus, ne változzon - ez másik sztori: [link] ), külső és belső portnak célszerű ugyanazt a számot megadni ha szabad. A népszerűbb szolgáltatásoknak megvan a saját dedikált portjuk, pl. http 80, ssh 22, ftp 21, https 443).
Amikor betöltesz egy https weboldalt, akkor (általában) a :443 porthoz csatlakozol, pl. prohardver.hu:443 , csak ezt a böngészők elrejtik.
-
puritan
csendes tag
Kedves aryes, gyapo11, Janos250!
Köszönöm a segítséget, de egyelőre elveszek az információk tengerében. Valóban a hálózati beállításokkal van gondom, meglehetősen hiányosak, vagy inkább a nullához közelítenek az ismereteim ezen a téren.
UPC netem van, egyelőre nem tudom, hogy NAT mögött vagyok-e vagy sem, a whatismyip.com nem talált IPv6-ot. A router beállításai között megtaláltam az ESP-t, és a MAC címét is látom, de nem tudom, hogy kell külső portot ráirányítani. Regisztráltam a dynDNS.hu-ra is.Háát... nem sok haladás, majd túlórázok még a dologgal néhány este, aztán majd csak lesz valami...
-
_q
addikt
válasz
Janos250 #12267 üzenetére
Megpróbáltam ahogy írtad. Megnéztem a router IP-jét és megadtam az ESP-nek 60000-ret port forwardinggal. Sajnos nem tudok rá belépni. Mit hagytam ki?
A router mondjuk valamiért nem akarja elmenteni, pedig a saját gépemet mikor belőttem azt elmentette, lehet nem jó portot adok meg?
-
Janos250
őstag
Erről jut eszembe: tud valaki valamit az IPv6 esetleges használatáról ESP-n?
-
Janos250
őstag
"Ha beállítottam azokat amiket mondtál, utána hogy tudom dyndns nélkül elérni az ESP-t routeren keresztül? Kell egy ip, port és gondolom jelszó."
Valahogy így:
http://xxx.xxx.xxx.xxx:yyyyy
ahol:
xxx.xxx.xxx.xxx az az IP, ami a routered külső IP címe. Pl a www.whatismyip.com megmutatja, ha a belső hálóról hívod.
yyyyy pedig az a külső port, amit a routerben az ESP belső ip címére irányítottál. Jelszó alapesetben nem kell.
Vezérlésekre javasolom a Tasmota kipróbálását.
dynDNS-re pedig az ingyenesen is használható www.dyndns.hu-t. Nem kell tőle megijedni, kényelmes.
Ha IPV6-od van, akkor kérni kell az IPv4-re visszaállítást.
Ha a szolgáltatód NAT-ol, akkor meg annak megszüntetését, ami néha egyszerű, néha nem.Hopp, látom, közben kaptál részletes választ. Mindegy, nem törlöm.
-
_q
addikt
-
válasz
puritan #12263 üzenetére
Szia! Ha jól érzékelem, nem arduinoval, hanem hálózati beállításokkal kapcsolatos inkább a problémád.
Először is az otthoni routered beállításai között keresd meg a dhcp beállításait, és az ESP MAC címéhez rendelj statikus IP címet. Ehhez aztán port forwardingot kell beállítani. Vagy ha létre tudsz hozni VPN szervert, azzal sokkal biztonságosabb lesz, mert kisebb támadási felületet biztosít az otthoni hálózatodnak. Én ezt egy raspberry-vel oldottam meg, de van olyan router, ami alapból tud ilyet.
A neheze ezután jön: kívülről el tudod érni az otthoni hálózatodat? Ha nem, akkor szolgáltatói NAT mögött vagy. A szolgáltatótól kérned kell, hogy vegyen ki a NAT mögül.
Ha ez megvan , akkor kellhet még egy dyndns, ha sűrűn változik a routered ip címe.Ha ez mind valamiért nem kivitelezhető, akkor esetleg ha van webszervered és tudsz PHP-ban programozni, azon keresztül is meg lehet oldani.
-
puritan
csendes tag
Üdv mindenkinek!
Egy kis segítséget szeretnék kérni!
Kb. egy éve találkoztam az Arduinoval, azóta foglalkozom vele szórakozásból, vagyis eléggé kezdőnek tartom magam. Uno, és Nano alapon több dolgot is kipróbáltam, többnyire sikerrel megoldottam, amit szerettem volna. Most viszont elakadtam. Vettem egy Wemos D1 minit, aminek ugye az a lényeges tulajdonsága, hogy Wifi modul is van benne, és könnyedén kapcsolódik a netre. A konkrét feladat az lenne, hogy távolról szeretnék vezérelni egy termosztátot. Két irányba indultam el, de egyik sem volt sikeres.Az egyik irány, az ESP2286-osok tipikus példaprogramja, a led kapcsolgatás Web felületről. Ezt a linkelten kívül több változatban is megtaláltam, de mindegyiknek az volt a hibája, hogy csak az otthoni hálózaton belülről működik kívülről nem. De ha működne is, nem tudom hogyan lehet megoldani a dinamikus IP cím problémáját.
A másik irány a Blynk alkalmazás volt. Ennél mobilra telepített alkalmazás csatlakozik a Blynk szerveréhez, és az előre elkészített kis "eszközöket" pl, kijelző, nyomógomb, léptetőgomb, stb. lehet egymás mellé rakosgatni az alkalmazásban, és a megadott kódokat kell a saját kódunkba beilleszteni, amivel végül is vezérelhető lenne az eszközünk. Ennek az a hibája, hogy csak az egyik irányba mennek az adatok, tehát a Wemoshoz csatlakoztatott hőmérő értékét szépen látni a mobiltelefonon, de a mobilon megadott számszerű értéket az istennek nem lehet a Wemoshoz eljuttatni.
Az lenne a kérésem, hogy milyen egyszerű módszert javasoltok, aminek a segítségével webről működtethetem a Wemost?
-
Na, szóval kiderült, hogy ha a powerOff() metódust használom, akkor nem megy deep sleepbe a modul, arra a hibernate() való, így sikerült 1 mA alá mennem fogyasztásban. Ezt csak a gagyibb multiméteremmel tudtam mérni, szóval pontosan nem tudom, mennyi az annyi. Kicsit kellett trükközni, mert a GxEPD "elfelejti", hogy hibernálva volt a display mikor az ESP32 deep sleepbe megy, és nem reseteli. Sajnos az egész ojjektum nem fér bele az RTC RAM-ba így az osztályba vettem fel egy RTC_DATA_ATTR változót.
-
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
-
Janos250
őstag
válasz
patesz #12136 üzenetére
Már többször írtam, de továbbra sem értem, miért akartok az ESP8266-on software serial használni, amikor ott van a hardware serial!
Pontosabb, biztonságosabb, kényelmesebb, stb.
Még példányosítani se kell, mert a HardwareSerial.cpp-ben eleve példányosítva van.
HardwareSerial Serial(UART0);
HardwareSerial Serial1(UART1);Vagy van valami gond az ESP8266 hardware seriallel, amit én nem tudok?
Mintapéldák vannak a neten.
Itt is van róla némi leírás, de elég kevés, pedig az ESP8266 többi részéről részletes tutorial van, mintapéldákkal. Ez főként azoknak ajánlható, aki most ismerkednek az ESP8266-tal.
https://iotbyhvm.ooo/esp8266-tutorials/
A lényeg, hogy a Serial használható adásra vételre egyaránt, a Serial1 pedig csak adásra.
Pont ugyanúgy kell használni, mint a software serialt, csak nem kell include az elején, hanem a setupban a Serial.begin(9600) vagy más baudrate után símán használható.
Itt is van egy mintapélda:
https://create.arduino.cc/projecthub/pawan-kumar3/serial-communication-between-nodemcu-and-arduino-640819
Ez is folyamatosan a hardware serialt használja:
https://www.esploradores.com/wp-content/uploads/2018/04/A-Beginners-Guide-to-the-ESP8266-1.pdf
Ebben is sok egyéb hasznos példa is van. -
-
Bogyo72
csendes tag
Na de amiért ide tévedtem a fórumra.
Elsőként tisztáznám, hogy halmozottan hátrányos helyzetben vagyok.Sem az elektronikához, sem a programozáshoz nem értek, csak nagyon-nagyon alap szinten.
Mint fentebb írtam nekem is pont ilyen lapom van, az alapja egy Arduino MEGA2560. Ehhez csatolnék egy 433MHz-es adóvevő, [link] vevő oldalát. Az adó egy Pro Mini-re van kötve. A probléma, hogy a vétel csak közvetlen közelről működik, akkor is ritkán sikerül (antenna is van a cuccon). Ugyan ez a felállás UNO-ra kötött vevővel tökéletesen működik, több szoba, fal távolságból is. Kipróbáltam már több lib-et, kom. sebességet, de semmi, egyszerűen nem megy.
Most egy öszvér megoldásra gondolok, hogy ha már úgy is itt van a lapon egy ESP8266, akkor arra kötöm, a vevőt és ha működik, a vett adatokat átküldöm a Megának. -
Bogyo72
csendes tag
válasz
patesz #12120 üzenetére
Szia!
Én is ilyen lapot vettem a megoldandó feladathoz. Én így oldottam meg a kommunikációt.
Küldés az ESP felé:
if(myRTC.minutes % 4 == 0 && myRTC.seconds == 7 && kiiras != myRTC.minutes){ char kuld_buff[20]; sprintf(kuld_buff, "%.2f,%.2f,%.2f", (double)adatok.viz_hofok, (double)szoba_ho, (double)adatok.pellet_mennyiseg); Serial3.println(kuld_buff); memset(kuld_buff, 0, sizeof(kuld_buff)); adatok_mentese(); kiiras = myRTC.minutes; }
ESP felől jövő adat vétele:
if(Serial3.available() > 0){ String text = Serial3.readString(); char buff[text.length()]; for(i=0; i<(int)text.length(); i++){ buff[i] = text[i]; } sscanf(buff, "%3d,%2d,%2d,%2d,%4d,%2d,%1d,%2d", &signal, &hours, &minutes, &seconds, &year, &month, &dayofweek, &day); memset(buff, 0, sizeof(buff)); }
-
patesz
csendes tag
Sziasztok,
Segítséget szeretnék kérni Tőletek.
Amatőr szinten programozgatok különböző dolgokat.
A jelenlegi projektem során egy Arduino Mega és az ESP8266 modul közötti kétirányú kapcsolat megteremtése lenne a cél, Blynk vezérléssel.
Nem sima Mega board-ot használok, hanem az itt látható [link] RobotDyn verziót.
Ebbe a lapba már integrálva van az esp. Alapvetően tök jó minden.
Blynk általi ESP vezérlés, majd itt keletkező adatok Mega felé továbbítása és ott kiolvasása soros kommunikáció segítségével működik, azonban a Mega által kiolvasott szenzor adatokat nem tudom ESP felé továbbitani és ott mondjuk Serial.println paranccsal kiíratni(, valamint Blynk appon belül kezelni).
A konkrét eset az lenne, hogy Blynk appban lenyomok egy gombot, ami aktivál egy mérést egy lézeres távmérő segítségével (ez megvan), a távolságérték már a MEGA boardon generálódik (ez is megvan. pl serial.print paranccsal ki tudom íratni), majd ez az érték vissza irányú kommunikációban az ESP-n keresztül a Blynk appban is megjelenik (ennek megoldása hiányzik).
ESPSofwareSerial, ArduinoJson és egyéb megoldásokat is próbálom, valamint nagyon sok fórumot olvasok de nem sikerül összehoznom.
Valaki csinált már hasonlót?
Általánosságban van valami titka a megoldásnak? Rossz úton járhatok?
Lenne valaki aki le tudná írni, hogy mik a főbb lépések amelyeket meg kell tennem hogy vissza felé is tudjak kommunikálni?
Előre is nagyon köszönöm a segítséget.
üdv,
patesz -
Vettem egy ilyen einkes ESP32 modult. Nagyon jó, tud mindent ami kell /mondjuk az eink felbontása gyászos, de ezt most hagyjuk/, viszont deep sleepben 1,6 mA-t eszik, ami nevetségesen sok. Volt rajta egy led, azt leforrasztottam. Ha 3,3 V-ról táplálom meg, megkerülve az LDO-t, nincs változás. Ha kihúzom a display kábelét, akkor kb. 1,1 mA-t fogyaszt, ami szintén fura, mert a displaynek csak néhány uA-t kellene fogyasztania kikapcsolva. Próbáltam üres sketcket rátölteni ami rögtön sleepbe megy, de ugyan az. Ez a bekötési ábra, hátha segít. Látott valaki ilyet, van valakinek ilyen modulja?
-
Izeka82
csendes tag
válasz
Tankblock #12101 üzenetére
Van itthon egy IRF520-as fet modulom, most kipróbáltam, és sajnos nem jó. A negatív ágat szakítja, és ezzel pont az ellenkezőjét érem el, nagyon megugrik a fogyasztás a kikapcsolás után. Pont a pozitív ágat kellene szakítanom. Lehet feladom ezt a rádiós dolgot, és rendelek egy kisebb méretű esp-t.
-
_q
addikt
válasz
nyirzoz #12089 üzenetére
Az szuper, így mondjuk nincs jelentősége tényleg a DC-DC konverternek, mert a napelem úgy is tölti. MQTT-hez mit használsz? Raspberry-n futtatod? Ez lenne a következő lépés amire gondoltam, hogy valamilyen módon nagyobb adatbázisban tárolnám az adatokat.
Jelenleg az ESP32-n egy tömbbe gyűjtöm az adatokat, ahova max 1 napnyi adatot tudok eltárolni. Jó lenne, ha ennél több adatról is lenne információ. MQTT és nodered-ről olvastam eddig, mint opció, de mint a kettőhöz kell egy rpi, amihez meg eddig nem volt szerencsém, de gondolom a leírások alapján belehet üzemelni utánajárással.
-
_q
addikt
válasz
DigitXT #12081 üzenetére
Mind a kettő, értékelésekben is megmérték és én is megmértem egy opus BT-vel. 3200-3400 mAh-t tudott mind a kettő, amit vettem. [link]
11.11 akcióban 2 db vásárlásával 750 Ft-ból is kihozható darabja.
(#12080) nyirzoz
Nekem is így néz ki, a napelemet nem kötöttem rá. Viszont az aksi és az ESP közé ment a DC-DC konverter. Te miért nem tettél oda? Ki tudnád tolni vele a működési időt. -
_q
addikt
válasz
Izeka82 #12060 üzenetére
ESP32-vel mérek hőmérsékletet és páratartalmat, 5 vagy 10 percenként ébresztem alvó módból és Wifi-n küldöm tovább az adatokat. 1db 18650-es aksiról (aliról rendeltem 1000 Ft 3400 mAh) 6 hónapot működik. Erkélyen van, így nem a legpontosabb eredményt adja (ház hője miatt), de közelítésnek jó. Ez az aksi szempontjából azt jelenti, hogy a ház hője miatt nem fog -20 fokba kerülni az aksi, de -5 fok már biztos volt és így decembertől május/júniusig működött (4.2 V -> 2.85 V). Tehetsz rá napelemet, ami tovább tölti napközben.
-
vargalex
félisten
válasz
gyapo11 #12075 üzenetére
Akkor már nagyon közel vagyunk az ESP8266 deep sleep fogyasztásához (ha túl nem léptük), így felesleges vacakolni vele. Az rf modult és a hőmérőket szerintem nyugodtan lehet GPIO-ról hajtani (én is azt teszem), így csak akkor terhelik a tápot, ha nincs deep sleep. Sőt, ha ESP8266, akkor nyilván az RF modul is felesleges...
-
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..
-
Janos250
őstag
Nem találok most rá jó leírást, mert a Google egyre használhatatlanabb :-(
Sorra olyan oldalakat hoz előre, amelyből valamelyik keresett szó hiányzik, de ezt legalább jelzi is, meg reklám oldalakra irányít.
Az egyes portok default pinjei itt vannak:
https://circuits4you.com/2018/12/31/esp32-hardware-serial2-example/
Az UART rx,tx a GPIO9, GPIO10-et használja, tehát át kell irányítani, mert az SPI flash kezelés is használja ezeket a pineket.Valamint: "The three serial ports on the ESP32 (U0UXD, U1UXD and U2UXD) 3.3 V level. They are called UART0, UART1 and UART2.
UART0 is normally used by the serial monitor. UART2 (Serial2) is available on the GPIO pins 16 (RxD2) and 17 (TxD2). UART1 is connected to GPIO 9 and 10, but these are not available because they are connected the integrated SPI flash. Fortunately ESP32 has multiplexing features, and so pins can be changed in code. This can be done with the begin command: Serial1.begin(9600,SERIAL_8N1, 21, 22);. With this command we define GPIO pin 21 for RxD1 and 22 for TxD1."
http://www.weigu.lu/microcontroller/tips_tricks/esp32_tips_tricks/index.html -
Janos250
őstag
-
válasz
Tankblock #12052 üzenetére
Szia!
Így néz ki a forrás eleje:
#define FASTLED_ALLOW_INTERRUPTS 0
#include <FastLED.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <ESPmDNS.h>
#include <Nextion.h>
//kijelző konfig
HardwareSerial Serial2(2); // Activate Serial communication 2 on ESP32 (RX=GPIO16 and TX=GPIO17)
Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port
//wifi kapcoslódási adatok
const char* host="ESP32_controller";
const char* ssid="------";
const char* wifi_jelszo="------";
//ablak nyitas erzekelo valtozok
int ablakPIN1=12; //ablak1 nyitás érzékelő PIN
//mozgaserzekelo valtozok
int mozgasPIN1=14; //erzekelo1 PIN
Ez pedig a hibaüzenet:
Többszörös könyvtárak találhatók ehhez: "FastLED.h"
Használt: C:\Users\User\Documents\Arduino\libraries\FastLED
In file included from C:\Users\User\Documents\esp32\source_code\center_controller\center_controller.ino:6:0:Többszörös könyvtárak találhatók ehhez: "WiFi.h"
C:\Users\User\Documents\Arduino\libraries\Nextion/Nextion.h:5:28: fatal error: SoftwareSerial.h: No such file or directory
Használt: C:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
compilation terminated.Nem használt: C:\Program
Többszörös könyvtárak találhatók ehhez: "ESPmDNS.h"
Használt: C:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\ESPmDNSTöbbszörös könyvtárak találhatók ehhez: "Nextion.h"
Használt: C:\Users\User\Documents\Arduino\libraries\Nextion
exit status 1
Hiba a(z) ESP32 Dev Module alaplapra fordításra.A wifi.h-ből csaj 1 van, az arduino library közül töröltem.
A softwareserial probléma is ismerős, ott a nextion.h-ból kell kommentelgetni jó pár helyen, hogy ne software serial legen, hanem az ESP32 hardveres 2. serial lábai legyenek megszólítva közvetlenül.#Janos250 (12043): ha csak a nextion library-t hagyom benne, és a többit kikommentelem, akor is a töbszörös könyvtárra hisztizik a program.
-
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 .... -
Köszönöm mindenkinek a hozzászólásokat!
_q: nem esp32-vel fogom, szerintem sima uno-val. Az esp32 amúgy is csak 1V-ig tudna mérni, a servo-nak meg 5V kell, nem hiszem, hogy össze merném kötni a kettőt, mert véletlenül rákerül az 5V az adc-re, aztán kiszáll belőle a füst, ami működteti.
Gergosz2: nagyjából értem, amiről beszélsz, de ha esetleg kapcsolási rajzot is tudnál hozzá mellékelni, azért hálás lennék.Az analóg jel mérése nem kimondottan lenne fontos, az általad javasolt módszerrel ugyanis digitális jelet is elő lehetne állítani, ami tökéletesen megfelelne a célra, tudniillik lenne egy stall trigger jel, a köztes értékekre nem igazán vagyok kíváncsi. Milliohmos ellenállást honnan vegyek? Nem lesz az egész borzasztóan zajérzékeny?
" Egyrészt azért mert elpirítanál rajta I^2*R teljesítményt"
Nem lenne ott akkora veszteség, mert a servo-nak csak pillanatokra ugrik meg az áramfelvétele, de valóban, elfűtenék vele egy kis energiát.
"másrészt a motor villamos időálandóját is eltolod vele."
Ezt ki tudnád fejteni? -
Gergosz2
veterán
1 ohm elég sok lenne, nem tenném oda. Egyrészt azért mert elpirítanál rajta I^2*R teljesítményt, másrészt a motor villamos időálandóját is eltolod vele.
Én tennék be egy pár milliohmos söntöt, amit egy rail-to-rail műveleti erőlködőbe kötnék be. Még itt kéne hozzá feszültség referencia is, de ha nem control a cél akkor 3V3 nagy impedanciás leosztásával is megcsinálhatod. Aztán az opamp erősítését úgy lőném be, hogy 0 és 3V3 közötti jelet kapjak. A végére meg mehetne egy aluláteresztő szűrő, amit beköthetnél az AD bemenetére.
Nem hiszem, hogy szar AD lenne az ESP-be, ezzel jól kéne mennie.
-
gazso75
aktív tag
-
Sziasztok!
ESP32 + Nextion kijelzővel van valakinek tapasztalata?
Az a konkrét gondom, hogy ha a nextion.h library-t hozzáadom a kódhoz, akkor az összes library-re azt írja, hogy többszörös hivatkozás. (FastLED.h, WIFI.h, stb.)
Amit kiveszem a nextion-t, egyből minden rendebe lesz.Amit már próbáltam:
- library könyvtár törlése,
- teljes környezet eltávolítása, törlése.Kipróbáltam többféle nextion library-t, és mindegyiknél előforduló probléma.
Mindenből a legfrissebb van telepítve.
Kb így kezdődik a forráskód:
HardwareSerial Serial2(2);
#include <WiFi.h>
#include <FastLED.h>
#include <Nextion.h>
Nextion myNextion(nextion, 9600);
A furcsa, hogy ha kikommentelem ezeket a sorokat, akkor is előjön a hiba:
// HardwareSerial Serial2(2);
#include <WiFi.h>
#include <FastLED.h>
// #include <Nextion.h>
// Nextion myNextion(nextion, 9600);
Ötlete van valakinek?
Ha a hivatalos library-t használom, akkor még van 10 librrayvan bővül a duplikációs hibaüzenet lista: ITEADLIB_Arduino_Nextion
Próbáltam az Arduino SDK library kezelőjében letölthető Nextion library-t is, akkor is ugyanez volt a hiba.
-
Janos250
őstag
"The ESP32 has 4 SPI interfaces. SPI0 is used as a cache controller for accessing the EMIF and SPI1 is used in master mode only. These two SPI interfaces may be treated as a part of the core system and not be used for general purpose applications. However, SPI2 (called the HSPI from now on) and SPI3 (called the VSPI now onwards) are the interface ports of preference for interfacing to SPI devices."
http://iot-bits.com/esp32/esp32-spi-tutorial-part-1/
Ezt én úgy értelmezem, hogy kettőt lehet használni, de részemről ez csak sejtés.Ez is arra vall, hogy kettő használható:
https://github.com/espressif/arduino-esp32/blob/master/libraries/SPI/examples/SPI_Multiple_Buses/SPI_Multiple_Buses.ino -
BTminishop
aktív tag
sziasztok,
Wemos D1Mini ESP8266-tal fogok dolgozni egy projekten. Az a problémám, hogy kevés az analóg láb (konkrétan 1). Erre a problémára mi a tanács? Valamilyen Shield? Arra is már gondoltam, hogy egy arduino minivel kommunikál, ami végzi a méréseket, az esp pedig továbbítja a webszerverre az adatokat. Köszi a tippeket előre.
-
Azt én értem, hogy az a kérdés, de ha tudod is, hogy van kész megoldás, ami még tetszik is, és amúgy se otthon akarod összetenni, hanem venni szeretnél valamit készen, akkor miért nem veszel egy Sonoff-ot és alakítod át...
Az ESP32 csórikám amúgy is piszkosul unatkozni fog egy darab szenzorral. -
g0dl
addikt
Hali ESP32 ből szeretnék wifi alapon lekérdezhető szenzort építeni ( hőmérséklet páratartalom)
Létezik valamilyen kész táp és ház megoldás amibe ez belerakható?
Olyanra gondolok, hogy pl. a konnektorba bedugható és valami kulturált (és biztonságos) megjelenést biztosító cuccot lehessen belőle összerakni.
A legjobb lenne valami tescogazdaságos sonoff s26 szerű doboz. -
DanielLong
senior tag
Sziasztok!
Van esetleg itt valakinek tapasztalata Nordic és/vagy Texas Instrument BLE mikrokontrollerekkel? Gondolok itt CC2650 és nrf52840-re például. Van egy elég nagy projektem, amit korábban ESP32-vel készítettem el Arduino környezetben, de muszáj lesz kisebb fogyasztású utód után néznem. A CC2650-et próbáltam a napokban, be kell valljam a TI nálam nagyon mélyre került, miután a kétéves példa alkalmazásokat csak az akkori CCS, Compiler és BLE Stack verzióval tudtam lefordítani... Rengeteget szenvedtem vele, plusz számomra nevetséges, hogy nincs egy basic, egyszerű out-of-the-box példatár, amiből könnyen lehetne copy-pastelni. A Nordicot tervezem kipróbálni legközelebb.Az is érdekelne, ha valaki adna tippeket, hogy miből kupáljam magam ki beágyazott programozásban. Egyetemi anyagok, könyv címek jöhetnek angolul is. Az alapok megvannak, de mondjuk callbackek, RTOS taskok írása nem menne fejből, ezeket szeretném alaposan átvenni.
-
válasz
Johnny_vT #11996 üzenetére
Az megvan, hogy a BT is 2.4GHz-en kommunikál?
Minek kell külön arduino meg wifi modul, ha egy darab ESP-vel meg tudnád oldani az egészet? Nem kell router sem, az ESP access pointot tud létre hozni és telefonon rá is tudsz arra kapcsolódni.
Bár tény, hogy a wifi (tcp) kapcsolat overhead-je miatt bizonyos dolgoknál nagy lehet a késleltetés, de udp módban egy telefonos app-al ezt nagyjából ki lehet küszöbölni (ha máshogy nem megy). Lásd Victoryus kolléga korábbi hozzászólásait a témában.
Nyílt terepen elvileg 100m távolságot át tudsz hidalni vele, ha mégsem, akkor úgy tudom lehet belőle külső antennás változatot is venni. -
Janos250
őstag
válasz
DigitXT #11889 üzenetére
"az Arduino-féle String implementáció egy nagy sz"
"nem igazán ajánlott használni."
Így igaz. A nagybetűs String valóban gyengécske, de azt is mondjuk meg, hogy mit érdemes használni:
a kisbetűs string viszont jó.
Ismét mondom, hogy nem ötegapám UNO, NANO, MEGA lapja az, amit érdemes használni, hanem valami korszerűbb,
ami - mondhatni - nem drágább, de sokkal többet tud, és az UNO-ra, stb.-re írt programok símán áttehetők rá,
ha nincs benne valami nagyon hardware közeli dolog.
Mint már többször mondtam, én mostanság az ESP32-t használom.
5 dollárért megvehető postával együtt.
https://www.banggood.com/Geekcreit-30-Pin-ESP32-Development-Board-WiFibluetooth-Ultra-Low-Power-Consumption-Dual-Cores-ESP-32-ESP-32S-Board-p-1461896.html?rmmds=search&cur_warehouse=CN
Vagy az UNO mintájára:
https://www.banggood.com/LILYGO-TTGO-ESP32-WiFi-bluetooth-Board-4MB-Flash-UNO-D1-R32-Development-Board-p-1163967.html?rmmds=search&cur_warehouse=CN
Megnéztem a régi Arduino String osztályát. Bizony elég sok tagfüggvény nincs benne, ami a C++ -ban benne van. Példának az appendet vettem,
hogy a részletesebb infók netről megtekinthetők legyenek.
Ha már itt tartottam, még pár - szintén netről szedett - példát is beleraktam.
A mostani C++11 számos olyan dolgot is tartalmaz, amit az ősrégiek nem.
Használhatjuk az alábbiakat:#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
Ezek közül is raktam be példákat. Hogy miért jobb pl. az array, achrono
, athread
használata? Mert ez szabványos, bárhol ugyanígy fut, nem olyasmit tanulunk meg, amit máshol nem tudunk használni.
Íme:
Eredetileg ez egyetlen program lenne, de PH szerkesztője valamiért darabokra szedte.#define __cplusplus 201103L
#include <iostream>
#include <string>
#include <sstream>
#include <array>
#include <iterator>
#include <chrono>
#include <ctime>
#include <thread>
//ESP32 Dev Module
void setup() {
//http://www.cplusplus.com/reference/string/string/append/
std::string str;
std::string str2="Writing ";
std::string str3="print 10 and then 5 more";
// used in the same order as described above:
str.append(str2); // "Writing "
str.append(str3,6,3); // "10 "
str.append("dots are cool",5); // "dots "
str.append("here: "); // "here: "
str.append(10u,'.'); // ".........."
str.append(str3.begin()+8,str3.end()); // " and then 5 more"
// str.append<int>(5,0x2E); // "....."
std::cout << str << '\n';
/*
//A String (nagy S) a regi Arduino string kezelese
// ebben nincs append, forditasi hibat jelez
String xstr;
String xstr2="Writing ";
String xstr3="print 10 and then 5 more";
// used in the same order as described above:
xstr.append(xstr2); // "Writing "
xstr.append(xstr3,6,3); // "10 "
xstr.append("dots are cool",5); // "dots "
xstr.append("here: "); // "here: "
xstr.append(10u,'.'); // ".........."
xstr.append(xstr3.begin()+8,xstr3.end()); // " and then 5 more"
*/
//Ez is egy netrol vett pelda
//https://stackoverflow.com/questions/2066184/how-to-use-c-string-streams-to-append-int
std::stringstream stream("Something ");
stream.seekp(0, std::ios::end);
stream << 12345;
std::cout << stream.str();
// C++11 array
//https://en.cppreference.com/w/cpp/container/array
// construction uses aggregate initialization
std::array<int, 3> a1{ {1, 2, 3} }; // double-braces required in C++11 prior to the CWG 1270 revision
// (not needed in C++11 after the revision and in C++14 and beyond)
std::array<int, 3> a2 = {1, 2, 3}; // never required after =
std::array<std::string, 2> a3 = { std::string("a"), "b" };
// container operations are supported
std::sort(a1.begin(), a1.end());
std::reverse_copy(a2.begin(), a2.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
// ranged for loop is supported
for(const auto& s: a3)
std::cout << s << ' ';
// C++11 chrono
//https://en.cppreference.com/w/cpp/chrono
auto start = std::chrono::system_clock::now();
std::cout << "f(42) = " << fibonacci(42) << '\n';
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
std::time_t end_time = std::chrono::system_clock::to_time_t(end);
std::cout << "finished computation at " << std::ctime(&end_time)
<< "elapsed time: " << elapsed_seconds.count() << "s\n";
// C++11 thread
//https://en.cppreference.com/w/cpp/thread
//https://thispointer.com/c-11-multithreading-part-1-three-different-ways-to-create-threads/
std::thread threadObj1(thread_function);
std::thread threadObj2(thread_function);
if(threadObj1.get_id() != threadObj2.get_id())
std::cout<<"Both Threads have different IDs"<<std::endl;
std::cout<<"From Main Thread :: ID of Thread 1 = "<<threadObj1.get_id()<<std::endl;
std::cout<<"From Main Thread :: ID of Thread 2 = "<<threadObj2.get_id()<<std::endl;
threadObj1.join();
threadObj2.join();
}
void loop() {
}
// mert a chrono minta hasznalja
long fibonacci(unsigned n)
{
if (n < 2) return n;
return fibonacci(n-1) + fibonacci(n-2);
}
//// mert a thread minta hasznalja
void thread_function()
{
std::cout<<"Inside Thread :: ID = "<<std::this_thread::get_id()<<std::endl;
}
-
zsolti_20
senior tag
Fuhh köszönöm mindenkinek, nem hittem volna, hogy ennyi válasz érkezik majd.
Az ESP8266-ról le kellett mondanom, mert kifogytam a pinekből. Viszont a megán bőven van minden ami csak kell. Azért is választottam az utóbbit mert több leírást találok hozzá.
Nem értem az ESP8266-on miért csak D8-ig vannak a digitális pinek. -
Janos250
őstag
válasz
zsolti_20 #11880 üzenetére
Mindig azt szoktam mondani, hogy mi a csudáért akarjuk egy nanoban, unoban tornászmutatványokat végezve elhelyezni az alig férő kódot, amikor sokkal korszerűbb elemei is vannak az Arduino vonalnak. És ez nem a mega, hanem pl. STM32, ESP8266, ESP32. Ezekben ugyanaz a program ugyanúgy fut le (általában), de sokkal nagyobb a memória, több a perifériás lehetőség, vagyis minden szempontból jóval korszerűbbek úgy, hogy gyakorlatilag nem, vagy alig drágábbak, mint pl. egy UNO.
-
Janos250
őstag
-
Janos250
őstag
válasz
tibi-d #11872 üzenetére
Impulzus hossz? Azt 4 digit pontossággal bőven lehet.
Mi a bemenő jel? Analóg, vagy digitális. Ha analóg, akkor abból hossz előállítható. Milyen gyakran kell küldeni a jelet, mennyire kell, hogy realtime legyen? Pl. egy ESP12E-t (vagy mást) az idő zömében lightsleep állapotban tartasz, akkor meglehetősen keveset fogyaszt. Amikor meg működik, ha ki van kapcsolva a WiFi (modem sleep), akkor 15 mA körül fogyaszt, átlagban nagyon jó lesz. Arduino alatt van is kezelő könyvtár.Vagyis nagyon kevés az info ahhoz, hogy valaki bölcset javasoljon!
-
zsolti_20
senior tag
Elgondolkodtam ezen az egeszen es nagy valoszinuseggel a memoriabol futok ki. Mikor a kodot toltom fel akkor azt irja hogy keves a memoria es stabilitasi problemak lehetnek. 90% folott vagyok mar. Probaltam oled kijelzovel de azzal mar nem birkozik meg mert 111%-ot ir.
van itthon egy esp8266-om. Mekkora munka lenne arra atkoltoztetni mindent? Az esp8266 nagyobb memoriaval rendelkezik?
-
Sziasztok! Megjött az Esp32-cam boardom, és most szembesültem a ténnyel, hogy nincs hozzá ftdi programozóm (na jó, ez túlzás, csak gondoltam megoldom, ahogy szoktam): eddig jól elboldogultam nélküle, egy arduino uno-val szoktam programozni, amit kell, de ennek ugyebár 3.3V kell, és nem szeretném megsütni idejekorán... Meg tudom oldani ellenállásosztóval, meg 3.3V táppal, vagy vennem kell egy programozót? Tudtok ajánlani olyat, ami kimondottan 3.3V lapokhoz való? Esetleg belföldről, hogy ne kelljen rá 2 hónapot várnom?
Köszi előre is!
-
_q
addikt
Én ilyet használok ESP32-vel, ezzel a függvény könyvtárral. Nem tudom mega-val menne-e. Ahogy nézem a mintakódokat a TFT könyvtár kell meg az SPI, de az SPI az lehet szerintem mega is, lényeg a portokat kell jól bekonfigolni.
Sajnos az első kijelzőm fél év után cserés lett. Ha 27 fok körül volt a hőmérséklet, akkor csíkozott a kijelző. A második kb 3 hónap óta még jól működik.
Mindenképpen SPI-os kijelzőt javaslok az egyszerűbb összekötés és programozás miatt. Valamint ne a kijelzőt vedd meg először, hanem találj megfelelő könyvtárat és ahhoz vegyél kijelzőt.
-
-
_q
addikt
Így kezdődik pedig:
#if defined(ESP8266)
Tehát ha nincs definiálva akkor ESP32 könyvtárakat importál.
Amit linkeltél 8266-ra van, ha le akarom fordítani akkor hasonló hibát dob:
In file included from D:\DownloadTemp\WiFiManager-development\examples\OnDemand\OnDemandConfigPortal\OnDemandConfigPortal.ino:7:0:
C:\Users\T\Documents\Arduino\libraries\WIFIMANAGER-ESP32-master/WiFiManager.h:36:22: error: 'const char HTTP_HEAD []' redeclared as different kind of symbol
const char HTTP_HEAD[] PROGMEM = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>{v}</title>";
^
In file included from C:\Users\T\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WebServer\src/WebServer.h:30:0,
from C:\Users\T\Documents\Arduino\libraries\WIFIMANAGER-ESP32-master/WiFiManager.h:21,
from D:\DownloadTemp\WiFiManager-development\examples\OnDemand\OnDemandConfigPortal\OnDemandConfigPortal.ino:7:
C:\Users\T\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WebServer\src/HTTP_Method.h:10:3: note: previous declaration 'HTTPMethod HTTP_HEAD'
HTTP_HEAD = 0b00100000,
^
Multiple libraries were found for "WiFi.h"
Used: C:\Users\T\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
exit status 1
Error compiling for board ESP32 Dev Module. -
_q
addikt
Akkor lehet én értettem félre, de nekem kicsit másnak tűnt a linkelt minta kód.
Wifimanageren belül az OnDemandConfigPortal.ino lenne az ami nekem kell ha nem tévedek a sok mintakód közül.
A hiba:
In file included from C:\Users\T\Documents\Arduino\libraries\WIFIMANAGER-ESP32-master\examples\OnDemandConfigPortal\OnDemandConfigPortal.ino:14:0:
C:\Users\T\Documents\Arduino\libraries\WIFIMANAGER-ESP32-master/WiFiManager.h:36:22: error: 'const char HTTP_HEAD []' redeclared as different kind of symbol
const char HTTP_HEAD[] PROGMEM = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>{v}</title>";
^
In file included from C:\Users\T\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WebServer\src/WebServer.h:30:0,
from C:\Users\T\Documents\Arduino\libraries\WIFIMANAGER-ESP32-master\examples\OnDemandConfigPortal\OnDemandConfigPortal.ino:11:
C:\Users\T\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WebServer\src/HTTP_Method.h:10:3: note: previous declaration 'HTTPMethod HTTP_HEAD'
HTTP_HEAD = 0b00100000,
^
Multiple libraries were found for "WiFi.h"
Used: C:\Users\T\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
exit status 1
Error compiling for board ESP32 Dev Module. -
_q
addikt
Szerintem ez nem az amire én gondoltam.
Alapból van egy ESPNow kapcsolat, így a fő ESP amin fut a webserver az AP módban van. Ez így megy is, viszont a routerre fel kell csatlakozzon az NTP lekérés miatt és mivel a router hálózatán keresztül akarom elérni a webservert. Na most a routerre csatlakozás nekem direkt módon, a kódba beírva megy. Ha viszont egy másik routerre akarok csatlakozni, mert vagy máshol van az eszköz vagy routert cserélek, akkor be kell írnom a router új SSID-jét, ehhez új kódot kell fordítani és rátölteni az ESP-re.
Van a wifimanager opció ami elvileg ebben segítene, de nem tudom rátölteni az ESP-re mert hibát ír ki rátöltésnél. Ez lenne amit szeretnék, van kép illusztráció is hozzá.
-
Teasüti
nagyúr
Gondoltam annyit tesz, hogy Non Volatile Storage. De csak tippelek.
Ez Arduino környezetben az EEPROM, vagy ESP-nél annak a szimulációja a ROM-ban.SPIFFS meg amennyire értem egy csatolt partíció, amit futás közben lehet írni/olvasni, mint egy SD kártyát.
Itt lehet letárolni mondjuk a webserver-hez használt fájlokat, ha basic html-nél többre volna szükség. Mondjuk képek beillesztésére, vagy ilyesmi. -
Konkrét példám sajnos nincs, de ami neked kell, az könnyen összeollózható az ESP32-es Arduino IDE WiFiAccessPoint, NVS flash példákból. Én ezt csinálnám:
1/ Program megnézi, hogy van-e az NVS-ben letárolt AP név.
1/a Ha igen, csatlakozik, profit.
1/b Ha nem, vagy nem tud csatlakozni folyt.
2/ Indít egy saját AP-t.
3/ User megadja az AP SSID-t/pass-t.
4/ Letároljuk NVS-ben.
5/ Visszatérünk 1-re. -
_q
addikt
Tud valaki adni minta kódot hogyan tudnám megoldani, hogy egy konfig webes felületen keresztül tudjak az esp32-vel felcsatlakozni a kívánt wifi hálózatra, ahol majd a webserver-t elérem? Jelenleg direkt módon adom meg a wifi elérhetőséget, viszont router csere esetén új kódot kellene fordítanom. WifiManager nem nagyon akar lefordulni.
Csinált valaki már ilyet?
-
gazso75
aktív tag
Urak,
Gondolkozom a Golf 5-ösöm autórádiójának okosításán. Nincs benne telefon kihangosítás.
A terv, hogy egy BT lapka erősítővel + mic-al + valamilyen vezérlő ( nano, esp* ). Ha zenehalgatás, vagy telefonálás indulna, akkor a vezérlő egy relével leválasztaná a fejegység hangszórókimenetét, és átkapcsolná az erősítőre. Valamilyen késleltetés kellene, hogy ha mondjuk 5 sec-ig nem szólal meg senki a telefonban, akkor ne kapcsolgassa oda-vissza.
Nemtudom értehető e gondolatmenetem. Foglakozott már valaki valami hasonlóval ? -
_q
addikt
ESP32-vel készült binárist hogyan lehet flashelni a legegyszerűbben? El szeretném kerülni az újrafordításból eredő problémákat, ezért készítettem binárist a kódból.
-
válasz
Gergosz2 #11578 üzenetére
Ok, köszi. Még csak a terezésnél vagyok. Az SD kártya támogatás, csak felmerült, hogy ha már a többi kész, akkor ezt is kipróbálom.
#11579 Janos250
Egyelőre összesen 1 szoba, ahol hozzá tudok nyúlni az áramhoz az asszony rosszallása nélkül.
Olvastam a SONOFF dolgokról, de nekem ez most csak játék, maradok vezetéknél mert nincsenek nagy távolságok az érzékelők és az ESP32 között.A leghosszabb vezeték kb 5 méter lesz a kültéri hőmérséklet érzékelő felé. Minden érzékelő utp vagy telefon vezeték lesz. (Olvastam egy fórumon, hogy egy srác 10 db DS18B20-at kötött rá egy ESP32 lábra. A legtávolabbi pedig 15m-re volt, és egyedül az ellenállásokra kellett figyelnie, mert 4-5 méternél már a vezeték ellenállását is figyelembe kell venni. Ő UTP kábelezést használt és állítólag tökéletesen működik neki.)
UTP kábelem van bőven, így én is azt fogok használni.A 4-es relét csak azért vetem, mert majdnem egy árban láttam az 1 darabossal. Ezzel egyelőre csak a szobai lámpát fogom vezérelni.
A redőnyt vezérelném még szívesen, de sajnos ahhoz nagyobb anyagi ráfordítás kellene.
Meg nagyon ötletem sincs, hogy mire használhatnám még a smart home rendszert aminek jelen körülmények között lenne értelme. -
válasz
Janos250 #11577 üzenetére
Azt hittem azért írtad, mert azt írtam a kollégának, hogy túlzás nano helyett esp32, de én is tudom, hogy az esp32 jelenleg az arduino szent grálja.
Csak azért írtam, mert úgy gondolom, hogy aki arduino-zik, sosem árt megtanulni kódot optimalizálni, meg kihozni a maximumot adott hardverből, mert az erős hardver, a végtelen erőforrás nagyon ellustítja a kódolókat, lásd: mobil appok féktelenül növekvő memóriaigénye.
-
Janos250
őstag
Szerintem a kód el fog férni. A plafon, ami kocogtatja a fejed az lesz, hogy a különböző helyen elhelyezett dolgok adatait hogyan juttatod el az ESP32-höz. Ha vezetéken, akkor az egy madzag gubanc lesz. Ha a szenzorok egy részének az adatait WiFi-n akarod eljuttatni, akkor azokhoz kell valami WiFi képes eszköz, pl. ESP8266 a szokásos.
És akkor már ott vagy, hogy egyszerűsíti a dolgod, ha nem elemi szenzorokat vásárolsz, hanem olyat, amiben eleve bótilag ott van a kezelő ESP8266 (vagy ESP8255, amit praktikusan ugyanannak tekinthetünk).
Ilyenek az ebay-en a Sonoff ("Switch ON/OFF") cuccok, érdemes megismerkedni velük. Pl. olyan, ami 230V-os relét kapcsol, és mellesleg van benne hőmérséklet érzékelő és páratartalom mérő. Ezek a Sonoffok - és újabban más hasonló eszközök - ESP8266-ot használnak, és készítettek rájuk egy jól használható, rugalmas, C++-ban megírt, forrásnyelven elérhető rendszert, aminek Tasmota a neve.
Sokan a kész lefordított bináris felvitelével kínlódnak, én mindig az Arduino felületen a szokásos módon lefordítom, feltöltöm, mert akkor a forrásnyelvű programba be tudom írni a saját, specifikus dolgokat, pl. saját WiFi router jelszava, stb. Nagyon kényelmes és rugalmas rendszer, érdemes vele megismerkedni, ajánlom általánosan mindenkinek! Ha egyszer feltöltöttél madzagon egy Tasmota rendszert, onnan kezdve - ha változtatni akarsz - már WiFi-n keresztül megy a feltöltés.Továbblépve:
Aztán, ha nagyon sok mindent akar az emberfia használni, akkor már a kisebb gubanc érdekében a következőt használják:
MQTT !!!!
Ez egy ilyen feladatokra kidolgozott rendszer, aminek a lényege:
Minden szenzor nem oda küldi az adatot, ahol arra szükség van, hanem mindent egy központi szerverre (MQTT szerver). Ezen regisztráljuk be, hogy melyik szenzor adatát kinek küldje tovább. Pl. ha a hőmérő fagyot mutat, akkor küldje egy Sonoff relének, vagy konnektornak, ami bekapcsolja a fűtést. Ez nagyon nagy fokú rugalmasságot biztosít, mert nem kell a programokba belenyúlni változtatás esetén, hanem óhajunkat az MQTT szervernek küldjük neten.
Jelenleg erre az MQTT szerver célra a málnát használják, én is azt várom, hogy valaki csinálja már meg ESP32-re is.
Na, és persze akkor már egy lépés, hogy valamelyik okosotthon rendszert is használjuk, pl. Home Assistant.Na, megint szómenésem volt, ezeket nem azért írtam, hogy most azonnal ezeket fogod használni, hanem lásd Te is, és mások is, akik ilyesmiben gondolkodnak, hogy mi a jelenleg használatos metodika.
-
Janos250
őstag
válasz
Izeka82 #11573 üzenetére
Kezdők tévedése, hogy az Arduinonak van nyelve. Nincs Arduino nyelv, csak C++ van. A szabad C++ fordító régebbi, vagy újabb verzióját használják az Arduino kompatibilis lapok.
Attól Arduino, hogy meg van benne írva sok osztály, stb. előre, tehát olyan, mint egy szabvány. Például adott módon kell a pinekre írni, olvasni, megadni, hogy input, vagy output lesz, stb, de ezek nem nyelv részek, hanem előre megírt dolgok, amit minden arduinós laphoz megírnak, tehát ugyanúgy kell használni. Aztán persze vannak controller specifikus dolgok, amik az adott controller jellemzői, azoknak a kezelésére - általában - megírja a gyártó a kezelő osztályokat, miegymást, ami természetesen csak az adott controller jellemzője.
Tehát amikor írunk egy programot, nem úgy kell gondolkodni, hogy hogyan írjuk ezt "Arduinóban", hanem, hogy hogyan írjuk ezt C++-ban. Tipikus példa erre pl. az ESP32 párhuzamos programozása. Lehet használni a freeRTOS specifikus módokat, de lehet a szabványos C++(11) párhuzamos programozási dolgait is. Ez utóbbi más controlleren is fog működni, ha elég korszerű C++ fordítót használ, míg az előbbi csak és kizárólag az ESP32-n. Más kérdés, hogy az előbbi rugalmasabb, több mindent tudunk könnyedén beállítani (pl. melyik magon fusson, milyen prioritással, stb.)Ja, és még valami: kérdezni nem szégyen, itt mindenkinek segítenek, itt nem divat az "olvasd el a dokumentációt" válasz.
-
Sziasztok!
ESP32-vel való ismerkedésemet egy LED szalag egyszerű be és kikapcsolásával kezdtem. Azóta az működik, és kicsit tovább is fejlesztettem, mert egy fapados webes felületen a színeket is meg tudom változtatni. a kódon még biztos lenne mit egyszerűsíteni, ami meg is fog történni, de majd csak az új projekt keretén belül.
Most kicsit nagyobb fába vágom a fejszém. ESP32-vel szeretnék egy egyszerűsített smart home rendszert csinálni:
- 3,5" Nextion értintő kijelző
- 1 db ablaknyitás érzékelő
- LED szalag vezérlés (meglévő szalag + kód felhasználásával)
- 2 hőmérő (ds18b20)
- várható hőmérséklet lekérése (van erre API szolgáltatás)
- 4 relés modul kezelése
- 6 nyomógomb a reléhez, a LED szalaghoz, és az LDC kijelző ki-be kapcsolásához
- android applikácó (MIT App Inventor)
- SD kártya (elsődlegesen a webes felület HTML fájljaihoz)Azt hiszem el leszek vele egy darabig, csak egy a félelmem, hogy a kód nem fog elférni az ESP32 flash-ben.
-
-
zsolti_20
senior tag
Nem tudom csak vesztegettem az időm vagy sem az arduinoval, de majdnem egész este ébren voltam hogy végezzek a szoftverrel. Mire kb 90% lett és a végére értem annyi mindent kellene módosítani egy új kártya regisztrálásához hogy az rengeteg, és minden felhasználó megdobná a szoftvert elég sok sorral. Így kukázom az arduinos megoldást és hallgatok rád amit kellett volna az első perctől aztán egy ESP8266-ra alapozok adatbázisssal, mert másképp ez nem fog menni. Max arra jó volt az egész hogy megismertem az RFID és az USB író/olvasó működését.
-
Janos250
őstag
válasz
zsolti_20 #11557 üzenetére
Ha C#-et már használtál, akkor rossz a fogalmazás:
"De mikor belekezdtem az ESP ismerkedésébe kicsit kevésnek éreztem magam hozzá"
C# mellé ez lenne a helyes fogalmazás:
"Azért nem nanora építettem, hanem ESP-re, mert a nanohoz kicsit kevésnek éreztem magam"
Ugyanis az ESP32 compilere a C++(11) GNU compilere, ami eléggé korszerű, és ha a C#- ból kiveszed a Microsoft dolgokat, máris azt kaptad! Az már csak hab a tortán, hogy a többi arduinoval való kompatibilitás érdekében meg van írva egy csomó osztály amit használhatsz a "szabványosak" mellett, definiálva van egy csomó konstans, objektum, és a freeRTOS használatához van egy halom API. -
_q
addikt
-
válasz
zsolti_20 #11542 üzenetére
Túlbonyolítjátok. Állapotgép az mindenképp kell (nem nagy dolog, csak a neve ijesztő
), de ha esp lesz a hardver, ott a delay() nem hogy kerülendő, hanem egyenesen kívánatos, ugyanis nem akasztja meg a futást, hanem ilyenkor végzi el az eszköz pl. a wifi hálózat kezelésével kapcsolatos feladatokat.
Interrupt nem feltétlenül kell, mert a programnak igazából ez az egyetlen feladata van, a gombok figyelése.A gombok pergésmentesítéről viszont ne feledkezz el! Jó példakódokat lehet hozzá találni, akár itt a topikban is.
-
_q
addikt
Pár hete kérdeztem mi lehet az oka annak, hogy az ESP32 webserver eddig jól működött, most meg néhány óráig jó, de utána nem lehet elérni. Az esp nem fagyott ki, mivel a kijelzőt kezelte és mérte a hőmérsékletet is, egyedül a webserver nem volt elérhető pár óra után.
Úgy néz ki meg van a hiba oka, legalább is 3 napja gond nélkül megy, előtte meg 1 napot se bírt. Itt a link hozzá: [link]. Ez alapján a wifi küldés buffert kell átírni az sdkconfig.h-ban.
A kódot még tavaly ősszel írtam, nem tudom akkor az Arduino környezetből 1.0.2 mehetett talán vagy 1.0.1. Lehet ott még más volt ez az érték. Pár hónapja újratelepítettem az egész rendszert és az 1.0.3-nál jött elő a hiba. Ha esetleg más is hasonló hibába esne, itt hagyom és a kulcsszavak: webszerver, webserver.
-
válasz
zsolti_20 #11526 üzenetére
Hát persze, ezt írtam is tegnap. A belső 4MByte flash ketté osztható, pl. 1M programkód +3M SPIFFS fájlrendszer. Ezen a belső SPIFFS fájlrendszeren tudod létrehozni az sqlite3 adatbázist. A pc/mobil eszköz csak mint kliens kapcsolódik fel wifi-n keresztül, az ESP teljesen autonóm módon működik, még AP módban is tud működni, ha mondjuk nincs router, amire kapcsolódjon, akkor létrehoz egy saját wifi hálózatot, amire mondjuk telefonnal rá tudsz kapcsolódni.
Én a helyedben nem Esp32-vel csinálnám, hanem Esp8266-tal, mert az Esp32 SPIFFS kezelő része szerintem még béta állapotú, nálam legalábbis gyakori adatvesztést produkál, ami egy játéknál elmegy, de komolyabb feladatnál már okozhat kényelmetlenséget. -
válasz
zsolti_20 #11524 üzenetére
ESP32 az ESP8266 továbbfejlesztett változata. Van benne BLE, több I/O port, kétmagos CPU, ami valódi többszálas futtatást is lehetővé tesz, és RTOS fut rajta. Cserébe az ESP8266 olcsóbb (amúgy mindkettő filléres tétel a tudásához képest), a lábai 5V toleránsak, tehát szintillesztés nélkül lehet rá 5V szenzorokat miegyebet kötni, több és kiforrottabb library-t találsz hozzá
Új hozzászólás Aktív témák
Hirdetés
- A Samsung gyártja az első 2 nm-es Qualcomm lapkát?
- Mesterséges intelligencia topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Anglia - élmények, tapasztalatok
- VR topik
- Garmin Forerunner 970 - fogd a pénzt, és fuss!
- Ingatlanos topic!
- Gaming notebook topik
- 3D nyomtatás
- exHWSW - Értünk mindenhez IS
- További aktív témák...
- Új MSI KATANA 15 Gamer Tervező Laptop 15,6" -35% i7-13620H 10Mag 16/1TB RTX 4060 8GB FHD 144Hz
- HP Omen - 27" IPS - UHD 4K - 144Hz 1ms - NVIDIA G-Sync - FreeSync - HDR 400 - USB-C - KVM Switch
- Garanciális MSI Katana GAMER 15,6"240Hz!i5 12500H(16X4,5Ghz)RTX 3060 6 GB VGA,32-64GB RAM/1TB SSD
- Bivaly MAGYAR Lenovo P1 gen2 (Core I7 32 Gb 1Tb 15" 4K 4Gb Nvidia) Laptopom eladó!!!
- HP ProBook 640 G8, 14" FHD IPS Touch, I5-1145G7 CPU, 16GB DDR4, 256GB SSD, WIN 11
- Azonnali készpénzes GAMER / üzleti notebook felvásárlás személyesen / csomagküldéssel korrekt áron
- Azonnali készpénzes INTEL CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- AKCIÓ! Apple Macbook Air 13" 2020 M1 8GB 256GB SSD notebook garanciával hibátlan működéssel
- LG 65QNED86T / 65" - 164 cm QNED / 4K UHD / 120Hz & 3ms / HDR 10 Pro / FreeSync Premium / HDMI 2.1
- iKing.Hu - Xiaomi 14 Ultra - Ultra White - Használt, karcmentes
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest