Table des matières:

Construire un module de luminosité avec AtHome : 7 étapes
Construire un module de luminosité avec AtHome : 7 étapes

Vidéo: Construire un module de luminosité avec AtHome : 7 étapes

Vidéo: Construire un module de luminosité avec AtHome : 7 étapes
Vidéo: Simulation d'un capteur de luminosité avec ARDUINO sur PROTEUS 2024, Novembre
Anonim
Construire un module de luminosité avec AtHome
Construire un module de luminosité avec AtHome

AtHome est un projet étudiant entièrement opensource et openhardware réalisé par le groupe AtHome d'Epitech, visant à développer une solution connectée de plusieurs modules de capteurs individuels communiquant avec une base de données auto-hébergée exposant une API utilisée pour alimenter une application smartphone et une application web. Les modules surveillent l'environnement intérieur d'une maison et sont capables de donner un retour visuel à l'utilisateur, allant du vert (bon) au rouge (mauvais) et les données transmises sont visibles par l'utilisateur via la communication série d'un module ou sur nos applications si vous les utilisez.

Même si ce projet est toujours en cours de développement, les fonctionnalités de base de nos modules sont maintenant prêtes et censées être faciles à utiliser pour développer des modules personnalisés. C'est pourquoi je vous propose de voir comment construire votre propre module simple avec cet exemple de module de luminosité.

Ces modules sont essentiellement construits avec une carte compatible Arduino (un noyau Arduino partiel devrait suffire tant qu'il prend en charge Stream, Wire et un flux UART), une LED (rouge ou RVB) devenant rouge en cas de problème, un capteur, une alimentation (alimentation murale ou batterie) et un boîtier découpé au laser.

Oui, ce n'est certainement pas nouveau, il y a beaucoup de projets de capteurs mais nous espérons que d'autres fonctionnalités telles que la détection des problèmes de santé, la communication et le stockage d'informations sur un serveur auto-hébergé et une application de visualisation vous aideront. Ou si vous voulez juste surveiller votre maison, des projets simples ou pas moins intéressants:)

Étape 1: Rassembler les composants

Rassembler des composants
Rassembler des composants

Pour ce projet, vous aurez besoin de quelques composants pour construire votre module AtHome:

  • 1x carte compatible Arduino: ici, j'utiliserai un Arduino UNO (mais cela fonctionne également avec d'autres cartes telles que les cartes TI Launchpad et ESP8266)
  • 1x capteur: j'utiliserai un capteur de luminosité TSL2561 (la liste des capteurs supportés est disponible sur la documentation de notre bibliothèque)
  • 1x led: j'utiliserai ici une LED Grove Chainable RGB (mais ça peut aussi être une simple led rouge ou un NeoPixel)
  • Fils Dupont

La liste des composants compatibles est disponible sur la documentation de notre projet.

Étape 2: Installation de notre bibliothèque

Installation de notre bibliothèque
Installation de notre bibliothèque
Installation de notre bibliothèque
Installation de notre bibliothèque

Pour installer notre bibliothèque, vous devrez télécharger depuis notre référentiel (nous le publierons plus tard sur la liste Arduino IDE et PlatformIO) avec ce lien:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

Ensuite, allez dans l'IDE Arduino et choisissez "Esquisse> Inclure la bibliothèque> Ajouter une bibliothèque. ZIP…". Sélectionnez ensuite le fichier zip nommé "artefacts.zip" et cliquez sur "OK".

Étape 3: Installation des bibliothèques requises

Installation des bibliothèques requises
Installation des bibliothèques requises
Installation des bibliothèques requises
Installation des bibliothèques requises
Installation des bibliothèques requises
Installation des bibliothèques requises

Pour fonctionner, notre bibliothèque a besoin que d'autres bibliothèques soient installées sur votre ordinateur:

  • Bibliothèque Arkhipenko TaskScheduler
  • Bibliothèque de capteurs de lumière numériques SEED Studio Grove
  • Bibliothèque de LED RVB chaînables SEED Studio Grove
  • Bibliothèque Adafruit NeoPixel

Vous pouvez les installer via le gestionnaire de bibliothèque de l'IDE Arduino, en allant sur "Sketch" > "Include Library" > "Gérer les bibliothèques…".

Dans la nouvelle fenêtre qui s'ouvrira, écrivez dans la barre de recherche blanche le nom de la bibliothèque que vous souhaitez installer, puis cliquez sur son bloc. Un bouton "Installer" apparaîtra, il vous suffit de cliquer dessus et l'IDE le téléchargera et l'installera pour vous.

Étape 4: Assemblage du module

Assemblage du module
Assemblage du module

