Muestra el Resumen de instrucciones de cableado, sketch de arduino, pruebas como una pieza extra en la creación de una aplicación android se comunica con el servidor del módulo de ethernet.
Arduino esbozar a continuación, sólo tienes que copiar y pegar
Un servidor web simple que muestra la temperatura y controla un LED
#include "etherShield.h"
#include "ETHER_28J60.h"
#include
OneWire ds(A3); el pin A3
int c, celsiusF;
int outputPin = 3; el pin del LED
mac estática uint8_t [6] = {}
0x54, 0x55, 0x58, 0 x 10, 0 x 00, 0x24}; Esto sólo tiene que ser único para la red,
así que a menos que tenga más de uno de estos tableros
conectado, debe estar bien con este valor.
ip estática uint8_t [4] = {}
192 168, 1, 15}; la dirección IP de la tarjeta. Revise su casa cubo
para encontrar una dirección IP no esté en uso y
Esto o 10.0.0.15 son formatos probables para una dirección
que va a funcionar.
uint16_t estática puerto = 80; Utilice el puerto 80 - el estándar para HTTP
ETHER_28J60 e;
void setup()
{
Serial.Begin(9600);
e.Setup (mac, ip, puerto);
}
void loop()
{
char * params;
Si (params = e.serviceRequest())
{
e.Print ("temperatura
");
e.Print(Celsius);
e.Print(",");
e.Print(celsiusF);
e.Print "C";
e.Print("
");
e.Print("
");
e.Print "(control del LED del);
e.Print ("apagar
");
e.Print ("encienda
");
Si (strcmp (params, «? cmd = on ") == 0)
{
digitalWrite (outputPin, HIGH);
e.Print ("LED está encendido");
}
else if (strcmp (params, «? cmd = off ") == 0)
{
digitalWrite (outputPin, bajo);
e.Print ("LED está apagado");
}
e.Respond();
Delay(100);
}
otra cosa
{
{
byte me;
presente byte = 0;
type_s de bytes;
datos del octeto [12];
addr Byte [8];
Si (! {ds.search(addr))}
Serial.println ("no hay más direcciones.");
Serial.println();
DS.reset_search();
Delay(250);
retorno;
}
Serial.Print ("ROM =");
para (i = 0; i < 8; i ++) {}
Serial.Write(' ');
Serial.Print (addr [i], hexagonal);
}
Si (OneWire::crc8 (addr, 7)! = {addr[7])}
Serial.println ("CRC no es válido!");
retorno;
}
Serial.println();
el primer byte ROM indica que chip
interruptor (addr[0]) {}
caso 0 x 10:
Serial.println ("Chip = DS18S20"); o viejo DS1820
type_s = 1;
rotura;
caso 0x28:
Serial.println ("Chip = DS18B20");
type_s = 0;
rotura;
caso 0x22:
Serial.println ("Chip = DS1822");
type_s = 0;
rotura;
por defecto:
Serial.println ("dispositivo no es un dispositivo de la familia de DS18x20.");
retorno;
}
DS.Reset();
DS.Select(ADDR);
DS.Write(0X44,1); iniciar la conversión, con la energía del parásito en el final
Delay(10); tal vez 750ms es bastante, quizás no
podríamos hacer un ds.depower() aquí, pero el reset se hará cargo de él.
actual = ds.reset();
DS.Select(ADDR);
DS.Write(0xBE); Bloc de notas de lectura
Serial.Print ("datos =");
Serial.Print(Present,HEX);
Serial.Print("");
para (i = 0; i < 9; i ++) {/ / necesitamos 9 bytes
datos [i] = ds.read();
Serial.Print (datos [i], hexagonal);
Serial.Print("");
}
Serial.Print ("CRC =");
Serial.Print (OneWire::crc8 (datos, 8), HEX);
Serial.println();
convertir los datos a la temperatura real
unsigned int de crudo = (datos [1] << 8) | datos [0];
Si (type_s) {}
materia prima = raw << 3; por defecto de resolución 9 bits
Si (datos [7] == 0 x 10) {}
cuenta siendo da resolución de 12 bits completo
materia prima = (materia prima y 0xFFF0) + 12 - datos [6];
}
}
Else {}
cfg de byte = (datos [4] y 0x60);
Si (cfg == 0 x 00) crudo = raw << 3; resolución de 9 bits, ms 93,75
else if (cfg == 0 x 20) crudo = raw << 2; resolución de 10 bits, ms 187,5
else if (cfg == 0 x 40) crudo = raw << 1; resolución de 11 bits, de 375 ms
valor predeterminado es 12 bits de resolución, tiempo de conversión de ms 750
}
Celsius = abs(raw / 16.0);
celsiusF = (raw / 16.0 - celsius) * 100;
Serial.Print ("temperatura =");
Serial.Print(Celsius);
Serial.Print(",");
Serial.println(celsiusF);
}
}
}