Mini Arduino Environment Monitor ** UPDATE - Ajout du RTC ***: 14 étapes (avec photos)

Mini Arduino Environment Monitor ** UPDATE - Ajout du RTC ***: 14 étapes (avec photos)

Table des matières:

Anonim

Voici un exemple d'utilisation de l'Arduino pour contrôler divers paramètres environnementaux et les afficher sur un écran LCD.

Remarque: J'ai ajouté une horloge en temps réel !! Pour voir les étapes, les pièces ajoutées et Sketch, j'ai ajouté de nouvelles étapes.

Provisions:

Étape 1: Liste de pièces

Arduino uno R3 ou compatible 30.00

Écran LCD couleur Tains "1.8" Sainsmart 18.50

Capteur de température et d'humidité numérique DHT11 6.44

Mini planche à pain 5.00

Cavalier

Étape 2: Connectez l'écran à Arduino

J'ai utilisé la mini planche à pain pour connecter l'écran à l'Arduino.

Utilisez des fils de liaison pour connecter les broches Arduino à la carte dans l'ordre suivant:

Arduino: VCC AFFICHAGE TFT 5v

GND GND

Digital 4 SCL

5 SDA

6 CS

7 cc

8 RES

Étape 3: Testez l'affichage

Afin de tester l'affichage, vous devrez télécharger et installer deux bibliothèques dans votre IDE Arduino.Bien que l’écran soit vendu par Sainsmart, j’ai eu du mal à utiliser leurs bibliothèques et je les ai téléchargées à partir d’ADAFRUIT, qui vend un écran similaire et qui possède une documentation et un support bien améliorés. les instructions et les bibliothèques d'Adafruit, mais j'achète suffisamment d'autres articles chez Adafruit pour apaiser ma conscience. Si vous finissez par suivre le même chemin que moi, je vous encourage à au moins regarder les autres services qu’ils proposent.

Deux bibliothèques doivent être téléchargées et installées: la première est la bibliothèque ST7735 (qui contient le code de bas niveau spécifique à ce périphérique). La seconde est la bibliothèque Adafruit GFX (qui gère les opérations graphiques communes à de nombreux écrans vendus par Adafruit). Téléchargez les deux fichiers ZIP, décompressez et renommez les dossiers en «Adafruit_ST7735» et «Adafruit_GFX», placez-les dans votre dossier de bibliothèques Arduino et redémarrez l'IDE Arduino.

Vous devriez maintenant pouvoir voir la bibliothèque et des exemples dans la sélection Fichier> Exemples> Adafruit_ST7735> Esquisse graphicstest. charger le croquis sur votre Arduino.

Si vous avez réussi à installer les bibliothèques et à charger le croquis du graficstest, cliquez sur le bouton de vérification pour compiler le croquis et assurez-vous qu'il n'y a pas d'erreur.

Il est temps de connecter votre Arduino à votre PC à l'aide du câble USB et de cliquer sur le bouton de téléchargement pour télécharger le dessin sur l'Arduino.

Une fois téléchargé, l’Arduino doit effectuer toutes les procédures d’affichage test! Si vous ne voyez rien - vérifiez si le rétro-éclairage est allumé, si le rétro-éclairage n'est pas allumé, il y a un problème avec le câblage d'alimentation. Si le rétroéclairage est allumé mais que rien ne s'affiche à l'écran, vérifiez à nouveau le câblage des signaux numériques.

Si tout fonctionne comme prévu, nous sommes prêts à câbler le capteur DHT.

Étape 4: Connectez le capteur DHT11 à l’Arduino

Comme pour l'affichage, j'ai utilisé des câbles de connexion pour connecter les broches d'alimentation et de données requises au DHT11 à l'aide du mini Breadboard. Alignez les broches puis branchez le capteur.

En regardant à l'avant du capteur:

De gauche à droite

connectez la broche 1 de DHT11 à 5 V, la broche 2 à la broche numérique 2 de l'Arduino, la broche 3 non connectée et la broche 4 à Arduino GND.

C'est tout!

Étape 5: Testez le capteur DHT11

Vous devez télécharger une autre bibliothèque pour que l’Arduino puisse dialoguer avec le capteur DHT11. Le capteur que j'ai reçu ne venait pas avec de la documentation, alors j'ai cherché sur Google jusqu'à trouver une bibliothèque qui fonctionne.

Je l'ai trouvé sur le site de Virtualbotix

Comme avec les bibliothèques d'affichage, téléchargez la bibliothèque, décompressez-la et installez-la dans l'IDE Arduino. Placez-le dans votre dossier de bibliothèques Arduino, renommez-le DHT11 et redémarrez l'IDE Arduino.

Vous devriez maintenant pouvoir voir la bibliothèque et les exemples dans la sélection Fichier> Exemples> DHT11> Esquisse dht11_functions.

Ajoutez le croquis à votre Arduino.

Si vous avez réussi à installer les bibliothèques et à charger le sketch dht11_functions, compilez le sketch en cliquant sur le bouton de vérification et assurez-vous qu'il n'y a pas d'erreur.

Il est temps de connecter votre Arduino à votre PC à l'aide du câble USB. Cliquez sur le bouton de téléchargement pour télécharger l'esquisse sur l'Arduino.

