
Points clés ou sujet de cet article
Un autre article sur ShIoTiny - un contrôleur visuellement programmable basé sur la puce ESP8266 . L'article décrit les fonctionnalités de connexion de capteurs de différents types aux entrées binaires du contrôleur ShIoTiny . En outre, il existe des réponses à un certain nombre de questions fréquemment posées par les lecteurs d'articles précédents de la série.
Articles de la série précédente
ShIoTiny: petite automatisation, Internet des objets, ou «six mois avant les vacances»
ShIoTiny: nœuds, liens et événements ou caractéristiques des programmes de dessin
ShIoTiny: ventilation de pièce humide (exemple de projet)
Site du projet
Micrologiciel binaire, circuits de contrĂ´leur et documentation
Introduction ou réponses aux questions
Tous mes articles sur le sujet de ShIoTiny , à l'exception du premier, sont nés de questions de lecteurs qui risquaient d'essayer mon firmware.
Le fait est que pour répondre en détail et à tous à la fois - je n'en ai pas l'occasion. Un passe-temps est un passe-temps et il est rare que quiconque y consacre autant de temps que le travail, les tâches ménagères ou les enfants. Moi non plus. Et les questions des lettres peuvent être essentiellement réduites à plusieurs. Par conséquent, il est plus facile d'écrire un article qui couvre plusieurs questions en détail que d'écrire une douzaine de lettres.
De nombreuses questions concernent comment connecter des capteurs de différents types et comment les utiliser. Ce n'est pas surprenant: travailler avec des relais de sortie est assez simple. Et ce qu'ils ne veulent tout simplement pas se connecter aux entrées! Il existe de nombreuses options. Cet article est dédié à cet article et sera très probablement consacré aux sujets suivants: un sujet très large - la connexion des capteurs.
Mais, avant de passer à la biographie du monde merveilleux des capteurs, je vais me permettre d'utiliser le Habr comme média pour répondre aux questions les plus populaires qu'ils me posent par lettres.
Réponses aux questions les plus populaires des lecteurs
La question la plus fréquente est probablement la suivante: « pourquoi ne supportez-vous pas PWM / DS1821 / RTC ... et ainsi de suite? ". Je réponds. Parce que quand j'ai conçu ShIoTiny, je n'en avais pas besoin. Quant au PWM, il n'y a tout simplement nulle part où le mettre sur la carte ShIoTiny . Il n'y a plus de jambes pour connecter RTC . Et ainsi de suite. Mais si le projet se développe assez bien - je ferai un autre appareil avec la même idéologie de programmation, mais avec un ensemble différent de périphériques. Bien sûr, je prendrai en charge des puces supplémentaires dans ShIoTiny, car j'ai pris en charge, par exemple, hier encore le capteur de température DS1820 / 22 . Mais vous ne pouvez pas embrasser l'immensité et pousser le non édité. La mémoire du contrôleur, comme mon temps, n'est pas illimitée.
La prochaine question la plus populaire est: « Prévoyez-vous de produire en masse ShIoTiny? ". Je vais répondre en détail. Pour le moment, j'ai quelques conseils supplémentaires et si quelqu'un est intéressé - écrivez, je vous enverrai. S'ils restent d'ici là , bien sûr. En série (ce qui signifie 50-100 pièces), encore une fois, je n'ai pas l'intention de le publier. Il n'y a tout simplement pas une telle demande, et dire que 50 planches n'est pas si facile pour un passe-temps et me coûtera beaucoup. Il y en aura beaucoup qui voudront obtenir des honoraires prêts - la situation pourrait changer. Si ce n'est pas tout, alors beaucoup dépend de l'opinion et du désir de la société.
Une autre question posée très souvent: « où trouver la source? ". Je réponds. Nulle part ailleurs. Pour une raison quelconque, je ne peux pas encore les publier et je ne sais pas si je le pourrai dans un avenir prévisible.
Et enfin, des questions sur la multidiffusion MQTT et UDP . J'espère faire un article séparé sur ces questions, car il existe de nombreuses fonctionnalités. Quelque chose à propos de MQTT est dans l'article précédent sur le système de ventilation, mais tout y est décrit en termes généraux. Et pourtant - lisez les instructions. Il existe de nombreuses réponses, bien qu'il s'agisse encore d'un brouillon.
Cela se termine par des questions populaires et traite enfin de la raison pour laquelle cet article a été écrit - le monde étonnant, beau, effrayant et mystérieux des capteurs.
Capteur - qu'est-ce que c'est et pourquoi est-ce?
Toute inscription dans une langue inconnue n'est qu'un motif complexe pour quelqu'un qui n'a jamais vu de lettres ou de hiéroglyphes. Il n'y a pas de photos pour les aveugles. Pour les sourds, la musique. Pourquoi suis-je? Et le fait que l' information est un affichage conditionnel d'un objet ou d'un phénomène sur un support matériel. L'information sans support matériel n'existe pas. Ainsi que l'information n'existe pas sans quelqu'un qui est capable de le comprendre.
Par conséquent, si nous voulons que notre ShIoTiny ne soit pas «aveugle», «sourd» et «analphabète» - nous devons lui apprendre à « percevoir » et à « comprendre » les informations sur le monde autour de lui et sur cette base à prendre certaines décisions pour gérer ce qui est nécessaire nous équipement.
Les informations sur le monde existent dans une grande variété de représentations et sur différents supports de matériaux: vibrations de l'air - flux sonore et photonique - lumière; la concentration de vapeur d'eau dans l'air et la température de la terre; la présence ou l'absence de masse et son ampleur. Et ainsi de suite. Tout cela peut nous apporter les informations nécessaires à la prise de décision.
Mais notre microcontrôleur ESP8266 - la base de ShIoTiny - ne comprend que deux types d'informations - les signaux binaires numériques 0V - 3V et les signaux analogiques dans la plage de 0V à 1V .
Par conséquent, nous avons besoin de « traducteurs » de la langue d'un phénomène physique ou d'une quantité physique particulière à la langue de signaux électriques compréhensibles par le microcontrôleur ESP8266 . Ces " traducteurs " sont appelés capteurs .
À strictement parler, dans notre cas, le capteur est un outil technique qui convertit les informations sur le monde environnant en signaux électriques compréhensibles par les composants électroniques du contrôleur ShIoTiny .
Les capteurs sont différents. Il y a des milliers et des ténèbres. Mais si vous commencez à comprendre, alors tout n'est pas si effrayant. Premièrement , nous ne nous intéressons qu'aux capteurs qui génèrent un signal électrique en sortie. Deuxièmement , nous nous limiterons uniquement aux types de capteurs populaires. Et troisièmement , dans la pratique, il n'y a pas autant de types de signaux générés par les capteurs.
Dès le "premier" - tout est clair. Il est physiquement impossible de connecter directement un capteur à ShIoTiny qui fournit des informations sous forme mécanique, hydraulique ou pneumatique.
Avec "deuxièmement" - tout est également clair. Il est peu probable que quiconque connecte des détecteurs de particules rapides ou des pH-mètres spécifiques dans un lithium radioactif fondu à ShIoTiny . Eh bien, si quelqu'un le fait, je pense que ses qualifications sont beaucoup plus élevées que les miennes et il n'aura probablement pas besoin de cet article. Mais la température de l'eau ou de l'air, la pression de l'air ou de l'eau, l'humidité, la lumière, le niveau de liquide ou l'état de la porte (ouverte-fermée) - tout cela peut très bien être mesuré par le contrôleur ShIoTiny dans les systèmes de contrôle domestique.
Nous traiterons du "troisième". Quels signaux électriques sont généralement émis par les types de capteurs courants? On distingue trois principaux types de signaux aux sorties des capteurs:
Signaux binaires Autrement dit, les signaux qui n'ont que deux niveaux - logique 0 ou logique 1. Les paramètres électriques ne sont pas importants - ils peuvent toujours être convertis aux niveaux souhaités.
Signaux analogiques . C'est-à -dire, le courant ou la tension, variant en fonction du paramètre mesuré dans une plage de valeurs donnée.
Signaux numériques . Ce sont des capteurs qui communiquent avec des microcontrôleurs à l'aide d'un protocole spécifique.
Voici peut-être toutes les options qui peuvent être connectées à ShIoTiny . Bien sûr, il existe également des capteurs avec une sortie de fréquence, une sortie de phase et des capteurs avec toutes sortes de signaux de sortie exotiques. Mais comme il est impossible de les connecter directement à ShIoTiny, nous n'en parlerons pas maintenant.
Entrées binaires ShIoTiny
Commençons par le plus simple - avec les entrées binaires ShIoTiny . Ils sont indiqués par Input1 , Input2 et Input3 . Puisque ces entrées sont absolument identiques, nous considérerons l'entrée Input1 . Tout ce qui est dit sur cette entrée est tout aussi vrai pour les deux autres entrées binaires - Input2 et Input3 .
Le circuit d' entrée binaire ShIoTiny est illustré sur la figure. Faites immédiatement une réservation, le circuit avec un petit défaut - il était nécessaire de connecter une résistance 10K à une résistance 1K . Mais cela n'affecte pas le fonctionnement de l'appareil et c'est merveilleux. Alors, pourquoi y a-t-il autant d'éléments dans un circuit d'entrée binaire? Une telle question m'a également été posée. J'essaierai d'y répondre.

