[{"uuid":"4332163a-f732-41b1-81ee-b70145fae11b","slug":"couper-la-veille","title":"Couper la veille avec un Arduino","category":"Électronique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2020-04-17 20:30:01","created_at":"2020-04-17 20:30:01","updated_at":"2020-04-17 20:30:01","tags":[],"plain":"Arrêter l'alimentation d'un appareil lorsque celui-ci passe en veille, est-ce possible sans intervention humaine ? L'idée est d'interrompre l'alimentation de l'appareil, de manière automatique, lorsque celui-ce a terminée ça tâche principale. Cet appareil ne pourra par redémarrer sans intervention humaine. On pourra intervenir en appuyant sur un bouton. On peut appliquer cette idée à :\nun chargeur de téléphone\nun appareil hi-fi\nune télévision\nun chargeur de batterie\nordinateur\ncafetière Ci-dessous, je vous propose un épisode audio d’introduction en vous exposant l'idée principale. J'explique lors d'un enregistrement Youtube, l'idée du projet. Cette vidéo Youtube n'existe plus. J'ai gardé une trace audio dans l'épisode mindCast, dont je vous propose le lien ci-desous.\nmindCast est un podcast personnel, dont l'un des thèmes est la technologie en générale. écouter l'épisode - Arduino et capteur de courant Cet épisode est extrait du podcast mindCast INFO J'ai eu quelques retours suite à cette vidéo et j'ai pu échanger sur des aspects très intéressant. Lors des différents échanges, on m'a proposé les idées suivantes :\nL'USB-C permet un échange de données entre chargeur et appareil\nPrise domotisée OSRAM+ avec appli IFTTT sur tel. Par exemple : Si batterie = 100% then coupe la prise.\nJe ne les ai pas retenues. Par contre, Nico a trouvé un produit correspondant aux attentes. Il s'agit de ANSMANN AES 3 sur Amazon\nCe produit est répond en tout point au besoin initial. Toutefois, on continue le projet, car derrière on va mettre en œuvre des technos qui nous permettront d'enchainer sur d'autres produits. Mais bravo Nico ! N'hésitez pas également à me soumettre vos idées dans les commentaires de cette page. Principe technique\nOn part à la réalisation d'un montages électroniques avec Arduino, ESP8266, capteurs et actionneurs. Pas besoin de logiciel de PAO, ni de graveur de circuits électroniques, mais un minimum vital comme tout bidouilleur qui se respecte. Il sera nécessaire d'avoir quelques composants (résistance, condensateur, transistor, AOP, circuit logique...), une plaque d'essai, des plaques à souder, un fer à souder, de l'étain. On va essayer de structurer l'idée principal en algo simplifié. Nous allons décortiquer cet algorithme. Nous identifions les différents éléments suivants : On utilise deux variables car au cours de l'algorithme, les valeurs associées aux variables n'ont pas toujours la même valeur :\ncourantinstantané \ncourantinstantanéprécédent On utilise deux constantes afin d’identifier rapidement des valeurs statiques :\nCOURANTVALMINI\nCOURANTSEUILDECLENCHEMENT On utilise deux fonctions afin de réaliser des actions complexes, décentralisé de l'algorithme principal :\nmesurerCourant()\ncouperAlimentation()\nLes fonctions utilisées font appel a des capteurs et actionneurs. Il s'agit respectivement d'un capteur de courant et d'un relai.\nLe capteur de courant permettra d'identifier la présence d'un courant de veille et la présence d'un courant de fonctionnement nominal.\nL'actionneur relai permettra de couper l'alimentation. L'idée globale est la suivante : Nous voulons effectuer un relevé de la consommation électrique, si la valeur chute, alors il faudra couper l'alimentation.\nCapteur SCT013\nConcernant le capteur, j'ai retenu le SCT 013. Mise en oeuvre du capteur SCT013\nHow to use Non-invasive AC Current Sensors with Arduino sur le site Scidle\n \n \nLors de mes recherches sur Internet je suis tombé sur une solution industrialisée avec ce capteur. Il est possible de brancher plusieurs capteurs à un boitier (appelé emonTX). Celui-ci communique avec une centrale (appelé emonPI). Ces données sont envoyées dans le cloud pour un accès graphique des données (appelé emonCMS) depuis un ordinateur ou un smartphone. Je n'ai pas vu d'actionneur dans cette solution.\nInterface with Arduino sur le site OpenEnergyMonitor Masse flottante\nDans l'épisode audio mindCast, j'introduis la notion de masse flottante ou de masse virtuelle. La masse virtuelle permet d'obtenir deux tensions symétriques, une positive et l'autre négative par rapport à la masse, en partant d'une alimentation simple (mono-tension). On utilisera des résistances montées en diviseur de tension. Leur valeur doit être identique, et devra être adaptée selon la consommation globale du circuit à alimenter (10Kohms pour 1mA, jusqu'à 100Kohms pour 100uA par exemple). L'unique condensateur C1 sert à \"absorber\" les variations de courant tant qu'elles ne sont pas trop importantes, et permet d'assurer une certaine stabilité à la tension présente au point 0V' (J4). [...] A suivre sur https:sonelec-musique.com/electroniquerealisationsmasses_virtuelles.html\n--\nMerci à Étienne (Youtube), Dominique (real), Gregory (Twitter) et Nico (Twitter)."},{"uuid":"3b95d2aa-8ee1-4f5d-b616-2f985e7441c1","slug":"dht11-nano-mega328-lcd-i2c","title":"Sonde température et humidité sur Arduino","category":"Électronique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2020-04-17 18:23:14","created_at":"2020-04-17 18:23:14","updated_at":"2020-04-17 18:23:14","tags":[],"plain":"Materiel utilisé\nArduino Nano\nsonde de température et d'humidité DHT11\nécran graphique LCD 2x16 avec bus I2C Code\nLe code suivant permet d'afficher les informations relevées sur la sonde DHT11. Pour cela j'utilise les méthodes et de la bibliothèque .\nLa fonction (is Not A Number) permet de faire connaitre une défaillance en cas d'une lecture non numérique des valeurs. Bibliographie\nCapteur de pression \nhttp:www.diopter.fr/index.php/technique/electro-numerique/43-capteur-de-pression-et-arduino Autre réalisation avec la sonde DHT11\nhttps:www.carnetdumaker.net/articles/utiliser-un-capteur-de-temperature-et-dhumidite-dht11-dht22-avec-une-carte-arduino-genuino/ Sonde de température DS18B20\nhttps:www.carnetdumaker.net/articles/mesurer-une-temperature-avec-un-capteur-1-wire-ds18b20-et-une-carte-arduino-genuino/ Comparatif des sondes DHT 11 et 22\nhttps:learn.adafruit.com/dht/overview Kit SunFounder\nhttps:www.sunfounder.com/learn/Sensor-Kit-v2-0-for-Arduino/lesson-11-humiture-detection-sensor-kit-v2-0-for-arduino.html Amazon\nsonde DHT 22 - https:www.amazon.fr/gp/product/B00AZG1RBK/ref=oxscacttitle2?ie=UTF8&psc=1&smid=A3I826466U8R8A"},{"uuid":"76ede607-4a6b-434d-b01e-82aa509f3448","slug":"105-installation-du-logiciel-arduino-ide","title":"Installer le logiciel Arduino IDE sous Linux","category":"Électronique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2023-02-19 06:54:59","created_at":"2023-02-19 06:54:59","updated_at":"2023-02-19 06:54:59","tags":[],"plain":"Cet article a été testé avec les distributions suivantes\nLinux Mint 19 64 bits\nLinux Debian 9.6 (stretch) 64 bits\nMX Linux 18.3 basé sur Linux Debian 9\nZorin OS 16.1 basé sur Linux Debian Je privilégie une installation \"manuelle\" de l'application Arduino IDE afin d'utiliser une des dernières versions. Certaines options et paramètres n'apparaissent pas dans les versions packagées des distributions. J'ai eu le cas avec Debian 9.6 où je ne pouvais pas utiliser des cartes ESP 8266. Date de relecture : 15 août 2022 Il faut télécharger la version 1.8.19. Vous pouvez vérifier la dernière version disponible depuis le site . Adaptez les informations ci-dessous suivant les informations trouvées sur le site arduino.cc.\nTélécharger Arduino IDE Software\nDepuis mon dossier home ou un autre dossier personnel, je télécharge le programme Arduino IDE. Je préfère l'effectuer depuis une ligne de commande.\nDéployer Arduino IDE Software\nligne 1 : déployer Arduino IDE dans un dossier accessible à tous : . L'archive tar va extraire les fichiers dans un dossier comportant le numéro de version. ligne 3 : si un lien existait, détruit le lien sur avec unlink ligne 4 : réaliser un alias vers le dossier . De cette manière, on s'affranchit du numéro de version. Nous pouvons également déployer de nouvelles versions sans perturber la précédente. ligne 5 : exécuter le script qui permet de créer un raccourci sur le bureau graphique. \nsudo tar -xvf arduino.tar.xz -C /opt\nsudo chown -R root:root /opt/arduino-1.8.19\nsudo unlink /opt/arduino\nsudo ln -s /opt/arduino-1.8.19/ /opt/arduino\nsudo /opt/arduino/install.sh\n\nProblèmes rencontrés après le déploiement\nDroits sur tty et dialout\nIl faut ajouter l'utilisateur de l'application Arduino IDE aux groupes et . L'exemple suivant permet d'ajouter l'utilisateur aux groupes et . Si vous venez de saisir les lignes de commandes , vous devez redémarrer.\nVersion de Java incorrecte\nLe message suivant peut apparaître dans l'application Arduino IDE : Il se peut que la version de Java ne soit pas bonne. Vous pouvez le vérifier avec . Toutefois, un java est intégré avec l'application Arduino IDE. ( me renvoie la version ). Il faudra peut être toutefois changer les paramètres java de l'OS.\nJ'ai testé avec OpenJDK Java 8 avec succès. Par contre Java 10 et 11 ne sont pas compatibles. Pour procéder à l'installation de Java 8 et choisir par défaut cette version :\nSerial port not selected\nDans certains cas, sous Mint, il faut désinstaller \nAucune carte n'est détectée Le câble USB peut être également non cablé pour les données (data) Pour rappel, voici le cablage d'un port USB\nExécuter votre premier programme\nVoici donc notre premier programme (celui qui est décrit dans la vidéo). Cette suite d'instructions va faire clignoter une LED branchée sur la broche 13 de l'Arduino toutes les secondes.\\\\\nIl n'est pas nécessaire de brancher une LED, car rappelez-vous, la LED sur la carte, mentionnée dans la , servira dans notre exemple sans forcément réalisée un montage électronique. Lorsque vous utilisez le logiciel Arduino, il peut être trouvé en cliquant sur . Vous pouvez également copier le code suivant dans votre éditeur : \n/\n Clignotement\n Allume la LED pendant 1 seconde,\n puis l'éteint pendant 0,5 seconde.\n/\n \n Numéro de la broche à laquelle est\n connectée la LED\nint led = 13;\n \n le code dans cette fonction est exécuté une fois au début\nvoid setup() {\nindique que la broche de la LED une sortie :\non va modifier sa tension\n pinMode(led, OUTPUT);\n}\n \n le code dans cette fonction est exécuté en boucle\nvoid loop() {\n digitalWrite(led, HIGH); allumer la LED (tension 5V sur la broche)\n delay(1000); attendre 1000ms = 1s\n digitalWrite(led, LOW); éteindre la LED (tension 0V sur la broche)\n delay(1000); * attendre à nouveau 1seconde\n}\n Deux déclaration de fonctions sont obligatoires :\nsetup\nloop Dans ce bout de code, nous appelons trois fonctions :\ndigitalWrite\npinMode\ndelay Pour exécuter ce bout de code, il faudra brancher l'Arduino sur port USB et sélectionner dans le menu , sélectionner ."},{"uuid":"bc697237-ff59-40d7-b252-c0e13499dffc","slug":"100-presentation-et-principe-de-l-arduino","title":"Présentation et principe de l'Arduino","category":"Électronique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2022-01-28 09:51:27","created_at":"2022-01-28 09:51:27","updated_at":"2022-01-28 09:51:27","tags":[],"plain":"Généralités\nUn Arduino représente des cartes électroniques regroupant plusieurs composants électroniques afin de réaliser des objets électroniques interactifs. Il peut être vu comme un ordinateur. On retrouve de la mémoire sous deux types :\nla mémoire morte, qui contiendra les instructions que l'Arduino devra exécuter\nla mémoire vive, contenant les informations qui changent : les variables On aura également un calculateur qui traitera et exécutera les instructions. Tous ces éléments sont contenu dans un micro contrôleur. Il est d'architecture soit AVR soit d'architecture ARM comme le Cortex m3. Les cartes Arduino sont construits autour d'un microcontrôleur Atmel AVR pour les modèles : \nATmega328, \nATmega32u4, \nATmega2560, \nATmega168, \nATmega1280 \nATmega8 D'autres cartes Arduino sont construits autour des microcontroleur Cortex d'architecture ARM. C'est la société STMicroelectronics qui se lance dans l'aventure en mai 2016 avec les modèles STM32 [^note: https:www.st.com/content/stcom/ja/about/media-center/press-item.html/t3829.html] Les schémas des cartes électroniques Arduino sont publiés en licence libre. Le microcontrôleur peut analyser et produire des signaux électriques de format analogique ou de format numérique. On utilisera les entrées sortie de la carte électronique. Pour le programmer, il faut utiliser la prise USB qui permettra de le relier à l'ordinateur. Elle permet également d'alimenter l'Arduino. Plus tard, l'alimentation s’effectuera sur la broche +Vin (7-12 V) et 0V. Une fois programmé, l'Arduino sera relié par un prise secteur ou une batterie via le port d'alimentation. Les broches sont des entrées/sorties qui permettent de relier des capteurs, des LED, des moteurs ou des cartes d'extension. Cela permet le contrôle des appareils domestiques - éclairage, chauffage…, le pilotage d'un robot, de l'informatique embarquée, etc. Les cartes Arduino et les schémas de ces cartes sont publiés en licence libre.\nPrincipe général\nLes différentes versions des Arduino fonctionnent sous le même principe général : Les broches de 1 à 13, ce sont les broches dites numériques (0 ou 1) ou « tout ou rien » ; elles offrent en sortie du 5 V et acceptent en entrée du 5 V sur le même principe.\nDans le code, on utilise les fonctions et . Les broches de 14 à 19, ce sont les broches dites analogiques, valeur entre 0 V et 5 V.\nDans le code, on utilise les fonctions et Enfin, on y trouve également les différentes broches d'alimentation :\nRouge : sortie 5 V (+5V)\nOrange : sortie 3,3 V (+3V3)\nBleue : les masses (0V)\nSaumon : entrée reliée à l'alimentation de +Vin (7-12V) Il y a des variations entre les différentes cartes (par exemple : UNO, la patte 13 est équipée d'une résistance). Les tensions admises des entrées/sorties sont strictement comprise entre 0 V et 5 V. Pas de tension négative ! Il existe plein de variantes de cartes Arduino :\nArduino Nano\nArduino NanoPro\nArduino NanoPro mini\nArduino NanoMega\nArduino NanoDiecimila\nArduino NanoDuemilanove\nArduino NanoLeonardo\nArduino NanoDue\nArduino NanoFio\nPrésentation de l'Arduino Uno\nL'Arduino Uno est basé sur un microcontrôleur ATMEL 1502 de 32 registres, cadencé à 166 MHz (un cycle de 6ns). Crédit image : Mines Telecom - Programmer un objet avec Arduino, cours 04017 L'Arduino Uno propose :\n14 entrées numériques\n6 entrées analogiques\n1 sortie 5 V à 500 mA\n1 sortie 3,3 V à 50 mA\n1 ports série Rx/Tx avec Led indépendantes\n1 port USB, qui sert également d'alimentation et de connexion série\n1 alimentation complémentaire (Vin 7 à 12 V) On notera la présence d'une LED connectée sur la broche 13. Les broches Rx et Tx de l'Arduino permettent d'effectuer une communication série. On veillera à ne pas utiliser ces broches pour brancher des LED ou d'autres composants.\nUtiliser une plaque de prototypage\nPour tester ses branchements directement sur l'Arduino sans soudure, il faut utiliser une platine d'essai (ou breadboard, plaque d’essai, plaque de montage rapide). La platine d'essai est composée d'une multitude de trous. La plupart d'entre eux sont reliés. Voici une représentation : En position portrait (comme sur la photo), la plaque est divisée à la verticale en 2 parties égales. Les 5 trous d'une ligne, d'une partie sont interconnectés. C'est-à-dire qu'il y a une liaison électrique pour les trous a, b, c, d, et e de la ligne 1, indépendante des lignes voisines et de l'autre partie de la plaque. Sur notre plaque d'essai, nous avons 30 x 2 lignes de connexion. L'espace entre les deux parties et standardisé afin de positionner la plupart des circuits intégrés et de pouvoir leurs câbler toutes les broches. Enfin, tous les trous de la colonne d'une partie de la plaque sont interconnectés entre eux. Ceci représente une ligne d'alimentation et il faudra l'utiliser tel quel. Il en va de même pour la colonne et l'autre partie de la plaque. Sur la partie gauche de la photo:\n(trait rouge) à gauche, tous les trous de la colonne + sont reliés entre eux\n(trait bleu) tous les trous de la colonne -, sont reliés entre eux\n(trait jaune) tous les trous de la ligne 1 sont reliés entre eux, sur 5 colonnes (a, b, c, d et e). On peut reproduire ce schéma sur les 29 autres lignes.\nla partie de droite, reproduit le même schéma par effet mirroir, avec un axe de symétrie vertical coupant la plaque en deux moitié égale. Par convention, je branche l'alimentation 5 V sur la colonne + et la masse (0 V) sur la colonne -.\nLogiciel de programmation d'un Arduino\nPour programmer un Arduino ou une carte programmable, il faut un éditeur qui fonctionne sur un ordinateur et un programme qui permettra de téléverser le code vers la carte. Le programme libre de droit Arduino Software (IDE) permet d'écrire du code et de le téléverser dans la carte. C'est l'outil privilégié si vous avez acheté du matériel. Il fonctionne sous Windows, Mac OS X, et Linux. Le guide d'installation du logiciel IDE Arduino sous Linux permet de mieux appréhender une installation de la dernière version en date. Il existe également un simulateur appelé Tinkercad circuits qui permet de tester votre code et les montages électroniques virtuellement.\nPrincipe de programmation Arduino\nLe langage Arduino est basé sur les langages C et C++. Les programmes Arduino sont intégrés dans un schéma (scketch) setup / loop. Il s'agit de deux blocs de fonctions obligatoirement présents dans tous programmes Arduino. Un bloc commence par le symbole et se termine par le symbole . Le nom d'une fonction est toujours suivie par les symboles . La fonction setup() est appelée systématiquement au démarrage de l'Arduino, une seule fois, après un reset ou une mise sous tension. Il est utilisé pour initialiser des variables, démarrer des librairies, modifier le paramétrage des broches, etc... Après avoir utilisé la fonction setup(), la fonction loop() exécute de manière infinie le code à l’intérieur de ce bloc afin de répondre aux interactions demandées. Afin de rendre plus intelligible le code écrit, il est possible d'écrire du texte qui ne sera pas interpréter comme du code. Une ligne de commentaire commencera par les symboles alors qu'un bloc de commentaires sera encadré par les symboles et . Par exemple : On peut utiliser d'autres fonctions qui permettent d’exécuter une ou plusieurs actions. Les fonctions sont définies avec :\nun nom représentant l'utilité du bloc.\nune ou plusieurs entrées. Il s'agit de paramètres ou arguments placés entre parenthèses.\nune sortie qui est le résultat de la fonction. Par exemple, prenons le code suivant . Dans ce cas, la fonction est pinMode qui contient deux variables : buttonPin et INPUT.\nRéférentiel des fonctions, variables et structures du Langage Arduino\nhttps://www.arduino.cc/reference/en/"},{"uuid":"2c846e36-ba44-4370-b6dd-d7c9c477008a","slug":"programmer-esp32-avec-arduino-ide","title":"Programmer un ESP32 avec Arduino IDE","category":"Électronique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2022-01-27 15:29:48","created_at":"2022-01-27 15:29:48","updated_at":"2022-01-27 15:29:48","tags":[],"plain":"Nous utiliserons la carte de développement (DevKit) NodeMCU ESP C3 avec un circuit intégré ESP-C3-32S soudé.\nCette carte peut être programmée avec Arduino IDE. Il va donc falloir mettre à jour l'IDE Arduino pour pouvoir l'adapter à ce nouveau module. L'IDE Arduino est très flexible. Comme pour la partie matériel, l'idée est de mettre à disposition de l'utilisateur un produit puissant, flexible et très simple à utiliser. Il va donc falloir passer par une étape de configuration qui va nous permettre de programmer sur notre module ESP comme sur un Arduino. Dans un premier temps, on va indiquer au programme que l'on a besoin d'installer une nouvelle carte (board) et préciser où l'on va pouvoir récupérer ces informations. Dans l'IDE, aller dans Fichiers=>Préférences. Une fenêtre intitulé Préférences. Dans le champs intitulé URL de gestionnaire de cartes supplémentaires , coller l'URL suivante :\n https:raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/packageesp32devindex.json Puis cliquer sur le bouton On va installer la carte correspondant au NodeMCU. Aller dans Outils => Type de carte => Gestionnaire de carte Le fenêtre de Gestionnaire de carte s'ouvre. Saisir dans le champ de recherche le nom . Cliquer à l'intérieur du cadre esp32. Un bouton Installer apparaît à côté de la version disponible. Cliquer dessus pour installer... L'installation des fichiers commence. L'IDE va aller récupérer le compilateur, des sources de librairies et tout ce qu'il faut pour pouvoir utiliser l'ESP8266 comme un Arduino. L'indicateur apparait. L'IDE est maintenant capable de compiler un logiciel pour l'ESP8266 et le téléverser sur votre carte. Maintenant, on indique à l'IDE d'utiliser les éléments pour la carte ESP32 Arduino . Aller dans Outils => Type de carte. Sélectionner dans la longue liste, ESP32C3 Dev Module. Enfin, il faudra sélectionner le port de communication. On pourra vérifier que la communication soit bien initialisée en utilisant Outils => *Get Board Info//"}]