Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Nubosidad, velocidad and UV range #3

Merged
merged 8 commits into from
Aug 19, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 60 additions & 25 deletions Firmware/meteorito/meteorito.ino
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ para redmet.org y Meteorito
Andres Sabas @ The Inventor's House
Brando Are @ Electronic Cats
Fecha Original de Creación: 28 de Octubre del 2017
Ultima Actualizacion: 26 Septiembre 2018
Ultima Actualizacion: 16 Agosto 2019

Este ejemplo demuestra la conexion y envio de datos
con un modulo ESP32 a la plataforma
Expand Down Expand Up @@ -43,6 +43,10 @@ Bajo Licencia MIT
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>

#define DEBUG
//#define DEBUG2

//TaskHandle_t Task1;
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

sensors_event_t event;
Expand All @@ -60,7 +64,7 @@ unsigned long tiempo=0;
unsigned long sumaTiempo=0;
byte contador=0;
bool bandera=0;
float velocidad=0;
float velocidad = 0;

/*Variables uv*/
const byte pinRayosUV = 33; //pin Analogico
Expand Down Expand Up @@ -95,8 +99,8 @@ BLECharacteristic PresionCharacteristics(BLEUUID((uint16_t)0x2A6D), BLECharacter
BLECharacteristic UvCharacteristics(BLEUUID((uint16_t)0x2A76), BLECharacteristic::PROPERTY_READ);
//BLECharacteristic DireccionVientoCharacteristics(BLEUUID((uint16_t)0x2A73), BLECharacteristic::PROPERTY_READ);
BLECharacteristic NubosidadCharacteristics(BLEUUID((uint16_t)0x2A58), BLECharacteristic::PROPERTY_READ);
//BLECharacteristic VelocidadVientoCharacteristics(BLEUUID((uint16_t) 0x2A72), BLECharacteristic::PROPERTY_READ);
//BLECharacteristic PrecipitacionCharacteristics(BLEUUID((uint16_t) 0x2A78), BLECharacteristic::PROPERTY_READ);
BLECharacteristic VelocidadVientoCharacteristics(BLEUUID((uint16_t) 0x2A72), BLECharacteristic::PROPERTY_READ);
BLECharacteristic PrecipitacionCharacteristics(BLEUUID((uint16_t) 0x2A78), BLECharacteristic::PROPERTY_READ);
//BLECharacteristic AltitudCharacteristics(BLEUUID((uint16_t) 0x2A6C), BLECharacteristic::PROPERTY_READ);

BLEDescriptor TemperaturaDescriptor(BLEUUID((uint16_t)0x290C));
Expand All @@ -105,8 +109,8 @@ BLEDescriptor PresionDescriptor(BLEUUID((uint16_t)0x290C));
BLEDescriptor UvDescriptor(BLEUUID((uint16_t)0x290C));
//BLEDescriptor DireccionVientoDescriptor(BLEUUID((uint16_t)0x290C));
BLEDescriptor NubosidadDescriptor(BLEUUID((uint16_t)0x290C));
//BLEDescriptor VelocidadVientoDescriptor(BLEUUID((uint16_t)0x290C));
//BLEDescriptor PrecipitacionDescriptor(BLEUUID((uint16_t)0x290C));
BLEDescriptor VelocidadVientoDescriptor(BLEUUID((uint16_t)0x290C));
BLEDescriptor PrecipitacionDescriptor(BLEUUID((uint16_t)0x290C));
//BLEDescriptor AltitudDescriptor(BLEUUID((uint16_t)0x290C));

class MyServerCallbacks : public BLEServerCallbacks {
Expand Down Expand Up @@ -144,17 +148,17 @@ void InitBLE() {
pMeteorito->addCharacteristic(&NubosidadCharacteristics);
NubosidadCharacteristics.addDescriptor(&NubosidadDescriptor);
//Caracteristica Dirección del viento
//pHeart->addCharacteristic(&DireccionVientoCharacteristics);
//pMeteorito->addCharacteristic(&DireccionVientoCharacteristics);
//DireccionVientoDescriptor.setValue("Position 0 - 6");
//DireccionVientoCharacteristics.addDescriptor(&DireccionVientoDescriptor);
//Caracteristica Velocidad del viento
//pHeart->addCharacteristic(&VelocidadVientoCharacteristics);
//DireccionVientoDescriptor.setValue("Position 0 - 6");
//DireccionVientoCharacteristics.addDescriptor(&VelocidadVientoDescriptor);
pMeteorito->addCharacteristic(&VelocidadVientoCharacteristics);
VelocidadVientoDescriptor.setValue("Position 0 - 6");
VelocidadVientoCharacteristics.addDescriptor(&VelocidadVientoDescriptor);
//Precipitacion
//pHeart->addCharacteristic(&PrecipitacionCharacteristics);
//PrecipitacionDescriptor.setValue("Position 0 - 6");
//PrecipitacionCharacteristics.addDescriptor(&PrecipitacionDescriptor);
pMeteorito->addCharacteristic(&PrecipitacionCharacteristics);
PrecipitacionDescriptor.setValue("Position 0 - 6");
PrecipitacionCharacteristics.addDescriptor(&PrecipitacionDescriptor);
// pHeart->addCharacteristic(&AltitudCharacteristics);
// AltitudCharacteristics.addDescriptor(&AltitudDescriptor);

Expand Down Expand Up @@ -197,16 +201,20 @@ int leerDireccion(int suma){

// Funcion para obtener la luz ultravioleta
int leerUV(){
int uv =map(analogRead(pinRayosUV),0,1350,0,85);
int uv =map(analogRead(pinRayosUV),0,1350,0,15);
return uv;
}

/*Funcion para obtener nubosidad*/
char nubosidad() {
int lecturaSensor=analogRead(pinNubosidad);
char nubosidad = tipoNubosidad[map(lecturaSensor, 0, 4095, 0, 5)];
char nubosidad = tipoNubosidad[map(lecturaSensor, 0, 4095, 0, 4)];

#ifdef DEBUG2
Serial.print("Nubosidad: ");
Serial.println(nubosidad);
#endif

return nubosidad;
}

Expand All @@ -215,10 +223,13 @@ void presion(){
/* Muestra los resultados (la presión barométrica se mide en hPa) */
if (event.pressure)
{

/* Display atmospheric pressue in hPa */
#ifdef DEBUG2
Serial.print("Presion: ");
Serial.print(event.pressure*0.1);
Serial.println(" hPa");
#endif

/* Calculating altitude with reasonable accuracy requires pressure *
* sea level pressure for your position at the moment the data is *
Expand All @@ -238,18 +249,24 @@ void presion(){
/* Primero obtenemos la temperatura actual del BMP085 */
float temperature;
bmp.getTemperature(&temperature);

#ifdef DEBUG2
Serial.print("Temperatura BMP180: ");
Serial.print(temperature);
Serial.println(" C");
#endif

/* Luego convierte la presión atmosférica, y SLP a la altitud */
/* Actualice esta próxima línea con el SLP actual para obtener mejores resultados */
float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

#ifdef DEBUG2
Serial.print("Altitud: ");
Serial.print(bmp.pressureToAltitude(seaLevelPressure,
event.pressure));
Serial.println(" m");
Serial.println("");
#endif
}
else
{
Expand All @@ -269,7 +286,7 @@ static void envioDatosWiFi() {
Serial.println(F("Connected."));

//Asignar parametros a enviar:
/*clouds, humidity, pressure, rain, temp, uv, windDirection, windSpeed*/
/*clouds, humidity, pressure, rain, temp, uv, windDirection, windSpeed*/
String clouds, humidity, pressure, rain, temp, indiceUV, windDirection, windSpeed;

clouds = String(nubosidad());
Expand All @@ -296,9 +313,11 @@ static void envioDatosWiFi() {
//Lectura de todos los valores posibles
String dato="{\"data\":{\"clouds\":\""+clouds+"\",\"humidity\":\""+humidity+"\",\"pressure\":\""+pressure+"\",\"rain\":\""+rain+"\",\"temp\":\""+temp+"\",\"uv\":\""+indiceUV+"\",\"windDirection\":\""+windDirection+"\",\"windSpeed\":\""+windSpeed+"\"}}";

#ifdef DEBUG
Serial.println(F("Enviando datos!"));
Serial.println(dato);

#endif

client.print(httpHeader);
client.print("Content-Length: ");
client.println(dato.length());
Expand Down Expand Up @@ -374,6 +393,7 @@ static void envioDatosBLE(){

void setup () {
Serial.begin(9600);

// initialize digital pin LED_BUILTIN as an output.
pinMode(2, OUTPUT);

Expand Down Expand Up @@ -441,10 +461,13 @@ void loop () {
}

noInterrupts();
delayMicroseconds(200);
envioDatosWiFi();
envioDatosBLE();
interrupts();
interrupts();
delayMicroseconds(200);

#ifdef DEBUG
Serial.println("");
//Mostrar variables
Serial.print("temperatura: ");
Expand All @@ -454,13 +477,15 @@ void loop () {
Serial.print("UV nivel luz: ");
Serial.println(leerUV());
Serial.print("Velocidad del viento: ");
Serial.print(velocidad);
Serial.print(velocidad,10);
Serial.println(" Km/h");
Serial.print("dirección: ");
Serial.println(direccion);
Serial.print(precipitacion);
Serial.println(" mm/s");

#endif


digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
Expand All @@ -469,6 +494,7 @@ void loop () {
delay(500);
digitalWrite(2, LOW);
delay(500);

}

/*
Expand All @@ -493,30 +519,38 @@ void printWifiStatus()
Serial.println(" dBm");
}


void interrupcionViento() {
noInterrupts();
if( millis()>(50+tiempoAntes)){
bandera=!bandera;
if(bandera==0){
tiempo=(millis()-tiempoAntes);
tiempoAntes=millis();
sumaTiempo==tiempo;
sumaTiempo=+tiempo;
if(contador<=19){
contador++;
//Serial.println(contador);
#ifdef DEBUG2
Serial.println(contador);
#endif
}
else{
contador=0;
velocidad=(2*3.1416*0.05*3.6)/((sumaTiempo/1000.0)/20);
//Serial.print(velocidad);
//Serial.println(" Km/h");
#ifdef DEBUG2
Serial.print(velocidad);
Serial.println(" Km/h");
#endif
sumaTiempo=0;
}
}
}
interrupts();
}

//interrupcion para precipitación
//Interrupcion para precipitación
void interrupcionPrecipitacion() {
noInterrupts();
if( millis()>(50+tiempoAntesDos)){
tiempoDos=(millis()-tiempoAntesDos);
tiempoAntesDos=millis();
Expand All @@ -529,4 +563,5 @@ void interrupcionPrecipitacion() {
sumaTiempoDos=0;
}
}
interrupts();
}