sensors.h 2.37 KB
#ifndef SENSORS_H
#define SENSORS_H

#include <stdint.h>
#include <stdio.h>
#include "i2c.h"
#include "libwismart.h"
#include "module.h"
#include "adc.h"

#define		LIGHT_ADDR			0x39
#define		DISTANCE_ADDR		0x01
#define		PRESSURE_ADDR		0x77 //Cambiar a MPL115A
#define		HUMIDITY_TEMP_ADDR	0x27
#define		SOUND_ADDR			0x72
//REMEMBER TO UPDATE collectData ROUTINE WITH EACH NEW SENSOR!!!!
//REMEMBER TO UPDATE I2C sensors in sensor definitions in this header and sensors.c WITH EACH NEW SENSOR!!!!
#define		TOTAL_SENSORS		5

#define		BATTERY_ADDR		0x00 //SIEMPRE PRESENTE, NUNCA BUSCAR EN i2c_scan

typedef struct {
  uint8_t ID;
  char* description;
  char* type;
  char* unit;
} sensor;

void wakeup_sensors(uint8_t logic_address);

//SENSOR DEFINITIONS
extern sensor light_sensor;
extern sensor ultrasound_sensor;
extern sensor pressure_sensor;
extern sensor humidity_temp_sensor;
extern sensor sound_sensor;
extern sensor battery;

extern sensor* sensors[TOTAL_SENSORS+1];

//SENSOR FUNCTIONS

//LIGHT SENSOR
uint32_t get_light_data(void);
uint16_t get_light_ch0(void);
uint16_t get_light_ch1(void);
char* light_value(uint32_t light);

//ULTRASONIC SENSOR
uint16_t get_distance_data(void);
void init_ultrasound(void);
char* distance_value(uint16_t distance);


//PRESSURE SENSOR
typedef struct {
	uint16_t AC1;
	uint16_t AC2;
	uint16_t AC3;
	uint16_t AC4;
	uint16_t AC5;
	uint16_t AC6;
	uint16_t B1;
	uint16_t B2;
	uint16_t MB;
	uint16_t MC;
	uint16_t MD;
} bmp085_callibration;

uint16_t get_pressure_data(void);
uint16_t get_pressure_temperature_data(void);
bmp085_callibration get_pressure_callibration_data(void);
char* callibration_pressure_data_csv(bmp085_callibration parameters);
char* pressure_value(uint16_t pressure,uint16_t temperature);
void init_pressure(void);
void init_pressure_temperature(void);

//HUMIDITY AND TEMPERATURE SENSOR

void init_humidity_temp(void);
uint16_t get_humidity_data(void);
uint16_t get_temperature_data(void);
char* temp_humidity_value(uint16_t temp, uint16_t humidity);

//SOUND SENSOR

void init_sound(void);
uint32_t get_sound_data(void);
char* sound_value(uint32_t sound);

//BATTERY SENSOR

void init_battery(void);
uint32_t get_battery_data(void);
char* battery_value(uint32_t battery);

//Collect function
void collectData(char* valueSensors[], uint8_t* sensors);

#endif