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

Subir datos del sensor DHT11 a ThingSpeak con Arduino MKR1000

Componentes y suministros

ComponenteCantidad
Sensor de temperatura y humedad DHT11 (4 pines)1
Arduino MKR10001

Sobre este proyecto

Ya había desarrollado código para el ESP8266 12-E para subir datos de sensores ambientales, tomados por el DHT11, de forma inalámbrica a ThingSpeak y graficarlos. Solo necesitaba hacer pequeños cambios para que funcionara con el nuevo Arduino MKR1000.

Paso 1: Conexión del sensor

Conecta la línea de datos del DHT al pin 1 del MKR1000 (etiquetado como 1 en la parte posterior de la placa).

Paso 2: Bibliotecas necesarias

Descarga las siguientes bibliotecas:

Paso 3: Configuración del gestor de placas

  1. Ve a Herramientas → Placa → Gestor de placas en el IDE de Arduino
  2. Busca "Arduino SAMD Boards (32-bits ARM Cortex M0+)"
  3. Instala la versión 1.6.3 (la versión 1.6.4 tuvo problemas y no instalaba la placa MKR1000 correctamente)

Paso 4: Configuración de ThingSpeak

  1. Crea una cuenta gratuita en ThingSpeak.com
  2. Configura los campos para graficar (humedad y temperatura)
  3. Copia tu "Write API Key" de ThingSpeak y pégala en el sketch junto con tu SSID y contraseña WiFi

Paso 5: Carga y ejecución

  1. Selecciona el puerto COM correcto (busca MKR1000)
  2. Compila y sube el código
  3. Deberías ver las actualizaciones enviándose a ThingSpeak en el Monitor Serie

Código

Combinación de sketches de Adafruit, WiFi101 WebClient y plantillas de ThingSpeak para Arduino. Modificado por Stephen Borsay para el MKR1000.

/* Este sketch combina el sketch DHT de Adafruit, WiFi101 WebClient y el ejemplo de Arduino para ThingSpeak. Modificado por Stephen Borsay para MKR1000, uso libre. */
#include <SPI.h> // No necesario ya que no usamos el shield, solo el chip
#include <WiFi101.h>
#include "DHT.h"

#define DHTPIN 1       // Pin al que estamos conectados, pin 1 es el 5º pin desde el final
#define DHTTYPE DHT11  // DHT 11
//#define DHTTYPE DHT21 // DHT 21
//#define DHTTYPE DHT22 // DHT 22

DHT dht(DHTPIN, DHTTYPE);

String apiKey = "TuApiKeyAqui";      // API key de ThingSpeak
char ssid[] = "TuSSIDAqui";          // Nombre de tu red WiFi
char pass[] = "TuPasswordAqui";      // Contraseña de tu red
int keyIndex = 0;                    // Índice de clave de red (solo para WEP)

char server[] = "api.thingspeak.com"; // Dirección del servidor (usando DNS)
WiFiClient client;

void setup() {
  Serial.begin(9600);
  while (!Serial) { ; } // Espera a que el puerto serie conecte (solo USB nativo)

  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("Escudo WiFi no presente");
    while (true); // No continuar
  }

  // Intentar conectar a la red WiFi
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("Intentando conectar a SSID: ");
    Serial.println(ssid);
    WiFi.begin(ssid, pass); // Conectar a red WPA/WPA2
    delay(10000); // Esperar 10 segundos para la conexión
  }
  
  Serial.println("Conectado a WiFi");
  printWifiStatus();
}

void loop() {
  delay(2000); // Esperar entre mediciones
  
  // Usamos int en lugar de float por problemas de tamaño de paquete/conversión
  int h = dht.readHumidity();
  int t = dht.readTemperature();      // Celsius
  int f = dht.readTemperature(true);  // Fahrenheit

  // Verificar si alguna lectura falló
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("¡Fallo al leer del sensor DHT!");
    return;
  }

  // Calcular índice de calor
  int hif = dht.computeHeatIndex(f, h);
  int hic = dht.computeHeatIndex(t, h, false);

  // Mostrar en Monitor Serie
  Serial.print("Humedad: "); Serial.print(h); Serial.print(" %\t");
  Serial.print("Temperatura: "); Serial.print(t); Serial.print(" *C ");
  Serial.print(f); Serial.print(" *F\t");
  Serial.print("Índice de calor: "); Serial.print(hic); Serial.print(" *C ");
  Serial.print(hif); Serial.println(" *F\n");

  Serial.println("\nIniciando conexión al servidor...");
  
  if (client.connect(server, 80)) {
    Serial.println("Conectado al servidor");
    
    // Preparar datos para ThingSpeak
    String tsData = "field1=" + String(h) + "&field2=" + String(t) + 
                    "&field3=" + String(f) + "&field4=" + String(hic) + 
                    "&field5=" + String(hif);
    
    // Enviar petición HTTP POST
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(tsData.length());
    client.print("\n\n");
    client.print(tsData);
    
    client.stop();
    delay(1000);
  }
}

void printWifiStatus() {
  Serial.print("SSID: "); Serial.println(WiFi.SSID());
  IPAddress ip = WiFi.localIP();
  Serial.print("Dirección IP: "); Serial.println(ip);
  long rssi = WiFi.RSSI();
  Serial.print("Intensidad de señal (RSSI): "); Serial.print(rssi); Serial.println(" dBm");
}

Código en GitHub: Mismo código en GitHub para MKR1000

Esquemáticos

Conecta la línea de datos del DHT al pin 1 del MKR1000 (5º pin desde arriba). Conecta 5V y GND al sensor DHT, ambos proporcionados por el MKR1000.

Proceso de manufactura

  1. Descubra Cómo Parts.Cat.Com Simplifica la Compra de Repuestos y Ahorra Tiempo y Dinero
  2. Shop.Cat.Com: Su Recurso Integral para Equipos, Accesorios y Herramientas
  3. Optimice su Maquinaria Cat®: Guía Definitiva de My.Cat.com
  4. Breakout compacto DHT de temperatura y humedad para Raspberry Pi – ATtiny85 y DHT22/DHT11
  5. Construya un Monitor de Temperatura ThingSpeak con Raspberry Pi y BrickPi
  6. Tu primer proyecto IoT con Raspberry Pi, DHT11 y ThingSpeak
  7. Entrevista a Philip Cotton, fundador de 3Dfilemarket.com, experto en educación de impresión 3D en Reino Unido
  8. Arduino MKR1000: Pinout, Especificaciones y Guía para Proyectos IoT
  9. PicoCoreMX8MM: Módulo ARM Ultra-Compacto Impulsado por NXP i.MX 8M Mini
  10. Kontron Presentación COM HPC: Nuevo Estándar Embedded Computing Alto Rendimiento
  11. Acero ASTM A551 Clase DHT Tratada Térmicamente – Propiedades Clave y Rendimiento