部品 センサー他 BME280 Use_Python_RaspberryPi
お問合せ
Pr:
部品
(
Parts
)
Sf:
ソフトウェア
(
Software
)
Pw:
発電装置
(
PowerGeneration
)
Md:
模型
(
Model
)
Ms:
計測器
(
Measuring
)
Tl:
工具
(
Tools
)
Ad:
オーディオ
(
Audio
)
Ec:
電子回路
(
ElectronicCircuit
)
Cr:
車
(
Car
)
Ot:
その他
(
Others
)
膠原病経験
(
collagen disease
)
HobbyLab
(
About HobbyLab
)
履歴
(
りれき
)
1.
BME280 気温他使用例
(1)
接続確認
(2)
プログラム例
(3)
使用状況・結果
I
2
C 関係
プロトコル
I
2
C について
スレーブ関係資料
ADS1115 16bit4CH A/D
INA226 直流電圧電流計
BME280 気圧,湿度,気温計
BH1750 照度計
DS3231 時計
SSD1306 0.96"OLED
マスター関係プログラム
I
2
C RaspberryPi_設定
ADS1115
RaspberryPi_コマンド接続
RaspberryPi_Python
Arduino
CH23V203 MounRiverStudioⅡ
INA226
Arduino
RaspberryPi_Python
BNE280
Arduino
RaspberryPi_Python
BH1750
Arduino
RaspberryPi_Python
DS3231
Arduino
RaspberryPi_Python
SSD1306
Arduino
RaspberryPi_Python
Pr:Sensor_AD_時計等
PrS:
部品関係リスト
PrS:電圧、電流
ADS1115 16bit4CH I
2
C A/D
Hardware
RaspberryPi_コマンド接続
RaspberryPi_Python
Arduino
CH23V203 MounRiverStudioⅡ
INA226 I
2
C 直流電圧電流
Hardware
Arduino
RaspberryPi_Python
WCS 電流ホール素子
Hardware
PrS:温度、気圧、湿度、照度
BNE280 I
2
C 気圧,湿度,気温
Hardware
Arduino
RaspberryPi_Python
BH1750 I
2
C 照度
Hardware
Arduino
RaspberryPi_Python
DS18B20 1-Wire 温度計
Hardware
Arduino
RaspberryPi_Python
PrS:時間、日時
DS3231 I
2
C 時計
Hardware
Arduino
RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
概要と線や点を描く
フォントを描く
SSD1306 I
2
C 0.96"OLED
Hardware
Arduino
RaspberryPi_Python
Pr:Wire 電線関係
PrW:
電線規格
PrW:
通信ケーブル・コネクタ
PrW:
RD316にSMA取付
Pr:Resistance 抵抗
PrR:
抵抗全般
Pr:Capacitor コンデンサ
PrCa:
コンデンサ全般
Pr:Coil コイル
PrCo:
コイル全般
Pr:PassiveElmt 受動素子
PrP:
受動素子全般
Pr:Diode ダイオード関係
PrD:
部品関係リスト
PrD:
ダイオード全般
Pr:OPAMP オペアンプ関係
PrO:
部品関係リスト
PrO:送受信機
Si4735
Si4735について
Si4735ラジオを作って見よう1
PrO:オペアンプ
PrO:
オペアンプ全般
LM324
LM358
Pr:Tr トランジスタ関係
PrT:
部品関係リスト
PrT:
FET全般
2SC1815
リレードライバー設計
アンプ設計
発振器
TLP152
TLP152テスト
TLP2361
TLP2361テスト
TLP5754
TLP5754テスト
Pr:Source 電源関係
PrS:
部品関係リスト
PrS:
電源関係全般
ツェナーダイオード
TL431
LM317
PrS:Downモジュール
EGS002_IR2110S
SKU011012
ACDC02
XH_M299
LM2596
Mini360_MP23070N
DROK
WH140
PrS:UPモジュール
MT3608
PrS:充電モジュール
TP4056
Pr:Old Processor他
PrO:
部品関係リスト
Pr:Prプロセッサ関係
PrP:
部品関係リスト
PrP:プロセッサ
動作比較
STM32F動作比較
CH32V203&STM32F 動作比較
arduino動作比較
raspberrypi関係
RaspberryPiハード
CH32V関係
-
CH32V開始
-
203K8T6(32Pin)開始
-
203C8T6(48P)開始
-
003J4M6(8Pin)開始
-
003F4P6(20Pin)開始
-
Moun River StudioⅡ
で
プログラミング!
203_GPIO関係
203_TIME関係
203_TIME Encoder
203_I
2
C関係
203_1-Wire関係
003_DS18B20テスター
USART(UART)関係
DS18B20をModBus制御
-マニュアル
203データシート
203取説
MBA メモリとバス方式
PWR 電力制御
RCC リセット・拡張・クロック
BKP バックアップレジスタ
CRC 巡回冗長検査
RTC リアルタイムクロック
GPIO GPIOと代替機能
DMA ダイレクトメモリアクセス制御
ADTM 高度な制御タイマー
GPTM 汎用タイマー
BCTM 基本タイマー
USART 同期非同期通信
arduino関係
ESP12関係
(a)
ESP-8266D1mini注意
PrP:その他
RS485ドライバー
CP2102 BRIDGE
WCH-LinkEエミュレーター
1.
BME280 気温、湿度、大気圧使用例
BME280をRaspberryPiで使用する場合は事前に RaspberryPi でi
2
Cの使用設定が必要です。
設定方法は左メニューの同モジュール関係の *1 i
2
C 設定 を
接続方法は左メニューの同モジュール関係の *2 i
2
C 接続 のリンクで確認下さい。
(1)
接続確認
i2cdetect -y 1で接続しているデバイスNo(BME280は76h)を表示させる。
接続がOKのようだ。
(2)
プログラム例
# Program by try-day.com # Program by Takeshi Hirabayasi of try-day.com import smbus #補正用 t_f = 0.0 dig_T = [] dig_P = [] dig_H = [] i2c=smbus.SMBus(1) addr=0x76 HUM= 0xF2#CTRL_HUM MEAS = 0xF4#CTRL_MEAS CONFIG = 0xF5#CONFIG hum_d= 0x01 #湿度のオーバーサンプリング ×1に設定 meas_d = 0x27 #温度、気圧のオーバーサンプリング ×1、ノーマルモードに設定 config_d = 0xA0 #通常モードでの非アクティブ期間tstandby =1000ms に設定 # サブルーチン def init_bme280(): #初期プログラム ret = i2c.write_byte_data(addr, HUM , hum_d)#ctrl_hum ret = i2c.write_byte_data(addr, MEAS, meas_d) #ctrl_meas ret = i2c.write_byte_data(addr, CONFIG, config_d) #config def read_CorrectionValue():#BME280補正データ取得 cv_t = i2c.read_i2c_block_data(addr, 0x88, 0x6) #温度補正値読込み dig_T.append((cv_t[1] << 8) | cv_t[0]) dig_T.append((cv_t[3] << 8) | cv_t[2]) dig_T.append((cv_t[5] << 8) | cv_t[4]) #極性判断 for i in range(1, 2): if dig_T[i] >= 32768: dig_T[i] -= 65536 cv_p = i2c.read_i2c_block_data(addr, 0x8E, 0x12) #気圧補正値読込み dig_P.append((cv_p[1] << 8) | cv_p[0]) dig_P.append((cv_p[3] << 8) | cv_p[2]) dig_P.append((cv_p[5] << 8) | cv_p[4]) dig_P.append((cv_p[7] << 8) | cv_p[6]) dig_P.append((cv_p[9] << 8) | cv_p[8]) dig_P.append((cv_p[11] << 8) | cv_p[10]) dig_P.append((cv_p[13] << 8) | cv_p[12]) dig_P.append((cv_p[15] << 8) | cv_p[14]) dig_P.append((cv_p[17] << 8) | cv_p[16]) #極性判断 for i in range(1, 8): if dig_P[i]>= 32768: dig_P[i] -= 65536 v_h = i2c.read_byte_data(addr, 0xA1)#湿度補正値読込み dig_H.append(v_h) cv_h = i2c.read_i2c_block_data(addr, 0xE1, 0x08) dig_H.append((cv_h[1] << 8) | cv_h[0]) dig_H.append( cv_h[2]) dig_H.append((cv_h[3] << 4) | (0x0F & cv_h[4])) dig_H.append((cv_h[5] << 4) | ((cv_h[4] >> 4) & 0x0F)) dig_H.append( cv_h[6]) #極性判断 if dig_H[1] >= 32768: dig_H[1] -= 65536 for i in range(3, 4): if dig_H[i] >= 32768: dig_H[i] -= 65536 if dig_H[5] >= 128: dig_H[5] -= 256 def read_DataTPH():#測定データ読み込み dTHP = i2c.read_i2c_block_data(addr, 0xF7, 0x08)#データ読み込み #データ変換 data_P = (dTHP[0] << 16 | dTHP[1] << 8 | dTHP[2]) >> 4 data_T = (dTHP[3] << 16 | dTHP[4] << 8 | dTHP[5]) >> 4 data_H =dTHP[6] <<8 | dTHP[7] #補正 tr = CorrectionValueT(data_T) ps = CorrectionValueP(data_P) hd = CorrectionValueH(data_H) return tr,ps,hd def CorrectionValueT(cnv_T): #温度補正 global t_f v1 = (cnv_T / 8.0 - dig_T[0] * 2.0) * (dig_T[1]) / 2048.0 v2 = (cnv_T / 16.0 - dig_T[0]) * (cnv_T / 16.0 - dig_T[0]) / 4096.0 * dig_T[2] / 16384.0 t_f = v1 + v2 t1 = (t_f * 5 + 128) / 256 t1 = t1 / 100 return t1 def CorrectionValueP(cnv_P): #湿度補正 globalt_f p1 = 0.0 v1 = t_f - 128000.0 v2 = v1 * v1 * dig_P[5] v2 = v2 + ((v1 * dig_P[4]) * 131072.0) v2 = v2 + (dig_P[3] * 3.435973837e10) v1 = ((v1 * v1 * dig_P[2])/ 256.0) + (v1 * dig_P[1]) * 4096 v1 = (1.407374884e14 + v1) * (dig_P[0] / 8589934592.0) if v1 == 0: return 0 p1 = 1048576.0 - cnv_P p1 = ((p1 * 2147483648.0 - v2) * 3125) / v1 v1 = (dig_P[8] * (p1 / 8192.0) * (p1 / 8192.0)) / 33554432.0 v2 = (dig_P[7] * p1) / 524288.0 p1 = (p1 + v1 + v2) / 256 + dig_P[6] * 16.0 p1 = p1 / 256 / 100 return p1 def CorrectionValueH(cnv_H):#湿度補正 global t_f h1 = float(t_f) - 76800.0 h1 = (cnv_H - (float(dig_H[3]) * 64.0 + float(dig_H[4]) / 16384.0 *h1))* \ (float(dig_H[1]) / 65536.0 * (1.0 + float(dig_H[5]) / 67108864.0 * h1 * \ (1.0 + float(dig_H[2]) / 67108864.0 * h1))) h1 = h1 * (1.0 - float(dig_H[0]) * h1 / 524288.0) return h1 init_bme280() #BME280の初期化 read_CorrectionValue()#補正データ読み込み Tr,Ps,Hd =read_DataTPH()#測定データ読み込み #表示 print('Temperatures = ' + str(Tr)+"(℃)") print('Pressure = ' + str(Ps)+"(hpa)") print('Humidity = ' + str(Hd)+"(%)")
(3)
テスト状況写真とプログラムを実行した結果
更新日 2025/11/24 19:50 管理者
平林 剛
Hirabayashi Takeshi