Skip to content

Langage de programmation

C#

Pour la surveillance de l'activité des abeilles dans la ruche, j'ai opté pour une application de simulation en C#. Le choix de ce langage repose sur sa robustesse et la richesse de ses bibliothèques, ce qui facilite le développement d'applications graphiques complexes.

Bibliothèques utilisées

Voici les bibliothèques que j'ai utilisées pour programmer mon application de simulation de vol d'abeille :

  • System.Drawing : Fournit l'accès aux graphiques de base, ce qui est essentiel pour dessiner et manipuler des images, y compris les mouvements des abeilles dans la simulation.

  • System.Windows.Forms : Une bibliothèque clé pour les applications Windows, offrant des outils pour créer et gérer des interfaces utilisateur graphiques. Elle est utilisée pour l'affichage et le contrôle de l'interface de simulation.

  • Accord.Video.FFMPEG : Utilisée pour l'enregistrement vidéo, cette bibliothèque permet de capturer et d'enregistrer des séquences vidéo de la simulation en temps réel, fournissant ainsi une fonction d'enregistrement et de lecture pour l'analyse ultérieure.

Flask

J'ai opté pour le microframework Flask pour mon site web, car j'avais déjà acquis des compétences en MicroPython pour mes capteurs. Utiliser Flask était donc un choix naturel, me permettant de mettre en pratique mes connaissances dans le développement web. Sa flexibilité et sa simplicité d'utilisation ont facilité l'intégration de mes compétences existantes dans la création d'une interface utilisateur conviviale en ligne. Grâce à Flask, j'ai pu passer en douceur de la programmation des capteurs à l'élaboration d'une application web, tout en explorant de nouvelles opportunités dans ce domaine.

Bibliothèque utilisée

Voici les bibliothèques que j'ai utilisées pour développer mon application :

  • jwt : La librairie jwt (JSON Web Tokens) en Python est un outil puissant pour la création, la validation et la manipulation des tokens JWT. Ces tokens sont des chaînes de caractères cryptées qui sont utilisées pour authentifier et sécuriser les communications entre différentes pages d'une application.

  • re : Le module re fournit des outils pour effectuer des expressions régulières (regex) en Python. Il est utilisé pour rechercher, extraire et manipuler des chaînes de caractères en fonction de modèles spécifiques, ce qui est utile pour la validation et le traitement de données structurées.

  • os : Le module os fournit des fonctions pour interagir avec le système d'exploitation sous-jacent. Il permet d'accéder aux fonctionnalités liées au système de fichiers, aux variables d'environnement, aux processus, etc. Il est souvent utilisé pour manipuler des chemins de fichiers, créer des répertoires, ou exécuter des commandes système.

  • mariadb : Le module mariadb est un connecteur Python pour la base de données MariaDB, qui est une alternative open source à MySQL. Il facilite la connexion à une base de données MariaDB, l'exécution de requêtes SQL et la récupération de résultats dans des applications Python.

  • sys : Le module sys fournit un accès à certaines variables système et fonctionnalités liées à l'interpréteur Python. Il est souvent utilisé pour manipuler des paramètres en ligne de commande, gérer les exceptions système et obtenir des informations sur la plate-forme d'exécution.

  • mqtt : La librairie paho.mqtt.client fournit une implémentation en Python du protocole MQTT (Message Queuing Telemetry Transport). Elle permet de créer des clients MQTT pour publier et souscrire à des messages sur des sujets spécifiques, facilitant ainsi la communication asynchrone entre les appareils connectés dans les applications IoT (Internet of Things).

Python

J'ai choisi d'utiliser Python pour programmer ma balance pour la flexibilité et la simplicité de Python m'a permis de développer rapidement et efficacement le logiciel nécessaire pour le fonctionnement de la balance. De plus, la richesse des bibliothèques disponibles en Python, notamment celles pour le traitement des données et la communication avec les périphériques, a facilité l'implémentation des fonctionnalités requises. Enfin, la communauté active et engagée autour de Python a été une ressource précieuse pour résoudre d'éventuels problèmes et améliorer continuellement le système.

Bibliothèque utilisée

Voici les bibliothèques que j'ai utilisées pour programmer ma balance :

  • hx711 : La bibliothèque HX711 offre une interface Python pour interagir avec le convertisseur analogique numérique HX711. Ce composant est couramment utilisé pour la lecture de capteurs de pesage dans des projets impliquant des microcontrôleurs tels que Arduino et Raspberry Pi. Grâce à cette bibliothèque, les développeurs peuvent facilement intégrer des fonctionnalités de pesage précises et fiables dans leurs projets, facilitant ainsi la création d'applications de pesage électronique.

  • RPi.GPIO : Cette bibliothèque permet de contrôler les GPIO (General Purpose Input/Output) du Raspberry Pi. Elle est essentielle pour lire les données des capteurs connectés aux broches GPIO.

  • asyncio : asyncio est une bibliothèque permettant d'écrire du code concurrent en utilisant la programmation asynchrone. Elle est utilisée ici pour gérer les tâches asynchrones telles que la lecture des données du capteur et la gestion des connexions MQTT.

  • paho-mqtt : La bibliothèque Paho MQTT est utilisée pour envoyer et recevoir des messages via le protocole MQTT (Message Queuing Telemetry Transport). MQTT est un protocole léger de messagerie publié/souscrit souvent utilisé dans l'Internet des Objets (IoT).

  • pickle : Cette bibliothèque est utilisée pour la sérialisation et la désérialisation des objets Python. Elle permet de sauvegarder l'état de l'objet HX711 dans un fichier et de le restaurer plus tard.

  • gc (Garbage Collection) : La bibliothèque gc est utilisée pour contrôler le ramasse-miettes de Python. Elle est utilisée pour libérer de la mémoire inutilisée dans le programme.

  • os : La bibliothèque os fournit une manière d'interagir avec le système d'exploitation. Elle est utilisée ici pour vérifier l'existence de fichiers et gérer les opérations de fichier.

  • time : La bibliothèque time est utilisée pour manipuler le temps. Elle permet de mettre en pause l'exécution du programme et d'obtenir l'heure actuelle.

  • json : La bibliothèque json est utilisée pour encoder et décoder des données JSON. JSON (JavaScript Object Notation) est un format de données léger et facile à lire pour les humains et les machines.

  • logging: Une bibliothèque créée spécifiquement pour simplifier la gestion des journaux (logs) dans vos projets MicroPython. En enregistrant des informations détaillées sur le comportement et les erreurs de votre application, cette bibliothèque vous aide à diagnostiquer et à résoudre les problèmes plus efficacement, ce qui est particulièrement précieux lors du développement et du débogage de projets sur des dispositifs à ressources limitées.

Voici les bibliothèques que j'ai utilisées pour créer la surveillance externe :

  • piCamera : La bibliothèque piCamera est une interface Python permettant de contrôler les caméras Raspberry Pi. Elle offre une gamme complète de fonctionnalités pour capturer des images et des vidéos, ainsi que pour ajuster les paramètres de la caméra tels que la résolution, l'exposition, la balance des blancs et bien plus encore. Cette bibliothèque facilite l'intégration de fonctionnalités de capture d'images et de vidéos dans des projets Python sur Raspberry Pi, que ce soit pour la surveillance, la photographie, la vision par ordinateur ou d'autres applications. Grâce à sa simplicité d'utilisation et à sa documentation détaillée, piCamera est largement utilisée dans la communauté des développeurs Raspberry Pi pour exploiter pleinement les capacités des caméras de ces petits ordinateurs.

  • OpenCV: OpenCV (Open Source Computer Vision Library) est une bibliothèque de vision par ordinateur populaire qui fournit une large gamme de fonctions pour traiter et analyser des images et des vidéos en temps réel.

  • ultralytics: La bibliothèque ultralytics permet d'utiliser les modèles YOLO (You Only Look Once) pour la détection d'objets. Elle offre des fonctions pratiques pour charger des modèles préentraînés et effectuer des inférences sur des images ou des vidéos.