Une fois téléchargé sur l’Arduino, ouvrez le moniteur série et vous devriez voir le flux de données contenant les informations provenant du capteur.

Si le capteur fonctionne, nous sommes maintenant prêts à afficher les données sur l'écran TFT.

Étape 6: étape finale, affichage des données du capteur sur le TFT

// copier l'esquisse ci-dessous et la coller dans la compilation Arduino IDE et exécuter le programme.

// cette esquisse a été créée en utilisant le code des exemples d'esquisses adafruit et virtuabotix

// Vous pouvez utiliser n'importe quel (4 ou) 5 pins

#define sclk 4

#define mosi 5

#define cs 6

#define dc 7

#define rst 8 // vous pouvez également le connecter à la réinitialisation Arduino

#define ANALOG_IN 0 // pour le capteur de lumière cds

#include // Bibliothèque graphique principale

#include // bibliothèque spécifique au matériel

#comprendre

#comprendre // bibliothèque de capteurs d'humidité dht temp

dht11 DHT11;

Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, mosi, sclk, rst);

void setup (void) {

DHT11.attach (2); // configure le port numérique 2 pour détecter l'entrée dht

Serial.begin (9600);

Serial.print ("hello!");

tft.initR (INITR_BLACKTAB); // initialise une puce ST7735S, onglet noir

Serial.println ("init");

//tft.setRotation(tft.getRotation()+1); // décommenter pour faire pivoter l'affichage

// récupère le temps d'affichage du "temps d'activation du capteur"

uint16_t time = millis ();

tft.fillScreen (ST7735_BLACK);

time = millis () - time;

Serial.println (heure, DEC);

retard (500);

Serial.println ("done");

délai (1000);

tftPrintTest ();

retard (500);

tft.fillScreen (ST7735_BLACK);

// écran de démarrage à des fins esthétiques uniquement

// lignes optimisées

lignes de test (ST7735_RED, ST7735_BLUE);

retard (500);

tests de test (ST7735_GREEN);

retard (500);

tft.fillScreen (ST7735_BLACK);

}

boucle vide () {

// tft.invertDisplay (true);

// delay (500);

// tft.invertDisplay (false);

tft.setTextColor (ST7735_WHITE);

tft.setCursor (0,0);

tft.println ("Esquisse a été");

tft.println ("courant pour:");

tft.setCursor (50, 20);

tft.setTextSize (2);

tft.setTextColor (ST7735_BLUE);

tft.print (millis () / 1000);

tft.setTextSize (1);

tft.setCursor (40, 40);

tft.setTextColor (ST7735_WHITE);

tft.println ("secondes");

tft.setCursor (0, 60);

tft.drawLine (0, 50, tft.width () - 1, 50, ST7735_WHITE); // dessine un séparateur de ligne

tft.setTextColor (ST7735_YELLOW);

tft.print ("Température (C):");

tft.setTextColor (ST7735_GREEN);

tft.println ((float) DHT11. température, 1);

tft.setTextColor (ST7735_WHITE);

tft.print ("Humidité (%):");

tft.setTextColor (ST7735_RED);

tft.println ((float) DHT11.humidity, 1);

tft.setTextColor (ST7735_YELLOW);

tft.print ("Température (F):");

tft.setTextColor (ST7735_GREEN);

tft.println (DHT11.fahrenheit (), 1);

tft.setTextColor (ST7735_YELLOW);

tft.print ("Température (K):");

// tft.print ("");

tft.setTextColor (ST7735_GREEN);

tft.println (DHT11.kelvin (), 1);

tft.setTextColor (ST7735_WHITE);

tft.print ("Point de rosée (C):");

tft.setTextColor (ST7735_RED);

tft.println (DHT11.dewPoint (), 1);

tft.setTextColor (ST7735_WHITE);

tft.print ("DewPointFast (C):");

tft.setTextColor (ST7735_RED);

tft.println (DHT11.dewPointFast (), 1);

tft.drawLine (0, 110, tft.width () - 1, 110, ST7735_WHITE);

tft.setCursor (0,115);

tft.print ("intensité lumineuse");

int val = analogRead (ANALOG_IN);

tft.setCursor (60, 130);

tft.setTextColor (ST7735_YELLOW);

tft.println (val, 1);

délai (2000);

tft.fillScreen (ST7735_BLACK);

}

void tftPrintTest () {

tft.setTextWrap (false);

tft.fillScreen (ST7735_BLACK);

tft.setCursor (0, 60);

tft.setTextColor (ST7735_RED);

tft.setTextSize (2);

tft.println ("température");

tft.setTextColor (ST7735_YELLOW);

tft.setTextSize (2);

tft.println ("humidité");

tft.setTextColor (ST7735_GREEN);

tft.setTextSize (2);

tft.println ("moniteur");

tft.setTextColor (ST7735_BLUE);

//tft.setTextSize(3);

//tft.print (3598865);

retard (500);

}

