Sari la conținut
ELFORUM - Forumul electronistilor

fratello

Membru cunoscut
  • Număr conținut

    1.736
  • Înregistrat

  • Ultima Vizită

Vizitatori Recenți Profil

Blocul vizitatori recenți este dezactivat și nu este arătat altor utilizatori.

fratello's Achievements

Veteran

Veteran (13/14)

  • First Post
  • Collaborator
  • Posting Machine Rare
  • Conversation Starter
  • Reacting Well

Recent Badges

  1. Nu am pus senzorul DS18B20. Da, U8g2lib.h este libraria pentru SH1106 (1,3"). Iti multumesc pt ca ne-ai impartasit proiectul !
  2. Nu mi-a mers codul de pe pagina precedenta ; a trebuit (avand un display SH1106) sa il adaptez. #include <U8g2lib.h> #include <Wire.h> #include <DallasTemperature.h> #include <OneWire.h> #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #define ONE_WIRE_BUS D2 // Pinul pentru senzorul de temperatură OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); ESP8266WebServer server(80); // Inițializare display SH1106 cu U8g2 U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); float temperaturaActuala = 0.0; float temperaturaTinta = 22.0; bool centralaPornita = false; // Prototipurile funcțiilor void handleRoot(); void handleChangeTemp(); void handleToggleCentrala(); void handleTemperatureData(); void updateDisplay(); void setup() { Serial.begin(115200); sensors.begin(); // Inițializăm senzorul de temperatură // Inițializăm display-ul SH1106 u8g2.begin(); WiFi.softAP("Termostat_AP", "12345678"); server.on("/", handleRoot); server.on("/changeTemp", handleChangeTemp); server.on("/toggleCentrala", handleToggleCentrala); server.on("/temperatureData", handleTemperatureData); server.begin(); Serial.println("Serverul a pornit!"); updateDisplay(); } void updateDisplay() { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_ncenB08_tr); u8g2.drawStr(0, 10, "Temp. curenta:"); u8g2.setCursor(0, 20); u8g2.print(temperaturaActuala); u8g2.drawStr(0, 50, "Temp. setata:"); u8g2.setCursor(0, 60); u8g2.print(temperaturaTinta); u8g2.sendBuffer(); } void handleRoot() { String pagina = "<html><head><style>"; pagina += "body { text-align: center; font-family: Arial; }"; // Aliniere pe centru pagina += ".buton {font-size: 20px; padding: 10px 20px; margin: 20px; border: none; cursor: pointer;}"; pagina += ".verde {background-color: #90EE90; color: black;}"; // Verde deschis pentru "Pornit" pagina += ".rosu {background-color: #FFCCCB; color: black;}"; // Roșu deschis pentru "Oprit" // Stil pentru LED-uri pagina += ".led {width: 20px; height: 20px; border-radius: 50%; display: inline-block; margin-bottom: 10px;}"; // LED-uri rotunde, inline pagina += ".led-verde {background-color: green;}"; // LED verde pagina += ".led-rosu {background-color: red;}"; // LED roșu pagina += "</style></head><body>"; pagina += "<h1>Setare temperatura centrala</h1>"; pagina += "<p>Temperatura actuala: " + String(temperaturaActuala) + "C</p>"; pagina += "<p>Temperatura tinta: " + String(temperaturaTinta) + "C</p>"; // Butoane pentru controlul temperaturii pagina += "<form action=\"/changeTemp\" method=\"get\">"; pagina += "<input type=\"submit\" name=\"action\" value=\"+Temp\" class=\"buton rosu\">"; // Buton +Temp roșu pagina += "<input type=\"submit\" name=\"action\" value=\"-Temp\" class=\"buton verde\">"; // Buton -Temp verde pagina += "</form>"; // LED verde în stânga butonului "Pornit" și LED roșu în dreapta butonului "Oprit" pagina += "<form action=\"/toggleCentrala\" method=\"get\">"; pagina += "<div style='display: flex; justify-content: center;'>"; // Flexbox pentru a aranja LED-urile și butoanele pagina += "<div style='display: flex; align-items: center; justify-content: center;'>"; // Aranjare flex pentru "Pornit" if (centralaPornita) { pagina += "<div class='led led-verde' style='margin-right: 10px;'></div>"; // LED verde aprins în stânga butonului Pornit } else { pagina += "<div class='led led-verde' style='display:none;'></div>"; // LED verde ascuns } pagina += "<input type=\"submit\" value=\"Pornit\" class=\"buton verde\">"; // Buton verde pentru "Pornit" pagina += "</div>"; pagina += "<div style='display: flex; align-items: center; justify-content: center; margin-left: 20px;'>"; // Aranjare flex pentru "Oprit" pagina += "<input type=\"submit\" value=\"Oprit\" class=\"buton rosu\">"; // Buton roșu pentru "Oprit" if (!centralaPornita) { pagina += "<div class='led led-rosu' style='margin-left: 10px;'></div>"; // LED roșu aprins în dreapta butonului Oprit } else { pagina += "<div class='led led-rosu' style='display:none;'></div>"; // LED roșu ascuns } pagina += "</div>"; pagina += "</div>"; pagina += "</form>"; pagina += "</body></html>"; server.send(200, "text/html", pagina); // Trimiterea paginii HTML către client } void handleChangeTemp() { String action = server.arg("action"); // Modificarea temperaturii țintă în funcție de acțiune if (action == "+Temp") { temperaturaTinta += 0.5; } else if (action == "-Temp") { temperaturaTinta -= 0.5; } updateDisplay(); // Actualizăm OLED-ul cu noile valori handleRoot(); // Reîncărcăm pagina cu valorile actualizate } void handleToggleCentrala() { centralaPornita = !centralaPornita; // Comutăm starea centralei updateDisplay(); // Actualizăm OLED-ul cu noile valori handleRoot(); // Reîncărcăm pagina cu valorile actualizate } void handleTemperatureData() { sensors.requestTemperatures(); // Solicităm citirea temperaturii temperaturaActuala = sensors.getTempCByIndex(0); // Dacă senzorul este deconectat sau nefuncțional, returnăm o eroare if (temperaturaActuala == DEVICE_DISCONNECTED_C) { server.send(200, "text/plain", "Eroare: Senzor deconectat!"); } else { // Trimiterea temperaturii actuale și țintei către unitatea fixă String data = "Temperatura: " + String(temperaturaActuala) + "\n"; data += "Tinta: " + String(temperaturaTinta); server.send(200, "text/plain", data); } } void loop() { server.handleClient(); // Gestionăm cererile clientului } Rezultatul (preliminar) se vede mai jos.
  3. "avand o pagina web (192.168.4.1, ip-ul general al esp-ului) care are 4 butoane: Temp+, Temp-, Centrala Pornita, Centrala oprita. Temperatura de la care porneste centrala creste/descreste din butoane din 0.5 in 0.5 grade C." Si totusi eu nu vad nicaieri aceste butoane ... Ce imi scapa ?
  4. Super fain proiect, felicitari ! L-am si testat ... De ce am doar asta afisat pe telefon ?
  5. "Am citit codurile telecomenzii aerului condiționat și am obținut următoarele:....." Citeste si codurile transmise de ESP si vezi unde sunt diferentele... IMHO cred ca ar trebui inversat semnalul la pinul IR_Transmitter.
  6. Multumesc. Vad ca sunteti, ca si mine, din PH. Va rog numarul de telefon, pe mesageria privata. Multumesc !
  7. Am cuplat incarcatorul ; nicio reactie. Am scos si TP4056 de pe placa, m-am gandit sa nu influenteze.
  8. Boxa are 4 difuzoare : 2 x 3W/4 ohmi si 2 x 12w/4 ohmi Din ce am reusit sa vad pe cablaj, cam asa ar fi conectate : Oare ar fi mai potrivit asa ceva ? https://www.aliexpress.com/item/1005006636707875.html?spm=a2g0o.productlist.main.67.2d142e4foTgtNc&algo_pvid=86fb36b5-f7cf-49c3-ae8a-644650f01588&algo_exp_id=86fb36b5-f7cf-49c3-ae8a-644650f01588-33&pdp_npi=4%40dis!RON!32.55!14.63!!!7.12!3.20!%4021038e8317245133131474810e2655!12000037889044936!sea!RO!908391634!X&curPageLogUid=92qcWsdFjmaV&utparam-url=scene%3Asearch|query_from%3A
  9. Update : a sosit modulul de incarcare. Am incarcat acumulatorii, decuplati de pe placa boxei, folosind un charger de telefon de 2A. Totul a decurs OK. Dar, la conectarea la boxa, am avut surpriza sa constat ca aceasta nu functioneaza...deloc ! Nu se aprinde nimic, nu se aude nimic .... Amicul a zis ca da, a "murit" dintr-o data, dar a crezut ca e de la acumulatori ... Deci timp si bani pierduti, putin probabil sa se poata depana. Iar pe ALI nu am gasit nimic ce s-ar preta la o inlocuire.
  10. Hm, n-am suflanta ... deci varianta buna ar fi by-pass-ul celui de pe placa boxei... Multumesc !
  11. Va multumesc pentru raspunsuri ! In situatia actuala "boxa" nu mai incarca acumulatorii (2x18650, 3.7V, 6800mAh). Mufa de incarcare este in regula. Vizual circuitul 4056 pare compromis (nu cred ca se vede bine in poza de mai sus). 1 Amper curent de incarcare nu este prea mare ?
  12. Am comandat un modul cu TP4056. Dar vad ca este pentru incarcarea doar a unui acumulator ... Pot incarca cei 2 acumulatori ai boxei cu acest incarcator ? Pe placa boxei este deasemenea un singur TP4056. Cum credeti ca ar fi indicat : sa folosesc acest incarcator asa cum este sau sa inlocuiesc TP4056 de pe placa boxei ? Ma gandesc sa nu fie si altceva deteriorat in jurul IC si sa fac degeaba inlocuirea ....
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări