You are on page 1of 15

www.afeletronica.com.

br

Manual Módulo Desenvolvimento AFSmart INT 011608

www.afeletronica.com.br

AFSmart Módulo Desenvolvimento INT 011608 Página 1


www.afeletronica.com.br

A placa Desenvolvimento ESP8266 ESP-12F Versão INT 011608 foi concebida pela AFEletrônica de
forma a facilitar a vida do programador/desenvolvedor.

Módulo Desenvolvimento AFSmart INT 011608

Nota: sua placa pode possuir mais ou menos funções do aqui descrito, no entanto o manual
cobre ambos os tipos de montagem, na leitura sempre atente para o modelo adquirido.

Especificações Módulo Desenvolvimento


Tensão de operação: 100~240Vac

Cuidado ao trabalhar com energia elétrica, choque elétrico pode matar, use corretamente os
equipamentos de segurança.

Contatos: NA, 1 NF e o Comum.


Rele: 30 VDC ~ 5A - 125VAC ~ 10A ou 250Vac ~ 5A
Led’s indicadores: Alimentação/Rele acionado
Dimensões: 70mm x 48mm x 20mm

Especificações ESP12F
Padrão 802.11 b/g/n
Wi-Fi Direct (P2P), soft-AP
Stack TCP/IP integrada
CPU 32 bits de baixo consumo inegrada (você pode executar seus programas diretamente no módulo,
dispensando microcontrolador externo)
SDIO 1.1/2.0, SPI, UART
Modos: Estação / Access Point
Segurança: WPA, WPA2
ADC 10 bits
Modelo ESP-12F
4Mbyte Flash - memória programa

Conexão direta do Conversor USB-Serial ao módulo de Desenvolvimento, sem necessidade de conexão


de jumpers. Conexões muito mais limpa e rápida para desenvolvimento de suas aplicações.
Botão Reset e Program(PGM) direto na placa, tudo o que você precisa em uma única placa para você
pensar no desenvolvimento do software e não perder tempo com montagens e mau contatos.

Figura1

AFSmart Módulo Desenvolvimento INT 011608 Página 2


www.afeletronica.com.br

Ligando Botão tipo Pulsador ao Módulo ( Pulsador tipo Minuteria ou Campainha)

Figura2

Pinaout Conector Central do Módulo

Figura3

AFSmart Módulo Desenvolvimento INT 011608 Página 3


www.afeletronica.com.br

Instalando o Driver PL2303

Abra propriedades de seu computador/Gerenciador de Dispositivos, para verificar se o mesmo não foi
reconhecido automaticamente pelo Windows.

Figura 4

Importante.
Caso tenha reconhecido automaticamente, procure enviar sua aplicação pela IDE do Arduino, se não
houver sucesso no envio, o mesmo pode estar desatualizado, desinstale e instale a versão mais atual
do driver, o mesmo se encontra dentro do pacote de distribuição da placa. Sempre atente para a versão
de seu Windows, 32 ou 64 bits para realizar a instalação do driver correto.

Instale o driver sem a placa estar conectada ao computador, uma vez realizada a instalação do driver,
caso necessário reinicie o computador, após conecte a placa para o reconhecimento automático da
mesma.

Escolhendo a Placa na IDE

Escolha a placa ESP8266 conforme imagem abaixo.

Figura 5

AFSmart Módulo Desenvolvimento INT 011608 Página 4


www.afeletronica.com.br

Em porta escolha a serial que foi atribuída à placa. Caso apareça mais de uma COM em Porta, Vá até
gerenciador de dispositivos do Windows, desconecte a placa, conecte novamente para verificar a serial
que foi atribuída à placa, esta devera ser escolhida em Porta

Módulo desenvolvido e testado na versão IDE Arduino 1.6.5, versões superiores não testado.

Se sua IDE não possuir a placa ESP8266, instale seguindo o seguinte procedimento:

1- Em Arquivos\Preferências no retângulo em laranja adicione o seguinte caminho:


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

Figura 6

2- Em Ferramentas\BoadManager clique na opção em laranja:

Figura 7

3- Vá até ao final, clique para realizar a instalação das placas ESP8266

AFSmart Módulo Desenvolvimento INT 011608 Página 5


www.afeletronica.com.br

Figura 8

4- Pronto sua IDE esta pronta para trabalhar com módulos ESP8266

Para enviar seu código para a placa, a mesma deve estar alimentada, não basta somente conectar o
adaptador USB-Serial ao módulo de desenvolvimento.

Enviando sua aplicação ao módulo de desenvolvimento:

Figura 9

1. Pressione e segure simultaneamente os botões RESET e PGM


2. Solte o Botão RESET mantendo PGM pressionado
3. Solte Botão PGM
4. ... Pronto envie sua aplicação, o módulo já esta no modo de receber sua
aplicação.

AFSmart Módulo Desenvolvimento INT 011608 Página 6


www.afeletronica.com.br

Atualizando/Gravando bootloader ESP8266 caso necessário

Há outros programas para atualização/gravação do bootloader do ESP8266, iremos falar do ESP8266


V0.9.2.3, provavelmente quando você ler este documento já exista versões mais atuais, bem como na
língua inglesa ou em português, mas iremos descrever este, uma vez que o utilizamos com frequência.

Tela de configuração do que será atualizado, mude apenas o que indica o circulo em laranja, o arquivo
.bin não fornecemos, mas você pode baixar no site oficial do fabricante do ESP8266, este é um
exemplo de como realiza-lo.

Escolha o Arquivo que você irá utilizar no seu computador, conforme Figura 10

Figura 10

1. Pressione e segure simultaneamente os botões RESET e PGM


2. Solte o Botão RESET mantendo PGM pressionado
3. Solte Botão PGM
4. ... Pronto, seu módulo já pode ser atualizado

Clique no Botão atualizar, conforme Figura 11

Figura 11

AFSmart Módulo Desenvolvimento INT 011608 Página 7


www.afeletronica.com.br

Todas nossas placas seguem com o Bootloader conforme informações

Vendor:www.ai-thinker.com
SDK Version:0.9.5(b1)
Compiled @:Dec 25 2014, 21:50:58
Ready

Para baixar o Bootloader Compiled @:Dec 25 2014, 21:50:58 acesse


http://files.afeletronica.webnode.com/200000104-42f1d44e6c/AI-v0.9.5.0%20AT%20Firmware.bin

Para baixar o Bootloader para ser usado em linguagem de programação lua acesse:
http://files.afeletronica.webnode.com/200000105-73ba774b35/nodemcu_float_0.9.6-dev_20150704.bin

Para visualizar estas informações, basta alimentar a placa, em um emulador terminal como por exemplo
o RealTerm, ou um de sua preferência, escolher a porta serial que foi atribuída para o conversor USB-
Serial, configurar na velocidade 115200, abrir a porta, pressionar o botão RESET da placa de
desenvolvimento, será mostrado as informações como na Figura 12.

Nota. Se a placa já estiver sido gravada utilizando a IDE do Arduino, estas informações não valem
mais, uma vez que o Arduino realiza a atualização para o bootloader dele. Isso vale apenas quando
você receber a placa e quiser verificar qual a versão do bootloader esta gravada ao módulo.

Figura12

Tabela com os principais commandos AT para esta versão de FIRMWARE Compiled @:Dec 25 2014,
21:50:58, lembramos que para outras versões os comandos podem ser diferentes, você terá que
procurar para a sua versão, estes comandos ou a maioria deles funcionam na versão que segue com
nossos produtos. A saber:

AFSmart Módulo Desenvolvimento INT 011608 Página 8


www.afeletronica.com.br

ESP8266 AT Command Set

Function AT Command Response


Working AT OK
OK [System Ready, Vendor:www.ai-
Restart AT+RST thinker.com]
Firmware version AT+GMR AT+GMR 0018000902 OK
List Access Points AT+CWLAP AT+CWLAP +CWLAP:(4,"RochefortSurLac",-
38,"70:62:b8:6f:6d:58",1)
+CWLAP:(4,"LiliPad2.4",-
83,"f8:7b:8c:1e:7c:6d",1)
OK
Query AT+CWJAP? +CWJAP:"RochefortSurLac"
Join Access Point AT+CWJAP? OK
AT+CWJAP="SSID","Password"
Quit Access Point AT+CWQAP=? Query
AT+CWQAP OK
Get IP Address AT+CIFSR AT+CIFSR 192.168.0.105
OK
Set Parameters of AT+ CWSAP? Query
Access Point AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn> ssid, pwd
chl = channel, ecn = encryption
WiFi Mode AT+CWMODE? Query
AT+CWMODE=1 STA
AT+CWMODE=2 AP
AT+CWMODE=3 BOTH
Set up TCP or UDP AT+CIPSTART=? Query
id = 0-4, type = TCP/UDP, addr = IP address,
connection (CIPMUX=0) AT+CIPSTART = port= port
<type>,<addr>,<port>
(CIPMUX=1) AT+CIPSTART=
<id><type>,<addr>, <port>
TCP/UDP AT+ CIPMUX? Query
Connections AT+ CIPMUX=0 Single
AT+ CIPMUX=1 Multiple
Check join devices' IP AT+CWLIF
TCP/IP Connection AT+CIPSTATUS AT+CIPSTATUS? no this fun
Status
Send TCP/IP data (CIPMUX=0) AT+CIPSEND=<length>;
(CIPMUX=1) AT+CIPSEND= <id>,<length>
Close TCP / UDP AT+CIPCLOSE=<id> or AT+CIPCLOSE
connection
mode 0 to close server mode; mode 1 to open;
Set as server AT+ CIPSERVER= <mode>[,<port>] port = port
Set the server AT+CIPSTO? Query
timeout AT+CIPSTO=<time> <time>0~28800 in seconds
AT+CIOBAUD?
Baud Rate* AT+CIOBAUD=115200 Query AT+CIOBAUD? +CIOBAUD:9600 OK
Supported: 9600, 19200, 38400, 74880,
115200, 230400, 460800, 921600
Check IP address AT+CIFSR AT+CIFSR 192.168.0.106
OK
Firmware Upgrade AT+CIUPDATE 1. +CIPUPDATE:1 found server

AFSmart Módulo Desenvolvimento INT 011608 Página 9


www.afeletronica.com.br

(from Cloud) 2. +CIPUPDATE:2 connect server


3. +CIPUPDATE:3 got edition
4. +CIPUPDATE:4 start update
Received data +IPD (CIPMUX=0): + IPD, <len>:
(CIPMUX=1): + IPD, <id>, <len>: <data>
Watchdog, auto restart when program errors
Watchdog Enable* AT+CSYSWDTENABLE occur: enable
Watchdog, auto restart when program errors
Watchdog Disable* AT+CSYSWDTDISABLE occur: disable
Read GPIO0 AT+CIOREAD=0 Return Value pin GPIO0
Read GPIO2 AT+CIOREAD=2 Return Value pin GPIO2
0 = LOW
Write Value in GPIO0 AT+CIOWRITE=0,x 1 = HIGH
0 = LOW
Write Value in GPIO2 AT+CIOWRITE=2,x 1 = HIGH

AFSmart Módulo Desenvolvimento INT 011608 Página 10


www.afeletronica.com.br

Informações de interesse sobre os módulos ESP8266 – para programação


em LUA
Fonte: http://esp8266.co.uk/tutorials/introduction-to-the-gpio-api/

Defina o modo do pino


