Conheça o Assassino Arduino: ESP8266

E se eu dissesse a você que há uma placa de desenvolvimento compatível com Arduino com Wi-Fi integrado por menos de US $ 10? Bem, existe.

E se eu dissesse a você que há uma placa de desenvolvimento compatível com Arduino com Wi-Fi integrado por menos de US $ 10?  Bem, existe.
Propaganda

O Wi-Fi é um kit essencial para qualquer projeto de DIY da Internet das Coisas (IoT), mas nosso Arduino favorito não vem com Wi-Fi e adicionar um escudo Wi-Fi pode levar o custo total para cerca de US $ 40. E se eu dissesse a você que há uma placa de desenvolvimento compatível com Arduino com Wi-Fi integrado por menos de US $ 10? Bem, existe.

Conheça o Arduino Killer: ESP8266. Foi apenas uma questão de tempo até que a coroa fosse roubada da cabeça brilhante da nossa querida placa de desenvolvimento do Arduino. É possível se apaixonar por uma placa de circuito?

Deixando de lado nomes cativantes, o ESP8266 (também conhecido como NodeMCU) foi originalmente comercializado como um complemento Wi-Fi de baixo custo para placas Arduino, até que a comunidade de hackers percebeu que você poderia cortar o Arduino completamente fora da equação.

Em menos de um ano, o ESP8266 disparou em popularidade, e agora é tão bem suportado e desenvolvido que, se você está usando o Arduino, você precisa se levantar e tomar nota. Compre um agora e siga este guia para começar a programar o seu ESP8266 - tudo a partir do familiar Arduino IDE.

Você não está limitado a usar o Arduino IDE, é claro - eles são compatíveis com Lua também (o que parece um Python enxuto para meus olhos novatos), mas já que estamos lidando com isso da perspectiva daqueles que aprenderam no Arduino, é o que vamos cobrir exclusivamente hoje.

Há muito poucos modelos de ESP8266 por aqui, mas vou em frente e recomendo este: ESP-12E (também conhecido como NodeMCU 1.0, ou o mais novo NodeMCU 2.0).

É um pouco mais caro do que os outros (US $ 6, 50 contra US $ 4!), Mas inclui o driver serial necessário para programar o chip, além de possuir um regulador de potência embutido, além de muitos pinos IO. É amplamente suportado e realmente não precisa de nada além de uma conexão USB para programação ou energia, então é mais fácil trabalhar com ele. Se você comprar qualquer outro tipo de placa ESP8266, talvez seja necessário um regulador de energia 3.3v separado e uma conexão FTDI adequada para programação.

Introdução ao ESP8266-12E e ao Arduino

Primeiro, instale os drivers seriais para esta placa. Você pode precisar desativar a assinatura KEXT se estiver executando o El Capitan devido a novos sistemas de segurança.

Em seguida, precisamos ativar o suporte para o ESP8266 a partir do gerenciador de placa do Arduino IDE. Abra as Preferences e insira o seguinte URL, onde diz URLs adicionais do Gerenciador de placa :

 http://arduino.esp8266.com/package_esp8266com_index.json 

gerenciador de placa arduino URLS

Clique em Ok, abra o Gerenciador de Placas no menu Ferramentas -> Cartão, procure por esp8266 e instale a plataforma. Agora você deve ver uma opção para o NodeMCU 1.0.

selecione placa

Deixe a CPU e a velocidade de upload como estão e selecione sua porta serial recém-instalada. No Mac, isso aparece como cu.SLAB_USBtoUART .

Como um primeiro programa, sugiro o simples scanner Wi-Fi - encontre-o em Arquivo -> Exemplos -> ESP8266WiFi -> WifiScan . Note que é muito lento para fazer o upload, mas eventualmente ele diz "concluído o upload" e nesse ponto (não antes, ou você quebrará o processo de upload), você pode abrir o monitor Serial. Você deve ver algo semelhante a isto:

teste de digitalização wi-fi esp8266
Sucesso! Agora, vamos tentar nos conectar a um.

Aqui está um código barebones absolutamente simples para se conectar a uma rede Wi-Fi. Ele não faz nada além de apenas se conectar, mas é algo que você pode adicionar mais tarde. Lembre-se de alterar o YOUR_SSID e o YOUR_PASSWORD para os detalhes do seu Wi-Fi. Upload, abra o console serial e você deve ver se está conectando.

#include const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup() { Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { } 

Não é ótimo quão ridiculamente simples foi isso?

Antes de continuarmos, aqui está o diagrama de pinagem - pode ser útil depois. Note que os números dos pinos referidos no código são os números GPIO, não os D0-16, provavelmente escritos no seu PCB da placa. Se você absolutamente, positivamente, não consegue descobrir por que um sensor não está funcionando, você provavelmente misturou os números dos pinos.

NodeMCU__v1.0_pinout

Sensor de Casa Inteligente Rápido com MQTT e DHT11

Aqui está um exemplo prático que você pode usar imediatamente para monitorar sua casa. Vamos adicionar um sensor de temperatura e umidade DHT11 e, em seguida, reportar os valores usando o protocolo MQTT pela rede Wi-Fi, no meu caso para um sistema de automação residencial OpenHAB DIY (se não, leia nosso guia para iniciantes Obtendo o OpenHAB instalado e rodando em um Raspberry Pi Introdução ao OpenHAB Home Automation no Raspberry Pi Introdução ao OpenHAB Home Automation no Raspberry Pi O OpenHAB é uma plataforma de automação residencial de código aberto e madura que é executada em uma variedade de hardware e é independente de protocolo. ele pode se conectar a praticamente qualquer hardware de automação doméstica no mercado hoje. Leia mais, e parte 2, que trata especificamente da instalação de um servidor MQTT Guia do Iniciante do OpenHAB Parte 2: ZWave, MQTT, Regras e Gráficos Guia do Iniciante do OpenHAB Parte 2: ZWave, MQTT, Rules and Charting O OpenHAB, o software de automação residencial de código aberto, excede em muito as capacidades de outros sistemas de automação residencial no mercado - mas não é fácil configurá-lo. ser francamente frustrante. Consulte Mais informação ).

No lado da fiação, conecte o sensor DHT a GND, 3.3v e ~ D4 (ou GPIO 2). Isso é tudo que precisamos por agora.

Faça o download dessas bibliotecas MQTT e DHT. Mesmo se você já os tiver, faça o download desses, faça o backup do que você tem e substitua por eles. A mais recente biblioteca DHT11 da Adafruit usa um algoritmo automático para determinar a velocidade na qual os dados são lidos a partir do sensor, mas apresenta erros no ESP8266 e 90% do tempo resulta em leituras com falha.

Com a versão antiga 1.0 da biblioteca que incluí no download, você pode alterar manualmente o tempo: 11 funciona melhor para essas placas ESP2866. Eu também passei por muitas cópias da biblioteca MQTT tentando encontrar uma boa função de retorno de chamada, finalmente chegando a uma incluída. Você precisará reiniciar o Arduino IDE após substituí-los.

Aqui está o código completo para o projeto. Na parte superior, todas as variáveis ​​que você precisa alterar, incluindo detalhes de Wi-Fi, servidor MQTT (uma URL pode ser usada em vez de usar um servidor de nuvem, embora não haja autenticação) e canais para publicação de dados.

Veja como funciona e algumas notas:

  • Primeiro, conectamos ao Wi-Fi e, em seguida, ao servidor MQTT, depois iniciamos o loop principal ().
  • No loop, pesquisamos o sensor DHT a cada 60 segundos e publicamos leituras nos canais MQTT relevantes. Novamente, se você encontrar a maioria das leituras resulta em uma mensagem de falha, você tem a versão errada da biblioteca DHT - faça o downgrade para v1.0.
  • client.loop () passa o controle para a biblioteca MQTT, permitindo que ele reaja às mensagens recebidas.
  • Há uma função messageReceived () em que lidamos com as mensagens recebidas - basta fazer uma instrução if simples para comparar a carga com a mensagem que você está esperando. Você poderia usar isso para ativar um relé, por exemplo.
  • Depois de executá-los por alguns dias, descobri que eles parariam de funcionar aleatoriamente - suponho que isso seja algum tipo de vazamento de memória, mas, como não tenho a habilidade de codificação para lidar com isso e pode ser com as bibliotecas principais, eu Optei por uma simples reinicialização suave todos os dias. Exatamente um dia depois de os sensores serem ativados pela primeira vez, eles serão reiniciados.
  • Ao alimentar esses módulos DHT11 baratos a partir de 3.3v, os valores de umidade são muito menores do que deveriam ser. Eu resolvi isso com uma simples multiplicação e calibrado contra um sensor comercial. Eu aconselho você a confirmar contra sua própria fonte conhecida também, antes de confiar nas leituras. Alternativamente, ligue-os com 5V - mas você deve colocar um shifter de nível lógico de 5v-3, 3v entre o pino de dados e o ESP8266, ou você irá danificá-lo .

Se tudo correu bem, você deve estar recebendo leituras do sensor no seu corretor MQTT, e pode prosseguir conectando-as ao OpenHAB conforme detalhado na parte 2 do nosso guia para principiantes OpenHAB Beginner's Guide Parte 2: ZWave, MQTT, Regras e Gráficos OpenHAB Beginner Guia Parte 2: ZWave, MQTT, Regras e Gráficos O OpenHAB, o software de automação residencial de código aberto, excede em muito as capacidades de outros sistemas de automação residencial no mercado - mas não é fácil de configurar. Na verdade, pode ser francamente frustrante. Leia mais, onde também mostrei como representar graficamente os dados.

gráfico de humidade de openhab

Adeus Arduino, nós te amamos tanto. Brincadeira: nem todos os lugares da minha casa conseguem até Wi-Fi, então, para esses pontos, ainda precisarei de uma rede de malha com os receptores Arduino e RF. Mas o que você vai fazer com o ESP8266? Quaisquer projetos usando ESP8266 que você gostaria de ver escrito em MakeUseOf? Deixe-nos saber nos comentários!

In this article