Índice:

Introdução ao Arduino e Ethernet: 8 etapas
Introdução ao Arduino e Ethernet: 8 etapas

Vídeo: Introdução ao Arduino e Ethernet: 8 etapas

Vídeo: Introdução ao Arduino e Ethernet: 8 etapas
Vídeo: Módulos para Arduino - Vídeo 09 - Ethernet Shield 2024, Julho
Anonim
Introdução ao Arduino e Ethernet
Introdução ao Arduino e Ethernet

Seu Arduino pode se comunicar facilmente com o mundo externo por meio de uma conexão Ethernet com fio. No entanto, antes de começarmos, presumiremos que você tenha um conhecimento básico de rede de computadores, como o conhecimento de como conectar computadores a um hub / roteador com cabos RJ45, o que é um endereço IP e MAC e assim por diante. Além disso, aqui está um bom resumo rápido sobre Ethernet.

Você precisará de um Arduino Uno ou placa compatível com um escudo Ethernet que use o IC controlador W5100 Ethernet (praticamente todos eles) conforme a imagem.

Além disso, você precisará alimentar a placa por meio do soquete DC externo - o W5100 IC usa mais corrente do que a alimentação USB pode fornecer. Um pacote de plugues / verruga de parede de 9 V 1,5 A será suficiente.

Passo 1:

Imagem
Imagem

Finalmente - os escudos esquentam - então tome cuidado para não tocar no W5100 após uso prolongado. Caso você não tenha certeza - este é o W5100 IC.

Passo 2:

Depois de ter seu Arduino habilitado para Ethernet e ter a alimentação externa conectada, é uma boa ideia verificar se tudo funciona. Abra o Arduino IDE e selecione Arquivo> Exemplos> Ethernet> Servidor da Web. Isso carrega um esboço simples que exibirá os dados coletados das entradas analógicas em um navegador da web. No entanto, não faça upload ainda, ele precisa de uma pequena modificação.

Você precisa especificar o endereço IP da blindagem Ethernet - o que é feito dentro do esboço. Isso é simples, vá para a linha:

IPAddress ip (10, 1, 1, 77);

E altere-o para corresponder à sua própria configuração. Por exemplo, em nossa casa, o endereço IP do roteador é 10.1.1.1, a impressora é 10.1.1.50 e todos os PCs estão abaixo de… 50. Portanto, vou definir meu IP de escudo para 10.1.1.77, alterando a linha para:

byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

No entanto, se você tiver apenas um escudo, deixe-o como está. Pode haver uma chance muito, muito, estatisticamente rara de ter um endereço MAC igual ao seu hardware existente, então esse seria outro momento para alterá-lo.

Etapa 3:

Imagem
Imagem

No entanto, se você tiver apenas um escudo, deixe-o como está. Pode haver uma chance muito, muito, estatisticamente rara de ter um endereço MAC igual ao seu hardware existente, então esse seria outro momento para alterá-lo.

Depois de fazer as alterações, salve e carregue o esboço. Agora abra um navegador da web e navegue até o endereço IP que você inseriu no esboço, e você verá algo semelhante à imagem.

O que está acontecendo?

O Arduino foi programado para oferecer uma página web simples com os valores medidos pelas entradas analógicas. Você pode atualizar o navegador para obter valores atualizados. Neste ponto - observe que os escudos Ethernet usam pinos digitais 10 ~ 13, portanto, você não pode usá-los para mais nada. Alguns shields Ethernet do Arduino também podem ter um soquete para cartão microSD, que também usa outro pino digital - portanto, verifique a documentação para descobrir qual.

Passo 4:

No entanto, agora que podemos ver que o escudo Ethernet está funcionando, podemos passar para algo mais útil. Vamos dissecar o exemplo anterior de uma forma simples e ver como podemos distribuir e exibir dados mais interessantes na rede. Para referência, todas as funções relacionadas à Ethernet são gerenciadas pela biblioteca Ethernet Arduino. Se você examinar o esboço anterior que acabamos de usar, a seção que será de interesse é:

for (intanalChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("entrada analógica"); client.print (analogChannel); client.print ("é"); client.print (sensorReading); client.println (""); } client.println ("");

Esperançosamente, esta seção do esboço deve ser familiar - lembre-se de como usamos serial.print (); no passado, ao enviar dados para a caixa do monitor serial? Bem, agora podemos fazer a mesma coisa, mas enviar dados de nosso escudo Ethernet de volta para um navegador da web - em outras palavras, um tipo muito básico de página da web. No entanto, há algo que você pode ou não querer aprender para formatar a saída em um formato legível - código HTML. Eu não sou um desenvolvedor de sites (!), Então não vou me aprofundar muito em HTML.

