Desenvolvimento de dispositivos IOT no Arduino usando o serviço MyDevices Cayenne. Blynk: Fácil de Controle Fácil e Arduino Cloud Services para Controle Arduino

Sessões - purificar nas fileiras de piscas!
Hoje, vamos configurar o gerenciamento do ESP8266 em 5 minutos do seu smartphone (iOS ou Android) usando o novo serviço Blink Cloud. Vídeo e detalhes sob o corte.


Instale o aplicativo blynk no smartphone

Registre-se no Apêndice e crie um novo projeto.

Digite o nome do projeto, por exemplo ESP8266.. No campo Modelo de hardware. Escolher ESP8266.. (Espero que você notará a impressionante lista de equipamentos suportados) gerados automaticamente Token de autenticação. Enviar para sua caixa de correio.

Depois de pressionar o botão Crio. Você estará disponível um campo vazio para projetar a interface do usuário do seu painel de controle ESP8266.

Clique na mais na parte superior à direita - a barra de ferramentas aparecerá Caixa de widgets. Para adicionar widgets ao seu painel de controle. Vale a pena notar que a lista de widgets ainda será reabastecida.

Para amostra, escolha o tipo de widget Botão. - Este widget é imediatamente adicionado ao seu painel. Edite com um toque. O nome não pode ser preenchido, apenas certo você pode escolher a cor do indicador, no campo PIN de saída. Escolha para a direita Digital.e deixou qualquer pino livre Gpio.. Abaixo, ligue o tipo de botão para Interruptor.

Em seguida, defina a biblioteca Blynk em Arduino IDE. Isso ajudará as instruções oficiais. Você também pode levar a biblioteca Última versão Direito do repositório e definido manualmente. Em seguida, escolha um exemplo Esp8266_standalone. e prescrever nele Token de autenticação.que chegamos pelo correio SSID e senha vocês Rede WiFi.. Complete e despeje o esboço no ESP8266.

Coisa maravilhosa - ESP8266. Presenttor muito poderoso, muita memória, controlador wifi embutido. ESP32, claro, ainda melhor, mas também é mais caro. Mas não é sobre eles agora. Mais precisamente, não exatamente sobre eles. No ESP é muito fácil construir quase qualquer automação residencial e com controle remoto e controle de um smartphone ou computador. Um exemplo de tal dispositivo está neste site. Um problema - para trabalhar com tal dispositivo não só de rede domésticae de qualquer lugar do planeta (onde há acesso à Internet, é claro), um determinado servidor é necessário - um mediador que receberá mensagens do dispositivo e transferi-los para você e vice-versa. Claro, existem opções e comunicação direta, mas eu não vou considerá-los aqui por causa da complexidade da implementação ou alto custo.

A lista dada neste artigo não reivindica plenitude e ainda mais em exclusividade, eu tentei analisar e estruturar as possibilidades de certos serviços gratuitos. Primeiro de tudo, por si mesmo, mas se for útil para qualquer outra pessoa - use em saúde. Quando eu estava procurando por um servidor mqtt público para mim, concedeu muitos recursos da Internet. Eu estava procurando em primeiro lugar em ESP8266.ru, mas, infelizmente, há metade dos serviços ou nenhum trabalho ou não mais adequado para mim para um ou outro parâmetros. Tudo o que é escrito aqui é o primeiro de toda a minha experiência pessoal, sua experiência com esses serviços pode ser completamente diferente. Se você conhece algum outro serviço, escreva nos comentários ou email (e-mail e outros contatos estão no canto superior direito das caps do site), e tentarei verificar e adicionar uma lista.

Corretores mqtt.

O protocolo MQTT é talvez a primeira coisa que você compra nos mecanismos de busca quando estiver procurando por uma maneira controle remoto várias "peças inteligentes". Eu não posso atestar que este é o protocolo mais fácil (eu não tenho nada a comparar com algo, de alguma forma parei para ele imediatamente), mas meu pessoalmente ele não causou dificuldades. Exemplos - muito. Bibliotecas prontas para Arduino IDE também não estão sozinhas, como dizem "escolher o sabor". Aplicativos móveis são suficientes para escolher tanto para um smartphone, quanto para um painel de controle feito de um tablet antigo. Portanto, esta é provavelmente a opção mais popular para implementar o controle remoto. Servidores de nuvem também são muito, eles são chamados de corretores mqtt. Não considero o princípio da operação do protocolo e dos servidores aqui, esta informação é o suficiente em outros sites.

Cloudmqtt.com.

Eu comecei deste serviço. Só porque quase todos os exemplos de trabalhar com o protocolo MQTT são baseados nele. O serviço é bastante conveniente e simples, tudo é intuitivo. Em 2018, o serviço permitido gratuitamente plano Tarifário Conectando até 10 dispositivos que foi bastante satisfeito. No entanto, até o final de 2018, os proprietários de serviços revisaram suas políticas e no plano tarifário gratuito "Cat" agora apenas 5 conexões estão disponíveis. Para mim pessoalmente, isso é muito pequeno. Eu posso conectar simultaneamente três dispositivos "controle" - dois smartphones e um tablet, e apenas duas conexões permanecem para o próprio ESP. E eu já tenho muitos carros automáticos diferentes, e ainda é planejado. Claro, você pode abordar vários casos de corretores dentro de um contaEmbora tenham introduzido recentemente restrições. Mas, neste caso, três dispositivos de controle ainda irão "enviar e-mail" três conexões para cada instância e soy, tal economia - e o inimigo não deseja. O plano de carga pago mais barato "Humble Hedgehog" fica no momento da escrita 5 $ por mês. Não, eu sou um muito famoso anfíbio para pagar esse dinheiro todo mês. Sim, e as possibilidades não são tão inteligentes - 25 conexões. Portanto, tive que procurar outras opções.

prós: conveniente e fácil

Minuses.: Apenas 5 conexões em um plano tarifário gratuito

flespi.io.

