From 805597a71bc572b14715d9af7f3ebef2c3e8dbae Mon Sep 17 00:00:00 2001 From: atomega Date: Tue, 9 Mar 2021 09:15:36 +0000 Subject: [PATCH] Added a bh1750 light sensor module to test the 12c Functions and to expriment with the overall structure --- developpment/interfacer/bh1750.cpp | 61 ++++++++++++++++++ developpment/interfacer/bh1750.h | 49 +++++++++++++++ developpment/interfacer/bh1750.py | 69 +++++++++++++++++++++ developpment/interfacer/commandManager.cpp | 2 +- developpment/interfacer/commandManager.o | Bin 23436 -> 0 bytes developpment/interfacer/errorHandling.o | Bin 7116 -> 0 bytes developpment/interfacer/i2c_driver.cpp | 59 +++++++++++++++--- developpment/interfacer/i2c_driver.o | Bin 4232 -> 0 bytes developpment/interfacer/interfacer.cpp | 18 ++++-- developpment/interfacer/interfacer.o | Bin 25232 -> 0 bytes developpment/interfacer/runtest | Bin 36868 -> 0 bytes developpment/interfacer/systemCall.o | Bin 27828 -> 0 bytes 12 files changed, 243 insertions(+), 15 deletions(-) create mode 100644 developpment/interfacer/bh1750.cpp create mode 100644 developpment/interfacer/bh1750.h create mode 100644 developpment/interfacer/bh1750.py delete mode 100644 developpment/interfacer/commandManager.o delete mode 100644 developpment/interfacer/errorHandling.o delete mode 100644 developpment/interfacer/i2c_driver.o delete mode 100644 developpment/interfacer/interfacer.o delete mode 100755 developpment/interfacer/runtest delete mode 100644 developpment/interfacer/systemCall.o diff --git a/developpment/interfacer/bh1750.cpp b/developpment/interfacer/bh1750.cpp new file mode 100644 index 0000000..02dacfc --- /dev/null +++ b/developpment/interfacer/bh1750.cpp @@ -0,0 +1,61 @@ +#include "bh1750.h" + + +I2C_Driver i2c(1,1); + +Bh1750::Bh1750() +{ + currentMode = 0; // no mode selected +} + +uint8_t Bh1750::sleep() +{ + i2c.writeByte(BH1750_ADDR,BH1750_POWER_DOWN); + return 0; +} + +uint8_t Bh1750::wake() +{ + i2c.writeByte(BH1750_ADDR,BH1750_POWER_ON); + return 0; +} + +uint8_t Bh1750::reset() +{ + i2c.writeByte(BH1750_ADDR,BH1750_RESET); + return 0; +} + + +float Bh1750::oneShot(uint8_t mode) +{ + if(mode > 0) + { + if( mode == BH1750_ONE_TIME_HIGH_RES_MODE_1 || + mode == BH1750_ONE_TIME_HIGH_RES_MODE_2 || + mode == BH1750_ONE_TIME_LOW_RES_MODE) + { + return i2c.readWord(BH1750_ADDR,mode) / 1.2 ; + + } + } + std::cout<< "please seelct a one shot mode "<< std::endl; + exit(1); + return 0; +} + +float Bh1750::continious(uint8_t mode, uint8_t delayMs) +{ + if(mode > 0) + { + if( mode == BH1750_CONTINUOUS_HIGH_RES_MODE_1 || + mode == BH1750_CONTINUOUS_HIGH_RES_MODE_2 || + mode == BH1750_CONTINUOUS_LOW_RES_MODE) + { + return i2c.readWord(BH1750_ADDR,mode) / 1.2; + } + } + std::cout<< "please seelct a continious mode "<< std::endl; + exit(1); + return 0; +} diff --git a/developpment/interfacer/bh1750.h b/developpment/interfacer/bh1750.h new file mode 100644 index 0000000..65f4921 --- /dev/null +++ b/developpment/interfacer/bh1750.h @@ -0,0 +1,49 @@ + +#ifndef _BH1750_H_ +#define _BH1750_H_ + +#include +#include +#include +#include "i2c_driver.h" + + +//Start measurement at 4lx resolution. Time typically 16ms. +#define BH1750_CONTINUOUS_LOW_RES_MODE 0x13 +//Start measurement at 1lx resolution. Time typically 120ms +#define BH1750_CONTINUOUS_HIGH_RES_MODE_1 0x10 +//Start measurement at 0.5lx resolution. Time typically 120ms +#define BH1750_CONTINUOUS_HIGH_RES_MODE_2 0x11 +//Start measurement at 1lx resolution. Time typically 120ms +//Device is automatically set to Power Down after measurement. +#define BH1750_ONE_TIME_HIGH_RES_MODE_1 0x20 +//Start measurement at 0.5lx resolution. Time typically 120ms +//Device is automatically set to Power Down after measurement. +#define BH1750_ONE_TIME_HIGH_RES_MODE_2 0x21 +//Start measurement at 1lx resolution. Time typically 120ms +//Device is automatically set to Power Down after measurement. +#define BH1750_ONE_TIME_LOW_RES_MODE 0x23 + +#define BH1750_POWER_DOWN 0x00 // No active state +#define BH1750_POWER_ON 0x01 // Power on +#define BH1750_RESET 0x07 // Reset data register value + +#define BH1750_ADDR 0x23 // Device Adress + +class Bh1750 +{ + public: + Bh1750(); + uint8_t sleep(); // To be testes + uint8_t wake(); // To be tested + uint8_t reset(); // To be tested + float oneShot(uint8_t mode); // ok + float continious(uint8_t mode, uint8_t delayMs); // IMplment delay or make a delay class ??? + private: + uint8_t high; + uint8_t low; + uint8_t currentMode; + uint8_t currentState; +}; + +#endif // _BH1750_H_ diff --git a/developpment/interfacer/bh1750.py b/developpment/interfacer/bh1750.py new file mode 100644 index 0000000..9b85f24 --- /dev/null +++ b/developpment/interfacer/bh1750.py @@ -0,0 +1,69 @@ +#!/usr/bin/python +#--------------------------------------------------------------------- +# ___ ___ _ ____ +# / _ \/ _ \(_) __/__ __ __ +# / , _/ ___/ /\ \/ _ \/ // / +# /_/|_/_/ /_/___/ .__/\_, / +# /_/ /___/ +# +# bh1750.py +# Read data from a BH1750 digital light sensor. +# +# Author : Matt Hawkins +# Date : 26/06/2018 +# +# For more information please visit : +# https://www.raspberrypi-spy.co.uk/?s=bh1750 +# +#--------------------------------------------------------------------- +import smbus +import time + +# Define some constants from the datasheet + +DEVICE = 0x23 # Default device I2C address + +POWER_DOWN = 0x00 # No active state +POWER_ON = 0x01 # Power on +RESET = 0x07 # Reset data register value + +# Start measurement at 4lx resolution. Time typically 16ms. +CONTINUOUS_LOW_RES_MODE = 0x13 +# Start measurement at 1lx resolution. Time typically 120ms +CONTINUOUS_HIGH_RES_MODE_1 = 0x10 +# Start measurement at 0.5lx resolution. Time typically 120ms +CONTINUOUS_HIGH_RES_MODE_2 = 0x11 +# Start measurement at 1lx resolution. Time typically 120ms +# Device is automatically set to Power Down after measurement. +ONE_TIME_HIGH_RES_MODE_1 = 0x20 +# Start measurement at 0.5lx resolution. Time typically 120ms +# Device is automatically set to Power Down after measurement. +ONE_TIME_HIGH_RES_MODE_2 = 0x21 +# Start measurement at 1lx resolution. Time typically 120ms +# Device is automatically set to Power Down after measurement. +ONE_TIME_LOW_RES_MODE = 0x23 + +#bus = smbus.SMBus(0) # Rev 1 Pi uses 0 +bus = smbus.SMBus(1) # Rev 2 Pi uses 1 + +def convertToNumber(data): + # Simple function to convert 2 bytes of data + # into a decimal number. Optional parameter 'decimals' + # will round to specified number of decimal places. + result=(data[1] + (256 * data[0])) / 1.2 + return (result) + +def readLight(addr=DEVICE): + # Read data from I2C interface + data = bus.read_i2c_block_data(addr,ONE_TIME_HIGH_RES_MODE_1) + return convertToNumber(data) + +def main(): + + while True: + lightLevel=readLight() + print("Light Level : " + format(lightLevel,'.2f') + " lx") + time.sleep(0.5) + +if __name__=="__main__": + main() diff --git a/developpment/interfacer/commandManager.cpp b/developpment/interfacer/commandManager.cpp index 4c89a55..1df86cf 100644 --- a/developpment/interfacer/commandManager.cpp +++ b/developpment/interfacer/commandManager.cpp @@ -12,7 +12,7 @@ #include "commandManager.h" -CommandManager:: CommandManager():emptyIndex(0) +CommandManager::CommandManager():emptyIndex(0) { } diff --git a/developpment/interfacer/commandManager.o b/developpment/interfacer/commandManager.o deleted file mode 100644 index c9eefcfa4aa02184388118e5dc428d6f07807555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23436 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 KU9iQF(ffZ{Jwp@# diff --git a/developpment/interfacer/errorHandling.o b/developpment/interfacer/errorHandling.o deleted file mode 100644 index 5826368bc58cef7ff195f7d5f25abb058656ab29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7116 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 Ad;kCd diff --git a/developpment/interfacer/i2c_driver.cpp b/developpment/interfacer/i2c_driver.cpp index e4b0a67..7b81d3d 100644 --- a/developpment/interfacer/i2c_driver.cpp +++ b/developpment/interfacer/i2c_driver.cpp @@ -14,6 +14,8 @@ #define PORT_I2C "/dev/i2c-1" +// some curious things https://www.john.geek.nz/2012/12/update-reading-data-from-a-bosch-bmp085-with-a-raspberry-pi/ + I2C_Driver::I2C_Driver(const uint8_t& channel, const uint8_t& mode) { @@ -25,7 +27,6 @@ I2C_Driver::I2C_Driver(const uint8_t& channel, const uint8_t& mode) std::cout << "unable to open : "<< deviceDescriptor << " ! quiting" << std::endl; exit(1); } - std::cout << "I2C initialized sucsessfully" << std::endl; } uint8_t I2C_Driver::writeByte(const uint8_t& address, const uint8_t& data) // retuns 0 when a sucsessful transation ocures @@ -43,7 +44,7 @@ uint8_t I2C_Driver::writeByte(const uint8_t& address, const uint8_t& data) // std::cout << "Unable to write quiting" << std::endl; exit(0); } - return 1; + return 0; } uint8_t I2C_Driver::readByte(const uint8_t& address, const uint8_t& reg) @@ -54,13 +55,53 @@ uint8_t I2C_Driver::readByte(const uint8_t& address, const uint8_t& reg) exit(1); } - if(writeByte(address,reg)) + writeByte(address,reg); //Initiate a write to indicate the desired register to read + + if (read(deviceDescriptor, recieve_buffer, 1) != 1) // An then initare a read request of 1 byte { - if (read(deviceDescriptor, recieve_buffer, 1) != 1) - { - std::cout << "Unable to read quiting" << std::endl; - exit(1); // ERROR HANDLING: i2c transaction failed - } - } + std::cout << "Unable to read quiting" << std::endl; + exit(1); + } return recieve_buffer[0] ; } + + +uint8_t I2C_Driver::writeWord(const uint8_t& address, const uint8_t& reg, const uint16_t& data) // retuns 0 when a sucsessful transation ocures +{ + + if (ioctl(deviceDescriptor, I2C_SLAVE, address) < 0) + { + std::cout << "Unable to reach device : "<< address << " ! quiting" << std::endl; + exit(1); + } + + send_buffer[0] = reg; + send_buffer[1] = data; + + if ((write(deviceDescriptor, send_buffer, 2)) != 2) + { + std::cout << "Unable to write quiting" << std::endl; + exit(0); + } + return 0; +} + +uint16_t I2C_Driver::readWord(const uint8_t& address, const uint8_t& reg) +{ + uint16_t result = 0 ; + if (ioctl(deviceDescriptor, I2C_SLAVE, address) < 0) + { + std::cout << "Unable to reach device : "<< address << " ! quiting" << std::endl; + exit(1); + } + + writeByte(address,reg); //Initiate a write to indicate the desired register to read + + if (read(deviceDescriptor, recieve_buffer, 2) != 2) // An then initare a read request of 2 bytes + { + std::cout << "Unable to read quiting" << std::endl; + exit(1); + } + result = (recieve_buffer[0] << 8) + recieve_buffer[1] ; + return result ; +} diff --git a/developpment/interfacer/i2c_driver.o b/developpment/interfacer/i2c_driver.o deleted file mode 100644 index 1bb39e8b109103f7c99c92b840346182a795f707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4232 zcmbVPTWlOx8UAN??QAZE%>~uOD;Ua_Zqs_R>$sK^f$GF@6U%Ohye=RVX_%dz#G`C> zmYLba1|$kpTvU+ySc!^Q0*MOsArF-h5{QT9ArF0s6dwA3Q0%f*fJhAz&xG%rIcGf{ zwN>e{#^3qQfB(;!GxqoAm!2~WL-a7DD%(ut?jx~eWGaTL?3a?r*@=G?Zv0}adi(h; zQ}zxjrM-iy39OF~q<&{GCW~8dnAZmfOB?V0_u<2Tjnx;oa+v33W0PF!8=Il|=l4wL z-!R|WBtEF$*%WEMdqCuOQR(_1lIw$5*W4J&^QDc=T*}7^^wK`hrnn(V>=~?8wJ*f2 zq;wdU_J!MvTk_LC-9u$kR*k4D{4!D1TSC1>)VmM$mQZg|+GT2cJ(VZ>^;(MS+DeRR-ih-lm~ZXKhq)E%KiV=(^c}u+ zJ_dSh)He>oXI|%36xlNi|8<=g;ys;;C#sjQi}z6XE5A$RLZ)A9pP*l||HJ!r4|&|v zd3{8`*w^$~_+yF>`(=(}@5Tp386WNs_a)npN70Y;-f~{~KYDo@v8Qy-=w@wEMh+WdTq+&gMs5VZ6I^#v? zvtOHhPw`G@z4V=MwC!F!>P&9Lu;ZWvzdcRK3~{ld^baBXMRglo@n6F=LsYk?QJL#Ny8uxSsMW%ifG z4{qFe@g@5GusLNM5Af{6W9CH0fW5rL_ugL=VoBu8+}sJXx@?ENmS=a(ncA^hePa5l zpyxH7OqiUkLC<#WmM2C9(~)Tz9W5HWjXk*og+sc^TpDoEjr?P%%a}AZNN92`^;y3-T4n=#>xk+d$k8 zN`FMSY3!T!_hZbrhY|aGXSlGl-n@)v;*Ab9ImyeejC_~SKldsbiT@(@OmoV)hnlng zZw%XH#P-}qKj?`QZEsg_f}k>U2RR}$xXDkERY@SkM(uN2q$ z{T`h2I*|FklhOZMh9AnrKMciKIlZ1# z+G2gP87(!A_dM5euX&+sIes^cg1!?aq8ZEbeBN20=Z;&}rEcGH*4CCL8iU5z6&rjC_F-g4o?{JfL@>W=+1)lg zCpnPUJx{DNOJ6;8atS8=mbG9Zl|~(xsdYN8Wo~kQd2zMbuq5pE0vH4nvNC#+u3V6YukHFQ-O!SVP5 zaB4krwSwn6QRfqtyDG7>Z0s3+OVSa@<8DMVo*!ChojbLFQ!&?=zdEePj@&gK6ssNj z)++X~<9?9MY1+usIF98nitumBaz$j7__)Z6#4m}wqWA{!36a-{RgpK<`c1XY`!$CT z{a+Q{B|a(gcg61!kBHn?yn=VDjEny?5%De%kBW2@{~i(XULrCcu@3)AeqYJ|qvZSW zjxm0Th`4;G$;XI@TULAp$hZ*^aeq!k+}9L;gNV3q5)t<%aRN!>el1UmREe;gAwqAK z2)zqH#`_i#@!N{85)r?n_-}yaWAIPJKQOnrUJ!Yk_>9PH;xyu696{`OJe7R=j(j@# z?s1*pJMt0{{E*`OyMf$P2$0-3e$~SDE0Ns-MnQtBdKS2y8qQ24wYDAEQfq~w)B-;t zCzqeEK}JjJCDd!LC6t#2u9m=Fmzv{Wx#D)=rRzs-?aa9sCUCPjmnF8bqbTrN{m2cO z(Z?H~hZ?pQU+84;|Gfw3j~-}SJXjvTYO^szuki_c6^5Szr# + +unsigned int miliSecond = 1000; ErrorHandler errorHandle; CommandManager commander; -I2C_Driver i2cDriver(1,1); - +//I2C_Driver i2cDriver(1,1); +Bh1750 lightSens; int initPlatform() { // Dev. Module initialisation "Ex i2c_init() ...." - return 0; } void dummy() { - std::cout<< unsigned(i2cDriver.readByte(0x40,0x00)) <bX@hn#B@HyDe?k*6fb#nK`r4+XdGY17 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 L5zsP7E8qVDnL_u; diff --git a/developpment/interfacer/systemCall.o b/developpment/interfacer/systemCall.o deleted file mode 100644 index f7b9606559ff48b41718f63e67f3d05bb36b7431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27828 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