オーディオ、ビジュアル機器、料理のツール、キットの製作などを取り上げます。I2CデバイスBME280をつなぐラズパイのもつセンサなどを接続するI2CやSPIバスを利用するために、インストール時のデフォルトから設定を変更します。Busterがリリースされるまでは、設定後にリブートが必要でしたが、今は不要になりました。Configurationをクリックします。Interfaceのタブを選びます。SPIとI2CをEnableにし、OKをクリックして設定は終了です。ファイル・システムの一番上位になります。その下にbootフォルダがあり、その中にconfig.txtがあります。mousepadと入力します。Windowsのように右クリックで管理者で実行のような機能はデフォルトではありません。sudoを最初に入れたので、root権限でテキスト・エディタのmousepadが起動します。mousepadが開いた中に、マウスを使ってconfig.txtをドラッグします。config.txtは、ラズパイが立ち上がるとき、いろいろな設定、デバイス・ドライバの組み込みなどを指示できるシステムのファイルです。/boot/config.txtとしてnanoというテキスト・エディタを利用することが多いのですが、ここではGUIで使えるmousepadを利用します。●デバイス・ドライバを組み込むLinuxに限らず、今のOSは、必要なときに必要なデバイス・ドライバを組み込んで利用します。世の中に利用できるデバイスをすべて読み込むと、メモリに入りきらないからです。WindowsではPnPという機能やUpdateで、自動的にデバイス・ドライバを組み込んだり更新する機能が多くの場合うまく働きます。ラズパイでは、/boot/overlaysにコンパイル済みのデバイス・ドライバが入っているので、利用したいデバイスをconfig.txtに記述して、リブートします。今、テキスト・エディタのmousepadでその作業をしようとしています。/boot/overlaysの中にREADMEがあるので、ダブルクリックして開きます。キーボードのCTRL-Fで検索をします。BME280(後述)と入れると、該当個所を見つけてきます。記述の方法が書いてあります。i2c-sensor,bme280,param=0x76これを、config.txtの最後の行に追加します。キーボードのCTRL-Sで上書き保存をします。root権限で立ち上げているので、システム・ファイルの書き込みはエラーなく正しく実行されます。sudoを使うと、普通のLinuxではパスワードを聞かれるのですが、ラズパイのpiユーザの場合、不要です。デバイス・ドライバの組み込みを有効にするためにリブートしますが、その前に、次のようにセンサの接続を行います。●接続ラズパイをシャットダウンし、緑のLEDが消えたら電源を切ります。BME280をつなぎます。BME280は温度、湿度、気圧が同時に測れる便利なボッシュのセンサです。GPIOの1番ピンから順に、次のようにBME280のボードをジャンパ・ピンで接続します。メス-メス・タイプを使います。BME280はアマゾンで入手しました。多くは、香港や深センからの発送なので、郵送時間が10日ほどかかりますが、今回はアマゾンの倉庫からだったので、翌日に届きました。[並行輸入品]」プリント基板を見ると、抵抗が四つ、コンデンサが一つついています。抵抗の表示は103なので10kΩです。テスタで当たると、I2C信号のSDAとSCLはプルアップ(10kがVccにつながっている)、チップ・セレクトのCSBも同じくプルアップされているので、選択イネーブル状態、I2Cのスレーブ・アドレスを選択するSDOはプルダウンされているので、アドレスは0x76です。BME280はI2CとSPIバスの両方をサポートしますが、このボードは、I2Cバス専用のようです。BME280はBMP280とおなじMEMSデバイスです。BMP280は価格が安いですが、湿度は測れません。内部のレジスタ構成は同じです。●読み取ったデータ4本の配線ですが、3.3VとVccは赤色、GNDは黒色のジャンパ線を使います。すると、接続の勘違いなどを早めに発見できます。ラズパイの電源を入れます。測定結果は、次の三か所に最新の値が書かれているので読み出します。温度は千倍の整数値なので、22.69°C、気圧はPaなので10倍して1015.7hPa、湿度は千倍の整数値なので52.982%です。pythonのプログラムで読み出します。値の書かれたファイルはテキストなので、オープンして読み出し、閉じるという作業を三つのファイルに対して行います。温度と湿度は整数、気圧は実数で記録されています。round()はまるめ関数です。必要な確度の桁数を得るために四捨五入的な使い方をしています。本Webのプログラム中、インデントなどのスペースもしくは改行は、通常のプログラム内ではごみ文字になるので、コピペした後、エディタでスペース文字などを入れなおしてください。time.sleep(3.14)実行中の様子です。三つのデータを読み出したフォルダには、ほかにも設定用のテキストなどもあります。2017.11.15の記事では、読み出しがおかしくなっていました。今回は、12時間ほど連続で読み出していますが、問題なさそうです。(※)ラズパイのI2Cのバス1は、ボード内で1.8kΩの抵抗でプルアップされています。購入したBME280のボードにも10kΩの抵抗でプルアップされています。つなぐと、1.8kと10kが並列につながれます。合成抵抗は約1.5kΩです。低めですが、波形の崩れなどは未確認ですが、問題なく通信できています。ライセンスで提供されています。