Aiuto progetto solare termico

Ciao a tutti i membri del forum. Ho un progetto in mente e vorrei sapere se è fattibile ed è soprattutto per le mie modeste capacità.

Ho un montato da poco il solare termico, il quale monta una centralina Seitron molto semplice dove ci sono 3 sonde termiche:

  1. Applicata sui pannelli solari che arriva ad un temperatura molto alta tipo 150°
  2. La seconda sulla parte bassa del puffer che arriva sui 100°
  3. Nella parte alta del puffer che arriva sui 100°

Il mio progetto è molto semplice come idea, ovvero poter leggere da remoto queste temperature su una pagina web, tanto ho il servizio noip e già lo uso per il nas ed il router, oppure con un bot telegram, sfruttando le sonde già esistenti PT100

Io avevo pensato di usare come Hardware NodeMCU sicuramente più versatile del classico arduino.

Ecco lo schema della centralina

Che mi dite è fattibile???

ciao…giusto per capire meglio…tu vorresti sostituire l’attuale centralina con il NodeMCU o vorresti acquisire separatamente le varie temperature e stato pompe?

ORSO2001:
ciao...giusto per capire meglio...tu vorresti sostituire l'attuale centralina con il NodeMCU o vorresti acquisire separatamente le varie temperature e stato pompe?

voglio solo leggere le temperature senza sostituire la centralina attuale ma usando le sonde esistenti

bhe...due ipotesi: o sdoppi il segnale della PT1000, però non so se esiste uno sdoppiatore che accetta in ingresso una PT1000 per restituirti la stessa cosa!?...la PT1000 è una resistenza che varia a seconda della temperatura (0°C = 1000 ohm...e prende un 0,3-0,4 ohm ogni grado)...oppure cambi la PT1000 che avrà sicuramente un singolo sensore con delle PT1000 doppie (due sensori nello stesso stelo)...una coppia o una terna di cavi li usi per la centralina l'altra per il tuo controllo...la temperatura sarà praticamente identica.

ORSO2001:
bhe...due ipotesi: o sdoppi il segnale della PT1000, però non so se esiste uno sdoppiatore che accetta in ingresso una PT1000 per restituirti la stessa cosa!?...la PT1000 è una resistenza che varia a seconda della temperatura (0°C = 1000 ohm...e prende un 0,3-0,4 ohm ogni grado)...oppure cambi la PT1000 che avrà sicuramente un singolo sensore con delle PT1000 doppie (due sensori nello stesso stelo)...una coppia o una terna di cavi li usi per la centralina l'altra per il tuo controllo...la temperatura sarà praticamente identica.

per PT1000 doppie vuol dire che avranno 4 fili 2 per canale?

ciao...si...in pratica è come avere 2 sonde sullo stesso punto

eddie84:
per PT1000 doppie vuol dire che avranno 4 fili 2 per canale?

a uno dei fili delle sonde ci sara una tensione variabile in base alla temperatura,
misurala con un tester digitale,
se e compatibile con entrata arduino sei a posto,
la leggi e in base al voltaggio/temperatura ti scrivi 2 righe di software

se no (es tensioni maggiori di 5 volt) ti devi aggiustare anche l hardware,
con un operazionale alta impedenza e partitore

a uno dei fili delle sonde ci sara una tensione variabile in base alla temperatura,
misurala con un tester digitale,
se e compatibile con entrata arduino sei a posto,
la leggi e in base al voltaggio/temperatura ti scrivi 2 righe di software

se no (es tensioni maggiori di 5 volt) ti devi aggiustare anche l hardware,
con un operazionale alta impedenza e partitore

...ehm...forse sbagliando... davo per scontato una verifica del genere.

se no devo prendere queste se ci vanno cosi non ho problemi

Attenzione, a collegare direttamente altra elettronica alle sonde di una centralina preesistente ... se non si hanno dati, caratteristiche e schemi della centralina originale, si rischia di causare malfunzionamenti ...

