2
0

More than 3 years have passed since last update.

Raspberry PiのMathematicaでセンサを扱う

Posted at

 ラズベリーパイ(以下、ラズパイ)はMathematicaが無償で利用できます。ラズパイ4になってCPUの処理能力が上がったので、3Dの描画も延々と待たなくて済むようになりました。ラズパイは、GPIOやI2C、SPIなどのハードをアクセスできるのが特徴のLinuxマシンです。現在は、Raspbian Buster が2019年6月から利用できるようになりました。

ターミナルからMathematicaを立ち上げる

 sudo Mathematicaと実行すれば、root権限でMathematicaが立ち上がります。通常piユーザは、GPIO、I2C、SPIをroot権限がなくてもアクセスできます。ここでは、MathematicaでMEMSセンサのBME280から温度を読み出し、グラフ化します。

BME280のデバイス・ドライバの登録

 ラズパイには、コンパイル済みのセンサのデバイス・ドライバがたくさん用意されています。詳細は、/boot/overlays/READMEに書かれています。といっても簡単な説明だけです。ドライバの多くはiioです。
 最初は、メイン・メニューのPreferencesからRaspberry Pi Configurationをクリックし、Interfaceのタブを選び、I2Cにチェックを入れOKを押すことで、I2Cインターフェースを有効にします。Buster からは、リブートは不要になりました。
ras202-e0df932a.png

  sudo nano /boot/config.txt

で、設定ファイルconfig.txtを開き、最後の行に、

  dtoverlay = i2c-sensor,bme280,param=0x76

を加え、上書きで保存し、終了、リブートをすると、BME280がI2Cインターフェースで有効になります。確認は、i2cdetect -y 1を実行し、0x76にUUと表示が出るとOKです。
bme01.png
 その前にセンサの接続をします。

BME280はアマゾンで購入

 820円で、翌日配達でした。

   「HiLetgo BME280 温度 センサー 湿度 センサー 気圧 センサー Arduino センサー 大気圧センサ 温湿度センサー ブレイクアウト Arduinoに対応 [並行輸入品]」

 次のようにI2Cで接続します。BME280自体はSPIとI2Cの両方に対応していますが、このボードはI2C専用になっていますし、デバイス・ドライバもI2C用です。
BME280b-400wri.png

温度データの読み取り

 デバイス・ドライバを組み込むと、/sysの下に読み取ったデータがテキスト・ファイルで、随時更新されています。
ras208.png

 次のように読み取ります。整数で、千倍の値が書かれています。

  cat /sys/bus/i2c/devices/1-0076/iio:device0/in_temp_input

 Pythonで、

f = open('/sys/bus/i2c/devices/1-0076/iio:device0/in_temp_input')
Temp = round(int(f.read()) / 1000.0, 1)
f.close
print(Temp)

で読み出せます。  

MathematicaでPythonのプログラムを利用する

 MathematicaからPythonのプログラムを利用するには、ExternalSessions機能を使います。Pythonのプログラムは関数にします。ExternalValueでその関数を呼び出し、値を受け取ります。

dataList = {};
Do[
session = StartExternalSession["Python"];

ExternalEvaluate[session, "def temp():
    f = open('/sys/bus/i2c/devices/1-0076/iio:device0/in_temp_input');
    Temp = round(int(f.read()) / 1000.0, 1);
    f.close;
    return Temp
"];

v = ExternalValue[session, "temp()"];
DeleteObject[session];
AppendTo[dataList, v]
, {v, 1, 10}
]
dataList
ListLinePlot[dataList]

 実行中の様子です。10回読み込み、グラフを描きました。
math101.png

 リアルタイムにグラフを更新するプログラムは、https://www.denshi.club/pc/raspi/linux-3-mathematicabme280.html を参考にしてください。

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0