Έλεγχος θερμοκρασίας με arduino (nodemcu)

Μετρήστε την θερμοκρασία με έναν αισθητήρα και την πλακέτα Nodemcu (arduino + wifi)

Έλεγχος θερμοκρασίας με arduino

Ο Έλεγχος θερμοκρασίας με arduino είναι ένας από τους βασικότερους αυτοματισμούς καθώς λαμβάνει ως είσοδο δεδομένα από το περιβάλλον και τα μετατρέπει σε ψηφιακά σήματα τα οποία μπορούμε να επεξεργαστούμε και στη συνέχεια μπορούμε να χρησιμοποιήσουμε το διαδίκτυο για να ελέγχουμε θερμοκρασίες ή να κάνουμε χειρισμούς.

Αν δεν θέλετε να διαβάσετε όλη τη θεωρία και θέλετε να πάτε κατευθείαν στο “ψητό” απλά κατεβείτε στο τέλος του άρθρου όπου υπάρχει το βίντεο.

Θα σας παρουσιάσουμε έναν αυτοματισμό ο οποίος θα διαβάζει την θερμοκρασία αλλά και υγρασία του χώρου με την χρήση των παρακάτω υλικών

  • Nodemcu
  • DHT22
  • Καλώδια
  • Breadboard (ή ράστερ)

Nodemcu



έλεγχος θερμοκρασίας με arduino
εικ. 1 – nodemcu pinout

Ο μικροελεγκτής nodemcu είναι ένα “arduino” μαζί με WiFi. Πρόκειται για μία εναλλακτική λύση σε περίπτωση που δεν θέλετε να χρησιμοποιήσετε arduino + esp8266 module ή arduino + WiFi shield τα οποία συνολικά μπορεί να κοστίζουν αρκετά παραπάνω χρήματα.

Το Nodemcu είναι 2 σε 1. Περιέχει εκτός του μικροελεγκτή CH340G, το chip esp8266 το οποίο σας επιτρέπει την σύνδεση με WiFi ή να δημιουργήσετε τον δικό σας server και να συνδέεστε σε αυτό και τον ελεγκτή CH340 ο οποίος χρησιμοποιείται στην καρδιά των συμβατών arduino.

Το μέγεθος του είναι όσο περίπου το arduino nano, έχοντας όμως το πλεονέκτημα ότι περιέχει και το Module esp8266 ενσωματωμένο.

Στην παραπάνω εικόνα (εικ. 1 – nodemcu pinout) φαίνεται το nodemcu και οι έξοδοι που βγάζει ενώ παρατηρούμε και τα δύο button τα οποία χρησιμεύουν για εγγραφή μνήμης (flash) και επαναφορά του ελεγκτή (reset).

Η σύνδεση με τον υπολογιστή γίνεται με χρήση θύρα USB τύπου micro-b (όμοιο με αυτά που συνδέονται στα smartphone και tablet)

Αξιοσημείωτο είναι ότι έχουν υπάρξει περιπτώσεις όπου -τουλάχιστον σε μένα- όταν το καλώδιο ήταν μεγάλο (>2m) η λειτουργία του ήταν ασταθής. Αν και πιστεύω ότι δεν φταίει μόνο το καλώδιο αλλά και η έξοδος της θύρας η οποία δεν είχε τα mA που χρειάζονται.

Γενικώς όλα τα προβλήματα τροφοδοσίας λύθηκαν όταν προμηθεύτηκα ένα εργαστηριακό τροφοδοτικό πάγκου με μεταβλητή τάση και ένταση.

nodemcu WiFi
εικ. 2 – nodemcu WiFi

Αισθητήρας DHT11 / DHT22

Αισθητήρας θερμοκρασίας και υγρασίας. Βγαίνει σε δύο εκδόσεις. Με τρία και τέσσερα pin. Η διαφορά τους είναι ότι οι αισθητήρες με τα 4 pin χρησιμοποιούν μία επαφή NC (normal close).

Εσωτερικά έχει έναν χωρητικό αισθητήρα υγρασίας και ένα θερμίστορ. Χάρη σε αυτά τα δύο ηλεκτρονικά εξαρτήματα μπορούμε και μετράμε τόσο την υγρασία όσο και την θερμοκρασία.

Για το παράδειγμά μας θα χρησιμοποιήσουμε τον αισθητήρα με τα 3 pin, για να μετρήσουμε θερμοκρασία και υγρασία.

Στην παρακάτω φωτογραφία βλέπετε το σχέδιο του αισθητήρα και την επεξήγηση των pin. Ακόμη και στον αισθητήρα τον ίδιο υπάρχουν τυπωμένες οι επεξηγήσεις, έτσι δεν θα κάνετε λάθος αν θέλετε να συνδέσετε τον αισθητήρα σε ένα κύκλωμα.

Αισθητήρας θερμοκρασίας - υγρασίας
εικ. 3 – Αισθητήρας θερμοκρασίας – υγρασίας DHT22

Τα υλικά μπορείτε να τα βρείτε από καταστήματα ηλεκτρονικών ή από το ebay. Αν είστε τελείως αρχάριοι σας συστήνω να αγοράσετε τα εξαρτήματα από κάποιο κατάστημα και όχι από το ebay.

