Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Een Arduino NB 1500 veilig verbinden met Azure IoT Hub

Componenten en benodigdheden

Arduino MKR NB 1500
× 1
Micro-USB naar USB-kabel (algemeen)
× 1
3.7V Lipo-batterij
× 1
Micro-simkaart
× 1

Apps en online services

Arduino IDE
Microsoft Azure

Over dit project

Opmerking:deze tutorial kan verouderd zijn, ga naar hier voor een meer actuele versie.

Inleiding

Met Azure IoT Hub kunt u "miljarden apparaten veilig verbinden, bewaken en beheren om Internet of Things (IoT)-toepassingen te ontwikkelen."

Apparaten kunnen verbinding maken met Azure IoT Hub met behulp van de volgende protocollen:HTTPS, AMPQ en MQTT - Azure biedt ook SDK's voor veel programmeertalen om deze protocollen te abstraheren. Daarnaast kunt u verbinding maken met IoT Hub via een MQTT-client. Deze pagina bevat meer informatie over de MQTT-ondersteuning van IoT Hub.

In deze zelfstudie wordt uitgelegd hoe u een Arduino MKR NB 1500-kaart veilig verbindt met Azure IoT Hub met behulp van een MQTT-client. MQTT (Message Queuing Telemetry Transport) is een M2M (machine-to-machine) connectiviteitsprotocol dat voorziet in een messaging-abonnement en publicatietransport.

Apparaten kunnen SAS-tokens of X.509-certificaten gebruiken voor verificatie met Azure IoT Hub, meer informatie vindt u hier. In deze zelfstudie gebruiken we een X.509-certificaat om het bord te authenticeren.

Elk Arduino MKR-bord met on-board connectiviteit, inclusief de MKR NB 1500, is uitgerust met een Microchip ATECC508A of ATECC608A crypto-element. Dit crypto-element kan worden gebruikt om veilig een 256-bits ECC-sleutel (Elliptic Curve Cryptography) te genereren en op te slaan.

Software en hardware instellen

Als u de Arduino IDE niet op uw computer hebt geïnstalleerd, download en installeer deze dan.

Nadat het is geïnstalleerd, moet u ervoor zorgen dat het nieuwste "Arduino SAMD Boards"-pakket is geïnstalleerd. U kunt dit controleren door de Arduino IDE te openen en het Tools -> Board:"..." -> Board Manager... te openen menu-item en zoeken naar "Arduno SAMD". Op het moment van schrijven was 1.6.20 de laatste versie.

Vervolgens moet je de Arduino-bibliotheken installeren die zullen worden gebruikt, met behulp van de bibliotheekmanager van de Arduino IDE. Open de Schets -> Bibliotheek opnemen -> Bibliotheken beheren... menu, zoek en installeer elk van de volgende bibliotheken afzonderlijk:

  • MKRNB
  • ArduinoBearSSL
  • ArduinoECCX08
  • ArduinoMqttClient
  • Arduino Cloud Provider-voorbeelden

Plaats nu de micro-simkaart in de sleuf aan de onderkant van het MKR NB 1500-bord en sluit de 3.7V Lipo-batterij aan op de JST-connector. Sluit vervolgens de MKR NB 1500 met de micro-USB-kabel aan op uw computer, selecteer de seriële poort in de Arduino IDE met behulp van Tools -> Port "..." menu en selecteer ook Arduino MKR NB 1500 in de Tools -> Board "..." menu.

Het bord configureren en toevoegen aan Azure IoT Hub

Zoals hierboven vermeld, staat Azure IoT Hub apparaten toe die verbinding maken via het MQTT-protocol en X.509-certificaten gebruiken voor verificatie. We gebruiken een schets om een ​​zelfondertekend X.509-certificaat op het bord te genereren en voegen vervolgens de SHA1 van dit certificaat toe aan de Azure IoT Hub-portal.

Het zelfondertekende certificaat kan worden gegenereerd met behulp van een voorbeeldschets uit de ArduinoECCX08-bibliotheek. Open de schets in de Arduino IDE met behulp van de File -> Voorbeelden -> ArduinoECCX08 -> Tools -> ECCX08SelfSignedCert . Klik op de knop "Uploaden" om de schets te bouwen en naar uw bord te uploaden en open vervolgens de seriële monitor. Zorg ervoor dat de configuratie van het einde van de regel is ingesteld op "Beide NL &CR."

Deze schets zal u vragen om uw ATECC508A naar ECC608A crypto-element permanent te configureren als het niet is geconfigureerd en vergrendeld. OPMERKING:dit vergrendelingsproces is permanent en onomkeerbaar, maar is nodig om het crypto-element te gebruiken - de configuratie waarmee de schetssets 5 privésleutelslots kunnen gebruiken met elke cloudprovider (of server) en een privésleutel kan op elk moment opnieuw worden gegenereerd voor elke van de 5 privé sleutelvakken (0 - 4) . Wanneer het bord vanuit de fabriek wordt verzonden, bevindt het crypto-element zich in een niet-geconfigureerde en ontgrendelde staat.

Hierna wordt u gevraagd om informatie die in het zelfondertekende certificaat moet worden opgenomen, waaronder het uitgiftejaar, de maand, de dag en het uur van het certificaat en de vervaltermijn in jaren. Voor deze zelfstudie gebruiken we slot 0 om de privésleutel te genereren en op te slaan die wordt gebruikt om het zelfondertekende certificaat te ondertekenen (slots 1 tot 4 kunnen worden gebruikt om indien nodig extra privésleutels te genereren en op te slaan) - daarna wordt slot 8 gebruikt om bewaar de uitgifte- en vervaldatum van het certificaat samen met de handtekening. Opmerking: Aangezien de privésleutel binnen het crypto-element wordt gegenereerd, verlaat deze het apparaat nooit en wordt deze veilig opgeslagen en kan niet worden gelezen.

Kopieer de gegenereerde SHA1-waarde (in deze schermafbeelding "99d6d96fa55bdf08b4040a142a8d0d934bc9d12b "). We zullen het in een latere stap gebruiken als vingerafdruk voor het zelfondertekende certificaat voor het apparaat in Azure IoT Hub.

Nu we een zelfondertekend certificaat hebben en de SHA1-vingerafdruk om het bord te identificeren, moeten we inloggen op de Azure IoT Hub-portal en er een nieuw apparaat voor maken.

1) Open een webbrowser en ga naar portal.azure.com.

2) Als u nog geen Azure-account hebt, klikt u op "Maak er een!" link op de pagina om een ​​account aan te maken. Voer anders uw e-mailadres in en klik op "Volgende" en volg het inlogproces.

3) Klik in het navigatiepaneel aan de linkerkant op "Maak een bron".

4) Klik vervolgens op "Internet of Things" en "IoT Hub".

5) U wordt gevraagd om een ​​abonnement, resourcegroep, regio en IoT Hub-naam te selecteren. In de onderstaande schermafbeelding werden "Free Trial", "MKR", "East US" en "ArduinoProjectHubTutorial" als invoer gebruikt. Klik op "Review + Create" om door te gaan.

6) Er verschijnt een bevestigingsscherm, klik op "Maken".

7) U moet een paar minuten wachten voordat de IoT Hub is gemaakt en geïmplementeerd.

8) Zodra de implementatie is voltooid, verschijnt er een knop "Ga naar resource", klik erop.

9) Nu kunnen we een nieuw IoT-apparaat maken, klik op "IoT-apparaten" onder de kop "Verkennen".

10) Klik op de knop "Toevoegen" om een ​​nieuw apparaat toe te voegen.

11) Voer een naam in voor het apparaat, hieronder is "MyMKRNB1500" ingevoerd en klik vervolgens op het tabblad "X.509 Self-Signed". Plak de SHA1 van de seriële monitor van de Arduino IDE voor zowel de primaire als de secundaire vingerafdruk. Klik vervolgens op de knop "Opslaan" om het apparaat te maken.

12) U ziet nu een nieuw item op de pagina IoT-apparaten.

Het bord verbinden met Azure IoT Hub

1) Open de Azure IoT Hub NB-schets in de Arduino IDE met behulp van File -> Voorbeelden -> Arduino Cloud Provider-voorbeelden -> AzureIoTHub-> Azure_IoT_Hub_NB.

2) Vul op het tabblad arduino_secrets.h de pincode in (indien nodig) voor de simkaart.

// NB instellingen#define SECRET_PINNUMBER "" 

3) Werk de waarde van de broker bij met het eindpunt dat is gemaakt in de Azure IoT Hub-portal.

// Vul de hostnaam in van uw Azure IoT Hub-broker#define SECRET_BROKER ".azure-devices.net" 

4) Werk de apparaat-ID-waarde bij, met de naam van het apparaat dat u hebt gemaakt in de Azure IoT Hub-portal.

// Vul het apparaat-ID in #define SECRET_DEVICE_ID "" 

5) Upload de schets naar uw bord en open de seriële monitor. Het bord zal proberen verbinding te maken met het mobiele netwerk en, indien succesvol, proberen verbinding te maken met Azure IoT Hub met behulp van MQTT.

Interactie met het bestuur op Azure IoT Core

Nu uw board met succes verbinding heeft gemaakt met Azure IoT Hub, kunnen we de Azure IoT Hub-portal gebruiken om ermee te communiceren. De schets stuurt een bericht naar de devices/{deviceId}/messages/events/ onderwerp elke 5 seconden en luistert naar berichten op de devices/{deviceId}/messages/devicebound/# onderwerp.

Klik in de Azure IoT Hub-portal op de rij met apparaat-ID's in de tabel IoT-apparaten voor uw bord. Klik vervolgens op de knop 'Bericht naar apparaat' in de werkbalk.

U kunt nu een berichttekst invoeren om naar het apparaat te sturen, in de onderstaande schermafbeelding "Hallo daar :) " is ingevoerd. Klik op de knop "Bericht verzenden" in de werkbalk om het bericht te verzenden.

Wanneer het bord het bericht ontvangt, zal de seriële monitor in de Arduino IDE het weergeven.

Om de berichten te bekijken die het bord verzendt:

1) Log in op shell.azure.com (selecteer "Bash" als dit de eerste keer is wanneer daarom wordt gevraagd).

2) Installeer de IoT Hub-extensie:

az extension add --name azure-cli-iot-ext 

3) Voer de volgende opdracht uit, vervang met de naam van uw hub (voer y in als u wordt gevraagd om de afhankelijkheid bij te werken):

az iot hub monitor-events --hub-name   

4) U ziet berichten afgedrukt naar de shell:

Conclusie

In deze zelfstudie hebben we besproken hoe u veilig een Arduino MKR NB 1500-kaart kunt gebruiken met Azure IoT Hub. Er is een zelfondertekend X.509-certificaat gebruikt voor verificatie met Azure IoT Hub met behulp van het MQTT-protocol waarbij de ATECC508A of ATECC608A de persoonlijke sleutel opslaat die aan het certificaat is gekoppeld. Er werden MQTT-berichten van en naar het bord gestuurd.

Dit is nog maar het begin, u kunt Azure IoT Hub gebruiken met veel van de andere services die Azure biedt!

Code

Github
https://github.com/arduino/ArduinoCloudProviderExamples

Productieproces

  1. Hoe IoT werkplekken verbindt
  2. Arduino-bord richt zich op industrieel IoT
  3. Dev kits ondersteunen Azure RTOS
  4. Raspberry PI-gebaseerd IoT-project dat DHT11-sensor verbindt
  5. IoT in the Cloud:Azure vs AWS
  6. GPS-datalogger, ruimtelijke analyse en Azure IoT Hub.
  7. Hartslagmeter met IoT
  8. Ioed gebruiken om een ​​robotarm op afstand te bedienen
  9. Internet of things (IoT)-gebaseerde zonne-tracker
  10. IoT-meter met Arduino, Yaler en IFTTT
  11. Azure IoT-zwembad