IoT por um centavo: um guia prático. Parte 2, software
Continuamos a série de artigos de guia nos quais consideramos como implementar um dispositivo IoT baseado em nuvem e simples e barato, com enorme potencial a partir do zero, sem solda e dificuldades desnecessárias. Pegue um microchip limpo ESP8266, instale o firmware do DeviceHive, configure e escreva um aplicativo Web simples para acessar o servidor em nuvem. Montamos e conectamos um dispositivo simples ao microchip, que pode ser controlado com alguns cliques no navegador. Aqui está a segunda parte do ciclo, que descreve qual software é necessário, como iniciá-lo, como atualizar o ESP8266 e fazer amizade com o servidor.O autor do artigo demonstra o que será discutido hoje.Os primeiros artigos da série:• IoT por um centavo, ou o que o DeviceHive pode fazer.• IoT por um centavo: um guia prático. Parte 1, hardware.Crie um servidor
Vamos seguir o caminho mais fácil e usar o playground gratuito do DeviceHive. Para fazer isso, vá aqui e cadastre-se. Depois disso, faça o login e acesse esta página:Parabéns! Agora você tem seu próprio playground no DeviceHive. Para conectar-se ao grupo de reprodução de fora, use o link da URL URL. Este é o endereço que usamos para acessar o servidor do ESP8266 e o aplicativo cliente. Para acessar o painel do administrador (no URL do administrador), use o login especificado (Login inicial) e a senha (Senha inicial).Uma pequena digressão: o servidor pode ser implantado localmente ou em um serviço em nuvem. Procure instruções de instalação aqui . Você pode facilitar - inicie o servidor usando o Docker em uma linha: procure aqui uma descrição completa . DeviceHive é um projeto totalmente de código aberto. Isso significa que o servidor pode ser implantado em casa e em um serviço de nuvem, por exemplo, Azuredocker run -d --name=devicehive -p 8080:80 -p 9001:9001 devicehive/devicehive-standalone
.Firmware
É hora de fazer o firmware. Para fazer isso, precisamos conectar o ESP8266 ao computador e depois conectar o adaptador USB-> UART, a fonte de alimentação e o módulo ESP8266.Instale o driver para o seu adaptador. Os usuários do Linux são mais fáceis aqui, porque o kernel já inclui a maioria desses drivers. Mas os usuários do Windows e OS X terão que instalar o driver do adaptador.Links para as páginas oficiais de download dos chips mais populares:CP210x: www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspxPL230x: www.prolific.com.tw/US/ShowProduct.aspx?pcid=41FTDI: www. ftdichip.com/Drivers/VCP.htmCH341: www.wch.cn/index.php?s=/page-search_content-keyword-CH341SER.htmlConecte o adaptador e verifique se o driver está funcionando corretamente. No Linux, o dispositivo deve aparecer no sistema de arquivos / dev / ttyUSB *, no OS X /dev/tty.* e no Windows, uma porta COM adicional deve aparecer no gerenciador de dispositivos. Se tudo estiver bem, desconecte o adaptador do computador.Em seguida, conecte a saída da fonte de alimentação (3,3 Volts) ao ESP8266 com dois fios. Para que o módulo seja ligado, quando estiver ligado, é necessário que ele funcione fornecendo um nível alto à saída do CH_PD. É necessário informar ao módulo que usaremos a memória interna, portanto, quando ligado, o GPIO15 deve estar baixo. E para entrar no modo de programação, precisamos aplicar um nível baixo ao GPIO0. Precisamos do último apenas durante o firmware. Parece assustador, mas, na realidade, precisamos apenas conectar os três fios do CH_PD com o sinal de adição da fonte de energia e conectar o GPIO0 e o GPIO15 ao terra (menos) da fonte de energia. Por fim, conectamos o adaptador USB-> UART usando mais três fios: conectamos os terminais menos a fonte (GND) ao terra do adaptador,a saída do adaptador RX é conectada à saída do módulo TX do ESP8266 e a saída do adaptador TX à saída do módulo RX. Obtemos o diagrama de conexão final para três módulos padrão diferentes. Se não houver saída, provavelmente já está conectado dentro do módulo, o fio roxo é a conexão mais temporária para entrar no modo de programação.


Um exemplo da execução dessa conexão:Como você pode ver, nada foi necessário para soldar, todas as conexões podem ser feitas com conectores comuns.Em seguida, ligue a fonte de alimentação, conecte o adaptador ao computador e faça o download do firmware DeviceHive recompilado para o ESP8266. No momento da publicação, a primeira e a última versão estão disponíveis aqui .Novas versões pré-compiladas sempre podem ser encontradas no GitHub . Você também pode pegar todo o repositório aqui , compilar o firmware e modificá-lo como desejar. Todo o código no repositório é licenciado no MIT.Descompacte o arquivo baixado do link acima em um diretório separado, execute esp-flasher- <nome do seu sistema operacional> no console (os usuários do Windows podem simplesmente clicar duas vezes em esp-flasher-win.exe). Como resultado, você deve ter algo parecido com isto:Além do utilitário incluído para o firmware ESP8266, você pode usar qualquer outro, por exemplo, esptool .Parabéns - o firmware está instalado e já está funcionando! Agora desconecte o terra do pino GPIO0 (não será mais necessário) para que o módulo não entre novamente no modo de programação. Para conectar-se ao terminal ESP8266, execute esp-terminal- <nome do seu SO> ou qualquer outro terminal de porta serial que suporte caracteres de escape, por exemplo, PuTTY ou o utilitário 'tela' do GNU. Parâmetros de porta: velocidade 115200, 8N1.Ambos os utilitários incluídos são capazes de detectar automaticamente a porta à qual o ESP8266 está conectado, ou seja, nenhum parâmetro é necessário na inicialização.Iniciando o terminal, veremos o convite:De fato, este é um terminal similar ao unix comum que suporta o preenchimento automático (tecla Tab) e o histórico (teclas para cima e para baixo). Mas, na verdade, não há arquivos ou sistemas operacionais lá. Uma lista de comandos disponíveis está disponível em 'ajuda':Estamos interessados no comando 'configure'. Execute-o para configurar o dispositivo.O utilitário fará cinco perguntas simples:- O nome da sua rede Wi-Fi.
- Senha da sua rede Wi-Fi.
- O endereço da API do seu servidor.
- DeviceID do seu dispositivo.
- DeviceKey do seu dispositivo.
No "URL do servidor DeviceHive", digite o "URL da API" no servidor. Em "DeviceID" - algum identificador de dispositivo exclusivo para o servidor, é com esse nome que iremos distinguir os dispositivos no servidor. "DeviceID" pode ser texto sem formatação. Em particular, você pode gerar um GUID de texto clicando em Tab. E na última solicitação do DeviceKey, digite a senha selecionada. Pode ser gerado pressionando a tecla Tab.Aqui vale a pena fazer uma pequena digressão. O ESP8266 usa autenticação de servidor por DeviceID. Assim que o DeviceID e o DeviceKey forem registrados no servidor, nenhum outro dispositivo com o mesmo DeviceID, mas com uma senha diferente, poderá se conectar. No futuro, uma senha do DeviceKey poderá ser necessária apenas se você desejar substituir o dispositivo físico por outro dispositivo com o mesmo DeviceID.É assim que a configuração se parece:Se fizemos tudo corretamente, podemos examinar a saída de depuração e garantir que o dispositivo tenha sido conectado com êxito ao servidor. Aqui está a saída de depuração de um dispositivo conectado com sucesso:O adaptador USB-> UART agora pode ser desativado. Você pode deixá-lo se quiser ver a saída de depuração ou o status da rede.Agora, na guia "Dispositivos" no painel de administração, o primeiro dispositivo será exibido.Vamos tentar enviar o primeiro comando para o dispositivo . Para fazer isso, vá para o painel de administração da seguinte maneira: "Dispositivos" -> "ESP" -> "detalhes" -> "comandos" -> "insira novo comando". No campo "nome", especifique "gpio / read" e pressione "push". Equipe enviada!A resposta virá muito rapidamente, mas os resultados dos comandos no painel de administração não são atualizados automaticamente. Para isso, existe um botão de atualização oposto ao comando. Clique nele um ou dois segundos após o envio e você verá esta tela:O que aconteceu? Ao pressionar o botão, você enviou um comando do painel de administração (que neste caso é o cliente do servidor) para o comando do servidor. O ESP8266 pegou, executou e passou o resultado para o servidor. Ao clicar no botão Atualizar, você solicitou ao servidor o resultado do comando: A lista de comandos disponíveis está localizada no arquivo PDF que acompanha o firmware. Também está disponível aqui , mas pode não corresponder à versão do seu firmware.{"0":"1","1":"0","2":"1","3":"0","4":"1","5":"1","12":"0","13":"0","14":"0","15":"0"}
Por uma boa tradição, acenderemos o LED na placa. Na maioria dos módulos ESP8266, o LED está em uma saída do tipo TX, e nós vamos lidar com isso. Acende quando um nível baixo aparece na saída do chip. No documento, veremos que o GPIO1 nada mais é do que a mesma saída TX, então vamos definir um zero lógico. Nesse caso, o LED acende sem problemas. Depois disso, o terminal no módulo deixará de funcionar até a reinicialização.Agora, configuramos o comando também indicado no documento. No campo "nome", definimos e no campo "parâmetros" - . Após executar o comando, o LED na placa deve acender, como na foto abaixo."gpio/write"
"gpio/write"
{"1":"0"}
Um LED azul em quartzo, ao lado do qual um vermelho ainda brilha, o que indica que a placa tem energia.Como você pode ver na foto, apenas dois fios com energia e dois jumpers estão conectados ao módulo para ligá-lo no modo correto. Para desligar, enviar um comando com um parâmetro . O formato dos parâmetros de comando é JSON comum. Os campos que podem ser preenchidos, bem como seus possíveis valores, são descritos no arquivo PDF. Hoje descobrimos como enviar os comandos mais simples do painel de administração para o dispositivo. No próximo artigo, mostraremos como escrever um aplicativo cliente simples para o servidor que permita acessar o dispositivo e implementar um dispositivo um pouco mais sério (lembra-se do laser do primeiro artigo?). Fique atento, será interessante!{"1":"1"}
Postado por Nikolai Khabarov, Desenvolvedor embarcado sênior. Source: https://habr.com/ru/post/pt383027/
All Articles