Usando Wifi com a placa WedMos D1

Olá a todos

Nesse post mostraremos a placa WebMos D1, que é uma placa compatível com o padrão Arduino, mas possuí um chip ESP8266 no lugar do Atmel. A placa possuí uma pinagem semelhante à do Arduino Uno, porém apresenta apenas um pino analógico. Em contrapartida a D1 por utilizar o ESP8266 já possuí uma placa de Wifi, dispensando o uso de placa externas ou Shields. 

Placa WebMos D1
Placa WebMos D1

Para utilizar essa placa no IDE do Arduino devemos antes instalar os arquivos da placa. O primeiro passo é configurarmos o IDE para que ele possa baixar esses arquivos. Para isso vá no menu File, submenu Preferences. Será aberta uma tela de configuração do IDE. No campo Additional Boards Manager URLs informe o endereço em que o IDE pode baixar os arquivos da D1: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Em seguida clique em OK. Para finalizar feche todas as telas do IDE e abra-o novamente.

Configurando o IDE
Configurando o IDE

Para instalar os arquivos da placa, vá no Tools, submenu Board e escolha o item Board Manager. Será aberta uma tela para instalação de arquivos de diversos modelos de placa compatíveis com Arduino. Role a lista até localizar o item esp8266 by ESP8266 Community, selecione esse item e clique no botão Install. Após instalar os arquivos da placa reinicie novamente o IDE.

Instalando os arquivos da placa
Instalando os arquivos da placa

Com o IDE configurado, passaremos para o uso. Conecte a placa ao computador utilizando a porta USB e aguarde ele ser reconhecido. Em seguida vá no menu Tools, Board e selecione o item WebMos D1 R2 & mini.

Passaremos agora para o desenvolvimento de um código que utilize uma conexão Wifi, que é o grande diferencial dessa placa. O primeiro passo é incluirmos os arquivos que contém os objetos para controlarmos a D1, esses dois arquivos são ESP8266Wifi.h e ESP8266HTTPClient.h. Em seguida declare dois arrays do tipo char que armazenam o nome da rede Wifi e a senha de acesso à ela:

Adicionando os header
Adicionando os header

Em seguida crie uma função chamada setup_wifi com o código abaixo. Esse código exibe o nome da rede Wifi e solicita a conexão através do método begin do objeto Wifi. Em seguida é aguardado que a conexão seja estabelecida para em seguida imprimir o endereço IP que foi atribuído à placa, confirmando que a conexão está ok.

Função setup_wifi
Função setup_wifi

Na função setup, configure a porta serial para a velocidade de 9600bps e chame a função setup_wifi:

Função Setup
Função Setup

Passaremos agora para a função loop, que fará uma requisição HTTP. Primeiro confirme que a conexão Wifi continue ative e caso contrário execute novamente a função wifi_setup.

Com a conexão ativa, crie um objeto do tipo HttpClient e configure o endereço da requisição através do método Begin desse objeto. Para executar a requisição e obter o código de retorno utilize o método GET.

Por fim o código verifica o resultado da requisição e escreve na porta serial o conteúdo da resposta da requisição. Caso a requisição tenha falhado o código exibe o erro.

Por fim chame a função end do objeto HttpClient para encerrar essa requisição e utilize a função delay para aguardar algum tempo, no exemplo utilizei 10 segundos.

Função Loop
Função Loop

Por fim compile o programa e transfira para a placa. Note que a compilação para essas placa leva mais tempo que para um Arduino Uno ou Nano. Após transferido o programa abra o monitor serial e verifique a execução do programa.

Obrigado a todos e até o próximo post!

Onde encontrar:

Identificando obstáculos com Infravermelho

Olá a todos,

nesse post mostraremos como podemos utilizar um sensor de infravermelho para identificar objetos que estejam próximos ao sensor para tomar alguma ação. Podemos utilizar o sensor para disparar alarmes ou mesmo para acionar os braques de um veículo controlador por um Arduino, Raspberry PI ou outros microcontroladores/microprocessadores.

Esse sensor é bem simples de utilizar. Ele é composto de um pino alimentação, um pino que deve ser ligado ao terra e um pino digital. Assim que um objeto ou obstáculo esteja a uma distância inferior a distância estabelecida o pino digital é acionado. A distância miníma de acionamento é configurada através de um potêncimetro que está na placa.

Sensor de obstáculo por IR
Sensor de obstáculo por IR

Primeiro faremos as conexões entre o sensor e o Arduino:

  • conecte o pino VCC do sensor no pino +5V do Arduino;
  • conecte o pino GND do sensor em um pino GND do Arduino;
  • Conecte o pino OUT do sensor em um pino digital do Arduino.

No exemplo conectamos o sensor diretamente com o Arduino utilizando cabos macho-femea, mas também é possível colocar o sensor em uma protobard e conectá-lo ao Arduino com cabos do tipo macho-macho.

Motagem do circuito
Motagem do circuito

Passaremos agora para o desenvolvimento do código: primeiro declare uma variável que indicará em qual pino digital o sensor está conectado.

Em seguida na função setup, inicie a porta serial para verificar o funcionamento do sensor e configure o pino para entrada (INPUT).

Por fim, na funçao loop faça a leitura do pino digital onde o sensor está conectado com a função digitalRead. No exemplo verificamos o valor do pino (HIG/LOW) para exibir uma mensagem na porta serial, mas você poderá dispara outras ações.

Código do projeto
Código do projeto
Testando o projeto
Testando o projeto

Obrigado a todos e até o próximo post!

Onde encontrar:

Acessando a internet com o Arduino

Olá a todos,

Nesse post mostraremos como colocar o Arduino na nossa rede local para acessar servidores nela ou mesmo na internet através do Shield Ethernet. Nesse exemplo acessaremos o Google solicitando sua página inicial.

Note que neste Shield temos também um conector para cartões micro SD, logo podemos utilizá-lo para armazenar ou ler dados desse tipo de cartão de memória.

Shield Ethernet
Shield Ethernet

Para utilizarmos o Shield o primeiro passo é conectá-lo ao Arduino através dos seus pinos inferiores. Para isso encaixe o Shield em cima do Arduino com cuidado para não entortar nenhum pino do Shield.

Shield montado
Shield montado

O próximo passo é determinar um MAC Address, que é um identificador de placas de rede de computadores, e o endereço IP que o Shield terá na rede local. Você pode utilizar um MAC Address qualquer, desde que não esteja em uso por outro equipamento na mesma rede. Para verificar se o MAC Address escolhido não está em uso consulte a tabela de conexões ativas de seu roteador. O MAC Address deve possuir o formato de 6 blocos de números onde cada número é composto de 2 algarismos hexadeciamais. Um exemplo é: 00 AA BB CC DE 02.

Para testar o Shield com o MAC Address escolhido abra o arquivo de exemplo que acompanha o IDE do Arduino chamado DhcpAddressPrinter. Altere o MAC Address que está no início do código e execute o programa. Se tudo estiver correto será impresso o endereço IP que o roteador atribuiu para a placa:

Declaração dos objetos
Declaração dos objetos
Recuperando IP da placa
Recuperando IP da placa

Agora passaremos para o código que fará a requisição e mostrará o resultado. Primeiro inclua os arquivos SPI.h e Ethernet.h ao código através da função #include. Em seguida declare o MAC Address e o endereço IP que serão utilizados.

O MAC Address é representado por um array de bytes e o endereço IP é representado por um objeto do tipo IPAddress. Os parâmetros de construção do objeto IPAddress são os octetos do endereço IP separados por virgula.

Declaração dos objetos
Declaração dos objetos

Para realizarmos a conexão utilizaremos o objeto EthernetClient. Declare esse objeto no código e também um array de bytes que deverá conter o endereço IP do servidor para o qual faremos a requisição, no nosso caso o Google. Para obter esse endereço abra uma janela do prompt do Windows ou um Terminal Linux e execute o comando ping <endereço>. O Esse comando retornará o endereço IP do servidor.

Declaração dos objetos de conexão
Declaração dos objetos de conexão

Agora passaremos para o desenvolvimento da função setup. O primeiro passo é configurarmos o Shield através do objeto EthernetClient e a porta serial com o uso do objeto Serial.

Após essas configurações podemos realizar a conexão com o servidor através do método connect do objeto EthernetClient. Esse método recebe o array de bytes com o endereço IP do servidor e a porta que utilizaremos para conectar ao servidor. Com a conexão ativa podemos enviar o corpo da nossa requisição, nesse caso montamos uma requisição HTTP do tipo GET que retorna a página inicial do Google.

Função Setup
Função Setup

Na função loop faremos a leitura da resposta. Utilizamos o método available para verificar se há conteúdo para ser lido e o método read para ler esse conteúdo, semelhante ao objeto que controla a porta serial. Nessa função também verificamos se a conexão ainda está ativa e caso contrário congelamos o programa.

 

Função loop
Função loop

Compile o programa e transfira para a placa para iniciar a execução. Abra o terminal serial e acompanhe a execução do programa e veja ocorrer tanto a requisição como a leitura ds resposta.

Onde encontrar:

 

Obrigado a todos e até o próximo post!

Identificando chuva e medindo nível de líquidos com Arduino

Olá a todos,

Nesse post demonstraremos o uso do sensor de chuva/gotajamento que também pode ser utilizado para detectar também o nível de água de um recipiente. Esse sensor é composto de três peças: a placa sensora, um cabo de ligação do tipo femea-femea e o conversor com saída analógica e outra digital.

Partes do sensor
Partes do sensor

A saída analógica emite sinais na mesma proporção em que a placa sensora é molhada. Já a saída digital é acionada quando uma quantidade de água determinada atinge o sensor. A quantidade de água que dispara a saída digital é ajustada no potenciômetro da placa conversora.

Primeiro vamos montar o circuito: conecte os cabos na placa sensora e em seguida no conversor. Na sequência podemos conectar a placa conversora na protoboard ou diretamente no Arduino com cabos jumper macho-femea, conforme a foto abaixo:

Sensor montado
Sensor montado

Passaremos agora para o desenvolvimento do código. Primeiro declare as variáveis que indicarão em quais pinos da placa as saídas do sensor estão conectados. Em seguida inicie o pino digital como INPUT e configure a porta serial.

int digital = 8;
int analogico = A0;

void setup() {

pinMode(digital, INPUT);

Serial.begin(9600);
}

Passaremos agora para a função loop. Primeiro faremos a leitura do pino digital, verificando se o valor limite foi acionado, exibindo o resultado na porta serial. Em seguida faremos a leitura do pino analógico, que indicará o quanto molhado está o sensor.

O valor analógico será alterado tanto quando gotas de água atingem a placa como quando a placa sensora é coloca na parede de um recipiente e o nível de água desse recipiente é alterado. Por isso podemos utilizar esse sensor tanto para identificar chuva ou outros gotejamentos como para medir o nível de líquidos dentro de um recipiente.

Naturalmente em nossos projetos o valor de disparado de alguma ação deverá ser calibrado para identificar o valor ideal, tanto da saída digital como a analógica.

void loop() {

int valor = digitalRead(digital);

if (HIGH == valor)
{
Serial.println(“Acionado”);
}
else
{
Serial.println(“Desacionado”);
}

valor = analogRead(analogico);
Serial.println(valor);

delay(1000);
}

Com o circuito montado e o código desenvolvido podemos compilar e rodar o programa. Após a compilação e transferência do programa abra o monitor serial para verificar os estados dos pinos. Atinja a placa com algumas gotas de água e veja os valores alterarem, ou mexa no potenciômetro para ajustar o valor de disparo do pino digital.

Obrigado a todos e até o próximo post!

Onde encontrar: