Ho 3 arduino con sk ethernet connessi alla rete domestica per la gestione dell'apertura/chiusura via web di cancelli e tende.
annuncio
Comprimi
Ancora nessun annuncio.
Misuratore potenze istantanee
Comprimi
X
-
3,84 KWp - 16 moduli SCHOTT PERFORM POLY 240 - Tilt 30° - Azimut -10° ESTInverter PowerOne Aurora PVI 3.0 OUTD. == Guida Raspberry come datalogger == Guida configurazione Raspberry == OEM su Raspberry
-
@peggy
Ho provato a compilare il tuo sketch, ma ci sono un milione di errori dovuti al copia/incolla.
Posta il file, così ci si capisce qualche cosa.
Intanto mi spieghi a che serve #include "WebServer.h"
Il web server è già compreso nella libreria Ethernet.h, e si richiama con EthernetServer server(80);
Commenta
-
*** Citazione integrale rimossa. Violazione art.3 del regolamento del forum. nll ***
Non è il mio sketch me lo hanno dato, io non capisco una mazza di programmazione dove devo postarlo? Provo qui!
#include "EmonLib.h"
EnergyMonitor ct1,ct2,ct3;
#include "Wire.h" // Comes with Arduino IDE
#include "LiquidCrystal_I2C.h"
#include "Ethernet.h"
#include "SPI.h"
#include "WebServer.h"
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
static byte mac_Add[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xDB, 0x63 };
static byte ip_Add[] = { 192, 168, 1, 223 };
WebServer webserver("", 80);
boolean Rele1 = false;
boolean Rele2 = false;
boolean Rele3 = false;
const int LEDpin = 9;
//================================================== ===========================
//funzione pagina Start
void Start(WebServer &server, WebServer::ConnectionType type,
char *url_param, bool param_complete)
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
String s = "";
if (param_complete == true)
{
s = url_param;
if ( s == "T1=ON") {
Rele1 = true;
}
else if ( s == "T1=OFF") {
Rele1 = false;
}
if ( s == "T2=ON") {
Rele2 = true;
}
else if ( s == "T2=OFF") {
Rele2 = false;
}
if ( s == "T3=ON") {
Rele3 = true;
}
else if ( s == "T3=OFF") {
Rele3 = false;
}
}
//gestisco la pagina html in base allo stato delle uscite di Arduino
P(htmlHead) =
""
""
""
""
"";
server.printP(htmlHead);
server.print("");
server.print("");Stato Rele Comandi RELE 1 OFF ");
if(Rele1 == false) server.print("" );
else server.print(" ");
server.print("RELE 2 OFF ");
if(Rele2 == false) server.print("" );
else server.print(" ");
server.print("RELE 3 OFF ");
if(Rele3 == false)server.print("" );
else server.print(" ");
server.print("
}
}
//================================================== ===========================
void setup()
{
lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines and turn on backlight
lcd.backlight(); // finish with backlight on
Serial.begin(9600);
// while (!Serial) {}
// wait for serial port to connect. Needed for Leonardo only
Serial.println("emonTX Shield CT123 Voltage Serial Only example");
Serial.println("OpenEnergyMonitor.org");
// Calibration factor = CT ratio / burden resistance = (100A / 0.05A) / 33 Ohms = 60.606
ct1.current(1, 60.606);
ct2.current(2, 60.606);
ct3.current(3, 60.606);
// (ADC input, calibration, phase_shift)
ct1.voltage(0, 203.26, 1.7);
ct2.voltage(0, 203.26, 1.7);
ct3.voltage(0, 203.26, 1.7);
// Setup indicator LED
pinMode(LEDpin, OUTPUT);
digitalWrite(LEDpin, HIGH);
Ethernet.begin(mac_Add, ip_Add);
webserver.setDefaultCommand(&Start);
webserver.addCommand("index.htm", &Start);
webserver.begin();
delay(100);
}
void loop()
{
//elabora costantemente tutte le richieste provenienti dal browser
webserver.processConnection();
// Calculate all. No.of crossings, time-out
ct1.calcVI(20,2000);
ct2.calcVI(20,2000);
ct3.calcVI(20,2000);
// Print power
Serial.print(ct1.realPower);
Serial.print(" ");
Serial.print(ct2.realPower);
Serial.print(" ");
Serial.print(ct3.realPower);
Serial.print(" ");
Serial.print(ct1.Vrms);
Serial.println();
lcd.setCursor(0, 0);
if (ct1.realPower >= 1000) {
lcd.print("Sole ");
lcd.print(ct1.realPower, 0);
lcd.setCursor(0,2);
lcd.print("Bilancio");
}
else {
lcd.print("Sole ");
lcd.print(ct1.realPower, 0);
lcd.setCursor(0,2);
lcd.print("Bilancio");
}
lcd.setCursor(0, 1);
if (ct2.realPower >= 1000) {
lcd.print("Casa ");
lcd.print(ct2.realPower, 0);
if ((ct1.realPower-ct2.realPower)>0) {
lcd.setCursor(10,2);
lcd.print((ct1.realPower-ct2.realPower), 0);
}
else {
lcd.setCursor(10,21);
lcd.print((ct1.realPower-ct2.realPower), 0);
}
}
else {
lcd.print("Casa ");
lcd.print(ct2.realPower, 0);
if ((ct1.realPower-ct2.realPower)>0) {
lcd.setCursor(10,2);
lcd.print((ct1.realPower-ct2.realPower), 0);
}
else {
lcd.setCursor(10,2);
lcd.print((ct1.realPower-ct2.realPower), 0);
}
}
lcd.setCursor(0,0);
lcd.print("Produzione ");
lcd.print(ct1.realPower / 1000.0, 3);
lcd.print(" KW ");
lcd.setCursor (0,1);
lcd.print("Consumo ");
lcd.print(ct2.realPower / 1000.0, 3);
lcd.print(" KW ");
lcd.setCursor(0,2);
lcd.print("Bilancio ");
lcd.print((ct1.realPower-ct2.realPower), 0);
lcd.print(" Watt ");
lcd.setCursor(0,4); //Start at character 4 on line 0
lcd.print("Tensione ENEL ");
lcd.print((ct1.Vrms), 0);
lcd.print(" V ");
delay(5000);
}Ultima modifica di nll; 15-11-2014, 22:16.Impianto fotovoltaico 6 kw. Termocamino 27kw-
Commenta
-
Buona sera ha tutti
scusa peggy sono stato via e non sono riuscito a seguirti nel forum.
provo fare un po di chiarezza che da quanto ho letto si è perso il filo del problema, o peggy nn è stato chiaro.
1 - la EHT sheild acquistata da peggy messa da sola sopra l'arduino funziona bene in quanto caricando lo sketch "ETH" in allegato, l'arduino risponde alla chiamata con la pagina web, e i pulsanti al suo interno funziona perfettamente. ( lo skecth è preso direttamente dal sito di luca dentella)
2 - con una modifica fatta alla emontx sheild (liberando il pin A4 e A5 utilizzanti dal display ) attaccando solo la emontx sopra arduino ed relativi pin liberi al display con lo sketch "DYS" si riesce ad avere i valori coretti di tensione e corrente stampati nel display
detto ciò risulta che entrambe le configurazioni singole funzionano bene.
e qui nasce il problema:
se ad arduino attacchiamo la ETH sheild con sopra la emontx ed il display carica il secondo skecth non si ottengono i valori di tensione e consumo corretti, ma valori sballati che non centrano niente, se carica il primo sketch non riesce ad accedere alla pagina web dello skecth.
i pin occupati in teoria della ETH (non trovo skemi della compatibile da nessuna parte) dovrebbero essere i digitali 10 / 11/ 12 /13
i pin della emontx sheild sono A0 A1 A2 A3 D9
mentre il display usa i A4 A5
Questo è quello che ne risulta dopo varie prove fatte con peggy, e nn riesco a capire come mai...
la stessa configurazione è la mia solo senza display e con la ETH sheild originale,
mi vine da pensare che la scheda compatibile no usa solo i pin standard
scusate se mi sono dilungato .
Commenta
-
Intanto qualche domanda, poi mi guardo i file.
@peggy
In che ordine inserisci le schede?
Il display è su una shield o lo attacchi volante? È uno di quelli con i tasti? Foto?
Mi spiego meglio:
Se l'ordine è arduino>ethernet>emontx>display........ allora il display non funziona perchè hai tolto il piedino A4 dell'emontx, quindi se il display è sopra l'emontx il segnale proveniente da A4 non lo raggiunge. Da quì il malfunzionamento.
@garide
Come è stata fatta la modifica all'emontx per liberare i piedini A4 A5?
Se la ethernet inserita da sola funziona i piedini sono quelli giusti.
Il problema nasce dal mix delle 3 schede inserite una sull'altra.Ultima modifica di fabiusmontana; 03-11-2014, 09:25.
Commenta
-
Sembra che non sei l'unico ad avere problemi con display i2c e emontx:
I2C bus and EmonTX shield v2 | OpenEnergyMonitor
Commenta
-
-
@peggy
Le librerie sembrano ok.
Metto qui lo sketch e le librerie, a disposizione di chi vuole dare un'occhiata.sketch e LIBRERIE ARDUINO.zip
Commenta
-
-
Auguri e buon anno a tutti, allora ci sono delle novità che presto posterà FABIUSMONTANA perchè lo stesso ha fatto delle prove con la Ethernet non originale e ha risolto il problema dei conflitti. Lui spiegherà meglio il dilemma e così chiunque riscontrerà gli stessi problemi che ho avuto io, potra risolverli.Impianto fotovoltaico 6 kw. Termocamino 27kw-
Commenta
-
Salve ragazzi.
Riepilogo brevemente il problema nella configurazione di peggy (Arduino clone+ethernet shield clone+emontx shield v2):
Errore nelle misure degli ingressi A0 (Volt) e A2 (CT2) dopo l'inserimento della Ethernet shield
I valori rilevati risultano essere circa la metà di quelli reali
Il problema è stato risolto tagliando le piste che portano un qualche segnale della shield ethernet (presumo un riferimento a positivo o a ground, non ho indagato più di tanto in quanto non richiesti per il funzionamento della ethernet) ai pin A0 e A2 dell'Arduino. Dopo il taglio delle due piste, le misure degli ingressi A0 (Volt) e A2 (CT2) risultano corretti.
Nella configurazione di peggy è anche presente un display I2C, quindi non è possibile utilizzare il pin A4 (ingresso CT4 della Emontx shield), perchè necessario alla comunicazione I2C (A4>SDA A5>SCL).
Non basta disattivare via sketch detto ingresso, perchè il circuito della emontx shield trasporta un segnale indesiderato sul pin A4.
Per questo motivo è necessario tagliare o sollevare i pin corrispondenti della Emontx shield.
Questo è lo sketch funzionante:
Commenta
-
Originariamente inviato da garide Visualizza il messaggiola stessa configurazione è la mia solo senza display e con la ETH sheild originale,mi vine da pensare che la scheda compatibile no usa solo i pin standard
Originariamente inviato da fabiusmontana Visualizza il messaggioIl problema è stato risolto tagliando le piste che portano un qualche segnale della shield ethernet (presumo un riferimento a positivo o a ground, non ho indagato più di tanto in quanto non richiesti per il funzionamento della ethernet) ai pin A0 e A2 dell'Arduino. Dopo il taglio delle due piste, le misure degli ingressi A0 (Volt) e A2 (CT2) risultano corretti.
ora peggy puoi procedere con la conclusione del prg inserendo la comunicazione tra i 2 arduino per abilitare l'accensione del boiler visto che la ehternet shield.
Commenta
-
@garide
Controllando gli schemi su internet ho visto che anche la ethernet originale ha quelle piste, quindi è strano che a te funzioni senza problemi.
Nelle mie varie prove l'avevo fatto funzionare variando il solo fattore di calibrazione per i vari ingressi, ma era ben fuori standard di progetto, quello dell'ingresso Volt lo avevo portato a 900, mentre il massimo è intorno a 300, e quello del Ct2 dal 60 originale ad oltre 110. Comunque funzionava bene già così.
@peggy
Ricordati di calibrare tutti gli ingressi che usi:
Nuova calibrazione = calibrazione corrente x (valore reale : valore rilevato emontx)
Da effettuare almeno tre volte per ogni ingresso, cioè:
1. Effettui la misura reale, in contemporanea con emontx
2. Ti calcoli il nuovo fattore di calibrazione
3. Cambi i valori nello sketch
4. Lo ricarichi sull'arduino
5. Ripeti il procedimento dal n.1
6. Ripeti di nuovo dal n.1
Questo per ottenere la massima precisione possibile.
Come carico consiglio un ferro da stiro/stufetta elettrica senza ventilatore.Ultima modifica di fabiusmontana; 08-01-2015, 14:11.
Commenta
-
http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-05-schematic.pdf
Connettore j2
Lo schema è della versione 5, forse il clone è una copia di questa.
La versione 6 (attuale) ha tutti gli ingressi analogici A0>A6 liberi. Probabilmente tu hai la V6Ultima modifica di fabiusmontana; 08-01-2015, 15:29.
Commenta
-
bene bene bene...seguo in disparte mentre arrivano i pezzi un poco alla volta (funduino. funduino- Spedizione gratuita funduino - Vendita al dettaglio funduino da MiniInTheBox)
Commenta
-
Si, funziona. Da quello che leggo sullo schema dovrebbero essere il write protect per la sd card e un detect (credo rilevi se la sd è inserita o meno).Ultima modifica di fabiusmontana; 09-01-2015, 05:14.
Commenta
-
EmonGLCD come visualizzo i primi caratteri
Salve Fabius, scusate se mi intrometto nella discussione, ma sono un po in difficoltà. Ho montato EmonGLCD, l'ho montato correttamente, e ora? Come faccio a testare il display? Immagino si debba scaricare dentro il Software, ma la guida di OpenEnergyMonitor non mi spiega.... Non ho ancora il RaspBerry.. ho il cavetto USb e basta..non so neppure cosa collegare sui 6 PIN a lato del Display.. Tu Fabius o qualche altro potete darmi una dritta? Grazie infinite
Commenta
-
l cavetto sarebbe questo?
Programmer - USB to serial UART - Shop | OpenEnergyMonitor
Se la risposta è si, allora lo usi per scaricarci il software, che trovi qui: https://github.com/openenergymonitor/EmonGLCD
Per farlo ti serve il programma "arduino IDE", che trovi qui: Arduino - Home
Se invece hai solo un cavetto usb con attacco miniUsb, quello serve solo per alimentarlo, e quindi devi comprare il programmatore (vedi sopra)
Commenta
-
Grazie Fabius , Ho solo il cavetto USB con attacco miniusb, però ho EmonTX..I 2 oggetti devono comunicare in modo Wireless, per cui forse non serve acquisti l'adattore USB-UART? Se confermi questo..forse c'è un sistema di Upload su emonGLCD da parte di emonTX... immagino che via Ethernet si debba scaricare un programma su emonTX.. Sai dirmi quale? 1000 Grazie
Commenta
-
La programmazione dell'Atmega328p (il microcontrollore a bordo dei tuoi due apparati) va fatto con quel programmer.
Le ultime Emontx hanno un firmware già caricato, che devi comunque cambiare se devi farla funzionare in maniera diversa dallo standard, o fare delle tarature.
La EmonGLCD va programmata con il cavetto, visto che il chip che ti mandano è vuoto. Non c'è modo di programmarlo come dici tu.
Se conosci qualcuno con un arduino, puoi programmare il chip mettendolo li.
Commenta
Commenta