树莓派应用实例3:环境光照强度测量
轉自:https://blog.csdn.net/weixiazailaide/article/details/52782458
前期準備
環境要求
GY30模塊(BH1750FVI傳感器),樹莓派系統,python-smbus,iic開啟
安裝python-smbus
這個安裝會附帶安裝i2c-tools,省的單獨安裝了
創建illuminance應用
具體方法見之前博客創建raspberrypistate應用的部分
BH1750FVI與樹莓派連接
BH1750FVI 是一種用于兩線式串行總線接口的數字型光強度傳感器集成電路。這種集成電路可以根據收集的光線強度數據來調整液晶或者鍵盤背景燈的亮度。利用它的高分辨率可以探測較大范圍的光強度變化。(1lx-65535lx)
產品特點
支持I2C BUS接口(f/s Mode Support)。
接近視覺靈敏度的光譜靈敏度特性(峰值靈敏度波長典型值:560nm)。
輸出對應亮度的數字值。
對應廣泛的輸入光范圍(相當于1-65535lx)。
通過降低功率功能,實現低電流化。
通過50Hz/60Hz除光噪音功能實現穩定的測定
支持1.8V邏輯輸入接口。
無需其他外部件。
光源依賴性弱(白熾燈,熒光燈,鹵素燈,白光LED,日光燈)。
有兩種可選的I2C slave地址。
可調的測量結果影響較大的因素為光入口大小。
使用這種功能能計算1.1 lx到100000 lx馬克斯/分鐘的范圍。
最小誤差變動在±20%。
受紅外線影響很小。
BH1750的I2C說明
BH1750支持倆種地址, ADDR=”H”(ADDR≥0.7VCC) ,地址為0x5c ADDR=”L”(ADDR≤0.3VCC),地址為0x23 由于GY-30模塊已經在ADDR管腳與地之間加了一個1000歐姆的電阻,所以默認地址為0x23
BH1750命令說明
命令 命令含義
0x00: 斷電
0x01: 通電
0x07: 復位
0x10: 連續H分辨率模式
0x11: 連續H分辨率模式2
0x13: 連續L分辨率模式
0x20: 一次H分辨率模式
0x21: 一次H分辨率模式2
0x23: 一次L分辨率模式
0x42 0x65: 靈敏度100%
0x44 0x6A: 靈敏度50%
0x41 0x73: 靈敏度200%
BH1750讀取方法
通電(0x01)-設定模式(0x10\0x11\0x13\0x20\0x21\0x23)-等待測量-讀取數據
光照強度計算
光照強度=(讀取值×分辨率)÷(1.2?靈敏度)
GY-30模塊與樹莓派連接
GY-30 樹莓派
VCC 引腳 1
GND 引腳 9
SDA 引腳3
SCL 引腳5
ADDR 懸空
連接測試
使用I2C TOOLS進行查看
sudo i2cdetect -y 1可看到以下結果,與我們前面所說地址為0x23相符
光照強度測量
程序的設置
設置方式方法與前面相同
程序
創建illuminance.py
cd /home/pi/helloworld/illuminance vi illuminance.py #!/usr/bin/env python # encoding: utf-8import smbus import time#BH1750地址 __DEV_ADDR=0x23#控制字 __CMD_PWR_OFF=0x00 #關機 __CMD_PWR_ON=0x01 #開機 __CMD_RESET=0x07 #重置 __CMD_CHRES=0x10 #持續高分辨率檢測 __CMD_CHRES2=0x11 #持續高分辨率模式2檢測 __CMD_CLHRES=0x13 #持續低分辨率檢測 __CMD_THRES=0x20 #一次高分辨率 __CMD_THRES2=0x21 #一次高分辨率模式2 __CMD_TLRES=0x23 #一次分辨率 __CMD_SEN100H=0x42 #靈敏度100%,高位 __CMD_SEN100L=0X65 #靈敏度100%,低位 __CMD_SEN50H=0x44 #50% __CMD_SEN50L=0x6A #50% __CMD_SEN200H=0x41 #200% __CMD_SEN200L=0x73 #200%bus=smbus.SMBus(1) bus.write_byte(__DEV_ADDR,__CMD_PWR_ON) bus.write_byte(__DEV_ADDR,__CMD_RESET) bus.write_byte(__DEV_ADDR,__CMD_SEN100H) bus.write_byte(__DEV_ADDR,__CMD_SEN100L) bus.write_byte(__DEV_ADDR,__CMD_PWR_OFF) def getIlluminance():bus.write_byte(__DEV_ADDR,__CMD_PWR_ON)bus.write_byte(__DEV_ADDR,__CMD_THRES2)time.sleep(0.2)res=bus.read_word_data(__DEV_ADDR,0)#read_word_datares=((res>>8)&0xff)|(res<<8)&0xff00res=round(res/(2*1.2),2)result="光照強度: "+str(res)+"lx"return result測試結果
重啟uwsgi服務
sudo systemctl restart emperor.uwsgi.service在樹莓派瀏覽器輸入 http://127.0.0.1/illuminance
或者在電腦瀏覽器輸入 http://raspberrypi/illuminance
總結
以上是生活随笔為你收集整理的树莓派应用实例3:环境光照强度测量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CaCo-2细胞与LS180细胞区别
- 下一篇: 树莓派应用实例4:环境温湿度测量(改进)