Manual

do

Maker

.

com

EtherShield V1.1 na IDE 1.0.1

EtherShield V1.1 na IDE 1.0.1

Desde a versão 1.0 da IDE de desenvolvimento do Arduino o driver ethernet com leitor SD foi incorporado. Porém, o antigo shield ethernet não funciona mais com esse driver. O pré-requisito para o novo driver é a conexão com os pinos 10,11,12 e 13. Nele não encontrei a definição do pino de saída e incluí-lo não solucionou o problema. Mas encontrei um driver modificado que funciona com a atual versão do compilador. A única mudança que tive que fazer foi trocar o pino de saída de 6 para 2.

Não fiz nada de especial, apenas utilizei o ServeReadings para ler alguns sensores LM35. A consulta pode ser feita com wget ou via browser. Também incluí um LED que varia conforme a temperatura do sensor no pino analógico 5, utilizando a porta digital PWM 5.

Esse foi o "Hello World" apenas para testar os primeiros hardwares adquiridos pela LightComm para um big projeto que envolverá uma vastidão de recursos, criando um produto espetacular de baixo custo.

Infelizmente não poderei dar muitas dicas a respeito e nem evidenciar o desenvolvimento, mas se a empresa permitir, escreverei os howtos apenas sobre como utilizar cada tipo de hardware como xbee, RF, RS485, tal como venho fazendo com cada componente dos meus testes pessoais.

O código do teste (a partir do original) ficou assim:


// A simple web server that always just says "Hello World"

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

int outputPin = 2;

//***** config para leitura do LM35 *****//
int LED = 5;
int pin_reader = 0;
int freq;
float temp1;
String msg = " ";
char buf[50];
static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network,
// so unless you have more than one of these boards
// connected, you should be fine with this value.

static uint8_t ip[4] = {10, 0, 0, 252}; // the IP address for your board. Check your home hub
// to find an IP address not in use and pick that
// this or 10.0.0.15 are likely formats for an address
// that will work.

static uint16_t port = 80; // Use port 80 - the standard for HTTP

ETHER_28J60 e;

void setup()
{
e.setup(mac, ip, port);
pinMode(pin_reader,INPUT);
pinMode(LED,OUTPUT);
}

void loop()
{
if (e.serviceRequest())
{
e.print("<H1>LightMon 1.0</H1><br/><table>");
e.print("<tr><th>Input</th><th>Value</th></tr>");
for (int i = 0; i < 6; i++)
{
freq = analogRead(i);
temp1 = (5.0*freq*100.0)/1024.0;
msg = dtostrf(temp1,3,2,buf);
e.print("<tr><td>"); e.print(i); e.print("</td><td>"); e.print(buf); e.print("</td></tr>");
}
e.print("</table>");
e.respond();
}
delay(100);
float sensor5;
freq = analogRead(5);
sensor5 = (5.0*freq*100.0)/1024.0;
if (sensor5 > 28.0 && sensor5 < 30.0){
analogWrite(LED,30);
}
else if (sensor5 > 30.0){
analogWrite(LED,255);
}
else{
analogWrite(LED,5);
}

}

Veja nesse post como utilizar o LM35.
Para entender a parte do PWM, veja esse outro post.

Não fiz video desse simples teste, mas o formato de saída no browser fica mais ou menos assim:
LightMon
Input   Value
0   27.83
1   26.86
...
5   28.32

Ainda tenho mais 2 posts para breve; sobre como utilizar o microfone de eletreto e medição da corrente com o CI ACS712, mas teremos muita diversão com embedded também em breve, é só aguardar!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.