Índice:

Como fazer seu próprio gateway WIFI para conectar seu Arduino à rede IP?: 11 etapas (com imagens)
Como fazer seu próprio gateway WIFI para conectar seu Arduino à rede IP?: 11 etapas (com imagens)
Anonim
Como fazer seu próprio gateway WIFI para conectar seu Arduino à rede IP?
Como fazer seu próprio gateway WIFI para conectar seu Arduino à rede IP?

Como tantas pessoas, você acha que o Arduino é uma solução muito boa para automação residencial e robótica

Mas em termos de comunicação, os Arduinos só vêm com links seriais.

Estou trabalhando em um robô que precisa estar permanentemente conectado a um servidor que executa código de inteligência artificial. Tentei usar a rede RF como costumo fazer para domótica, mas não é eficiente o suficiente. Conforme o robô se move, não consigo usar o Ethernet Arduino Shield. Arduino Wifi Shield são caros e me parecem ter um design antigo.

Eu precisava de algo que pudesse trocar dados de uma forma muito simples e eficiente com um servidor.

É por isso que decidi projetar um gateway baseado no microcontrolador ESP8266 muito barato e com baixo consumo de energia

Aqui você pode descobrir como construir o componente eletrônico e fazer o download do software.

Usei este portal para automação residencial e para robótica.

Isso faz parte de uma infraestrutura de automação residencial global que você pode conferir aqui

Eu fiz outro instrutível que usa uma blindagem ESP8266 e evita a soldagem

Suprimentos

Eu escrevi outro instrutível sobre este tópico

Etapa 1: Como funciona?

Como funciona ?
Como funciona ?

O Gateway é baseado em um módulo ESP8266

Este módulo é conectado de um lado com o link serial do outro lado para a rede IP com o Wifi.

Ele atua como uma caixa preta. Os pacotes de dados vindos do link serial são enviados para uma porta IP / Udp e vice-versa.

Você só precisa definir sua própria configuração (IP, WIFI …) assim que ligar o Gateway pela primeira vez.

Ele pode transferir dados ASCII brutos e binários (sem HTTP, JSON …)

Ele é projetado para conectar objetos com softwares caseiros de servidores que precisam de transferências rápidas e frequentes de pacotes curtos de dados.

É mais fácil de usar com o Arduino Mega que tem mais de um UART (Arduino Mega, por exemplo), mas também pode ser executado com um UNO.

Etapa 2: Quais são as funções principais?

Em geral, é uma caixa preta que converte e envia dados seriais para o pacote UDP de ambas as maneiras.

Possui 3 LEDs que indicam o status e tráfego do Gateway.

Ele fornece um GPIO que pode ser usado pelo Arduino para esperar que o Gateway seja conectado por WIFI e IP.

Ele é executado em 3 modos diferentes que são configurados com interruptores:

  • Modo de gateway que é o modo normal
  • Modo de configuração usado para definir os parâmetros
  • Modo de depuração que é para o modo de depuração

A maioria dos parâmetros pode ser modificada para atender às suas necessidades.

Etapa 3: construção do material

Construção de material
Construção de material

Além do seu Arduino, você precisará

  • 1 x módulo ESP8266 - escolhi o MOD-WIFI-ESP8266-DEV da Olimex que custa cerca de 5 euros e é bastante fácil de usar.
  • Fonte de alimentação 1 x 5v
  • 1 x regulador de energia de 3,3 V - eu uso LM1086
  • 1 x 100 capacitor microfarad
  • 1 módulo APG ULN2803 (pode ser substituído por 3 transistores)
  • 8 x resistores (3 x 1K, 1 x 2K, 1 x 2,7k, 1x 3,3K, 1x 27K, 1x 33k)
  • 3 x LED (vermelho, verde, azul)
  • 1 x placa de ensaio PCB
  • alguns fios e conectores

Apenas durante as etapas de construção, você precisará

  • 1 x FTDI 3.3v para a configuração
  • Ferro de soldar e lata

Antes de soldar é importante configurar todos os componentes na placa de ensaio e verificar se está tudo ok.

Etapa 4: vamos começar com o eletrônico na placa de ensaio

Vamos começar com o eletrônico na placa de ensaio!
Vamos começar com o eletrônico na placa de ensaio!

O layout eletrônico está disponível no formato Fritzing

Você pode baixá-lo aqui na etapa 1:

github.com/cuillerj/Esp8266IPSerialGateway/blob/master/GatewayElectronicStep1.fzz

Basta fazer o esquema, tomando cuidado com a voltagem.

Lembre-se de que ESP8266 não oferece suporte a voltagem superior a 3,3v. O FTDI deve ser definido como 3,3v.

Etapa 5: vamos ao software

Vamos ao software!
Vamos ao software!

Vamos começar com o lado do Gateway

Eu escrevi o código com o Arduino IDE. Portanto, você precisa que o ESP8266 seja conhecido como placa pelo IDE. Selecione a placa apropriada com o menu Ferramentas / placas.

Se você não encontrar nenhum ESP266 na lista, isso significa que pode ser necessário instalar o ESP8266 Arduino Addon (você pode encontrar aqui o procedimento).

Todo o código de que você precisa está disponível no GitHub. É hora de fazer o download!

O código principal do Gateway está lá:

No topo do Arduino padrão e ESP8266 inclui o código principal necessário, estes 2 incluem: LookFoString que é usado para manipular strings e está lá:

ManageParamEeprom que é usado para ler e armazenar parâmetros em Eeprom ans está lá:

Depois de obter todo o código, é hora de enviá-lo para o ESP8266. Primeiro, conecte o FTDI a uma porta USB do seu computador.

Eu sugiro que você verifique a conexão antes de tentar fazer o upload.

  • Defina o monitor serial Arduino para a nova porta USB.
  • Defina a velocidade para 115200 ambos cr nl (velocidade padrão para Olimex)
  • Ligue a placa de ensaio (ESP8266 vem com software que lida com comandos AT)
  • Envie "AT" com a ferramenta serial.
  • Você deve obter "OK" em troca.

Se não, verifique sua conexão e observe as especificações do ESP8266.

Se você recebeu "OK", está pronto para fazer o upload do código

  • Desligue o breadboard, aguarde alguns segundos,
  • pressione o micro-interruptor preto do ESP8266. É normal obter algum lixo no monitor serial.
  • Pressione no IDE de upload como se fosse um Arduino.
  • Após a conclusão do upload, defina a velocidade serial para 38400.

Você verá algo como na foto.

Parabéns, você carregou o código com sucesso!

Etapa 6: vamos fazer a configuração

Vamos fazer a configuração!
Vamos fazer a configuração!

O configGPIO deve ser definido como 1 para entrar no modo de configuração

Em primeiro lugar, faça a varredura do WIFI digitando o comando: ScanWifi. Você verá uma lista da rede detectada.

  • Em seguida, defina seu SSID digitando "SSID1 = sua rede"
  • Em seguida, defina sua senha digitando "PSW1 = sua senha"
  • Em seguida, digite "SSID = 1" para definir a rede atual
  • Digite "Reiniciar" para conectar o Gateway ao seu WIFI.
  • Você pode verificar se obteve um IP inserindo "ShowWifi".
  • O LED azul ficará aceso e o LED vermelho piscando.

É hora de definir o endereço do servidor IP inserindo os 4 subendereços (servidor que executará o código de teste Java). Por exemplo:

  • "IP1 = 192"
  • "IP2 = 168"
  • "IP3 = 1"
  • "IP4 = 10"

A última etapa necessária é definir a porta de escuta do servidor UDP digitando "listenPort = xxxx".

Digite "ShowEeprom" para verificar o que você acabou de armazenar no Eeprom

Agora conecte o GPIO2 ao aterramento para sair do modo de configuração

Seu Gateway está pronto para funcionar

Existem alguns outros comandos que você pode encontrar na documentação.

Etapa 7: vamos fazer o lado do Arduino

Vamos fazer o lado do Arduino!
Vamos fazer o lado do Arduino!
Vamos fazer o lado do Arduino!
Vamos fazer o lado do Arduino!

Em primeiro lugar, conecte o Arduino

Se você tiver um Mega, será mais fácil começar. No entanto, você pode usar um Uno.

Para verificar o seu trabalho o melhor é usar o exemplo.

Você pode baixá-lo aqui:

Inclui o código SerialNetwork que está aqui:

Basta fazer o upload do código dentro do seu Arduino.

O LED verde pisca sempre que o Arduino envia dados.

Etapa 8: vamos fazer o lado do servidor

Vamos fazer o lado do servidor!
Vamos fazer o lado do servidor!
Vamos fazer o lado do servidor!
Vamos fazer o lado do servidor!

O exemplo de servidor é um programa Java que você pode baixar aqui:

Apenas execute

Olhe para o console Java.

Olhe para o monitor do Arduino.

O Arduino envia 2 pacotes diferentes.

  • O primeiro contém o status dos pinos digitais 2 a 6.
  • O segundo contém 2 valores aleatórios, o nível de tensão de A0 em mV e a contagem incremental.

O programa Java

  • imprimir os dados recebidos em formato hexadecimal
  • responder ao primeiro tipo de dados com um valor aleatório liga / desliga para ligar / desligar o LED do Arduino
  • responda ao segundo tipo de dados com a contagem recebida e um valor aleatório.

Etapa 9: É hora de soldar

É hora de soldar!
É hora de soldar!
É hora de soldar!
É hora de soldar!
É hora de soldar!
É hora de soldar!

Funciona na placa de ensaio!

É hora de torná-lo mais robusto soldando peças em um PCB

Além do que você fez com a placa de ensaio, você deve adicionar 3 conectores.

  • C1 1 x pino um que será usado para entrar no modo de rastreamento de rede.
  • C2 3 x pinos um que será usado para alternar entre o modo de execução e o modo de configuração.
  • C3 6 x pinos um que será usado para conectar o Gateway a um Arduino ou FTDI.

C1 conectado ao GPIO2 deve ser aterrado manualmente se você quiser ativar os rastreamentos de rede.

C2 conectado ao GPIO 4 pode ser definido em 2 posições diferentes. Um que foi definido para aterrar para o modo de operação normal e outro definido para 3,3 V para entrar no modo de configuração.

Defina todos os componentes no PCB de acordo com o diagrama e depois comece a soldar para obter o produto final!

Etapa 10: Vamos fazer o teste final

Image
Image

Inicie o programa de teste Java.

Conecte o Arduino.

Ligue o Gateway.

E olhe para o console Java, o monitor do Arduino, o LED do Arduino e os LEDs do gateway.

Etapa 11: Você pode adaptar este design aos seus próprios requisitos

Em relação ao hardware

  • Se você escolher outro ESP8266, terá que se ajustar às especificações.
  • Se você escolher outro regulador de 3,3 V, ele deve fornecer mais de 500 mA e você terá que adaptar o capacitor.
  • Você pode modificar os resistores de LED para ajustar o brilho.
  • Você pode suprimir todos os LEDs, mas recomendo manter pelo menos o vermelho aceso.
  • Você pode substituir o ULN2803 por 3 transistores (ou menos se você optar por não manter os 3 LEDs).
  • Fiz o teste, mas deve funcionar com placas Arduino 3.3v. Basta conectar o Tx Rx ao conector de 3,3v.

Em relação à configuração

  • Você pode armazenar 2 SSIDs diferentes e trocar
  • Você pode modificar o GPIO usado

Em relação ao software

Recomendado: