Nodo03 - Souliss Arduino Uno + Ethernet W5100 + seriale RS485

Aggiornato il: Feb, 2019 @ 23:11

NOTA: IN CONTINUO AGGIORNAMENTO.

Schema a blocchi Nodo03


Schema 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

  1. You also can take part in ongoing promotions, together with Slot of the Week, to receive free spins and different prizes. If you ever have any questions on these bonuses, you can to|you possibly can} communicate to an agent 24/7 by way of stay chat. With all of those factors working in its favor, it's no shock that online playing has become so well-liked in South Korea. If you are be} looking for a way to take pleasure in your favorite casino games with 우리카지노 out touring removed from house, then online playing will be the good answer. Finally, it's price mentioning that online playing is seen as a relatively safe exercise in South Korea. This is because of|as a result of} the Korean authorities has put in place quantity of|numerous|a variety of} rules to ensure that|to make sure that} online playing sites are fair and safe for gamers.

    RispondiElimina

Posta un commento