Nodo03 - Souliss Arduino Uno + Ethernet W5100 + seriale RS485
NOTA: IN CONTINUO AGGIORNAMENTO.
Schema a blocchi Nodo03
| Schema Nodo03 |
Codice Arduino
/**************************************************************************
* Utilizzo : Nodo CANTINA
* Progetto : Nodo03 - Arduino uno + Ethernet W5100 + RS485
* Autore : DromegaWeb
* Scopo : Questo nodo è un Bridge ethrnet con RS485 verso i peer
*
* Data : 21 Giugno 2015 - Prima bozza
* 22 Dicembre 2015 - Stesura I/O necessari
* 23 Luglio 2016 - Aggiunta sensore DHT11
* 02 Aprile 2017 - Aggiornamento sistema di compilazione
* 30 Aprile 2018 - Ultimato Funzionante
* 01 Feb 2019 - Controllato Funzionante
**
** NOTE : Pin riservati
* RS485 -> 0,1,3
* 0 -> RO
* 1 -> DI
* 3 -> DE,RE
** W5100 -> 10,11,12,13
** DHT11 -> A0
* OUTPUT -> 6,7,8,9,A2,A3
* 6 -> Valvola irrigazione zona 01
* 7 -> Valvola irrigazione zona 02
* 8 -> Luce Cantina
* 9 -> Luce Vini
* A2 -> Ventola scambio termico -> utilizzo ingresso analogico come uscita
* A3 -> Ventola anti umidità -> utilizzo ingresso analogico come uscita
* INPUT -> 2,5
* 2 -> PIR Luci Cantina
* 5 -> PIR Luci Vini
*
*
**
****************************************************************************/
// Let the IDE point to the Souliss framework
#include "SoulissFramework.h"
//*******INIZIO*************Set RS845 ***************
#define USARTDRIVER_INSKETCH // La RS485 utilizza i pin 0,1,3
#define USARTDRIVER Serial // Dico al driver vNet di usare la seriale 0 dell'UNO
#define USART_TXENABLE 1
#define USART_TXENPIN 3 // Pin 3 riservato ad enable seriale RS485 con 0 e 1 per RX e TX
#define USART_DEBUG 0
//*******FINE *************Set RS845 ***************
// Configure the framework
#include "bconf/StandardArduino.h" // Uso un Arduino standard.
#include "conf/ethW5100.h" // Uso connessione Ethernet Wiznet W5100
#include "conf/SuperNode.h" // Include i parametri per il SuperNode
#include "conf/usart.h" // Uso la seriale
#include <SPI.h>
#include <Adafruit_Sensor.h> //Usata dal DHT
#include <DHT_U.h> //Usata dal DHT
#include "Souliss.h"
#include "DromegaWebConf.h" // Contiene set IP del nodo
//TYPICALS
#define Luci_Cantina 0 // 1 Slot
#define Luci_Vini 1 // 1 Slot
#define VALVOLA_01 2 // 1 Slot
#define VALVOLA_02 3 // 1 Slot
#define VENTOLA_TEMP 4 // 1 Slot
#define VENTOLA_UMID 5 // 1 Slot
#define TEMPERATURE 6 // 2 Slot
#define HUMIDITY 8 // 2 Slot
// PIN SETTING
#define Pin_PIR_Luci_Cantina 2 // in
#define Pin_PIR_Luci_Vini 5 // in
#define Pin_VALVOLA_01 6 // out
#define Pin_VALVOLA_02 7 // out
#define Pin_Luci_Cantina 8 // out
#define Pin_Luci_Vini 9 // out
#define Pin_VENTOLA_TEMP A2 // out
#define Pin_VENTOLA_UMID A3 // out
#define Pin_DHT_11 A0 // in
// DHT
#define DHTPIN Pin_DHT_11 // Per carenza di ingressi uso un pin analogico da connettere al sensore DHT11
#define DHTTYPE DHT11 // DHT 11 tipo di DHT usato
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE, 15);
void setup()
{
Initialize();
INIT_Nodo03(); //Mappa rete nodo vedi DromegaWebConf.h
dht.begin(); //inizializza DHT
// T y p i c a l s
Set_T12(Luci_Cantina);
Set_T12(Luci_Vini);
Set_T11(VALVOLA_01);
Set_T11(VALVOLA_02);
Set_T11(VENTOLA_TEMP);
Set_T11(VENTOLA_UMID);
Set_Temperature(TEMPERATURE);
Set_Humidity(HUMIDITY);
// I N P U T
pinMode(Pin_PIR_Luci_Cantina, INPUT); // PIR Luci Cantina
pinMode(Pin_PIR_Luci_Vini, INPUT); // PIR Luci Vini
pinMode(Pin_DHT_11, INPUT); // ingresso DHT 11 , sensore temp_um OK funziona su ingresso analogico (07-08-2016)
// O U T P U T
pinMode(Pin_Luci_Cantina, OUTPUT); // Luce Cantina
pinMode(Pin_Luci_Vini, OUTPUT); // Luce Vini
pinMode(Pin_VALVOLA_01, OUTPUT); // Valvola irrigazione zona 01
pinMode(Pin_VALVOLA_02, OUTPUT); // Valvola irrigazione zona 02
pinMode(Pin_VENTOLA_TEMP, OUTPUT); // Ventola scambio termico -> utilizzo ingresso analogico come uscita
pinMode(Pin_VENTOLA_UMID, OUTPUT); // Ventola anti umidità -> utilizzo ingresso analogico come uscita
}
void loop()
{
EXECUTEFAST() {
UPDATEFAST();
FAST_90ms() {
DigIn( Pin_PIR_Luci_Cantina, Souliss_T1n_AutoCmd + 10 , Luci_Cantina); //PIR Luci Cantina
DigIn( Pin_PIR_Luci_Vini, Souliss_T1n_AutoCmd + 10 , Luci_Vini); //PIR Luci Vini
Logic_T12(Luci_Cantina);
Logic_T12(Luci_Vini);
Logic_T11(VALVOLA_01);
Logic_T11(VALVOLA_02);
Logic_T11(VENTOLA_TEMP);
Logic_T11(VENTOLA_UMID);
nDigOut(Pin_Luci_Cantina, Souliss_T1n_Coil, Luci_Cantina); //Luce Cantina
nDigOut(Pin_Luci_Vini, Souliss_T1n_Coil, Luci_Vini); //Luce Vini
DigOut(Pin_VALVOLA_01, Souliss_T1n_Coil, VALVOLA_01); //Valvola irrigazione zona 01
DigOut(Pin_VALVOLA_02, Souliss_T1n_Coil, VALVOLA_02); //Valvola irrigazione zona 02
DigOut(Pin_VENTOLA_TEMP, Souliss_T1n_Coil, VENTOLA_TEMP); //Ventola scambio termico
DigOut(Pin_VENTOLA_UMID, Souliss_T1n_Coil, VENTOLA_UMID); //Ventola anti umidità
}
FAST_2110ms() {
Logic_Temperature(TEMPERATURE);
Logic_Humidity(HUMIDITY);
}
FAST_7110ms() {
Timer_T12(Luci_Cantina);
Timer_T12(Luci_Vini);
}
FAST_PeerComms();
START_PeerJoin();
}
EXECUTESLOW() {
UPDATESLOW();
SLOW_10s() {
Souliss_ReadDHT(TEMPERATURE, HUMIDITY);
}
SLOW_PeerJoin(); // riconnette se il Gateway viene riavviato
}
}
void Souliss_ReadDHT(uint8_t TEMPERATURE_SLOT, uint8_t HUMIDITY_SLOT){ // Legge la temperatura e l'umidutà da DHT ogni 10 secondi
float h = dht.readHumidity(); // Legge l'umidità
float t = dht.readTemperature(); // Legge la temperatura in gradi Celsius
ImportAnalog(TEMPERATURE_SLOT, &t);
ImportAnalog(HUMIDITY_SLOT, &h);
}


Commenti
Posta un commento