No entanto, se você deseja fornecer páginas da web bem formatadas com seu Arduino e assim por diante, aqui seria um bom começo. No interesse da simplicidade, as duas funções a seguir serão as mais úteis:

client.print ("é");

Client.print (); nos permite enviar texto ou dados de volta à página da web. Ele funciona da mesma maneira que serial.print (), então nada de novo aqui. Você também pode especificar o tipo de dados da mesma forma que com serial.print (). Naturalmente, você também pode usá-lo para enviar dados de volta. A outra linha útil é:

client.println ("");

que envia o código HTML de volta para o navegador da web, informando-o para iniciar uma nova linha. A parte que realmente causa o retorno do carro / nova linha é o

que é um código HTML (ou “tag”) para uma nova linha.

Portanto, se você estiver criando exibições de página da web mais elaboradas, pode apenas inserir outras tags HTML em client.print (); demonstração. Se você quiser aprender mais sobre comandos HTML, aqui está um bom site de tutorial.

Por fim - note que o sketch só enviará os dados quando for solicitado, ou seja, quando tiver recebido uma solicitação do navegador da web.

Etapa 5: Acessando seu Arduino pela Internet

Acessando Seu Arduino pela Internet
Acessando Seu Arduino pela Internet

Até agora tudo bem. Mas e se você quiser acessar seu Arduino de fora da rede local?

Você precisará de um endereço IP estático - ou seja, o endereço IP que seu provedor de serviços de Internet atribui à sua conexão precisa permanecer o mesmo. Se você não tem um IP estático, contanto que você deixe seu modem / roteador permanentemente trocado em seu IP não deve mudar. No entanto, essa não é uma solução ideal.

Se o seu ISP não puder oferecer um IP estático, você ainda pode prosseguir com o projeto usando uma organização que oferece um DNS dinâmico. Essas organizações oferecem a você seu próprio nome de host IP estático (por exemplo, mojo.monkeynuts.com) em vez de um número, acompanham a alteração do endereço IP e o vinculam ao novo nome de host. Pelo que pude perceber, seu modem precisa suportar (ter um cliente embutido para …) esses serviços DDNS.

Por exemplo, duas empresas são No-IP eDynDNS.com. Observe que eu não usei esses dois, eles são apenas oferecidos como exemplos. Agora, para encontrar o seu endereço IP … normalmente, ele pode ser encontrado fazendo login na página de administração do seu roteador - geralmente é 192.168.0.1, mas pode ser diferente. Verifique com seu fornecedor ou ISP se eles forneceram o hardware. Para este exemplo, se eu inserir 10.1.1.1 em um navegador da web, e após inserir minha senha de administração do modem, a tela a seguir é apresentada conforme a imagem.

Etapa 6:

Imagem
Imagem

O que você está procurando é o seu endereço IP WAN, como você pode ver na imagem acima. Para manter os brincalhões afastados, apaguei alguns dos meus endereços.

A próxima coisa a fazer é ativar o encaminhamento de porta. Isso informa ao roteador para onde redirecionar as solicitações de entrada do mundo externo. Quando o modem recebe tal solicitação, queremos enviar essa solicitação para o número da porta de nosso escudo Ethernet. Usando o:

Servidor EthernetServer (125);

função em nosso esboço definiu o número da porta para 125. A tela de configuração de cada modem será diferente, mas como exemplo, aqui está um na imagem.

Etapa 7:

Imagem
Imagem

Portanto, você pode ver a partir da linha número um na imagem acima, os números da porta de entrada foram configurados para 125 e o endereço IP do escudo Ethernet foi configurado para 10.1.1.77 - o mesmo que no esboço.

Depois de salvar as configurações, está tudo pronto. O endereço externo do meu escudo Ethernet será o WAN: 125, portanto, para acessar o Arduino, digitarei meu endereço WAN com: 125 no final no navegador do dispositivo remoto da web, que entrará em contato com o hardware Ethernet solitário de volta para casa.

Além disso, você pode precisar alterar as configurações de firewall do seu modem, para permitir que a porta 125 seja "aberta" para solicitações de entrada. Verifique a documentação do modem para obter mais informações sobre como fazer isso. Agora, basicamente de qualquer dispositivo conectado à Internet no mundo livre, posso inserir minha WAN e o número da porta no campo URL e receber os resultados. Por exemplo, de um telefone quando ele está conectado à Internet por meio de dados móveis LTE.

Portanto, neste estágio, você agora pode exibir dados em uma página da web simples criada por seu Arduino e acessá-la de qualquer lugar com acesso irrestrito à Internet. Com seu conhecimento anterior do Arduino, agora você pode usar dados de sensores ou outras partes de um esboço e exibi-los para recuperação.

Etapa 8: Exibindo dados do sensor em uma página da web

Exibindo dados do sensor em uma página da web
Exibindo dados do sensor em uma página da web

Como exemplo de exibição de dados do sensor em uma página da web, vamos usar um sensor de temperatura e umidade barato e popular - o DHT22. Você precisará instalar a biblioteca DHT22 Arduino, que pode ser encontrada nesta página. Se esta é sua primeira vez com o DHT22, experimente o esboço de exemplo que está incluído na biblioteca para entender como ele funciona.

Conecte o DHT22 com o pino de dados ao Arduino D2, Vin ao pino 5V e GND a… GND. Agora, para o nosso esboço - para exibir a temperatura e a umidade em uma página da web. Se você não estiver familiarizado com HTML, pode usar serviços online como este para gerar o código, que você pode modificar para usar no esboço. No exemplo abaixo, os dados de temperatura e umidade do DHT22 são veiculados em uma página da web simples:

#include "SPI.h" #include "Ethernet.h"

// para sensor DHT22

#incluir "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Insira um endereço MAC e um endereço IP para o seu controlador abaixo.

// O endereço IP dependerá da sua rede local: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; Endereço IP ip (10, 1, 1, 77);

// Inicialize a biblioteca do servidor Ethernet

// com o endereço IP e a porta que você deseja usar // (a porta 80 é o padrão para HTTP): EthernetServer server (125); DHT dht (DHTPIN, DHTTYPE);

void setup ()

{dht.begin (); // Abra as comunicações seriais e aguarde a porta abrir: Serial.begin (9600); while (! Serial) {; // aguarde a conexão da porta serial. Necessário apenas para Leonardo} // inicie a conexão Ethernet e o servidor: Ethernet.begin (mac, ip); server.begin (); Serial.print ("o servidor está em"); Serial.println (Ethernet.localIP ()); }

void loop ()

{// escuta os clientes de entrada EthernetClient client = server.available (); if (cliente) {Serial.println ("novo cliente"); // uma solicitação http termina com uma linha em branco boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // se você chegou ao final da linha (recebeu um caractere de nova linha //) e a linha está em branco, a solicitação http terminou, // então você pode enviar uma resposta if (c == 'n' && currentLineIsBlank) {// enviar um cabeçalho de resposta http padrão client.println ("HTTP / 1.1 200 OK"); client.println ("Content-Type: text / html"); client.println ("Conexão: fechar"); // a conexão será fechada após a conclusão da resposta client.println ("Refresh: 30"); // atualiza a página automaticamente a cada 30 segundos client.println (); client.println ("");

client.println ("");

// obter dados do sensor DHT22

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// a partir daqui, podemos inserir nosso próprio código HTML para criar a página da web

client.print ( Office Weather

Temperatura do escritório - );

client.print (t);

client.print ( graus Celsius

);

client.print ("

Umidade - );

client.print (h);

client.print ( por cento

);

client.print ("

A página é atualizada a cada 30 segundos <

. );

pausa;

} if (c == 'n') {// você está iniciando uma nova linha currentLineIsBlank = true; } else if (c! = 'r') {// você obteve um caractere na linha atual currentLineIsBlank = false; }}} // dá ao navegador da web tempo para receber o atraso de dados (1); // feche a conexão: client.stop (); Serial.println ("cliente desconectado"); }}

É uma modificação do esboço de exemplo do servidor da web do IDE que usamos anteriormente - com algumas modificações. Primeiro, a página da web será atualizada automaticamente a cada 30 segundos - este parâmetro é definido na linha:

client.println ("Atualizar: 30"); // atualiza a página automaticamente a cada 30 segundos

… E o HTML personalizado para nossa página da web começa abaixo da linha:

// a partir daqui, podemos inserir nosso próprio código HTML para criar a página da web

Você pode então simplesmente inserir o HTML necessário dentro das funções client.print () para criar o layout de que você precisa. Por fim, aqui está uma captura de tela de exemplo do esboço de exemplo em funcionamento.

Então aí está, outra maneira útil de fazer seu Arduino interagir com o mundo exterior. Esta postagem é fornecida a você por pmdway.com - tudo para fabricantes e entusiastas de eletrônicos, com entrega gratuita em todo o mundo.

Recomendado: