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

Mini-station météo Arduino UNO

Composants et fournitures

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Arduino Proto Shield
ou une planche à pain ordinaire
× 1
Capteur de température DHT22
× 1
Seed Grove - Capteur de lumière
× 1
Seed Grove - Capteur UV
× 1
Seed Grove - Capteur de baromètre
× 1
Seed Grove - Capteur de poussière
× 1
Résistance 1k ohm
× 2
Résistance 10k ohm
× 1
Résistance 4.75k ohm
× 1
Câbles de raccordement (générique)
× 1

Applications et services en ligne

Arduino IDE
API ThingSpeak

À propos de ce projet

Il s'agit de la première génération de ma mini-station météo basée sur Arduino avec connexion Wi-Fi, qui est capable de publier des données publiquement en ligne à l'aide de la plate-forme ThingSpeak.

La station météo collecte les données suivantes liées à la météo et à l'environnement à l'aide de différents capteurs :

  • Température
  • Humidité
  • Pression atmosphérique
  • Intensité lumineuse
  • Indice UV
  • Concentration de poussière

L'objectif est de créer une station météorologique petite et simple, en utilisant du matériel ouvert.

Commençons et amusez-vous !

Composants électroniques

Vous n'aurez pas besoin d'outils spécifiques pour l'assemblage de ce projet. Tous les composants sont disponibles en ligne sur votre boutique e-commerce préférée.

Le circuit est alimenté par le port USB (connecté à un ordinateur ou à un chargeur de téléphone ordinaire), mais vous pouvez également ajouter une alimentation CC externe ou une batterie connectée à la prise d'alimentation Arduino.

Un boîtier pour le circuit de la station météo n'entre pas dans le cadre de ce projet.

Connexion des pièces

Connectez tous les composants selon le schéma. Vous aurez besoin de câbles de démarrage pour connecter chaque capteur à la planche à pain. Vous pouvez utiliser un protoshield (pour un circuit plus compact), une planche à pain ordinaire ou concevoir votre propre shield Arduino.

Branchez le câble USB sur la carte Arduino Uno et passez à l'étape suivante.

Code

En supposant que vous ayez déjà installé le dernier Arduino IDE, téléchargez et installez les bibliothèques suivantes :

  • Bibliothèque DHT22
  • Bibliothèque Adafruit BMP085

Pour obtenir des instructions sur la façon d'ajouter les bibliothèques à Arduino IDE, consultez le guide Arduino suivant.

Téléchargez le code Arduino (weatherBox.ino ) inclus dans la section de code. Remplacer XXXXX par le SSID de votre routeur WiFi, YYYYY par mot de passe du routeur, et ZZZZZ par votre clé d'API d'écriture de canal ThingSpeak (voir comment l'obtenir à l'étape suivante).

Connectez la carte Arduino au port USB de votre ordinateur et téléchargez le code.

Configuration de ThingSpeak

  • Créer un compte ThingSpeak
  • Créer une nouvelle chaîne

Précisez le nom et la description de votre station météo. Attribuez les chaînes suivantes et enregistrez la chaîne :

  • canal 1 =lumière
  • canal 2 =humidité
  • canal 3 =température (à partir de DHT22)
  • canal 4 =indice UV
  • canal 5 =concentration de poussière
  • canal 6 =pression
  • canal 7 =température (à partir de BMP085)

Copiez la clé d'écriture de l'API. Il est utilisé à l'étape précédente dans le code Arduino. Lorsque la station est allumée, les valeurs du capteur seront téléchargées périodiquement sur le canal. Vous pouvez configurer des visualisations publiques et privées de chaque variable.

Exemple de chaîne publique :https://thingspeak.com/channels/35540

Utilisation de l'application Android

Vous pourrez visualiser les données de la station météo dans n'importe quel navigateur. Mais vous pouvez également le vérifier sur votre smartphone Android et le visualiser quand vous le souhaitez.

  • Téléchargez et installez l'application ThingsView depuis Google Play Store sur votre appareil Android
  • Sur l'application, insérez votre numéro d'identification de chaîne et cliquez sur Ajouter. Vous trouverez l'ID sur votre configuration de canal ThingSpeak
  • Les valeurs actuelles de chaque variable seront affichées dans un graphique

Amusez-vous bien !

Code

  • weatherBox.ino
weatherBox.inoArduino
#include #include #include #include #include #include #define SSID "XXXXX " //remplacez XXXXX par votre routeur SSID#define PASS "YYYYY" //remplacez YYYYY par le mot de passe de votre routeur#define IP "184.106.153.149" // Thingspeak.com IP#define DHT22_PIN 2String GET ="GET /update?key=ZZZZZ&field1="; //remplacez ZZZZZ par votre clé d'écriture de canal ThingSpeakSoftwareSerial monitor (10, 11); //Communication série au module ESP8266 (RX, TX)dht DHT;Adafruit_BMP085_Unified bmp =Adafruit_BMP085_Unified(10085);//Variablesint luminancePin =A0;int uvPin =A1;int dustPin =8;non signé longue durée;non signé long starttime; sampletime_ms =30000;long delay_time non signé =60000;long lowpulseoccupancy non signé =0;rapport flottant =0;concentration flottante =0;//setupvoid setup(){ //démarrer les communications série Serial.begin(9600); monitor.begin(9600); Serial.println("Initialisation..."); //configurer les broches Arduino pinMode(dustPin, INPUT); //initialiser le capteur de pression Serial.println("Détection du capteur de pression BMP085..."); if(!bmp.begin()) { Serial.println("Le capteur BMP085 n'a pas été détecté. Vérifiez vos connexions ou I2C ADDR!"); tandis que (1); } Serial.println("BMP085 détecté!"); //communication avec le module wifi monitor.flush(); monitor.println("AT"); retard (2000); if(monitor.find("OK")){ Serial.println("Communication avec le module ESP8266 :OK"); } else { Serial.println ("ERREUR module ESP8266"); } // connecter le routeur wifi connectWiFi(); Serial.print("Sampling ("); Serial.print(sampletime_ms/1000); Serial.println("s)..."); //initialise le timer starttime =millis();}void loop(){ //mesure de la durée des particules de poussière =pulseIn(dustPin, LOW); occupation à faible impulsion =occupation à faible impulsion + durée ; // 30 secondes de cycle if ((millis() - starttime)>=sampletime_ms) { ratio =lowpulseoccupancy/(sampletime_ms*10.0); // pourcentage (de 0 à 100%) concentration =1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // à partir de la feuille de données lowpulseoccupancy =0; //lire les autres capteurs char buffer[10]; //luminance flottante du capteur de lumière =analogRead(luminancePin); //Flotteur du capteur UV uv =analogRead(uvPin); uv =uv * 0,0049 ; //convertir les valeurs en volts uv =uv * 307; //convertir en mW/m² uv =uv/200; //calculer l'indice UV //température et humidité int chk =DHT.read22(DHT22_PIN); flotteur humidité =DHT.humidité; température du flotteur =DHT.temperature; //événement sensor_event_t de pression et température1 ; bmp.getEvent(&event); pression du flotteur =0 ; température du flotteur1 =0 ; if (événement.pression) { pression =événement.pression; bmp.getTemperature(&temperature1) ; } //convertir les valeurs du capteur en chaînes String luminanceStr =dtostrf(luminance, 4, 1, buffer); luminanceStr.replace(" ",""); Chaîne uvStr =dtostrf(uv, 4, 1, buffer); uvStr.replace(" ",""); String humidityStr =dtostrf(humidité, 4, 1, buffer); humiditéStr.replace(" ",""); String temperatureStr =dtostrf(temperature, 4, 1, buffer); temperatureStr.replace(" ",""); String dustStr =dtostrf(concentration, 4, 1, buffer); DustStr.replace(" ",""); String PressureStr =dtostrf(pression, 4, 1, buffer); PressureStr.replace(" ",""); Chaîne temperature1Str =dtostrf(temperature1, 4, 1, buffer); temperature1Str.replace(" ",""); //Envoyer des données à ThingSpeak updateSensors(luminanceStr, wetStr, temperatureStr, uvStr, dustStr, pressureStr, temperature1Str); //attendre le prochain cycle d'échantillonnage Serial.print("Wait "); Serial.print(delay_time/1000); Serial.println("s pour le prochain échantillonnage"); Serial.println(); delay(delay_time); //initialise le nouveau cycle Serial.println(); Serial.print("Sampling ("); Serial.print(sampletime_ms/1000); Serial.println("s)..."); heure de début =millis(); }}//Envoyer des données à ThingSpeakvoid updateSensors(String luminanceStr, String humidityStr, String temperatureStr, String uvStr, String dustStr, String pressureStr, String temperature1Str) { String cmd ="AT+CIPSTART=\"TCP\",\"" ; cmd +=IP; cmd +="\",80"; monitor.println(cmd); retard (2000); cmd =OBTENIR; cmd +=luminanceStr; cmd +="&field2="; cmd +=humiditéStr; cmd +="&field3="; cmd +=temperatureStr; cmd +="&field4="; cmd +=uvStr; cmd +="&field5="; cmd +=DustStr; cmd +="&field6="; cmd +=pressionStr; cmd +="&field7="; cmd +=temperature1Str; cmd +="\r\n" ; retard(1000); int strsize =cmd.length(); monitor.println("AT+CIPSEND=" + String(strsize)); retard (2000); monitor.print(cmd); if(monitor.find("OK")){ Serial.println("Transmission terminée avec succès"); }else{ Serial.println("La transmission a échoué !"); }}void sendDebug(String cmd){ Serial.print("SEND:"); Serial.println(cmd); monitor.println(cmd);} booléen connectWiFi(){ Serial.println("Connexion wi-fi..."); Chaîne cmd ="AT+CWMODE=1" ; monitor.println(cmd); retard (2000); monitor.flush(); //effacer le tampon cmd="AT+CWJAP=\""; cmd+=SSID; cmd+="\",\""; cmd+=PASS; cmd+="\""; monitor.println(cmd); retard (5000); if(monitor.find("OK")){ Serial.println("Connexion réussie!"); renvoie vrai ; }else{ Serial.println("La connexion a échoué !"); renvoie faux ; } Serial.println();}
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/adafruit/Adafruit-BMP085-Libraryhttps://github.com/adafruit/Adafruit-BMP085-Library

Processus de fabrication

  1. Station météo Raspberry Pi
  2. Système robotique de détection humaine utilisant Arduino Uno
  3. Surveillance du CO2 avec le capteur K30
  4. Comment mesurez-vous ?
  5. WebServerBlink avec Arduino Uno WiFi
  6. Calculatrice UNO simple
  7. Tour de capteur cloud Arduino
  8. Persistance de la vision
  9. Station météo locale