Sí que me he preguntado el por qué funciona con conexión a PC y cualquier placa, pero no desconectado del PC, e intuyo que se debe a que el PC gobierna, de alguna manera, este tema. Pero muy probablemente esté equivocado. Es así?
Una de las dudas capitales que tengo es que placa debo de seleccionar. La "LOLIN(WEMOS)D1 mini Pro" sirve, aun qué la placa no sea LOLIN? Digamos que es universal? O es alguna de estas placas?
Y sobre el sketch, no lo he puesto antes para no liar más la cosa. Te pongo en antecedentes de en qué consiste el montaje. El proyecto consiste en que, en un primer paso, poner en marcha el envío de datos mediante WiFi a la plataforma, que esta almacena, para en otro momento descargarlos y poder trabajar con ellos.
Para poder hacer el sistema autónomo, y que no dependa de que tenga que estar conectado a la red, en el siguiente paso habrá que adaptar el sketch para que hiberne durante 1h, despierte, envie datos y vuelva a dormir (pero antes de seguir con este paso, necesito que el WiFi funcione).
Y el sketch con el que trabajo es el siguiente:
#define _DEBUG_ //Imprimeix, a serial, l'estat de la connexió WiFi
#define _DISABLE_TLS_ //Imprimeix, a serial, l'estat de la connexió WiFi
#include <ESP8266WiFi.h> //Librería de conexión WiFi del módulo ESP8266
#include <ThingerESP8266.h> //Librería de la plataforma thinger.io
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
// Assignar pins ESP8266 a pins arduino
#define D1 5
#define D2 4
#define D4 2
#define D3 0
// Assignar SPI als pins
#define BME_SCK D1 //SCL BME280
#define BME_MOSI D2 //SDA BME280
#define BME_CS D3 //SCB BME280
#define BME_MISO D4 //SD0 BME280
#define SEALEVELPRESSURE_HPA (1013.25) //Pressió aproximada. Es pot modificar
//Adafruit_BME280 bme(BME_CS); // hardware SPI
Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); //Programari SPI
unsigned long delayTime; ///////////////////////////////////////////
//Paràmetres del connexió thinger.io
#define username "XXXXXXXXXX"
#define deviceId "WEMOSV4"
#define deviceCredentials "XXXXXXXXXXX"
ThingerESP8266 thing (username, deviceId, deviceCredentials);
int t = 0; //Per regulació horaria
//Paràmetres de connexió WiFi
const char WiFi_ssid[] = "XXXXXXXXXXX";
const char WiFi_password[] = "XXXXXXXXXXXXXXX"; //Clau de xarxa WiFi
//Gestió de decimals a la impressió de Thinger
float round_to_dp( float in_value, int decimal_place )
{
float multiplier = powf( 10.0f, decimal_place );
in_value = roundf( in_value * multiplier ) / multiplier;
return in_value;
}
void setup()
{
Serial.begin (115200); //Obre connexió amb serial
Serial.println (F ("BME280 test"));
bool status;
// Configuració per defecte
status = bme.begin();
if (!status)
{
Serial.println ("No es troba el sensor BME280. Verificar cablejat!");
while (1);
}
Serial.println ("-- Sensor funcionant --"); //("-- Test predeterminat --");
// delay (1000); //Velocitat a la que imprimeix a serial
Serial.println();
thing.add_wifi (WiFi_ssid, WiFi_password); //Inicialització WiFi per comunicar-se amb l'API
thing["BME280"] >> [](pson & out) //Inicializació de la lectura de dades des de l'API
{
out ["1 Temperatura"] = round_to_dp(bme.readTemperature() / 1.09, 2); //*4*
out ["2 Humitat"] = round_to_dp (bme.readHumidity() / 0.77, 2); //*4*
out ["3 Pressio"] = round_to_dp (bme.readPressure() / 99.76, 2); //*4* i *5*
out ["4 Index calor"] = round_to_dp (0.63 * (bme.readTemperature() + 61.0 + ((bme.readTemperature() - 68.0) * 1.32) + (bme.readHumidity() * 0.094)), 2); //*4* i *5*
out ["5 Punt rosada"] = round_to_dp((bme.readTemperature() - ((100 - bme.readHumidity()) / 5)), 2);
t++; //Referent a instruccions hivernació
};
}
void loop()
{
thing.handle();
/*
if(!t) //Si la connexió s'ha creat i el recurs s'ha enviat correctament, t == 1
{
thing.write_bucket ("ESP8266V4", "ESP8266V4"); //Trucant al bucket
delay (5000); //Mil·lisegons
ESP.deepSleep (1000000*60*3, WAKE_RF_DEFAULT); //Thinger 3 minuts; //microsegons//(3600000000); //1h microsegons//(3540000000 + 55000000); //59 minuts + 55 segons = 1h //*7* Dormir el processador durant x minuts (microsegons)
}
*/
printValues(); //Descomentar per veure valors a serial
}
/*
Només per depuració. Un cop comprovat el funcionament al serial, cal desactivar
aquestes instruccions per llegir al serial, altrament interfereix en la recollida
de dades a Thinger, provocant que les lectures les faci a hores diferents
a les predeterminades.
*/
void printValues() //Impressió valors a serial
{
Serial.println(); //Salt de línia entre info connexió i dades a serial
//Temperatura
Serial.print ("Temperatura: ");
float fTemp = bme.readTemperature();
Serial.print (fTemp);
Serial.println (" ºC");
//Humitat
Serial.print ("Humitat: ");
float rH = bme.readHumidity() / 0.77;
Serial.print (rH);
Serial.println(" %");
//Pressió
Serial.print ("Pressió: ");
float bPress = bme.readPressure() / 99.75F;
Serial.print (bPress);
Serial.println (" hPa");
//Índex de calor
Serial.print ("Índex calor: ");
float hIndex = 0.63 * (fTemp + 61.0 + ((fTemp-68.0)*1.2) + (rH*0.094)); //*6*
Serial.print (hIndex);
Serial.println (" ºC");
//Punt de rosada
Serial.print ("Punt rosada: ");
float dPoint = fTemp - ((100-rH) /5);
Serial.print (dPoint);
Serial.println (" %");
delay (1000); //Segons
Serial.println();
}
(NO VEO LA MANERA DE COLOCAR EL CÓDIGO DENTRO DE LA CAJA PARA QUE SEA MÁS FÁCIL LEERLO. sI ME DICES CÓMO, LO CAMBIO)
Posteriormente, cuando funcione, quiero instalar este sistema en un caja de Stevenson y cargar la batería mediante energía solar.
Llevo mucho tiempo peleándome con el tema y no consigo dar con el problema...
Cómo lo ves?
Gracias por la atención y la ayuda.
Salu2 cordiales