void testfastlines (uint16_t color1, uint16_t color2) {

tft.fillScreen (ST7735_BLACK);

pour (int16_t y = 0; y <tft.height (); y + = 5) {

tft.drawFastHLine (0, y, tft.width (), color1);

}

pour (int16_t x = 0; x <tft.width (); x + = 5) {

tft.drawFastVLine (x, 0, tft.height (), color2);

}

}

void testdrawrects (uint16_t color) {

tft.fillScreen (ST7735_BLACK);

pour (int16_t x = 0; x <tft.width (); x + = 6) {

tft.drawRect (tft.width () / 2 -x / 2, tft.height () / 2 -x / 2, x, x, couleur);

}

}

Étape 7: Bonus! un capteur de lumière utilisant une entrée analogique

En prime, vous pouvez surveiller n’importe quel signal analogique en utilisant l’une des entrées analogiques Arduino. Par exemple, je vais utiliser une résistance photo CDS pour surveiller l’intensité de la lumière.

Vous avez besoin de Wil:

1 photo-résistance CDS

1 résistance 10 K ohm

Pas:

Connectez la résistance et la cellule photoélectrique CDS en série dans un espace inutilisé de la mini planche à pain.

Connectez la jambe ouverte de la photocellule au + 5v

Connectez la jambe ouverte de la résistance à GND

Connectez la jonction de résistance CDS à l'entrée analogique 0 de l'Arduino (le code pour surveiller l'entrée se trouve déjà dans l'esquisse).

Vous avez terminé!!

Vous pouvez surveiller pratiquement tous les paramètres analogiques à l’aide de cette méthode de saisie: niveau sonore, vitesse du vent, vibrations, etc.

Étape 8: Vidéo du prototype en cours d'exécution

Je ne sais pas comment intégrer une vidéo, alors voici le lien vers youtube où vous pouvez le voir en action.

www.youtube.com/watch?v=ZaEn8vhsrsg&feature=youtu.be

Étape 9: MISE À JOUR: Ajout d'un capteur à ultrasons et d'un programme modifié pour mettre à jour les chiffres

// Le programme actualise maintenant uniquement les chiffres et le compteur de distance ajouté va poster un autre instructable avec le progrès bientôt

#define sclk 4

#define mosi 5

#define cs 6

#define dc 7

#define rst 8 // vous pouvez également le connecter à la réinitialisation Arduino

#define ANALOG_IN 0 // pour le capteur de lumière cds

#define TRIGGER_PIN 12 // Broche Arduino liée à une broche de déclenchement sur le capteur à ultrasons.

#define ECHO_PIN 11 // Broche Arduino liée à la broche d'écho du capteur à ultrasons.

#define MAX_DISTANCE 200 // Distance maximale pour laquelle nous voulons faire un ping (en centimètres). La distance maximale du capteur est évaluée à 400-500cm.

#include // Bibliothèque graphique principale

#include // bibliothèque spécifique au matériel

#comprendre

#comprendre // bibliothèque de capteurs d'humidité dht temp

#comprendre // Bibliothèque de capteurs à ultrasons S04

dht11 DHT11;

Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, mosi, sclk, rst);

Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Nouvelle configuration des pins et de la distance maximale.

void setup (void) {

DHT11.attach (2); // configure le port numérique 2 pour détecter l'entrée dht

Serial.begin (115200);

Serial.print ("hello!");

tft.initR (INITR_BLACKTAB); // initialise une puce ST7735S, onglet noir

Serial.println ("init");

//tft.setRotation(tft.getRotation()+1); // décommenter pour faire pivoter l'affichage

uint16_t time = millis ();

tft.fillScreen (ST7735_BLACK);

time = millis () - time;

// Serial.println (time, DEC);

// delay (500);

// Serial.println ("done");

// delay (1000);

tftPrintTest ();

retard (500);

tft.fillScreen (ST7735_BLACK); // Écran propre

// les lignes commentées ci-dessous sont Grid and Square Splash Screen

// lignes optimisées

// lignes de test (ST7735_RED, ST7735_BLUE);

// delay (500);

// testdrawrects (ST7735_GREEN);

// delay (500);

tft.fillScreen (ST7735_BLACK);

}

boucle vide () {

// tft.invertDisplay (true);

// delay (500);

// tft.invertDisplay (false);

tft.setTextColor (ST7735_WHITE);

tft.setTextSize (1);

tft.setCursor (0,0);

tft.println ("Esquisse a été");

tft.println ("courant pour:");

tft.setCursor (50, 20);

tft.setTextSize (2);

tft.setTextColor (ST7735_BLUE, ST7735_BLACK);

tft.print (millis () / 1000);

tft.setTextSize (1);

tft.setCursor (40, 40);

tft.setTextColor (ST7735_WHITE);

tft.println ("secondes");

tft.setCursor (0, 60);

tft.drawLine (0, 50, tft.width () - 1, 50, ST7735_WHITE);

tft.setTextColor (ST7735_YELLOW);

tft.print ("Température (C):");

tft.setTextColor (ST7735_GREEN, ST7735_BLACK);

tft.println ((float) DHT11. température, 1);

tft.setTextColor (ST7735_WHITE);

tft.print ("Humidité (%):");

tft.setTextColor (ST7735_RED, ST7735_BLACK);

tft.println ((float) DHT11.humidity, 1);

tft.setTextColor (ST7735_YELLOW);

tft.print ("Température (F):");

tft.setTextColor (ST7735_GREEN, ST7735_BLACK);

tft.println (DHT11.fahrenheit (), 1);

tft.setTextColor (ST7735_YELLOW);

tft.print ("Température (K):");

// tft.print ("");

tft.setTextColor (ST7735_GREEN, ST7735_BLACK);

tft.println (DHT11.kelvin (), 1);

tft.setTextColor (ST7735_WHITE);

tft.print ("Point de rosée (C):");

tft.setTextColor (ST7735_RED, ST7735_BLACK);

tft.println (DHT11.dewPoint (), 1);

tft.setTextColor (ST7735_WHITE);

tft.print ("DewPointFast (C):");

tft.setTextColor (ST7735_RED, ST7735_BLACK);

tft.println (DHT11.dewPointFast (), 1);

tft.drawLine (0, 110, tft.width () - 1, 110, ST7735_WHITE);

tft.setCursor (0,115);

tft.print ("intensité lumineuse");

int val = analogRead (ANALOG_IN);

//tft.setCursor(60, 130);

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK);

