LoginSignup
6
9

More than 3 years have passed since last update.

Raspberry PiでGroveセンサーを使う

Last updated at Posted at 2020-05-02

はじめに

Raspberry PiGroveセンサーを使おうとすると、まず「GrovePi+」が思い浮かびますが、今は「Grove Base HAT for Raspberry Pi」がありますので、こちらでいろいろ試してみたいと思います。

外観

「Grove Base HAT for Raspberry Pi」は、Raspberry PiのGPIO経由でGroveセンサーとやり取りします。

ポートが山ほど用意されており、これで足らないなんて贅沢は言わせません感がたっぷりです。
image.png

早速我が家のRaspberry Pi 3B+と接続してみます。
DSC_0005.JPG

ナンテコッタ/(^o^)\
ケースがあると刺さりません...
ふたははずしましょう。
DSC_0006.JPG

反対側が浮いてますので、足は付けたほうがいいかもしれません。
DSC_0007.JPG

準備

使用するにはseeed grove.pyライブラリというものが必要になりますので、まずはこれをインストールします。

いくつかインストールの方法はあるようなのですが、一番簡単な「Online one-click installation」を行います。

$ curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s -

image.png

結構な種類のセンサーを動かすプログラム(以下を参照)が用意されています。

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が一定間隔で点滅します。

DSC_0008.JPG

プログラミング

用意されているプログラムを動かすだけではつまらないので、自分でやりたいようにプログラムを作成してみます。
(言語は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

6
9
0

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
6
9