ESP32 Sketch Data? Vezi postul 26.
Printable View
ESP32 Sketch Data? Vezi postul 26.
Multumesc pentru reactie.
Da, am incercat si cu ESP32 Sketch Data si cu butonelu` Arduino IDE, nu mi se pare sa fie diferente.
Unde gresesc ?
Raspunsul este : in mai multe locuri.
Noroc cu colegul @[Only registered and activated users can see links. Click Here To Register...] care e si priceput si de treaba, gata sa ajute cind i se cere. Multumesc mult de tot. Din nou.
Pentru cei interesati, problemele enuntate in postul #40 erau cauzate de semnalul slab al retelei WiFi - de aceea nu se conecta, (poate ar fi bun un modul cu antena exterioara, ma mai gindesc) si viteza datelor gresita in Serial Monitor - de aceea afisa patratele si birbistoci. Cu Monitorul m-a deslusit @[Only registered and activated users can see links. Click Here To Register...], cu WiFi m-am deslusit singur incercind in alta locatie si alta retea. Adica acasa, unde va fi instalat radioul.
Urmeaza test de functionare, dupa ce ma lamuresc cum import lista de streamuri - tot de la @[Only registered and activated users can see links. Click Here To Register...] primita, ca sa fie foarte clar.
De la @[Only registered and activated users can see links. Click Here To Register...], sanatate !
Am testat acasa, cu lista de streamuri importata. In configuratia actuala, merge bine, rotary encoder included.
Ca sa fie foarte bine, ma gindesc la un display mai mare, la un modul ESP32 cu antena exterioara si la sunet stereo.
Multumesc public si repetat fratelui @[Only registered and activated users can see links. Click Here To Register...], care s-a dovedit a fi priceput, rabdator si dispus sa ma ajute la fiecare pas cind am avut nevoie.
Si m-a si incurajat cind era s-o dau in ... de treaba.
Plecaciune.
De la AliExpress comandă un modul Esp32 wrover varianta având conector pentru antena exterioara, LCD vezi variantele suportate de YoRadio prezentate pe pagina GitHub a proiectului. Pentru stereo comanda ori 2 module max9857 sau 1 modul PCM5102 + un modul stereo audio de ce putere vrei tu. Și o antena wifi.
Revin la acest proiect, azi am reusit sa-l montez in carcasa.
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Sursa este: [Only registered and activated users can see links. Click Here To Register...] ; configuratia aleasa este: ESP32-S3 N16R8 (16 Mb Flash, 8 Mb PsRam), display ILI9341 de 2,8" cu touchscreen, I2S DAC - PCM5102, amplificator 2 x 3 W, card SD de 32 Gb si telecomanda (se foloseste in paralel cu touch-ul dispalay-ului)
[Only registered and activated users can see links. Click Here To Register...]
Autorul propune optional un modul de emisie bluetooth si un modul pentru reglarea automata a luminozitatii display-ului; le am dar nu le-am montat.
Proiectul beneficiaza de interfata web pentru setari:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Posturile de radio le-am cautat si adaugat pe SD card direct din webif:
[Only registered and activated users can see links. Click Here To Register...]
Radioul beneficiaza si de Player audio, fisierele fiind copiate pe SD Card:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Tot din Interfata Web se adauga si telecomanda Ir, buton cu buton:
[Only registered and activated users can see links. Click Here To Register...]
Ce nu am probat inca, functia DLNA:
[Only registered and activated users can see links. Click Here To Register...]
Cam atat, mi-a dat ceva bataie de cap dar a meritat.
[Only registered and activated users can see links. Click Here To Register...]
Va salut. se poate adapta un script ceva la acest cod in sensul ca daca pica internetul sa se reconecteze automat.
/* ==================================================================================================== ========
* ёRadio
* ==================================================================================================== ========
* Web-radio based on
* ESP32-audioI2S [Only registered and activated users can see links. Click Here To Register...]
* or/and
* ESP32-vs1053_ext [Only registered and activated users can see links. Click Here To Register...]
* libraries
* ==================================================================================================== ========
* Project home [Only registered and activated users can see links. Click Here To Register...]
* Wiki [Only registered and activated users can see links. Click Here To Register...]
* Описание на 4PDA [Only registered and activated users can see links. Click Here To Register...]
* Как это прошить? [Only registered and activated users can see links. Click Here To Register...]
* ==================================================================================================== ========
* Here goes!
* ==================================================================================================== ========
*/
#include "Arduino.h"
#include "src/core/options.h"
#include "src/core/config.h"
#include "src/core/telnet.h"
#include "src/core/player.h"
#include "src/core/display.h"
#include "src/core/network.h"
#include "src/core/netserver.h"
#include "src/core/controls.h"
#include "src/core/mqtt.h"
#include "src/core/optionschecker.h"
extern __attribute__((weak)) void yoradio_on_setup();
void setup() {
Serial.begin(115200);
if(LED_BUILTIN!=255) pinMode(LED_BUILTIN, OUTPUT);
if (yoradio_on_setup) yoradio_on_setup();
config.init();
display.init();
player.init();
network.begin();
if (network.status != CONNECTED && network.status!=SDREADY) {
netserver.begin();
initControls();
display.putRequest(DSP_START);
while(!display.ready()) delay(10);
return;
}
if(SDC_CS!=255) {
display.putRequest(WAITFORSD, 0);
Serial.print("##[BOOT]#\tSD search\t");
}
config.initPlaylistMode();
netserver.begin();
telnet.begin();
initControls();
display.putRequest(DSP_START);
while(!display.ready()) delay(10);
#ifdef MQTT_ROOT_TOPIC
mqttInit();
#endif
if (config.getMode()==PM_SDCARD) player.initHeaders(config.station.url);
player.lockOutput=false;
if (config.store.smartstart == 1) player.sendCommand({PR_PLAY, config.store.lastStation});
}
void loop() {
telnet.loop();
if (network.status == CONNECTED || network.status==SDREADY) {
player.loop();
//loopControls();
}
loopControls();
netserver.loop();
}
#include "src/core/audiohandlers.h"
Foloseste un interval de reconectare
EX:
const long interval = 10000; // Interval de reconectare in milisecunde (10 secunde)
Unde vine introdus in codul de sus?
Ai un exemplu in care folosesti millis.
Quote:
#include <WiFi.h>
const char* ssid = "MyWiFi";
const char* password = "12345678";
unsigned long previousMillis = 0;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Conectat la rețeaua Wi-Fi...");
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
Serial.println("Conexiunea pierdută. Se încearcă reconectarea...");
WiFi.disconnect();
WiFi.begin(ssid, password);
}
} else {
Serial.println("Conectat la rețeaua Wi-Fi.");
}
delay(1000); // Faceți o pauză de 1 secundă pentru a evita supraîncărcarea buclei
}
Testează si spunemi daca se reconecteaza.
În cazul în care folosești MQTT, poate fi util să reconectezi și clientul MQTT după ce conexiunea WiFi este restabilită.
Code:#include "Arduino.h"
#include "src/core/options.h"
#include "src/core/config.h"
#include "src/core/telnet.h"
#include "src/core/player.h"
#include "src/core/display.h"
#include "src/core/network.h"
#include "src/core/netserver.h"
#include "src/core/controls.h"
#include "src/core/mqtt.h"
#include "src/core/optionschecker.h"
extern __attribute__((weak)) void yoradio_on_setup();
unsigned long lastReconnectAttempt = 0;
const unsigned long reconnectInterval = 10000; // Interval pentru reconectare (10 secunde)
void setup() {
Serial.begin(115200);
if (LED_BUILTIN != 255) pinMode(LED_BUILTIN, OUTPUT);
if (yoradio_on_setup) yoradio_on_setup();
config.init();
display.init();
player.init();
network.begin(); // Pornire inițială a rețelei
if (network.status != CONNECTED && network.status != SDREADY) {
netserver.begin();
initControls();
display.putRequest(DSP_START);
while (!display.ready()) delay(10);
return;
}
if (SDC_CS != 255) {
display.putRequest(WAITFORSD, 0);
Serial.print("##[BOOT]#\tSD search\t");
}
config.initPlaylistMode();
netserver.begin();
telnet.begin();
initControls();
display.putRequest(DSP_START);
while (!display.ready()) delay(10);
#ifdef MQTT_ROOT_TOPIC
mqttInit();
#endif
if (config.getMode() == PM_SDCARD) player.initHeaders(config.station.url);
player.lockOutput = false;
if (config.store.smartstart == 1) player.sendCommand({PR_PLAY, config.store.lastStation});
}
void loop() {
telnet.loop();
if (network.status == CONNECTED || network.status == SDREADY) {
player.loop();
} else {
attemptReconnect(); // Verifică și încearcă să reconecteze dacă este nevoie
}
loopControls();
netserver.loop();
}
// Funcție pentru a încerca reconectarea la rețea
void attemptReconnect() {
unsigned long currentMillis = millis();
if (currentMillis - lastReconnectAttempt > reconnectInterval) {
lastReconnectAttempt = currentMillis;
Serial.println("Conexiune pierdută! Încerc să reconectez...");
display.putRequest(DSP_MSG, "Reconectare WiFi...");
network.begin(); // Reîncearcă conectarea la rețea
if (network.status == CONNECTED) {
Serial.println("Reconectat la WiFi!");
display.putRequest(DSP_MSG, "Conexiune restabilită.");
} else {
Serial.println("Reconectarea a eșuat.");
}
}
}
La compilare imi da eroare
<!----><div style="text-align: center;"><a href="https://acosbot.com/en/blog/amazon-brand-store-what-is-it-and-how-to-set-it-up/" title="Eselt - amazon brand store" target="_blank"><img src="https://img.eselt.de/img/16753785_fEDPyuDoVMj19yF4/ad.jpg" style="margin-bottom: 16px;"></a><!----><!----></div>
- - - Updated - - -
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
---------- Post added at 20:54 ---------- Previous post was at 20:50 ----------
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Da e si normal, nu am definito, daca nu stiu ce display folosesti, dami detali.
Dacă nu există DSP_MSG, poți utiliza o altă constantă deja definită, sau adăuga manual una.
1. Înlocuiește DSP_MSG cu altă comandă existentă:
Poți încerca cu o constantă existentă, cum ar fi DSP_TEXT (dacă biblioteca o definește):
[CCODE]display.putRequest(DSP_TEXT, "Reconectare WiFi...");[\CODE]
2. Definește DSP_MSG manual:
Dacă vrei să păstrezi DSP_MSG, îl poți defini tu:
Adaugă în fișierul display.h sau la începutul fișierului principal:
[CODE]display.putRequest(DSP_TEXT, "Reconectare WiFi...");[\CODE]
Acest cod poate varia în funcție de biblioteca folosită.
Trebuie să te asiguri că valoarea constantă nu intră în conflict cu alte valori deja existente.
3. Verifică funcția putRequest()
Este posibil ca biblioteca display să utilizeze alt mod pentru a afișa mesaje. Verifică documentația sau fișierul display.h pentru a identifica cum poate fi trimis un mesaj text.
Dacă ai nevoie de mai multe informații despre structura proiectului tău sau despre modul în care funcționează biblioteca display, trimite-mi mai multe detalii. Te pot ajuta să rezolvăm eroarea!
---------- Post added at 06:51 ---------- Previous post was at 06:48 ----------
Quote:
Originally Posted by fery21 [Only registered and activated users can see links. Click Here To Register...]
Asta este in display.h
#ifndef displayST7735_h
#define displayST7735_h
#include "../core/options.h"
#include "Arduino.h"
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#if CLOCKFONT_MONO
#include "fonts/DS_DIGI28pt7b_mono.h" // [Only registered and activated users can see links. Click Here To Register...]
#else
#include "fonts/DS_DIGI28pt7b.h"
#endif
#include "tools/l10n.h"
#define CHARWIDTH 6
#define CHARHEIGHT 8
typedef GFXcanvas16 Canvas;
#include "widgets/widgets.h"
#include "widgets/pages.h"
#if __has_include("conf/displayST7735conf_custom.h")
#include "conf/displayST7735conf_custom.h"
#else
#if DTYPE==INITR_MINI160x80
#include "conf/displayST7735_miniconf.h"
#elif DTYPE==INITR_144GREENTAB
#include "conf/displayST7735_144conf.h"
#else
#include "conf/displayST7735_blackconf.h"
#endif
#endif
#define BOOT_PRG_COLOR 0xE68B
#define BOOT_TXT_COLOR 0xFFFF
#define PINK 0xF97F
class DspCore: public Adafruit_ST7735 {
#include "tools/commongfx.h"
};
extern DspCore dsp;
#endif
Si in myoption.h
#ifndef myoptions_h
#define myoptions_h
/* Generated by myoptions.h generator - v0.8.1 */
/* [Only registered and activated users can see links. Click Here To Register...] */
/* Put this file next to yoRadio.ino and restart Arduino IDE. */
/* !!! Attention !!! */
/* This configuration depends on some additional libraries. Please install them using the library manager: */
/* Adafruit GFX Library, Adafruit ST7735 and ST7789 Library, OneButton */
/* !!! Do not be alarmed, all right, the default values are not included in this file !!! */
#define DSP_MODEL DSP_ST7735
#define TFT_RST 15
#define BRIGHTNESS_PIN 21
#define ENC_BTNR 34
#define ENC_BTNL 35
#define ENC_BTNB 32
#define ENC_INTERNALPULLUP false
#define RSSI_DIGIT false
#endif
Nu am acest display ST7735 sa fac un test, dar inceaca acest cod sa verifici daca pe display apare reconectare apoi refacem.
Code:#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#define TFT_CS 10
#define TFT_RST 9
#define TFT_DC 8
Adafruit_ST7735 display = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
unsigned long lastReconnectAttempt = 0;
const unsigned long reconnectInterval = 10000; // Interval pentru reconectare (10 secunde)
void setup() {
Serial.begin(115200);
display.initR(INITR_BLACKTAB);
display.fillScreen(ST77XX_BLACK);
display.setTextColor(ST77XX_WHITE);
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Initializare...");
// Simulăm inițializarea rețelei
network.begin();
}
void loop() {
if (network.status != CONNECTED) {
attemptReconnect();
}
}
void attemptReconnect() {
unsigned long currentMillis = millis();
if (currentMillis - lastReconnectAttempt > reconnectInterval) {
lastReconnectAttempt = currentMillis;
Serial.println("Conexiune pierdută! Încerc să reconectez...");
display.fillScreen(ST77XX_BLACK);
display.setCursor(0, 0);
display.print("Reconectare WiFi...");
network.begin();
if (network.status == CONNECTED) {
Serial.println("Reconectat la WiFi!");
display.fillScreen(ST77XX_BLACK);
display.setCursor(0, 0);
display.print("Conexiune restabilită.");
} else {
Serial.println("Reconectarea a eșuat.");
display.print("\nEșec reconectare.");
}
}
}
nu compileaza
[Only registered and activated users can see links. Click Here To Register...]
---------- Post added at 20:51 ---------- Previous post was at 20:41 ----------
am atasat codul complet
[Only registered and activated users can see links. Click Here To Register...]
---------- Post added at 20:56 ---------- Previous post was at 20:51 ----------
Ce am observat acuma in seara asta este ca ramane conectat la wifi pentru ca am acces la interfata , playerul radio nu se conecteaza doar daca ii dau conect din interfata cred ca aici este mai bine sa verifice conexiunea la 10 secunde. multumesc frumos.
De la @[Only registered and activated users can see links. Click Here To Register...], sanatate !
Am facut ce zici tu aici. Ramine pentru dupa Anul Nou.Quote:
Originally Posted by val [Only registered and activated users can see links. Click Here To Register...]
Miine vine Mos Craciun si va doresc sa va aduca tot ce va doriti, chiar daca-i ilegal sau imoral, he-he !
Mosul o sa-i aduca sotiei mele radioul facut la indicatiile si cu incurajarile colegului @[Only registered and activated users can see links. Click Here To Register...], despre care pot sa spun doar </b>Da-i, Doamne, sanatate ! <b/>.
Am o singura problema cu proiectul - am nevoie de URL pentru Romania Cultural. Daca aveti asa ceva si-mi dati si mie, Mosu` sa va-mbucure !
Sarbatori fericite si un An Nou de exceptie !
[Only registered and activated users can see links. Click Here To Register...]
Mai multe adrese: [Only registered and activated users can see links. Click Here To Register...]
Multumesc, functioneaza !
Va tin la curent cu proiectul nou, cu WROVER.
myoptions generator v 0.9.0
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]