Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Petite station météo Internet

Composants et fournitures

Arduino Nano 33 IoT
× 1
Capteur météo BME
× 1
0.96 dans l'écran OLED - 128x 64
× 1
Boîtier en plastique 3,9" x 2,7"
× 1
Câble micro USB
× 1
Câbles de pontage mâle à femelle
× 1
Chargeur mural USB
× 1

Outils et machines nécessaires

Pistolet à colle chaude (générique)

Applications et services en ligne

Arduino IDE
Blynk

À propos de ce projet

Il existe de nombreuses applications qui vous permettent de connecter votre smartphone à l'Internet des objets. J'en ai essayé plusieurs et j'ai généralement été déçu. Ce n'est pas le cas avec Blynk ! Il est vraiment flexible, possède une belle interface utilisateur, fonctionne avec toutes sortes de plates-formes IoT et fonctionne à la fois sur Android et iPhone. C'est aussi gratuit pour les amateurs ! Il s'agit donc d'un projet IoT relativement simple qui m'a permis d'explorer l'utilisation de Blynk.

Matériel

Le matériel pour ce projet est assez simple. Nous utilisons l'IoT Arduino Nano 33 qui gère le WiFi, une carte de capteur BME280 avec température, humidité et pression barométrique dans une seule unité, et un écran OLED de 1 pouce. Les trois fonctionnent bien à 3,3 volts. L'affichage est évidemment facultatif - le but est d'afficher la station météo sur votre téléphone. Mais cela facilite beaucoup la mise en route de tout sur l'écran OLED, avant de traiter avec Blynk et votre smartphone.

Le schéma ci-dessous montre comment le matériel est interconnecté. Le capteur et l'interface d'affichage avec I2C. En théorie, un I2C peut prendre en charge plusieurs appareils, mais les bibliothèques du capteur et de l'écran présentaient des conflits, je me suis donc retrouvé avec deux ports I2C différents. Le capteur utilise le port I2C par défaut normal en analogique broches 4 et 5. L'écran utilise un port I2C secondaire configuré sur numérique broches 4 et 5. (Et oui, elles sont inversées - SDA est la broche numérique 5))

Le matériel est enfermé dans un petit boîtier en plastique avec une façade transparente, de sorte que l'écran peut être visualisé. Il est en plastique, car il doit être transparent aux RF pour le WiFi. Il doit être relativement résistant aux intempéries, mais le capteur est exposé aux intempéries par un trou de 1/2" en bas. Le capteur est fixé de manière à ce qu'il se trouve juste à l'intérieur de ce trou. J'ai tout fixé à l'intérieur du boîtier avec de la chaleur colle, mais vous voudrez peut-être utiliser de l'époxy à la place si vous prévoyez de le mettre à l'extérieur pendant la chaleur estivale.

L'alimentation est fournie via le câble USB. De cette façon, il peut être programmé ou alimenté par un seul câble sortant de la boîte. Ce câble peut aller à votre ordinateur lors de la programmation ou à une alimentation USB enfichable lorsqu'il est utilisé comme station météo.

Logiciel

Le logiciel exécuté sur l'Arduino n'est qu'un peu plus qu'un mélange d'exemples de bibliothèque pour le capteur, l'écran et Blynk. Les bibliothèques impliquées sont la bibliothèque Adafruit_BME280_Library pour le capteur, la bibliothèque ss_oled pour l'affichage et la bibliothèque Blynk pour Blynk. Les trois peuvent être téléchargés directement depuis le gestionnaire de bibliothèque d'Arduino. Vous voudrez peut-être expérimenter chacune de ces bibliothèques séparément pour mieux les comprendre.

Blynk a un tas d'exemples sur la façon de configurer le matériel pour s'interfacer avec :https://examples.blynk.cc/ Malheureusement, il ne répertorie pas le Nano 33 IoT comme l'un de ses Arduino pris en charge. Mais Blynk prend en charge WiFiNINA, qui est utilisé par le Nano 33 IoT et plusieurs autres processeurs Arduino. L'ajout de ces deux inclusions a donc résolu ce problème :#include et #include