Ao usar pinos GPIO primeiro precisamos especificar no modo que nós gostaríamos de usá-lo. Existem
três modos nos quais um pino pode ser controlado:

Mode Reference Description

Input gpio.INPUT Poll a pin to get its value.

Output gpio.OUTPUT Assign a pin its value.

Same as input + set a callback to be executed every time a pin’s


Interrupt gpio.INT
value changes.

Ao definir um pino para um desses modos, usamos a função gpio.mode ():

gpio.mode(pin1, gpio.INPUT) -- set pin1 to input mode


gpio.mode(pin2, gpio.OUTPUT) -- set pin2 to output mode
gpio.mode(pin3, gpio.INT) -- set pin3 to interrupt mode

As configurações são bastante simples. Mas há algumas particularidades referente à este módulo

Você pode pensar que o valor de pin1, pin2 e pin3 são os números sobre os pinos GPIO certo? Se você
pensou que sim, nós também pensamos, mas não é assim tão fácil. O primeiro argumento para
gpio.mode () (e outras funções GPIO) é realmente um índice IO.

índices IO mapear para os mesmos pinos GPIO em todos os módulos, mas eles não são mapeadas em
qualquer ordem particular. Em vez disso você terá que memorizá-los todos, ou manter referindo-se a
esta tabela:

GPIO pin IO index

GPIO0 3

GPIO1 10

GPIO2 4

GPIO3 9

AFSmart Módulo Desenvolvimento INT 011608 Página 11


www.afeletronica.com.br

GPIO pin IO index

GPIO4 2

GPIO5 1

GPIO6 N/A

GPIO7 N/A

GPIO8 N/A

GPIO9 11

GPIO10 12

GPIO11 N/A

GPIO12 6

GPIO13 7

GPIO14 5

GPIO15 8

GPIO16 0

Portanto, se você quer definir GPIO para o modo de saída:


gpio.mode(4, gpio.OUTPUT)

Se você quer usa-lo no modo de Interrupção:


gpio.mode(3, gpio.INT)

Usando pino como Saída:


Vamos definir alguns pinos de saída como baixo (0V) ou alta (3.3V).
gpio.write()

Assim, para definir GPIO como nível Alto HIGH ou nível baixo LOW:

gpio.mode(3, gpio.OUTPUT)
gpio.write(3, gpio.HIGH)

gpio.mode(4, gpio.OUTUT)
gpio.write(4, gpio.LOW)

AFSmart Módulo Desenvolvimento INT 011608 Página 12


www.afeletronica.com.br
Usando o pino como entrada:
Igualmente podemos perguntar se um pino de entrada está em nível baixo ou nível alto. Fazemos isso
usando gpio.read()

Vamos imprimir o valor atual de GPIO2:

gpio.mode(4, gpio.INPUT)
local pinValue = gpio.read(4)

if pinValue == gpio.LOW then


print 'GPIO2 is low'
else
print 'GPIO2 is high'
end

Usando no modo de Interrupção:

Se queremos saber quando as mudanças de valor de um pino (ex., Quando um botão é pressionado),
poderíamos definir o pino para o modo de entrada e continue lendo o seu valor. Uma melhor solução,
no entanto, seria utilizar o modo de interrupção. Dessa forma, podemos criar uma função e configurá-lo
para ser chamado cada vez que altera o valor do pino.

Vamos definir que as chamadas de retorno são chamadas quando usando gpio.trig (). Vamos escrever
para o console quando GPIO 2 altera o valor:

local pin = 4 --> GPIO2

function onChange ()
print('The pin value has changed to '..gpio.read(pin))
end

gpio.mode(pin, gpio.INT)
gpio.trig(pin, 'both', onChange)

O segundo argumento para gpio.trig () é o nome do evento para o qual a ouvir. Como você pode ver, no
exemplo anterior, estamos ouvindo o evento ambos; Isso ocorre tanto quando o pino se move de cima
para baixo e quando ele se move baixa para alta.

