Pourquoi?
Même dans ce hub, il y a une augmentation de l'intérêt pour l'IoT, à mon avis subjectif, c'est une tendance mondiale qui va bien au-delà de la portée de ce site. Il vaut donc la peine d'insérer vos 5 kopecks dans le développement de la direction, d'autant plus que l'idée tourne depuis longtemps pour une maison intelligente, qui pourrait contrôler la consommation de tout appareil alimenté par un réseau 220V et a permis de programmer la logique de contrôle en fonction des paramètres de consommation, température, phase la lune etc. Il existe des solutions prêtes à l'emploi, mais souvent quelque chose ne leur convient pas, et le prêt à l'emploi n'est pas notre méthode si vous pouvez essayer de construire votre propre vélo unique.
Paramètres du futur vélo:- Appareil bon marché à partir de composants disponibles publiquement.
- Contrôle du courant dans le circuit consommateur.
- Gestion des appareils via le protocole MQTT.
- Dispositif de contrôle de la température.
- Deux capteurs à distance pour surveiller la température du consommateur.
- Indication d'état sur l'écran de l'appareil.
- Arrêt d'urgence du consommateur si la température ou le courant dépasse les valeurs définies.
Cas d'application:- Suivi de la consommation d'électricité.
- La possibilité de déconnecter à distance l'appareil en cas d'accident ou tout simplement comme ça.
- Un appareil simple pour surveiller la température dans les garde-manger semi-professionnels où les situations d'urgence se produisent souvent, car rien ne surveille la température dans la pièce.
- Régulation thermostatique (maintien de la température, dans mon cas j'ai besoin de prévoir le dégel et d'allumer à l'avance le chauffage des eaux pluviales avec un «câble chauffant»).
- Le nœud du système de maison intelligente pour implémenter les fonctions ci-dessus.
Et bien sûr la bouilloire Wifi! Le reste est pour la quantité.
Et je voudrais montrer à quel point il est simple et bon marché d'implémenter le bundle: [Appareil] <-> [Wifi] <-> [MQTT] <-> [Surveillance centralisée de l'état et de la gestion de l'appareil final].Sélection des composants

Comment mesurer le courant?
Contrairement aux mesures de tension, les capteurs de courant ne sont pas si courants dans l'électronique amateur. Mais plusieurs types de capteurs de courant sont disponibles - shunts de courant, type de transformateur et capteurs à effet Hall. Il est clair que la classification est amateur, mais si vous regardez la boutique en ligne, les noms ressembleront à ceci.
Je ne voulais pas utiliser le shunt à cause de la nécessité de trouver une isolation galvanique (c'est pour que le 220V ne se précipite pas avec tous ses amplis dans notre microcontrôleur et toute la fumée magique sur laquelle ils sont connus pour fonctionner n'en sort pas). Les capteurs de transformateur ont également leurs propres caractéristiques. Mais ce dernier type était non seulement très abordable, mais également pratique à utiliser. Je le pensais quand je l'ai commandé.
Si vous avez un circuit basse tension, il est plus raisonnable d'utiliser une résistance d'une petite valeur connue au lieu d'un shunt. Pour plus de détails sur comment et comment mesurer le courant, lisez le bon
article de
radiolok .
Les capteurs ACS712 sont le plus souvent vendus déjà soudés sur une petite carte avec le câblage minimum requis. Je peux vous conseiller de protéger la puce elle-même avec un écran métallique contre l'influence des champs magnétiques étrangers avant utilisation. Le capteur pour eux est très sensible et en stock est plus adapté à la recherche de câblage caché qu'à la mesure de courant. Avec une protection impromptue, l'immunité au bruit augmente considérablement.

On colle dans le gros connecteur vert deux fils obtenus en coupant l'un des deux fils du circuit 220V (connexion série au circuit). Nous envoyons + 5V au connecteur de l'autre côté du capteur, retirons le signal analogique de la broche restante, qui oscille par rapport au milieu (2,5V) en fonction de la force et de la direction du courant. C'est tellement simple ... sur papier.

Autour de cet endroit, l'écrasement des os commence. Ces capteurs sont disponibles en versions 5.20.30 ampères. Si avec les deux derniers, cela devient plus ou moins clair, la version 5 ampères s'est avérée spéciale, cette caractéristique était que le signal (selon la documentation) ne change que de + -1V par rapport au milieu (2,5V). Qui se soucie de leurs détails
ici . Par référence, l'auteur fait l'hypothèse qu'il s'agit en fait de capteurs de 10 ampères qui n'ont pas fonctionné. Si l'on ajoute à cela le fort bruit du capteur lui-même et sa tendance à réagir aux champs magnétiques tout autour, la tâche d'en retirer un signal plus ou moins intelligible cesse d'être ennuyeuse. Mais comme les capteurs étaient déjà achetés, j'ai décidé d'essayer d'en fabriquer un.
Module principal de l'appareil
Ce module est nécessaire pour maintenir la communication de préférence via Wifi et tordre le rapport cyclique principal avec des capteurs d'interrogation, vérifier les conditions, répondre aux boutons, etc. Que choisir parmi une option? Et du coup, on choisit l'ESP8266. Dans mon cas, c'est ESP-12F. Oh oui! Il existe également un ESP-32.

Mieux encore, apportez-le immédiatement soudé à une carte avec un faisceau et un adaptateur USB à UART. Mais vous pouvez également le connecter vous-même car l'achat de ready-made n'est pas conforme aux préceptes de la construction de vélos.
Matériel sur ce sujet .
J'ai perdu du temps à essayer de flasher un ESP-shku auto-connecté. USBtoUART utilisé sur la puce CH340. La carte ne voulait obstinément pas clignoter jusqu'à ce que je passe la logique CH340 en 5V au risque de brûler les conclusions ESP. Mais jusqu'à présent sans perte.

De plus, tout se
connecte à l'Arduino IDE HWman et n'est pas très différent dans la programmation de l'Arduino habituel. Mais il est très différent en termes de capacités et de ressources informatiques:
- Processeur Tensilica 80 MHz 32 bits Xtensa L106. Un overclocking non garanti jusqu'à 160 MHz est possible.
- Wi-Fi IEEE 802.11 b / g / n. Pris en charge par WEP et WPA / WPA2.
- 14 ports d'E / S (dont 11 peuvent être utilisés), SPI, I²C, I²S, UART, ADC 10 bits.
- Alimentation 2,2 ... 3,6 V. Consommation jusqu'à 200 mA en mode émission, 60 mA en mode réception, 40 mA en mode veille. Mode basse consommation tout en maintenant la connexion avec le point d'accès ~ 1 mA, mode veille profonde 0,1 μA.
en.wikipedia.org/wiki/ESP8266Pourquoi Arduino IDE? Je suis conscient qu'il existe au moins deux autres façons d'implémenter la même chose, c'est d'utiliser le firmware avec des scripts sur LUA et le développement natif en C en utilisant le SDK du fabricant. La première méthode m'a semblé très superficielle, je pense que je n'aurais pas pu réaliser certaines des nuances en allant de cette façon. La deuxième méthode est la plus prometteuse, mais elle prend beaucoup de temps à maîtriser, mais c'est la seule option si elle est censée implémenter un appareil plus sérieux.
En utilisant l'IDE Arduino, la partie la plus importante était la moins gênante en termes d'inclusion dans le projet. Cependant, le débogage normal fait cruellement défaut. Initialement, il y avait des doutes que toutes les fonctions prévues ensemble (1-Wire, i2c, ADC, MQTT, EEPROM, wifi) coexisteront sur l'ESP-12F dans un seul croquis, mais c'est ce qui s'est produit.
Stm8s103f3p6
Il semblerait, pourquoi y a-t-il un autre microcontrôleur? Aujourd'hui encore, un appareil monocœur n'est plus pris au sérieux, je plaisante. La raison est différente - le capteur actuel est si «spécial» qu'il est plus facile et moins cher de suspendre tout le traitement de ses lectures sur un microcontrôleur séparé et de le laisser le garder. En fait, nous avons un capteur de courant numérique qui se connecte via le bus i2c. Théoriquement, vous pouvez utiliser le microcontrôleur le moins cher, mais comme ces cartes sont très abordables et assez décentes en termes de paramètres, je l'ai appliqué. À l'avenir, je l'ai mesuré à nouveau et je vais les utiliser - en remplacement du PIC12 que j'ai utilisé pour ajouter des «cerveaux» à des métiers complètement différents. Au début, cette idée me semblait redondante, mais maintenant je vois que je n'avais même pas besoin de passer du temps sur une autre option.

Ces microcontrôleurs sont programmés dans l'environnement IAR Embedded Workbench, il est gratuit pour du code jusqu'à 8 Ko, notre microcontrôleur a tellement de mémoire. Un énorme avantage est la possibilité de débogage humain. Certes, vous devez vous sevrer pour utiliser les fonctions C-standard habituelles comme printf et travailler avec des nombres à virgule flottante, car cela effacera rapidement toute la mémoire. Je vais vous en dire plus sur le firmware ci-dessous.
Écran
Il n'y a presque aucune option ici - nous utilisons OLED SSD1306, un bel écran avec une très belle lueur et une connexion simple. Les bibliothèques pour lui sont même sous le spectre. Il existe des écrans de différentes couleurs. Il existe également des cartes sur lesquelles ESP et un écran similaire sont immédiatement soudés. La couleur bleue semble la plus avantageuse. Il y a deux tons lorsque la partie supérieure est d'une couleur différente.
L'écran est connecté via le bus i2c, ce ne sont que 4 fils en tenant compte de l'alimentation. Le capteur de courant sera également connecté via le même bus. L'écran n'a posé aucun problème. Certainement un must have!

Il convient de noter que l'écran est susceptible de briller 24h / 24 et 7j / 7, et la technologie d'écran est telle que les pixels LED individuels s'estompent avec le temps, vous devez donc essayer de les utiliser de manière uniforme. Je suis venu avec juste pour déplacer l'image dans des directions différentes à intervalles réguliers. En général, je pense que si du coup l'image devient complètement illisible, le remplacement de l'écran n'est pas un problème. Voyons combien de temps il vit.
Une vidéo détaillée sur un tel écran et la chaîne youtube.
Capteurs de température
J'ai utilisé le célèbre DS18B20. En mode d'alimentation parasite, trois capteurs fonctionnent silencieusement sur une paire de fils torsadés à une distance dépassant ce qui est raisonnable pour un tel projet (assez avec une marge n'importe où dans l'appartement).

La seule différence avec la figure est l'utilisation d'une résistance 1K, sinon la puissance est insuffisante. Lorsque cela se produit, le capteur donne une température égale à 85 degrés. La demande de conversion et de lecture ultérieure de la valeur se fait séquentiellement pour chaque capteur afin qu'ils n'interfèrent pas entre eux.
J'ai compté à l'avance les adresses des capteurs et les ai codées en dur dans un croquis. Il y a eu une tentative de faire l'auto-détection de capteurs sur le bus, mais je n'ai pas aimé la stabilité de cet algorithme, et comme la température est un paramètre important, le jeu n'en vaut pas la chandelle.
Éléments structurels et "frisottis"
Tout ce fer à repasser a été placé dans une petite boîte à écharpe qui peut être récupérée sur n'importe quel marché radio au goût. Habituellement, un relais de contact pour 220V était utilisé. Plusieurs kilomètres de fil de l'ancienne boucle FDD, un demi-kilo de résistances par 10K, quelques boutons, une paire de sortie sous les "tulipes" pour connecter la ligne 1-Wire et ADC ESP-shki. Beaucoup de colle chaude. Une unité d'alimentation de haute qualité à 5 volts, entièrement placée dans l'appareil. Et hélas, il n'y a presque pas de ruban électrique bleu.
Si vous assemblez un prototype, essayez de ne rien placer du tout sur l'un des couvercles, il sera alors pratique de le retirer et de le cueillir dans l'appareil. Pensez à l'endroit où les câbles de connexion externes entreront et quels connecteurs ils ont pour qu'il ne s'avère pas que la prise doit être coincée à des angles sauvages, etc.
Coûts des composants:
- Capteur de courant - 2,1 $
- ESP-12F - 3,2 $
- Carte Stm8 - 0,75 $
- Convertisseur logique - 0,5 $
- Capteur de température - 0,6 $
- Écran - 4,2 $
- Relais - 0,75 $
- Boîte et autres mussiness ~ xs, que ce soit 3 $
Total: 15 $Armé du bon dossier ...

Capteur de courant
Comme je l'ai écrit ci-dessus, le capteur actuel était très morose. De plus, la mesure de la valeur efficace du courant alternatif est un peu plus compliquée que la mesure de la valeur du courant continu. Je pense qu'il vaut mieux s'expliquer par une personne qui connaît bien le
radiolok :
Et aussi:
«Au lieu de I (courant), substitut dans la formule U (tension). L'intégrale est la zone de la figure sous l'enveloppe. Vous pouvez calculer l'intégrale approximative en utilisant la méthode des rectangles du milieu, approximant le chiffre avec des rectangles d'une hauteur égale à un échantillon discret de la tension et d'une largeur égale à l'intervalle de temps entre les échantillons. »
Ainsi, il s'avère que nous devons mesurer l'aire "sous le graphique" du courant alternatif pendant une période. La fréquence de notre tension étant de
50 Hz, nous obtenons une période de
20 ms . Quand commencer à mesurer n'a pas d'importance, l'essentiel est de le faire pour un multiple de 20
ms . Presque tout se résume à additionner le module des lectures ADC sur une période avec le calcul ultérieur de la moyenne. Ce sera notre courant. Pour la période entre deux mesures, le temps de réponse de l'ADC est pris, il est assez stable.
En prime, cette méthode vous permet de mesurer le courant alternatif et continu. En dehors des crochets, nous laissons la probabilité de fréquence de marche et de tension à la sortie.
Vous pouvez essayer de faire des mesures sur l'ADC ESP8266, et j'ai essayé, mais la précision s'est avérée très médiocre, et l'ESP a également dû faire face au traitement du signal de l'ADC la plupart du temps. De plus, l'ADC intégré a une plage de tension d'environ 1 volt. Il est nécessaire d'utiliser un diviseur de tension. L'ESP est alimenté à 3,3 V et le capteur de courant à 5 V, ce qui signifie que les données de l'ADC peuvent être déformées si l'alimentation ne change pas sa valeur proportionnellement. Tout cela n'ajoute pas de précision aux mesures. Le plan initial était le suivant - si vous ne pouvez pas utiliser l'ADC ESP correctement, alors nous utiliserons un microcontrôleur séparé, et c'est arrivé.
En utilisant Stm8s103f3p6, la situation est grandement améliorée. Premièrement, le capteur et le microcontrôleur sont alimentés par 5 V, ce qui empêche les résultats de mesure de «flotter» pendant les surtensions. Deuxièmement, le microcontrôleur peut consacrer toutes ses ressources informatiques au traitement, au filtrage et au raffinement des signaux. En fait, bien sûr, tout n'est pas simple, vous pouvez y accrocher autre chose.
Il a été déterminé expérimentalement qu'en 20 ms, stm8 parvient à obtenir environ 600 valeurs de l'ADC sans compromettre la précision. Si nécessaire, vous pouvez synchroniser l'ADC plus rapidement, mais le graphique devient plus évidemment de fausses valeurs. J'ai surveillé les mesures en utilisant un logiciel de
traitement , c'est un produit pour visualiser quelque chose, dans mon cas, c'était un tas de valeurs prises par l'ADC. Des lectures assez stables ont été obtenues après une mesure de 100 ms, soit environ 3000 mesures. Ensuite, nous le multiplions par un coefficient sélectionné empiriquement (je n'ai aucune idée de ce qu'est ce nombre et comment le calculer car d'autres nombres ont été obtenus par toutes les formules appropriées, je l'ai juste ajusté et tout) Ensuite, la valeur est exécutée à travers le
filtre . Tout ce qui reste à faire est de mettre la valeur suivante à l'endroit où ESP la récupérera.
En conséquence, nous avons obtenu une telle stabilité si vous allumez l'ampoule 100W.
Pendant le débogage, il s'est avéré que le capteur peut se bloquer lorsque le relais est déclenché, apparemment à partir de forts champs magnétiques au moment où le relais s'ouvre, avec la formation d'un arc. J'ai dû ajouter une chaîne de "jonglage" avec le capteur de nutrition. Bien qu'au début, je pensais que le gel stm8 ou un bloc de celui-ci parce qu'il n'y avait rien à accrocher dans le capteur, mais il pouvait.
En raison du bruit du capteur, il est pratiquement impossible de mesurer un courant jusqu'à 100mA. Quelque part sur les forums, j'ai vu une mention que c'est normal. J'ai essayé d'organiser la détection du bruit et l'émission, dans ce cas, de lectures de courant nul afin que le courant ne saute pas même avec un circuit ouvert.
L'algorithme de ce détecteur est que le bruit a une distribution égale des valeurs au-dessus et au-dessous de "zéro", tandis que le signal réel dans une section particulière de la période a toujours une valeur moyenne autre que zéro, à moins bien sûr que nous ayons commencé à mesurer au moment de la transition zéro par une sinusoïde. Par conséquent, j'écoute le signal à trois intervalles aléatoires de la même période, qui sont situés les uns par rapport aux autres de manière à ce qu'au moins l'un soit garanti de ne pas tomber au moment où la sinusoïde franchit zéro et donne une valeur totale autre que zéro. Il existe peut-être un moyen plus simple, mais la construction de vélos, vous savez, ne tolère pas une longue étude de la question.Il se trouve que Stm8 se bloque, mais uniquement lors de l'échange sur le bus i2c avec ESP, peut-être à cause de ma connaissance peu approfondie de la programmation de ce microcontrôleur, mais peut-être parce qu'il le peut. L'utilisation d'un chien d'observation a aidé à résoudre ce problème.
Il est plus facile d'obtenir une tension alternative sûre pour le débogage en démontant une alimentation du transformateur (abaissant naturellement, de préférence un volt à 12) et en déconnectant le pont de diodes et le condensateur de lissage du transformateur, généralement il n'y a rien de plus.
Il se trouve que je n'avais pas d'appareil capable de mesurer la valeur efficace du courant alternatif. Dans ce cas, vous pouvez obtenir en mesurant la tension effective sur la résistance d'une valeur connue, et le courant peut déjà être calculé en divisant la tension par la valeur de la résistance. La valeur efficace de la tension alternative peut afficher n'importe quel multimètre. Et la deuxième façon consiste à mesurer la chute de tension aux bornes de la même résistance, mais en la connectant après le pont de diodes et le condensateur de lissage. Naturellement, dans ce cas, la valeur actuelle sera légèrement inférieure car le convertisseur AC-DC a sa propre efficacité.
Naturellement, je veux dire que les opérations ci-dessus sont effectuées avec une tension alternative réduite, et non en réseau.

Dans le cadre de cet article, je n'analyserai pas le processus de programmation de stm8. Mais ce n'est pas difficile, il existe des bibliothèques standard pour les périphériques et Google résout la part du lion des problèmes. Ceux qui ne veulent pas entrer dans les détails sont invités à
remplir le firmware (
CurrentMeter (IAR) \ STM8S103 \ Exe \ Project.hex ) dans le microcontrôleur et à l'oublier. Si vous voulez aller plus loin, commencez l'
article et la vidéo:
Il y a des tentatives pour adapter Arduino à ce microcontrôleur, mais pour le moment je ne l'ai pas trouvé plus ou moins prêt pour une utilisation réelle.
Nous avons donc un capteur de courant avec interface i2c. Étant donné que l'ESP a une logique 3,3 V et une tension stm8 5 V, un convertisseur de niveau logique est nécessaire, et dans les deux sens, il n'y a aucun moyen d'obtenir un diviseur de tension ici.
Toutes sortes d'astuces avec l'installation de résistances en série vous permettent en quelque sorte d'établir une connexion, mais la stabilité de cette solution n'est pas satisfaisante. Il est beaucoup plus facile d'utiliser un convertisseur bidirectionnel prêt à l'emploi, qui coûte un sou.
Son travail est basé sur l'utilisation de transistors à effet de champ, plus d'informations sur la conversion de niveau peuvent être trouvées ici.[ Firmware et source pour stm8 ]Assemblage et disposition de l'appareil
Le prototype de l'appareil, il a été décidé de collecter l'installation montée. Il est possible que certains points doivent être refaits pendant le fonctionnement, et je n'ai toujours pas maîtrisé la disposition normale et simple des cartes de circuits imprimés. Après que l'appareil ait fonctionné pendant plusieurs mois sans modifications, il est probablement judicieux de développer et de commander des cartes de circuits imprimés en Chine. En attendant, nous avons un tel monstre de pâtes: un
circuit intuitif et intuitif pour commuter les éléments de l'appareil.Le principe général d'assemblage du prototype est simple - nous marquons grossièrement dans une boîte en plastique que là où il sera situé, nous y fixons les éléments principaux puis tout est relié par un fil d'assemblage. Il convient de considérer l'emplacement des éléments afin de ne pas créer de désagréments inutiles.En utilisant le scan irremplaçable chinois, les trous nécessaires (et pas seulement) sont faits, la fenêtre de l'écran est ajustée avec un fichier.
Pour alimenter l'électronique, une unité d'alimentation 5V de haute qualité est utilisée qui est connectée en parallèle à un réseau 220V directement à l'intérieur du boîtier de l'appareil.Il est très important de comprendre que le 220V est déjà une tension dangereuse, assurez-vous d'isoler toutes les connexions et, si possible, de localiser ces connexions dans une partie de l'appareil et la partie basse tension dans une autre. Lors des premiers tests de connexion, vous pouvez basculer sur une machine classique, personne n'est à l'abri des erreurs.
À propos des erreurs et de leur probabilité.Rien d'inhabituel, juste légèrement pris le contrôle des bombes thermonucléaires de toucher le sol en cas de crash accidentel avec l'avion après un ravitaillement infructueux au-dessus de l'Espagne en l'an 66. Photo tirée de cet article de MagisterLudiNe vous considérez pas comme le plus intelligent et le plus prudent. Eh bien, ou du moins touchez les fils à haute tension à l'extérieur de la paume de votre main, mais il vaut mieux ne pas le faire.La photo montre que le capteur de courant est collé à l'alimentation, je n'ai pas remarqué d'interférence, mais j'ai remarqué que l'interférence pénétrait par le haut, j'ai dû démonter le capteur et le protéger avec une feuille métallique. Vous pouvez vérifier l'efficacité du blindage à l'aide d'un aimant en néodyme.Il est important de ne pas oublier qu'une tension de 220 V est appliquée sur un côté de la puce du capteur, vous devez donc la protéger avec une isolation exclusivement avec un ruban électrique bleu .Si quelqu'un ne comprend pas le schéma de circuit visuel des blocs de commutation donné ci-dessus, il y a un schéma de circuit tordu. La première expérience d'utilisation de fritzing semble être grumeleuse.
La seule chose qui ne se reflète pas dans le diagramme est la conclusion des contacts nécessaires, pour le firmware, entre ESP et STM8 vers un connecteur séparé sur le côté de l'appareil. Ainsi, vous pouvez terminer l'assemblage pour commencer à flasher le périphérique fini, et non un croisement entre les nœuds et les fils dispersés sur la table.Avant d'appliquer plusieurs fois l'alimentation, faites sonner le circuit d'alimentation pour un court-circuit ou la polarité correcte. Cela semble être des choses simples, mais un petit tas de châles morts dans le tiroir de mon bureau demande avec éloquence de ne pas négliger ces règles simples.Communication avec le monde extérieur.
Nous allons commencer à terminer lentement le logiciel. Pour organiser la gestion et l'interaction avec notre point de vente, nous utiliserons le protocole MQTT.MQTT. Comment ça marche? Tout est organisé comme suit - dans le réseau local (ou peut-être pas sur le réseau local) il y a un certain hôte sur lequel un programme spécial ( courtier MQTT ) est lancé qui reçoit diverses données de divers appareils et organise leur stockage d'une manière similaire au système de fichiers et de répertoires sur votre disque.Par exemple: «SmartPowerSocket1 / Current» - voici à quoi ressemble le vrai sujet MQTT .Le dossier de cet appareil est «SmartPowerSocket1» , les sous-dossiers sont des paramètres internes de l'appareil, par exemple, la valeur actuelle est «Actuelle». Le chemin d'accès complet au paramètre (rubrique) est utilisé pour que les appareils s'abonnent aux modifications de ces paramètres. Là, les paramètres sont enregistrés par l'appareil lui-même. Vous pouvez vous abonner à l'intégralité du «dossier» (rubrique) et recevoir toutes les modifications de paramètres pour un périphérique spécifique (rubrique ou sous-rubrique) - SmartPowerSocket1 / # .
Une vidéo plus détaillée sur ce sujet.Et encore une fois, je recommande cette chaîne, vous y trouverez beaucoup d'informations utiles.Le courtier MQTT le plus célèbre est Mosquitto . Et depuis que j'ai décidé de déployer immédiatement le système de gestion de la maison intelligente MajorDoMo , qui était déjà présenté dans la vidéo ci-dessus, tout cela a été soulevé en vrac en déployant l'image finale pour Orange Pi PC . Tout y est déjà installé.L'utilisation du protocole MQTT permettra d'utiliser différents systèmes de contrôle de la maison intelligente et non seulement ce protocole gagne en popularité.Vous ne pouvez le faire qu'avec le courtier MQTT en l'installant sur votre PC, et de nombreux clients MQTT interagissent avec lui, par exemple, depuis le téléphone, pour Android. Et pas seulement pour Android. Ils sont configurés tout simplement.À l'aide de MajorDoMo, vous pouvez organiser un bel affichage d'informations, dessiner des graphiques et la gestion via n'importe quel navigateur.Vous pouvez essayer de deviner quel type d'appareil en tant qu'expérimental est affiché dans les graphiques ci-dessous.
Ceci est un réfrigérateur, un capteur de température dans le congélateur. Je suis un peu surpris que si vous réglez le bouton de commande du réfrigérateur sur "2", les lectures sur les captures d'écran ci-dessus soient obtenues. S'il est réglé sur "3", le réfrigérateur a martelé pendant 40 minutes au lieu de 7 et maintient la température entre -16 / -18 degrés. Réglage pas très fluide comme pour moi. L'information n'a pas de valeur excessive, c'était intéressant à voir.Il est également intéressant que les moments du courant élevé de départ soient affichés et que la discrétion du capteur de température (étape) soit visible, car le filtre moyen est utilisé pour le courant, je ne m'attendais pas du tout à voir de telles surtensions sur le graphique.Esquisse pour ESP-12F
Pour forcer ESP à échanger des données via MQTT, il vous suffit d'utiliser la
bibliothèque appropriée sous Arduino. Il convient de noter qu'il existe également des bibliothèques similaires.
Un exemple de travail avec cette bibliothèque sur ESP8266#include <ESP8266WiFi.h> #include <PubSubClient.h> // Update these with values suitable for your network. const char* ssid = "........"; const char* password = "........"; const char* mqtt_server = "broker.mqtt-dashboard.com"; WiFiClient espClient; PubSubClient client(espClient); long lastMsg = 0; char msg[50]; int value = 0; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); // Switch on the LED if an 1 was received as first character if ((char)payload[0] == '1') { digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is acive low on the ESP-01) } else { digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH } } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect if (client.connect(clientId.c_str())) { Serial.println("connected"); // Once connected, publish an announcement... client.publish("outTopic", "hello world"); // ... and resubscribe client.subscribe("inTopic"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); long now = millis(); if (now - lastMsg > 2000) { lastMsg = now; ++value; snprintf (msg, 75, "hello world #%ld", value); Serial.print("Publish message: "); Serial.println(msg); client.publish("outTopic", msg); } }
En bref, lorsque vous devez transférer des données, elles sont transmises par la fonction de publication ("SmartPowerSocket1 / Current", "2"). Nous transmettons la valeur actuelle égale à 2 perroquets.
Pour recevoir des données d'un courtier, il vous suffit de vous abonner au sujet qui nous intéresse et de vérifier la fonction à partir de laquelle les données sont entrées en les triant dans les variables correspondantes. C’est tout.
Le croquis final s'est avéré assez volumineux, mais il utilise des approches absolument standard pour organiser les échanges sur i2c, 1 fil et travailler avec d'autres entités. Je pense que la personne qui a déjà traité Arduino n'aura pas beaucoup de difficulté à comprendre et à modifier la logique de contrôle pour répondre à leurs besoins, le cas échéant.
EEPROM . L'esquisse a organisé le stockage des paramètres dans l'EEPROM, et en plus de cela, lorsque le serveur MQTT est disponible, ils sont retirés de là lorsque l'appareil démarre.
ArduinoOTA . Même dans l'esquisse, une chose comme
ArduinoOTA (OTA - «over the air», qui peut être traduit par «over the air») saute, c'est-à-dire que le firmware peut être téléchargé via Wifi.
Le lien ci-dessus a une recette pour savoir comment l'utiliser. J'ajouterai que le chargement de cette manière est plusieurs fois plus rapide, mais cela nécessite un traitement spécial pour être intégré dans l'esquisse. La boucle principale ne doit pas être surchargée, sinon il n'y aura pas de connexion entre l'ESP et l'ArduinoIDE. C'est pourquoi il y a tellement de délais d'expiration différents dans l'esquisse et le temps d'un cycle du cycle principal est mesuré. Le plus souvent, ESP vérifie "mais veulent-ils me flasher?" le plus stable tout fonctionne. Autre fonctionnalité que je n'ai pas encore surmontée, ArduinoOTA refuse de flasher sur certains réseaux wifi, bien que tout y réponde. Les chances de réussite sont supérieures si ArduinoIDE et ESP sont connectés par un point d'accès dédié (IoT uniquement).
Boutons. Au début, je voulais créer plus de deux boutons, mais il s'est avéré que le GPIO de l'ESP-12F touchait à sa fin. Jugeant solidement que personne n'appuierait jamais sur ces boutons de toute façon (s'il y a un contrôle via le webmord de la maison intelligente), il a été décidé de le limiter à deux. Liez-les pour réguler le réglage actuel, et si vous appuyez sur les deux à la fois, le relais s'arrête. Après cela, vous ne pouvez l'allumer que si vous redémarrez l'appareil lui-même via l'alimentation ou via un webmord. Ainsi, j'ai essayé d'ajouter un peu de protection contre les commutations imprudentes si le courant dépassait la limite autorisée, car cela pourrait signifier une urgence.
[
Je posterai le croquis au fur et à mesure de ma mise à jour. ]
"Je l'ai fait!"

La mystérieuse boîte noire a commencé à cliquer sur le relais et à émettre, non moins mystérieux, des grincements à haute fréquence silencieux de différentes tonalités dans différents modes de fonctionnement - une fonctionnalité / bug qui est apparu à la suite de l'alimentation, apparemment il y a un étranglement de la musique.
C'est drôle que ce soit lui qui m'a indirectement aidé à saisir les moments du blocage des nœuds individuels. Vous pouvez le regarder avec vos yeux, mais c'est fatigant, entendre en arrière-plan, il est très facile de saisir l'instant où le rythme du son change. Par conséquent, je n'ai pas commencé à calmer cet accélérateur et j'ai même pensé à ajouter une telle fonction à d'autres appareils de débogage.Pendant un certain temps, j'ai réfléchi à la façon de démontrer l'appareil s'il est lui-même une boîte noire ennuyeuse et ne bouge même pas. Essayons de faire du thé en utilisant une chaudière et l'un des capteurs de température, pour une nous calculons la quantité d'énergie qu'il faudra.
Après avoir appuyé sur le bouton qui déverrouille le relais plusieurs fois, rien ne s'est passé, il s'est avéré plus tard que le réglage actuel était très bas et a fonctionné les premières fois.
Lorsque la chaudière s'est un peu réchauffée, le courant a un peu baissé et le relais s'est déverrouillé.
Quand je me suis mis à l'aise, je me suis préparé à attendre longtemps pour faire bouillir l'eau, mais la chaudière chinoise à shaitan a fait bouillir l'eau si rapidement que j'ai à peine réussi à l'éteindre en mode de contrôle manuel. Et le capteur de température s'est avéré pas si agile, et bien que j'aie réglé le réglage à 95 degrés, j'ai peur qu'au moment où il se déclenche, tout soit dans l'eau bouillante, j'ai peur de ne pas vouloir autant de thé.
Au début, j'étais confus par l'inscription sur la chaudière de 500W, mais le courant montre que c'est vrai. Au final, j'avais déjà peur que la partie plastique de la chaudière ne fonde et ne se gâte
"Expérience", mais rien ne s'est passé.
Bien sûr, il serait possible de tourner une vidéo selon le script, mais il me semble que le résultat réel est plus précieux dans les expériences, donc il a montré ce qui s'est passé la première fois sans répétitions. En général, voici un tel baptême comique de prise intelligente de feu.
Il est très facile de calculer l'énergie dépensée sur la base du fait que l'eau a bouilli au bout de 2,5 minutes. et pendant tout ce temps, le courant était d'environ 2,5 A:
(2,5 A * 220 V) / 60 min. * 2,5 min. = 0,023 kWh.Si votre objectif est de conserver un compteur d'électricité, il est bon d'ajouter un autre capteur de tension qui peut être fabriqué à partir d'un transformateur abaisseur, de cette façon, vous pouvez obtenir une isolation galvanique et la tension n'est pas dangereuse pour la mesure à l'aide d'un microcontrôleur ADC. Et vous devez l'ajouter car la tension dans nos prises n'est presque jamais de 220V, mais ± 10V la marche dans le meilleur des cas.
Et une autre option si vous n'avez pas besoin de lectures de courant et de tension par vous-même, et que vous ne devez prendre en compte que la consommation d'électricité - ce sont
des compteurs électriques chinois
simples , ils ont généralement une sortie basse tension pulsée et ils sont très compacts. Dans ce cas, leur utilisation est justifiée.
PS Si vous envisagez vraiment d'assembler une vraie bouilloire Wifi, je vous recommande fortement de calculer l'épaisseur des fils et la puissance du relais car la bouilloire électrique moyenne est très vorace.UPD n ° 1: Dans les commentaires, plusieurs autres appareils ont été proposés, y compris ceux finis:
1. Module prêt à l'emploi pour mesurer les paramètres électriques
PZEM-004T .

2. Modules complets
Sonoff Pow .
3. Module également fini sur
électrodragon esp8266.