
Ciao a tutti!
In questo articolo vi farò vedere come realizzare un progetto che comprenda molti sensori.
Il progetto che stiamo per realizzare avrà le seguenti funzioni:
– Leggere temperatura e umidità e mostrarla sul display LCD
– Rilevare movimenti
– Accendere/Spegnere la luce in base alla luminosità
– Mostrare su dei LED la temperatura e far suonare un buzzer se la temperatura supera i 35°C
INIZIAMO!!
Prima di tutto il materiale di cui abbiamo bisogno è:
– Arduino Uno
– Breadboard (basetta)
– 12 LED
– 3 resistori da 220Ohm
– 2/3 resistori da 1KOhm
– Una fotoresistenza
– Un buzzer
– Un sensore di umidità e temperatura DHT11
– Un sensore di movimento
– Un display LCD 16×02
Montiamo il circuito come descritto nell’immagine seguente:
Poi passiamo al caricamento dello sketch:
[c]
// Created by //
// Alessio Bigini 2015 //
// https://alessiobigini.it //
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int buzzer = 11;
int led = 8;
int led1 = 6;
int tiltPin = 5;
int ledtilt = 4;
void setup()
{
Serial.begin(9600);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(led, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(tiltPin, INPUT);
pinMode(ledtilt, OUTPUT);
lcd.init();
lcd.backlight();
dht.begin();
lcd.print(" Alessio Bigini");
lcd.setCursor(0, 1);
lcd.print("");
delay(2500);
}
void loop()
{
int h = dht.readHumidity(); //Leggo l’umidità
int t = dht.readTemperature(); //Leggo la temperatura
lcd.setCursor(0, 0); //Stampo a schermo la temperatura e l’umidità
lcd.print("Temperatura: ");
lcd.print(t);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Umidita’: ");
lcd.print(h);
lcd.print("%");
if (t < 18)//Temperatura inferiore a 18°C
{
digitalWrite(12, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
noTone(buzzer);
}
if (t > 18 && t < 35)//Temperatura superiore a 18°C e inferiore a 35°C
{
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(12, LOW);
noTone(buzzer);
}
if (t > 35)//Temperatura superiore a 35°C
{
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(12, LOW);
tone(buzzer, 392);
}
int sensore = digitalRead(tiltPin);
if ( sensore == HIGH )
digitalWrite(ledtilt, HIGH);
else
digitalWrite(ledtilt, LOW);
int luce = analogRead (A0); //porta analogica utilizzata
if (luce < 100) //condizione
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
if (luce < 100) //condizione
digitalWrite(led1, HIGH);
else
digitalWrite(led1, LOW);
}
[/c]
Una volta caricato lo sketch divertitevi a modificare il progetto aggiungendo sensori ecc.
A seguire alcune foto del progetto:
il sensore di movimento eè del tipo :
TILT inclinazione SW-520D
Esatto
è tutto perfetto pero nella verifica mi da solo un piccolo problema mi dice :
#include “DHT.h” //Libreria sensore
compilation terminated
exit status 1
errore durente la compilazione
pero guardando su internet io una libreria del dht l ho trovata e l ho installata e non capisco dove sto sbagliando sara sicuramente un errore di distrazione….non so se magari potevi aiutarmi
è un progetto vecchio ma per me molto interessante (grazie); ho un dubbio per voi sicuramente elementare ma.. nel caso di sensori non collegati da cavi ma da un sistema wireless bisogna utilizzare più arduino uno? grazie!
Ciao, potresti creare una rete con un ESP8266 o con un modulo Wi-Fi, oppure utilizzare più Arduino Uno e/o ATTiny85, tutto dipende dal tipo di sensori e dalla difficoltà di calcolo, A presto!