Advertisement
Juan_Blanc

ESP8266 Editado

Feb 26th, 2018
535
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.39 KB | None | 0 0
  1. /*****************************/
  2. /*    ESP8266 con sensor     */
  3. /*     DHT 22 conectado      */
  4. /*      a servicios web      */
  5. /*        de Cayenne         */
  6. /* Programado por Juan Blanc */
  7. /*        @juanstdio         */
  8. /*                           */
  9. /*       Febrero 2018        */
  10. /*****************************/
  11.  
  12. /* REQUISITOS
  13.  *  Instalar Librería de Cayenne
  14.  *  https://github.com/myDevicesIoT/Cayenne-MQTT-ESP
  15.  *  
  16.  *  Instalar liberías de Adafruit sobre el DHT
  17.  *  https://github.com/adafruit/DHT-sensor-library
  18.  *  
  19.  *  OPCIONAL: Si da errores que no encuentra la librería SENSOR de Adafruit, instalarla
  20.  *  https://github.com/adafruit/Adafruit_Sensor
  21.  */
  22.  
  23. /* incluir librerías de Cayenee */
  24. #define CAYENNE_PRINT Serial
  25. #include <CayenneMQTTESP8266.h>
  26.  
  27.  
  28. /* incluír librerías para manejar sensor de temperatura */
  29. #include "DHT.h"
  30. #include <Adafruit_Sensor.h>
  31.  
  32. char ssid[] = "IoT_6toA";   //Colocar el nombre de tu Wifi
  33. char clave[] = "16F84A_esp"; //Colocar la clave de tu wifi
  34.  
  35.  
  36. /* COMPLETAR ESTO REGISTRANDOSE EN LA WEB DE CAYENNE*/
  37. /* Añadis un nuevo dispositivo ESP8266, ahí te va a dar unos datos el usuario (user), una clave (password)
  38.  * y una ID de cliente (ClientID).
  39.  */
  40.  
  41. char usuario[] = "string de usuario";
  42. char password[] = "Clave";
  43. char clientID[] = "ID de cliente";
  44.  
  45. /* Calculo de la tensión de la batería, basado en el voltaje máximo dado por el divisor resistivo con la batería al 100% */
  46. /* CAMBIARLO, NO USAR ESTE OFFSET NI EL VMAX */
  47.  
  48. float offset = 5.37 , vmax = 2.80;  // La batería al máximo me da 8.17 V
  49.  
  50.  /* Sensor de temperatura y humedad  */
  51. #define tipoDHT DHT22   // DHT 22  (AM2302)
  52. #define pintDHT D4
  53.  
  54. float h,t ;  // Humedad, Temperatura
  55. void leeTempHum(), checkDatos();
  56. bool hay_data = 1;
  57.  
  58. /* Creamos un objeto para llamar a la librería */
  59. DHT dht(pintDHT, tipoDHT);
  60.  
  61. void setup() {
  62.     /* Inicializar comuniación serial */
  63.   //    Serial.begin(9600);  //Desactivado
  64.  
  65.   // Inicialización de la conectividad al Sitio Cayenne
  66.   Cayenne.begin(usuario, password, clientID, ssid, clave);
  67.  
  68.   /* Inicialización del sensor de temperatura  */
  69.   dht.begin();
  70.  
  71. }
  72.  
  73. void loop() {
  74.   /* Acá no se hace nada, pero se puede añadir */
  75.     Cayenne.loop();
  76. }
  77.  
  78.  
  79. CAYENNE_OUT_DEFAULT()
  80. {
  81.  /* aca se calcula las horas que lleva encendido */
  82.     Cayenne.virtualWrite(0, (millis()/3600000));  //Cuantos milisegundos hay en una hora...
  83.  
  84.   /* Aca se calcula el voltaje y el porcentaje de batería restante */
  85.   int sensorValue = analogRead(A0);
  86.     float voltage = sensorValue * (3.2 / 1023.0) + offset;
  87.        Cayenne.virtualWrite(1,voltage);
  88.         /* No es muy acertado, peero */
  89.           int porcentaje = (((voltage - offset)*100)/vmax);
  90.               Cayenne.virtualWrite(2,porcentaje);
  91.              
  92.   /* Aca se lee temperatura y humedad */
  93.   leeTempHum();
  94.   if(hay_data != 0 )
  95.   {
  96.       Cayenne.virtualWrite(3,t);
  97.        Cayenne.virtualWrite(4,h);
  98.          float hic = dht.computeHeatIndex(t, h, false); // Calculo de la Sensación térmica
  99.            Cayenne.virtualWrite(5,hic);
  100.   }
  101. }
  102. void leeTempHum()
  103. {
  104.   t = dht.readTemperature();
  105.    h = dht.readHumidity();
  106.  }
  107.  
  108. /* En esta funcion loca lo que se verifica es que haya datos nuevos (de paso, si el dht está conectado) */
  109. void checkData () {
  110.  if (isnan(h) || isnan(t)) {
  111.     hay_data = 0 ;
  112.       return;
  113.   }
  114.  else {
  115.      hay_data = 1 ;
  116.        return;
  117.  }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement