Table des matières:
Vidéo: SilverLight : moniteur environnemental basé sur Arduino pour les salles de serveurs : 3 étapes (avec images)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Une fois, on m'a confié la tâche de rechercher une sonde environnementale pour surveiller la température dans la salle des serveurs de mon entreprise. Ma première idée était: pourquoi ne pas simplement utiliser un Raspberry PI et un capteur DHT, il peut être configuré en moins d'une heure, y compris l'installation du système d'exploitation. Pour cela, j'ai reçu la réponse froide de personnes autoritaires aux yeux bandés que nous ne ferons pas cela car cela coûterait plus cher en heures de travail pour l'installer que d'acheter un appareil. Devoir accepter des gens étroits d'esprit comme celui-ci pendant une partie de ma vie était une chose et j'ai commandé de la camelote EATON de qualité entreprise sur Ebay et l'ai appelé, mais j'ai décidé à ce moment-là que pour ma propre salle de serveurs, je construirais un Arduino complètement Open Source appareil basé qui sera bien meilleur que ce que je viens de commander.
Ce projet porte le nom de code SilverLight, ne me demandez pas d'où je tire ces noms:).
Étape 1: Conception du matériel
Présentation du matériel commercial.
D'accord, je ne commence même pas avec la bonne idée de mettre un moniteur d'environnement à l'intérieur d'un ups, mais il y a évidemment un marché pour cela, alors voyons ce qu'ils peuvent faire:
Dispositif de surveillance de l'environnement COMPATIBILITÉ
Réseau-MS 10/100Mb, PXGUPS, PXGPDP et PXGMS.
Le 10/100Mb ConnectUPS-X, ConnectUPS-BD et ConnectUPS-E avec FW V3.01 et supérieur. DIMENSIONS (LXPXH)
2,26 x 1,48 x 1,15 (pouces) 57,6 x 37,6 x 29,3 (mm) POIDS
1,19 onces (34 g)
C'est une information très utile n'est-ce pas? Pas de soucis car ils ne peuvent pas faire grand chose. Pour commencer, votre onduleur devra avoir une autre carte complémentaire coûteuse pour cela qui le connecte au capteur environnemental que vous achetez séparément, généralement avec un câble CAT5 standard (n'essayez même pas de brancher quoi que ce soit sur ce port car il n'y a rien de standard à propos de ça). Ils affirment que l'appareil a besoin de 10 minutes pour "se réchauffer", ce qui en réalité durait des heures et une fois le tour terminé, il est apparu dans leur interface Java à mise à jour lente et nous avons la température et l'humidité. Configurer des conditions basées sur des alertes était facile à partir de ce point, mais peu importe, construisons quelque chose de mieux.
Ce projet est une conjonction de plusieurs de mes projets: Station météo Natalia, Shadow of Phoenix. La box est capable de surveiller les contraintes environnementales suivantes:
- Indice de température/humidité/chaleur
- Concentrations de GPL, de fumée, d'alcool, de propane, d'hydrogène, de méthane et de monoxyde de carbone dans l'air (MQ2)
- Sensibilité solaire (la lumière est-elle allumée dans la salle des serveurs ?)
- Capteur de mouvement PIR (vous pouvez même allumer/éteindre les lumières automatiquement à partir de maintenant grâce au capteur de mouvement lorsque quelqu'un entre dans la pièce)
Toutes ces données sont bien affichées sur un écran LCD tout en étant également transmises à un ordinateur (Orange PI Zero) pour un traitement ultérieur et des alertes. Bien qu'il soit possible de connecter directement des capteurs numériques tels que le DHT et la broche numérique du MQ2 à l'OrangePI, je préfère toujours utiliser des micros dédiés pour ces tâches et lorsque vous devez également mettre à jour l'écran LCD et faire d'autres bas niveau stuff, l'Arduino est tout simplement imbattable et peut fonctionner de manière fiable non-stop pendant de nombreuses années (en fait, pas un seul Arduino qui fonctionne 24h / 24 et 7j / 7 n'a encore échoué sur moi). L'OrangePI avec ses défauts (avouons-le, c'est un ordinateur à 10 $) comme inutilisable pour une charge de travail lourde, pas de support bsd, le wifi intégré est gonflé, etc.
Il s'agit d'un projet très simple du point de vue matériel qui nécessite les composants suivants:
- Arduino PRO Micro
- Ecran LCD 2x16 caractères RVB
- Module d'alimentation à interrupteur d'isolement AC-DC 220V à 5V HLK-5M05 (c'est très bien pour les projets Arduino/ESP), c'est la version 5V/5W !
- Résistances 2x300ohm
- 2xleds (rouge/vert)
- Détecteur de mouvement PIR
- Capteur MQ2
- DHT22
- LDR
- Résistance 2X10Kohm
- Avertisseur sonore
- Orange PI Zéro
- mini-câble de données USB
Je n'ai même pas pris la peine de faire un PCB pour cette planche à pain ordinaire, car les composants peuvent être simplement connectés à l'Arduino (voir les photos ci-jointes):
-DHT22 nécessitera un pullup de 10K vers VCC (numérique)
-LDR nécessitera un pulldown de 10K vers GND (analogique)
-MQ2 peut être directement connecté à n'importe quelle broche analogique (analogique) <préférez utiliser l'analogique car pourquoi pas lorsque nous avons un MCU avec des broches analogiques où nous pouvons obtenir la valeur exacte au lieu d'ajuster un pot à l'arrière de l'appareil pour obtenir HAUT ou LOW hors de celui-ci, en raison du collage dans mon design qui est de toute façon inaccessible. Vérifiez:
-PIR peut être directement connecté à n'importe quelle broche (numérique)
-LCD: peut être piloté avec 4 broches, peut être connecté à n'importe quelle broche (numérique) aura besoin de +2 RS/E (numérique)
-Buzzer: peut être directement connecté à n'importe quelle broche Arduino (numérique)
Le brochage que j'ai utilisé peut être vu dans le code. Connecter tout ensemble après cela est assez simple, vous pouvez également les faire un par un, assurez-vous que 1 capteur fonctionne parfaitement puis passez au suivant, tout ce que vous pouvez vous tromper est de connecter par erreur les fils aux mauvais endroits (par exemple en échangeant vcc /gnd pour un capteur, jusqu'à présent, cela n'a jamais tué aucun de mes appareils). Ce que je voudrais noter ici, c'est qu'il y avait trop de VCC et de GND empilés pour moi, je ne pouvais pas les faire passer à travers un bornier, alors je les ai tous soudés.
Aussi à propos des DHT n'oubliez pas de mes autres projets: si vous mettez la bibliothèque DHT dans votre code et que le capteur DHT n'est pas connecté ou mal connecté DHT (par exemple 11 défini dans le code que vous utilisez 22) cela peut conduire au programme accrocher pour toujours au début.
À propos des capteurs de détection de mouvement PIR, comme vous pouvez le voir sur ma photo, il y a des tonnes de contrefaçons de ceux-ci, en fait, j'aurais même du mal à en acheter un authentique sur Ebay. Les contrefaçons fonctionnent tout aussi bien, même à long terme, mais leur circuit est en miroir, ce qui provoque l'inversion des broches + et -. les potmètres. J'ai eu la chance d'en trouver une authentique dans ma boite sinon changer la position couvrirait les 2 leds pour moi. J'ai trouvé que les deux pots coudés à mi-chemin fonctionnent pour moi. Cela vous donnera une portée suffisamment longue pour détecter également lorsqu'il y a un mouvement, la jambe numérique sera maintenue en position HAUTE pendant environ une minute, vous n'avez donc pas à rattraper le code pour cela. Sur les contrefaçons, il est facile de déterminer de quel côté est le - et le + il suffit de regarder les pattes correspondantes pour les capuchons électrolytiques connectés aux broches.
Pour couper la boîte, j'ai utilisé une tête de dremel en diamant (ce qui était exagéré mais fonctionnait très bien) et une perceuse ordinaire. Ces boîtes de jonction sont faciles à travailler et bien que je n'aime pas le collage, je n'avais pas de vis et de boulons à portée de main lors de la construction, j'ai donc pris le parti de coller des éléments ensemble (qui peuvent également être facilement réchauffés et démontés plus tard en utilisant le même pistolet à colle sans filament dedans).
Étape 2: Conception du logiciel
Le code Arduino est également simple, il extrait essentiellement toutes les lectures du capteur au début de chaque boucle. Allume les LED s'il y a du mouvement ou de la fumée et émet également un son d'alarme sur le buzzer s'il y a de la fumée (c'est le seul code de blocage donc je l'ai fait court), puis affiche les données sur l'écran LCD et enfin l'envoie sur le PC avec une période d'attente de 10 secondes, pour ne pas inonder le port.
Ce projet utilise une communication à sens unique depuis Arduino-> OrangePI, aucune commande d'aucune sorte n'est implémentée. Bien que cela soit parfaitement possible de le faire comme je l'ai fait dans l'un de mes autres projets où l'ordinateur peut envoyer LCD_PRINT1 ou LCD_PRINT2 pour écraser une ligne de l'écran LCD avec son propre message (par exemple: adresse IP, temps de disponibilité, date du système, utilisation du processeur), la zone d'écran est si petite pour afficher les données de 3 capteurs que je ne me suis même pas donné la peine. Les valeurs SOL et SMK peuvent aller jusqu'à 4 chiffres 0000-1023 en prenant déjà 8 caractères de valeur à l'écran.
Avec l'écran LCD, vous pouvez remarquer une petite astuce dans le code qui après chaque valeur mesurée, une impression d'espaces blancs (" ") est appliquée, puis je déplace le curseur à des positions fixes pour placer les nouvelles icônes et données. Ceux-ci sont là parce que l'écran LCD n'est pas si intelligent pour comprendre les nombres, il dessine simplement ce qu'il obtient et par exemple si vous avez une valeur solaire de 525 qui tout d'un coup a diminué à 3 alors il affichera 325 laissant la vieille camelote sur l'écran là.
Un code de contrôle C s'exécutant sur l'OrangePI et enregistrant les données environnementales et envoyant des alertes par e-mail en cas de besoin.
L'OrangePI exécute Armbian (qui, au moment de la rédaction de cet article, était basé sur Debian Stretch). Je vais l'inclure dans la partie logicielle concernant le problème qu'il a résolu. Voici la puissance absorbée moyenne de l'appareil:
0,17 A - Arduino uniquement + capteurs
0.5-0.62 A - Démarrage OrangePI
0,31 A - Orange PI au repos
0,29 A - Orange PI éteint (ne peut pas vraiment l'éteindre, il n'a pas d'ACPI ou quelque chose comme ça)
0.60 A - Stress test 100% d'utilisation du processeur sur 4 cœurs
J'avais cet OrangePI dans une boîte depuis longtemps. Avec l'ancien noyau, l'appareil consommait tellement de courant (comme l'indique le compteur, il culminait autour de 0,63 A) que le bloc d'alimentation ne pouvait probablement pas fournir qu'il ne démarrait tout simplement pas, le processus de démarrage était bloqué et les 2 voyants Ethernet s'allumaient. constamment et sans rien faire.
Maintenant, c'est un peu ennuyeux car le HLK-5M05 prétend qu'il peut faire 5 W sur 5 V, ce qui lui permet de fournir 1 A, mais avec ces appareils provenant de Chine, vous ne savez jamais, le pic de 0,63 A était bien inférieur au maximum nominal. valeur. Je faisais donc des tests de redémarrage simples, à partir de 10 redémarrages, l'OrangePI ne démarrait que deux fois avec succès, ce qui m'a presque fait le jeter du projet car je n'aime pas les comportements incohérents bogués dans les circuits. J'ai donc commencé à chercher sur Google, peut-être qu'il existe un moyen de réduire la consommation d'énergie au démarrage à partir du logiciel (puisque ce n'était qu'un problème à l'époque) et j'ai trouvé un article parlant de peaufiner le script.bin mais c'était pour le PC Orange PI et le des fichiers manquaient dans le stockage, donc en dernier recours, j'ai effectué la "mise à niveau apt" magique pour mettre à niveau le micrologiciel, le noyau et tout le reste, en espérant qu'il se videra moins et que l'appareil puisse démarrer et:
Linux silverlight 4.14.18-sunxi #24 SMP ven. 9 février 16:24:32 CET 2018 armv7l GNU/Linux
Linux silverlight 4.19.62-sunxi #5.92 SMP mer. 31 juil. 22:07:23 CEST 2019 armv7l GNU/Linux
Ça a marché! Jeter du matériel à un problème logiciel est généralement la tâche des développeurs Java paresseux, mais dans ce cas, nous avons résolu un problème matériel avec le logiciel, quel grand succès. J'ai fait comme 20 autres tests de redémarrage, l'appareil a démarré dans chaque cas. Je noterais tout de même que la surtension due à la mise sous tension de l'Opi (connexion / déconnexion) est si importante qu'elle réinitialisera l'Arduino à tout moment (un simple redémarrage fera simplement clignoter l'écran LCD mais ne causera plus de problèmes), mais ce problème persiste caché puisque les 2 seront démarrés ensemble.
J'ai aussi regardé les modules du noyau:
usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils ttm sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer SND sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq UIO thermal_sys pwrseq_simple
De quoi avons-nous vraiment besoin de ceux-ci ? Ok, le pwr et le thermique peuvent être utiles, mais le son, le port série, le wifi (déjà en panne), nous n'avons pas besoin de tous ces éléments peuvent être mis sur liste noire. Je créerai également un noyau personnalisé avec uniquement les modules nécessaires plus tard.
Ce dont nous avons besoin et il n'est pas chargé par défaut, c'est le CDC ACM pour communiquer avec l'Arduino, activez-le avec:
echo "cdc-acm" >> /etc/modules
Après cela, vous pouvez déjà tester la connexion avec:
écran /dev/ttyACM0 9600
Vous devriez voir les données d'état envoyées toutes les 10 secondes.
Alertes et surveillance
En ce qui concerne les alertes, je viens de mettre des appels system() dans le code de contrôle C qui reçoit les données de la série, donc aucun outil externe n'est requis. Quelques exemples d'alertes:
- La température dépasse les 30 C
- L'humidité dépasse 70 % (pas sain pour les serveurs)
- Mouvement détecté dans la salle (cela peut être gênant si vous continuez dans votre salle de serveur)
- Fumée ou gaz détecté (les alertes supérieures à 100 peuvent être prises au sérieux, j'ai joué avec ce capteur et il s'allume pour beaucoup de choses, par exemple créer de la fumée à côté du capteur avec du fer à souder a donné un peu plus de 50 en fumant la cigarette à côté o il a augmenté jusqu'à 500, il a même détecté de loin le gaz d'un déodorant ordinaire)
Pour conserver les données historiques, je n'ai pas pris la peine de développer un outil, car pourquoi réinventer la roue alors que nous disposions d'excellents cadres de surveillance. Je vais montrer un exemple de la façon d'intégrer cela dans mon favori personnel, Zabbix:
apt-get install zabbix-agent
Ajouter à la fin de: /etc/zabbix/zabbix_agentd.conf
UserParameter=silverlight.hum, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $1 }'
UserParameter=silverlight.tmp, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $2 }' UserParameter=silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $4 }' UserParameter=silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $5 }' UserParameter=silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $6 }'
L'exécution de zabbix_agentd -p devrait maintenant renvoyer les valeurs appropriées:
silverlight.hum [t|41]
silverlight.tmp [t|23] silverlight.sol [t|144] silverlight.mot [t|0] silverlight.smk [t|19]
L'indice de chaleur, je le collecte mais je n'en vois aucune utilité pratique, il est donc simplement enregistré. Dans le code de contrôle C, j'ai implémenté 2 fonctions de journalisation, la première enregistrera toutes les données dans un format convivial:
[SILVERLIGHT] Données reçues le 2019-09-10 23:36:08 => Humidité: 44, Temp: 22, Hi: 25, Solar: 0, Motion: 0, Smoke: 21
[SILVERLIGHT] Données reçues le 2019-09-10 23:36:18 => Humidité: 44, Temp: 22, Hi: 25, Solaire: 0, Mouvement: 0, Smoke: 21 [SILVERLIGHT] Données reçues le 2019-09 -10 23:36:29 => Humidité: 44, Temp: 22, Hi: 25, Solar: 0, Motion: 0, Smoke: 22 [SILVERLIGHT] Données reçues le 2019-09-10 23:36:39 => Humidité: 44, Temp: 22, Hi: 25, Solaire: 0, Mouvement: 0, Fumée: 21
Le deuxième:
void logger2(char *text) {
FICHIER *f = fopen("/dev/shm/silverlight-zbx.log", "w"); if (f == NULL) { printf("Erreur lors de l'ouverture du fichier journal de la mémoire !\n"); revenir; } fprintf(f, "%s", texte); fferme(f); revenir; }
Cela mettra un journal de 1 ligne en mémoire (élimine les opérations rw inutiles sur la carte SD) qui sera toujours écrasé la prochaine fois. Ce journal ne contiendra que les 6 colonnes de données et aucun horodatage, il est facilement lisible pour Zabbix.
En bonus final: comment programmer l'Arduino directement depuis l'OrangePI pour ne pas avoir à marcher à chaque fois jusqu'à l'appareil et brancher votre ordinateur portable.
Il y a 2 façons:
-Manière simple: installez l'IDE Arduino complet et les bibliothèques utilisent un bureau à distance comme X11 avec transfert, Xrdp, Xvnc, Nxserver etc.
-Manière difficile: installez l'IDE Arduino et utilisez la ligne de commande
Nous allons faire à la dure cette fois car je n'aime pas installer X11 sur les serveurs. Pour cela, vous aurez besoin de 6 composants:
1, Arduino IDE pour ARM 32 bits ->
2, Python serial -> apt-get install python-serial
3, projet Arduino Makefile -> clone git
4, bibliothèque DHT
5, définitions du tableau Sparkfun
6, SilverLight.ino, code principal
Pour faciliter les choses, j'ai regroupé les fichiers nécessaires pour les 4 derniers points (sketchbook.tgz) donc vous n'aurez besoin que des 2 premiers
Tout d'abord, il est préférable de créer un utilisateur régulier ayant un accès rw au port USB:
adduser argent
usermod -a -G dialout argent
SCP le sketchbook.tgz sur l'appareil dans le répertoire d'accueil de l'utilisateur nouvellement créé et extrayez-le ici:
cd /home/argent
tar xvzf sketchbook.tgz
Pour comprendre un peu ce qui se passe sous le capot lorsque vous utilisez l'IDE graphique:
Le workflow de construction de la construction d'une esquisse Arduino lors de l'utilisation de l'IDE Arduino est décrit sur le site Web Arduino https://www.arduino.cc/en/Hacking/BuildProcess et plus en détail ici: https://www.arduino.cc/ fr/Piratage/BuildProcess
Généralement, le processus de construction standard d'Arduino est:
Combinez les fichiers.ino dans le fichier d'esquisse principal. Transformation du fichier d'esquisse principal: ajoutez l'instruction #include; créer des déclarations de fonction (prototypes) de toutes les fonctions dans le fichier d'esquisse principal; ajoutez le contenu du fichier main.cxx de la cible au fichier d'esquisse principal. Compilez le code en fichiers objets. Liez les fichiers objet pour produire un fichier.hex prêt à être téléchargé sur l'Arduino.
Il existe de légères différences entre le processus de génération standard Arduino et le processus de génération utilisant Arduino-Makefile:
Un seul fichier.ino est pris en charge. Les déclarations de fonction ne sont pas automatiquement créées dans le fichier.ino. L'utilisateur doit veiller à créer les déclarations de fonction correctes.
Le cœur du processus de construction est le Makefile. Ne vous inquiétez pas, tout est préparé pour vous, c'est un peu plus compliqué de compiler de cette façon pour des cartes non standard comme la série SparkFun.
BOARD_TAG = promicro
ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT = /dev/ttyACM0 USER_LIB_PATH = /home/silver/sketchbook/libraries ARDUINO_DIR = /opt/arduino-1.8.9 include /home/silver/sketchakefile/Arduino/Arduino
Et tout ce que vous devez taper est un: make upload (qui construira d'abord les fichiers.hex puis utilisera avrdude pour les télécharger), cela se terminera par quelque chose comme:
mkdir -p build-promicro-16MHzatmega32U4
make reset make[1]: Entrée dans le répertoire '/home/silver/sketchbook' /home/silver/sketchbook/Arduino-Makefile/bin/ard-reset-arduino --caterina /dev/ttyACM0 make[1]: Quitter le répertoire ' /home/silver/sketchbook' make do_upload make[1]: Entrer dans le répertoire '/home/silver/sketchbook' /opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P /dev/ttyACM0 / -U flash:w:build-promicro-16MHzatmega32U4/sketchbook. hex:i Connexion au programmateur:. Programmeur trouvé: Id = "CATERIN"; type = S Version du logiciel = 1.0; Aucune version matérielle donnée. Le programmeur prend en charge l'incrémentation automatique des adresses. Le programmeur prend en charge l'accès mémoire tamponné avec buffersize=128 octets. Le programmeur prend en charge les appareils suivants: Code de l'appareil: 0x44 avrdude: appareil AVR initialisé et prêt à accepter les instructions avrdude: signature de l'appareil = 0x1e9587 (probablement m32u4) avrdude: lecture du fichier d'entrée « build-promicro-16MHzatmega32U4/sketchbook.hex » avrdude: écriture flash (11580 octets): avrdude: 11580 octets de flash écrit avrdude: safemode: fusibles OK (E:CB, H:D8, L:FF) avrdude done. Merci.
Eh bien, merci avrdude, et maintenant notre Arduino est réinitialisé et programmé avec le nouveau code, ce que vous pouvez simplement éditer avec vi ou votre éditeur préféré localement, pas besoin d'IDE. Je voudrais noter que vous devez fermer à la fois le programme de contrôle C, l'écran ou tout autre élément accédant à l'arduino lors du téléchargement, sinon le port reviendra en tant que /dev/ttyACM1 après la réinitialisation.
Étape 3: Clôture et liste de tâches
Bien que j'aie créé ce boîtier de capteur environnemental pour les salles de serveurs, vous pouvez l'utiliser pour les laboratoires de chimie/électronique, les entrepôts, les salles ordinaires et toute autre chose. Et oui, puisqu'il utilise TCP/IP, c'est un appareil IoT, G, j'aurais également dû le mettre dans le titre pour le rendre plus entreprenant:)
Vous pouvez facilement modifier à la fois le matériel et le logiciel pour pouvoir également allumer automatiquement les lumières de la pièce. Jetez un œil à mon autre projet: Shadow of phoenix comment cela fonctionne pour le contrôle de la lumière, vous avez tout le matériel à portée de main pour faire la même chose (il utilise des minuteries pour maintenir les lumières allumées tant qu'un mouvement est détecté dans un période de temps, s'il y a à nouveau du mouvement, une minuterie sera augmentée).
Avec OrangePI exécutant une pile complète Armbian, les possibilités sont illimitées, vous pouvez créer une interface Web locale écrite à partir de zéro en php pour afficher des données historiques sur des graphiques. N'est-ce pas déjà mieux que vous ayez un appareil entièrement Open Source surveillant votre salle de serveurs, ce dont vous pouvez être fier de construire, si vous le pensez, construisez-le vous-même !
Conseillé:
Notions de base sur les transistors - Tutoriel sur les transistors de puissance BD139 et BD140 : 7 étapes
Notions de base sur les transistors | Tutoriel sur les transistors de puissance BD139 et BD140 : Hé, quoi de neuf, les gars ! Akarsh ici de CETech.Aujourd'hui, nous allons acquérir des connaissances sur la centrale des circuits de transistors de petite taille mais beaucoup plus gros dans le travail.Fondamentalement, nous allons discuter de quelques bases liées aux transistors et
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 - Surveiller la température, l'humidité et l'indice de chaleur sur le M5stick-C avec DHT11 : 6 étapes
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 | Surveiller l'indice d'humidité et de chaleur de la température sur M5stick-C avec DHT11 : Salut les gars, dans ces instructables, nous apprendrons comment interfacer le capteur de température DHT11 avec m5stick-C (une carte de développement par m5stack) et l'afficher sur l'écran de m5stick-C. Donc, dans ce tutoriel, nous allons lire la température, l'humidité & chauffer je
Moniteur de données de brosse à dents basé sur Arduino : 4 étapes (avec images)
Moniteur de données de brosse à dents basé sur Arduino : cette brosse à dents basée sur Arduino vous permet de surveiller les modèles à l'aide de données d'accélération 3 axes
Rendre les images transparentes horizontalement ou verticalement uniquement (pour "The GIMP") . : 11 étapes (avec images)
Rendre les images transparentes horizontalement ou verticalement uniquement (pour "The GIMP"). : Si vous essayez le plug-in "Rendre transparente" dans GIMP, l'image sera transparente à la fois horizontalement et verticalement. Cela ne vous permettra pas de le rendre transparent dans une seule dimension. Cette instructable vous aidera à faire ima