
Pontos principais ou sobre o que é este artigo
Outro artigo sobre o ShIoTiny - um controlador visualmente programável baseado no chip ESP8266 . O artigo descreve os recursos de conexão de sensores de vários tipos às entradas binárias do controlador ShIoTiny . Além disso, há respostas para várias perguntas populares de leitores de artigos anteriores da série.
Artigos anteriores da série
ShIoTiny: pequena automação, a Internet das coisas ou "seis meses antes das férias"
ShIoTiny: nós, links e eventos ou recursos de programas de desenho
ShIoTiny: ventilação em salas úmidas (exemplo de projeto)
Site do projeto
Firmware binário, circuitos do controlador e documentação
Introdução ou respostas a perguntas
Todos os meus artigos sobre o ShIoTiny , exceto o primeiro, nasceram de perguntas de leitores que se arriscaram a experimentar o meu firmware.
O fato é que, para responder em detalhes e de uma só vez - eu não tenho a oportunidade. Um hobby é um hobby e é raro alguém dedicar tanto tempo a ele como trabalho, tarefas domésticas ou crianças. Nem eu. E as perguntas das cartas podem ser essencialmente reduzidas a várias. Portanto, é mais fácil escrever um artigo que cobre várias questões em detalhes do que escrever uma dúzia de cartas.
Muitas perguntas dizem respeito a como conectar sensores de vários tipos e como trabalhar com eles. Isso não é surpreendente: trabalhar com relés de saída é bastante simples. E o que eles simplesmente não querem se conectar às entradas! Existem muitas opções. Este artigo é dedicado a este artigo e provavelmente será dedicado ao seguinte: um tópico muito amplo - a conexão de sensores.
Mas, antes de passar à biografia do maravilhoso mundo dos sensores, permitirei que eu use o Habr como uma mídia para responder às perguntas mais populares que eles me fazem em cartas.
Respostas às perguntas mais populares dos leitores
Provavelmente, a pergunta mais popular é " por que você não suporta PWM / DS1821 / RTC ... e assim por diante? " Eu respondo. Porque quando eu projetei o ShIoTiny, não precisava. Quanto ao PWM, simplesmente não há lugar para colocá-lo na placa ShIoTiny . Não há pernas para conectar o RTC . E assim por diante Mas se o projeto se desenvolver com sucesso o suficiente - farei outro dispositivo com a mesma ideologia de programação, mas com um conjunto diferente de periféricos. Obviamente, suportarei alguns chips adicionais no ShIoTiny, como apoiei, por exemplo, ontem o sensor de temperatura DS1820 / 22 . Mas você não pode abraçar a imensidão e empurrar os inéditos. A memória do controlador, como o meu tempo, não é ilimitada.
A próxima pergunta mais popular é: “ Você planeja produzir em massa ShIoTiny? " Eu responderei em detalhes. No momento eu tenho mais algumas placas e se alguém estiver interessado - escreva, eu enviarei. Se eles permanecerem até lá, é claro. Em série (ou seja, 50 a 100 peças), novamente, no momento não pretendo liberá-lo. Simplesmente não existe essa demanda, e deixar dizer que 50 placas não é tão fácil para um hobby e vai me custar muito. Muitos vão querer receber uma taxa pronta - a situação pode mudar. Então, se não tudo, depende muito da opinião e desejo da sociedade.
Outra pergunta feita com muita frequência: “ onde conseguir a fonte? " Eu respondo. Em nenhum outro lugar. Por alguma razão, ainda não posso publicá-las e não sei se posso no futuro próximo.
E, finalmente, perguntas sobre multicast MQTT e UDP . Espero fazer um artigo separado sobre essas questões, porque há muitos recursos. Algo sobre o MQTT está no artigo anterior sobre o sistema de ventilação, mas tudo é descrito lá em termos gerais. E ainda - leia as instruções. Existem muitas respostas, embora este ainda seja um rascunho.
Isso termina com perguntas populares e finalmente lida com o que este artigo foi escrito - o mundo incrível, bonito, assustador e misterioso dos sensores.
Sensor - o que é e por que é?
Qualquer inscrição em um idioma desconhecido é apenas um padrão complexo para alguém que nunca viu letras ou hieróglifos. Não há fotos para cegos. Para os surdos, música. Por que eu estou? E o fato de que a informação é uma exibição condicional de um objeto ou fenômeno em algum meio material. Informações sem um meio material não existe. Assim como a informação não existe sem alguém capaz de entendê-la.
Portanto, se queremos que nosso ShIoTiny não seja "cego", "surdo" e "analfabeto" - devemos ensiná-lo a " perceber " e " entender " as informações sobre o mundo ao seu redor e, com base nisso, tomar certas decisões para gerenciar o que é necessário nos equipamentos.
As informações sobre o mundo existem em uma ampla variedade de representações e em vários suportes de materiais: vibrações do ar - fluxo de som e fóton - luz; a concentração de vapor de água no ar e a temperatura da terra; a presença ou ausência de massa e sua magnitude. E assim por diante Tudo isso pode levar para nós as informações necessárias para a tomada de decisões.
Mas nosso microcontrolador ESP8266 - a base do ShIoTiny - compreende apenas dois tipos de informações - sinais binários digitais 0V - 3V e sinais analógicos na faixa de 0V a 1V .
Portanto, precisamos de " tradutores " do idioma de um fenômeno físico específico ou quantidade física para o idioma dos sinais elétricos que sejam compreensíveis para o microcontrolador ESP8266 . Esses " tradutores " são chamados sensores .
A rigor, no nosso caso, o sensor é uma ferramenta técnica que converte informações sobre o mundo circundante em sinais elétricos que são compreensíveis para os componentes eletrônicos do controlador ShIoTiny .
Sensores são diferentes. Existem milhares e trevas. Mas se você começar a entender, tudo não é tão assustador. Em primeiro lugar , estamos interessados apenas em sensores que geram um sinal elétrico na saída. Em segundo lugar , nos limitaremos apenas a tipos populares de sensores. E terceiro , na prática, não existem tantos tipos de sinais gerados pelos sensores.
Desde o "primeiro" - tudo está claro. É fisicamente impossível conectar um sensor diretamente ao ShIoTiny que forneça informações na forma mecânica, hidráulica ou pneumática.
Com "em segundo lugar" - tudo também está claro. É improvável que alguém conecte detectores rápidos específicos de partículas ou medidores de pH em um lítio radioativo fundido ao ShIoTiny . Bem, se alguém tiver, acho que as qualificações dele são muito mais altas que as minhas e ele provavelmente não precisará deste artigo. Mas a temperatura da água ou do ar, a pressão do ar ou da água, a umidade, a luz, o nível do líquido ou a condição da porta (aberta / fechada) - tudo isso pode muito bem ser medido pelo controlador ShIoTiny nos sistemas de controle doméstico.
Nós vamos lidar com o "terceiro". Quais sinais elétricos são geralmente emitidos por tipos comuns de sensores? Podem ser distinguidos três tipos principais de sinais nas saídas dos sensores:
Sinais binários Ou seja, sinais que possuem apenas dois níveis - lógico 0 ou lógico 1. Os parâmetros elétricos não são importantes - eles sempre podem ser convertidos nos níveis desejados.
Sinais analógicos . Ou seja, corrente ou tensão, variando dependendo do parâmetro medido em um determinado intervalo de valores.
Sinais digitais . Estes são sensores que se comunicam com microcontroladores usando um protocolo específico.
Aqui, talvez, estejam todas as opções que podem ser conectadas ao ShIoTiny . Obviamente, também existem sensores com saída de frequência, saída de fase e sensores com todos os tipos de sinais de saída exóticos. Mas como é impossível conectá-los diretamente ao ShIoTiny, não falaremos sobre eles agora.
Entradas binárias ShIoTiny
Vamos começar com o mais simples - com as entradas binárias ShIoTiny . Eles são indicados pelas entradas1 , entrada2 e entrada3 . Como essas entradas são absolutamente idênticas, consideraremos a entrada Input1 . Tudo o que é dito sobre esta entrada é igualmente verdadeiro para as outras duas entradas binárias - Entrada2 e Entrada3 .
O circuito de entrada binária ShIoTiny é mostrado na figura. Faça imediatamente uma reserva, o circuito com uma pequena falha - era necessário conectar um resistor de 10K a um resistor de 1K . Mas isso não afeta a operação do dispositivo e é maravilhoso. Então, por que existem tantos elementos em um circuito de entrada binário? Essa pergunta também foi feita para mim. Vou tentar responder.

A entrada binária no ShIoTiny funciona em contatos " secos " e " úmidos ". Além disso, o circuito fornece proteção contra sobretensão (ou seja, se, por exemplo, 5 Volts em vez de 3 Volts chegar à Entrada1 , por exemplo).
Proteção de entrada binária
A proteção contra sobretensão , que é feita em todas as entradas binárias do ShIoTiny , obviamente não salvará o controlador do burnout, se uma tensão de ~ 220V for aplicada à sua entrada. Mas, desde as entradas Input1,2,3 + 5V ou até + 12V - essa proteção economiza completamente.
Essa proteção funciona de maneira muito simples e pode ser aplicada não apenas com o ESP8266 , mas também com outros microcontroladores.
Considere duas opções para a proteção: ao aplicar tensão de + 5V e -5V ao fio neutro ( terra ) à entrada da Entrada1 .
Quando a tensão na entrada Entrada1 é normal, os diodos de proteção D1 e D2 são fechados, pois são ligados na direção oposta.
Assim que a tensão na entrada1 exceder + 3V (por exemplo, reduzimos a entrada1 a + 5V ), o diodo D1 abre e puxa a entrada do controlador GPIO para +3V , impedindo que a tensão no GPIO ESP8266 suba acima de 3V . Na verdade, a tensão será ligeiramente superior a 3V (3,2V ou 3,3V) - mas isso não é importante. A entrada do microcontrolador não queima e isso é importante.
Assim que a tensão na Entrada1 se tornar negativa (por exemplo, colocamos a entrada em curto-circuito em -5V ), o diodo D2 se abre e puxa a Entrada1 para o terra 0V , não deixando a tensão na entrada GPIO ESP8266 cair abaixo de 0V . Na verdade, a tensão será ligeiramente menor que 0V (-0,2V ou -0,3V) - mas isso também não é importante. A entrada do microcontrolador não queima.
O resistor 1K é um limitador de corrente para que não haja curto-circuito durante a operação de proteção. As correntes através dele são pequenas. Por exemplo, em nosso exemplo, se aplicarmos Entrada1 + 5V à entrada, a corrente através do resistor de 1K será de cerca de 2mA . Com uma tensão negativa de -5V na entrada Input1, a corrente através do resistor de 1K será de cerca de 5mA .
Se alguém não entender por que os diodos abrem e fecham, recomendo a leitura do livro "Electronics Step by Step", de R. A. Svorenya . Na Internet, é, por exemplo, aqui . Aconselho especialmente os iniciantes - o idioma deste livro é simples e há muitos exemplos.
Quais são os contatos
Então, com a proteção resolvida. Vamos para outra questão fundamental - conectar a entrada binária ShIoTiny a sensores binários.
Como já dissemos, sensores binários são sensores cuja saída possui dois estados - zero e um. Mas isso é lógico. E fisicamente pode haver duas opções para as saídas binárias do sensor: " contato seco " e " contato úmido ". Considere o que é e com o que é comido.
Um " contato seco " é um contato que não possui sua própria fonte de tensão. Ou seja, apenas dois condutores de metal que podem ser colocados em curto e abri-los. Esta definição inclui a massa de sensores - botões, interruptores, sensores de flutuação para nível de líquido, interruptores de palheta (sensores de campo magnético) e assim por diante. Nos circuitos elétricos, os " contatos secos " normalmente abertos são geralmente indicados como mostrado na figura.

Normalmente aberto - significa aberto quando não há influência externa - o botão não é pressionado, o interruptor não está ligado, o interruptor reed não possui um ímã por perto ...
Também existem “ contatos secos ” normalmente fechados . Nos circuitos elétricos, eles geralmente são indicados como mostrado na figura.

Ao contrário dos " contatos secos " normalmente abertos, normalmente fechados, na ausência de influências externas, são fechados.
Esses e outros " contatos secos " podem ser conectados com segurança às entradas Sh1oTiny do controlador Input1,2,3 . Sensores com saída do tipo contato seco são conectados às entradas binárias ShIoTiny, como mostrado na figura.

Se o " contato seco " da Entrada1 for fechado, a tensão de aproximadamente zero volt será aplicada à entrada do controlador (mais precisamente, 0,3 Volts devido a um erro no circuito), uma vez que o " contato seco " fecha a entrada do controlador para aterrar através de um divisor formado por resistências de 1K e 10K . Nesse caso, o nó Input1 configurará a unidade para saída.
Por outro lado, se o contato seco da Entrada1 estiver aberto, aproximadamente três volts serão fornecidos à entrada do controlador, uma vez que a entrada do controlador é puxada para a tensão de alimentação através de um resistor de 10K . Nesse caso, o nó Input1 definirá zero em sua saída.
Toda esta descrição detalhada é para os curiosos. Na linha inferior, temos o seguinte: se conectarmos um sensor com uma saída do tipo “ contato seco ” à entrada1 , quando o contato estiver aberto, a saída do nó Input1 será zero e, quando o contato for fechado, a saída do mesmo nó será uma. Da mesma forma para entradas e nós Input2 e Input3 .
Vamos para contatos molhados .
Um " contato úmido " é um contato que possui sua própria fonte de tensão em pelo menos uma de suas posições. Por exemplo, a saída de outro controlador ou circuito lógico; linha de energia da lâmpada e assim por diante. Pode haver muitas opções aqui. Mas quase todos eles diretamente ou com a ajuda de vários detalhes permitem a entrada das entradas binárias Input1,2,3 com a saída do dispositivo - “ contato molhado ”.
Vamos começar com o mais simples: combinar a entrada Input1 com a saída do sensor ou microcircuito do tipo " coletor aberto " ou " dreno aberto ".
De fato, no nosso caso , esse circuito é completamente análogo à conexão de um sensor com uma saída de contato seco . Somente a função do contato é realizada pelo transistor.
O esquema dessa conexão é mostrado na figura. A essência do conceito de “ coletor aberto ” ou “ dreno aberto ” é que o emissor (ou fonte ) do transistor de saída está conectado ao “ terra ” (geralmente dentro do microcircuito) e o coletor (ou dreno ) está conectado à “perna” do microcircuito e mais para nada.
Como esse esquema funciona é compreensível para um iniciante (não um gás imaginário, mas uma pessoa!). Assim que o transistor dentro do microcircuito é aberto, ele fecha a entrada Input1 para o aterramento e tudo funciona por analogia com um contato " seco ".

Infelizmente, nem todos os microchips e sensores têm uma saída tão maravilhosa com um coletor ou dreno aberto. Muitos, se não a maioria dos chips e sensores, têm uma saída ativa. Isso significa que, quando temos uma unidade lógica na saída, a saída é "puxada" para a tensão de alimentação e, quando um zero lógico, a saída é "puxada" para o chão. A saída desse chip é mostrada na figura abaixo. Claro, tudo é simplificado.

O que devemos fazer se o microcircuito ou sensor que queremos conectar à Entrada1 tiver uma saída tão ativa?
Existem duas opções aqui e elas dependem do valor da tensão de alimentação do microcircuito ou do sensor Vcc .
Se a tensão de alimentação do chip ou do sensor Vcc for a mesma do ESP8266 (ou seja, 3 Volts), você poderá simplesmente conectar essa saída à entrada Input1 , que é realmente mostrada na figura anterior.
Mas e se a fonte de alimentação do sensor ou do microcircuito for + 5V ou + 12V ? No nosso caso, você pode fazer isso simplesmente ativando o diodo Schottky, como mostra a figura abaixo.

E mais uma nuance: todos os circuitos com um contato " úmido " nos dão um sinal inverso . Ou seja, quando a unidade lógica estiver na saída do sensor ou microcircuito, o nó Input1 definirá a saída como zero. E vice-versa. Mas isso é corrigido programaticamente - basta inserir o nó do inversor no circuito. Tudo isso é mostrado na figura.

Na verdade, isso é tudo que você precisa saber sobre como conectar sensores às entradas binárias Input1,2,3 .
Obviamente, teoricamente, pode haver outras opções, mas mostrei as maneiras mais simples e comuns de conectar sensores a saídas como " contato seco " e saídas ativas de baixa tensão.
Emoção de contato
Contatos tremem. Não por medo do criador do dispositivo, mas pelo fato de serem resilientes. Quando você pressiona o botão, os contatos podem abrir de 5 a 7 vezes antes de serem fechados de forma estável. O mesmo fenômeno ocorre quando os botões são liberados. E esse fenômeno é chamado - " rejeição de contatos ".
O ressalto de contato é a maldição de todos os sensores de contato mecânicos - interruptores, botões, interruptores de palheta e assim por diante. A conversa desagradável é que causa cliques falsos ou lançamentos falsos de um botão ou contato.
Existem várias maneiras de lidar com esse fenômeno desagradável. Provavelmente, a maneira mais antiga de lutar é o gatilho . Com este método, é usado um botão com um contato de comutação e um acionador RS normal, que são ativados de acordo com o esquema, conforme mostrado na figura.

Como isso funciona? Muito simples Um gatilho tem dois estados. Enquanto o botão está fechado para a entrada R do gatilho, a saída Q do gatilho é ajustada para zero.
Pressionamos o botão - até o contato do meio tocar o fundo - nada muda, a saída do gatilho é zero. Assim que o contato do meio do botão tocou o contato inferior do mesmo botão e fechou a entrada do gatilho S no terra, um aparece na saída do gatilho. E esta unidade permanece enquanto os contatos "chocalham". De fato, para voltar a zero a saída do gatilho, é necessário que a entrada R do gatilho seja encurtada! Este esquema funciona exatamente da mesma maneira quando você solta o botão.
Podemos fazer um circuito assim no ShIoTiny ? Sim, não tem problema! Na figura, é mostrado.

Mas gaste duas de suas três entradas em um sensor ?! Além disso, nem todos os sensores têm um contato de comutação!
Não, seguiremos o outro caminho, como legado, a todos os engenhosos teóricos V.I. Ulyanov!
A segunda, e provavelmente a mais comum hoje, a maneira de lidar com o ressalto de contato é um filtro de software .
O que está por trás dessas palavras inteligentes? E novamente - nada complicado. Imagine que não responderemos a mudanças "curtas" no estado dos contatos. Por exemplo, se lermos zero a partir do botão, em breves unidades (digamos, a duração é inferior a 0,3 segundos), vamos martelar pare de reagir. E somente quando tivermos um botão por 0,3 segundos emitiremos uma unidade continuamente - responderemos a isso. A mesma coisa ao alterar o estado de um botão de um para zero.
— , . . RS-!
? ShIoTiny -, .

Delay0/1 , 0.4 .
, . , , .
Conclusão
, — , , .
.
, , , , — : shiotiny@yandex.ru