Fórum témák
- • Alternativ HE találkozó(k)
- • LED-es index
- • Autós erősítős kérdések, problémák
- • Rádióamatőrök topikja
- • Robotfűnyíró vagy fűnyíró robot
- • Felajánlás, azaz ingyen elvihető
- • Erősítő mindig és mindig
- • Villanyszerelés
- • Klíma szervizelés, javítás
- • Számítógép hiba, de mi a probléma?
- • Autóelektronika
- • MOSFET-ek
- • RP2040
- • TV hiba, mi a megoldás?
- • Rendelés külföldről (eBay - Paypal)
- • Fejhallgató erősítő
- • Espressif mikrokontrollerek
- • WLAN router
- • IP kamera
- • Hawksford Error Correction
- • Kávéfőzőgép hiba
- • Villanymotor bekötése
- • LCD-TFT tápegység probléma
- • Teljesítmény -LED, powerLED (pl. Cree, Luxeon) vezérlése
- • Forrasztópákák - melyik miért jó
- • Kapcsolóüzemű táp 230V-ról
- • LED-es világítás
- • Kamerás megfigyelőrendszer
- • Arduino
- • Kapcsolóüzemű tápegység
- • Feszültségszabályzó motorba
- • Sárga Kazettás Piaci Nintendo (8bit)
- • Elektromos gyerekautò
- • Napelem alkalmazása a lakás energia ellátásában
- • Li-Po - Li-ion akkumulátor és töltője
- • Vásárlás, hol kapható?
- • Kompresszor építés
- • LCD TV probléma
- • Gázkazán vezérlő hibák
- • Elektroncső
- • Szárítógép problémák
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Villanypásztor
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Dansk 3f-T3535, és minden, ami vele kapcsolatos
- • Házilag építhető fémkereső
- • Mi mivel oldható (hígítható) vagy ragasztható?
- • Hűtőgép probléma
- • Hordozható, bluetooth hangszóró
- • V-FET és SIT erősítő kapcsolások
- • TECHNICS erősítők, javításuk
- • Westen 240 Fi gázkazán hiba
- • CNC építése házi alkatrészekből az alapoktól
- • Ponthegesztő készítése házilag
- • Motor fordulatszám szabályzó
» Több friss téma
|
Fórum » Espressif mikrokontrollerek
Milyen nyelven, milyen üzemmódban nyitottad meg a WiFit?
Ha a kódod is feltöltenéd, akkor könnyebb lenne megfejteni a hibád... Természetesen az otthoni wifi azonosítóit töröld ki mielőtt feltöltöd
Meg van a forráskódja?
Esetleg van konfigurációs weboldala?
Szerintem a wifi AP+STA módban van, ezt kellene megszüntetni, csak STA módra...
Ha arduino alatt van a forrás akkor keresd a WiFi.mode(******): set mode to WIFI_AP, WIFI_STA, WIFI_AP_STA or WIFI_OFF
Valószínűleg az van amit pipi fórumtárs írt. AP+STA módban van. AP (acces Point) STA(Station), vagyis vegyes módban. A kódban át kellene írni a beállítást. Úgy emlékszem ezt egyébként sem szereti az ESP mert csak 1 Wifi csatornája van vagyis felváltva üzemelteti.
Sikerült kinyírnom a 25Q80 flash memory-t egy ESP01-es modulon. ( kijött belőle a működtető füst, 5V-os tápfesz hatására )
Van EEPROM programozóm amivel fel tudom programozni az új flash-t ...
De mit is írjak rá? Kicsit elvesztem a firmwarek között.
Ahogy nézem többféle létezik, de hogy melyik mire jó, vagy nem jó arra még nem jöttem rá.
Egyáltalán számít-e valamit, ha Arduino IDE alól úgyis töltök rá programot.
Lehet-e találni komplett bin fájlt?
Ja ha már itt tartunk: Eredetileg valami AT-s firmware volt rajta ... de ha már töltöttem rá programot akkor az AT parancsokra nem reagált. Lehet valahogy törölni a rátöltött programot, hogy ismét működjenek az AT-s parancsok?
Az 5V nem nyírta ki az ESP-t is?
1. Nem kell hozzá programozó, az ESP fel tudja programozni. Semmit sem kell feltölteni, az ESP soros bootloadere benne van fixen az MCU-ban.
2. Ha Arduinoval akarod használni, akkor semmit teendőd nincs. Rakd fel az új flasht, töltsd fel rá a porgramodat, és működik.
3. Ha AT parancsokkal akarod használni, akkor töltsd le az AT parancsor firmwaret, és töltsd fel rá.
Gondolom USB-UART adaptered az van.
Sziasztok!
ESP modult tudok valahogy kvázi realtime szinkronizációra kényszeríteni egy webszerverrel? Eddig amit találtam, azok a html requestek, de nem tudom mennyire jó ötlet 0.1-0.4 mp-nként lekérni a szerverről akármit is (habár tanulós projekt és nem lesz ilyen tényleges forgatókönyv, de szeretném megcsinálni, hogy akár ezres nagyságrendű kütyü is mehessen egy szerverről, elvégre a projekt célja a tanulás).
Bármilyen megoldásnak, vagy véleményezésnek (hogy egy sima adatbázis lekérés-beírás egy php szkript-tel járható út e, illetve ha igen, akkor mik a limitációk) örülnék.
Pár szó a projekt jelenlegi állapotáról: honlapon keresztül szeretnék vezérelni, akár külső hálózatról is ESP-n keresztül Arduinot, minden adatot szerver oldalon SQL-be mentenék, PHP szkript kezelné a lekéréseket, szerver oldalról frissítene az ESP. A hozzászólás módosítva: Feb 11, 2020
Kicsit bővebben?
Csak helyi hálón vagy neten keresztül is el akarod érni?
Mitt kellene szinkronizálni amihez 0.1 mp kell?
Mit értesz ezres nagyságrendű kütyü alatt?
Idézet: „Csak helyi hálón vagy neten keresztül is el akarod érni?”
Globálisan, ez lenne a szerepe a külső webszervernek, hogy ne kelljen ESP-nként konfigurálni a router-t, hogy elérhető legyen.
Idézet: „Mitt kellene szinkronizálni amihez 0.1 mp kell?”
Alapvetően házautomatikai felhasználás a cél rövidtávon, fény dimmelés, redőny, stb., praktikus lenne pl. a fény változását nem másodpercek múlva látni (tudom, hogy belső hálózatról közvetlen elérem az ESP-t, delay nélkül vezérel, de a jelenlegi kérdés, hogy erről a szintről hogy jutok tovább egy univerzálisabb megoldás felé).
Idézet: „Mit értesz ezres nagyságrendű kütyü alatt?”
Egy általános megoldást, ami keretek közt skálázható, ha forgalomba dobnám a terméket (nem akarom), akkor további struktúrális fejlesztés, mélyebb ismeretek nélkül elküzdene az első pár ezer darab szinkronizációjával.
További pár szó a projektről: ESP modul lenne az összekötő elem az adatbázis és a központi kontroller (jelenleg Mega, de lassan átköltöztetem egy 32bites fejlesztő környezetre) között, a kontroller RF-en keresztül vezérli a végrehajtószerveket.
Én nem direkt szeretnék utasítást adni a kontrollernek, hogy csinálja ezt és ezt, hanem a honlapon írok át dolgokat, azt elmenti az SQL és azt kéri le valahogy a kontroller. A hozzászólás módosítva: Feb 11, 2020
Tobb lehetoseged is van, en egyreszt MQTT-t javaslom hogy nezz utana (viszont az nem webes technologia), masreszt meg ha ragaszkodsz a webes dolgokhoz, akkor pedig websocket-en keresztul tudsz szinte realtime kommunikaciot implementalni. Mind a kettohoz van talalsz libet ESP-hez is, meg szerveroldali komponenseket.
Köszönöm a választ, ilyen kulcsszavak voltak a kérdéseim célja. A hozzászólás módosítva: Feb 11, 2020
Ahogy profikam fórumtárs írta websocket a megoldás. Annyit megjegyeznék, hogy házautomatikához is felesleges a 0.1 másodperc. Bőven elég másodpercenként küldeni, de akár még az fölé is lehet menni. Mit veszítesz ha 1-2 másodperces adatot látsz, vagy ha valamit beállítasz 1-2 másodpec késéssel reagáljon? Semmit. A másik megoldás egy cloud-szerver. Azokat sem kérdezik másodpercenél rövidebb időnként. Pl. mi több helyen használunk WiFi termosztátot. Az is cloudszerveres és kb 1 sec a reagálása az appon történő beállítástól.
Sziasztok! Csináltam egy kaptármérleget,és esp küldené az adatokat wifin a thingspeak-re.Mikor bekapcsolom,csatlakozik a routerhez,és el is küldi az adatokat,de a következőt,már nem küldi,ezt írja a soros porton:ets Jan 8 2013,rst cause:5, boot mode 1,6)
és nem lép tovább..Mi lehet a baj?
Itt van a kód. Köszi a segítséget előre is.
const char* ssid = "xxxx";
const char* password = "xxxx";
int ModbusTCP_port = 502;
//////// Required for Modbus TCP / IP
#define maxHoldingRegister 2
#define MB_FC_NONE 0
#define MB_FC_READ_COILS 1 //implemented
#define MB_FC_READ_DISCRETE_INPUT 2 //implemented
#define MB_FC_READ_REGISTERS 3 //implemented
#define MB_FC_READ_INPUT_REGISTER 4 //implemented
#define MB_FC_WRITE_COIL 5 //implemented
#define MB_FC_WRITE_REGISTER 6 //implemented
#define MB_FC_WRITE_MULTIPLE_COILS 15 //implemented
#define MB_FC_WRITE_MULTIPLE_REGISTERS 16 //implemented
//
// MODBUS MBAP offsets
//
#define MB_TCP_TID 0
#define MB_TCP_PID 2
#define MB_TCP_LEN 4
#define MB_TCP_UID 6
#define MB_TCP_FUNC 7
#define MB_TCP_REGISTER_START 8
#define MB_TCP_REGISTER_NUMBER 10
byte ByteArray[260];
unsigned int MBHoldingRegister[maxHoldingRegister];
/* Kkimenetek kapcsolasa regiszterek alapjan valtozoi */
long toTime_01 = 0; // Az idozitett kikapcsolashoz.
long toTime_02 = 0; // Az idozitett kikapcsolashoz.
bool flag_01 = false;
bool flag_02 = false;
bool relay1_ON = false;
bool relay2_ON = false;
unsigned long int btnPressTime_01 = 0;
unsigned long int btnPressTime_02 = 0;
byte relON_1[] = {0xA0, 0x01, 0x01, 0xA2}; //Hex command to send to serial for open relay_1
byte relOFF_1[] = {0xA0, 0x01, 0x00, 0xA1}; //Hex command to send to serial for close relay_1
byte relON_2[] = {0xA0, 0x02, 0x01, 0xA3}; //Hex command to send to serial for open relay_2
byte relOFF_2[] = {0xA0, 0x02, 0x00, 0xA2}; //Hex command to send to serial for close relay_2
byte byteFN = MB_FC_NONE;
int Start; // Az eppen irnando vagy olvasando regiszter cime.
int WordDataLength; // A word tipusu adatok darabszama
int ByteDataLength; // A byte tipusu adatok darabszama (WordDataLenght *2)
int MessageLength;
//////////////////////////////////////////////////////////////////////////
WiFiServer MBServer(ModbusTCP_port);//Létrehoz egy kiszolgálót, amely figyeli a bejövő kapcsolatokat a megadott porton.
void setup() {
// A soros port beallitasa a szamitogeppel valo kommunikaciohoz.
Serial.begin(115200);
delay(100);
WiFi.begin(ssid, password);
IPAddress ip(192, 168, 1, 196);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
WiFi.config(ip, gateway, subnet);
delay(100);
Serial.println(".");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
MBServer.begin();
Serial.println("Connected ");
Serial. print("ESP8266 Server Modbus TCP/IP ");
Serial.print(WiFi.localIP()); Serial.print(":"); Serial.println(String(ModbusTCP_port));
Serial.println("Modbus TCP/IP Online");
}
/************************************************LOOP*********************************************************/
void loop() {
// Lekapcsolja a RELAY_2 kimentet, ha megszakad a kapcsolat a klienssel a kikapcsolas idozito lejarta elott
// mert akkor a while (client.connected()) ciklusban erre mar nem lesz lehetosege.
if (toTime_01 < millis() && relay1_ON == true) { // Ha letelt az ido es a rele be van huzva.
Serial.write(relOFF_1, sizeof(relOFF_1)); // turns the relay OFF
relay1_ON = false;
MBHoldingRegister[0] = 0;
flag_01 = false;
}
if (toTime_02 < millis() && relay2_ON == true ) { // Ha letelt az ido es a rele be van huzva.
Serial.write(relOFF_2, sizeof(relOFF_2)); // turns the relay OFF
relay2_ON = false;
MBHoldingRegister[1] = 0;
flag_02 = false;
}
/* Ellenőrzi, hogy csatlakozik-e egy ügyfél a WIFI SERVER-hez, ha igen client objektummal ter vissza
egyebkent false.*/
WiFiClient client = MBServer.available();
/****************WHILE***ha van kapcsolat a klienssel*********************************************************/
while (client.connected()) {
/*** RELAY_DOOR 1. rele ***/
/* 0,7 masodperc gomb nyomvatartas utan elinditja a ket masodperces kikapcsolas idozitot.
MBHoldingRegister[0] = 256 ha a HMI droid a 8. bitet 1-re allitja
0. regiszter 0000 0000 0000 0000 - 0-15 bit
1. regiszter 0000 0000 1000 0000 - 16-31 bit*/
if (MBHoldingRegister[0] == 256 && flag_01 == false) { // ha a HMI-n megnyomta a gombot
btnPressTime_01 = millis(); // menti a gomb megnyomasanak idejet
flag_01 = true;
}
if (MBHoldingRegister[0] == 0) { // ha elengedte a gombot ujra beengedi az elozo if be.
flag_01 = false;
}
if ((millis() - btnPressTime_01) > 700 && MBHoldingRegister[0] == 256 ) { // ha letelt a nyomvatartási idő es meg nyomja
if (relay1_ON == false) { // ha a rele nincs behuzva
Serial.write(relON_1, sizeof(relON_1)); // turns the relay_1 ON
relay1_ON = true;
MBHoldingRegister[0] = 512; // Ugyanazon a regiszteren visszajelez a HMI nek 9. bit = 512
toTime_01 = millis() + 2000; // 2 masodperceses kikapcsolas idozito
}
}
if (toTime_01 < millis() && relay1_ON == true) { // Ha letelt az ido es a rele be van huzva.
Serial.write(relOFF_1, sizeof(relOFF_1)); // turns the relay OFF
relay1_ON = false;
MBHoldingRegister[0] = 0;
flag_01 = false;
}
/*MASODIK GOMB*/
if (MBHoldingRegister[1] == 256 && flag_02 == false) { // ha a HMI-n megnyomta a gombot
btnPressTime_02 = millis(); // menti a gomb megnyomasanak idejet
flag_02 = true;
}
if (MBHoldingRegister[1] == 0) { // ha elengedte a gombot ujra beengedi az elozo if be.
flag_02 = false;
}
if ((millis() - btnPressTime_02) > 700 && MBHoldingRegister[1] == 256 ) { // ha letelt a nyomvatartási idő es meg nyomja
if (relay2_ON == false) { // ha a rele nincs behuzva
Serial.write(relON_2, sizeof(relON_2)); // turns the relay_2 ON
relay2_ON = true;
MBHoldingRegister[1] = 512; // Ugyanazon a regiszteren visszajelez a HMI nek 9. bit = 512
toTime_02 = millis() + 2000; // 2 masodperceses kikapcsolas idozito
}
}
if (toTime_02 < millis() && relay2_ON == true ) { // Ha letelt az ido es a rele be van huzva.
Serial.write(relOFF_2, sizeof(relOFF_2)); // turns the relay OFF
relay2_ON = false ;
MBHoldingRegister[1] = 0;
flag_02 = false;
}
/** Az adatok beolvasasa a TCP/IP 502 -es portjarol.**/
if (client.available()) { // Ha van olvashato adat.
int i = 0;
while (client.available()) { // Amig van olvashato adat, addig megy a ciklus.
ByteArray[i] = client.read(); // Beolvassa a kovetkezo bajtot.
// Serial.print(i);
// Serial.print(": ");
// Serial.print(ByteArray[i]);
// Serial.println("");
i++;
}
client.flush(); // Vár amig a buffer kiurul.
byteFN = ByteArray[7]; // 3-as olvasas, 6-os iras, 16-os eseten a holding regiszterek irasa tortenik.
Start = word(ByteArray[8], ByteArray[9]); // A muvelet start cime.
WordDataLength = word(ByteArray[10], ByteArray[11]); // Az adat hossza word-ben
}
int CoilDataLength;
// Handle request
switch (byteFN) {
case MB_FC_NONE: // 0
break;
//****************** Read Registers (3 ) ******************
case MB_FC_READ_REGISTERS:
ByteDataLength = WordDataLength * 2;
ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.
ByteArray[8] = ByteDataLength; //Number of bytes after this one (or number of bytes of data).
for (int i = 0; i < WordDataLength; i++) {
ByteArray[ 9 + i * 2] = highByte(MBHoldingRegister[Start + i]);
ByteArray[10 + i * 2] = lowByte(MBHoldingRegister[Start + i]);
}
MessageLength = ByteDataLength + 9;
client.write((const uint8_t *)ByteArray, MessageLength);
byteFN = MB_FC_NONE;
// regisztertIr();
break;
case MB_FC_WRITE_REGISTER: // 6 Holding Register irasa tavoli adatbol
MBHoldingRegister[Start] = word(ByteArray[MB_TCP_REGISTER_NUMBER], ByteArray[MB_TCP_REGISTER_NUMBER + 1]);
ByteArray[5] = 6; //Number of bytes after this one.
MessageLength = 12;
client.write((const uint8_t *)ByteArray, MessageLength);
byteFN = MB_FC_NONE;
// regisztertIr();
break;
//****************** Write Multiple Registers (16) ******************
case MB_FC_WRITE_MULTIPLE_REGISTERS:
ByteDataLength = WordDataLength * 2;
ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.
for (int i = 0; i < WordDataLength; i++) {
MBHoldingRegister[Start + i] = word(ByteArray[ 13 + i * 2], ByteArray[14 + i * 2]);
}
MessageLength = 12;
client.write((const uint8_t *)ByteArray, MessageLength);
byteFN = MB_FC_NONE;
//regisztertIr();
break;
}
} /* WHILE END */
}
void regisztertIr() {
//// Az olvasott regiszterek megjelenitese.
for (int i = 0; i <= maxHoldingRegister-1; i++) {
Serial.print(" [");
Serial.print(i);
Serial.print("] ");
Serial.print(MBHoldingRegister[i]);
}
Serial.println();
}
Valószinűleg elég ha a wifi.begin utáni 4 sort kiveszed.
Ha még mindig nem jó, akkor előző sorba kellene a WiFi.mode(WIFI_STA);
Nézegesd a saját telepített libraryk között...
pl nálam: \Arduino188_8266_263\hardware\ esp8266com\ esp8266\libraries\ArduinoOTA\examples\OTALeds\
vagy a képen:
A WiFi.mode(WIFI_STA); megoldotta.
A fix IP cím megadására szükség van mert kintről porton keresztül érem el.
Köszi a segítséget!
Sziasztok! wemos d1mini modulnál,mitől lehet az,ha a soros monitor meg van nyitva,akkor küldi az adatokat,ha bezárom,akkor semmi...
Milyen adatokat? honnan hová?
Nem lehet hogy szoftverből vársz a soros porton valamire?
Ha jól látom a nodeMCU-nak van 3 (2,5?) soros portja ...
Arduino IDE alól hogyan tudok a hivatkozni az különböző portokra?
Ha a Softwareserialt is számoljuk akkor igen. 1,5 hardveres soros portja van plusz a szoftveres.
Én ezt találtam:
TXDO-GPIO1
RXDO-GPIO3
TXD1-GPIO2
TXD2-GPIO15
RXD2-GPIO13
Ebből gondoltam, hogy 2.5 hardveres UART van.
De az is kérdés hogy hogyan hivatkozhatok mondjuk a 2-es UART portra.
A GPIO13 és 15 csak az GPIO1 és 3 alternatív lábai ha átirányítod. Attól nem lesz több. Vagy az egyik párost használod vagy a másikat.
ESP01-el küldök 10 percenként adatokat a Thingspeak-re ... de valami miatt az adatok egy része elveszik, azaz a szerverre nem érkezik meg. Hogyan tudom megkeresni a hiba okát?
Szerintem a legegyszerűbb ha kiíratod serialra amit elküldesz. Hibaüzenet nincs a thingspeaktől?
Egyelőre mindig ugyan azt küldöm. Szóval abban nem hiszem hogy gond lenne. Soros porta is küldöm, ott nincs különbség.
Sziasztok!
Második ESP32-es panel halt meg!
Nem látja mint bluetooth eszközt semmi sem!
Működés közben krepált be, egy fényújság vezérlőjének használtam eddig!
Valaki tapasztalt már ilyet?
Előre is köszönöm ha valaki tud segíteni.
Póba kép egy másik example fájlt szabtam át saját igényeimnek megfelelőre ...
Most tovább tart míg csatlakozik a wifi hálózathoz, viszont több (kb 75%) a sikeres adatküldés.
Ez a program már kiírja milyen http hibakóddal hiúsult meg az adatküldés.
301 és 304-es hibákat dob.
Mitől van az ha így próbálok csatlakozni a wifihez akkor lassan, vagy egyáltalán nem is csatlakozik
void WifiConnect()
{
// Connect or reconnect to WiFi
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(SECRET_SSID);
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network. Change this line if using open or WEP network
Serial.print(".");
digitalWrite(5, LOW);
delay(5000);
}
Serial.println("\nConnected.");
}
}
ha meg wifimanagerrel akkor egyből csatlakozik?
void WifiConnect_wifimanager()
{
WiFiManager wifiManager;
//reset saved settings
//wifiManager.resetSettings();
wifiManager.autoConnect("AutoConnectAP");
//if you get here you have connected to the WiFi
Serial. println("connected...yeey ");
}
Mert a wifi.begin-t egyszer illik meghívni(nem a while ciklusban hivogatni), utána várni a csatlakozásra
A wifimanagert meg a forrásszövegében megnézheted mit csinál
|
|