Θα πληρώσετε λίγο παραπάνω αλλά θα ξέρετε ότι τα εξαρτήματα που αγοράσατε έχουν ελεγχθεί και λειτουργούν. Είναι πολύ ενοχλητικό να μην είστε βέβαιοι αν φταίει κάποιο εξάρτημα ή κάποια γραμμή στον κώδικά σας. Την πρώτη φορά που είχα ασχοληθεί δεν δούλευαν τα κυκλώματά μου επειδή το breadboard δεν ήταν καλής ποιότητας και δεν πάταγαν καλά τα pin μέσα στις τρύπες (και όταν το διαπίστωσα αλήθεια σας το λέω, ήθελα να χτυπήσω το κεφάλι μου στον τοίχο -που λέει ο λόγος :p-)


Το κύκλωμα

Για το κύκλωμα τα πράγματα είναι αρκετά απλά. Στην παρακάτω εικόνα σας δείχνουμε την καλωδίωση όπου απλώς θα πρέπει να τροφοδοτήσετε το nodemcu με ρεύμα από τον υπολογιστή (μέσω της usb) και στη συνέχεια να δώσετε 5V στο άκρο VCC και 0V στο άκρο GND του DHT22.

Το καλώδιο με το σήμα έχει προγραμματιστεί να δουλέψει στην θύρα D3 (ή GPIO0) αλλά αυτό μπορείτε να το αλλάξετε αν πειράξετε τον κώδικα.

έλεγχος θερμοκρασίας με arduino
εικ. 4 – σύνδεση

Εγκατάσταση πλακέτας στο Arduino IDE

Για να δουλέψετε με το nodemcu θα πρέπει πρώτα να εγκαταστήσετε την πλακέτα στο λογισμικό.

  1. Αρχείο –> προτιμήσεις και στο σημείο όπου λέει “επιπλέον  URLs διαχειριστή πλακετών, βάλτε την διεύθυνση http://arduino.esp8266.com/stable/package_esp8266com_index.json
  2. στη συνέχεια πηγαίνετε στο μενού Σχέδιο –> συμπερίληψη βιβλιοθήκης –> διαχείριση βιβλιοθηκών
  3. Στο παράθυρο που θα ανοίξει, πληκτρολογήστε στο φιλτράρισμα ESP8266 και εγκαταστήστε την βιβλιοθήκη esp8266.

Είστε έτοιμοι! τώρα αν πάτε στις πλακέτες θα βρείτε και το nodemcu 0.9 το οποίο είναι αυτό που θα χρησιμοποιήσουμε και εμείς στο παράδειγμα.

Οι βιβλιοθήκες

Για να τρέξει ο κώδικας θα πρέπει να έχετε εγκατεστημένες τις κατάλληλες βιβλιοθήκες στο λογισμικό arduino. Μπορείτε να κατεβάσετε τις δύο βιβλιοθήκες που καλύπτουν σχεδόν όλους τους τύπους αυτού του αισθητήρα.

Για να δουλέψουν οι βιβλιοθήκες θα πρέπει να τις τοποθετήσετε στον στον υποφάκελο Libraries που είναι εγκατεστημένη η εφαρμογή. Για παράδειγμα, αν η εφαρμογή σας είναι εγκατεστημένη στο:

C:\Program Files (x86)\Arduino\

Θα πρέπει να μπείτε εκεί και στην συνέχεια στον υποφάκελο libraries και να ρίξετε τα αρχεία εκεί (καλύτερα σε υποφάκελο DHT ή κάτι ανάλογο και όχι χύμα). Εγκαταστήστε και τις δύο βιβλιοθήκες.

Κατεβάστε την πρώτη βιβλιοθήκη από εδώ

Κατεβάστε την δεύτερη βιβλιοθήκη από εδώ


Ο κώδικας

Ο κώδικας που παραθέτουμε παρακάτω είναι σύμφωνος και λειτουργικός με τα σχέδια στις παραπάνω εικόνες. Αν θέλετε να τροποποιήσετε τον κώδικα και να διαβάζετε την είσοδο του αισθητήρα σε διαφορετική θύρα, αλλάξτε και την καλωδίωση.

#include "DHT.h"        // including the library of DHT11 temperature and humidity sensor
#define DHTTYPE DHT22   // DHT 22
#define dht_dpin 0
DHT dht(dht_dpin, DHTTYPE); 
void setup(void)
{ 
 dht.begin();
 Serial.begin(9600);
 Serial.println("Humidity and temperature\n\n");
 delay(700);

}
void loop() {
   //float h = dht.readHumidity();
   float t = dht.readTemperature();         
   //Serial.print("Current humidity = ");
   //Serial.print(h);
   //Serial.println("%  ");
   Serial.print("Current temperature = ");
   Serial.print(t); 
   Serial.println("C ");
 delay(3500);
}

Το αποτέλεσμα του κώδικα μπορείτε να το δείτε αν ανοίξετε την σειριακή θύρα. Εκεί θα δείτε τόσο την θερμοκρασία όσο και την υγρασία που διαβάζει ο αισθητήρας σας.

Οκτώβριος 13, 2018

1 απαντήσεις σε "Έλεγχος θερμοκρασίας με arduino (nodemcu)"

    Αφήστε ένα σχόλιο

    Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

    Σχεδιασμός © GetCert. Με επιφύλαξη παντός δικαιώματος.