Por muito tempo eu usei o corretor mqtt.flespi.io. Ele me atraiu pelo fato de que no momento em que comecei a trabalhar com ele, ele admitiu tanto quanto 100 conexões concorrentes simultaneamente e enormes quantidades de mensagens transmitidas e salvas. Linda! No entanto, o serviço não é tão conveniente quanto o CloudMQtt. O painel de controle não é muito conveniente (embora seja melhorado), a configuração dos direitos de acesso não é clara à primeira vista, autorização e dispositivos, e smartphones de token com um período limitado. Não há funções de algumas funções, ou não achei como usar. Por exemplo, como excluir mensagens salvas (retidas) da base - eu nunca encontrei. Estritamente falando, este não é apenas um corretor mqtt, então talvez eu não tenha entendido todas as suas capacidades. Às vezes em smartphones diferentes. Limpa as informações em alguns tópicos. Um par de vezes devido a erros no firmware e apelos permanentes do dispositivo para o servidor, o serviço bloqueou totalmente a conta por várias horas. Mas tudo isso poderia ser perdoado por tais oportunidades. Mas, infelizmente, e aqui o desejo de ganhar tomou o topo - desde 2019, uma restrição de 10 conexões foi introduzida na tarifa livre. Não há nada repreensível nisso, mas não estou pronto para pagar esse dinheiro para o hobby, e mesmo para os serviços de qualidade bastante duvidosa. Em geral, vamos procurar o mesmo, mas com botões de pérolas ...

prós: Antes de chegar a 100 conexões

Minuses.: Não é conveniente, dobrado na criação de acesso, retido a partir do painel não excluir

Corretor público do HIVEMQ.

Corretor público totalmente gratuito sem quaisquer restrições. Pelo menos página principal O corretor não é escrito sobre eles. Mas há grande "mas" - este corretor não tem autorização, isto é, não. Ou seja, todos os enviados entre o dispositivo e você tem uma mensagem pode ler ninguém. Esta não seria uma grande tragédia se fosse apenas qualquer indicador de temperatura e umidade, eles não representam o segredo. Mas quando se trata do gerenciamento remoto da "casa inteligente", então esse corretor é, em princípio, não é adequado. Afinal, não quero que ninguém habilite qualquer dispositivo na casa ou desative o alarme, por exemplo.

prós

Minuses.

Eclipse mqtt.

Outro corretor público sem autorização. Como escrito no site, este corretor é projetado principalmente para testes e não se destina a armazenar e transmitir informações confidenciais. Para se conectar ao servidor, você precisa usar os seguintes parâmetros: servidor iot.eclipse.org, porto 1883; Para o TLS v1.2, v1.1 ou v1.0 - Porta 8883. Conexão e por WipSockets estão disponíveis. Em geral, o mesmo que o HIVEMQ, apenas na projeção lateral ...

prós: Livre, sem restrições de conectividade

Minuses.: Adequado para testes e estações meteorológicas sem controle remoto

mosquitte.org.

E outro corretor público sem autorização. Você não pode repetir, mesmo que o HIVEMQ e o Eclipse MQTT. Observe que todos esses servidores suportam a criptografia TLS não significa que seus dados sejam protegidos. O canal de transmissão entre o dispositivo e o servidor está sendo protegido, mas os dados em si estão em acesso aberto.

prós: Livre, sem restrições de conectividade

Minuses.: Adequado para testes e estações meteorológicas sem controle remoto

Nuvem IBM (Bluemix)

Este não é um corretor mqtt, esta é uma plataforma inteira "Internet of Things Platform". Mas em sua composição há um corretor mqtt. No plano tarifário gratuito "Lite" é permitido até 500 dispositivos registrados e 200 MB de informações sobre cada métrica. É bastante elegante não só para a casa, mas também para dispositivos comerciais. Mas, como sempre, não sem "mas". Primeiro, é muito difícil entender esta plataforma. Há uma documentação, mas é muito. Não - muito! Eu não gastei uma hora para mais - menos entender como configurar a conexão. Em segundo lugar, a plataforma permite que você publique tópicos estritamente em um formato específico: "IOT-2 / EVT / Event_ID / FMT / FORMAT_STRING". Da mesma forma, com comandos: "IOT-2 / cmd / command_id / fmt / format_string". E tudo - sem liberdades - isto é, apenas o número da mensagem e a própria mensagem. Mas os formatos das mensagens transmitidas já são maiores - "JSON", "xml", "txt" e "csv". Talvez alguém como uma abordagem parecer muito correta e conveniente, mas ele não me atraiu. Sim, e é difícil para todas as intenções - oportunidades, aparentemente, muito, mas com isso todo mundo terá que ser capaz de primeiro.

prós: Limites muito grandes em conexões

Minuses.: Muito complicado para iniciantes, restrições aos tópicos

mqtt.dioty.co.

Este é um corretor completamente livre. Até. A seguir está escrita na página Configurações de conexão: "Este Broker MQTT está trabalhando no Beta. Nesta fase de testes beta, não cobraremos a taxa se você exceder o limite em 50000 mensagens por mês. No entanto, nos reservamos o direito de suspender temporariamente sua conta, caso você influencie o serviço de outros usuários. Nesse caso, sempre entraremos em contato com você por e-mail para tentar entender suas necessidades específicas e como podemos satisfazê-los. ". 50.000 postagens por mês é de cerca de 70 mensagens por hora, o que não é muito se você considerar que um dispositivo pode publicar para uma sessão de dados de sensores até 50 mensagens. O Broker suporta a conexão de autorização e TLS. O registro está ligado à Conta do Google. Há uma pequena restrição - todos os seus tópicos devem começar com o endereço e-mailPelo qual você se registrou no serviço, por exemplo, assim: "/ [E-mail protegido]/ ... / ... ". Mas esse problema é mais ou menos significativo apenas ao configurar clientes do MQTT em um smartphone (ganhe mais texto) e nem sempre. Na minha opinião, este serviço merece a atenção. Eu não verifiquei com ele, acabei de me registrar.

prós: Completamente livre

Minuses.: Um certo prefixo para tópicos é necessário, uma restrição de aproximadamente 70 mensagens por hora

Solace.Cloud (Pubsub +)

