Table des matières:

Premiers pas avec AWS IoT avec capteur de température sans fil utilisant MQTT : 8 étapes
Premiers pas avec AWS IoT avec capteur de température sans fil utilisant MQTT : 8 étapes

Vidéo: Premiers pas avec AWS IoT avec capteur de température sans fil utilisant MQTT : 8 étapes

Vidéo: Premiers pas avec AWS IoT avec capteur de température sans fil utilisant MQTT : 8 étapes
Vidéo: Микроволновый датчик присутствия с сенсором освещения - обзор, работа в Tuya Smart и Home Assistant 2024, Juillet
Anonim
Premiers pas avec AWS IoT avec capteur de température sans fil utilisant MQTT
Premiers pas avec AWS IoT avec capteur de température sans fil utilisant MQTT

Dans les précédents Instructables, nous avons parcouru différentes plates-formes cloud comme Azure, Ubidots, ThingSpeak, Losant, etc. Nous avons utilisé le protocole MQTT pour envoyer les données des capteurs au cloud dans presque toutes les plateformes cloud. Pour plus d'informations sur MQTT, ses avantages et avantages par rapport au protocole HTTP, vous pouvez vous référer à cette instructable.

Dans cette instructable, nous allons zoomer sur une autre plate-forme cloud Amazon Web Services la plus familière. Beaucoup d'entre vous connaissent peut-être AWS, alias Amazon Web Services, et les fonctionnalités cloud fournies par AWS. Il est au cœur du développement Web depuis de nombreuses années. Avec l'échelle croissante des applications IoT, AWS a mis au point la solution AWSIoT. AWSIoT est une solution fiable pour héberger nos applications IoT.

En suivant cette instructable:

  • Vous pourrez configurer un compte AWS pour votre application IoT
  • Vous pourrez connecter l'ESP32 au noyau AWS IoT
  • Envoyer et recevoir des messages à l'aide du protocole MQTT et
  • Visualisez les données envoyées dans AWS

Étape 1: configuration du compte AWS

La configuration d'un compte AWS est assez simple. Il vous suffit de télécharger quelques certificats, d'y attacher des politiques, d'enregistrer l'appareil et de commencer à recevoir les messages de données des capteurs dans AWS.

Pour configurer le compte AWS, suivez ce tutoriel.

Étape 2: Spécifications matérielles et logicielles

Spécifications matérielles et logicielles
Spécifications matérielles et logicielles

Spécification du logiciel

Un compte AWS

Spécification matérielle

  • ESP32
  • Capteur de température et de vibration sans fil
  • Récepteur Zigmo Gateway

Étape 3: Capteurs de vibrations et de température sans fil

Capteurs de vibrations et de température sans fil
Capteurs de vibrations et de température sans fil

Il s'agit d'un capteur de vibration et de température sans fil IoT industriel à longue portée, offrant une portée allant jusqu'à 2 milles à l'aide d'une architecture de réseau maillé sans fil. Intégrant un capteur de vibration et de température 16 bits, ce capteur transmet des données de vibration très précises à des intervalles définis par l'utilisateur. Il a les caractéristiques suivantes:

  • Capteur de vibrations 3 axes de qualité industrielle avec plage de ±32g
  • Calcule les vibrations RMS, MAX et MIN g
  • Suppression du bruit à l'aide d'un filtre passe-bas
  • Gamme de fréquences (bande passante) jusqu'à 12, 800 Hz
  • Taux d'échantillonnage jusqu'à 25, 600 Hz
  • Communication cryptée avec une portée sans fil de 2 milles
  • Plage de température de fonctionnement -40 à +85 °C
  • Boîtier IP65 fixé au mur ou monté sur aimantExemple de logiciel pour Visual Studio et LabVIEW
  • Capteur de vibrations avec option de sonde externe
  • Jusqu'à 500 000 transmissions à partir de 4 piles AA De nombreuses options de passerelle et de modem disponibles

Étape 4: micrologiciel ESP32 AWS

Pour vous connecter à AWS et commencer à envoyer les données, suivez les étapes suivantes

  • Téléchargez la bibliothèque AWS à partir du référentiel Github suivant
  • clonez le référentiel et placez le fichier AWS_IOT dans le dossier bibliothèque du répertoire Arduino

git clone

Passons maintenant en revue le code:

  • Dans cette application, nous avons utilisé un portail captif pour enregistrer les informations d'identification WiFi et survoler les paramètres IP. Pour l'introduction détaillée sur le portail captif, vous pouvez passer par l'instructable suivant.
  • Le portail captif nous donne la possibilité de choisir entre les paramètres statiques et DHCP. Entrez simplement les informations d'identification telles que l'IP statique, le masque de sous-réseau, la passerelle et la passerelle de capteur sans fil sera configurée sur cette IP.
  • Une page Web est hébergée où une liste montrant les réseaux WiFi disponibles et là RSSI. Sélectionnez le réseau WiFi et le mot de passe et entrez soumettre. Les informations d'identification seront enregistrées dans l'EEPROM et le paramètre IP sera enregistré dans le SPIFFS. Vous trouverez plus d'informations à ce sujet dans cette instructable.

Étape 5: Obtention des données du capteur à partir du capteur de vibration et de température sans fil

Obtention des données du capteur à partir du capteur de vibration et de température sans fil
Obtention des données du capteur à partir du capteur de vibration et de température sans fil
Obtention des données du capteur à partir du capteur de vibration et de température sans fil
Obtention des données du capteur à partir du capteur de vibration et de température sans fil

Nous obtenons une trame de 54 octets des capteurs de température et de vibration sans fil. Ce cadre est manipulé pour obtenir les données réelles de température et de vibration.

ESP32 a trois UART disponibles pour l'utilisation en série

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO10
  3. RX2 GPIO 16, TX2 GPIO 17

et 3 ports série matériels

  • En série
  • Série1
  • Série2

Tout d'abord, initialisez le fichier d'en-tête Hardware Serial. Ici, nous utiliserons RX2 et TX2 aka. Broches GPIO 16 et GPIO 17 de la carte ESP32 pour obtenir les données série.

#comprendre

# définir RXD2 16 # définir TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // broches 16 rx2, 17 tx2, 19200 bps, 8 bits sans parité 1 bit d'arrêt

Les étapes suivantes vous mèneront plus loin pour obtenir les valeurs réelles du capteur

  • Créez des variables pour stocker la température, l'humidité, la batterie et d'autres valeurs de capteur
  • Définissez le Rx, la broche tx, le débit en bauds et les bits de parité pour la série matérielle
  • Tout d'abord, vérifiez qu'il y a quelque chose à lire en utilisant Serial1.available()
  • Nous obtiendrons la trame de 54 octets.
  • Recherchez 0x7E qui est l'octet de début.
  • Les données de vibration se composent de la valeur RMS pour les 3 axes, des valeurs minimales pour les 3 axes, des valeurs maximales pour les 3 axes.
  • les valeurs de température et de batterie contiendront 2 octets de données
  • obtenir le nom du capteur, le type, la version du capteur contiendra 1 octet de données et peut être obtenu à partir de l'adresse respective

if (Serial2.available()) { Serial.println("Lire la série"); data[0] = Serial2.read(); retard(k); if(data[0]==0x7E) { Serial.println("Got Packet"); while (!Serial2.available()); pour (i = 1; i< 55; i++) { data = Serial2.read(); retard(1); } if(data[15]==0x7F) /////// pour vérifier si les données reçues sont correctes { if(data[22]==0x08) //////// assurez-vous que le type de capteur est correct { rms_x = ((uint16_t)(((data[24])<<16) + ((data[25])<<8) + (data[26]))/100); rms_y = ((uint16_t)(((données[27])<<16) + ((données[28])<<8) + (données[29]))/100); rms_z = ((uint16_t)(((données[30])<<16) + ((données[31])<<8) + (données[32])))/100); int16_t max_x = ((uint16_t)(((données[33])<<16) + ((données[34])<<8) + (données[35]))/100); int16_t max_y = ((uint16_t)(((données[36])<<16) + ((données[37])<<8) + (données[38]))/100); int16_t max_z = ((uint16_t)(((données[39])<<16) + ((données[40])<<8) + (données[41]))/100);

int16_t min_x = ((uint16_t)(((données[42])<<16) + ((données[43])<<8) + (données[44]))/100); int16_t min_y = ((uint16_t)(((données[45])<<16) + ((données[46])<<8) + (données[47]))/100); int16_t min_z = ((uint16_t)(((données[48])<<16) + ((données[49])<<8) + (données[50]))/100);

cTemp = ((((données[51]) * 256) + données[52])); batterie flottante = ((données[18] * 256) + données[19]); tension = 0,00322 * batterie; Serial.print("Numéro de capteur "); Serial.println(data[16]); senseNumber = data[16]; Serial.print("Type de capteur "); Serial.println(data[22]); Serial.print("Version du micrologiciel "); Serial.println(data[17]); Serial.print("Température en Celsius:"); Serial.print(cTemp); Serial.println("C"); Serial.print("Vibration RMS sur l'axe X:"); Serial.print(rms_x); Serial.println(" mg"); Serial.print("Vibration RMS dans l'axe Y:"); Serial.print(rms_y); Serial.println(" mg"); Serial.print("Vibration RMS dans l'axe Z:"); Serial.print(rms_z); Serial.println(" mg");

Serial.print("Vibration min dans l'axe X:");

Serial.print(min_x); Serial.println(" mg"); Serial.print("Vibration min dans l'axe Y:"); Serial.print(min_y); Serial.println(" mg"); Serial.print("Vibration min dans l'axe Z:"); Serial.print(min_z); Serial.println(" mg");

Serial.print("Valeur ADC:");

Serial.println(batterie); Serial.print("Tension de la batterie:"); Serial.print(tension); Serial.println("\n"); if (tension < 1) { Serial.println ("Il est temps de remplacer la batterie"); } } } else { pour (i = 0; i< 54; i++) { Serial.print(data); Serial.print(", "); retard(1); } } } }

Étape 6: connexion à AWS

Connexion à AWS
Connexion à AWS
  • Incluez les fichiers d'en-tête AWS_IOT.h, WiFi.h pour configurer une connexion avec le hub AWSIoT
  • Entrez votre adresse d'hôte, votre identifiant client qui sera le nom de la politique et le nom du sujet qui sera le nom de l'objet

//*********Identifiants AWS*************//char HOST_ADDRESS="a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID= "ncdGatewayPolicy"; char TOPIC_NAME= "ncdGatewayThing";

Créez une variable char pour stocker votre JSON, dans ce cas, nous avons créé un format pour stocker JSON

const char *format = "{"SensorId\":\"%d\", \"messageId\":%d, \"rmsX\":%d, \"rmsY\":%d, \"rmsZ \":%d, \"cTemp\":%d, \"tension\":%.2f}";

Créer une instance de la classe AWS_IOT

AWS_IOT esp; //Instance de la classe AWS_IOT

Connectez-vous maintenant au hub AWSIoT à l'aide de la méthode suivante

void reconnectMQTT(){ if(hornbill.connect(HOST_ADDRESS, CLIENT_ID)== 0) { Serial.println("Connecté à AWS"); retard(1000);

if(0==hornbill.subscribe(TOPIC_NAME, mySubCallBackHandler))

{ Serial.println("Inscription réussie"); } else { Serial.println("L'abonnement a échoué, vérifiez le nom de la chose et les certificats"); tandis que(1); } } else { Serial.println("La connexion AWS a échoué, vérifiez l'adresse HOST"); tandis que(1); }

retard (2000);

}

publier les données du capteur toutes les 1 minute

if(tick >= 60) // publier dans le sujet toutes les 5 secondes { tick=0; charge utile char[PAYLOAD_MAX_LEN]; snprintf(charge utile, PAYLOAD_MAX_LEN, format, senseNumber, msgCount++, rms_x, rms_y, rms_z, cTemp, tension); Serial.println (charge utile); if(hornbill.publish(TOPIC_NAME, charge utile) == 0) { Serial.print("Publier le message:"); Serial.println (charge utile); } else { Serial.println("La publication a échoué"); } } vTaskDelay(1000 / portTICK_RATE_MS); coche++;

Étape 7: Visualisation des données dans AWS

Visualisation des données dans AWS
Visualisation des données dans AWS
Visualisation des données dans AWS
Visualisation des données dans AWS
Visualisation des données dans AWS
Visualisation des données dans AWS
  • Connectez-vous à votre compte AWS.
  • dans le coin gauche de la barre d'outils, vous trouverez l'onglet Services
  • Cliquez sur cet onglet et sous l'en-tête Internet des objets, sélectionnez IoT Core.
  • Sélectionnez la QoS et non. de messages aux abonnés. Saisissez le nom du sujet.

Étape 8: Code général

Vous pouvez trouver le code global sur ce référentiel Github.

Crédits

  • Arduino Json
  • Capteurs de température et d'humidité sans fil
  • ESP32
  • PubSubClient

Conseillé: