Adding the folder with the drivers for the sensors HTU21D and BD1750.
parent
9f66ad05d2
commit
f251c2b51e
@ -0,0 +1,50 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h> //to print error
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <unistd.h> //header file for standard I2c send and receive commands
|
||||
#include <sys/ioctl.h> //setup I2c devices
|
||||
#include <linux/i2c-dev.h> //definitions and structures
|
||||
#include <i2c/smbus.h> //smbus commands
|
||||
|
||||
#include "BH1750_H.h"
|
||||
|
||||
//Declarations of functions
|
||||
// Brightness:
|
||||
int get_lux(int fd, double *lux){
|
||||
|
||||
// Establish the direction of the slave
|
||||
if (ioctl(fd, I2C_SLAVE, BH1750_ADDR) < 0){
|
||||
perror("Error to stablish the direction of I2C");
|
||||
//close(fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Send the command for the mesaurment
|
||||
if(i2c_smbus_write_byte(fd, BH1750_OTHR) < 0){
|
||||
perror("Failed to send the command for mesaurment ");
|
||||
//close(fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
usleep(180000);
|
||||
|
||||
char buffer[2];
|
||||
__s32 res = i2c_smbus_read_i2c_block_data(fd, 0x00, sizeof(buffer), buffer);
|
||||
if (res != 2){
|
||||
perror("Error -1: Failed to read from the device");
|
||||
return 1;
|
||||
}
|
||||
*lux = ((buffer[0] << 8) | buffer[1]) / 1.2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Reset Sensor
|
||||
/*int reset_BH1750(int fd){
|
||||
if(0 > ioctl(fd, I2C_SLAVE, BH1750_ADDR)){
|
||||
perror("Error -2: Failed to reset");
|
||||
return -2;
|
||||
}
|
||||
i2c_smbus_write_byte(fd, BH1750_RESET);
|
||||
return 0;
|
||||
}*/
|
@ -0,0 +1,17 @@
|
||||
#ifndef BH1750_h //Definicion del archivo para header
|
||||
#define BH1750_h
|
||||
|
||||
#define BH1750_ADDR 0x23 //Definition of sensor address direction
|
||||
|
||||
//Commands for reading of temperature or humidity
|
||||
#define BH1750_PON 0x01 //Command for power on
|
||||
#define BH1750_OTHR 0x20 //Command for One Time H-Resolution
|
||||
#define BH1750_RESET 0xFE //Command for Reset the sensor
|
||||
|
||||
//Function declarations
|
||||
// Get the brightness:
|
||||
int get_lux(int fd, double *lux);
|
||||
// Reset:
|
||||
int reset_BH1750(int fd);
|
||||
|
||||
#endif
|
@ -0,0 +1,49 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h> //to print error
|
||||
|
||||
#include <unistd.h> //header file for standard I2c send and receive commands
|
||||
#include <sys/ioctl.h> //setup I2c devices
|
||||
#include <linux/i2c-dev.h> //definitions and structures
|
||||
#include <i2c/smbus.h> //smbus commands
|
||||
|
||||
#include "HTU21D_H.h"
|
||||
|
||||
//Declarations of functions
|
||||
// Temperature:
|
||||
int get_temp(int fd, double *temp){
|
||||
reset_sensor(fd);
|
||||
char buffer[3];
|
||||
__s32 res = i2c_smbus_read_i2c_block_data(fd, HTU21D_TEMP, sizeof(buffer), buffer);
|
||||
if (res < 0){
|
||||
perror("Error -1: Failed to read from the device");
|
||||
return -1;
|
||||
}
|
||||
*temp = -46.85+175.72*(buffer[0]*256+buffer[1])/65536.0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Humidity
|
||||
//int get_hum(int fd, double *hum);
|
||||
int get_hum(int fd, double *hum){
|
||||
reset_sensor(fd);
|
||||
char buffer[3];
|
||||
__s32 res = i2c_smbus_read_i2c_block_data(fd, HTU21D_HUM, sizeof(buffer), buffer);
|
||||
if ( res < 0 ){
|
||||
perror("Error -3: Failed to read humidity ");
|
||||
return -1;
|
||||
}
|
||||
*hum = -6+125*(buffer[0]*256+buffer[1])/65536.0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Reset Sensor
|
||||
int reset_sensor(int fd){
|
||||
if(0 > ioctl(fd, I2C_SLAVE, HTU21D_ADDR)){
|
||||
perror("Error -2: Failed to reset");
|
||||
return -2;
|
||||
}
|
||||
i2c_smbus_write_byte(fd, HTU21D_RESET);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,19 @@
|
||||
#ifndef HTU21D_H //Definicion del archivo para header
|
||||
#define HTU21D_H
|
||||
|
||||
#define HTU21D_ADDR 0x40 //Definition of sensor address direction
|
||||
|
||||
//Commands for reading of temperature or humidity
|
||||
#define HTU21D_TEMP 0xE3
|
||||
#define HTU21D_HUM 0xE5
|
||||
#define HTU21D_RESET 0xFE
|
||||
|
||||
//Function declarations
|
||||
// Temperature:
|
||||
int get_temp(int fd, double *temp);
|
||||
// Humidity:
|
||||
int get_hum(int fd, double *hum);
|
||||
// Reset:
|
||||
int reset_sensor(int fd);
|
||||
|
||||
#endif
|
Binary file not shown.
Loading…
Reference in New Issue