Isso não é muito um corretor mqtt como toda a plataforma IOT. Em um plano tarifário gratuito, até 50 conexões são permitidas para 1 GB de dados transmitidos por mês, até 4 GB de dados armazenados (mensagens retiradas). Nada mal. Mas tem até mesmo versão gratuita Muitas configurações - é difícil descobrir "com o escopo". É por isso que, ao mesmo tempo, não gostei deles. Talvez o tempo virá, vou lidar e configurar.

prós: Até 50 conexões

Minuses.: Muito dobrado no domínio

myqtthub.com.

Aparentemente corretor estoniano. No plano tarifário gratuito permite: até 100 usuários, mas até 50 conexões; 10MB de dados armazenados; Até 50 assinaturas para conexão, máxima de 250 assinaturas (e não claras, assinatura "Home / #" é uma assinatura ou muito?); 300 mensagens por minuto, mas não mais de 800 por hora e não mais que 10.000 por dia. Se você proceder de publicações regulares (a cada cinco minutos), não é mais de 34 mensagens de cada vez. Ainda há restrições - mais como mais na página principal do serviço. Limitações, no entanto, parecem bastante reais para uso doméstico. Não tentei ...

prós: Até 50 conexões

Minuses.: Restrições ao número de mensagens

mqtt.by.

Fácil de usar o corretor bielorrusso. Não há nada sobre restrições. Apoia a autorização, mas é possível fazer alguns tópicos com o público, ou seja, abrir para todos os outros usuários do serviço. Mas não há suporte seguro de conexão (TLS), pode ser crítico para alguns aplicativos. Cada tópico publicado deve começar com o prefixo "/ usuário / user_name", que um pouco complica a configuração de clientes MQtt móveis, mas não significativamente. Das vantagens - no servidor há tópicos públicos com uma data e hora, que é muito conveniente para o painel de controle com base em um tablet, que funciona 24 horas por dia - ao mesmo tempo e o relógio ainda está sozinho (cem doze 🙂). Em geral, bastante um corretor normal, apenas para funcionar estável.

prós: Sem restrições, há tópicos públicos, você pode publicar seus tópicos

Minuses.: Nenhuma criptografia de conexão SSL / TLS

mqtt.4api.ru.ru.

Russo Free Broker - "Fornecemos acesso a um servidor mqtt grátis para todos". Autorização e inscrição no serviço através de redes sociais. Parecia, aparentemente, não muito tempo atrás. Embora o próprio site tenha um certificado SSL, os parâmetros de dados são especificados apenas para "sem SSL", aparentemente conexões SSL para dispositivos não estão disponíveis. Ainda na página de conexão escritos o seguinte: "Não recomendamos usar este servidor. Para projetos vitais ". O painel de controle tem uma funcionalidade muito modesta, então você precisa usar terceiros

prós: sem quaisquer restrições

Minuses.: Nenhuma criptografia de conexão SSL / TLS, painel de controle deficiente funcional

Outros serviços

Um mqtt não será alimentado. O MQTT é simples e conveniente, mas permite que você visualize as informações "aqui e agora", sem a história das mudanças no tempo. Para ver gráficos, existem outros serviços, para estabelecer trabalho com o qual também não é difícil. Alguns deles estão abaixo.

Coisas

Coisas disponíveis como serviço gratuito Para pequenos projetos não comerciais (<3 миллиона сообщений в год или ~ 8 200 сообщений в день). Сервис позволяет накапливать получаемые данные в своих хранилищах, после чего их можно удобно просматривать в виде графиков. В том числе и на сторонних сайтах, .

A partir dos recursos do serviço - tem integração com o Matlab Analytics, mas quanto eu não tente configurar scripts de Matlab, então eu não saí. Bem, não muito e queria. Em uma conta gratuita, o serviço permite criar até quatro canais, cada um dos canais pode ser armazenado até 8 campos com dados diferentes. Mesmo na conta gratuita, há outra restrição - é impossível publicar dados com mais frequência do que uma vez a cada 15 segundos (recomenda-se uma pausa de 20 segundos), é como "proteção" excedendo o limite de 8 200 mensagens por dia. Em princípio, todos os meus "editores" se encaixam facilmente neste limite, eu tenho o suficiente. Eu uso o serviço por um bom tempo, é bastante conveniente e simples, se não contando Matlab. Existem vários programas - clientes para Android, mas muito menos do que para o MQTT.

prós: Simples Uso em ESP, local conveniente

Minuses.: muitas restrições na conta gratuita

open-Monitoring.Online.

Este serviço é semelhante ao Coisas - você também pode enviar dados para ele e, em seguida, navegar na forma de tabelas, gráficos e histogramas. A interface é mais simples que a peak, mas também para personalizar é muito mais fácil.

Inicialmente, este serviço foi criado, como eu entendo, para monitorar os parâmetros de usinas de energia solar pessoal, mas também é adequado para outros fins. O serviço está disponível para todos e gratuitamente, sem restrições significativas no momento. A única restrição que eu entendi é enviar um grupo de valores para o servidor para um controlador, não pode ser com mais frequência uma vez por minuto. Mas, sobre o número de valores para cada controlador e sobre o número de controladores de restrição, parece ser não. O envio de dados para o servidor é realizado por uma simples solicitação de recebimento, a implementação no Arduinoide não tomou mais de uma hora. Ao contrário do Coisas, os dados salvos podem ser visualizados em um gráfico (com sobreposição), bem como personalizar algum painel para produzir os valores mais recentes. Você também pode visualizar os valores salvos no formulário de uma tabela simples.

prós: Uso simples em ESP, interface conveniente, quase sem restrições

Minuses.: Não há possibilidade de retirar gráficos em sites de terceiros (ao contrário do Coisas), bem, ou ainda não encontrei como fazer isso

beebotte.

Na página principal deste serviço, o seguinte é escrito: "Conectando tudo e tudo e tudo em tempo real usando uma API rica que suporta descanso, websockets e mqtt". Pessoalmente, ainda não usei este serviço. A julgar pelo que entendi a partir da descrição, esta é uma mistura selvagem de MQtt Broker e Coisas. No modo livre, o número de canais e recursos não é limitado, mas o número de mensagens é limitado: 0,05 milhão por dia | 1,5 milhão por mês. Para mensagens armazenadas, os limites são ainda menos: 5 000 por dia | 150 000 por mês. Além disso, as mensagens são armazenadas apenas por um período máximo de três meses, após as quais são removidas. Ou seja, o tempo para todo o ano você não vai olhar. Sobre meu cliente móvel para o smartphone ainda não é conhecido por mim. Registrado. Eu vou tentar. Conclusões para fazer isso muito cedo.

Blynk.

Serviço promotivo ativamente para o controle remoto "dispositivos inteligentes". Eu mesmo diria de forma agressiva - todos os fóruns escreverem, onde precisamos e onde não é necessário. Em geral, minha aparência pessoalmente, esta plataforma não é para os amantes, mas sim para os negócios. No "modo livre" é dado muito poucos recursos, exceto para lembrar o LED ou ativar um relé. Em geral, tentei uma vez - e joguei, imediatamente recursos e terminei. Muito ganancioso.

prós: não encontrado

Minuses.: Garegi, cliente móvel apenas um

Enquanto isso é tudo. Se você conhece outras maneiras de gerenciar o ESP remotamente (obrigatório com "Mobile") - por favor me envie um email. Vamos discutir e possivelmente adicionar um artigo.

A conexão através do remotexy do servidor de nuvem permite controlar o dispositivo de qualquer lugar do mundo onde há uma Internet.

O módulo ESP8266 será configurado como um cliente para se conectar ao ponto de acesso WiFi. O ponto de acesso deve ter acesso à Internet. A biblioteca Remotexy registrará o dispositivo em um servidor de nuvem.

O aplicativo móvel se conectará ao servidor de nuvem e não diretamente ao dispositivo. Assim, o dispositivo estará disponível em qualquer lugar da Internet.

Observação:DENTRO este momento A conexão através de um servidor de nuvem passa uma etapa de teste. Isso é possível interrupções no servidor.

Etapa 1. Crie um projeto de interface gráfica

Etapa 5. Ajuste o ESP8266

O módulo ESP8266 precisa ser configurado. Talvez seu módulo já tenha as configurações padrão necessárias, mas é melhor verificar isso.

O que você precisa verificar:

  • O módulo possui um firmware com o suporte de comandos em versão não inferiores ao V0.40;
  • O módulo é configurado para a velocidade de 115200.

Etapa 6. Conecte o ESP8266 a Arduino Uno

Conecte o ESP8266 a Arduino Uno de acordo com o esquema abaixo. Por favor, note que os contatos RX-TX estão conectados por Crosshair.

Como os níveis de sinais do módulo ESP8266 são 3.3V e em Arduino, são 5V, é necessário usar um divisor de tensão resistiva para converter o nível do sinal.


Etapa 7. Carregue o esboço em Arduino.

O esboço é carregado em Arduino da maneira usual. No entanto, devido ao fato de que o módulo ESP8266 é conectado a contatos 0 e 1, a programação se torna impossível. O compilador mostrará um erro.

Antes da programação, desconecte os fios indo para o ESP8266 dos contatos 0 e 1. Programação. Em seguida, devolva os contatos para o local. Clique no botão RESET do Arduino.

Observação:O primeiro sinal é que a programação passou com sucesso, esta é a cintilação do LED azul no módulo ESP8266 imediatamente após a redefinição. A cintilação do LED azul significa troca de dados entre Arduino e ESP8266. Nestes 8, o Arduino foi configurado para configurar o ESP8266 para se conectar ao ponto de acesso. Depois de algum tempo, o LED estará piscando novamente, o que significa uma tentativa de se registrar no Remotexy Cloud Server.

Etapa 8. Conecte-se do seu aplicativo móvel.

Verifique a potência ESP8266.

Também é possível que seu ESP8266 não tenha a energia da fonte de alimentação. Algumas placas de arduino têm um fraco estabilizador de tensão 3.3 V, que não é capaz de emitir 200-300 mA em modos de pico. Neste caso, no monitor serial, você também verá uma ruptura da seqüência de comandos.

Vadim Kolesnik, Tiraspol

Desenvolvimento emocionante, simples e rápido de dispositivos de Internet completos no Arduino usando um serviço de nuvem

Em geral

myDevices envolvidos no desenvolvimento de software e aplicações na Internet das coisas (IOT) e é uma divisão de Avanquest. MyDevices Cayenne - O primeiro aplicativo de arrastar e soltar e serviço de nuvem para projetos simplificados de desenvolvimento de IOT no Raspberry Pi.

O Portal Radiotozman foi publicado recentemente em que tentei revelar as principais vantagens e capacidades do sistema ao trabalhar no computador de placa simples de Raspberry Pi (RPI). Mas o projeto Cayenne está constantemente desenvolvendo, desenvolvedores, com base nos desejos de usuários, adicione gradualmente novos recursos, eliminam deficiências e erros.

O desenvolvimento de dispositivos IOT no Arduino e Raspberry Pi quando se trabalha com Cayenne difere fundamentalmente. Em relação ao Raspberry Pi, a plataforma Cayenne pode ser considerada um ambiente de desenvolvimento visual: nos conectamos fisicamente periféricos diferentes à placa de pi de framboesa e, em seguida, trabalhamos apenas no ambiente Cayenne on-line (configurar widgets, processamento de dados, algoritmos de automação de gravação).

No que diz respeito ao Arduino, o painel Cayenne é apenas um conjunto de widgets e controles que visualizam os dados dos sensores e transmitem dados do usuário para controlar os controles ou outros dispositivos executivos. Operação diretamente com sensores, dispositivos executivos, periféricos adicionais (por exemplo, exibição, segundo teclado), o processamento de condições de automação é atribuído ao microcontrolador. Em outras palavras, tudo se resume ao desenvolvimento padrão do dispositivo em Arduino; O próprio usuário escreve o código do programa, mas com a integração no projeto de funções flexíveis de Cayenne. Neste parecer, na minha opinião, na minha opinião, a principal vantagem do Cayenne é: você pode conectar quaisquer sensores e atuadores ao sistema, sem limitar a lista de periféricos suportados.

Interface de usuário e preparação de trabalho

Quanto à interface do usuário do sistema, suas configurações, métodos de controle e widgets no painel, tudo isso continua sendo um sistema similar no PI de framboesa, é claro, com exceção de elementos únicos individuais inerentes no último (por exemplo, Área de trabalho remota, status da memória, carregamento do processador). Portanto, para entender os fundamentos de trabalhar com o sistema, recomendo se familiarizar com os artigos. Todas as informações no artigo são relevantes para a interface da Web do sistema e para a interface do aplicativo móvel. Também no artigo indica uma lista de periferia suportada.

Para desenvolver dispositivos ou aplicativos IOT, precisamos:

  • Tem sua conta no serviço Cayenne (você pode usar o existente);
  • Instale um ambiente integrado de desenvolvimento IDE do Arduino;
  • Adicione uma biblioteca das funções Cayenne em Arduino IDE;
  • Configurar Arduino IDE: Selecione uma taxa e a porta COM à qual ela está conectada;
  • Conecte-se ao Arduino Ethernet Shield ou Wi-Fi Shield Extension Board (ou use a placa Arduino com uma interface de rede integrada).

Acho que o processo de instalação do ambiente de desenvolvimento do Arduino IDE, bem como a escolha de taxas e portos em explicações não precisam, e nós iremos para o principal.

A biblioteca Cayenne for Arduino é simples e rapidamente instalada usando o gerente da biblioteca (Figura 2).

Depois de instalar a biblioteca, poderemos usá-lo em seus aplicativos e uma nova pasta com o nome Cayenne aparecerá na seção Exemplos de Esboço. Na minha opinião, esses exemplos não permitem que você entenda completamente como trabalhar com o sistema, mas, no entanto, eles devem ser explorados, e também, vamos lembrá-lo de que há uma seção enorme da documentação no sistema Cayenne. No caso geral, esta biblioteca é um conjunto de esboços que permitem simplificar a conexão e a troca de dados entre sensores / atuadores e serviço de nuvem.

Ao realizar operações preparatórias, configurando o ambiente de desenvolvimento e a conexão da placa de extensão Ethernet Shield, você pode começar a desenvolver o dispositivo IOT.

Arduino é conectado a um computador USB, no Ethernet Shield, conecte o cabo de rede local. No navegador da Internet, entramos na conta Cayenne e adicionamos um novo dispositivo no painel de controle - Arduino. Em seguida, selecione o tipo de placa, o método de conectar à Internet (muitas opções), preste atenção à chave de autorização exclusiva para o nosso dispositivo e espere pela placa Arduino para Cayenne (Figura 3).

Para cada novo dispositivo, uma nova chave exclusiva é gerada, no futuro, ela pode ser encontrada nas configurações do dispositivo (taxas).

Depois de escolher uma maneira de se conectar à rede, uma janela com o código-fonte do programa Microcontroller aparecerá. Este é o mínimo necessário para conectar o dispositivo ao serviço de nuvem. Observe que o texto do programa já especificou sua chave de autorização e conectou a biblioteca correspondente ao método selecionado de conectar à rede (Figura 4). Copie este código em Arduino IDE, compile e carregue na taxa. Se tudo ficar corretamente configurado, então um novo dispositivo ativo e o painel aparecerão no painel de controle Cayenne, onde você pode adicionar widgets e controles. Além disso, já neste estágio, você pode controlar remotamente as portas Arduino analógicas disponíveis, sem escrever uma única linha de código - no painel, adicione um widget, especifique o tipo de porta (digital), seu nome na placa e Salve o widget. Agora, clicando no botão no navegador, você alterará o estado lógico da porta. Além disso, simplesmente adicionando os widgets apropriados, você pode gerenciar as saídas do PWM, receber dados "RAW" das entradas do Arduino analógico, controlar o estado de entradas digitais.

Desenvolvimento de um dispositivo em um exemplo específico

Agora vou contar sobre os recursos e funções adicionais do sistema. Como exemplo, colecionei um sistema simples, que incluiu:

  • Arduino Uno Board;
  • Placa de extensão de escudo Ethernet no controlador WIZnet W5100;
  • Sensor de temperatura DS18B20;
  • Fotorresistor;
  • Termistor;
  • Vários LEDs;
  • Exibição OLED no controlador SSD1306.

Um diagrama esquemático de sensores de conexão e LEDs a Arduino é mostrado na Figura 5.

Deixe-me lembrá-lo de que a maioria das questões relacionadas à conexão de vários sensores e atuadores, você pode encontrar respostas na seção Documentação.

Eu acho que sobre como conectar LEDs, um sensor de temperatura digital e exibição OLED de perguntas não surgirão. Os sensores analógicos de iluminação e temperatura são conectados a entradas analógicas de acordo com o esquema de divisor resistivo. Ao mesmo tempo, para a cadeia do termistor, é necessário saber a resistência exata do resistor R6, esse valor será usado no código-fonte durante os cálculos.

Depois de conectar os artigos especificados no diagrama, escreva o esboço Arduino e instale os widgets necessários no painel Cayenne. No momento, o Conselho de Arduino já carregou o esboço mínimo e o quadro é determinado no painel Cayenne. Como eu disse acima, nesta fase, podemos adicionar widgets para controlar os LEDs D1, D2, bem como obter dados "raw" de insumos analógicos para os quais o termistor e o fotorresistor estão conectados (Figuras 6, 7).

Sem escrever uma única linha de código Arduino, já recebemos um simples sistema de controle remoto e controle (Figura 8).

Para usar sensores de temperatura digital, termistor, pwm, por exemplo, para controlar o LED D2, será necessário adicionar o esboço mínimo. Para começar, definimos as bibliotecas necessárias.

#Incluir.< CayenneEthernet.h> // Use a taxa de extensão de escudo Ethernet
#Incluir.< CayenneTemperature.h> // funções de conversão de dados com termistor
#Incluir.< OneWire.h> // funções para trabalhar com barramento de 1 fio
#Incluir.< DallasTemperature.h> // funções para trabalhar com sensores de temperatura digital
#Incluir.< Arduino.h> // constantes padrão e variáveis. Arduino.
#Incluir.< U8x8lib.h> // biblioteca para trabalhar com exibição OLED no modo de texto
#Incluir.< Wire.h> // Suporte para interface de hardware I 2 C

#Define virtual_pin_1 v0 // canal virtual para sensor DS18B20
#define virtual_pin_2 v1 // - para termistor
#define virtual_pin_3 v2 // - Para o LED D2, receberemos dados sobre o valor do PWM
#Define led2_pwm 6 // porta real arduino ao qual o LED D2 está conectado

Os canais virtuais não são digitais e não portas de entrada / saída analógica. Ao ler entradas analógicas, o usuário recebe dados de um microcontrolador de 10 bits ADC. Os valores retornados pelo ADC estão no intervalo de 0 ... 1023 e proporcional à tensão nesta entrada. Em outras palavras, se você conectar o sensor de temperatura à entrada Arduino analógico, você não obterá o valor de temperatura, transformações adicionais e cálculos matemáticos serão necessários para converter a tensão - temperatura.

Para simplificar a conversão, a formatação e o processamento de dados, os canais virtuais são projetados. Esta é uma ferramenta bastante poderosa que é usada para trocar entre Arduino e Cayenne, bem como para facilitar a formatação de dados para fins de sua visualização compreensível no painel. Lembre-se, os canais virtuais não têm parâmetros físicos.

Cayenne.VirtualWrite (V1, 123) // Transmissão do Valor Integer Channel Virtual V1
Cayenne.VirtualWrite (v2, 12.34) // transferência de valores de vírgula flutuante canal virtual v2

Por exemplo, lendo o sensor de temperatura analógica, poderemos converter o valor para graus Celsius e transferir esse valor para o painel. Além disso, os canais virtuais permitem que você implemente o controle de qualquer periferia conectado às portas analógicas ou digitais do Arduino, sem a necessidade de escrever qualquer código adicional. No momento, dois tipos de dados são suportados com os quais os canais virtuais estão operando: inteiro (inteiro) e ponto flutuante (flutuador). No futuro, é planejado para apoiar tipos e matrizes simbólicos. No painel no canal virtual, você pode conectar e configurar o tipo de dados obtidos pelo widget do usuário para visualização.

// porta digital para o qual os sensores DS18B20 serão conectados. Não use portas Arduino 0 e 1 (RX / TX).
Const int ds18b20_pin \u003d 2;
// porta analógica à qual o termistor está conectado.
Constit termistorpin \u003d 0;
// Resistência a um resistor permanente (9 COM), incluído em série com um termistor no solo.
Resistência do FLOATENT \u003d 9000;
// chave de autorização de Cayenne. Você pode encontrá-lo na interface da Web Cayenne na guia Configurações do dispositivo.
Token Char \u003d "640c9odi4";
OneWire OneWire (DS18B20_PIN);
Sensores Dallastemperature (& OneWire);
Termistor termistor (termistorpina, resistência);

A seu critério, quase em qualquer estágio, você pode adicionar a seleção de informações de depuração ao código-fonte para a porta seqüencial.

Na seção Inicialização, indicaremos as seguintes funções:

configuração anulada ()
{
Cayenne.begin (token); // Conecte-se ao Cayenne com a chave de autorização especificada
Sensores.begin (); // Inicialização de sensores de temperatura digital
u8x8.begin (); // Inicialização e informações de texto exibir na exibição OLED

u8x8.setpowersave (0);
u8x8.setfont (u8x8_font_torussansbold8_r);
u8x8.Drawstring (2.0, "teste de Cayenne");
u8x8.Drawstring (1,2, "sistema de execução");
}

No ciclo principal do programa, teremos apenas uma função:

voice Loop ()
{
Cayenne.run ();
}

Toda a troca de dados com o painel Cayenne é executada usando várias funções:

Cayenne_in (virtual_pin) - Especifica a função que é chamada após o recebimento pelo dispositivo dos dados atualizados através do canal virtual do servidor Cayenne.

Cayenne_out (virtual_pin) - Determina a função que é chamada quando você deseja enviar os dados atualizados do dispositivo para o servidor Cayenne.

Cayenne_Connected () - A função é executada a cada vez em que o dispositivo está conectado ao servidor Cayenne. Em geral, esse recurso é usado para sincronizar.

Cayenne.syncall () - Uma função que gera uma solicitação para o servidor Cayenne para sincronizar todos os widgets. O status das portas Arduino analógico e digital será restaurado, e cada canal virtual gerará o evento Cayenne_in.

Cayenne.SyncVirtual (virtual_pin) - Sincronização pelo canal virtual especificado. Como resultado da execução, o correspondente manipulador Cayenne_in é chamado.

No meu diagrama, o LED D2 é conectado à porta digital D6 Arduino. Esta porta tem uma função alternativa - saída PWM. Para implementar o controle remoto desses LEDs no modo PWM, precisaremos receber dados do painel. Para fazer isso, escreva uma função que será executada ao atualizar dados via canal virtual v2:

Cayenne_in (v2)
{
// recebe os dados sobre o valor do PWM do painel (slider)
int pwmvalue \u003d getvalue.asint (); // valor no intervalo 0 - 1023
Analogwrite (LED2_PWM, pwmvalue / 4); // para PWM, o valor deve estar no intervalo de 0 - 255
}

Agora, adicionaremos o widget "Slider" no painel com o nome LED_2 PWM (PWM) e, em suas configurações, especificamos que funciona por meio de um canal virtual 2 (Figura 9).

Depois de baixar o esboço na placa, você pode usar o controle deslizante no controle do painel Caienne a luminosidade do LED D2. Tudo é muito rápido e fácil ...

Cayenne_out (v0)
{
Sensores.RequestTemperaturaturas (); // Receba dados de sensores de temperatura digital.
// Converta dados do termistor, formate-os e envie-os para o servidor através do canal virtual v1
Cayenne.celsiuswrite (v1, termistor.getcelsius ());
// Formatar dados de um sensor de temperatura digital e envie-os para o canal virtual do servidor v0
Cayenne.celsiuswrite (v0, sensores.gettempcbyindex (0));
}

Através do uso de canais virtuais, todo o código de função para transmitir dados absolutamente diferentes consiste em duas linhas. No painel, adicione widgets para o sensor de temperatura DS18B20 e o termistor (eles estão prontos no painel de controle). Personalize widgets, carregue o esboço na taxa, e ... Pronto (Figuras 10A, 10B)!


Figura 10. Vista do painel de caienne para controlar o Arduino (sensores de temperatura,
Luz, controle LED D1, controle LED PWM D2):

Não esqueça que as mesmas funções de controle e controle estão disponíveis em aplicação móvel. Todos os widgets instalados na interface da Web verão em um aplicativo móvel (Figura 10b).

Aparência Dispositivos com periféricos conectados são mostrados na Figura 11.

Capacidade de desenvolver dispositivos sem fio de IOT

Você pode perceber que em algumas capturas de tela, meu painel de controle é visível, onde além de Arduino Uno e Raspberry PI, há um dispositivo chamado ESP8266-1. Tudo bem dispositivo adicional No conhecido módulo ESP-12 (ESP8266), que é conectado ao servidor Cayenne por Wi-Fi e tem o seu painel separado (Figuras 12A, 12b). Tal dispositivo é um nó de controle e controle sem fio. Dois LEDs estão conectados ao módulo (um é conectado à saída PWM ESP8266) e o sensor de temperatura digital DS18B20.


Figura 12. Painel para dispositivo sem fio no módulo ESP-12:
a) Interface Web, B) Aplicação móvel.

Graças ao apoio do kernel ESP8266, o ambiente Arduino IDE, a implementação dos dispositivos sem fio IOT com Cayenne não difere do desenvolvimento no Arduino. Em outras palavras, qualquer módulo no chip Esp8266 é uma placa Arduino com uma interface Wi-Fi. Para este módulo Wi-Fi, escrevemos um esboço semelhante, usamos as mesmas bibliotecas para trabalhar com os sensores, as portas de entrada / saída digital e analógica estão disponíveis para nós. Este módulo acumulou uma enorme quantidade de informações, várias documentação e desenvolvimentos.

O diagrama de conexão da periferia para o módulo ESP8266 é mostrado na Figura 13. Eu usei um módulo de ESP-12 separado sem uma placa de transição com um circuito de energia integrado e a interface de programação, que complicou muito o trabalho na fase de download do esboço. A opção ideal será o uso de um módulo de tipo Nodemcu V3 pronto, que é feito no Formulário de Formulário Arduino e possui um esquema de correspondência de interface. (Altamente momento importante Ao programar o módulo). A aparência do módulo com LEDs conectados e o sensor de temperatura é mostrado na Figura 14.

Quanto à conexão com o servidor Cayenne e a troca de dados, tudo está aqui para Arduino. Todos os conceitos sobre canais virtuais são salvos, as mesmas funções são usadas, a chave de autorização exclusiva também é usada. Diferença apenas no estágio de conexão do módulo para a Internet.

Para conectar o dispositivo no módulo ESP8266, agimos em análogos à adição de qualquer placa Arduino e reagir ao modo de espera para conectar o dispositivo a Cayenne, onde o esboço mínimo será gerado.

Precisamos mudar esse esboço. Nós conectamos as seguintes bibliotecas:

#Include "cayennedefines.h" // constantes e variáveis \u200b\u200bCayenne
#include "bllynksimpleesp8266.h" // funções para trabalhar com o ESP8266
#include "cayennwifylient.h" // funções para a implementação do cliente Wi-Fi

tOKEN CHAR \u003d "3YJ62U9OGI";
Char ssid \u003d "network_ssid"; // SSID e senha para sua rede Wi-Fi.
Char Senha \u003d "Network_password";

Na seção Inicialização, adicione uma string:

Cayenne.begin (token, ssid, senha);

Compilar carregando no módulo (leva mais tempo do que o download para a placa Arduino), esperamos conectar e ativar o novo dispositivo no painel Cayenne. Em seguida, tudo como para Arduino: Adicionar funções a trabalhar com sensores e portas de E / S, adicionar widgets ao painel. Apenas delicioso, não é?!

Conclusão

De acordo com os resultados de trabalhar com Cayenne em Raspberry Pi e Arduino, posso definitivamente dizer que a framboesa Pi não deve ser usada para desenvolver dispositivos de internet de coisas, mesmo com cayenne. O que não conta sobre Arduino - apesar dos recursos limitados, a falta de multitarefa, baixa potência de computação (embora, este é um momento disputado, dadas as características das novas placas de arduino nos processadores do braço), é ideal para o desenvolvimento de IOT simples dispositivos e sistemas de automação residencial.

Além disso, neste contexto, a principal vantagem do Arduino, como notei acima é a capacidade de desenvolver de forma independente um dispositivo, estudando circuitos, código de escrita, desenvolvendo habilidades de programação, apesar dos argumentos de programadores profissionais, que não podem ser aprendidos com Arduino. Talvez, mas ... em relação a Arduino, a plataforma Cayenne fornece apenas gráfico interface de usuário E algum processamento simplificado de dados. Todo o resto que você deve se desenvolver, incluindo processamento primário de dados de sensores, subsistema de processamento de eventos, bem como algoritmos de automação. Agora adicione a ARDUINO Facilidade de desenvolver dispositivos de IOT sem fio ao módulo Wi-Fi ESP8266 e já o suporte oficial (embora não seja concluído) o mais recente chip Esp32, que tem uma rica periferia a bordo, e você tem enormes oportunidades para desenvolver dispositivos fundamentalmente novos e Atrair este processo não é apenas amantes, mas também profissionais.

No momento da preparação, a Cayenne não foi relatada no apoio oficial dos módulos no chip Esp8266. Inicialmente, este é o mérito da Comunidade - amadores e engenheiros que trabalham ou utilizam Arduino IDE e saber sobre o apoio de ESP8266, usando as bibliotecas Caiena foram capazes de conectar e usar ESP8266. Mas mesmo naquela época, os fóruns da comunidade de Cayenne já poderiam estar familiarizados com grande quantidade Diferentes projetos de dispositivos sem fio IOT.

Após um longo teste de seus dispositivos em Arduino e ESP8266, posso dizer que este último funciona muito estável. Várias confiabilidade baixa Arduino com escudo Ethernet é devido a problema famoso O controlador W5100 pendure, no entanto, existem várias maneiras de resolvê-lo, hardware e software. Eu posso supor que isso não diz respeito a placas Arduino com Ethernet integrada ou Wi-Fi.

A partir do momento da preparação do artigo sobre Raspberry Pi e Cayenne, não havia muito tempo, mas novas características e a periferia apoiada tornou-se muito maior. Além de ter uma grande variedade de várias placas de extensão, sensores e dispositivos executivos, bibliotecas relevantes, projetos e exemplos para Arduino, agora em usuários Caiena são dispositivos disponíveis, redes e serviços Lora, bibliotecas de apoio protocolo de rede MQTT para Arduino, C, C ++, mbed, bibliotecas para trabalhar com MQtt Broker Mosquito. Definitivamente, para desenvolver dispositivos de Internet e sistemas de automação residencial em Arduino, recomendaria serviços de Cayenne.

Anteriormente, eu estava presente uma bicicleta para criar um dispositivo Arduino para monitoramento.

Foi interessante.

/ * - Novo projeto - Este código-fonte da interface gráfica do usuário foi gerado automaticamente pelo Remotexy Editor. Para compilar este código usando a biblioteca Remotexy 2.3.5 ou posterior Versão Download por link http://remotexy.com/en/library/ Para conectar usando o Remotexy Mobile App por link http://remotexy.com/en/download/ - para Android 4.3.1 ou versão posterior; - para a versão iOS 1.3.5 ou posterior; Este código-fonte é o software livre; Você pode redistribuí-lo e / ou modificá-lo sob os termos da licença pública geral GNU menor, conforme publicado pela Free Software Foundation; Qualquer versão 2.1 da licença ou (à sua opção) qualquer versão posterior. * ///////////////////////////////////// // // Remotexy incluem Biblioteca // /// ////////////////////////////////////////// // // Definição da conexão modo e ligação do #define Remotexy Remotexy_mode__Sp8266_mode__sp8266_mode__sp8266_hardservial_cloud #include // Configurações de conexão #define remotexy_serial série #define remotexy_serial_speed 9600 #define remotexy_wifi_ssid "***********" #define remotexy_wifi_password "*********" #define remotoxy_cloud_server "nuvem. Remotexy .com "#define remotexy_cloud_port 6376 #define remotexy_cloud_token" ************************** "#include // Adicione a biblioteca DHT11 DHT11 DHT; // Anúncio da classe variável DHT11 #define dht11_pin 7 // sensor DHT11 está conectado ao pinho digital número 4 const int int int int int signsignal \u003d A3; // Conecte um pino de sinalização analógica Const int digitalsignal \u003d 8; // Conectando uma sinalização digital Pina Boolean Nogas; // variável para armazenar o valor da presença de gás int int \u003d 0; // variável para armazenar a quantidade de float de gás hum \u003d 0; // variável para armazenar Temp \u003d 0; // variável para armazenar a temperatura int chk; // variável para armazenar o erro do DHT CHAR MSGBuffer; // interface de configuração #pragma pack (Push, 1) uint8_t remotexy_conf \u003d (255,1,0,2,0,77,7,4,13,2, 2,0,38,44,22,17,7, 81,22,11, 2,26,31,31,79,78,79,70,70, 0,66,132,10,13,31,24,7,10,27, 21,2,24, 66.132,56, 13,31,24,4, 41,31,2,2,24,67,4,26,5,20, 5.38,23,20,52,26,11,67, 4, 63,6,20, 5,39,52,20,5,26, 11); // estrutura determina todas as variáveis \u200b\u200bda sua interface de controle de estrutura (// Variável de entrada Uint8_t Switch_1; // \u003d 1 Se o switch estiver ligado e \u003d 0 se desabilitado // variável de saída int8_t nível_1; // \u003d 0..100) int8_t Nível_2 Posição de nível; / \u003d 0..100 Posição de nível CHAR TEXTE_1; / \u003d fileira UTF8 Ending Zero CHAR TEXT_2; // \u003d linha UTF8 Ending Zero // Outras variáveis \u200b\u200bUint8_t Connect_Flag; / \u003d 1 Se o fio conectado, else \u003d 0) Remotexy; #Pragma Pack (POP) /////////////////// //Comoxia final incluem //////////////// // /// #define pin_switch_1 13 Configuração do anular () (remotexy_init (); pinMode (pin_switch_1, saída); // todo você configura o código) anular loop () (remotexy_handler (); digitalwitch (pin_switch_1, (remotexy.switch_1 \u003d\u003d: alto); nogas \u003d digitalread (digitalsignal); // lê a presença de gás \u003d análise (analogsignal); // e sobre o seu número chk \u003d dht.read (dht11_pin); hum \u003d dht.humidez; temp \u003d dht.temperatura; remotexy.level_1 \u003d hum; remotexy.level_2 \u003d Temp; DTOSTR (Hum, 6, 2, Remotexy.text_1); DTOSTRF (Temp, 6, 2, Remotexy.text_2); // TODO YOURO LOOP / / Use a estrutura de remotexia para transferência de dados )

Nós usamos um sanduíche das placas.

De repente, tudo imediatamente ganhou:

A partir do momento de descobrir o serviço de nuvem, a remotexia para a foto acima passou uma hora.

Características de trabalho com remotexia.

1. Tudo é muito simples. Por sua maneira, é bom. Com Blynk e Cayenne, por exemplo, dificilmente do zero em uma hora acaba por entender. Para usar, por exemplo, "Kascada Cloud" que você precisa comprar um especial.

2. Não há processamento e armazenamento de dados no lado do servidor: sem conexão com a placa - o aplicativo está pendurado "sem conexão".

3. Livre apenas 5 elementos de design, mas o aplicativo Pro não é mais caro da metade do dia do tempo.

4. Existe uma oportunidade de um aplicativo para se comunicar com um conselho através de um servidor de nuvem e direto. Verdade, não ao mesmo tempo. Claro. E mude prontamente impossível - você precisa mudar o esboço no quadro. Há também a capacidade de comunicar um smartphone com uma placa Bluetooth e USB.