|
|
|
|
| Debian | コードネーム | 年月 | 備考 | (参考)Ubuntuでの該当名称 |
| Debian 11 | Bullseye | 2021/08/14~ | 2021/11からラズパイにリリース | Focal Fossa 20.04 LTS ? |
| Debian 10 | Buster | 2019/06/20~ | 2019/06からラズパイ4対応 | Bionic 18.04 LTS |
| Debian 9 | Stretch | 2017/08/16~ | 2018/03からラズパイ3B+対応 | Xenial 16.04 LTS |
| Debian 8 | Jessie | 2015~ | 2016/02からラズパイ3対応 | Trusty 14.04 LTS |
| Debian 7 | Wheezy | 2013~2016 | ||
| Debian 6.0 | Squeeze | 2011~2014 | ||
| Debian GNU/Linux 5.0 | Lenny | 2009~2012 |
![]() GY-91 MPU9250 BMP280 10DOF Acceleration Gyroscope Compass 9 Shaft Sensor ASIN: B01CG26A3A |
![]() EasyWordMall GY-68 BMP180 大気圧センサーモジュールArduino用 ASIN: B0112A1ZD2 |
![]() 【ノーブランド 品】大気圧 センサ モジュール 気圧 センサー BMP180 気圧センサー ASIN: B01C2I7CMG |
![]() SODIAL(R)BMP180デジタル気圧センサボードモジュール8ピンArduinoスペアBMP085用 ASIN: B00YM2SFK4 |




$ sudo raspi-config
$ sudo apt-get -y install python-smbus i2c-tools
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
0x76に存在するのを確認する(SDOはプルダウンなので I2Cアドレスは 0x76となる)
# -*- coding: utf-8 -*-
#!/usr/bin/python
# http://www.neko.ne.jp/~freewing/raspberry_pi/
# Copyright (c)2016 FREE WING, Y.Sakamoto
import RPi.GPIO as GPIO
import os
import smbus
import time
# BMP280 Class
# https://www.bosch-sensortec.com/bst/products/all_products/bmp280
class BMP280():
DevAdr = 0x76
myBus = ""
if GPIO.RPI_INFO['P1_REVISION'] == 1:
myBus = 0
else:
myBus = 1
b = smbus.SMBus(myBus)
t_fine = 0
cal_T1 = 0
cal_T2 = 0
cal_T3 = 0
cal_P1 = 0
cal_P2 = 0
cal_P3 = 0
cal_P4 = 0
cal_P5 = 0
cal_P6 = 0
cal_P7 = 0
cal_P8 = 0
cal_P9 = 0
def setUp(self):
self.b.write_byte_data(self.DevAdr, 0xE0, 0xB6) # SOFT_RESET
time.sleep(0.1)
self.b.read_byte_data(self.DevAdr, 0xD0) # ID=0x58 BMP280
self.b.write_byte_data(self.DevAdr, 0xF4, 0x6F) # ctrl_meas
self.cal_T1 = self.getValue16(0x88)
self.cal_T2 = self.getValue16s(0x8A)
self.cal_T3 = self.getValue16s(0x8C)
self.cal_P1 = self.getValue16(0x8E)
self.cal_P2 = self.getValue16s(0x90)
self.cal_P3 = self.getValue16s(0x92)
self.cal_P4 = self.getValue16s(0x94)
self.cal_P5 = self.getValue16s(0x96)
self.cal_P6 = self.getValue16s(0x98)
self.cal_P7 = self.getValue16s(0x9A)
self.cal_P8 = self.getValue16s(0x9C)
self.cal_P9 = self.getValue16s(0x9E)
self.getValueTemp()
self.getValuePres() / 100.0
def getValueTemp(self):
val = self.getValue(0xFA)
val = val>>4
val_1 = ((((val>>3) - (self.cal_T1 <<1))) * (self.cal_T2)) >> 11
val_2 = (((((val>>4) - (self.cal_T1)) * ((val>>4) - (self.cal_T1))) >> 12) * (self.cal_T3)) >> 14
val_f = val_1 + val_2
self.t_fine = val_f
return ((val_f * 5 + 128) >> 8) / 100.0
def getValuePres(self):
val = self.getValue(0xF7)
val = val>>4
val_1 = (self.t_fine) - 128000
val_2 = val_1 * val_1 * self.cal_P6
val_2 = val_2 + ((val_1*self.cal_P5)<<17)
val_2 = val_2 + ((self.cal_P4)<<35)
val_1 = ((val_1 * val_1 * self.cal_P3)>>8) + ((val_1 * self.cal_P2)<<12)
val_1 = ((((1)<<47)+val_1))*(self.cal_P1)>>33
if val_1 == 0:
return 0
p = 1048576 - val
p = (((p<<31) - val_2)*3125) / val_1
val_1 = ((self.cal_P9) * (p>>13) * (p>>13)) >> 25
val_2 = ((self.cal_P8) * p) >> 19
p = ((p + val_1 + val_2) >> 8) + ((self.cal_P7)<<4)
return p/256.0
def getValueAlti(self):
seaLevelhPa = 1013.25
p = self.getValuePres()
p = p/100.0
alti = 44330 * (1.0 - pow(p / seaLevelhPa, 0.1903));
return alti
def getValue16(self, adr):
data = self.b.read_i2c_block_data(self.DevAdr, adr, 2)
tmp = data[1]
tmp = tmp<<8
tmp = tmp | data[0]
return tmp
def getValue16s(self, adr):
data = self.b.read_i2c_block_data(self.DevAdr, adr, 2)
tmp = data[1]
sign = tmp & 0x80
tmp = tmp & 0x7F
tmp = tmp<<8
tmp = tmp | data[0]
if sign > 0:
tmp = tmp - 32768
return tmp
def getValue(self, adr):
self.b.write_byte(self.DevAdr, adr)
data = self.b.read_i2c_block_data(self.DevAdr, adr, 3)
tmp = data[0]
tmp = tmp<<8
tmp = tmp | data[1]
tmp = tmp<<8
tmp = tmp | data[2]
tmp = tmp & 0xFFFFFF
return tmp
# tmp = self.b.read_word_data(self.DevAdr, adr)
# MAIN
myBMP280 = BMP280()
myBMP280.setUp()
# LOOP
for a in range(1000):
t = myBMP280.getValueTemp()
p = myBMP280.getValuePres() / 100.0
a = myBMP280.getValueAlti()
os.system("clear")
print 'Temp.= %7.2f C' % t
print 'Pres.= %7.2f hPa' % p
print 'Alti.= %7.2f m' % a
time.sleep(0.5)
$ sudo apt-get -y install python-smbus i2c-tools $ nano BMP280.py $ python BMP280.py
| 加速度センサ | MMA7455L NXP | 使い方の説明 | 0x1D | (W:0x32 R:0x33) | MMA7455 三軸加速度センサモジュール AQM0802Aと一緒に使えない相性? |
| 地磁気センサ | HMC5883L Honeywell | 使い方の説明 | 0x1E | (W:0x3C R:0x3D) | CJ-M49 デジタルコンパスモジュール 3軸地磁気センサ |
| RFID NFCリーダライタ | NXP PN532 | 使い方の説明 | 0x24 | (W:0x48 R:0x49) | ELECHOUSE NFC MODULE V3 |
| 8ビット I/Oエクスパンダ | PCF8574 Texas Instruments | 使い方の説明 | 0x2F | (W:0x5E R:0x5F) | FC-113 PCF8574 キャラクタ液晶モジュール接続用 |
| キャラクタ液晶 8文字x2行 | 秋月 AQM0802A ST7032 Sitronix | 使い方の説明 | 0x3E | (W:0x7E R:0x7F) | 秋月の AQM0802液晶はラズパイ側の回路が原因の癖が有ります。 MMA7455と一緒に使えない相性? PCA9515AD I2Cバスリピーターとの併用を推奨 |
| キャラクタ液晶モジュール 16文字×2行 | 秋月 AQM1602A ST7032 Sitronix | 使い方の説明 | 0x3E | (W:0x7E R:0x7F) | 秋月の AQM1602A液晶モジュール |
| 湿度センサ | HTU21D TE Connectivity | 使い方の説明 | 0x40 | (W:0x80 R:0x81) | GY-21 温度、湿度センサーモジュール |
| AD/DA変換 | PCF8591 NXP | 使い方の説明 | 0x48 | (W:0x90 R:0x91) | YL-40 8ビットA/D & D/Aコンバータ |
| 温度センサ | LM75A Texas Instruments | 使い方の説明 | 0x4F A0-A2=H | (W:0x9E R:0x9F) | A0~A2を "H"に設定で 0x4F デフォルト 0x48 |
| 3軸加速度センサ | ADXL345 Analog Devices | 使い方の説明 | 0x53 | (W:0xA6 R:0xA7) | GY-291 3軸加速度センサモジュール |
| I2Cメモリ | AT24C32 (4KBメモリ) | 0x57 | (W:0xAE R:0xAF) | ZS-042 下記の RTCモジュールに搭載 | |
| RTC リアルタイムクロック | DS3231 現 Maxim 旧 Dallas Semiconductor | 使い方の説明 | 0x68 | (W:0xD0 R:0xD1) | ZS-042 温度補償水晶発振器(TCXO)および水晶を内蔵する低コスト、 超高精度 I2Cリアルタイムクロック(RTC) |
| 赤外線アレイセンサ | AMG8833 Panasonic | 使い方の説明 | 0x68 | (W:0xD0 R:0xD1) | AMG8833 赤外線アレイセンサ Grid-EYEモジュール サーモグラフィーごっこが可能 |
| 6軸 ジャイロ+加速度センサ | MPU-6050 InvenSense | 使い方の説明 | 0x68 ADO=L | (W:0xD0 R:0xD1) | GY-521 三軸加速度センサ・三軸ジャイロセンサモジュール、 AD0端子 プルアップ時=0x69、 AD0端子 プルダウン時=0x68 |
| 9軸 ジャイロ+加速度+地磁気センサ | MPU-9150 InvenSense | 0x69 | (W:0xD0 R:0xD1) | MPU-6050に地磁気センサーを追加した最強センサー | |
| 9軸 ジャイロ+加速度+地磁気センサ | MPU-9250 InvenSense | 0x69 | (W:0xD0 R:0xD1) | MPU-9150の改良型、3軸加速度 + 3軸ジャイロ + 3軸コンパス | |
| 気圧/気温/高度センサ | BMP180 Bosch Sensortec | 0x77 | (W:0xEE R:0xEF) | BMP085の改良型 | |
| 気圧/温度/高度センサ | BMP280 Bosch Sensortec | 使い方の説明 | 0x76 SDO=L | (W:0xEC R:0xED) | BMP180の改良型、温度・気圧(高度)センサー SDO端子 プルアップ時=0x77、 SDO端子 プルダウン時=0x76 |
| 湿度/気圧/温度/高度センサ | BME280 Bosch Sensortec | 0x76 SDO=L | (W:0xEC R:0xED) | BMP280の進化型、湿度・温度・気圧(高度)の 4種類の環境情報を取得できる(湿度が追加になった) SDO端子 プルアップ時=0x77、 SDO端子 プルダウン時=0x76 | |
| 照度、近接センサ | APDS-9930 Broadcom | 使い方の説明 | 0x39 | (W:0x72 R:0x73) | |
| RGB色センサ、ジェスチャー、照度、近接センサ | APDS-9960 Broadcom | 使い方の説明 | 0x39 | (W:0x72 R:0x73) | |
| RGB色センサ | TCS34725 TAOS | 使い方の説明 | 0x29 | (W:0x52 R:0x53) | |
| 12点 静電タッチセンサ | MPR121 Freescale Semiconductor | 使い方の説明 | 0x5A | (W:0xB4 R:0xB5) | |
| 有機LEDモジュール 128x64 0.96インチ | SSD1306 SOLOMON SYSTECH | 使い方の説明 | 0x3C | (W:0x78 R:0x79) | DC='L'で 0x3C、DC='H'で 0x3D |