Paso 6: Configuración de dibujo
He utilizado la versión Arduino 1.0.3.
Hay que agregar las siguientes bibliotecas. Están en un archivo zip:
Adafruit_GFX LCD5110
Adafruit_PCD8544 LCD5110
DallasTemperature DS18B20
Un hilo DS18B20
Sueño narcoléptico de Atmega328
RF24Master NRF24L01 +
RF24NetworkMaster NRF24L01 +
Dirección DS18B20
Cada sensor DS18B20 tiene una dirección única. Necesita conocer esa dirección para que usted puede hablar con él.
Recomiendo que pruebe cada DS18B20 en un protoboard y conseguir su dirección.
Si no has hecho esto o no puede recordar, aquí es una manera de encontrar después de que ya está instalado en uno de estos PCB.
Conecte el TemperatureLCD5110 PCB o PCB de RemoteTemperature a tu PC con un adaptador USB. Yo uso un módulo PL2303 pero también se puede usar un USB-BUB.
ADVERTENCIA: Dado que los PCB RemoteTemperature no recibe tensión de la USB, necesita conectar una batería 18650 para ellos incluso para cargar un sketch de Arduino.
En el entorno de Arduino, asegúrese de que está seleccionado el puerto serie correcto. Asegúrese de que está seleccionado el directorio correcto:
TemperatureLCD5110 PCB Arduino UNO
RemoteTemperature PCB Arduino Pro o Pro Mini (3.3V, 8 MHz) w / ATmega328
Debajo de 'Archivo' 'ejemplos' Desplácese hasta OneWire y seleccione
DS18x20_Temperature
En el bosquejo sobre ocho líneas abajo, verá este
OneWire ds(10); en el pin 10 (es necesaria una resistencia de 4,7 K)
10 es el pin Digital utilizado en el ejemplo. Cambiar a:
OneWire ds(4); en el pin 10 (es necesaria una resistencia de 4,7 K)
Cargar el programa. Abra al Monitor Serial y para 9600 baudios. Usted debería ver algo como la siguiente imagen.
La primera línea muestra la dirección: 28 6B B4 88 4 0 0 D1
Para su información, esto es en hexadecimal. Escríbelo o ponlo en una base de datos.
Al salir del medio ambiente, no necesita guardar los cambios.
NRF24L01 dirección:
NRF24L01 + módulos disponen de una dirección, pero a diferencia del DS18B20 no son únicos para el módulo de físico. El direccionamiento se realiza en el software.
Ahora, estoy usando red de ManiacBug a, RF24NetworkMaster que es una extensión de su biblioteca de RF24.
Para esta versión, el canal es de 90, nodo 0 es el TemperatureLCD5110 PCB y el PCB de RemoteTemperature son los nodos 1 y 5. Este bosquejo no soportarán más de 5 BPC RemoteTemperature.
TemperatureLCD5110 PCB configuración del bosquejo:
Los PCB TemperatureLCD5110 bosquejo debe ser la configuración para su situación particular. En primer lugar la dirección DS18B20 debe coincidir con el sensor.
Utilizando un editor de texto (yo uso Notepad ++ pero funciona Bloc de notas o Wordpad), abra LCD5110Receive.ino.
Busque la línea similar a esta:
DeviceAddress Therm1 = {0x28, 0x6B, 0x88, 0xB4, 0 x 04, 0 x 00, 0 x 00, 0xD1};
Cambiarlo para que los números hexadecimales coincide con la dirección que encontró en el DS18B20. (Nota: que cada número es el prefijo 0 x por lo que se identifica como hexadecimal. 0 x 0 o 0 x 00 debería funcionar)
A continuación debe seleccionar el número de RemoteTemperature de PCB que va a utilizar:
Número de sensores de temperatura
#define NumNodes 3
Cambiar este según sea necesario (máximo cinco)
Una otra línea que quiere cambiar es el contraste de LCD5110:
display.setContrast(55); Elegir el mejor contraste
Esto está debajo de void setup() {}
Pruebe varios valores y decidir sus preferencias.
Fahrenheit o centígrado:
Si desea centígrados en lugar de Fahrenheit, cambie:
bool centígrado = false;
Para:
centígrados de bool = true;
RemoteTemperature PCB configuración del bosquejo:
Nota: en la foto que puse un número rojo en la esquina inferior derecha. Esto identifica el PCB RemoteTemperature.
Yo podría haber sido inteligente y elegante y tal vez almacenan información específica del módulo en la EEPROM pero soy perezoso por lo que acabo de escribir bocetos individuales para cada módulo. Lo que sugiero es copia el directorio TempTransmit1 a TempTransmit2 y cambiar el archivo .ino a TempTransmit2 y haga los siguientes cambios a todos. Repita para los otros módulos.
Uno, tienes que poner en la dirección correcta del DS18B20 como arriba:
DeviceAddress Therm1 = {0x28, 0x6B, 0x88, 0xB4, 0 x 04, 0 x 00, 0 x 00, 0xD1};
El 0 x prefijo comverts a hexadecimal.
Dos, tienes que poner en la dirección de nodo correcto
Dirección de nuestro nodo
const uint16_t this_node = 1;
Para cambiar el número que marcaste en el PCB. En marcha con la 1 y la secuencia.
También puede cambiar el sleepDelay.
int sleepDelay = 10000; en milisegundos
Este es el período de tiempo (10 segundos), el AtMega duerme entre el envío de muestras. Estoy bastante seguro de que esto está limitado a un máximo de aproximadamente 32 segundos. Si aumenta la sleepDelay, que significa que la batería durará un poco más entre cargas.