domingo, 3 de janeiro de 2016

Iniciando em IoT com a placa D1 da Wemos.cc, um ESP8266 compatível com Arduino - Parte 1

Sobre


Com a popularização da placa Arduino, e o crescimento da internet das coisas (IoT), diversos produtos estão surgindo para suprir a necessidade dos desenvolvedores, e o seguinte texto irá mostrar um pouco sobre uma dessas opções, a placa “Wemos D1”.

Introdução


O ESP8266 é um microcontrolador fabricado pela empresa chinesa Espressif, que inclui capacidade de comunicação por Wi-Fi. Ele ficou famoso e se espalhou muito rapidamente devido ao seu baixo preço (cerca de US$4,00 pelo chip), o que é um valor semelhante a um microcontrolador sem interface de internet.

Após o seu lançamento diversas placas contendo o ESP8266 foram lançadas. Abaixo algumas delas:




Entre elas irei destacar a ESP12-E, que é uma das últimas versões, e que pode ser programada utilizando-se o NodeMCU, um firmware open-sourse que permite programar o ESP8266 usando a linguagem de programação Lua. Essa placa também pode ser programada diretamente pelo Arduino IDE, como a Wemos D1, mas esse não será o tema DESSE artigo.


Wemos D1


A Wemos D1 (http://www.wemos.cc) é o passo seguinte na evolução das placas que utilizam o chip ESP8266. Nesse caso a placa tem como objetivo ocupar o lugar de placas como a Arduino UNO, tendo o seu formato e a disposição dos pinos muito semelhantes ao UNO, além de ser compatível com alguns shields para Arduino existentes, SE estes trabalharem com 3,3V como níveis de tensão.


Características da Wemos D1:

MicrocontrollerESP-8266EX 
Operating Voltage3.3V
Digital I/O Pins11
Analog Input Pins1 (3.3V max)
Clock Speed80MHz/160MHz

Além de:
  • uma conexão Micro USB
  • um conector de energia do tipo "power jack", que aceita entre 9-24V de alimentação



Maiores detalhes podem ser vistos no site do fabricante: http://www.wemos.cc/wiki/doku.php?id=en:d1


E não é apenas o formato, ela também pode ser programada utilizando-se a IDE do Arduino! [https://github.com/esp8266/Arduino]

A seguir o passo-a-passo de como você poderá configurar a IDE do Arduino para funcionar com a Wemos D1.


Instalação


Antes de mais nada, a Wemos D1 possui o chip Ch340G, que é um conversor USB/UART. Para poder usar uma placa com esse chip, um driver de dispositivo será necessário, e deverá ser baixado em http://www.wemos.cc/wiki/doku.php?id=en:ch340g. Faça o download do driver indicado para o seu sistema operacional e o instale em seguida.

No Mac OS X


No meu caso eu utilizei o driver para o MacOSX. Ainda não testei a placa em um computador com Windows ou Linux. Talvez seja necessário reiniciar o computador após a instalação do driver.

Bom, o método acima funcionou no OS X Maverick, mas não no El Captain. Para este último tive que fazer mais algumas mudanças, como pode ser visto em http://tzapu.com/making-ch340-ch341-serial-adapters-work-under-el-capitan-os-x/

Resumidamente:

- Reiniciar o computador e pressionar COMMAND + R imediatamente após ouvir o som de início do sistema, para poder entrar no Modo Recovery
- Abrir o Terminal dentro do Recovery Mode
- Rodar o seguinte comando: csrutil enable --without kext
- Reiniciar

Feito isso, a placa finalmente aparecerá listada lá em Porta, no Arduino.


Configuração do ambiente


Utilizei a versão 1.6.5 do IDE Arduino para utilizar com a Wemos D1. Para configurar o ambiente segui as instruções do site que contém as libs do ESP8266 para a IDE do Arduino (https://github.com/esp8266/Arduino).

Na parte de preferências do sistema do IDE Arduino, procure por Additional Boards Manager URLs, e adicione a seguinte linha: http://arduino.esp8266.com/stable/package_esp8266com_index.json




Feito isso o IDE irá baixar os arquivos necessários e você poderá utilizar diversas placas com o chip ESP8266, dentre elas, a Wemos D1.



Selecione a porta correta de onde a placa está conectada, e altere a velocidade da placa para 115200 bps.


Nesse ponto eu já consegui gravar a placa e tudo estava aparentemente normal. Mas, se não estou enganado, tive que instalar o pySerial quando estava usando Maverick. No meu caso, #sudo pip install pyserial

“Hello World”


A seguir um programa super simples (um "pisca led") que irá servir apenas para você saber se fez tudo certo e conseguiu programar a placa corretamente. O LED em questão é o que já vem conectado a placa ESP8266.

------------------------------------------------------------------------------
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 */

// the setup function runs once when you press reset or power the board

void setup() {
  // initialize BUILTIN_LED as an output.
  pinMode(BUILTIN_LED, OUTPUT);
}

// the loop function runs over and over again forever

void loop() {
  digitalWrite(BUILTIN_LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(5000);                       // wait for a second
  digitalWrite(BUILTIN_LED, LOW);    // turn the LED off by making the voltage LOW
  delay(5000);                       // wait for a second
}
------------------------------------------------------------------------------

Diversos códigos de exemplo de como utilizar a placa estão disponíveis no IDE do Arduino, após você ter configurado para utilizar a Wemos D1. Vale MESMO a pena dar uma olhada.


Conclusão


O código apresentado não é nada útil, ainda mais com essa placa, cujo principal uso é conectar algo a internet. Na parte dois desse artigo iremos conecta-la à sua rede wifi local e receber/enviar alguns comandos via browser. Até lá! =D

P.S.: enquanto eu ainda estava escrevendo esse artigo uma atualização dessa placa foi lançado, sendo denominada Wemos D1 R2. Mais detalhes em http://www.wemos.cc/wiki/doku.php?id=en:d1_r2


Links:




Referências:





3 comentários:

  1. Parabéns, Maurício, pelo ótimo blog e excelente post!
    Estou iniciando com a placa D1 Wemos e gostaria de saber mais sobre as opções de webserver que a placa possibilita.
    Poderia abordar este ponto na parte 2 deste post?

    ResponderExcluir
  2. Aguardando a parte 2 deste assunto, muito bom este primeiro!

    ResponderExcluir
  3. Aguardando a parte 2 deste assunto, muito bom este primeiro!

    ResponderExcluir