はじめに
Raspberry PiでGroveセンサーを使おうとすると、まず「GrovePi+」が思い浮かびますが、今は「Grove Base HAT for Raspberry Pi」がありますので、こちらでいろいろ試してみたいと思います。
外観
「Grove Base HAT for Raspberry Pi」は、Raspberry PiのGPIO経由でGroveセンサーとやり取りします。
ポートが山ほど用意されており、これで足らないなんて贅沢は言わせません感がたっぷりです。
早速我が家のRaspberry Pi 3B+と接続してみます。
ナンテコッタ/(^o^)\
ケースがあると刺さりません...
ふたははずしましょう。
反対側が浮いてますので、足は付けたほうがいいかもしれません。
準備
使用するにはseeed grove.pyライブラリというものが必要になりますので、まずはこれをインストールします。
いくつかインストールの方法はあるようなのですが、一番簡単な「Online one-click installation」を行います。
$ curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s -
結構な種類のセンサーを動かすプログラム(以下を参照)が用意されています。
grove_12_key_cap_i2c_touch_mpr121
grove_16x2_lcd
grove_1wire_thermocouple_amplifier_max31850
grove_3_axis_accelerometer_adxl372
grove_3_axis_compass_bmm150
grove_3_axis_digital_accelerometer
grove_4_digit_display
grove_6_axis_accel_gyro_bmi088
grove_air_quality_sensor_v1_3
grove_button
grove_cap_touch_slider_cy8c
grove_collision_sensor
grove_current_sensor
grove_gesture_sensor
grove_gpio
grove_high_accuracy_temperature
grove_i2c_color_sensor_v2
grove_i2c_motor_driver
grove_i2c_thermocouple_amplifier_mcp9600
grove_imu_9dof_icm20600_ak09918
grove_lcd_1.2inches
grove_led
grove_light_sensor_v1_2
grove_loudness_sensor
grove_mech_keycap
grove_mini_pir_motion_sensor
grove_moisture_sensor
grove_multi_switch
grove_multi_switch_poll
grove_oled_display_128x64
grove_optical_rotary_encoder
grove_piezo_vibration_sensor
grove_pwm_buzzer
grove_recorder_v3_0
grove_relay
grove_rotary_angle_sensor
grove_round_force_sensor
grove_ryb_led_button
grove_servo
grove_slide_potentiometer
grove_sound_sensor
grove_step_counter_bma456
grove_switch
grove_temperature_humidity_bme680
grove_temperature_humidity_sht31
grove_temperature_sensor
grove_thumb_joystick
grove_tilt_switch
grove_time_of_flight_distance
grove_touch_sensor
grove_ultrasonic_ranger
grove_uv_sensor
grove_water_sensor
grove_ws2813_rgb_led_strip
この中の「grove_led」を試してみます。
刺せるポートは
==============
pin | slot
==============
5 | D5
12 | PWM
16 | D16
18 | D18
22 | D22
24 | D24
26 | D26
とのことなので、D5につないでみます。
$ grove_led 5
Hat Name = 'Grove Base Hat RPi'
すると、LEDが一定間隔で点滅します。
プログラミング
用意されているプログラムを動かすだけではつまらないので、自分でやりたいようにプログラムを作成してみます。
(言語はPythonを使います)
とりあえず、先程同じLEDを光らせるプログラムを作ってみます。
grove.pyライブラリ(ファイル名みたいですけど、ライブラリ名です)を介してアクセスします。
準備
GPIOのピンに対する読み書きは「grove.gpio」パッケージの「GPIO」クラスを使用します。
import time
from grove.gpio import GPIO
「time」パッケージはON/OFFの時間間隔の指定で使います。
アクセス
今回は5番ピン(デジタル)に対してON/OFFを送りますので、以下のようにインスタンスを作成します。
led = GPIO(5, GPIO.OUT)
制御
無限ループでON/OFFを繰り返します。(1秒間隔)
while True:
led.write(1)
time.sleep(1)
led.write(0)
time.sleep(1)
実行
作成したプログラムを実行します。
(「led.py」というファイル名で保存したとします)
$ python3 led.py
先ほどと同様に、一定間隔でLEDが点滅します。
※Python2でもPython3でも使えます
おまけ
「grove.py」の資料はこちらにあります。
が、ほとんど内容が無く、なんの参考にもなりません。
サンプルのソースを読むのが一番役に立ちます。
まとめ
「grove.py」を使用すれば、簡単にPythonからGroveセンサーが使えるようになります。
参考URL
https://wiki.seeedstudio.com/Grove_Base_Hat_for_Raspberry_Pi/
https://qiita.com/matsujirushi/items/4d54e076902cbbdd2704
https://github.com/Seeed-Studio/grove.py