Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente

Componentes y Suministros

ComponenteCantidadNotas
DS18B208Sensores de temperatura digitales bus 1-Wire
Tornillos1Para fijación de la carcasa
Arduino Nano R31Microcontrolador principal
PCB experimental1Placa de prototipo para montaje
Resistencia 4.7k Ω1Pull-up para bus 1-Wire
Terminal de tornillo 2 polos1Conexión de alimentación
SparkFun RS232 Shifter SMD1Conversor TTL a RS232 para domótica
Carcasa impresa en 3D1Diseño personalizado
Cable1Para conexiones internas

Herramientas y Máquinas Necesarias

Aplicaciones y Servicios Online

Sobre el Proyecto

Necesitaba leer temperaturas en varias posiciones y enviar los datos a un sistema de domótica (Crestron/AMX) de forma económica. La solución elegida utiliza sensores DS18B20, ampliamente disponibles, baratos y basados en bus 1-Wire, lo que permite conectar múltiples sensores con pocos cables.

Los ocho sensores se conectan a un Arduino Nano. La salida serie (TTL) del Arduino se convierte a RS232 mediante el módulo SparkFun para compatibilidad con el sistema de domótica. Para una apariencia profesional, diseñé e imprimí una carcasa en mi impresora 3D Zortrax M200.

Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente

¿Preguntas? ¡No dudes en preguntar!

Código

MultiTempSensor v1.0.0 (Arduino)

/* MultiTempSensor código por WT040
   Basado en ejemplos de Rik Kretzinger y otros fragmentos
   Historial: v0.1.1 27/11/2016, v0.1.5 04/12/2016, v1.0.0 04/12/2017 */

#include <OneWire.h>
#include <DallasTemperature.h>

// Constantes
#define SENSOR_PIN 12
#define READ_TIMER 10000 // 10 segundos

OneWire oneWire(SENSOR_PIN);
DallasTemperature sensors(&oneWire);

// Direcciones de los 8 sensores (deben reemplazarse por las reales)
DeviceAddress Sensor1 = { 0x28, 0xFF, 0x89, 0x0F, 0x61, 0x16, 0x03, 0x40 };
DeviceAddress Sensor2 = { 0x28, 0xFF, 0xE2, 0x0F, 0x61, 0x16, 0x03, 0x21 };
DeviceAddress Sensor3 = { 0x28, 0xFF, 0x38, 0xB3, 0x60, 0x16, 0x03, 0xEA };
DeviceAddress Sensor4 = { 0x28, 0xFF, 0xA4, 0xBE, 0x60, 0x16, 0x03, 0xE1 };
DeviceAddress Sensor5 = { 0x28, 0xFF, 0xFE, 0x13, 0x61, 0x16, 0x03, 0x56 };
DeviceAddress Sensor6 = { 0x28, 0xFF, 0x89, 0xBA, 0x60, 0x16, 0x03, 0xFB };
DeviceAddress Sensor7 = { 0x28, 0xFF, 0xFA, 0xBC, 0x60, 0x16, 0x03, 0xD1 };
DeviceAddress Sensor8 = { 0x28, 0xFF, 0x57, 0xB1, 0x60, 0x16, 0x03, 0x93 };

int amountOfSensors = 8;
int counterCheckBus = 0;

void setup() {
  Serial.begin(9600);
  printProgramName();
  Serial.print("Inicializando librería Dallas Temperature v");
  Serial.println(DALLASTEMPLIBVERSION);
  Serial.print("Buscando ");
  Serial.print(amountOfSensors);
  Serial.println(" sensores...");

  sensors.begin();
  // Resolución 10 bits (9-12 bits, menor = más rápido)
  for (int i = 1; i <= 8; i++) {
    DeviceAddress* sensor = getSensorAddress(i);
    if (sensor) sensors.setResolution(*sensor, 10);
  }
  getSensorsOnBus();
  Serial.println("Sistema inicializado");
}

void loop() {
  counterCheckBus++;
  delay(READ_TIMER);
  Serial.println();

  if (counterCheckBus == 360) { // Cada hora aprox (360 * 10s)
    getSensorsOnBus();
    counterCheckBus = 0;
  }

  sensors.requestTemperatures();
  for (int i = 1; i <= 8; i++) {
    DeviceAddress* sensor = getSensorAddress(i);
    if (sensor) {
      Serial.print("Sensor ");
      Serial.print(i);
      Serial.print(": ");
      printTemperature(*sensor);
      Serial.println();
    }
  }
}

void printTemperature(DeviceAddress deviceAddress) {
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Error sensor!");
  } else {
    Serial.print("C: ");
    Serial.print(tempC);
  }
}

void printProgramName() {
  String path = __FILE__;
  int slash = path.lastIndexOf('\\');
  String programName = path.substring(slash + 1);
  int dot = programName.lastIndexOf('.');
  programName = programName.substring(0, dot);
  Serial.print("\nVersión del programa: ");
  Serial.println(programName);
}

void getSensorsOnBus() {
  Serial.print("Sensores encontrados en bus: ");
  Serial.println(sensors.getDeviceCount());
}

// Función auxiliar para obtener dirección por índice
DeviceAddress* getSensorAddress(int index) {
  switch(index) {
    case 1: return &Sensor1;
    case 2: return &Sensor2;
    case 3: return &Sensor3;
    case 4: return &Sensor4;
    case 5: return &Sensor5;
    case 6: return &Sensor6;
    case 7: return &Sensor7;
    case 8: return &Sensor8;
    default: return nullptr;
  }
}

Piezas Personalizadas y Carcasas

Esquemáticos

Esquema básico sin módulo RS232:

Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente

Proceso de manufactura

  1. Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
  2. Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
  3. Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
  4. Monitor de temperatura casero con Raspberry Pi, MCP9808, InfluxDB y Grafana
  5. Invernadero Inteligente DasFilisera: Sistema Avanzado de Monitorización de Cultivos
  6. MotionSense: Detección inteligente de intrusos con Arduino y ESP8266
  7. Prevención de Incendios en Impresoras 3D: Sistema de Seguridad con Sensor Inteligente
  8. Levitación magnética repulsiva con Arduino: Circuito simple y guía DIY
  9. CoroFence: Detector Térmico Avanzado con Sensor PIR e Integración IoT
  10. Sensor de temperatura de rodamientos de precisión: detección y monitorización exactas
  11. Sensor de Temperatura DS18B20 – Termómetro Digital 1-Wire Preciso para Uso Industrial y Consumo