Nous allons commencer par le capteur. Connectez via un fil la broche VCC du TSL2561 à la broche 5V de l'Arduino, la broche GND du capteur à l'une des broches GND de l'Arduino et les broches SDA et SCL du capteur aux broches SDA et SCL de l'Arduino. Maintenant, vous avez terminé !

Maintenant, connectez la broche VCC de la LED Grove Chainable RGB à la broche 5V de l'Arduino et la broche GND de la LED au deuxième GND de l'Arduino. Si vous êtes Arduino comme une seule broche 5V, vous pouvez utiliser une planche à pain pour connecter le 5v de l'Arduino à une rangée + de la planche à pain et connecter tous vos composants broches 5V dessus, ou les souder ensemble sur un morceau de stripboard ou utilisez des connecteurs wago ou ce que vous préférez. Maintenant, connectez la broche CI de votre LED à la broche 7 de votre Arduino et la broche DI de votre LED à la broche 8 de votre Arduino. Si vous ne disposez pas d'une telle LED, ne vous inquiétez pas, il est possible d'utiliser la LED intégrée de votre carte Arduino ou une classique avec juste une petite modification du code.

Étape 5: Rédaction du croquis du module de luminosité

Rédaction du croquis du module de luminosité
Rédaction du croquis du module de luminosité

Créons un nouveau sketch et écrivons le code de notre module.

Si vous n'êtes pas intéressé par l'explication du croquis, vous pouvez simplement le copier et le coller dans votre IDE Arduino:

#comprendre

en utilisant LightModule = AtHomeModule; Stream *streams = {&Serial, nullptr}; GroveChainableLED::Pins grovePins = {7, 8}; LED GroveChainableLED (&grovePins); LightModule *module = LightModule::getInstance(); void setup() { // mettez votre code de configuration ici, à exécuter une fois: Serial.begin(9600); module->setStreams(flux); GroveDigitalLightSensor *lightSensor = new GroveDigitalLightSensor(); module->setSensor(lightSensor); module->setDisplay(&led); module->configuration(); } void loop() { // mettez votre code principal ici, pour l'exécuter à plusieurs reprises: module->run(); }

Si vous voulez comprendre tout ce que fait ce code, vous pouvez lire ce qui suit ou si vous n'êtes pas intéressé, vous pouvez passer directement à l'étape suivante.

Pour commencer, nous devons inclure notre bibliothèque dans notre sketch en écrivant cette ligne en haut du sketch:

#comprendre

Maintenant, nous devons créer un alias pour l'objet module que nous utiliserons. Vous pouvez le voir comme une boîte avec plusieurs boutons utilisés pour changer ses composants, le démarrer, l'arrêter, …etc. Comme il s'agit d'une boîte construite par un modèle (comme le modèle habituel que nous utilisons pour les projets en tant qu'humains, il a une base de démarrage et le compilateur d'Arduino construit le code final en fonction des paramètres que nous lui donnons) définissant le type représentant une valeur de capteur et le nombre de valeurs de capteur que nous voulons conserver en mémoire, il est spécifié dans son nom et devrait normalement être répété chaque fois que nous voulons l'utiliser. Ce qui est un peu embêtant, c'est pourquoi nous allons associer un nouveau nom, un alias, au nom complet de cette boîte.

Disons par exemple que je souhaite que cette case s'appelle "LightModule", car elle servira à implémenter un module de surveillance de la luminosité et je souhaite ne garder qu'une seule valeur à la fois. La luminosité est représentée en lux comme un type intégral par notre capteur TSL2561, qui est représenté comme un uint16_t par les ordinateurs. Notre alias ressemblera à ceci:

en utilisant LightModule = AtHomeModule;

le mot-clé "using" signifie que nous créons un alias et le nom que nous lui donnons juste après correspond à la séquence après le caractère "=".

"AtHomeModule" est le vrai nom de cette boîte que nous donnons un nouveau nom, et les paramètres définissant la représentation de la valeur et le nombre de valeurs conservées en mémoire sont listés entre "".

Maintenant, lorsque nous utiliserons plus tard le nom "AtHomeModule", Arduino saura qu'il fait référence au nom complet "AtHomeModule".

Si vous voulez que votre box puisse garder 5 valeurs en mémoire au lieu de 1, il vous suffit de remplacer le "1" par "5" et Arduino générera pour vous un autre type de box capable de faire ce que vous voulez. Notez cependant que si le module est programmé pour envoyer ses valeurs avant d'avoir le temps de mesurer efficacement 5 valeurs du capteur, vous ne verrez jamais 5 d'entre elles envoyées car il n'envoie que les nouvelles valeurs depuis le dernier téléchargement.

Ensuite, nous devons créer un tableau de pointeurs contenant des pointeurs sur les flux Arduino utilisés par le module pour communiquer, toujours terminés par le keyworkd "nullptr". Ici, j'utilise uniquement le flux "Série" de l'Arduino qui communique avec l'ordinateur par le port USB, donc la baie ressemble à ceci:

Stream *streams = {&Serial, nullptr};

Le caractère "*" signifie que le type est un pointeur (l'emplacement de l'élément, pas l'élément lui-même) et les crochets "" signifient dans Arduino qu'il s'agit d'un tableau, nous pouvons donc mettre plusieurs valeurs.

Ensuite, nous devons créer notre LED. Pour ce faire, nous devons écrire les deux lignes suivantes;

GroveChainableLED::Pins grovePins = {7, 8};

LED GroveChainableLED (&grovePins);

Si vous n'avez pas de LED Grove RGB mais que vous souhaitez tout de même un retour visuel, vous pouvez le faire en modifiant simplement le croquis. Remplacez les deux lignes précédentes par cette ligne:

LED monochromatique (LED_BUILTIN);

Dans cette configuration, la LED verte intégrée s'allumera tant que la valeur surveillée est correcte pour la santé et s'éteindra lorsqu'elle est déconnectée. Si vous préférez qu'il s'allume lorsqu'il est déconnecté (parce que vous utilisez par exemple une LED rouge au lieu de la verte sur la broche 13), vous pouvez utiliser cette ligne à la place:

LED monochromatique (LED_BUILTIN, true);

L'étape suivante consiste à créer notre module lui-même. Cela se fait la première fois que nous obtenons son emplacement en mémoire en appelant la méthode "getInstance", comme ceci:

LightModule *module = LightModule::getInstance();

Ensuite, nous devons définir les paramètres dans la fonction "setup()" d'Arduino, en commençant par initialiser le port "Serial" comme d'habitude dans les esquisses Arduino:

Serial.begin(9600);

On crée le capteur de lumière en écrivant cette ligne:

GroveDigitalLightSensor *lightSensor = new GroveDigitalLightSensor();

Ensuite, nous demandons à notre module d'utiliser notre tableau de pointeurs sur Arduino Stream pour communiquer à travers eux:

module->setStreams(flux);

Nous demandons également à notre module d'utiliser notre capteur de lumière pour surveiller l'intensité lumineuse à l'endroit où se trouve le module:

module->setSensor(lightSensor);

Nous disons à notre module d'utiliser notre LED pour nous donner un retour visuel:

module->setDisplay(&led);

Enfin, nous disons à notre module qu'il est prêt à effectuer toute configuration interne nécessaire en appelant sa propre fonction "setup":

module->configuration();

Notre dernière étape consiste maintenant à appeler la fonction "run()" de notre module, qui est conçue pour être appelée à chaque itération de la fonction "loop" d'Arduino en écrivant cette ligne à l'intérieur de la fonction "loop":

module->run();

Maintenant, notre croquis est enfin prêt à être téléchargé sur l'Arduino et à tester notre module !

Étape 6: Tester notre module AtHome

Test de notre module AtHome
Test de notre module AtHome
Test de notre module AtHome
Test de notre module AtHome

Pour télécharger le sketch sur l'Arduino, choisissez votre carte Arduino UNO en allant dans "Outils" > "Port" > "[COMx ou /dev/x] (Arduino/Genuino UNO)".

Dernière chose, il suffit de cliquer sur le bouton "Télécharger" (le bouton cercle avec une flèche pointant vers la droite, la deuxième icône de la barre d'outils) pour télécharger le croquis dans votre tableau.

C'est fait! Maintenant, votre module devrait fonctionner et envoyer des valeurs à votre ordinateur visibles dans le moniteur série d'Arduino. Vous pouvez le vérifier en ouvrant le "Serial Monitor" d'Arduino dans le menu "Tools" et vous devriez avoir une sortie ressemblant à la deuxième image du titre de cette étape:)

Étape 7: Construire un dossier pour le module

Construire un dossier pour le module
Construire un dossier pour le module

Vous pouvez construire un boîtier simple pour votre module en le découpant au laser dans une planche de contreplaqué de 3 mm.

Pour réaliser nos coffrets, nous utilisons makercase pour préparer un gabarit aux dimensions souhaitées que nous personnalisons par la suite. Vous trouverez le fichier svg du module de luminosité attaché à cette étape.

Ensuite il suffit de coller les faces ensemble sauf une pour pouvoir l'ouvrir plus tard, mettre votre circuit à l'intérieur et coller la LED dans le trou du boitier (on utilise du scotch transparent pour remplir le trou et diffuser la lumière en plus de coller la LED devant de celui-ci).

Maintenant, ajoutez simplement une batterie pour alimenter votre Arduino, fermez le boîtier et votre module est prêt et devrait avoir l'air bien:)

Conseillé: