Tabla de contenido:
Video: Cliente genérico / dispositivo esclavo de 1 cable Arduino (sensor): 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Lea la Introducción y el Paso 2 de mi instructivo sobre cómo construir una pantalla Arduino de 1 cable (144 caracteres) para obtener más información sobre la situación y las bibliotecas disponibles. Como se explica allí, usaremos la biblioteca OneWire-Hub (emulador de dispositivo esclavo OneWire) de orgua (preste atención a que hay otras bifurcaciones) para construir dispositivos genéricos de 1 cable (por ejemplo, sensores) usando un Arduino.
Paso 1: software
Lo más importante es hacer un dispositivo que pueda devolver básicamente cualquier tipo de valor de manera sencilla. Lo que significa que se puede usar software estándar para leer todos los valores directamente (no se necesita conversación ni manipulación binaria). Para eso, necesitamos un dispositivo de 1 cable predeterminado muy simple que pueda devolver flotadores y sea ampliamente compatible. La única opción que conozco es el termómetro DS18B20 (el monitor de batería DS2438 también es interesante y útil, pero bastante complejo y, por lo tanto, lento, entre otros inconvenientes). La biblioteca OneWire-Hub contiene un ejemplo llamado DS18B20_asInterface que hace exactamente lo que necesitamos. Crea un montón de DS18B20 de los cuales cada uno representa un valor flotante que queremos devolver de nuestros sensores. Las restricciones aquí son la resolución y los valores deben estar en el rango -55, 0… 125, 0. Eso se puede lograr fácilmente, en el peor de los casos, se puede cambiar la escala, y en realidad es mejor que los valores que se pueden representar por ejemplo. los valores DS2438 (1,5 a 10 V). Alternativamente, se puede establecer un rango mayor de valores usando:
setTemperatureRaw (static_cast (valor * 16.0f));
pero es posible que la lectura y el procesamiento de estos valores no sean compatibles con todo el software, ya que está fuera de las especificaciones.
Lo que debe tener en cuenta es que inicialmente el número máximo de esclavos está restringido a 8, pero se puede cambiar en "OneWireHub_config.h" aumentando HUB_SLAVE_LIMIT hasta 32. También debe asegurarse de adoptar ONEWIRE_TIME_MSG_HIGH_TIMEOUT si lo necesita su Red de 1 cable (por ejemplo, x10), como se explica en el Paso 2 de la pantalla Arduino de 1 cable (144 caracteres). Y usar la versión IDE> = 1.8.3 para compilar y cargar el código en su Arduino.
Aquí, como ejemplo, el código del dispositivo que construí muy recientemente. Como supongo que no usará la misma combinación de sensores que yo, no entraré más en detalles aquí, verifique el código y haga preguntas si necesita ayuda.
Paso 2: hardware
Básicamente, cualquier cosa que pueda conectar a un Arduino se puede utilizar como su sensor de elección. La única restricción es que la lectura del sensor debe ser lo más rápida posible para tener suficiente tiempo para que se lleve a cabo la comunicación de 1 cable (consulte el Paso 2 de mi instrucción sobre Arduino 1-wire Display (144 caracteres) en orden para dar un ejemplo).
Un ejemplo de posible hardware podría ser una estación meteorológica como, por ejemplo:
https://shop.boxtec.ch/wetter-messer-p-41289.html
Además, o en lugar de, es posible que desee utilizar el propio Arduino como su sensor. Puede leer más sobre eso en mi instructable sobre las características menos conocidas de Arduino: los valores posibles son el voltaje de la fuente y la temperatura interna.
Aquí, como ejemplo, una imagen del dispositivo que construí muy recientemente. Como supongo que no usará la misma combinación de sensores que yo, no entraré más en detalles aquí, verifique el código y haga preguntas si necesita ayuda.
Paso 3: prueba el dispositivo
Conéctelo a su red y verifique su software para ver si todos los ID de ROM están presentes y los valores que devuelven como temperatura.
Paso 4: Apéndice: ATtiny85
Los dispositivos individuales (limitación de memoria) también se pueden hacer en un ATtiny85. Esto necesita algunos pasos mientras programamos el ATtiny85 usando Arduino Uno como ISP con la ayuda del IDE de Arduino:
-
Enlaces
- https://playground.boxtec.ch/doku.php/arduino/att…
- https://sebastian.expert/could-not-find-usbtiny-d…
- https://learn.sparkfun.com/tutorials/tiny-avr-pro…
- https://forum.arduino.cc/index.php?topic=425532.0
- https://forum.arduino.cc/index.php?topic=128963.0
- usar Arduino IDE> = 1.8.3
-
instalar la opción ATtiny en IDE
- Archivo> Preferencias> URL adicionales del administrador de tableros:
- Herramientas> Tablero: ??? > Gerente de tableros…
- busque: "diminuto" e instálelo
-
cargar el boceto del ISP en un Uno
Archivo> Ejemplos> ArduinoISP> ArduinoISP
-
inserte ATtiny85 en el enchufe de programación (fuerza cero) y conéctelo:
- Pin de Arduino MOSI D11 a Pin 5 de ATtiny
- Pin de Arduino MISO D12 a Pin 6 de ATtiny
- Pin de Arduino SCK D13 a Pin 7 de ATtiny
- Arduino Pin Reset D10 a ATtiny Pin 1
- Pin de Arduino GND a ATtiny Pin 4
- Pin VCC de Arduino a Pin 8 de ATtiny
- (> = Es posible que se necesite una tapa de 10uF en el pin RESET de Arduino Uno)
-
seleccione ATtiny85 (ver imagen):
- Tablero: "ATtiny25 / 45/85"
- Reloj del temporizador 1: "CPU"
- B. O. D.: "B. O. D. Disabled"
- LTO (solo 1.6.11 +): "Deshabilitado"
- Chip: "ATtiny85"
- Reloj: "8 MHz (interno)" (compatible con ATtiny85 y ATtiny84)
- Reloj: "16 MHz (PLL)" (configuración alternativa solo para ATtiny85)
- Puerto: ???
-
seleccione Programador:
Herramientas> Programador: "Arduino como ISP" (¡NO "ArduinoISP"!)
-
establecer la configuración de los fusibles (reloj, etc.):
Herramientas> Grabar cargador de arranque
- cargue este código (el LED de error del programador debe estar apagado; de lo contrario, reinícielo)
-
Disposición de los pines ATtinyX5 (ATtiny85):
- Pin 1: PB5 (RST)
- Pin 2: PB3 (A3) - opcionalmente conectado a través de 220ohm a 1 <-TX
- Pin 3: PB4 (A2) - conectado a DATOS de 1 cable
- Pin 4: GND - conectado a GND
- Pin 5: PB0 (PWM) - conectado al sensor I2C SDA
- Pin 6: PB1 (PWM) - conectado a LED con 4.7k a GND
- Pin 7: PB2 (A1) - conectado al sensor I2C SCL
- Pin 8: VCC - conectado a 5V
Trabajar con ATTiny85 requiere un poco más de trabajo, ya que necesita obtener bibliotecas adicionales para comunicaciones I2C (adafruit / TinyWireM) y salida en serie (TinyDebugSerial). Además, como la memoria es bastante limitada, es posible que desee trabajar mucho con #define, p. para eliminar la depuración en serie. En el ejemplo puedes ver todo esto juntado.
Para probar, el primer paso es verificar si el LED parpadea con la frecuencia correcta, 0.5Hz. Luego conéctelo al bus 1wire y verifique el nuevo dispositivo.
Recomendado:
[Home IoT] Dispositivo cliente ESP8266 MQTT: 7 pasos
[Home IoT] Dispositivo cliente ESP8266 MQTT: Es interesante que use una MCU barata habilitada para WiFi con el protocolo MQTT para controlar los dispositivos como el alimentador automático de agua para mi gato. Ahí está mi blog para obtener información más detallada (https://regishsu.blogspot.com/2019/07/home-iot-esp…Spe
IOT123 - ESCLAVO DE PROTOTIPOS DE LADRILLO I2C: 3 Pasos
IOT123 - ESCLAVO DE PROTOTIPOS DE LADRILLO I2C: Mientras desarrollaba el último ASSIMILATE ACTOR (KY-019 RELAY), se armó una placa de desarrollo genérica para ahorrarme un poco de trabajo extra en mi escritorio. Tiene los pines estándar del I2C IOT123 BRICK, pero permite conexiones personalizadas al sensor desde el ATT
Disparador esclavo Flash Mark II: 6 pasos (con imágenes)
Slave Trigger Flash Mark II: En este instructivo, explicaré cómo hacer un flash esclavo real (óptico) con un mínimo de componentes. Hay muchos diseños complejos que puedes encontrar en Internet, este diseño es muy simple y funciona bien en ambientes brillantes y con poca luz
HC - 06 (Módulo esclavo) Cambio de "NOMBRE" sin uso "Monitorear Arduino serial" que "Funciona fácilmente": ¡Manera impecable!: 3 pasos
HC - 06 (Módulo esclavo) Cambiando "NOMBRE" sin usar "Monitor Serial Arduino" … que "Funciona fácilmente": ¡Manera impecable!: Después de " Mucho tiempo " intentando cambiar el nombre en HC - 06 (módulo esclavo), utilizando " monitor serial del Arduino, sin " Éxito ", encontré otra manera fácil y ahora estoy compartiendo! ¡Que se diviertan amigos
Convierta un dispositivo de plástico genérico en algo un poco más hermoso: 14 pasos (con imágenes)
Convierta un artilugio de plástico genérico en algo un poco más hermoso: Motivación: durante el verano estoy navegando o trabajando en proyectos en nuestro pequeño jardín / granja. El invierno está sobre nosotros aquí en Boston y estoy listo para comenzar a atacar la larga lista de proyectos que he pospuesto para los 'meses de interior'. Sin embargo, tengo