Un autre ajout que vous verrez dans mon code est :#include Cela était nécessaire pour convertir les nombres sortant du capteur en chaînes pouvant être affichées sur l'écran OLED. Une petite torsion à ce sujet qui m'a donné un peu de chagrin était que Blynk est heureux d'afficher les données, qu'elles soient envoyées sous forme de chaîne ou de nombre. Au début, j'ai envoyé à Blynk la même chaîne que j'envoyais à l'OLED. Cela a bien fonctionné pour afficher les chiffres, mais a totalement échoué lorsque j'ai ajouté des graphiques. Pour que les graphiques fonctionnent, Blynk avait évidemment besoin de chiffres réels.

Remarque - la pression barométrique est normalement rapportée corrigée au niveau de la mer. À des altitudes plus élevées, la pression barométrique chute évidemment, donc pour corriger les valeurs du capteur à leur lecture équivalente au niveau de la mer, vous devez ajouter une valeur à la valeur mesurée d'environ 1 pouce Hg pour chaque 1000 pieds d'altitude. Dans mon propre code ci-joint, vous verrez que j'ai ajouté 1.3 pour compenser ma propre élévation de 1300 pieds au-dessus du niveau de la mer. Vous voudrez changer cette valeur pour qu'elle corresponde à votre propre altitude. Le 1" Hg par 1000 pieds n'est qu'une estimation approximative. Si vous voulez une correction précise, il existe des tableaux en ligne qui vous donneront la correction exacte pour votre élévation.

Station météo sans Blynk

À ce stade, vous pouvez configurer le matériel et utiliser mon logiciel attaché pour afficher les données météorologiques sur l'écran OLED. Commentez simplement la ligne Blynk.begin() dans la configuration pour que la station météo s'exécute d'elle-même. (Si vous ne commentez pas Blink.begin(), sans connexion valide à Blynk, l'esquisse s'arrêtera ou se bloquera à ce stade.) Dans la section suivante, nous parlerons de Blynk, comment le configurer à la fois sur le sketch Arduino et sur le smartphone pour afficher la station météo sur le téléphone.

Blynk

Blynk est facile à installer sur votre iPhone ou Android et est livré avec une documentation détaillée :http://docs.blynk.cc/ fournir ici ma propre version de la façon de démarrer avec Blynk.

J'ai utilisé Blynk avec un iPhone, mais je pense que l'expérience est suffisamment similaire avec Android pour que vous puissiez suivre mes instructions avec l'un ou l'autre. Une fois que vous avez l'application, vous devez créer un compte. À partir de là, dans l'application, vous créez un nouveau projet. Votre projet est fourni avec un code d'authentification qui est utilisé pour lier votre matériel à votre projet. Votre premier travail consiste à connecter votre matériel via WiFi à votre projet Blynk. Vous pouvez accomplir cela et le tester à l'aide du programme/esquisse par défaut de Blynk appelé Blynk Blink sur examples.blynk.cc, qui vous permet d'allumer et d'éteindre la LED intégrée sur votre Nano 33 IoT. Ma suggestion est d'essayer ceci et de le faire fonctionner avant d'essayer de faire fonctionner la station météo avec Blynk.

Nous avons déjà parlé un peu de la configuration de notre logiciel pour que notre Nano 33 IoT fonctionne avec Blynk. Si vous ouvrez examples.blynk.cc, il s'agit par défaut d'une carte ESP8266. Recherchez #include et #include et remplacez-les par #include et #include

En plus d'ajouter le support WiFiNINA pour le Nano 33 IoT, comme nous en avons déjà parlé, vous devez ajouter vos identifiants WiFi et le code d'authentification de votre projet Blynk. Nous expliquerons l'allumage et l'extinction de la LED dans une minute, mais d'abord, vérifions simplement la connexion. Avec l'esquisse Blynk Blink correctement configurée et en cours d'exécution, ouvrez le moniteur série d'Arduino et vous devriez pouvoir regarder la connexion établie avec le serveur cloud Blynk. À ce stade, nous pouvons mettre de côté notre matériel et travailler avec l'application Blynk sur le téléphone.

Je dois admettre que j'ai trouvé l'application Blynk quelque peu déroutante. L'icône en haut à gauche vous permet de choisir entre les projets et également de vous déconnecter de votre compte. Celui en haut à droite vous permet d'entrer et de sortir du mode Edit Project. Ce que fait celui du milieu dépend de l'endroit où vous vous trouvez.

Pour prendre le contrôle de notre LED embarquée, nous devons entrer en mode Édition dans l'application. Vous verrez alors un écran vide. Si vous balayez vers la gauche, il se déplacera de côté pour révéler une boîte à outils de widgets. Sélectionnez un bouton en cliquant dessus et il sera maintenant sur l'écran principal. Cliquez dessus et il s'ouvrira pour la configuration. Déplacez-le du mode push au mode switch. Utilisez la sélection de broche pour sélectionner la LED intégrée - la broche numérique 13 sur notre Nano 33 IoT. Maintenant, cliquez sur OK et appuyez sur l'icône en haut à droite pour quitter le mode Édition. Votre bouton devrait maintenant contrôler la LED.

Station météo avec Blynk

Nous sommes maintenant prêts à relier notre station météo à notre projet Blynk. Ouvrez mon logiciel joint, décommentez la ligne Blynk.begin () dans la configuration, ajoutez le code d'authentification de votre projet et les informations d'identification WiFi, et téléchargez sur Arduino.

Ouvrez Blynk sur votre téléphone. Si vous avez suivi ce tutoriel, votre bouton est toujours là et devrait toujours pouvoir allumer et éteindre la LED intégrée. Allez en mode édition, cliquez sur le bouton pour le configurer et supprimez-le avec Supprimer tout en bas. Allez maintenant dans la boîte à outils et sélectionnez une valeur étiquetée. C'est en bas de la liste sous Affichages. De retour sur la page d'affichage, cliquez sur l'affichage de la valeur étiquetée pour le configurer. Cliquez sur la broche, puis sélectionnez la broche virtuelle V3. Nous expliquerons les broches virtuelles dans le paragraphe suivant. Maintenant, pour l'étiquette, où il est écrit "par exemple Temp", tapez "Temp /pin.#/deg.F". Le.# indique à l'application d'afficher un chiffre après la virgule décimale. Sélectionnez la grande taille du texte et laissez l'intervalle de rafraîchissement sur Push et la couleur du texte sur le vert. Cliquez maintenant sur OK. Votre valeur étiquetée est maintenant presque prête à afficher la température, mais elle est trop étroite. Sélectionnez-le lentement - suffisamment lent pour qu'il ne revienne pas en mode de configuration. Le contour de l'étiquette s'allumera. Il peut maintenant être étiré pour afficher toute la ligne. Il peut également être déplacé, bien que nous ne le fassions pas ici. Étirez-le sur environ 3/4 de la largeur de l'écran. Quittez ensuite le mode Édition et vous devriez voir la température s'afficher sur votre téléphone.

Avant de terminer la configuration de Blynk, il convient d'expliquer quelques éléments que nous venons de voir lors de la configuration de l'affichage de la température. Blynk utilise une idée quelque peu unique appelée épingles virtuelles. Le widget de valeur d'affichage peut être configuré pour lire une broche analogique sur notre processeur, ou pour lire si une broche numérique est haute ou basse. Mais le plus souvent, nous voulons afficher le contenu d'une variable. Nous le faisons en attribuant à cette variable un numéro de broche virtuelle, et à partir de ce moment, l'application Blynk référencera cette variable par son numéro de broche virtuelle. Donc, dans mon logiciel, vous verrez un endroit où j'ai affecté la température en Fahrenheit à la broche virtuelle V3.

Une autre idée de Blynk qui mérite d'être mentionnée rapidement est l'intervalle de rafraîchissement que nous avons laissé en mode Push. Cela signifie que l'esquisse Arduino pousse les données, dans notre cas, mettant à jour la température, l'humidité et la pression barométrique une fois par minute. Mais Blynk prend également en charge une méthode Pull, où l'application Blynk définit l'intervalle et interroge le matériel pour de nouvelles données.

Finissons maintenant d'afficher notre station météo sur Blynk. Vous aurez besoin de deux autres affichages de valeurs étiquetées, un pour l'humidité en % (broche virtuelle V4) et un pour la pression en " in. HG" ou pouces de mercure (broche virtuelle V5). Pour que cela ressemble au mien, vous voudrez l'humidité en or et la pression en rouge. Pour l'humidité, j'ai montré un chiffre après la virgule; pour la pression, j'ai montré deux chiffres après la virgule.

Si vous disposez maintenant des trois affichages des valeurs étiquetées indiquant la température, l'humidité et la pression barométrique, vous pouvez ajouter le graphique des trois. Ceci est accompli avec l'ajout d'un widget SuperChart. Tout d'abord, étirez-le vers le bas pour qu'il remplisse le reste de l'écran. Cliquez ensuite dessus pour configurer. J'ai activé Afficher les valeurs de l'axe x et j'ai choisi les résolutions en direct, 1 h, 6 h, 1 jour, 1 semaine, 1 mois. et 3 mois. Nous avons besoin de trois flux de données - un pour chacune de nos 3 variables. Pour configurer chaque flux de données, cliquez sur l'icône à sa droite. Nous devons à nouveau sélectionner la broche virtuelle pour chacun. Pour la mise à l'échelle de l'axe y, choisissez la hauteur. Ensuite, pour la température, réglez la hauteur sur 67 - 100. Pour l'humidité, réglez la hauteur sur 34 - 66. Pour la pression, réglez la hauteur sur 0 - 33. Réglez les couleurs pour qu'elles correspondent aux valeurs étiquetées. Activez Afficher l'axe Y. C'est à peu près ça. Sortez du mode Édition et l'affichage de votre téléphone devrait ressembler au mien. Il faut un peu de temps pour que le graphique démarre. Pour des résultats rapides, visualisez en direct ou en résolution 1 heure.

Une autre fonctionnalité de Blynk que vous voudrez peut-être connaître est le partage de votre projet Blynk terminé avec d'autres smartphones, afin que plusieurs téléphones puissent voir la station météo. Pour lancer le partage, mettez votre projet en mode Édition et cliquez sur l'icône en haut au milieu pour Paramètres du projet. Activez le partage, puis générez un lien. Il vous donnera un code QR que vous pouvez envoyer par e-mail ou partager autrement. Le nouvel utilisateur a besoin de l'application Blynk mais pas d'un compte sur Blynk. L'application d'un utilisateur non enregistré a un lien pour charger le code QR du projet Blynk d'une autre personne. C'est ça.

Cela a été une introduction assez limitée à Blynk, mais devrait vous donner un bon point de départ. J'ai mentionné plus tôt que Blynk est gratuit - enfin c'est presque le cas. Les widgets et le partage utilisent des points que Blynk appelle énergie. Je pense que vous obtenez 2500 points gratuitement pour commencer. C'est plus que suffisant pour réaliser ce projet gratuitement. Mais le partager ou l'ajouter peut vous faire manquer d'énergie Blynk. J'ai dépensé 6 $ pour obtenir 5000 points supplémentaires. Vous devrez peut-être dépenser quelques dollars pour du carburant Blynk si vous vous lancez dans d'autres projets avec Blynk.

Code

  • Petite station météo Internet
