Introduction Google Cloud IoT est une plateforme de gestion de l’Internet des objets (IoT) qui permet de connecter, de gérer et d’analyser les données de différents appareils IoT. Le Raspberry Pi Pico est un petit ordinateur monocarte à faible coût conçu pour l’apprentissage de l’électronique et de la programmation. Dans cet article, nous allons voir comment utiliser Google Cloud IoT avec Raspberry Pi Pico pour créer un projet d’IoT.
Prérequis Avant de commencer, vous devez avoir les éléments suivants :
- Un Raspberry Pi Pico
- Un ordinateur avec une connexion Internet
- Une carte microSD
- Un compte Google Cloud
- Créer un projet Google Cloud IoT
La première étape consiste à créer un projet Google Cloud IoT. Pour ce faire, rendez-vous sur la console Google Cloud (https://console.cloud.google.com/), cliquez sur le bouton « Sélectionner un projet » en haut de l’écran, puis sur « Nouveau projet ». Donnez un nom à votre projet et cliquez sur « Créer ». Ensuite, activez Google Cloud IoT Core en cliquant sur « Activer les API et les services » dans le coin supérieur gauche de l’écran, puis en recherchant «
Google Cloud IoT API » dans la barre de recherche. Cliquez sur « Activer ».
Voici les liens pour créer un projet Google Cloud IoT :
- Créer un compte Google Cloud Platform : https://console.cloud.google.com/ : Ce lien vous permet de créer un compte GCP, qui est nécessaire pour accéder aux services de Google Cloud Platform, y compris Google Cloud IoT.
- Activer l’API Cloud IoT Core : https://console.cloud.google.com/flows/enableapi?apiid=cloudiot.googleapis.com : Ce lien vous permet d’activer l’API Cloud IoT Core pour votre projet GCP. Cette API est nécessaire pour accéder aux fonctionnalités de Cloud IoT Core.
- Configurer l’authentification OAuth : https://console.cloud.google.com/apis/credentials : Ce lien vous permet de configurer l’authentification OAuth pour votre projet GCP. L’authentification OAuth est utilisée pour autoriser votre Raspberry Pi à accéder à Cloud IoT Core.
- Installer les outils Google Cloud SDK : https://cloud.google.com/sdk/docs/install : Ce lien vous guide à travers l’installation des outils Google Cloud SDK sur votre Raspberry Pi. Ces outils sont nécessaires pour interagir avec Cloud IoT Core depuis votre Raspberry Pi.
- Configurer votre Raspberry Pi : https://cloud.google.com/iot/docs/devices/setup : Ce lien vous guide à travers la configuration de votre Raspberry Pi pour qu’il puisse se connecter à Cloud IoT Core. Cela implique la création d’un certificat et d’une clé de sécurité, la configuration d’un compte de service, etc.
- Créer un registre de périphériques : https://cloud.google.com/iot/docs/how-tos/devices : ce lien vous guide à travers la création d’un registre de périphériques dans Cloud IoT Core. Le registre de périphériques est nécessaire pour enregistrer et gérer vos périphériques IoT.
- Connecter votre Raspberry Pi : https://cloud.google.com/iot/docs/how-tos/mqtt-bridge : ce lien vous guide à travers la connexion de votre Raspberry Pi à Cloud IoT Core à l’aide de la bibliothèque Python du SDK Google Cloud IoT Core. Cette étape vous permet d’envoyer et de recevoir des données depuis votre Raspberry Pi vers votre compte Google Cloud
- Configurer Google Cloud IoT
Une fois que vous avez activé Google Cloud IoT Core, vous devez configurer votre instance de dispositif. Cliquez sur « Créer un registre de dispositif » pour configurer votre instance de dispositif. Dans la fenêtre qui s’affiche, entrez un nom pour votre registre, choisissez le type de registre que vous souhaitez créer et cliquez sur « Suivant ».
- Créer un certificat pour votre dispositif
Avant de connecter votre dispositif à Google Cloud IoT, vous devez créer un certificat. Vous pouvez créer un certificat en utilisant OpenSSL. Ouvrez un terminal et exécutez la commande suivante :
openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes -out rsa_cert.pem -subj « /CN=unused »
Cela va générer un certificat RSA privé et un certificat RSA public.
- Connecter votre dispositif à Google Cloud IoT
La prochaine étape consiste à connecter votre dispositif à Google Cloud IoT. Pour ce faire, vous devez installer la bibliothèque de connexion Google Cloud IoT sur votre Raspberry Pi Pico. Vous aurez besoin des éléments suivants :
- Le certificat de périphérique téléchargé depuis Google Cloud IoT
- La clé privée téléchargée depuis Google Cloud IoT
- Le certificat de racine téléchargé depuis Google Cloud IoT
Ouvrez un terminal et exécutez les commandes suivantes :
git clone https://github.com/GoogleCloudPlatform/google-cloud-iot-python.git cd google-cloud-iot-python/samples/manager/ pip install -r requirements.txt
Cela va installer la bibliothèque de connexion Google Cloud IoT sur votre Raspberry Pi Pico.
- Envoyer des données à Google Cloud IoT
Maintenant que vous avez connecté votre dispositif à Google Cloud IoT, vous pouvez envoyer des données. Pour ce faire, vous devez créer un script Python sur votre Raspberry Pi Pico. Ouvrez un éditeur de texte et collez le code suivant :
import time
import jwt
import paho.mqtt.client as mqtt
project_id = "YOUR_PROJECT_ID"
cloud_region = "YOUR_REGION"
registry_id = "YOUR_REGISTRY_ID"
device_id = "YOUR_DEVICE_ID"
private_key_file = "rsa_private.pem"
algorithm = "RS256"
mqtt_bridge_hostname = "mqtt.googleapis.com"
mqtt_bridge_port = 8883
mqtt_topic = "/devices/{}/events".format(device_id)
def create_jwt(project_id, private_key_file, algorithm):
token = {
'iat': time.time(),
'exp': time.time() + 60 * 60, # Expiration time is one hour from now
'
}
with open(private_key_file, 'r') as f:
private_key = f.read()
return jwt.encode(token, private_key, algorithm=algorithm)
def on_connect(client, userdata, flags, rc):
print('Connected with result code ' + str(rc))
def on_publish(client, userdata, mid):
print('Message published')
client = mqtt.Client(client_id='projects/{}/locations/{}/registries/{}/devices/{}'.format(project_id, cloud_region, registry_id, device_id))
client.username_pw_set(username='unused', password=create_jwt(project_id, private_key_file, algorithm))
client.tls_set(ca_certs='roots.pem')
client.on_connect = on_connect
client.on_publish = on_publish
client.connect(mqtt_bridge_hostname, mqtt_bridge_port)
payload = "Hello, World!"
client.publish(mqtt_topic, payload=payload, qos=1)
client.disconnect()
N’oubliez pas de remplacer les valeurs YOUR_PROJECT_ID, YOUR_REGION, YOUR_REGISTRY_ID et YOUR_DEVICE_ID par les informations de votre registre et de votre dispositif.
6. Recevoir des données de Google Cloud IoT Vous pouvez également recevoir des données de Google Cloud IoT. Pour ce faire, vous devez créer un autre script Python sur votre Raspberry Pi Pico. Ouvrez un éditeur de texte et collez le code suivant :
import time
import jwt
import paho.mqtt.client as mqtt
project_id = "YOUR_PROJECT_ID"
cloud_region = "YOUR_REGION"
registry_id = "YOUR_REGISTRY_ID"
device_id = "YOUR_DEVICE_ID"
private_key_file = "rsa_private.pem"
algorithm = "RS256"
mqtt_bridge_hostname = "mqtt.googleapis.com"
mqtt_bridge_port = 8883
mqtt_topic = "/devices/{}/events".format(device_id)
def create_jwt(project_id, private_key_file, algorithm):
token = {
'iat': time.time(),
'exp': time.time() + 60 * 60, # Expiration time is one hour from now
'sub': 'unused',
'aud': '/projects/{}/locations/{}/registries/{}/devices/{}'.format(project_id, cloud_region, registry_id, device_id)
}
with open(private_key_file, 'r') as f:
private_key = f.read()
return jwt.encode(token, private_key, algorithm=algorithm)
def on_connect(client, userdata, flags, rc):
print('Connected with result code ' + str(rc))
client.subscribe(mqtt_topic)
def on_message(client, userdata, msg):
print(msg.payload.decode())
client = mqtt.Client(client_id='projects/{}/locations/{}/registries/{}/devices/{}'.format(project_id, cloud_region, registry_id, device_id))
client.username_pw_set(username='unused', password=create_jwt(project_id, private_key_file, algorithm))
client.tls_set(ca_certs='roots.pem')
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqtt_bridge_hostname, mqtt_bridge_port)
client.loop_forever()
N’oubliez pas de remplacer les valeurs YOUR_PROJECT_ID, YOUR_REGION, YOUR_REGISTRY_ID et YOUR_DEVICE_ID par les informations de votre registre et de votre dispositif.
En conclusion, la connexion de Raspberry Pi Pico à Google Cloud IoT peut sembler complexe, mais avec les étapes décrites ci-dessus, vous pouvez y arriver. En utilisant ces étapes simples, vous pouvez créer des projets IoT qui transmettent et reçoivent des données de Google Cloud IoT.
NB: Vous pouvez utiliser les bibliothèques PicoMQTT et TinyJSON pour établir une connexion MQTT et envoyer des données JSON à Google Cloud IoT.