tft.println (val, 1);

// delay (2000);

retard (500); // Attend 50ms entre les pings (environ 20 pings / s). 29 ms devrait être le délai le plus court entre les pings.

unsigned int uS = sonar.ping (); // Envoyer un ping, obtenir l'heure du ping en microsecondes (us).

tft.setCursor (0,130);

tft.setTextColor (ST7735_RED);

tft.print ("Distance:");

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK);

tft.print (uS / US_ROUNDTRIP_CM); // Conversion du temps de ping en distance et résultat d'impression (0 = en dehors de la plage de distance définie, pas d'écho de ping)

tft.setTextColor (ST7735_RED, ST7735_BLACK);

tft.print ("cm");

retarder (50);

// tft.fillScreen (ST7735_BLACK);

}

void tftPrintTest () {

tft.setTextWrap (false);

tft.fillScreen (ST7735_BLACK);

tft.setCursor (0, 10);

tft.setTextColor (ST7735_WHITE);

tft.setTextSize (1);

tft.println ("INSTRUCTABLES.COM");

retard (500);

tft.setCursor (0, 60);

tft.setTextColor (ST7735_RED);

tft.setTextSize (2);

tft.println ("température");

tft.setTextColor (ST7735_YELLOW);

tft.setTextSize (2);

tft.println ("humidité");

tft.setTextColor (ST7735_GREEN);

tft.setTextSize (2);

tft.println ("moniteur");

tft.setTextColor (ST7735_BLUE);

//tft.setTextSize(3);

//tft.print (3598865);

retarder (50);

}

void testfastlines (uint16_t color1, uint16_t color2) {

tft.fillScreen (ST7735_BLACK);

pour (int16_t y = 0; y <tft.height (); y + = 5) {

tft.drawFastHLine (0, y, tft.width (), color1);

}

pour (int16_t x = 0; x <tft.width (); x + = 5) {

tft.drawFastVLine (x, 0, tft.height (), color2);

}

}

void testdrawrects (uint16_t color) {

tft.fillScreen (ST7735_BLACK);

pour (int16_t x = 0; x <tft.width (); x + = 6) {

tft.drawRect (tft.width () / 2 -x / 2, tft.height () / 2 -x / 2, x, x, couleur);

}

}

Étape 10: Construction du dernier code en ligne (schéma). S'exécute plus vite, c'est mieux!

// Sketch Build 1.04 compilé sur Arduino 1.0.3. Changements depuis la dernière construction: impressions statiques déplacées vers la configuration de void, code redondant de boucle vide nettoyé.

// Cette esquisse a été modifiée pour accélérer la boucle. Le taux de rafraîchissement est d'environ 1,5 seconde.

// copie l'esquisse ci-dessous et collez-la dans la vérification Arduino IDE, puis exécutez le programme.

// cette esquisse a été créée à l'aide du code de l'exemple d'esquisse adafruit, virtuabotix et newPing

#define sclk 4

#define mosi 5

#define cs 6

#define dc 7

#define rst 8

#define ANALOG_IN 0 // pour le capteur de lumière cds

#define TRIGGER_PIN 12 // Broche Arduino liée à une broche de déclenchement sur le capteur à ultrasons.

#define ECHO_PIN 11 // Broche Arduino liée à la broche d'écho du capteur à ultrasons.

#define MAX_DISTANCE 200 // Distance maximale pour laquelle nous voulons faire un ping (en centimètres). La distance maximale du capteur est évaluée à 400-500cm.

#include // bibliothèque graphique principale

#include // bibliothèque spécifique au matériel

#comprendre

#comprendre // Bibliothèque de capteurs d'humidité temp DHT11

#comprendre // Bibliothèque de capteurs à ultrasons S04

dht11 DHT11;

Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, mosi, sclk, rst);

Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Nouvelle configuration des pins et de la distance maximale.

