DHT Tiny Breakout para Raspberry Pi
Componentes de hardware: Atmel ATTiny85 × 1DHT22 Sensor de temperatura × 1DHT11 Sensor de temperatura y humedad × 1SparkFun Tiny AVR Programmer × 1Adafruit 4.7K Ω Resistor × 3Adafruit 10K Ω Resistor × 1Adafruit 100 Ω Resistor × 1Adafruit azul difuso de 3 mm LED × 1Adafruit Tactile Button Break-Switch × 1Adafruit Interruptor de botón táctil ″ Cabezal macho de tira de 36 pines 1 pieza @ longitud 6, 1 pieza @ longitud 2 (total de 8 pines) × 1 Puente genérico (0.1 ″) × 1 Arduino UNO y Genuino UNOOopcional - usado para depuración y prueba. × 1 Aplicaciones de software y servicios en línea: Microsoft Visual Studio 2015 Microsoft Windows 10 IoT Core IDE de Arduino
HISTORIA
Introducción
El DHT11 y el DHT22 son sensores de temperatura y humedad populares debido a su precisión a un costo muy bajo. Sin embargo, un problema con ellos es que funcionan con un protocolo patentado de un cable que requiere una sincronización precisa. Estos sensores han demostrado ser difíciles de leer en placas con sistemas operativos que no son de tiempo real.
Hace un tiempo, publiqué un artículo titulado " Sensor de temperatura DHT11 / DHT22 ”Que demuestra cómo utilizar el código de muestra de Microsoft C ++ de C # para leer estos sensores. La biblioteca pudo obtener una lectura, pero tuve que agregar una lógica de reintento para que fuera más confiable. Esto resultó ser un éxito para la mayoría, pero algunas personas tuvieron problemas para que esto funcionara de manera consistente.
Dado el nivel de interés en el uso de estos sensores en la Raspberry Pi mientras se ejecuta Windows 10 IoT Core, decidí crear una segunda opción que proporcione un método muy confiable para leer estos sensores manteniendo un bajo costo.
Descripción general
El enfoque que se presenta aquí es conectar el sensor DHT a un ATtiny85 económico y configurarlo como un dispositivo esclavo I2C. Esto se logra utilizando la biblioteca TinyWireS y creando un conjunto de registros que se pueden leer y escribir para interactuar con el dispositivo.
El dispositivo admite las siguientes funciones:
- Un intervalo de lectura configurable para especificar la frecuencia con la que leer el sensor DHT. El valor predeterminado es leer cada 2 segundos.
- Un modo manual que desactiva el intervalo y toma una lectura a pedido.
- Un umbral de temperatura superior e inferior configurable que activará el pin de interrupción cuando la lectura de temperatura actual esté por encima o por debajo del umbral.
- Modo de ahorro de configuración que permite restaurar los ajustes configurados al encender o después de un reinicio.
- Restablecimiento de la configuración que permite restablecer la configuración guardada a los valores predeterminados.
- Control de energía del sensor que permite habilitar y deshabilitar la energía del sensor para ahorrar energía.
- Dirección de dispositivo i2c programable. La dirección predeterminada de este dispositivo es 0x26, pero se puede cambiar mediante un comando. El dispositivo recordará la dirección. Si se restablece, la dirección volverá a 0x26. La biblioteca C # también incluye código para buscar el dispositivo en el bus i2c, por lo que no necesita saber la dirección para conectarse.
- Selección de modelo DHT programable. El firmware predeterminado es el DHT22, pero esto se puede cambiar enviando un comando al dispositivo para usar un modelo diferente. El modelo se guarda de modo que después de cada reinicio o ciclo de encendido conserva el tipo de modelo que se va a usar.
El código fuente
Hay tres conjuntos de código en este proyecto. El firmware principal de la placa, un boceto maestro de Arduino que se utiliza para probar y demostrar la placa mientras está conectado a un Arduino Uno y la aplicación Windows 10 IoT Code que demuestra cómo usar el dispositivo desde la Raspberry Pi. Todo el código está disponible en el repositorio de GitHub vinculado.
El dispositivo / circuito
El circuito es pequeño y solo usa algunos componentes económicos. El ATtiny85 se puede comprar en varios proveedores. Recomiendo elegir algunos de ellos, ya que tienen muchos propósitos útiles.
El circuito tiene un encabezado de seis pines que le permite conectarse a otro circuito o directamente a la Raspberry Pi. Los pines se definen de la siguiente manera:
- GND -> Conéctelo a tierra en su circuito o al pin de tierra en su Raspberry Pi.
- RST -> Este pin se usa para restablecer o reiniciar el dispositivo. Este pin debe conectarse a 5 V en condiciones de funcionamiento normal. Para restablecer el dispositivo, active un pulso BAJO momentáneo en este pin.
- INT -> Este pin tiene dos propósitos. Cuando los umbrales están habilitados, este pin será ALTO siempre que se exceda un umbral y BAJO en caso contrario. Cuando se usa el modo de ahorro de energía, este pin se usa para activar el dispositivo activando un pulso alto momentáneo.
- SDA -> Línea I2C SDA.
- SCL -> Línea I2C SCL.
- 5V -> Fuente de alimentación de 5V.
También hay un encabezado de dos pines donde se puede agregar un puente para habilitar o quitar para deshabilitar el LED integrado.
Cuando se utiliza esto en un proyecto más grande, el circuito para el DHT Tiny puede fusionarse o integrarse en el circuito existente del proyecto. En este caso, los pines del cabezal y el LED son opcionales.
El circuito también se puede construir en una placa separada y conectarse a su Raspberry Pi con algunos cables o un cable de conexión.
Programando el ATtiny85
Cargue el boceto llamado DHT_Tiny_Breakout.ino en el ATtiny85 usando su programador AVR. Si no tiene un programador, puede usar un Arduino Uno (o una placa similar). Eche un vistazo a uno o más de los artículos que se enumeran a continuación para obtener ayuda.
- Programando ATtiny85 con Arduino Uno en Hackster.io
- Taller virtual:programe un ATTiny85 con Arduino
- Programando un ATtiny con Arduino 1.6 (o 1.0)
- Programando un ATtiny con Arduino 0022
Utilizo el programador SparkFun Tiny AVR para cargar mi ATtiny85.
Estoy ejecutando mi chip a 16 MHz. Vea mi artículo titulado " ATtiny @ 16MHz ”Para obtener instrucciones sobre cómo hacer esto.
Al usar el ATtiny85, el boceto esclavo requiere TinyWireS biblioteca que se instalará en su carpeta de bibliotecas. Esta biblioteca se puede descargar de https://github.com/rambo/TinyWire.
Breadboard the Circuit
El primer paso es poner el DHT Tiny en funcionamiento en una placa de pruebas. Usando una placa de prueba de tamaño medio, construya el circuito siguiendo los diagramas esquemáticos y de placa incluidos en el proyecto.
A continuación, se ofrecen algunos consejos que le ayudarán a facilitar las cosas:
- Construya el DHT Tiny en su tablero y luego use otro tablero para la conexión entre el DHT Tiny y el Uno o Raspberry Pi.
- Se recomienda usar clavijas de encabezado porque facilita la conexión y desconexión del DHT Tiny como una sola unidad.
- Si planeas usar los encabezados macho separables estándar en la placa de pruebas, tendrás que ajustar el borde de plástico negro al centro de los pines para que quepa en la placa de pruebas (consulta las imágenes a continuación). Use alicates de punta fina para hacer los ajustes.
- Si tiene encabezados masculinos extralargos de 0.1 ″, utilícelos en su tablero. Quédese con los encabezados de tamaño normal si planea soldar componentes en una PCB. Los extralargos no se recomiendan para PCB.
- Necesitará cables de puente hembra-hembra si usa los pines del cabezal en la placa de pruebas. Si no los tiene, omita los pines del cabezal y use cables de puente macho-macho entre las dos placas.
- Mantenga los cables alejados del chip tanto como sea posible para que sea más fácil sacar los dedos y sacar el chip para programar.
A continuación se muestran algunas imágenes de la versión protoboard de mi DHT Tiny.
Conexión del Arduino Uno
Si está interesado en una prueba rápida, una demostración o tiene problemas para que esto funcione con su Raspberry Pi, puede conectar el DHT Tiny a un Arduino Uno (o dispositivo similar).
- Conecte el GND pin a la GND en el Uno.
- Conecte el 5V pin al 5V en el Uno.
- Conecte el RST fijar a D4 en el Uno.
- Conecte el SDA fijar a A4 en el Uno.
- Conecte el SCL fijar a A5 en el Uno.
- Conecte el INT fijar a D3 en el Uno y habilite el LED a través del puente.
Cargue y ejecute el boceto llamado DHT_Tiny_Master.ino . Este boceto mostrará la salida en el Monitor en serie . .
Al conectar el I2C entre las dos placas, es importante tener resistencias pull-up en las líneas SDA y SCL. En este circuito, hay dos 4.7K Ω conectados entre los pines y 5V.
A continuación se muestran algunas imágenes de la placa DHT Tiny conectada al Arduino Uno.
Conexión a Raspberry Pi
Si está interesado en una prueba rápida, una demostración o tiene problemas para que esto funcione con su Raspberry Pi, puede conectar el DHT Tiny a un Arduino Uno (o dispositivo similar).
- Conecte el GND pin a la GND (pin 9) en Raspberry Pi 2/3.
- Conecte el 5V pin al 5V (pin 2) en Raspberry Pi 2/3.
- Conecte el RST anclar a GPIO4 (pin 7) en la Raspberry Pi 2/3.
- Conecte el SDA fijar a SDA (pin 3) en la Raspberry Pi 2/3.
- Conecte el SCL fijar a SCL (pin 5) en la Raspberry Pi 2/3.
- Conecte el INT anclar a GPIO17 (pin 11) y habilite el LED.
Al conectar el I2C entre las dos placas, es importante tener resistencias pull-up en las líneas SDA y SCL. En este circuito, hay dos 4.7K Ω conectados entre los pines y 3V3.
¡MUY IMPORTANTE! La placa DHT Tiny será alimentada por el pin de 5V en la Raspberry Pi, pero las resistencias pull-up deben estar conectadas al pin 3V3 en la Raspberry Pi (3V3 está en los pines 1 y 17).
A continuación se muestran algunas imágenes de la placa de pruebas DHT Tiny conectada a la Raspberry Pi 3.
Ejecución de la aplicación Windows 10
Obtenga el código del enlace del repositorio de GitHub en la parte inferior del proyecto y descomprímalo en su computadora. Abra el código fuente de la Aplicación Universal en Visual Studio 2015 e impleméntelo en Raspberry Pi y ejecútelo desde la consola de administración o ejecútelo en modo de depuración desde Visual Studio.
Si es la primera vez que ejecuta código de Visual Studio para una aplicación de Windows 10 IoT Core, consulte estos artículos de Microsoft:
- Implementar una aplicación con Visual Studio
- Portal de dispositivos de Windows
Mire el video de demostración a continuación para ver la aplicación ejecutándose en una Raspberry Pi 3 mientras está conectada al DHT Tiny.
Aspectos destacados de la aplicación
La aplicación Windows 10 UWP es una aplicación de demostración que muestra todas las características de DHT Tiny. El código mostrará la temperatura actual, la humedad y otros valores de registros del dispositivo. La interfaz de usuario también proporciona una forma de cambiar la configuración del dispositivo, incluida la dirección del dispositivo.
Biblioteca pequeña de DHT
El código de muestra utiliza una biblioteca escrita para interactuar con DHT Tiny. Esta biblioteca está lista para usar y se puede incluir directamente en todas sus aplicaciones.
Obtener la biblioteca de NuGet
Si no desea incluir el proyecto directamente en su aplicación, simplemente descargue la biblioteca DHT Tiny de NuGet usando el comando que se muestra a continuación. Abra la Consola del Administrador de paquetes en Visual Studio y escriba el comando.
PM> Paquete de instalación IoT.DhtTiny
Escaneando el bus i2c en busca del dispositivo
La biblioteca DHT Tiny incluye un método que buscará en el bus i2c cualquier dispositivo DHT Tiny y devolverá una lista de direcciones. Esta lista se puede utilizar para inicializar uno o más de los dispositivos encontrados. Esto es especialmente útil si cambiaste la dirección del dispositivo, pero no recuerdas en qué estableciste la dirección. Tenga en cuenta que el método de devolución de llamada es opcional.
// *** // *** Enumera los dispositivos DHT Tiny en el bus i2c .// *** IEnumerable address =await DhtTiny.FindAllDhtTinyAsync (this. FindAllDhtTinyCallback); // *** // *** Método de devolución de llamada // *** private void FindAllDhtTinyCallback (I2cScanEventArgs e) {int percentComplete =(int) ((double) e.CurrentIndex / (double) e.Total * 100,0d); this.Status =string.Format ("Ubicando dispositivos [0x {0:X2}] [{1}%] [Found ={2:## 0}] ...", e.CurrentAddress, percentComplete, e.Items .Count ());}
Esquemas de DHT Tiny Breakout para Raspberry Pi
Demostración de software
Este video muestra la aplicación universal que se ejecuta en una Raspberry Pi 3 conectada al DHT Tiny en una placa de pruebas.
[VÍDEO PRÓXIMAMENTE]
Creación del dispositivo final
La forma más fácil y rentable de crear la placa es utilizar una placa prototipo de PCB, como la placa de pruebas Perma-Proto del tamaño de un cuarto de Adafruit. La imagen de abajo muestra la ruptura usando esta placa prototipo. Tenga en cuenta que utilicé una dremel para quitar las secciones del riel de alimentación de la placa.
Ver más:DHT Tiny Breakout para Raspberry Pi
Proceso de manufactura
- Monitoreo de temperatura en Raspberry Pi
- Estación meteorológica Raspberry Pi 2
- Sensores analógicos sin entradas analógicas en la Raspberry Pi
- Sensor de rango ultrasónico HC-SR04 en Raspberry Pi
- Los mejores accesorios para tu Raspberry Pi
- Sensores analógicos en Raspberry Pi con un MCP3008
- VISTA:Para ciegos
- Guía de conexión de Qwiic HAT para Raspberry Pi
- Windows 10 IoT Core para Raspberry Pi 3 Modelo B +
- Creación del kit de robot MonkMakes Raspberry Pi
- PiCy - ¡El diminuto robot con tecnología Raspberry Pi!