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

Moniteur météo MKR FOX 1200

Composants et fournitures

Arduino MKR Fox 1200
× 1
Déploiement du capteur atmosphérique SparkFun - BME280
× 1
Capteur de luminosité numérique TSL2561
× 1
HTU 1D
× 1

Applications et services en ligne

Éditeur Web Arduino
API ThingSpeak
Sigfox

À propos de ce projet

Remarque :Ce tutoriel est peut-être obsolète, veuillez y aller ici pour une version plus actuelle.

Ce projet montre comment transformer un MKR FOX 1200 et un tas de capteurs I2C dans une simple station météorologique alimentée par batterie.

Nous utiliserons :

  • le capteur de température embarqué (faible précision, ± 1 °C)
  • Capteur HTU21D I2C pour obtenir le niveau d'humidité
  • Bosch BMP280 pour obtenir la pression barométrique et la température précise
  • Capteur de lumière TSL2561 pour obtenir de la luminosité

Configuration du matériel

Les connexions matérielles pour ce projet sont assez simples :tous les capteurs utilisent des interfaces I2C et fonctionnent à 3,3 V.

Ils ont besoin de quatre fils du MKR FOX 1200 :GND, 3.3V, SDA sur Pin 11 et SCL sur Pin 12. Les quatre mêmes connexions peuvent être partagées en parallèle avec les trois capteurs car chacun d'eux a une adresse I2C spécifique et donc le les bibliothèques et fonctions pertinentes se chargeront de discriminer chacun d'eux.

L'ensemble du projet peut être alimenté par deux piles alcalines AA ou AAA connectées en série pour générer 3V et câblées au bornier à vis de la carte.

Messages Sigfox

Étant donné que le réseau Sigfox peut envoyer un maximum de 140 messages par jour, nous allons optimiser les lectures et envoyer les données au format binaire compact.

L'emballage des données est important car la taille maximale d'un message que vous pouvez envoyer est de 12 octets. Un flottant occupe 4 octets, nous devrons donc regrouper nos lectures dans une représentation plus petite.

Le format flottant est très large (vous pouvez représenter des nombres aussi grands que 3.402823e+38 (!) ) et nous n'avons pas besoin de tout l'espace de données; nous pouvons ensuite décider des limites de sécurité (en fonction de l'endroit où nous allons déployer la station) et restaurer la représentation d'origine dans le backend.

Configuration des Services Cloud

Nous utiliserons deux services cloud :

  • Backend Sigfox
  • Thingspeak

Enregistrez votre carte sur le backend Sigfox à l'aide du PAC et de l'ID fournis par l'exemple FirstConfiguration (peut être ignoré si vous l'avez déjà fait pour un projet précédent).

Les deux doivent être configurés pour se parler et interpréter les données dans le bon format. Inscrivez-vous aux deux et créez quelques canaux sur Thingspeak. La configuration est rapportée dans l'image ci-dessous.

Le premier canal que nous configurerons sera celui qui recevra les données brutes (readChannelID ), tandis que le second collectera les données redimensionnées (writeChannelID ).

Il est temps de télécharger le croquis à l'aide d'Arduino Create Editor. L'esquisse par défaut vous permet de tester en profondeur toute l'infrastructure avant de la déployer sur le terrain.

N'oubliez pas de déclarer :

oneshot =false 

lorsque vous êtes sûr que toute la configuration de l'infrastructure principale est correcte. Le sketch attend le port série, nous ne le lancerons donc pas maintenant. Au lieu de cela, ouvrez le backend SigFox et configurez un rappel :

Cliquez sur TYPE D'APPAREIL -> LISTE -> faites un clic droit sur votre tableau et cliquez sur Modifier.

Cliquez sur RAPPELS dans le menu de gauche :

Vous verrez une fenêtre comme celle-ci :

Cliquez sur Nouveau bouton en haut à droite de la fenêtre :

Sélectionnez Rappel personnalisé :

Les configurations pertinentes sont indiquées ci-dessous. Assurez-vous que le rappel est configuré comme :

  • TYPE :DONNÉES/LIEN UP
  • Canal :URL
  • Méthode HTTP :GET

En tant que charge utile personnalisée, définissez :

status::uint:8 temp1::int:16:little-endian temp2::int:16:little-endian press::uint:16:little-endian hum::uint:16:little -endian light::uint:16:little-endian lastMsg::uint:8  

Cela représente la structure que nous avons emballée dans le croquis. Nous attribuons une variable à chaque champ, afin que nous puissions les référencer dans le rappel HTTP.

En tant que modèle d'URL, définissez :

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1={customData#temp1}&field2={customData#press}&field3={customData#temp2}&field4={customData#hum}&field5={customData#light}&field6={customData#status}&field7={customData#lastMsg}  

Une fois configuré, vos fenêtres devraient ressembler à ceci :

N'oubliez pas de changer la clé API api_key avec celui fourni par Thingspeak en tant que Write API Key pour Canal1 .

Sauvegarder et quitter. Nous pouvons maintenant ouvrir le port série et observer le premier message envoyé. Hourra !

Du brut au graphisme

La configuration que nous avons configurée acheminera nos données vers le backend Thingspeak, mais elles sont toujours au format brut ; pour les reconvertir, utilisons l'outil d'analyse Thingspeak avec cet extrait

% TODO - Remplacez le [] par l'ID de canal à partir duquel lire les données :readChannelID =[] ; % TODO - Saisissez la clé API de lecture entre les '' ci-dessous :readAPIKey ='T6UK7XO6A4H2AGT7'; % TODO - Remplacez le [] par l'ID de canal dans lequel écrire les données :writeChannelID =[] ; % TODO - Saisissez la clé d'API d'écriture entre les '' ci-dessous :writeAPIKey ='XU4TGY261P6B5USN'; %% Lire les données %% data =thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table'); analyséDonnées = données ; %% Analyser les données %% INT16_t_MAX =32767 ; UINT16_t_MAX =65536 ; AnalyseDonnées.('Temperature1') =data.('Temperature1') / INT16_t_MAX * 120; AnalyseDonnées.('Temperature2') =data.('Temperature2') / INT16_t_MAX * 120; AnalyseDonnées.('Pression') =données.('Pression') / UINT16_t_MAX * 200000; analysesDonnées.('Lumière') =données.('Lumière') / UINT16_t_MAX * 100000; AnalyseDonnées.('Humidité') =données.('Humidité') / UINT16_t_MAX * 110; %% Write Data %% thingSpeakWrite(writeChannelID, analyzeData, 'WriteKey', writeAPIKey); %% Planifier l'action :Réagir -> toutes les 10 minutes 

En remplaçant les identifiants de chaîne avec le nôtre, nous pouvons enfin reconvertir les données brutes en valeurs réelles. N'oubliez pas de programmer l'action d'analyse toutes les 10 minutes en utilisant React ou il ne sera jamais exécuté !

Nous avons enfin nos merveilleux graphiques.

Code

Moniteur Météo

Processus de fabrication

  1. Station météo Raspberry Pi
  2. Weather Monitor
  3. Créer un moniteur Ambilight à l'aide d'Arduino
  4. Surveillance du CO2 avec le capteur K30
  5. Moniteur de fréquence cardiaque utilisant l'IoT
  6. Boîte météo Arduino + ESP
  7. Comment mesurez-vous ?
  8. Capteur d'empreintes digitales capacitif avec un Arduino ou ESP8266
  9. Tour de capteur cloud Arduino