void setup (void) {

DHT11.attach (2); // configure le port numérique 2 pour détecter l'entrée DHT11

tft.initR (INITR_BLACKTAB); // initialise une puce ST7735S, onglet noir

uint16_t time = millis (); // calculs de temps pour afficher le temps d'exécution de l'esquisse en secondes

tft.fillScreen (ST7735_BLACK);

time = millis () - time;

// tftPrintTest (); // Texte d'introduction initial, ne commentez pas l'affichage à l'écran

tft.fillScreen (ST7735_BLACK); // Écran propre

// *** Impression d'éléments statiques affichés dans la configuration vide afin d'accélérer la boucle vide ****

tft.fillScreen (ST7735_BLACK); // écran propre

tft.setTextColor (ST7735_WHITE);

tft.setTextSize (1);

tft.setCursor (0,0);

tft.println ("Esquisse a été");

tft.println ("courant pour:");

tft.setCursor (40, 40);

tft.setTextColor (ST7735_WHITE);

tft.println ("secondes");

tft.drawLine (0, 50, tft.width () - 1, 50, ST7735_WHITE);

tft.setCursor (0, 60);

tft.setTextColor (ST7735_YELLOW);

tft.println ("Température (C):");

tft.drawLine (0, 110, tft.width () - 1, 110, ST7735_WHITE);

tft.setTextColor (ST7735_WHITE);

tft.println ("Humidité (%):");

tft.setTextColor (ST7735_YELLOW);

tft.println ("Température (F):");

tft.setTextColor (ST7735_YELLOW);

tft.println ("Température (K):");

tft.setTextColor (ST7735_WHITE);

tft.println ("Point de rosée (C):");

tft.setTextColor (ST7735_WHITE);

tft.println ("DewPointFast (C):");

tft.setCursor (0,115);

tft.setTextColor (ST7735_YELLOW);

tft.print ("intensité lumineuse");

}

boucle vide () {

tft.setCursor (50, 20);

tft.setTextSize (2); // définit la taille du texte en secondes

tft.setTextColor (ST7735_BLUE, ST7735_BLACK); // définir la couleur pour les secondes

tft.print (millis () / 1000);

tft.setTextSize (1); // définit la taille du texte pour toutes les données provenant de DHT11

tft.setCursor (98, 60);

tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // définition de la couleur pour toutes les données provenant de DHT11

tft.print ((float) DHT11. température, 2);

tft.setCursor (98, 68);

tft.print ((float) DHT11.humidity, 2);

tft.setCursor (98, 76);

tft.print (DHT11.fahrenheit (), 2);

tft.setCursor (98, 84);

tft.print (DHT11.kelvin (), 1);

tft.setCursor (98, 92);

tft.print (DHT11.dewPoint (), 2);

tft.setCursor (98, 100);

tft.print (DHT11.dewPointFast (), 2);

tft.setCursor (98,115);

int val = analogRead (ANALOG_IN); // LIRE LA VALEUR DU CAPTEUR DE LUMIÈRE

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); // définir la couleur du texte des données du capteur de lumière

tft.print (val, 1); // IMPRIMER LA VALEUR DU CAPTEUR DE LUMIERE

tft.print ("");

retarder (50); // Attend 50ms entre les pings (environ 20 pings / s). 29 ms devrait être le délai le plus court entre les pings.

unsigned int uS = sonar.ping (); // Envoyer un ping, obtenir l'heure du ping en microsecondes (us).

tft.setCursor (0,130);

tft.setTextColor (ST7735_RED);

tft.print ("Distance:");

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK);

tft.print (uS / US_ROUNDTRIP_CM); // Conversion du temps de ping en distance et résultat d'impression (0 = en dehors de la plage de distance définie, pas d'écho de ping)

tft.setTextColor (ST7735_RED, ST7735_BLACK);

tft.print ("cm");

retarder (50);

}

void tftPrintTest () {

tft.setTextWrap (false);

tft.fillScreen (ST7735_BLACK);

tft.setCursor (0, 10);

tft.setTextColor (ST7735_WHITE);

tft.setTextSize (1);

tft.println ("INSTRUCTABLES.COM");

retard (500);

tft.setCursor (0, 60);

tft.setTextColor (ST7735_RED);

tft.setTextSize (2);

tft.println ("température");

tft.setTextColor (ST7735_YELLOW);

tft.setTextSize (2);

tft.println ("humidité");

tft.setTextColor (ST7735_GREEN);

tft.setTextSize (2);

tft.println ("moniteur");

tft.setTextColor (ST7735_BLUE);

retarder (50);

}

Étape 11: Ajouter une horloge en temps réel au moniteur

Pour ajouter une horloge temps réel au moniteur, vous aurez besoin de:

Un module TinyRTC

4 fils de démarrage

La bibliothèque de fil

La bibliothèque du RTC

Étape 12:

Pour connecter le TinyRTC à l’Arduino, reportez-vous au schéma et aux:

Connectez le VTC RTC à l’Arduino +5 v

RTC GND à l’Arduino GND

RTC SDA vers l’Arduino Analog Pin 4

RTC SCL vers l’Arduino Analog Pin 5

Étape 13: Installez les bibliothèques requises

Vous devez installer les bibliothèques requises:

Bibliothèque de câbles - Cette bibliothèque est fournie avec l'IDE Arduino.