MicroPython

J'ai décidé d'utiliser MicroPython pour la surveillance interne de la ruche. Mon choix s'est porté sur cette plateforme en raison de ma familiarité avec celle-ci, comparée au langage C qui est plus complexe à maîtriser. De plus, j'ai opté pour MicroPython en raison de sa vaste bibliothèque et de la forte présence de sa communauté.

Bibliothèque utilisée

Voici les bibliothèques que j'ai utilisées pour programmer mes ESP32 :

  • network : Cette bibliothèque simplifie grandement la gestion des connexions réseau sur les dispositifs MicroPython, en particulier en ce qui concerne le Wi-Fi. Que vous ayez besoin de vous connecter à un réseau local ou à l'Internet, cette bibliothèque offre une gamme d'outils pour configurer et gérer les connexions réseau de manière efficace et fiable.

  • gc: La gestion efficace de la mémoire est essentielle dans les environnements à ressources limitées tels que ceux des microcontrôleurs. Cette bibliothèque fournit un contrôle précis sur la gestion de la mémoire et la collecte des déchets, ce qui permet d'optimiser les performances et de minimiser les fuites de mémoire dans vos projets MicroPython.

  • dht: Les capteurs de température et d'humidité de type DHT sont couramment utilisés dans de nombreux projets IoT pour surveiller les conditions environnementales. Cette bibliothèque facilite l'interaction avec ces capteurs en fournissant des fonctions spécifiques pour lire les données de température et d'humidité de manière précise et fiable.

  • machine et Pin: Lorsque vous travaillez avec des microcontrôleurs, le contrôle des broches GPIO (General Purpose Input/Output) est essentiel pour interagir avec le matériel périphérique. Cette bibliothèque fournit des fonctionnalités essentielles pour configurer et contrôler les broches GPIO, ce qui vous permet de contrôler des composants tels que des LED, des capteurs et des actionneurs directement à partir de votre code MicroPython.

  • umqtt.simple et MQTTClient: Le protocole MQTT est largement utilisé dans les applications IoT pour la communication entre les périphériques et les serveurs MQTT (Message Queuing Telemetry Transport). Ces bibliothèques fournissent des outils pour faciliter la communication avec des courtiers MQTT, permettant l'envoi et la réception de messages de manière asynchrone et fiable, ce qui est crucial pour les systèmes distribués et les réseaux d'objets connectés.

  • logging: Une bibliothèque créée spécifiquement pour simplifier la gestion des journaux (logs) dans vos projets MicroPython. En enregistrant des informations détaillées sur le comportement et les erreurs de votre application, cette bibliothèque vous aide à diagnostiquer et à résoudre les problèmes plus efficacement, ce qui est particulièrement précieux lors du développement et du débogage de projets sur des dispositifs à ressources limitées.

  • asyncio : asyncio est une bibliothèque permettant d'écrire du code concurrent en utilisant la programmation asynchrone. Elle est utilisée ici pour gérer les tâches asynchrones telles que la lecture des données du capteur et la gestion des connexions MQTT.

  • json : La bibliothèque json est utilisée pour encoder et décoder des données JSON. JSON (JavaScript Object Notation) est un format de données léger et facile à lire pour les humains et les machines.

  • time : La bibliothèque time est utilisée pour manipuler le temps. Elle permet de mettre en pause l'exécution du programme et d'obtenir l'heure actuelle.

  • nptime : La bibliothèque ntptime est utilisée pour synchroniser l'heure de l'appareil avec un serveur NTP (Network Time Protocol). Cela permet de s'assurer que l'heure est exacte et synchronisée avec une source de temps fiable.