Ethernet break

Outro dia o companheiro de SJC Hacker Clube Duyle gentilmente me emprestou um breakboard Ethernet para eu fazer uns testes de acesso à internet pelo Arduino. A minha ideia era criar um client internet para acessar um webservice feito em C# que eu criei e publiquei na nuvem.
Acontece que eu não consegui de jeito nenhum encontrar como fazer um client usando essa lib. Então, para não perder um embalo, criei um serviço no Arduino para informar a temperatura ambiente do meu quarto via browser.

É muito fácil de fazer.



Esse é o break. De um lado a conexão RJ45 para ligar o "fio azul" (vindo do seu roteador), do outro os pinos para conexão ao Arduino.

A pinagem é essa:



E a conexão com o Arduino é essa:

ENC28J60 Module
  Arduino      Due/UNO
Arduino Mega
VCC
3V3
3V3
RESET
RESET
RESET
ENC-INT
2
2
GND
GND
GND
SCK
13
52
MISO
12
50
MOSI
11
CS
10
53





Para medir a temperatura usei um termsistor como sensor, ligado no jeito clássico, como divisor de tensão, assim:



No caso, são sei de quanto é o meu termistor, mas coloquei um resistor de 1k e funcionou. Aqui uma foto do circuito montado:


Abaixo o circuito do termômetro. A pecinha com a extremidade preta espetada na placa é o termistor.



O código, como é de praxe nesse blog, está publicado abaixo. Foi feito com base no código demo que vem com a própria biblioteca.Aliás, são duas, clique para fazer o download: etherShield.h e ETHER_28J60.h

#include "etherShield.h"
#include "ETHER_28J60.h"

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};   
// Esse código deve ser único dentro da sua rede.
// A menos que vc tenha mais de uma placa dessa na 
// sua rede, esse valor deve servir.
                                                           
static uint8_t ip[4] = {192, 168, 0, 15};     
// Endereço IP a ser usado para a sua placa.
// Este depende de como a sua rede estiver conectada.
// Descubra o IP da sua máquina e use um parecido, com 
// diferença no último número.

static uint16_t port = 80;
// O padrão é 80

ETHER_28J60 ethernet;

#define sensorPort 0

// Essa função lê a temperatura
int GetTemp()
{
  int sensorValue=analogRead(sensorPort);
  return map(sensorValue,150,174,20,36);   
}

void setup()
{ 
  ethernet.setup(mac, ip, port);
  Serial.begin(9600);
}

void loop()
{
  // Quando houver alguma solicitação de serviço...
  if (ethernet.serviceRequest())
  {
    // monta uma pagina com a temperatura corrente.
    ethernet.print("<H1>Monitoramento de Temperatura no Escrit&oacuterio</H1>");
    ethernet.print("<H2>No momento a temperatura aqui &eacute de ");
    ethernet.print(GetTemp());
    ethernet.print(" &degC</H2>");
    ethernet.respond();
  }
}

Aqui os resultados: ao acessar o "site" com o endereço correspondente, no meu caso: http://192.168.0.15/.

Esse é o resultado obtido:

Ao aquecer o termistor um pouco com o dedo, nova leitura:
É isso. É mole ou não é?
Se alguém souber me dar a dica sobre como fazer o client...


Comentários

  1. O microcontrolador pode também acessar a internet via Wifi com a arduino ou a placa PIC SanUSB. O firmware com modem wifly está disponível em: https://dl.dropboxusercontent.com/u/101922388/WiflySanUSB.zip

    ResponderExcluir
    Respostas
    1. É mesmo, eu até já fiz isso, só não postei porque me esqueci.
      Obrigado pela dica e pela visita!

      Excluir
  2. Boa noite, sou novato no mundo arduino e tenho uma duvida.
    Eu comprei um modulo ENC28J60 porem o pino D2 do meu arduino mega ja esta sendo utilizado por um LCD TFT.
    A pergunta é se posso utilizar outra porta? qual seria esta porta ?
    Obrigado e boa noite a todos

    ResponderExcluir
    Respostas
    1. Rafael,

      Obrigado por passar por aqui.
      Não sei dizer se isso é possível, e não tenho mais esse break.

      Pelo que está escrito nos fontes acima, não parece ser possível mudar sem alterar a biblioteca.

      [],

      Mauro

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte III

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I

Dividindo um programa (sketch) do Arduino em mais de um arquivo