Connectez en toute sécurité votre Arduino MKR NB 1500 à Azure IoT Hub
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino MKR NB 1500 | 1 |
| Câble Micro-USB vers USB (générique) | 1 |
| Batterie LiPo 3,7 V | 1 |
| Carte Micro SIM | 1 |
Applications et services en ligne
- Arduino IDE
- Microsoft Azure
À propos de ce projet
Note : Ce tutoriel pourrait être obsolète. Consultez cette page pour une version plus récente.
Introduction
Azure IoT Hub permet de « connecter, surveiller et gérer des milliards d'appareils pour développer des applications Internet des objets (IoT) ».
Les appareils peuvent se connecter à Azure IoT Hub via les protocoles HTTPS, AMQP et MQTT. Azure fournit également des SDK pour de nombreux langages de programmation afin d'abstraire ces protocoles. Vous pouvez aussi vous connecter à IoT Hub via un client MQTT. Cette page offre plus d'informations sur la prise en charge MQTT d'IoT Hub.
Ce tutoriel vous guide pour connecter une carte Arduino MKR NB 1500 de manière sécurisée à Azure IoT Hub en utilisant un client MQTT. MQTT (Message Queuing Telemetry Transport) est un protocole de connectivité M2M (machine-à-machine) qui fournit un transport de messagerie par publication/souscription.
Les appareils peuvent utiliser des jetons SAS ou des certificats X.509 pour l'authentification auprès d'Azure IoT Hub. Plus d'informations ici. Dans ce tutoriel, nous utiliserons un certificat X.509 pour authentifier la carte.
Chaque carte Arduino MKR avec connectivité intégrée, y compris la MKR NB 1500, est équipée d'un élément cryptographique Microchip ATECC508A ou ATECC608A. Cet élément permet de générer et stocker de manière sécurisée une clé ECC (Elliptic Curve Cryptography) de 256 bits.
Configuration logicielle et matérielle
Si vous n'avez pas l'Arduino IDE installé, téléchargez-le et installez-le.
Une fois installé, assurez-vous d'avoir le dernier package « Arduino SAMD Boards ». Vérifiez dans Outils → Carte : « ... » → Gestionnaire de cartes... » et recherchez « Arduino SAMD ». Au moment de l'écriture, la version 1.6.20 était la plus récente.

Installez ensuite les bibliothèques Arduino nécessaires via le gestionnaire de bibliothèques (Croquis → Inclure une bibliothèque → Gérer les bibliothèques...) :
- MKRNB
- ArduinoBearSSL
- ArduinoECCX08
- ArduinoMqttClient
- Arduino Cloud Provider Examples
Insérez la carte micro SIM dans l'emplacement au dos de la carte MKR NB 1500 et connectez la batterie LiPo 3,7 V au connecteur JST. Branchez ensuite la carte via le câble micro USB à votre ordinateur, sélectionnez le port série dans Outils → Port « ... » et choisissez « Arduino MKR NB 1500 » dans Outils → Carte « ... ».

Configuration et ajout de la carte à Azure IoT Hub
Azure IoT Hub autorise les appareils se connectant via MQTT avec authentification par certificat X.509. Nous allons générer un certificat X.509 auto-signé sur la carte, puis ajouter son empreinte SHA1 au portail Azure IoT Hub.
Le certificat auto-signé peut être généré avec l'exemple de sketch de la bibliothèque ArduinoECCX08. Ouvrez-le via Fichier → Exemples → ArduinoECCX08 → Outils → ECCX08SelfSignedCert. Téléversez le sketch sur votre carte, puis ouvrez le Moniteur série. Assurez-vous que la configuration de fin de ligne est réglée sur « Both NL & CR ».
Ce sketch vous demandera de configurer définitivement votre élément cryptographique ATECC508A/ATECC608A s'il n'est pas encore configuré et verrouillé. NOTE : Ce processus de verrouillage est permanent et irréversible, mais nécessaire pour utiliser l'élément cryptographique. La configuration permet d'utiliser 5 emplacements de clé privée (0 à 4) avec n'importe quel fournisseur cloud (ou serveur), et une clé privée peut être régénérée à tout moment pour l'un de ces 5 emplacements. À la sortie d'usine, l'élément cryptographique est dans un état non configuré et déverrouillé.
Ensuite, vous serez invité à saisir les informations pour le certificat auto-signé : année, mois, jour et heure d'émission, ainsi que la période de validité en années. Pour ce tutoriel, nous utiliserons l'emplacement 0 pour générer et stocker la clé privée servant à signer le certificat (les emplacements 1 à 4 peuvent stocker des clés additionnelles). L'emplacement 8 stockera les dates d'émission/expiration et la signature du certificat. Note : La clé privée étant générée à l'intérieur de l'élément cryptographique, elle ne quitte jamais l'appareil et est stockée de manière sécurisée, impossible à lire.

