Affiche l’aperçu, les instructions de câblage, les sketch arduino, stable comme un élément supplémentaire sur la création d’une application android qui communique avec le serveur du module ethernet.
Arduino croquis ci-dessous, il suffit de copier et coller
Un serveur web simple qui affiche la température et contrôle une LED
#include « etherShield.h »
#include « ETHER_28J60.h »
#include
OneWire ds(A3) ; sur la broche A3
int celsius, celsiusF ;
outputPin int = 3 ; la broche de LED
mac uint8_t statique [6] = {}
0 x 54, 0 x 55, 0 x 58, 0 x 10, 0 x 00, 0 x 24} ; Cela doit juste être unique pour votre réseau,
donc, sauf si vous avez plus d’un de ces conseils
connecté, vous devriez être bien avec cette valeur.
uint8_t statique ip [4] = {}
192 168, 1, 15} ; l’adresse IP pour votre carte mère. Vérifiez votre hub maison
pour trouver une adresse IP ne l’utilisez pas et choisir qui
Cet appareil ou 10.0.0.15 sont susceptibles de formats pour une adresse
cela fonctionnera.
public static uint16_t port = 80 ; Utiliser le port 80 - la norme pour HTTP
E ETHER_28J60 ;
void setup()
{
Serial.Begin(9600) ;
e.Setup (mac, ip, port) ;
}
void loop()
{
char * params ;
Si (params = e.serviceRequest())
{
e.Print ("température
");
e.Print(Celsius) ;
e.Print(",") ;
e.Print(celsiusF) ;
e.Print ("C") ;
e.Print("
");
e.Print("
");
e.Print ("LED control") ;
e.Print ("Turn off
");
e.Print ("Turn on
");
Si (strcmp (params, «? cmd = on ") == 0)
{
digitalWrite (outputPin, HIGH) ;
e.Print ("LED est allumée ») ;
}
else if (strcmp (params, «? cmd = off ") == 0)
{
digitalWrite (outputPin, faible) ;
e.Print ("LED est OFF") ;
}
e.respond() ;
Delay(100) ;
}
d’autre
{
{
octet i ;
octet présent = 0 ;
type_s octet ;
octet de données [12] ;
addr octet [8] ;
Si (! ds.search(addr)) {}
Serial.println ("pas plus adresses.") ;
Serial.println() ;
DS.reset_search() ;
Delay(250) ;
retour ;
}
Serial.Print ("ROM =") ;
pour (i = 0; i < 8; i ++) {}
Serial.Write(' ') ;
Serial.Print (addr [i], HEX) ;
}
Si (OneWire::crc8 (addr, 7)! = {addr[7])}
Serial.println (« le CRC est non valide!") ;
retour ;
}
Serial.println() ;
le premier octet ROM indique quel puce
commutateur (addr[0]) {}
cas 0 x 10 :
Serial.println ("puce = DS18S20") ; ou vieux DS1820
type_s = 1 ;
rupture ;
cas 0 x 28 :
Serial.println ("puce = DS18B20") ;
type_s = 0 ;
rupture ;
cas 0 x 22 :
Serial.println ("puce = DS1822") ;
type_s = 0 ;
rupture ;
par défaut :
Serial.println (« périphérique n’est pas un appareil familial de DS18x20.") ;
retour ;
}
DS.Reset() ;
DS.Select(addr) ;
DS.Write(0x44,1) ; lancer la conversion, avec puissance parasite sur à la fin
Delay(10) ; 750ms est peut-être assez, peut-être pas
Nous pourrions faire un ds.depower() ici, mais la réinitialisation prendra soin de lui.
présent = ds.reset() ;
DS.Select(addr) ;
DS.Write(0xBE) ; Bloc-notes de lecture
Serial.Print ("Data =") ;
Serial.Print(present,hex) ;
Serial.Print("") ;
pour (i = 0; j’ai < 9; i ++) {/ / nous avons besoin de 9 octets
données [i] = ds.read() ;
Serial.Print (données [i], HEX) ;
Serial.Print("") ;
}
Serial.Print ("CRC =") ;
Serial.Print (OneWire::crc8 (données, 8), HEX) ;
Serial.println() ;
convertir les données à la température actuelle
raw unsigned int = (données [1] << 8) | Data [0] ;
Si {(type_s)
brut = raw << 3 ; défaut de 9 bit résolution
Si (données [7] == 0 x 10) {}
comte restent donne plein 12 bit résolution
brut = (brut & 0xFFF0) + 12 - données [6] ;
}
}
else {}
cfg octet = (données [4] & 0 x 60) ;
Si (cfg == 0 x 00) brut = raw << 3 ; 9 bit résolution, 93,75 ms
ElseIf (cfg == 0 x 20) brut = raw << 2 ; 10 bit res, 187,5 ms
ElseIf (cfg == 0 x 40) brut = raw << 1 ; 11 bit res, 375 ms
valeur par défaut est 12 bits de résolution, temps de conversion 750 ms
}
Celsius = abs(raw / 16.0) ;
celsiusF = (brut / 16,0 - celsius) * 100 ;
Serial.Print ("température =") ;
Serial.Print(Celsius) ;
Serial.Print(",") ;
Serial.println(celsiusF) ;
}
}
}