Ciao a tutti!
l'articolo di oggi tratta del progetto realizzato dal gentilissimo Tiziano che ha deciso di consentirmi la ricondivisione del suo lavoro.
Il dispositivo realizzato è un orologio/datario, con visualizzazione di temperatura e umidità, basato su Digispark, una piccolissima scheda a microcontrollore Arduino compatibile.Per la data e l'ora è stato utilizzato un modulo RTC con collegamento I2C,
mentre la lettura della temperatura e dell'umidità avviene grazie al modulo DHT 11.
quello che vi posto di seguito è lo sketch da caricare nel microcontrollore, se non sapete come caricarlo o volete maggiori informazioni su questo componente, vi rimando all'articolo introduttivo su Digispark.
Ecco il codice:
Questo è lo schema elettrico realizzato con grande pazienza da Tiziano:
Ed ecco la realizzazione fisica del progetto:
Questo è tutto! se avete domande lasciate un commento qui sotto come al solito, oppure contattare Tiziano Bianchettin il realizzatore del progetto e visitate il suo sito.
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
l'articolo di oggi tratta del progetto realizzato dal gentilissimo Tiziano che ha deciso di consentirmi la ricondivisione del suo lavoro.
Il dispositivo realizzato è un orologio/datario, con visualizzazione di temperatura e umidità, basato su Digispark, una piccolissima scheda a microcontrollore Arduino compatibile.Per la data e l'ora è stato utilizzato un modulo RTC con collegamento I2C,
mentre la lettura della temperatura e dell'umidità avviene grazie al modulo DHT 11.
quello che vi posto di seguito è lo sketch da caricare nel microcontrollore, se non sapete come caricarlo o volete maggiori informazioni su questo componente, vi rimando all'articolo introduttivo su Digispark.
Ecco il codice:
- #include <TinyDHT.h> // Liberia sensore DHT (umidtà temperatura)
- #include <LiquidCrystal_I2C.h> // Libreria Display con protocollo I2C
- #include <TinyRTClib.h> // LIbreria del RTC (real time clok)
- #include <TinyWireM.h> // Libreria controllo I2C
- #include <avr/power.h> // Libreria per ridurre la frequenza a 16 MHz a 5 volt
- #define DHTTYPE DHT11 //imposto il modella di DHT
- #define TEMPTYPE 0 // imposto la lettura temperatura in gradi celsius
- #define DHTPIN 1 // pin dove collego il DHT
- DHT dht(DHTPIN, DHTTYPE); // definisco il sensore
- RTC_DS1307 RTC; // definisco il tipo di RTC
- LiquidCrystal_I2C lcd(0x27,20,4); // definisco il tipo di display (20 colonne x 4 righe)
- void setup() {
- if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
- dht.begin(); // se la frequenza è 16 MHz e la tensione è 5 volt, inizzializzare DHT
- TinyWireM.begin(); // inizzializzo il I2C
- RTC.begin(); // inizzializzo l'RTC
- lcd.init(); //inizzializzo il display
- lcd.backlight(); // accendo il display
- lcd.print(" Vi presento");
- lcd.setCursor(0,1);
- lcd.print(" RoboTittino");
- lcd.setCursor(0,2);
- lcd.print("Umidita' Temperatura");
- lcd.setCursor(0,3);
- lcd.print(" Data Ora");
- delay(4000); // scrivo la frasr di presenazione ed attendo 4 secondi
- lcd.clear(); // cancello il display
- lcd.setCursor(0,3);
- lcd.print("ORA:");
- lcd.setCursor(0,2);
- lcd.print("DATA:"); // nella terza e quate riga scivo "ORA" e "DATA"
- if (! RTC.isrunning()) {
- RTC.adjust(DateTime(__DATE__, __TIME__)); // regolo l'ora del RTC con quella del PC
- }
- }
- void loop() {
- int8_t h = dht.readHumidity(); // leggo l'umidità
- int16_t t = dht.readTemperature(TEMPTYPE); // leggo la temperatura
- lcd.setCursor(0, 0);
- if ( t == BAD_TEMP || h == BAD_HUM ) { // se non rileva nessun dato
- lcd.print("Collegatre DHT"); // scrivo messaggio d'errore nella prima riga
- } else {
- lcd.print("Umidita': "); // nella prima riga scrivo "Umidità"
- lcd.setCursor(10,0);
- lcd.print(h); // nella prima riga nella colonna 10, scrivo l'umidità rilevata
- lcd.setCursor(12, 0);
- lcd.print(" % ");// nella prima riga nella colonna 12, scrivo il simbolo %
- lcd.setCursor(0, 1);
- lcd.print("Temp:"); // nella seconda riga scrivo "Temmp"
- lcd.setCursor(10, 1);
- lcd.print(t);// nella seconda riga nella colonna 10, scrivo la temperatura rilevata
- lcd.setCursor(13, 1);
- lcd.print("*C");// nella seconda riga nella colonna 13, scrivo il simbolo "*C"
- }
- DateTime now = RTC.now(); // leggo i dati del RTC
- lcd.home();
- lcd.setCursor(7,2);
- if(now.day()<10)
- lcd.print("0");
- lcd.print(now.day(), DEC);
- lcd.print("/");
- if(now.month()<10)
- lcd.print("0");
- lcd.print(now.month(), DEC);
- lcd.print("/");
- lcd.print(now.year(), DEC);
- // nella settima colonna della terza riga scrivo: gg/mm/aaaa
- lcd.setCursor(8,3);
- if(now.hour()<10)
- lcd.print("0");
- lcd.print(now.hour(), DEC);
- lcd.print(":");
- if(now.minute()<10)
- lcd.print("0");
- lcd.print(now.minute(), DEC);
- lcd.print(":");
- if(now.second()<10)
- lcd.print("0");
- lcd.print(now.second(), DEC);
- // nell'ottava colonna della quarta riga scrivo hh:mm:ss
- delay(1000); //attendo un secondo prima di una nuova lettura
- }
Questo è lo schema elettrico realizzato con grande pazienza da Tiziano:
Ed ecco la realizzazione fisica del progetto:
Questo è tutto! se avete domande lasciate un commento qui sotto come al solito, oppure contattare Tiziano Bianchettin il realizzatore del progetto e visitate il suo sito.
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
Salve non riesco a trovare/scaricare le librerie, mi può aiutare? Grazie.
RispondiEliminaCiao scusa se non le ho aggiunte nel post, prova queste, te le elenco:
Eliminahttps://github.com/adafruit/TinyDHT
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
https://github.com/adafruit/TinyRTCLib
https://github.com/adafruit/TinyWireM
Fammi sapere, ciao!
Le altre le ho già quella che mi manca è .
RispondiEliminaLe altre le ho già quella che mi manca è la Libreria per ridurre la frequenza a 16 MHz a 5 volt.
RispondiEliminaLe altre le ho già quella che mi manca è la Libreria per ridurre la frequenza a 16 MHz a 5 volt.
RispondiEliminahai provato a compilare? che errore ti da?
RispondiEliminaCiao Daniele, stavo realizzando questo progetto ma se provo a compilarlo, mi dà questo errore:
RispondiElimina"Sto compilando lo sketch...
"C:\\Users\\claud\\Documents\\ArduinoData\\packages\\arduino\\tools\\avr-gcc\\4.8.1-arduino5/bin/avr-g++" -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=attiny85 -DF_CPU=16500000L -DARDUINO=10813 -DARDUINO_AVR_DIGISPARK -DARDUINO_ARCH_AVR "-IC:\\Users\\claud\\Documents\\ArduinoData\\packages\\digistump\\hardware\\avr\\1.6.7\\cores\\tiny" "-IC:\\Users\\claud\\Documents\\ArduinoData\\packages\\digistump\\hardware\\avr\\1.6.7\\variants\\digispark" "-IC:\\Users\\claud\\Documents\\Arduino\\libraries\\TinyDHT-master" "-IC:\\Users\\claud\\Documents\\Arduino\\libraries\\Arduino-LiquidCrystal-I2C-library-master" "-IC:\\Users\\claud\\Documents\\ArduinoData\\packages\\digistump\\hardware\\avr\\1.6.7\\libraries\\TinyRTClib" "-IC:\\Users\\claud\\Documents\\ArduinoData\\packages\\digistump\\hardware\\avr\\1.6.7\\libraries\\TinyWireM" "-IC:\\Users\\claud\\Documents\\ArduinoData\\packages\\digistump\\hardware\\avr\\1.6.7\\libraries\\Wire" "C:\\Users\\claud\\AppData\\Local\\Temp\\arduino_build_889167\\sketch\\Orologio_digispark.ino.cpp" -o "C:\\Users\\claud\\AppData\\Local\\Temp\\arduino_build_889167\\sketch\\Orologio_digispark.ino.cpp.o"
C:\Users\claud\Documents\Arduino\Orologio_digispark\Orologio_digispark.ino: In function 'void setup()':
Orologio_digispark:19:6: error: 'class LiquidCrystal_I2C' has no member named 'init'
lcd.init(); //inizzializzo il display
^
Più di una libreria trovata per "LiquidCrystal_I2C.h"
Usata: C:\Users\claud\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master
Non usata: C:\Users\claud\Documents\ArduinoData\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkLCD
Più di una libreria trovata per "TinyRTClib.h"
Usata: C:\Users\claud\Documents\ArduinoData\packages\digistump\hardware\avr\1.6.7\libraries\TinyRTClib
Non usata: C:\Users\claud\Documents\Arduino\libraries\TinyRTCLib-master
Più di una libreria trovata per "TinyWireM.h"
Usata: C:\Users\claud\Documents\ArduinoData\packages\digistump\hardware\avr\1.6.7\libraries\TinyWireM
Non usata: C:\Users\claud\Documents\Arduino\libraries\TinyWireM-master
Uso la libreria TinyDHT-master alla versione 1.1.0 nella cartella: C:\Users\claud\Documents\Arduino\libraries\TinyDHT-master
Uso la libreria Arduino-LiquidCrystal-I2C-library-master nella cartella: C:\Users\claud\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master (legacy)
Uso la libreria TinyRTClib nella cartella: C:\Users\claud\Documents\ArduinoData\packages\digistump\hardware\avr\1.6.7\libraries\TinyRTClib (legacy)
Uso la libreria TinyWireM alla versione 1.0.0 nella cartella: C:\Users\claud\Documents\ArduinoData\packages\digistump\hardware\avr\1.6.7\libraries\TinyWireM
Uso la libreria Wire nella cartella: C:\Users\claud\Documents\ArduinoData\packages\digistump\hardware\avr\1.6.7\libraries\Wire (legacy)
exit status 1
'class LiquidCrystal_I2C' has no member named 'init' "
Premetto che ho usato le tue librerie.Se potresti aiutarmi.
Grazie
Salve, potrebbe inviarmi lo schema? Quello sopra non si vede bene.
RispondiEliminaGrazie mille