Bibliothèque RTC - Vous avez téléchargé cette bibliothèque pour votre commodité, téléchargez-la et placez-la dans votre dossier de bibliothèques Arduino.

Si vous avez réussi à installer les bibliothèques, chargez l'esquisse RTClib> DS1307, compilez l'esquisse en cliquant sur le bouton de vérification et assurez-vous qu'il n'y a pas d'erreur.

Cliquez sur le bouton de téléchargement pour télécharger l'esquisse sur l'Arduino.

Une fois chargé sur l’Arduino, ouvrez le moniteur série et vous devriez voir les données contenant des informations provenant du TinyRTC.

Si le TinyRTC fonctionne, nous sommes maintenant prêts à afficher les données sur l’écran TFT.

Étape 14: Téléchargez l’esquisse ci-dessous pour obtenir le temps et la température sur votre mini-écran!

// Sketch Build 1.04 compilé sur Arduino 1.0.3.

// Cette esquisse a été modifiée pour accélérer la boucle. Le taux de rafraîchissement est d'environ 1,5 seconde.

// copie l'esquisse ci-dessous et collez-la dans la vérification Arduino IDE, puis exécutez le programme.

// cette esquisse a été créée en utilisant le code des librairies adafruit

#define sclk 4

#define mosi 5

#define cs 6

#define dc 7

#define rst 8

#define ANALOG_IN 3 // pour capteur de lumière cds

#include // bibliothèque graphique principale

#include // bibliothèque spécifique au matériel

#comprendre

#comprendre // bibliothèque nécessaire pour RTC

#include "RTClib.h" // bibliothèque RTC

#comprendre // Bibliothèque de capteurs d'humidité temp DHT11

RTC_DS1307 RTC;

dht11 DHT11;

Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, mosi, sclk, rst);

void setup (void) {

DHT11.attach (2); // configure le port numérique 2 pour détecter l'entrée DHT11

Wire.begin ();

RTC.begin ();

tft.initR (INITR_BLACKTAB); // initialise une puce ST7735S, onglet noir

tft.fillScreen (ST7735_BLACK);

// tftPrintTest (); // Texte d'introduction initial, ne commentez pas l'affichage à l'écran

tft.fillScreen (ST7735_BLACK); // Écran propre

// *** Impression d'éléments statiques affichés dans la configuration vide afin d'accélérer la boucle vide ****

tft.drawLine (0, 50, tft.width () - 1, 50, ST7735_WHITE);

tft.setCursor (0, 60);

tft.setTextColor (ST7735_YELLOW);

tft.println ("Température (C):");

tft.drawLine (0, 110, tft.width () - 1, 110, ST7735_WHITE);

tft.setTextColor (ST7735_WHITE);

tft.println ("Humidité (%):");

tft.setTextColor (ST7735_YELLOW);

tft.println ("Température (F):");

tft.setTextColor (ST7735_YELLOW);

tft.println ("Température (K):");

tft.setTextColor (ST7735_WHITE);

tft.println ("Point de rosée (C):");

tft.setTextColor (ST7735_WHITE);

tft.println ("DewPointFast (C):");

tft.setCursor (0,115);

tft.setTextColor (ST7735_YELLOW);

tft.print ("intensité lumineuse");

}

boucle vide () {

tft.setCursor (10,0);

tft.setTextColor (ST7735_WHITE);

tft.setTextSize (1);

tft.println ("INSTRUCTABLES.COM");

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK);

tft.setTextSize (1);

tft.setCursor (30,10);

DateTime maintenant = RTC.now ();

tft.print (now.year (), DEC);

tft.print ('/');

tft.print (now.month (), DEC);

tft.print ('/');

tft.print (now.day (), DEC);

tft.println ('');

tft.setCursor (15,25);

tft.setTextSize (2);

tft.setTextColor (ST7735_BLUE, ST7735_BLACK);

tft.print (now.hour (), DEC);

tft.print (':');

tft.print (now.minute (), DEC);

tft.print (':');

tft.print (now.second (), DEC);

tft.println ("");

tft.setTextSize (1); // définit la taille du texte pour toutes les données provenant de DHT11

tft.setCursor (98, 60);

tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // définition de la couleur pour toutes les données provenant de DHT11

tft.print ((float) DHT11. température, 2);

tft.setCursor (98, 68);

tft.print ((float) DHT11.humidity, 2);

tft.setCursor (98, 76);

tft.print (DHT11.fahrenheit (), 2);

tft.setCursor (98, 84);

tft.print (DHT11.kelvin (), 1);

tft.setCursor (98, 92);

tft.print (DHT11.dewPoint (), 2);

tft.setCursor (98, 100);

tft.print (DHT11.dewPointFast (), 2);

tft.setCursor (98,115);

int val = analogRead (ANALOG_IN); // LIRE LA VALEUR DU CAPTEUR DE LUMIÈRE

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); // définir la couleur du texte des données du capteur de lumière

tft.print (val, 1); // IMPRIMER LA VALEUR DU CAPTEUR DE LUMIERE

tft.print ("");

}

