Arduino MKR NB 1500 sicher mit Azure IoT Hub verbinden
Komponenten und Zubehör
| Arduino MKR NB 1500 | × | 1 |
| Micro-USB-zu-USB-Kabel | × | 1 |
| 3,7 V LiPo-Akku | × | 1 |
| Micro-SIM-Karte | × | 1 |
Apps und Onlinedienste
- Arduino IDE
- Microsoft Azure
Über dieses Projekt
Hinweis: Dieses Tutorial könnte veraltet sein. Eine aktuellere Version finden Sie hier.
Einführung
Azure IoT Hub ermöglicht es, Milliarden von Geräten sicher zu verbinden, zu überwachen und zu verwalten, um Internet-of-Things-Anwendungen (IoT) zu entwickeln.
Geräte können über die Protokolle HTTPS, AMQP und MQTT eine Verbindung zu Azure IoT Hub herstellen. Azure stellt SDKs für viele Programmiersprachen bereit, die diese Protokolle abstrahieren. Zusätzlich können Sie über einen MQTT-Client eine Verbindung herstellen. Weitere Informationen zur MQTT-Unterstützung von IoT Hub finden Sie hier.
In diesem Tutorial erfahren Sie, wie Sie ein Arduino MKR NB 1500 Board sicher über einen MQTT-Client mit Azure IoT Hub verbinden. MQTT (Message Queuing Telemetry Transport) ist ein M2M-Konnektivitätsprotokoll (Machine-to-Machine), das einen Messaging-Abonnement- und Publish-Transport bereitstellt.
Für die Authentifizierung bei Azure IoT Hub können Geräte SAS-Token oder X.509-Zertifikate verwenden. In diesem Tutorial nutzen wir ein X.509-Zertifikat zur Authentifizierung des Boards.
Jedes Arduino MKR Board mit integrierter Konnektivität – einschließlich des MKR NB 1500 – ist mit einem Microchip ATECC508A oder ATECC608A Kryptoelement ausgestattet. Dieses Element kann einen 256-Bit-ECC-Schlüssel (Elliptic Curve Cryptography) sicher generieren und speichern.
Software- und Hardware-Setup
Falls die Arduino IDE noch nicht installiert ist, laden Sie sie herunter und installieren Sie sie.
Stellen Sie sicher, dass das neueste Paket Arduino SAMD Boards
installiert ist. Öffnen Sie dazu in der Arduino IDE Werkzeuge → Board: „…“ → Boardverwalter… und suchen Sie nach Arduino SAMD
. Zum Zeitpunkt der Erstellung war Version 1.6.20 die aktuelle.

Installieren Sie als Nächstes die benötigten Bibliotheken über den Bibliotheksverwalter der Arduino IDE (Sketch → Bibliothek einbinden → Bibliotheken verwalten…). Suchen Sie nach und installieren Sie jeweils:
- MKRNB
- ArduinoBearSSL
- ArduinoECCX08
- ArduinoMqttClient
- Arduino Cloud Provider Examples
Legen Sie die Micro-SIM-Karte in den Slot auf der Unterseite des MKR NB 1500 ein und verbinden Sie den 3,7 V LiPo-Akku mit dem JST-Anschluss. Schließen Sie das Board dann per Micro-USB-Kabel an Ihren Computer an. Wählen Sie in der Arduino IDE unter Werkzeuge → Port „…“ den seriellen Port und unter Werkzeuge → Board „…“ das Board Arduino MKR NB 1500
aus.

Board in Azure IoT Hub konfigurieren und hinzufügen
Wie erwähnt, erlaubt Azure IoT Hub Geräten, die das MQTT-Protokoll verwenden und sich per X.509-Zertifikat authentifizieren. Wir erzeugen ein selbstsigniertes X.509-Zertifikat auf dem Board und fügen dessen SHA1-Fingerprint im Azure IoT Hub Portal hinzu.
Das selbstsignierte Zertifikat kann mit einem Beispiel-Sketch aus der ArduinoECCX08-Bibliothek generiert werden. Öffnen Sie ihn in der Arduino IDE über Datei → Beispiele → ArduinoECCX08 → Tools → ECCX08SelfSignedCert. Klicken Sie auf Hochladen
, um den Sketch zu kompilieren und auf das Board zu laden. Öffnen Sie anschließend den Serial Monitor und stellen Sie die Zeilenende-Konfiguration auf Both NL & CR
ein.
Der Sketch fordert Sie auf, das ATECC508A/ECC608A Kryptoelement dauerhaft zu konfigurieren und zu sperren, falls es noch nicht konfiguriert ist. Hinweis: Dieser Sperrvorgang ist permanent und irreversibel, aber notwendig, um das Kryptoelement zu nutzen. Die Konfiguration erlaubt die Verwendung von 5 privaten Schlüsselslots (0–4) mit beliebigen Cloud-Anbietern (oder Servern); ein privater Schlüssel kann für jeden der 5 Slots jederzeit neu generiert werden. Ausgeliefert wird das Kryptoelement im unkonfigurierten und entsperrten Zustand.
Anschließend werden Sie nach Informationen für das selbstsignierte Zertifikat gefragt: Ausstellungsjahr, -monat, -tag und -stunde sowie die Gültigkeitsdauer in Jahren. Für dieses Tutorial verwenden wir Slot 0 zum Generieren und Speichern des privaten Schlüssels, der das Zertifikat signiert (Slots 1–4 können für zusätzliche private Schlüssel genutzt werden). Slot 8 speichert das Ausstellungs- und Ablaufdatum sowie die Signatur des Zertifikats. Wichtig: Da der private Schlüssel im Kryptoelement generiert wird, verlässt er das Gerät nie, wird sicher gespeichert und kann nicht ausgelesen werden.

Kopieren Sie den generierten SHA1-Wert (im Screenshot: 99d6d96fa55bdf08b4040a142a8d0d934bc9d12b). Er wird später als Fingerprint für das selbstsignierte Zertifikat des Geräts in Azure IoT Hub benötigt.
Nun melden Sie sich im Azure IoT Hub Portal an und erstellen ein neues Gerät:
- Öffnen Sie portal.azure.com im Browser.
- Falls Sie kein Azure-Konto haben, klicken Sie auf
Create one!
und erstellen Sie eines. Andernfalls melden Sie sich an. - Klicken Sie links im Navigationsbereich auf
Ressource erstellen
. - Wählen Sie
Internet of Things
und dannIoT Hub
. - Geben Sie Subscription, Ressourcengruppe, Region und IoT Hub Name an. Im Screenshot wurden
Free Trial
,MKR
,East US
undArduinoProjectHubTutorial
verwendet. Klicken Sie aufÜberprüfen + erstellen
. - Bestätigen Sie mit
Erstellen
. - Warten Sie einige Minuten, bis der IoT Hub bereitgestellt ist.
- Nach Abschluss klicken Sie auf
Zu Ressource wechseln
. - Klicken Sie unter
Erkunden
aufIoT-Geräte
. - Klicken Sie auf
Hinzufügen
, um ein neues Gerät anzulegen. - Geben Sie einen Gerätenamen ein (im Beispiel
MyMKRNB1500
), wählen Sie den ReiterX.509 Self-Signed
und fügen Sie den SHA1-Wert aus dem Serial Monitor sowohl alsPrimary Thumbprint
als auch alsSecondary Thumbprint
ein. Klicken Sie aufSpeichern
. - Das neue Gerät erscheint nun in der Liste.










Board mit Azure IoT Hub verbinden
- Öffnen Sie in der Arduino IDE den Sketch
Azure IoT Hub NB
über Datei → Beispiele → Arduino Cloud Provider Examples → AzureIoTHub → Azure_IoT_Hub_NB. - Im Tab
arduino_secrets.htragen Sie die PIN der SIM-Karte ein (falls erforderlich):// NB settings #define SECRET_PINNUMBER "" - Aktualisieren Sie den Broker-Wert mit dem Endpunkt aus dem Azure IoT Hub Portal:
// Fill in the hostname of your Azure IoT Hub broker #define SECRET_BROKER ".azure-devices.net" - Tragen Sie die Geräte-ID ein, die Sie im Portal erstellt haben:
// Fill in the device id #define SECRET_DEVICE_ID "" - Laden Sie den Sketch auf das Board hoch und öffnen Sie den Serial Monitor. Das Board verbindet sich mit dem Mobilfunknetz und versucht anschließend, per MQTT eine Verbindung zu Azure IoT Hub herzustellen.

Mit dem Board in Azure IoT Core interagieren
Nachdem das Board erfolgreich verbunden ist, können Sie über das Azure IoT Hub Portal mit ihm kommunizieren. Der Sketch sendet alle 5 Sekunden eine Nachricht an das Topic devices/{deviceId}/messages/events/ und lauscht auf dem Topic devices/{deviceId}/messages/devicebound/#.
Klicken Sie im Portal in der IoT-Geräte-Tabelle auf die Zeile Ihres Geräts und dann in der Symbolleiste auf Message to device
.

Geben Sie einen Nachrichtentext ein (z. B. Hello there :)
) und klicken Sie auf Send Message
.

Der Serial Monitor in der Arduino IDE zeigt die empfangene Nachricht an.

Um die vom Board gesendeten Nachrichten anzuzeigen:
- Melden Sie sich bei shell.azure.com an (beim ersten Mal
Bash
wählen). - Installieren Sie die IoT Hub Extension:
az extension add --name azure-cli-iot-ext - Führen Sie folgenden Befehl aus (ersetzen Sie
<hub name>durch Ihren Hub-Namen; bei Abfrage nach Abhängigkeitsupdate mity
bestätigen):az iot hub monitor-events --hub-name - Die Nachrichten werden in der Shell angezeigt:

Fazit
In diesem Tutorial haben wir gezeigt, wie ein Arduino MKR NB 1500 Board sicher mit Azure IoT Hub verwendet wird. Ein selbstsigniertes X.509-Zertifikat authentifiziert das Board über MQTT, wobei der zugehörige private Schlüssel im ATECC508A bzw. ATECC608A sicher gespeichert bleibt. MQTT-Nachrichten wurden in beide Richtungen ausgetauscht.
Dies ist erst der Anfang – Azure IoT Hub lässt sich mit vielen weiteren Azure-Diensten kombinieren!
Code
GitHub-Repository: https://github.com/arduino/ArduinoCloudProviderExamples
Herstellungsprozess
- Wie IoT und 5G moderne Arbeitsplätze transformieren
- Arduino launcht Portenta H7: Industrial-Grade IoT Board Debutiert auf CES
- Azure RTOS erweitert Support über führende Embedded-Plattformen mit neuen Development Kits
- Raspberry Pi 3 mit DHT11 verbinden und Daten an ThingsIo.ai Cloud hochladen
- Azure vs. AWS: Welche Cloud-Plattform gewinnt für IoT?
- GPS-Datenlogger mit räumlicher Analyse auf Azure IoT Hub
- Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
- Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000
- IoT-Solartracker: Intelligentes Energiemanagement mit Arduino Mega
- Azure IoT Schwimmbadsteuerung: Smarte Sensoren & Fernüberwachung