Propaganda

O Wi-Fi é um kit essencial para qualquer projeto de bricolage da Internet das Coisas (IoT), mas nosso Arduino favorito não vem com Wi-Fi, e adicionar um escudo de Wi-Fi pode elevar o custo total para cerca de US $ 40. E se eu disser a você que existe uma placa de desenvolvimento compatível com Arduino com Wi-Fi embutido 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 de nossa querida placa de desenvolvimento do Arduino. É possível se apaixonar por uma placa de circuito?

Nomes cativantes à parte, 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 hacker percebesse que você poderia cortar o Arduino da equação inteiramente.

Em menos de um ano, o ESP8266 disparou em popularidade e agora é tão bem suportado e desenvolvido que, se você estiver usando o Arduino atualmente, precisará se levantar e tomar nota.

Compre um agora, siga este guia para começar a programar seu ESP8266 - tudo a partir do familiar Arduino IDE.

Você não está limitado a usar o IDE do Arduino, é claro - eles também são compatíveis com Lua (que parece um Python reduzido ao meu iniciantes), mas como estamos lidando com isso da perspectiva daqueles que aprenderam sobre o Arduino, é isso que abordaremos exclusivamente hoje.

Existem alguns modelos de ESP8266 agora, mas vou adiante e recomendo este: ESP-12E (também conhecido como NodeMCU 1.0 ou o mais novo irmão do NodeMCU 2.0).

É um pouco mais caro que os outros (US $ 6,50 em comparação a US $ 4!), Mas inclui o driver serial necessário para programar o chip e possui um regulador de energia embutido, além de vários pinos de E / S. É amplamente suportado e realmente não precisa de nada além de uma conexão USB para programação ou energia, por isso é o mais fácil de trabalhar. Se você comprar qualquer outro tipo de placa ESP8266, poderá precisar de um regulador de energia de 3,3v separado e uma conexão FTDI adequada para programação.

Introdução ao ESP8266-12E e Arduino

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

Em seguida, precisamos ativar o suporte ao ESP8266 do gerente do conselho do Arduino IDE. Abra Preferências e digite o seguinte URL, onde diz URLs adicionais do Board Manager:

URLs do gerente da placa do arduino

Pressione Ok e abra o Gerente de Conselhos de Ferramentas -> Placa No menu, procure por esp8266 e instale a plataforma. Agora você deve ver uma opção para o NodeMCU 1.0.

selecione o conselho

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 primeiro programa, sugiro o scanner Wi-Fi simples - encontre-o em Arquivo -> Exemplos -> ESP8266WiFi -> WifiScan. Observe que é muito lento o upload, mas eventualmente ele diz "feito o upload" e, nesse ponto (não antes, ou você interromperá o processo de upload), é possível abrir o monitor serial. Você deve ver algo semelhante a este:

teste de verificação wifi esp8266
Sucesso! Agora, vamos tentar se conectar a um.

Aqui está um código absolutamente simples para conexão a uma rede Wi-Fi. Ele não faz nada além de apenas conectar, mas é algo que você pode adicionar mais tarde. Lembre-se de alterar YOUR_SSID e YOUR_PASSWORD para os seus detalhes de Wi-Fi. Faça o upload, abra o console serial e você deverá vê-lo se conectando.

 #include const char * ssid = "YOUR_SSID"; const char * senha = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Conectando a"); Serial.println (ssid); WiFi.begin (ssid, senha); while (WiFi.status ()! = WL_CONNECTED) {atraso (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado"); Serial.println ("endereço IP:"); Serial.println (WiFi.localIP ()); } void loop () {}

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

Antes de continuarmos, aqui está o diagrama de pinagem - pode ser útil mais tarde. Observe que os números de pinos mencionados no código são os números GPIO, não os D0-16 provavelmente escritos na placa de circuito impresso da sua placa. Se você absolutamente, positivamente, não consegue descobrir por que um sensor não está funcionando, provavelmente misturou os números dos pinos.

NodeMCU__v1.0_pinout

Sensor rápido inteligente para casa com MQTT e DHT11

Aqui está um exemplo prático que você pode usar imediatamente para monitorar sua casa. Adicionaremos um sensor de temperatura e umidade DHT11 e informaremos os valores usando o protocolo MQTT através da rede Wi-Fi, no meu caso para um sistema de automação residencial DIY do OpenHAB (se não, você pode ler nosso guia para iniciantes sobre como instalar o OpenHAB em um Raspberry Pi Introdução ao OpenHAB Home Automation no Raspberry PiO OpenHAB é uma plataforma madura de automação residencial de código aberto que roda em uma variedade de hardware e é independente de protocolo, o que significa que ele pode se conectar a praticamente qualquer hardware de automação residencial do mercado hoje. consulte Mais informação e parte 2, que trata especificamente de instalando um servidor MQTT Guia do Iniciante do OpenHAB Parte 2: ZWave, MQTT, Regras e GráficosO OpenHAB, o software de automação residencial de código aberto, excede em muito os recursos de outros sistemas de automação residencial no mercado - mas não é fácil de configurar. De fato, pode ser completamente frustrante. consulte Mais informação ).