void tftPrintTest () {

tft.setTextWrap (false);

tft.fillScreen (ST7735_BLACK);

tft.setCursor (0, 10);

tft.setTextColor (ST7735_WHITE);

tft.setTextSize (1);

tft.println ("INSTRUCTABLES.COM");

retard (500);

tft.setCursor (0, 60);

tft.setTextColor (ST7735_RED);

tft.setTextSize (2);

tft.println ("température");

tft.setTextColor (ST7735_YELLOW);

tft.setTextSize (2);

tft.println ("humidité");

tft.setTextColor (ST7735_GREEN);

tft.setTextSize (2);

tft.println ("moniteur");

tft.setTextColor (ST7735_BLUE);

retarder (50);

}

Deuxième prix au

Concours Arduino

Finaliste au

Concours à piles

4 personnes ont réalisé ce projet!

  • LuchaneE l'a fait!

  • stagehawk21 l'a fait!

  • sel303 l'a fait!

  • peter6961 l'a fait!

Avez-vous réalisé ce projet? Partagez le avec nous!

Recommandations

  • Réduire les échantillons de code Arduino

  • Prototype d'ornithoptère Opensource. Actionné par Arduino et contrôlé à distance.

  • Classe Internet des objets

  • Concours Fandom

  • Concours de sciences en classe

  • Concours de menuiserie

87 discussions

0

hors-rails2010

il y a 1 an

Merci d'avoir partagé !

C'est parfait pour mon ordinateur et un système de refroidissement liquide pour mon PC!

les calculs du point de rosée sont les plus importants pour mon application, afin que mon refroidisseur de liquide puisse refroidir le liquide / liquide de refroidissement sans se soucier de la formation de condensation dans les composants électroniques de mon boîtier

Je n'aurai pas besoin du capteur de distance, je ne pense pas, mais je le laisserai dans le code im si inutile avec l'écriture de code Arduino que je passe la plupart de mes jours avec la main giflé sur le front et pleurant mes yeux sur lol

Je n'ai pas non plus le capteur de lumière ou le capteur d'humidité exact, mais j'ai ces trois:

Capteur d'humidité et de température

http: //www.aliexpress.com/item/Industrial-High-Pr …

Capteur d'intensité lumineuse

http: //www.aliexpress.com/item/TSL2561-Luminosity …

DS3231 RTC - beaucoup plus de précision en gardant le temps

http: //www.aliexpress.com/item/DS3231-AT24C32-IIC …

Je pense donc que ce sera un défi majeur pour moi. Il faudra probablement quelques mois pour que le code fonctionne correctement avec le nouveau matériel. - souhaite moi bonne chance hehe:)

Aussi, quiconque ayant de très bonnes compétences en programmation avec code Arduino, je serais très reconnaissant pour;

des trucs ou astuces nécessaire pour changer les capteurs des mêmes capteurs que ceux utilisés auparavant dans les années 1930 (LDR,) lol à des capteurs de date plus récents et plus modernes lol

Je sais que c’est un très vieux billet, mais j’espère que quelqu'un aura toujours de l'amour pour sa version de celui-ci et pourra m'aider à changer les bibliothèques et changer / omettre le;

DHT211 Bibliothèque avec Si7021 Bibliothèque d'humidité (DIFFICILE lol)

RTClib - Je pense que cela devrait aussi couvrir les DS3231 Module RTC de haute précision RTC (Moyen Difficulté. lol)

Ajout d'une nouvelle bibliothèque; TSL2561 Bibliothèque de capteurs de luminosité (Facile - WOOHOO !! LMAO)

Encore une fois, un beau design, très élégant et simple à suivre les instructions!

0

0zzy

il y a 1 an

salut

j'adore, j'aimerais juste avoir le savoir-faire, car j'ai encore du mal à faire fonctionner une horloge simple:(Je ne comprends pas comment écrire l'heure dans l'esquisse et je continue à recevoir un message d'erreur (heure non spécifiée) ??? Je reçois aussi (#include,) Erreur ??

peut-être qu’un jour, j’en aurai mal…

0

jgrantspecial

il y a 2 ans

Projet génial!

Serait-il possible de le faire avec des données sauvegardées, par exemple toutes les 10 minutes?

0

LucasPeixotoo

il y a 3 ans

salut, je fais un projet mais je n'utilise pas l'affichage, je veux utiliser mon téléphone comme affichage, vous pouvez m'aider?

ty

0

logiciel

Il y a 3 ans sur l'introduction

Beau projet !! Fabriqué avec le Arduino Micro

0

draghici.andrey

Il y a 4 ans sur l'introduction

Est-ce possible de faire avec un Arduino Pro Mini pour le rendre plus petit? Je suis novice en la matière.:RÉ

1 réponse 0

draghici.andrey draghici.andrey

Répondre il y a 4 années sur Introduction

* et portable.

0

puisickbyrd

Il y a 4 ans sur l'introduction

L'erreur suivante s'affiche lors de l'exécution de l'exemple à partir de la bibliothèque pour tester l'affichage (étape 3)

avrdude: stk500_getsync (): pas synchronisé: resp = 0x30

Quelqu'un peut-il m'aider?

0

attachement

Il y a 4 ans sur l'introduction

Bonjour, comment actualiser le numéro sur l'écran, sans rafraîchir tout l'écran?!

1 réponse 0

HULKGQN attachement

Répondre il y a 4 années sur Introduction

le code dose que maintenant. Essaie.

0

dvshverma Il y a 4 ans à l'étape 4

Une documentation brillante, des instructions très claires

0

MaximeM

Il y a 4 ans sur l'introduction

Bonjour, J'ai ce problème, même si je place "versalino.h" dans le même répertoire que l'esquisse *.ino.

Ce rapport aurait plus d'informations avec

"Afficher la sortie verbeuse lors de la compilation"

activé dans Fichier> Préférences.

Arduino: 1.0.6 (Windows Vista), Carte: "Arduino Uno"

Dans le fichier inclus à partir de dht11.cpp: 43:

dht11.h: 66: erreur: 'VersalinoBUS' ne nomme pas un type

dht11.h: 67: erreur: 'VersalinoBUS' n'a pas été déclaré

dht11.h: 73: erreur: 'VersalinoBUS' n'a pas été déclaré

dht11.h: 76: erreur: 'VersalinoBUS' n'a pas été déclaré

dht11.h: 80: erreur: 'VersalinoBUS' n'a pas été déclaré

dht11.h: 93: erreur: 'VersalinoBUS' ne nomme pas un type

dht11.cpp: 59: erreur: 'VersalinoBUS' n'a pas été déclaré

dht11.cpp: 66: erreur: 'VersalinoBUS' n'a pas été déclaré

dht11.cpp: dans la fonction membre 'void dht11:: attach (int, int)':

dht11.cpp: 69: erreur: '_myBUS' n'a pas été déclaré dans cette étendue

dht11.cpp: à portée globale:

dht11.cpp: 81: erreur: 'VersalinoBUS' ne nomme pas un type

dht11.cpp: 91: erreur: variable ou champ "setBUS" déclaré vide

dht11.cpp: 91: erreur: 'VersalinoBUS' n'a pas été déclaré dans cette étendue

dht11.cpp: dans la fonction membre 'int dht11:: read ()':

dht11.cpp: 111: erreur: '_myBUS' n'a pas été déclaré dans cette étendue

dht11.cpp: à portée mondiale:

dht11.cpp: 116: erreur: 'VersalinoBUS' n'a pas été déclaré

dht11.cpp: dans la fonction membre 'int dht11:: read (int, int)':

dht11.cpp: 118: erreur: demande du membre 'PINS' dans 'myBUS', de type non-classe 'int'

0

Mackmario

Il y a 4 ans à l'étape 3

merci beaucoup a finalement réussi à faire fonctionner mon écran lcd!

0

invisiblesu1

Il y a 4 ans sur l'introduction

Salut à tous

J'ai un autre problème quand j'essaie de compiler

C: Program Files (x86) Arduino libraries Adafruit_ST7735 Adafruit_ST7735.cpp: Dans la fonction membre 'void Adafruit_ST7735:: commonInit (const uint8_t *)'::

C: Program Files (x86) Arduino libraries Adafruit_ST7735 Adafruit_ST7735.cpp: 324: erreur: 'SPI' n'a pas été déclaré dans cette étendue

C: Program Files (x86) Arduino libraries Adafruit_ST7735 Adafruit_ST7735.cpp: 326: erreur: 'SPI_CLOCK_DIV4' n'a pas été déclaré dans cette étendue

C: Program Files (x86) Arduino libraries Adafruit_ST7735 Adafruit_ST7735.cpp: 334: erreur: 'SPI_MODE0' n'a pas été déclaré dans cette étendue

0

Thpradhan

Il y a 4 ans sur l'introduction

Je suis un développeur de logiciels après avoir passé en revue ce projet. Je suis un grand fan d’Arduino et du votre. Merci beaucoup pour ce beau partage..

dans quelques jours, je reçois ma planche et d'autres choses dès que je fais mon premier test, je vais la télécharger:)

merci encore une fois pour la belle part.

0

Pkinahan

Il y a 4 ans sur l'introduction

Serait-il possible d'ajouter un compteur de particules à cet instructable?

1 réponse 0

johnag Pkinahan

Répondre il y a 4 années sur Introduction

oui, si vous en trouvez un avec une sortie compatible Arduino … mais je ne l'ai pas vue. Tout là-bas …

0

boozer_2

Il y a 5 ans sur l'introduction

Je n'ai pas vraiment besoin de l'affichage, mais j'ai besoin d'accéder aux valeurs des capteurs sur le réseau pour pouvoir contrôler à distance la température / l'humidité, etc. Quelqu'un sait comment ajouter un réseau à cela pour que les températures puissent être lues à distance?

1 réponse 0

johnag boozer_2

Répondre il y a 5 ans sur Introduction

vérifier cette instructable, il pourrait être ce que vous êtes. À la recherche de:

www.instructables.com/id/Arduino-TempHumidity-with-LCD-and-Web-Interface/

0

sam_77

Il y a 5 ans à l'étape 8

Cher Jhon

C'est un projet gr8 que vous avez construit, mais après avoir regardé votre vedio, je voudrais vous demander pourquoi l'affichage sur l'écran LCD ne cesse de changer. Est-il possible de le maintenir stable?

Cordialement

sachin