Sdoppiare le sonde e' la soluzione piu "innocua" ... attenzione solo a scegliere sonde che reggano le temperature presenti, con ampio margine di sicurezza ... se una sonda e' marcata, ad esempio, 50-200 C, non e' detto che la si possa usare a 200C, perche' quello potrebbe essere semplicemente l'indicazione del limite massimo :wink: ...

Etemenanki:
Attenzione, a collegare direttamente altra elettronica alle sonde di una centralina preesistente ... se non si hanno dati, caratteristiche e schemi della centralina originale, si rischia di causare malfunzionamenti ...

Sdoppiare le sonde e' la soluzione piu "innocua" ... attenzione solo a scegliere sonde che reggano le temperature presenti, con ampio margine di sicurezza ... se una sonda e' marcata, ad esempio, 50-200 C, non e' detto che la si possa usare a 200C, perche' quello potrebbe essere semplicemente l'indicazione del limite massimo :wink: ...

infatti sto pensado proprio questo, quello di mettere le sonde a parte, proprio per evitare problemi. Per uno sonda non si sono problemi tanto ho un "pozzetto" sul puffer nella parte inferiore proprio qualche cm più in alto. Sicuramente la temperatura è leggermente diversa ma credo che via software si possa tarare.
Il problema sta nella parte alta del puffere il "pozzetto" è gia impegnato devo vedere se rierso a metterla insieme a quella della centralina

se fAI le cose con un minimo di "buon senso" le cose dovrebbero essere già a posto
prima misura la tensione se è compatibile (0-5 volt)
la "prelevi" con una resistenza da 10k e sei a posto così
ovviamente misuri la tensione sia con arduino collegato che senza e il valore deve essere più o meno lo stesso

Comunque buone notizie almeno spero, sembra che ci sia spazio per le sonde aggiuntive. Quale mi consigliate?

Up

allora dopo un pò di ricerche ho trovato quello che fa al caso mio. L’applicazione Blynk che con due righe di codice sono riuscito a fare quello che mi serve, il test l’ho fatto un comunissimo sensore di temperatura ed umidità il DHT11. Adesso basta “solo” trovare le sonde adatte e modificare il codice che allego. Chi mi da una mano???

aggiornamento ho prese queste le DS18B20

**************************************************************
 * Blynk is a platform with iOS and Android apps to control
 * Arduino, Raspberry Pi and the likes over the Internet.
 * You can easily build graphic interfaces for all your
 * projects by simply dragging and dropping widgets.
 *
 *   Downloads, docs, tutorials: http://www.blynk.cc
 *   Blynk community:            http://community.blynk.cc
 *   Social networks:            http://www.fb.com/blynkapp
 *                               http://twitter.com/blynk_app
 *
 * Blynk library is licensed under MIT license
 * This example code is in public domain.
 *
 **************************************************************
 * This example shows how value can be pushed from Arduino to
 * the Blynk App.
 *
 * WARNING :
 * For this example you'll need SimpleTimer library:
 *   https://github.com/jfturcot/SimpleTimer
 * and Adafruit DHT sensor library:
 *   https://github.com/adafruit/DHT-sensor-library
 *
 * App project setup:
 *   Value Display widget attached to V5
 *   Value Display widget attached to V6
 *
 **************************************************************/

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxxxx";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxxx";
char pass[] = "xxxxxxxx";

#define DHTPIN 2          // D4 PIN NodeMCU What digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11     // DHT 11
//#define DHTTYPE DHT22   // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21   // DHT 21, AM2301

DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
}

void setup()
{
  Serial.begin(9600); // See the connection status in Serial Monitor
  Blynk.begin(auth, ssid, pass);

  dht.begin();

  // Setup a function to be called every second
  timer.setInterval(1000L, sendSensor);
}