Há vários eventos em um pino para o qual você pode ouvir/ler:

Event name Description

up Ocorre quando o pino se move para cima.

AFSmart Módulo Desenvolvimento INT 011608 Página 13


www.afeletronica.com.br

Event name Description

down Ocorre quando o pino se move para baixo.

both Ocorre quando o pino se move para cima ou para baixo.

low Occurs repeatedly while the pin is low.

high Occurs repeatedly while the pin is high.


Debouncing

Ao usar botões de hardware, pela primeira vez você pode perceber algo estranho: quando você
pressiona um botão para baixo há mudanças no valor do pino, muda novamente e finalmente se
estabelece no novo valor mais uma vez. Isso é chamado de salto de contato e é comum.

A maneira mais simples para atenuar contra esta rejeição é ignorar eventos para um curto período de
tempo após uma alteração que o estado ocorreu. Isso é chamado de debouncing.

A seguir mostra como você pode fazer um Debounce:

local pin = 4 --> GPIO2

function debounce (func)


local last = 0
local delay = 200000

return function (...)


local now = tmr.now()
if now - last < delay then return end

last = now
return func(...)
end
end

function onChange ()
print('The pin value has changed to '..gpio.read(pin))
end

gpio.mode(pin, gpio.INT)
gpio.trig(pin, 'both', debounce(onChange))

A função de debounce() assume uma função como seu argumento e envolve-o em outro. Quando a
função exterior é chamada, que, em seguida, chama a função interna, mas somente se ele não foi
chamado nos últimos 5000us (5 ms).

AFSmart Módulo Desenvolvimento INT 011608 Página 14


www.afeletronica.com.br

Nota: módulo testado na IDE ARDUINO versão 1.6.5


Pinout Módulo Funções

PINO DESCRIÇÃO FUNÇÃO Acionamento/Leitura


1 RESET RESET -
2 ADC 10bits LDR1 Leitura ADC 10 bits
3 CHP_D - -
4 GPI0_16 Rele1 (RL1) Acionamento nível baixo
5 GPI0_14 Rele2 (RL2) Aciona com Nível baixo
6 Leitura Nível baixo_Acionamento nível
GPIO_12 Entrada para pulsador CN1_4
alto até 20Vdc
7 Protocolo transmissão (usar um ou
GPI0_13 IR_TX (TX1) & CONECTOR TX1_4
outro)
8 VCC 3V3
9 CS0 Não usado, Barramento de Memória do ESP8266
10 MISO Não usado, Barramento de Memória do ESP8266
11 GPIO_09 Não usado, Barramento de Memória do ESP8266
12 GPIO_10 Não usado, Barramento de Memória do ESP8266
13 MOSI Não usado
14 SCLK Não usado
15 GND GND
16 GPIO_15 CONECTOR TX1_3 Uso Geral tensão máxima entrada 3v3
17 Sensor DS18B20 ou CONECTOR
GPIO_2 Protocolo de comunicação
TX1_1
18 GPI0_0 PGM / CONECTOR TX1_2 Protocolo de comunicação
19 Leitura Nível baixo_Acionamento nível
GPI0_04 Entrada para pulsador CN1_4
alto até 20Vdc
20 GPI0_05 IR_RX_LFN Protocolo comunicação
21 RX RX Comunicação Serial
22 TX TX Comunicação Serial
Nota: Nível máximo de sinal de entrada no Conector TX1 deve ser 3v3.
Os pinos 01/02/03/04 possuem um resistor de 4k7 em série
Pino 05 = 3v3
Pino 06 = GND
Pino 07 = Vreg

Circuito acionamento Rele GPIO_14 & GPIO16 Circuito Leitura GPIO_04 & GPIO12

Versão Manual 00  Criação


Versão Manual 01  imagem de como ligar pulsador
Versão Manual 02  imagem Pinout conector central do módulo

AFSmart Módulo Desenvolvimento INT 011608 Página 15

You might also like