L'entrée binaire dans ShIoTiny fonctionne sur les contacts « secs » et « humides ». De plus, le circuit offre une protection contre les surtensions (c'est-à -dire si, par exemple, 5 Volts au lieu de 3 Volts parviennent à Input1 , par exemple).
Protection des entrées binaires
La protection contre les surtensions , qui est effectuée sur toutes les entrées binaires de ShIoTiny , ne sauvera bien sûr pas le contrôleur de l'épuisement si une tension de ~ 220V est appliquée à son entrée. Mais de l'accès aux entrées Input1,2,3 + 5V ou même + 12V - cette protection sauve complètement.
Cette protection fonctionne très simplement et peut être appliquée non seulement avec l' ESP8266 , mais aussi avec d'autres microcontrôleurs.
Considérez deux options pour la protection: lors de l'application d' une tension de + 5V et -5V au fil neutre ( masse ) à l'entrée Input1 .
Lorsque la tension à l'entrée Input1 est normale, les diodes de protection D1 et D2 sont fermées, car elles sont allumées dans le sens opposé.
Dès que la tension à Input1 dépasse + 3V (par exemple, nous avons court-circuité Input1 à + 5V ), la diode D1 s'ouvre et tire l'entrée du contrôleur GPIO à + 3V , empêchant la tension au GPIO ESP8266 de dépasser 3V . En fait, la tension sera légèrement supérieure à 3 V (3,2 V ou 3,3 V ) - mais ce n'est pas important. L'entrée du microcontrôleur ne brûle pas et c'est important.
Dès que la tension à l'entrée 1 devient négative (par exemple, nous avons court-circuité l'entrée à -5 V ), la diode D2 s'ouvre et tire l'entrée 1 à la masse 0 V , sans laisser la tension à l'entrée GPIO ESP8266 descendre en dessous de 0 V. En fait, la tension sera légèrement inférieure à 0 V (-0,2 V ou -0,3 V) - mais ce n'est encore une fois pas important. L'entrée du microcontrôleur ne brûle pas.
La résistance 1K est un limiteur de courant pour qu'il n'y ait pas de court-circuit pendant le fonctionnement de la protection. Les courants qui le traversent sont faibles. Par exemple, dans notre exemple, si nous appliquons Input1 + 5V à l'entrée, le courant à travers la résistance 1K sera d'environ 2mA . Avec une tension négative de -5V à l'entrée Input1, le courant à travers la résistance 1K sera d'environ 5mA .
Si quelqu'un ne comprend pas pourquoi les diodes s'ouvrent et se ferment, je recommande de lire le livre "Electronics Step by Step" de R. A. Svorenya . Sur Internet, c'est par exemple ici . Je conseille particulièrement les débutants - le langage de ce livre est simple et il y a plein d'exemples.
Quels sont les contacts
Donc, avec la protection triée. Passons à un autre problème fondamental - la connexion de l'entrée binaire ShIoTiny aux capteurs binaires.
Comme nous l'avons déjà dit, les capteurs binaires sont des capteurs dont la sortie a deux états - zéro et un. Mais c'est logique. Et physiquement, il peut y avoir deux options pour les sorties du capteur binaire: « contact sec » et « contact humide ». Considérez ce que c'est et avec quoi il est mangé.
Un « contact sec » est un contact qui n'a pas sa propre source de tension. Autrement dit, juste deux conducteurs métalliques qui peuvent être court-circuités ensemble et les ouvrir. Cette définition inclut la masse des capteurs - boutons, interrupteurs, capteurs à flotteur pour le niveau de liquide, interrupteurs à lames (capteurs de champ magnétique), etc. Sur les circuits électriques, les « contacts secs » normalement ouverts sont généralement indiqués comme indiqué sur la figure.

Normalement ouvert - cela signifie ouvert lorsqu'il n'y a pas d'influence extérieure - le bouton n'est pas enfoncé, l'interrupteur n'est pas activé, l'interrupteur à lames n'a pas d'aimant à proximité ...
Il existe également des « contacts secs » normalement fermés . Sur les circuits électriques, ils sont généralement indiqués comme indiqué sur la figure.

Contrairement aux contacts secs normalement ouverts, normalement fermés, en l'absence d'influences externes, ils sont fermés.
Ces deux contacts et d'autres " contacts secs " peuvent être connectés en toute sécurité aux entrées du contrôleur Input1,2,3 ShIoTiny . Les capteurs avec une sortie de type contact sec sont connectés aux entrées binaires ShIoTiny comme indiqué sur la figure.

Si le « contact sec » de l'entrée 1 est fermé, alors une tension d'environ zéro volt est appliquée à l'entrée du contrôleur (plus précisément, 0,3 volt en raison d'une erreur dans le circuit), car le « contact sec » ferme l'entrée du contrôleur à la terre via un diviseur formé de résistances 1K et 10K . Dans ce cas, le nœud Input1 définira l'unité en sortie.
Inversement, si le contact sec de Input1 est ouvert, alors environ trois volts sont fournis à l'entrée du contrôleur, puisque l'entrée du contrôleur est tirée à la tension d'alimentation via une résistance de 10K . Dans ce cas, le nœud Input1 mettra zéro à sa sortie.
Toute cette description détaillée est destinée aux curieux. En fin de compte, nous avons ce qui suit: si nous avons connecté un capteur avec une sortie de type « contact sec » à l' entrée1 , alors lorsque le contact est ouvert, la sortie du nœud Input1 sera nulle, et lorsque le contact est fermé, la sortie du même nœud sera un. De même pour les entrées et les nœuds Input2 et Input3 .
Passons aux contacts humides .
Un « contact humide » est un contact qui a sa propre source de tension dans au moins une de ses positions. Par exemple, la sortie d'un autre contrôleur ou circuit logique; ampoule ligne électrique et ainsi de suite. Il peut y avoir beaucoup d'options ici. Mais presque tous, directement ou à l'aide de plusieurs détails, permettent de faire correspondre les entrées binaires Input1,2,3 avec la sortie de l'appareil - « contact humide ».
Commençons par le plus simple - faire correspondre l'entrée Input1 avec la sortie du capteur ou du type de microcircuit " collecteur ouvert " ou " drain ouvert ".
En fait, dans notre cas , ce circuit est complètement analogue à la connexion d'un capteur avec une sortie à contact sec . Seul le rôle du contact est assuré par le transistor.
Le schéma de cette connexion est illustré dans la figure. L'essence du concept de " collecteur ouvert " ou " drain ouvert " est que l' émetteur (ou la source ) du transistor de sortie est connecté à la " masse " (souvent juste à l'intérieur du microcircuit), et le collecteur (ou drain ) est connecté à la "jambe" du microcircuit et plus encore. à rien.
Le fonctionnement de ce schéma est compréhensible pour un novice (pas un gaz imaginaire, mais une personne!). Dès que le transistor à l'intérieur du microcircuit s'ouvre, il ferme l'entrée Input1 à la masse puis tout fonctionne par analogie avec un contact « sec ».

Malheureusement, toutes les micropuces et capteurs n'ont pas une sortie aussi merveilleuse avec un collecteur ouvert ou un drain. Beaucoup, sinon la plupart des puces et capteurs ont une sortie active. Cela signifie que lorsque nous avons une unité logique à la sortie, la sortie est «remontée» à la tension d'alimentation, et lorsqu'un zéro logique, la sortie est «remontée» à la masse. La sortie d'une telle puce est illustrée dans la figure ci-dessous. Bien sûr, tout est simplifié.

Que devons-nous faire si le microcircuit ou le capteur que nous voulons connecter Ă Input1 a une telle sortie active?
Il y a deux options ici et elles dépendent de la valeur de la tension d'alimentation du microcircuit ou du capteur Vcc .
Si la tension d'alimentation de la puce ou du capteur Vcc est la même que celle de l' ESP8266 (c'est-à -dire 3 Volts), vous pouvez simplement connecter cette sortie à l'entrée Input1 , qui est en fait illustrée dans la figure précédente.
Mais que faire si l'alimentation du capteur ou du microcircuit est de + 5V ou + 12V ? Dans notre cas, vous pouvez le faire tout simplement en allumant la diode Schottky, comme indiqué dans la figure ci-dessous.

Et encore une nuance: tous les circuits avec un contact « humide » nous donnent un signal inverse . Autrement dit, lorsque l'unité logique est à la sortie du capteur ou du microcircuit, le nœud Input1 mettra la sortie à zéro. Et vice versa. Mais cela est corrigé par programme - il suffit d'insérer le nœud de l'onduleur dans le circuit. Tout cela est illustré dans la figure.

En fait, c'est tout ce que vous devez savoir sur la connexion des capteurs aux entrées binaires Input1,2,3 .
Bien sûr, théoriquement, il peut y avoir d'autres options, mais j'ai montré les moyens les plus simples et les plus courants de connecter des capteurs avec des sorties à contact sec et des sorties actives basse tension.
Sensation de contact
Les contacts tremblent. Pas par crainte du créateur de l'appareil, mais par le fait qu'ils sont résistants. Lorsque vous appuyez sur le bouton, les contacts peuvent se fermer de 5 à 7 fois avant d'être fermés de manière stable. Le même phénomène se produit lorsque les boutons sont relâchés. Et ce phénomène est appelé - « rebond des contacts ».
Le rebond de contact est la malédiction de tous les capteurs de contact mécaniques - interrupteurs, boutons, interrupteurs à lames et ainsi de suite. Le bavardage désagréable est qu'il provoque de faux clics ou de fausses relâchements d'un bouton ou d'un contact.
Il existe plusieurs façons de faire face à ce phénomène désagréable. Le déclencheur est probablement la façon la plus ancienne de se battre. Avec cette méthode, un bouton avec un contact de commutation et un déclencheur RS normal sont utilisés, qui sont activés selon le schéma, comme indiqué sur la figure.

Comment ça marche? Très simple. Un déclencheur a deux états. Alors que le bouton est fermé sur l'entrée R du déclencheur, la sortie Q du déclencheur est mise à zéro.
Nous avons appuyé sur le bouton - jusqu'à ce que le contact central du bouton touche le bas - rien ne change, la sortie de la gâchette est nulle. Dès que le contact central du bouton a touché le contact inférieur du même bouton et fermé l'entrée du déclencheur S à la masse, on apparaît à la sortie du déclencheur. Et cette unité reste alors que les contacts "cliquettent". En effet, pour remettre la sortie de déclenchement à zéro, il faut que l'entrée de déclenchement R soit court-circuitée à la masse! Ce schéma fonctionne exactement de la même manière lorsque vous relâchez le bouton.
Pouvons-nous faire un tel circuit sur ShIoTiny ? Oui, pas de problème! Sur la figure, il est illustré.

Mais passer deux de leurs trois entrées sur un capteur?! De plus, tous les capteurs n'ont pas de contact de commutation!
Non, nous irons dans l'autre sens, comme légué, à tout l'ingénieux théoricien V.I. Ulyanov!
La deuxième manière, et probablement la plus courante aujourd'hui, de gérer le rebond de contact est un filtre logiciel .
Qu'est-ce qui se cache derrière ces mots intelligents? Et encore une fois - rien de compliqué. Imaginez que nous ne répondions pas aux «courts» changements d'état des contacts. Par exemple, si nous lisons zéro sur le bouton, puis pour de courtes (par exemple, la durée est inférieure à 0,3 sec) des rafales unitaires, nous nous martelons arrête de réagir. Et ce n'est que lorsque nous aurons un bouton pendant 0,3 seconde que nous émettrons continuellement une unité - nous y répondrons. .
— , . . RS-!
? ShIoTiny -, .

Delay0/1 , 0.4 .
, . , , .
Conclusion
En conclusion, je voudrais m'excuser auprès de ceux à qui cet article semblait inutilement détaillé - rappelez-vous qu'il y a beaucoup de gens sur le hub qui ne sont pas aussi sages que vous.
Dans le prochain article, nous examinerons la connexion de capteurs avec un signal de sortie analogique à l'entrée ADC .
Comme toujours, suggestions, souhaits, questions, fautes de frappe, etc., par e-mail: shiotiny@yandex.ru