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 MKR GSM 1400 veilig verbinden met Google Cloud IoT Core

Componenten en benodigdheden

Arduino MKR GSM 1400
× 1
Micro-USB naar USB-kabel (algemeen)
× 1
3.7V Lipo-batterij
× 1
Micro-simkaart
× 1
Mobiele UF.L-antenne
× 1

Apps en online services

Arduino IDE
Google Cloud IoT Core

Over dit project

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

Inleiding

Apparaten kunnen verbinding maken met GCP IoT Core via HTTP of MQTT. Deze tutorial laat je zien hoe je een Arduino MKR GSM 1400-kaart veilig aansluit op GCP IoT Core 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 moeten JSON Web Tokens (JWT's) gebruiken voor authenticatie. Meer informatie over JWT's is te vinden in RFC 7519. GCP IoT Core ondersteunt zowel RSA- als Elliptic Curve-algoritmen om JSON Web Signatures (JWS) te verifiëren. Meer informatie over JWS is te vinden in RFC 7515.

Elk Arduino MKR-bord met on-board connectiviteit, inclusief de MKR GSM 1400, 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. We gebruiken een privésleutel die is opgeslagen in het crypto-element om de JWT te ondertekenen.

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 Sketch -> Bibliotheek opnemen -> Bibliotheken beheren... menu, zoek en installeer elk van de volgende bibliotheken afzonderlijk:

  • MKRGSM
  • Arduino_JSON
  • ArduinoECCX08 (versie 1.3.0 of hoger)
  • ArduinoMqttClient (versie 0.1.3 of hoger)
  • Arduino Cloud Provider-voorbeelden (versie 1.2.0 of hoger)

Plaats nu de micro-simkaart in de sleuf aan de onderkant van het MKR GSM 1400-bord, sluit de antenne aan en sluit de 3.7V Lipo-batterij aan op de JST-connector. Sluit vervolgens de MKR GSM 1400 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 GSM 1400 in de Extra -> Board "..." menu.

Het bord configureren en toevoegen aan GCP IoT Core

Zoals hierboven vermeld, vereist GCP IoT Core dat apparaten die verbinding maken via het MQTT-protocol JWT gebruiken voor authenticatie. We gebruiken een schets om een ​​privé- en openbare sleutel op het bord te genereren en voegen vervolgens de PEM-waarde van de openbare sleutel toe aan de GCP IoT Core-console.

De private en public kunnen 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 -> ECCX08JWSPublicKey . 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 u toelaten om 5 privésleutelslots te gebruiken met elke cloudprovider (of server) en een privésleutel kan op elk moment opnieuw worden gegenereerd voor een van de 5 privésleutels (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 welk slot u wilt gebruiken. Voor deze zelfstudie gebruiken we slot 0 om de privésleutel te genereren en op te slaan die wordt gebruikt voor een openbare sleutel (slots 1 tot 4 kunnen worden gebruikt om indien nodig extra privésleutels te genereren en op te slaan). 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 waarde voor de openbare sleutel, in deze schermafbeelding is de waarde:

-----BEGIN OPENBARE SLEUTEL-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFl4+DXufU84AhDGib7aMwmYwUVAp9coRdC9jOdzRe2kqGWFEb+QP4V4Y7 

We zullen het in een latere stap gebruiken bij het toevoegen van het apparaat aan GCP IoT Core.

Nu we een openbare PEM-sleutel hebben, moeten we inloggen op de GCP IoT Core-console en er een nieuw apparaat voor maken.

1) Open een webbrowser en ga naar https://cloud.google.com/ en klik op de link 'Aanmelden' om in te loggen met uw Google-ID.

2) Nadat u bent ingelogd, klikt u op de knop "GA NAAR CONSOLE". Vervolgens ziet u het hoofddashboard.

3) Klik op de link "MAKEN" om een ​​nieuw project aan te maken.

4) U wordt gevraagd om een ​​projectnaam, we gebruiken "MKR GCP Tutorial" voor de naam. Klik op de knop "MAKEN" om door te gaan.

5) Nadat het project is gemaakt, krijgt u een dashboardweergave ervan te zien.

6) Klik nu op het menupictogram in de linkerbovenhoek en blader naar de kop "BIG DATA" en klik op de link "IoT Core".

7) U wordt gevraagd om de API in te schakelen, klik op de knop "API inschakelen".

8) Zodra de API is ingeschakeld, wordt u gevraagd om een ​​apparaatregister te maken. Klik op de knop "Een apparaatregister maken" om door te gaan.

9) U krijgt dan een formulier te zien. Vul de "Register-ID" in, selecteer een regio. In de onderstaande schermafbeelding is "MKR_GCP_Tutorial" ingevoerd als register-ID en is "us-central1" als regio geselecteerd. Nadat het formulier is ingevuld, klikt u op de knop "Maken".

10) U krijgt dan de details van het register te zien.

11) Om een ​​nieuw apparaat toe te voegen, klikt u op de link "Apparaten" in de navigatiebalk aan de linkerkant.

12) Klik vervolgens op "+ MAAK EEN APPARAAT" in de kop bovenaan de pagina.

13) Voer de apparaatnaam in, in de onderstaande schermafbeelding werd "MyMKRGSM1400" gebruikt. "ES256" moet worden geselecteerd als het "Openbare sleutelformaat". Plak de openbare PEM-sleutel die eerder op het bord is gegenereerd in het tekstgebied "Waarde openbare sleutel". Klik vervolgens op de knop "Maken".

Het bord verbinden met GCP IoT Core

1) Open de GCP IoT Core GSM-schets in de Arduino IDE met behulp van Bestand -> Voorbeelden -> Arduino Cloud Provider Voorbeelden -> GoogleCloudPlatformIoTCore-> GCP_IoT_Core_GSM.

2) Vul op het tabblad arduino_secrets.h de pincode in (indien nodig) voor de simkaart, evenals de GPRS APN, gebruikersnaam en wachtwoord voor de mobiele provider die u gebruikt.

// GSM-instellingen#define SECRET_PINNUMBER ""#define SECRET_GPRS_APN "GPRS_APN" // vervang uw GPRS APN#define SECRET_GPRS_LOGIN "login" // vervang door uw GPRS-login#define SECRET_GPRS_PASSWORD "wachtwoord" // vervang door uw GPRS-wachtwoord 

4) Werk vervolgens de project-ID, cloudregio, register-ID en apparaat-ID bij.

// Vul uw Google Cloud Platform in - IoT Core info#define SECRET_PROJECT_ID ""#define SECRET_CLOUD_REGION ""#define SECRET_REGISTRY_ID ""#define SECRET_DEVICE_ID "" 

De waarde van de project-ID vindt u door op de menubalk bovenaan de GCP-console te klikken. Voor de bovenstaande stappen zijn de waarden:

#define SECRET_PROJECT_ID "mkr-gcp-tutorial"#define SECRET_CLOUD_REGION "us-central1"#define SECRET_REGISTRY_ID "MKR_GCP_Tutorial"#define SECRET_DEVICE_ID "MyMKRGSM1400" 

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 GCP IoT Core met behulp van MQTT.

Interactie met het bestuur over GCP IoT Core

Nu uw board met succes verbinding heeft gemaakt met GCP IoT Core, kunnen we de GCP IoT Core-console gebruiken om ermee te communiceren. De schets stuurt een bericht naar de /devices/{deviceId}/state onderwerp elke 5 seconden en luistert naar berichten op beide /devices/{deviceId}/config onderwerp en /devices/{deviceId}/commands/# onderwerpen.

Klik op de apparaatpagina in de GCP IoT Core-console op de knop "SEND COMMAND".

Er verschijnt een modaal dialoogvenster waarin u een bericht kunt invoeren om te verzenden. In de onderstaande schermafbeelding "Hallo daar!" werd ingevoerd. Klik op de knop "SEND COMMAND" om het bericht te verzenden.

Zodra het bord het bericht heeft ontvangen, wordt het afgedrukt op de seriële monitor.

Klik op het tabblad "Configuratie &statusgeschiedenis" om de berichten te bekijken die het bord verzendt.

De berichten verschijnen in Base64-gecodeerd formaat, om de waarde te bekijken, klik en invoer in de lijst en selecteer het keuzerondje "Tekst".

In de bovenstaande schermafbeelding stuurde het bord een "hallo 464488" waarde, de 464488 waarde is het resultaat van de millis() functie op het bord.

Conclusie

In deze tutorial hebben we besproken hoe je veilig een Arduino MKR GSM 1400-kaart kunt gebruiken met GCP IoT Core. Er is een ondertekende JWT gebruikt voor authenticatie met GCP IoT Core met behulp van het MQTT-protocol waarbij de ATECC508A of ATECC608A de persoonlijke sleutel opslaat die is gebruikt om de JWT te ondertekenen. Er werden MQTT-berichten van en naar het bord gestuurd.

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

Code

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

Productieproces

  1. ADLINK werkt samen met Google Cloud om IoT-klare oplossingen te bieden
  2. Raspberry PI-gebaseerd IoT-project dat DHT11-sensor verbindt
  3. Windows 10 IoT Core en SHT15
  4. Windows 10 IoT Core voor Raspberry Pi 3 Model B+
  5. Windows 10 IoT Core:spraakgestuurde robot
  6. Portenta H7 Dual Core-foutopsporing
  7. Arduino - Foto maken - Uploaden naar Google Drive
  8. Hartslagmeter met IoT
  9. Arduino Cloud Sensor Tower
  10. Azure IoT-zwembad
  11. IoT-gateways:een gids om dingen met de cloud te verbinden