Arduino: Progetto Multi Sensore

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:

Cattura di schermata (12)

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:

WP_20150218_004 WP_20150218_003 WP_20150218_009 WP_20150218_008 WP_20150218_006