Arduino: Controllare temperatura e umidità

DESCRIZIONE
Misurare temperatura e umidità tramite il sensore DHT11 e arduino.

Osservando il datasheet del DHT11 si nota che va collegata anche una resistenza (detta di pull-up) sul pin 2, e anche che vengono usati solo 3 piedini su 4 disponibili.
qui troverete la libreria che permette di usarlo

MATERIALE USATO
Sensore umidità e temperatura DHT11
Resistenza da 5k
Arduino

SCHEMA

SKETCH
#include

dht11 DHT11;

#define DHT11PIN 2

void setup()
{
  Serial.begin(9600);

}

void loop()
{

  int chk = DHT11.read(DHT11PIN);

  Serial.print("stato sensore: ");
  switch (chk)
  {
    case 0: Serial.println("OK"); break;
    case -1: Serial.println("Checksum error"); break;
    case -2: Serial.println("Time out error"); break;
    default: Serial.println("Unknown error"); break;
  }

  Serial.print("Umidita (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperatura (Celsius): ");
  Serial.println((float)DHT11.temperature, 2);

  delay(5000);
}

Arduino: controllare una lampada da 220V

Lo scopo è  interrompere la fase di una 220v, che alimenta una lampadina, per 5 secondi e poi mantenerla per altri 5 e cosi via.
Materiale occorrente:
1 resistenza da 330 ohm
1 rele con input 28VDC10A – ouput 220/250VAC10A
1 transistor BC547
1 diodo 1N4001
Il rele è un interruttore controllato da una bobina. In base a quanta corrente entra nella bobina l’interruttore 1 sarà chiuso su 3  o su 2. Da notare che si controlla un circuito con la corrente di un’altro circuito, nel nostro caso si controlla la 220V con un circuito di 6V.
Lo schema seguito è quello sotto
Lo sketch caricato su arduino:
int tempPinBase = 13; 
void setup()
{
  
 Serial.begin(9600); //apertura porta seriale, set della velocità a 9600 bps
}
void loop()
{
digitalWrite(tempPinBase, HIGH);
delay(5000);  
digitalWrite(tempPinBase, LOW);
delay(5000);
//aspetta 5 secondo prima di ripetere
}
come si vede è abbastanza semplice. Manda tensione alta, conta fino a 5,  spegne, conta fino a 5.
Prima di provarlo direttamente con la 220V (con la 220V SI MUORE) ho messo al posto della lampada  e del generatore, una resistenza e un LED alimentati da 5V.

Arduino: Luminosità Led Con Potenziometro

L’esperimento consiste nel regolare, tramite potenziometro, l’intensità della luce emessa da un LED.

Materiale richiesto:
1 resistenza 1KOhm
1  potenziometro
1 led
e ovviamente un arduino.
Piccolo ripasso dei componenti:

Potenziometro,  fondamentalmente è un dispositivo che  permette di variare la resistenza, e quindi la quantita di corrente che attraversa il circuito, tramire una semplice manopola. O meglio, non regola la quantita di corrente  ma bensi la tensione. Infatti le resistenze NON bloccano la corrente! come per tutti i bipoli elettrici, si ha che I(in) = I(out), sempre!
Quello che fanno è assorbire della potenza e provocare una caduta di tensione ai capi. Ricordiamo che la prima legge di Ohm è V=R*I, essendo I costante variando R variamo la V.





Led, è un compontente che sviluppa luce al passaggio di corrente. O meglio, il led si comporta come un conduttore perfetto quando si applica una tensione in un certo modo (polarizzazione diretta),  e diventa un isolante quando si inverte la tensione (polarizzazione inversa) . Tutto questo in teoria, nella realtà, osservando la curva corrente-tensione di un diodo, si nota che la conduzione in polarizzazione diretta
è possibile solo superando una tensione di soglia Vg. Il polo positivo è detto anodo, quello negativo catodo. La polarizzazione diretta è quando si applica il positivo all anodo e il negativo al catodo
Riassumento e semplificando, possiamo considerare questo dispositivo dal suo aspetto funzionale (ideale) come un interruttore, il quale risulta essere chiuso quando è polarizzato direttamente (quindi percorso da una determinata intensità di corrente) ed aperto quando è polarizzato inversamente (non consente il passaggio di intensità di corrente, nel caso ideale).

Schema elettronico

 

 

 

 

 

 

 

 

Per quanto riguarda la  parte software abbiamo

int valore = 0;
int pinPonteziometro = A0;
int pinLed = 9;
void setup() {
pinMode(pinPonteziometro, INPUT); // pin potenziometro
pinMode(pinLed, OUTPUT); // pin led
Serial.begin(9600); // inizializza il collegamento seriale

}

void loop() {
valore = analogRead(pinPonteziometro); // legge il valore analogico del //potenziometro
Serial.print("Valore letto dal potenziometro:");
Serial.println(valore); // Stampa il valore letto
if (valore > 255)
digitalWrite(pinLed, HIGH); //accende il led
if (valore < 0)
digitalWrite(pinLed, LOW); //spegne il led
if (valore > 0 && valore < 255)
digitalWrite(pinLed, valore); // intensita luminosa del led uguale al valore letto dal potenziometro
delay(1000); // aspetta 1000 millisecondi, ossia un secondo
}

da notare che la luminosità del led può assumere valori che vanno da 0 a 255, mentre i valori del potenziometro vanno fino a 1024, se non sbaglio, ecco spiegato il perchè delle if.

Uno sketch è composto da due funzioni: setup() che serve a inizializzare le varie componenti e loop() che viene eseguita in continuazione su arduino. Altre funzioni native di arduino sono:

  • digitalWrite(a1,a2), comunica al pin digitale a1 di assumere il valore a2
  • analogRead(a1), legge il valore analogico dalla porta a1.