No lado da fiação, conecte o sensor DHT ao GND, 3.3ve ~ D4 (ou GPIO 2). É tudo o que precisamos por enquanto.

Baixar essas bibliotecas MQTT e DHT. Mesmo se você já os tiver, faça o download desses de qualquer maneira, faça backup do que você possui e substitua-os. A mais recente biblioteca DHT11 da Adafruit usa um algoritmo automático para determinar a velocidade na qual os dados são lidos no sensor, mas estão com erros no ESP8266 e 90% do tempo resulta em falha leituras.

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

Aqui está o código completo para o projeto. No topo estão todas as variáveis ​​que você precisa alterar, incluindo detalhes de Wi-Fi, servidor MQTT (um URL pode ser usado em vez disso, se estiver usando um servidor em nuvem, embora não exista autenticação) e canais para publicar dados.

Veja como funciona e algumas notas:

  • Primeiro, nos conectamos ao Wi-Fi, depois ao servidor MQTT, depois começamos o processo principal. ciclo().
  • No loop, pesquisamos o sensor DHT a cada 60 segundos e publicamos leituras nos canais MQTT relevantes. Novamente, se a maioria das leituras resultar em uma mensagem de falha, você tem a versão errada da biblioteca DHT - faça o downgrade para a v1.0.
  • client.loop () passa o controle para a biblioteca MQTT, permitindo que ele reaja às mensagens recebidas.
  • Há um mensagem recebida() função em que lidamos com mensagens recebidas - basta fazer uma declaração if simples para comparar a carga útil com a mensagem que você espera. Você pode usar isso para ativar um relé, por exemplo.
  • Depois de executá-los por alguns dias, descobri que eles parariam de funcionar aleatoriamente - presumo que seja algum tipo de vazamento de memória, mas, dado Eu não tenho a habilidade de codificar para lidar com isso e pode ser com as bibliotecas principais. Optei por uma redefinição simples e simples a cada dia. Exatamente um dia após a ativação dos nós dos sensores, eles serão reiniciados automaticamente.
  • Ao alimentar esses módulos DHT11 baratos a partir de 3,3v, os valores de umidade são muito mais baixos do que deveriam. Resolvi isso com uma multiplicação simples e calibrei contra um sensor comercial. Recomendamos que você confirme também sua fonte conhecida antes de confiar nas leituras. Como alternativa, alimente-os com 5V - mas você deve colocar um deslocador de nível lógico de 5v-3.3v entre o pino de dados e o ESP8266 ou poderá danificá-lo.

Se tudo correu bem, agora você deve receber leituras de sensor em seu broker MQTT e pode conectá-las ao OpenHAB conforme detalhado em parte 2 do nosso guia para iniciantes Guia do Iniciante do OpenHAB Parte 2: ZWave, MQTT, Regras e GráficosO OpenHAB, o software de automação residencial de código aberto, excede em muito os recursos de outros sistemas de automação residencial no mercado - mas não é fácil de configurar. De fato, pode ser completamente frustrante. consulte Mais informação , onde também mostrei como representar graficamente os dados.

gráfico de humidade do openhab

Adeus Arduino, nós te amamos muito. Brincadeirinha: nem todos os locais da minha casa conseguem acesso Wi-Fi; portanto, para esses pontos, ainda precisarei de uma rede de malha com receptores Arduino e RF.

Para um projeto divertido, confira como fazer um botão Wi-Fi com o ESP8266 Como fazer seu próprio botão conectado Wi-Fi com o ESP8266Neste tutorial, você aprenderá como criar um botão habilitado para Wi-Fi usando o NodeMCU e o IFTTT. consulte Mais informação .

Mas o que você fará com o ESP8266? Algum projeto usando o ESP8266 você gostaria de ver escrito em MakeUseOf? Deixe-nos saber nos comentários!

James é bacharel em Inteligência Artificial e possui certificação CompTIA A + e Network +. Ele é o principal desenvolvedor do MakeUseOf e passa seu tempo livre jogando paintball e jogos de tabuleiro em VR. Ele está construindo PCs desde que era criança.