Copiez la valeur SHA1 générée (dans la capture : « 99d6d96fa55bdf08b4040a142a8d0d934bc9d12b »). Nous l'utiliserons comme empreinte digitale pour le certificat de l'appareil dans Azure IoT Hub.
Connectez-vous maintenant au portail Azure IoT Hub pour créer un nouvel appareil :
- Ouvrez un navigateur et allez sur portal.azure.com.
- Si vous n'avez pas de compte Azure, cliquez sur « Créer un compte ! » pour en créer un. Sinon, connectez-vous.
- Dans le panneau de navigation gauche, cliquez sur « Créer une ressource ».
- Cliquez sur « Internet des objets » puis « IoT Hub ».
- Sélectionnez un abonnement, un groupe de ressources, une région et un nom pour le IoT Hub. Dans l'exemple : « Essai gratuit », « MKR », « USA Est », « ArduinoProjectHubTutorial ». Cliquez sur « Vérifier + créer ».
- Cliquez sur « Créer » sur l'écran de confirmation.
- Attendez quelques minutes le déploiement.
- Une fois terminé, cliquez sur « Accéder à la ressource ».
- Créez un nouvel appareil IoT : cliquez sur « Appareils IoT » sous « Explorer ».
- Cliquez sur « Ajouter » pour ajouter un nouvel appareil.
- Entrez un nom pour l'appareil (ex: « MyMKRNB1500 »), cliquez sur l'onglet « X.509 Auto-signé ». Collez l'empreinte SHA1 du Moniteur série Arduino dans les champs « Empreinte principale » et « Empreinte secondaire ». Cliquez sur « Enregistrer ».
- Vous verrez maintenant une nouvelle entrée dans la page « Appareils IoT ».










Connexion de la carte à Azure IoT Hub
- Ouvrez le sketch Azure IoT Hub NB dans l'Arduino IDE via Fichier → Exemples → Arduino Cloud Provider Examples → AzureIoTHub → Azure_IoT_Hub_NB.
- Dans l'onglet
arduino_secrets.h, renseignez le code PIN de la carte SIM si nécessaire :
// Réglages NB
#define SECRET_PINNUMBER ""
- Mettez à jour la valeur
brokeravec le point de terminaison créé dans le portail Azure IoT Hub :
// Renseignez le nom d'hôte de votre broker Azure IoT Hub
#define SECRET_BROKER ".azure-devices.net"
- Mettez à jour l'identifiant de l'appareil avec le nom créé dans le portail :
// Renseignez l'identifiant de l'appareil
#define SECRET_DEVICE_ID ""
- Téléversez le sketch sur votre carte et ouvrez le moniteur série. La carte tentera de se connecter au réseau cellulaire, puis à Azure IoT Hub via MQTT.

Interaction avec la carte sur Azure IoT Core
Maintenant que votre carte est connectée à Azure IoT Hub, vous pouvez interagir avec elle via le portail. Le sketch envoie un message sur le topic devices/{deviceId}/messages/events/ toutes les 5 secondes et écoute sur devices/{deviceId}/messages/devicebound/#.
Dans le portail Azure IoT Hub, cliquez sur la ligne de l'identifiant de votre appareil dans le tableau « Appareils IoT ». Puis cliquez sur le bouton « Message vers l'appareil » dans la barre d'outils.

Saisissez un corps de message à envoyer (ex: « Hello there :) ») et cliquez sur « Envoyer le message ».

Lorsque la carte reçoit le message, le Moniteur série de l'Arduino IDE l'affiche.

Pour visualiser les messages envoyés par la carte :
- Connectez-vous à shell.azure.com (sélectionnez « Bash » si c'est votre première fois).
- Installez l'extension IoT Hub :
az extension add --name azure-cli-iot-ext
- Exécutez la commande suivante, remplacez <nom_hub> par le nom de votre hub (tapez « y » si une mise à jour de dépendance est demandée) :
az iot hub monitor-events --hub-name
- Les messages s'afficheront dans le shell :

Conclusion
Dans ce tutoriel, nous avons vu comment utiliser de manière sécurisée une carte Arduino MKR NB 1500 avec Azure IoT Hub. Un certificat X.509 auto-signé a servi à l'authentification via MQTT, la clé privée étant stockée dans l'élément ATECC508A/ATECC608A. Des messages MQTT ont été échangés dans les deux sens.
Ce n'est qu'un début : vous pouvez combiner Azure IoT Hub avec de nombreux autres services Azure !
Code
GitHub
https://github.com/arduino/ArduinoCloudProviderExamples
Processus de fabrication
- Comment l'IoT et la 5G transforment les lieux de travail modernes
- Arduino lance Portenta H7 : Carte IoT grade industriel débute au CES
- Azure RTOS s'étend sur les principales plateformes embarquées avec de nouveaux kits de développement
- Connecter un Raspberry Pi 3 au capteur DHT11 et envoyer les données vers le cloud ThingsIo.ai
- Azure vs AWS : quelle plateforme cloud gagne pour l'IoT ?
- Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub
- Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
- Contrôle IoT à Distance d'un Bras Robotique Personnalisé avec Arduino MKR1000
- Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance