Amazon Sidewalk est une technologie de réseau sans fil longue portée et à faible bande passante développée par Amazon. Sa raison d’être est l’extension de la connectivité des appareils intelligents au-delà des limites de la maison ou de la propriété où ils sont installés. Elle repose pour cela sur un réseau partagé couvrant des zones plus étendues, par exemple à l’échelle d’un quartier ou d’une communauté. Amazon Sidewalk crée donc un réseau d’appareils dans le but d’améliorer les performances et la portée des appareils connectés à l’Internet des objets (ou appareils IoT). Cela s’avère particulièrement utile pour les appareils de domotique installés hors les murs de la maison, par exemple un traceur, l’éclairage extérieur, le système d’arrosage automatique, etc., qui peuvent ainsi être connectés à Internet même lorsqu’ils sont hors de la portée du Wi-Fi et d’autres réseaux domestiques courants. Cette technologie permet ainsi aux développeurs produits de se consacrer pleinement à la conception de leurs produits sans avoir à se soucier de comment créer, sécuriser et maintenir un réseau fiable.
Amazon Sidewalk établit donc son réseau en détournant une petite partie de la bande passante de votre Wi-Fi domestique au profit des appareils compatibles Amazon Sidewalk, dont les appareils situés à l’extérieur de la maison, mais aussi les éventuels appareils compatibles de vos voisins. Les appareils intelligents à commande vocale comme les enceintes intelligentes Amazon Echo ou les caméras Ring font office de ponts en partageant une petite partie de la bande passante de votre connexion Internet avec le réseau Amazon Sidewalk (voir figure 1). Ces ponts fournissent de la connectivité aux appareils compatibles Amazon Sidewalk qui se connectent à l’aide du Bluetooth® Low Energy ou BLE (à savoir, dans la bande de fréquence de 900 MHz) ou d’autres protocoles de communication à longue portée de façon à pouvoir établir des communications sur de plus longues distances qu’avec le Wi-Fi standard. Cette technique permet d’étendre la portée d’appareils tels que des systèmes d’éclairage intelligents, des traceurs pour animaux de compagnie ou des systèmes d’arrosage intelligents jusqu’à 800 mètres.
Ce type de réseau peut s’avérer utile dans plusieurs cas de figure, notamment lorsque la connexion au réseau Wi-Fi ou cellulaire est trop faible, lorsque les appareils extérieurs sont installés trop loin d’un point d’accès ou lorsque le réseau domestique tombe en panne, mais que des messages importants doivent être délivrés au propriétaire.
C’est d’ailleurs ce dernier scénario que nous allons retenir comme exemple pratique pour la suite de cette présentation. Nous partons en effet du postulat que nous souhaitons créer un système de détection d’eau qui utiliserait Amazon Sidewalk pour avertir le propriétaire en cas de fuite. Sidewalk est ici préférable au Wi-Fi local. Imaginons par exemple qu’une fuite d’eau déclenche le disjoncteur duquel dépend le routeur Wi-Fi de la maison, grâce à Sidewalk, le système demeure en mesure d’envoyer une alerte au propriétaire en passant par un appareil connecté dans le voisinage, par exemple un appareil Echo ou une sonnette Ring.
Pour créer un système de détection d’eau connecté à l’aide d’Amazon Sidewalk, nous avons besoin des éléments suivants:
Outre ces composants, les outils suivants sont nécessaires, ou tout du moins fortement recommandés:
D’après Silicon Labs et Amazon, le protocole Sidewalk a besoin d’une passerelle pour permettre aux points terminaux d’accéder au cloud Amazon Web Services (AWS). Plusieurs produits Amazon peuvent servir de passerelle (voir figure 2). Ces produits ont des fonctions différentes et leur prise en charge des fonctionnalités du réseau Amazon Sidewalk est variable. Dans le projet qui nous intéresse, nous utiliserons une enceinte intelligente Amazon Echo de quatrième génération comme passerelle Amazon Sidewalk, car Silicon Labs a validé l’utilisation du kit de développement logiciel Amazon Sidewalk pour ses produits.
Nous vous recommandons d’utiliser votre propre passerelle. Vous pourrez ainsi entièrement la contrôler en vue de vous assurer un accès réseau constant durant la phase de développement. Il se peut toutefois que vous disposiez déjà d’un accès au réseau Amazon Sidewalk chez vous. Pour vous en assurer, consultez la carte de couverture Sidewalk d’Amazon.
Enfin, voici les dernières conditions requises pour passer à la configuration de votre passerelle avec le support Sidewalk:
Ce projet de système de détection d’eau s’appuie sur le Silicon Labs Pro Kit pour Amazon Sidewalk (voir figure 3) et le détecteur de fuite de liquide Amphenol Advanced Sensors BAF147B002-00A0.
Le Silicon Labs Pro Kit pour Amazon Sidewalk est un kit de développement complet qui fournit tous les outils matériels et logiciels nécessaires pour évaluer et développer en grand volume des appareils Amazon Sidewalk évolutifs.
Le kit comprend les éléments suivants:
Pour notre projet, nous utiliserons la carte mère Wireless Pro Kit associée à la carte radio KG100S. Installez la carte radio KG100S sur la carte mère en alignant soigneusement les broches à pas fin entre les deux cartes de circuits imprimés. Assurez-vous également que l’interrupteur d’alimentation de la carte principale se trouve en position AEM. Cela nous permettra d’alimenter l’appareil par USB tout en programmant le micrologiciel. Vous pouvez également alimenter la carte mère à l’aide d’une pile bouton CR2032, ce qui facilite l’implémentation de l’appareil en situation réelle.
Pour ce projet, nous utilisons le détecteur de fuites de liquide Amphenol Advanced Sensors BAF147B002-00A0 (voir figure 4). Il s’agit d’un capteur intégrant une résistance fixe de 510 kΩ qui relie deux électrodes. L’eau agit comme une résistance variable entre les électrodes, modifiant ainsi la résistance interne du capteur.
Vous devrez ajouter une deuxième résistance externe fixe de 10 kΩ comme résistance de rappel. Il vous faudra ensuite connecter un fil de la résistance à un fil du capteur et l’autre fil à la source 3,3 V de la carte mère (voir figure 5).
REMARQUE: 10 kΩ est la valeur de départ recommandée pour la résistance. Si vous n’obtenez pas de lectures fiables du capteur, essayez des valeurs de résistance de plus en plus élevées. Si vous utilisez une autre carte de développement avec une tension source de 5 V, commencez avec une résistance fixe de 100 kΩ.
Notre projet de détection d’eau utilise Simplicity Studio 5 pour développer et télécharger le micrologiciel sur la carte de développement. Simplicity Studio 5 (SSv5) est un environnement de développement intégré (IDE) gratuit basé sur Eclipse. Il est fourni par Silicon Labs pour développer des applications embarquées sur les appareils de la marque. Disponible pour Windows, macOS et Ubuntu Linux, cet IDE fournit un ensemble complet d’outils pour le développement, le débogage, la configuration et l’analyse de logiciels. SSv5 est conçu pour simplifier le processus de développement, quel que soit le niveau d’expérience du développeur. Il présente une interface utilisateur intuitive et un large éventail de fonctionnalités, parmi lesquelles:
En plus de Simplicity Studio, nous vous recommandons de télécharger et d’installer J-Link RTT Viewer pour afficher les journaux d’application. Vous trouverez ce logiciel en cliquant ici. Voici les étapes à suivre pour configurer l’application:
Étant donné que Sidewalk est un service Amazon, nous utiliserons AWS (voir figure 6) pour permettre au backend de relayer les messages de l’appareil intégré vers le cloud. D’après les instructions de Silicon Labs, il vous faut savoir si vous êtes un utilisateur root ou un utilisateur IAM (Identity and Access Management). Si vous êtes un développeur débutant, nous vous recommandons de créer un compte utilisateur root. Les développeurs plus expérimentés opteront pour un compte utilisateur IAM. Il vous sera également demandé de fournir quelques informations relatives au paiement et à la facturation.
Vous aurez besoin d’un périphérique de pont compatible avec Amazon Sidewalk pour vous connecter à AWS à l’aide d’Amazon Sidewalk. Pour ce projet, nous utiliserons une enceinte intelligente Amazon Echo de quatrième génération. Au moment de la rédaction de cet article, Amazon n’active la fonctionnalité Sidewalk que sur les ponts situés aux États-Unis. Pour intégrer votre appareil à AWS, vous devrez procéder comme suit:
Amazon Sidewalk est un réseau sans fil longue portée à faible bande passante qui utilise un spectre sans licence dans la bande de fréquences 900 MHz. Amazon exploite le réseau gratuitement pour les clients finaux. Sidewalk est conçu dans l’optique de fournir un réseau sécurisé et partagé, de sorte que plusieurs appareils peuvent partager les mêmes ressources réseau. Ceci est rendu possible grâce à la technique de canalisation, un procédé qui divise la bande passante disponible en plusieurs canaux. Chaque appareil peut être affecté à un canal spécifique de façon à éviter les interférences entre appareils.
Toutes les données transmises sur le réseau sont chiffrées et les appareils sont authentifiés à l’aide d’un protocole de négociation sécurisé afin de protéger le réseau contre les accès non autorisés et le vol de données. La technologie Sidewalk se veut également évolutive et compatible avec de nombreux appareils afin de s’étendre plus facilement à de nouveaux domaines d’application. Elle convient particulièrement à des applications à faible consommation d’énergie et avec un faible débit de données, mais qui nécessitent cependant une couverture étendue. Sidewalk peut assurer une vitesse de transmission de données de 100 kb/s avec une portée pouvant s’étendre à 1,6 km. Voici quelques informations techniques complémentaires concernant Amazon Sidewalk:
Commençons par un rapide aperçu des fichiers critiques de notre projet dans Simplicity Studio de Silicon Labs (voir figure 7):
La fonction initADC active les horloges et configure le matériel ADC suivant les paramètres appropriés. Sauf indication contraire, les conditions typiques sont ADCCLK=10 MHz, OSR=2.
void initADC(void) {
// Activer l’horloge ADC
CMU_ClockEnable(cmuClock_ADC0, true);
// Baser la configuration ADC sur la configuration par défaut.
ADC_Init_TypeDef init = ADC_INIT_DEFAULT;
ADC_InitSingle_TypeDef initSingle = ADC_INITSINGLE_DEFAULT;
// Modifier les paramètres ADC par défaut
init.timebase = ADC_TimebaseCalc(0);
init.prescale = ADC_PrescaleCalc(ADC_FREQ, 0);
ADC_Init(ADC0, &init);
// Définir l’entrée sur le capteur de température. Modifiez cela en fonction de votre capteur spécifique
initSingle.acqTime = adcAcqTime16; // Acquisition time
initSingle.posSel = adcPosSelAPORT2XCH9; // Change to your ADC channel
ADC_InitSingle(ADC0, &initSingle);
}
La fonction readADC relève la tension présente sur la broche ADC.
uint32_t readADC(void) {
ADC_Start(ADC0, adcStartSingle);
while (ADC0->STATUS & ADC_STATUS_SINGLEACT) {}
return ADC_DataSingleGet(ADC0);
Pour envoyer un message depuis un Pro Kit de Silicon Labs vers AWS IoT Core à l’aide de Simplicity Studio, il vous faut configurer l’appareil, établir une connexion MQTT sécurisée et publier un message dans un sujet AWS IoT Core. Si ce n’est pas encore fait, créez tout d’abord un compte AWS.
Enregistrez votre Pro Kit dans AWS IoT Core et créez un objet. Générez et téléchargez un certificat, une clé privée et un certificat racine CA pour votre appareil.
Ouvrez ensuite Simplicity Studio et créez un nouveau projet pour votre Pro Kit.
Assurez-vous que les SDK et les bibliothèques nécessaires à la mise en réseau et à MQTT sont inclus dans votre projet. Nous utiliserons une connexion MQTT sécurisée pour publier des messages sur le terminal AWS IoT Core (port 8883 pour MQTT sécurisé). Le code remplira deux fonctions. La première est d’établir une connexion MQTT entre le périphérique terminal et AWS IoT Core via la passerelle. LA seconde est de publier un message personnalisé dans un sujet spécifique sur AWS IoT Core.
#include "mqtt_client.h"
void initNetwork();
// Initialiser MQTT et se connecter à AWS IoT
void connectToAwsIot() {
MQTTClient client;
Network network;
unsigned char sendbuf[512], readbuf[512];
NetworkInit(&network);
MQTTClientInit(&client, &network, 3000, sendbuf, sizeof(sendbuf), readbuf, sizeof(readbuf));
MQTTPacket_connectData connectData = MQTTPacket_connectData_initializer;
connectData.MQTTVersion = 4; // MQTT v3.1.1
connectData.clientID.cstring = "your_device_id"; // Indiquer l’ID de votre périphérique
connectData.username.cstring = "your_username_here";
connectData.password.cstring = "your_password_here";
// Utiliser votre terminal AWS IoT
char* address = "your_aws_iot_endpoint";
int rc = NetworkConnect(&network, address, 8883);
// Erreur lors de la vérification du code retour (rc)
rc = MQTTConnect(&client, &connectData);
// Erreur lors de la vérification du rc
// Publier un message dans un sujet
void publishMessage(MQTTClient* client, char* topic, char* payload) {
MQTTMessage message;
message.qos = QOS1;
message.retained = 0;
message.payload = payload;
message.payloadlen = strlen(payload);
int rc = MQTTPublish(client, topic, &message);
La fonction main sera la façon dont vous appellerez toutes ces fonctions de support à partir d’une boucle principale qui s’exécute en continu. Cette fonction main devra ressembler à quelque chose comme cela:
int main(void) {
char* topic = "/sidewalk/water/data";
initNetwork();
connectToAwsIot();
CHIP_Init();
// Initialize ADC
initADC();
while (1) {
uint32_t adcValue = readADC();
char* payload = adcValue;
publishMessage(&client, topic, payload);
// Petit delay
for (volatile int i = 0; i < 100000; i++) {}
return 0;
Maintenant que nous avons une idée de la façon dont le micrologiciel est structuré et fonctionne, nous pouvons retirer le micrologiciel de l’ordinateur de développement et le transférer sur le périphérique cible. La procédure suivante devrait fonctionner dans la plupart des cas:
Si vous rencontrez un problème lors de l’importation des fichiers de projet, consultez le guide de dépannage Amazon Sidewalk de Silicon Labs pour importer des projets dans Simplicity Studio. Ouvrez un navigateur et vérifiez si vous recevez des messages MQTT sur la console AWS IoT Core MQTT (voir figure 8). Le terminal envoie des données vers la plate-forme cloud AWS via la passerelle. Suivez les étapes ci-dessous pour configurer une règle AWS afin de réacheminer les données vers une rubrique MQTT.
Si vous rencontrez des difficultés avec votre projet, voici quelques conseils de dépannage que nous avons découverts au cours du développement:
Parce qu’elle répond au besoin critique d’une portée étendue et d’une connectivité fiable pour les appareils intelligents, Amazon Sidewalk est une technologie réseau susceptible de transformer le domaine de la domotique. En s’appuyant de façon innovante sur des réseaux à faible bande passante et à faible consommation par l’intermédiaire d’appareils que de nombreux consommateurs possèdent déjà (par exemple, Amazon Echo et Ring), Sidewalk est en mesure de transformer en appareils connectés des dispositifs tels que des caméras, des verrous intelligents et des détecteurs d’infiltration d’eau installés hors de portée des réseaux domestiques courants. En mettant en avant un réseau communautaire qui améliore la fonctionnalité des appareils et la connectivité dans les quartiers, Sidewalk pourrait révolutionner le concept de maison intelligente et de quartier intelligent.
Bien entendu, le réseau ne se suffit pas à lui-même s’il n’y a aucun terminal pour tirer parti de cette connectivité étendue. C’est pourquoi Silicon Labs offre aux développeurs la possibilité de se lancer directement et sans difficulté avec Amazon Sidewalk (voir figure 9 grâce à son Kit Pro pour Amazon Sidewalk et au SDK associé pour l’IDE Simplicity Studio. En tant que principal fournisseur de silicium pour le développement d’Amazon Sidewalk et pour les fabricants d’appareils IoT et grâce à sa solution de développement sans fil la plus complète et à guichet unique pour Amazon Sidewalk, Silicon Labs vous aidera à simplifier votre processus de développement, réduire les coûts et raccourcir vos délais de rentabilité.
Silicon Labs et Amazon sont également prêts à vous accompagner lors de la transition du prototypage à la fabrication en masse. Les fabricants sous contrat peuvent fabriquer en masse des produits compatibles Sidewalk, puis fournir les informations du journal de contrôle à AWS IoT Core pour Amazon Sidewalk afin de provisionner ces appareils en masse et de les intégrer à AWS IoT. Ils fournissent même un calculateur de prix en ligne pour estimer le coût des services AWS pour votre produit orienté sur Sidewalk. Cependant, si vous utilisez la carte radio KG100S mais optez pour une solution de carte personnalisée, Silicon Labs recommande de ne pas utiliser le périphérique SPI, car la conception du module multipuce l’exploite déjà pour la communication entre l’EFR32 et l’émetteur-récepteur radio Semtech. Le partage du bus SPI avec d’autres appareils peut avoir une incidence négative sur les signaux de commande radio à temps critique et entraîner des problèmes de transmission de messages avec des protocoles qui utilisent une bande de fréquences inférieure à 1 GHz.