Petite station météo InternetArduino
Avec WiFi et Blynk vers Smartphone/*Ce croquis est pour l'IoT Arduino Nano 33Il utilise une carte de capteur BME280Il utilise un écran OLED 128 x 64 de 0,96 poucesIl se connecte via WiFi au serveur cloud Blynk pour l'affichage des données météo sur un smartphone */#include #include #include // Bibliothèque BME280#include // utilisée pour convertir les numéros météo en chaînes à afficher sur OLED# include // Bibliothèque OLED// Les deux prochaines inclusions sont nécessaires pour que le Nano 33 IoT fonctionne avec Blynk#include #include char auth[] ="YourBlynkProjectCode";char ssid[ ] ="YourWifiID";char pass[] ="YourWiFiPassword";Adafruit_BME280 bme; // utilise l'interface I2CAdafruit_Sensor *bme_temp =bme.getTemperatureSensor();Adafruit_Sensor *bme_pressure =bme.getPressureSensor();Adafruit_Sensor *bme_humidity =bme.getHumiditySensor();#define SDA_PIN#PLED_PIN 5#define SCLIN -1#define FLIP180 0#define INVERT 0#define USE_HW_I2C 0#define MY_OLED OLED_128x64#define OLED_WIDTH 128#define OLED_HEIGHT 64SSOLED ssoled ; // instance du temporisateur OLEDBlynkTimer ; // instance de Blynk timervoid setup() { if (!bme.begin(0x76)) { // attendre que le capteur soit détecté tandis que (1) delay(10); } bme_temp->printSensorDetails(); bme_pressure->printSensorDetails(); bme_humidity->printSensorDetails(); oledInit(&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L); oledFill(&ssoled, 0x0, 1); Blynk.begin(auth, ssid, pass); // commente cette ligne pour faire fonctionner la station météo sans Blynk timer.setInterval (60000L, myupdate); // exécute myupdate une fois par minute myupdate(); // exécute une mise à jour initiale de l'affichage et des données vers Blynk car la boucle principale attend une minute}boucle vide() { Blynk.run(); // Blynk préfère s'exécuter tout seul dans la boucle principale. timer.run(); // Tout le reste est géré via la minuterie Blynk}// cette routine est appelée par la minuterie Blynk pour mettre à jour à la fois l'affichage OLED et envoyer les données à Blynkvoid myupdate(){ sensor_event_t temp_event, pressure_event, humidity_event; bme_temp->getEvent(&temp_event); bme_pressure->getEvent(&pressure_event); bme_humidity->getEvent(&humidity_event); float ctemp =temp_event.temperature; // obtient la température en flottant centigrade ftemp =32 + (9*ctemp)/5; // convertir temp en fahrenheit float hum =humidity_event.relative_humidity; // obtenir l'humidité relative float ppress =pressure_event.pressure; // obtenir la pression en mm float mpress =1.3 + ppress/33.8939; // convertir en pouces Hg et ajouter 1,3 pour correspondre à la // pression barométrique réelle signalée localement. Vous pouvez supprimer la 1.3 et/ou ajouter votre propre ajustement. char mytemp[8]; dtostrf(ftemp, 6, 2, mytemp); // convertit temp en chaîne char myhum[8]; dtostrf(hum, 6, 2, myhum); // convertit l'humidité en chaîne char mypress[8]; dtostrf(mpress, 6, 2, mypress); // convertir la pression en chaîne // mettre à jour l'affichage OLED oledWriteString(&ssoled, 0,2,1,(char *)"Weather Station", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,2,3,(char *)"Temp =", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,50,3,(char *)mytemp, FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,105,3,(char *)"F", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,2,5,(char *)"Humid=", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,50,5,(char *)myhum, FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,105,5,(char *)"%", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,2,7,(char *)"Press=", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,50,7,(char *)mypress, FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,105,7,(char *)"in", FONT_NORMAL, 0, 1); // envoie de nouvelles données météo à Blynk Blynk.virtualWrite(V3, ftemp); Blynk.virtualWrite(V4, hum); Blynk.virtualWrite(V5, mpress); }

Schémas


Processus de fabrication

  1. Circuit intégré
  2. Station météo basée sur Raspberry Pi
  3. Station météo Raspberry Pi 2
  4. Station météo Raspberry Pi
  5. Rejoignez l'IOT avec votre station météo – CWOP
  6. Weather Station V 2.0
  7. Station de commande numérique DCC de modélisme ferroviaire Arduino et application gratuite
  8. 6-Shooter :Station de mélange de boissons Arduino
  9. MotionSense