void loop()
{
  Blynk.run(); // Initiates Blynk
  timer.run(); // Initiates SimpleTimer
}

Ho provato a scrivere questo codice con una sonda funziona perfettamente con la seconda non riesco chi mi da una mano per favore:

#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>

//Def
#define myPeriodic 15 //in secondi | Thingspeak pubblica in 15sec
#define ONE_WIRE_BUS 2  // DS18B20 SONDA N° 1 su arduino pin2 corrisponde a D4 su nodeMCU
#define ONE_WIRE_BUS2 14  // DS18B20 SONDA N° 2 su arduino pin2 corrisponde a D5 su nodeMCU

OneWire oneWire(ONE_WIRE_BUS);
OneWire oneWire2(ONE_WIRE_BUS2);
DallasTemperature DS18B20(&oneWire);

float prevTemp = 0;
float prevTemp2 = 0;
const char* server = "api.thingspeak.com";
String apiKey ="xxxxxxxxxxxxxxxx"; // apikey thingspeak.com
const char* MY_SSID = "xxxxxxxxxxxx"; // Nome SSID Wifi
const char* MY_PWD = "xxxxxxxxxxxxx"; // Password Wifi
int sent = 0;
void setup() {
  Serial.begin(115200);
  connectWifi();
}

void loop() {
  float temp;
  //char buffer[10];
  DS18B20.requestTemperatures(); 
  temp = DS18B20.getTempCByIndex(0);
  //String tempC = dtostrf(temp, 4, 1, buffer);//gestito in sendTemp()
  Serial.print(String(sent)+" Temperatura Sonda Alta Puffer: ");
  Serial.println(temp);

  float temp2;
  //char buffer[10];
  DS18B20.requestTemperatures(); 
  temp2= DS18B20.getTempCByIndex(1);
  //String tempC = dtostrf(temp, 4, 1, buffer);//gestito in sendTemp()
  Serial.print(String(sent)+" Temperatura Sonda Bassa Puffer: ");
  Serial.println(temp2);
  
  //if (temp != prevTemp)
  //{
  //sendTeperatureTS(temp);
  //prevTemp = temp;
  //}
  
  sendTeperatureTS(temp);
  sendTeperatureTS(temp2);
  int count = myPeriodic;
  while(count--)
  delay(1000);

}

void connectWifi()
{
  Serial.print("Connecting to "+*MY_SSID);
  WiFi.begin(MY_SSID, MY_PWD);
  while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print(".");
  }
  
  Serial.println("");
  Serial.println("Connesso");
  Serial.println("");  
}//fine connessione

void sendTeperatureTS(float temp)
void sendTeperatureTS(float temp2)
{  
   WiFiClient client;
  
   if (client.connect(server, 80)) { // usa ip 184.106.153.149 oppure api.thingspeak.com
   Serial.println("WiFi Client connected ");
   
   String postStr = apiKey;
   postStr += "&field1=";
   postStr += String(temp);
   postStr += "\r\n\r\n";

   String postStr = apiKey;
   postStr += "&field2=";
   postStr += String(temp2);
   postStr += "\r\n\r\n";
   
   client.print("POST /update HTTP/1.1\n");
   client.print("Host: api.thingspeak.com\n");
   client.print("Connection: close\n");
   client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
   client.print("Content-Type: application/x-www-form-urlencoded\n");
   client.print("Content-Length: ");
   client.print(postStr.length());
   client.print("\n\n");
   client.print(postStr);
   delay(1000);
   
   }//fine if
   sent++;
 client.stop();
}//fine invio

ciao...cos'è che non riesce?

ORSO2001:
ciao...cos'è che non riesce?

Mi da un errore nella compilazione ma non riesco a capire dove

posta l'errore.

ORSO2001:
posta l'errore.

sketch_may11a:72: error: expected initializer before 'void'
void sendTeperatureTS(float temp2)
^
exit status 1
expected initializer before 'void'