Raspberry Pi用Grove Base Hat
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
現在、Groveシリーズのセンサー、アクチュエータ、ディスプレイは大きなファミリーへと成長しています。将来的にはさらに多くのGroveモジュールがGroveエコシステムに加わる予定です。Groveは、メーカー、エンジニア、教師、学生、さらにはアーティストが構築、製作、創造するのを助けることを目指しています。私たちは常に、Groveモジュールをより多くのプラットフォームと互換性を持たせる責任を感じています。そこで、Raspberry Pi用のGrove Base HatとRaspberry Pi Zero用のGrove Base Hatを提供します。つまり、Raspberry PiにGroveシステム全体を提供するということです。
Raspberry Pi用のGrove Base Hatは、デジタル、アナログ、I2C、PWM、UARTポートを提供し、すべてのニーズに対応します。内蔵MCUの助けを借りて、Raspberry Pi用に12ビット8チャンネルADCも利用可能です。
率直に言えば、現在約60のGroveモジュールがRaspberry Pi用のGrove Base Hatをサポートしています。しかし、私たちは新しい互換性のあるモジュールを追加し続けます。使用すればするほど、Groveが追加されます。
特徴
- Raspberry Pi 2/3B/3B+/4/Zeroをサポート
- 内蔵MCU
- 12ビットADC
- 複数タイプのGroveポート
仕様
項目 | 値 |
---|---|
動作電圧 | 3.3V |
MCU | STM32/MM32 |
ADC | 12ビット 8チャンネル |
Groveポート | 6 デジタル 4 アナログ 3 I2C 1 PWM 1 UART |
Raspberry Pi通信バス | I2C |
I2Cアドレス | 0x04/0x08 |
動作電圧は3.3Vです。3.3Vを超える電圧を入力しないでください。そうしないとRaspberry Piが損傷する可能性があります。また、このHatはGroveポートを介して5VのGroveモジュールでは動作しません。3.3V互換のGroveモジュールを使用してください。
ハードウェア概要
ピンアウト
概要
GPIO
Raspberry Piと同じピンアウト。
PWM(パルス幅変調)
Grove PWMポートはGPIO/BCMピン12(PWM0)およびGPIO/BCMピン13(PWM1)に接続されており、これらはRaspberry PiのハードウェアPWMピンです。さらに、すべてのGPIOピンをソフトPWMピンとして使用することもできます。
0- Groveポートの横にあるシルクスクリーン層のピン番号はBCMピン番号です。BCMピンと物理ピンの違いについてはこちらを参照してください。
1- ハードウェアPWMと比較して、ソフトウェアPWMはそれほど正確ではなく、高周波数では問題が発生する可能性があります。
2- GPIO/BCMピン18もPWM0としてマークされていますが、実際にはGPIO/BCM 12とGPIO/BCM 18は同じPWMチャンネルを共有しているため、異なるレートに設定することはできません。
3- オーディオジャック出力もPWM0およびPWM1を使用するため、そのソケットでオーディオ出力を行いながらPWMを使用することはできません。
UART
Grove UARTポートはGPIO14(UART0 TX)およびGPIO15(UART0 RX)に接続されています。UARTは通常、GPIOを介してRaspberry Piを制御する便利な方法として使用されるほか、シリアルコンソールからカーネルブートメッセージにアクセスするため(デフォルトで有効)にも使用されます。また、Arduino、ブートローダー付きATmega、ESP8266などをRaspberry Piとインターフェースする方法としても使用できます。
デジタル
このボードには6つのデジタルGroveソケットがあります。通常、Groveケーブルの黄色のワイヤ(4ピンGroveソケットの上部ピンに接続される)は信号線であるため、デジタルGroveポートをD5/D16/D18/D22/D24/D26と名付けています。
アナログ
ご存知の通り、Raspberry PiにはADCがないため、アナログセンサーを直接使用することはできません。しかし、内蔵MCU STM32の助けを借りて、Grove Base Hatは外部12ビットADCとして機能し、Raspberry Piでアナログセンサーを使用することが可能になります。さらに嬉しいことに、1つではなく4つのアナログGroveソケットが利用可能です。
アナログセンサーはアナログ電圧を12ビットADCに入力します。ADCがアナログデータをデジタルデータに変換した後、デジタルデータをI2Cインターフェースを介してRaspberry Piに入力します。
I2C
このボードには3つのI2Cポートがあり、すべてRaspberry PiのI2Cピンに直接接続されています。この部分はI2Cハブとして考えることができます。Seeedの新しいGroveモジュールのほとんどがI2Cインターフェースを持っているため、これらの3つのポートは非常に便利です。
SWD
このHatにファームウェアを書き込むためにSWDポートを使用します。さらに、このセクションには3つのGPIOピン(ピン9/ピン10/ピン11)が表示されます。これらの3つのピンはどのGroveポートでも使用されていないため、ピンの競合を心配することなく自由に使用できます。
Raspberry Pi用Grove Base HatとGrovePi+の比較
パラメータ | Raspberry Pi用Grove Base Hat | GrovePi+ |
---|---|---|
動作電圧 | 3.3V | 5V |
MCU | STM32F030F4P6 | ATMEGA328P |
Groveポート | 6 x デジタル(3.3V); 4 x アナログ(3.3V) ; 3 x I2C(3.3V); 1 x PWM(3.3V) ; 1 x RPISER(UART) Raspberry Piに接続(3.3V) ; 1 x SWD | 7 x デジタル(5V); 3 x アナログ(5V) ;3 x I2C(5V) ;1 x SERIAL: ATMEGA328P D0/1(5V)に接続 ; 1 x RPISER: Raspberry Piに接続(3.3V) ;1 x ISP |
Grove-デジタル | Raspberry Piに直接接続 | ATMEGA328Pデジタルピンに接続し、I2C信号に変換後、レベルコンバータを介してRaspberry Piに接続 |
Grove-アナログ | STM32F030F4P6(12ビットADC)に接続し、I2C信号に変換後、直接Raspberry Piにルート | ATMEGA328Pアナログピン(10ビットADC)に接続し、I2C信号に変換後、レベルコンバータを介してRaspberry Piに接続 |
Grove-I2C | Raspberry Piに直接接続 | レベルコンバータを介してRaspberry Piに接続 |
Grove-PWM | Raspberry Piに直接接続 | NA |
RPISER | Raspberry Piに直接接続 | Raspberry Piに直接接続 |
SERIAL | NA | ATMEGA328PデジタルピンD0/D1に接続し、I2C信号に変換後、レベルコンバータを介してRaspberry Piに接続 |
SWD | STM32F030F4P6にファームウェアを書き込む | NA |
ISP | NA | ATMEGA328Pにファームウェアを書き込む |
Raspberry Piコネクタピン | 40 | 26 |
はじめに
ハードウェア
必要な材料
-- Raspberry Pi x1
-- Raspberry Pi 用 Grove Base Hat x1
-- Grove モジュール
ステップ 1. Raspberry Pi に Grove Base Hat を接続します。
ステップ 2. Grove モジュールを対応する Grove ポートに接続します。
ステップ 3. micro-USB ケーブルで Raspberry Pi に電源を供給します。
すべてのハードウェア接続が完了した後に Raspberry Pi の電源を入れることをお勧めします。センサーモジュールをホットプラグしないでください。そうしないと、Raspberry Pi がクラッシュする可能性があります。
ソフトウェア
現在、このボードには市場に 2 つのバージョンがあります:STM32 バージョン (V1.1) と MM32 バージョン (V1.0)。現在出荷されているバージョンは STM32 バージョンです。
grove.py
ライブラリを使用して Grove Base Hat for Pi を使用する際に問題が発生した場合は、ボードのバージョンを確認してください:
- STM32 バージョンの場合、I2C アドレスは
0x04
です。/home/username/.local/lib/python3.9/site-packages/adc.py
内の I2C アドレスを0x04
に変更する必要があります。 - MM32 バージョンの場合、I2C アドレスは
0x08
です。/home/username/.local/lib/python3.9/site-packages/adc.py
内の I2C アドレスを0x08
に変更する必要があります。
このセクションでは、seeed grove.py ライブラリのインストール方法と、Raspberry Pi 用 Grove Base Hat の I2C、PWM、デジタル、アナログポートの使用方法を紹介します。
Raspberry Pi の使い方がわからない場合は、こちら を確認してから始めてください。
アーキテクチャ
Grove センサーを操作するために、grove.py は mraa/smbus2/rpi.gpi/rpi_ws281x などの多くのハードウェアインターフェースライブラリに依存しています。
インストール
Raspberry Pi OS >= Bullseye を搭載した Raspberry Pi を使用している場合、このコマンドラインは Python3 のみ で使用してください。以下の手順は Bookworm OS 上で動作します。
依存関係のインストール
リポジトリを追加
echo "deb https://seeed-studio.github.io/pi_repo/ stretch main" | sudo tee /etc/apt/sources.list.d/seeed.list
公開 GPG キーを追加
curl https://seeed-studio.github.io/pi_repo/public.key | sudo apt-key add -
# または
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BB8F40F3
I2C インターフェースを有効化
sudo raspi-config
- Interfacing Options > I2C > Yes > Ok > Finish を選択
- I2C インターフェースを有効化
必要なパッケージをインストール
最新バージョンの Python3 では、パッケージ管理を分離するために virtualenv を使用することが推奨されます。
- グローバル環境
- 仮想環境
sudo pip3 install rpi_ws281x
pip3 install RPi.GPIO
sudo apt install python3-virtualenv
virtualenv -p python3 env
source env/bin/activate
pip install rpi_ws281x RPi.GPIO
Pi 5 で RPi.GPIO を使用する際に問題が発生する可能性があります。こちら で議論されています。RPi.GPIO を rpi-lgpio に置き換えることをお勧めします。コマンド:
pip uninstall RPi.GPIO
pip install rpi-lgpio
grove.py のインストール
初心者またはライブラリユーザーの場合、オンライン方法でインストールしてください。
- 依存関係の自動インストールとライブラリの展開
- 手動操作不要で迅速に開始可能
開発者または上級ユーザーの場合、依存関係をインストールした後にソースコードで grove.py をインストールしてください。
- 完全な
grove.py
リポジトリ、ソースコード、例、ドキュメントを含む - ソースコードや例の閲覧、ライブラリ関数の変更に適している
- 初心者またはライブラリユーザー向け
- 開発者または上級ユーザー向け
グローバル環境にインストールするには、以下のコマンドを入力してください:
curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s -
仮想環境にインストールする場合、まず virtualenv をアクティブにしてから以下のコマンドを入力してください:
curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | bash -s -- --user-local --bypass-gui-installation
グローバル環境にインストールするには、以下のコマンドを入力してください:
git clone https://github.com/Seeed-Studio/grove.py
cd grove.py
sudo pip3 install .
仮想環境にインストールする場合、まず virtualenv をアクティブにしてから以下のコマンドを入力してください:
git clone https://github.com/Seeed-Studio/grove.py
cd grove.py
pip3 install .
使用方法
これで、Raspberry Pi 用 Grove Base Hat を使用して多数の Grove モジュールを利用できます。コマンド grove_ を入力し、++tab++ キーを押して サポートされている Grove リスト を確認してください。
(env) pi@raspberrypi:~ $ grove_
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
(env) pi@raspberrypi:~ $ grove_
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
次に、ポートタイプに応じた使用方法を説明します。
デジタルポート
Raspberry PiでRaspberrypi OS >= Bullseyeを使用している場合、このコマンドラインはPython3のみで使用してください。
デジタルポートの例として、Grove - Ultrasonic Rangerを取り上げます。
ハードウェア接続図
コマンドラインインターフェースで以下のコマンドを入力します:grove_ultrasonic_ranger 5 6
pi@raspberrypi:~$ grove_ultrasonic_ranger 5 6
Detecting distance...
6.979909436456088 cm
7.966469074117726 cm
12.451204760321255 cm
15.184797089675378 cm
17.429220265355603 cm
18.73230112010035 cm
20.717752390894397 cm
19.83807004731277 cm
17.3059003106479 cm
^CTraceback (most recent call last):
File "/usr/local/bin/grove_ultrasonic_ranger", line 11, in <module>
load_entry_point('grove.py==0.5', 'console_scripts', 'grove_ultrasonic_ranger')()
File "/usr/local/lib/python3.5/dist-packages/grove/grove_ultrasonic_ranger.py", line 107, in main
time.sleep(1)
KeyboardInterrupt
Grove - Ultrasonic Rangerとターゲットオブジェクト間の距離を変更すると、測定値がそれに応じて変化します。++ctrl+c++を押して終了します。
ほとんどのGroveモジュールでは、grove_ultrasonic_ranger 5 6
のようにピン番号パラメータを追加する必要があります。ここで、5と6はGPIO/BCMピンです。ただし、最初の例であるgrove_pwm_buzzer
では、コマンドの後にパラメータを追加していないことに気付いたかもしれません。これは、PWMポートとI2Cポートではピン番号パラメータが不要だからです。Groveソケットのすぐ横にピン番号のシルクスクリーンが記載されています。
アナログポート
Raspberry PiでRaspberrypi OS >= Bullseyeを使用している場合、このコマンドラインはPython3のみで使用してください。
アナログポートの例として、Grove - Air quality sensor v1.3を取り上げます。
ハードウェア接続図
コマンドラインインターフェースで以下のコマンドを入力します:grove_air_quality_sensor_v1_3 0 1
pi@raspberrypi:~$ grove_air_quality_sensor_v1_3 0 1
Detecting ...
62, Air Quality OK.
63, Air Quality OK.
61, Air Quality OK.
61, Air Quality OK.
59, Air Quality OK.
62, Air Quality OK.
60, Air Quality OK.
60, Air Quality OK.
59, Air Quality OK.
60, Air Quality OK.
60, Air Quality OK.
60, Air Quality OK.
57, Air Quality OK.
^CTraceback (most recent call last):
File "/usr/local/bin/grove_air_quality_sensor_v1_3", line 11, in <module>
load_entry_point('grove.py==0.5', 'console_scripts', 'grove_air_quality_sensor_v1_3')()
File "/usr/local/lib/python3.5/dist-packages/grove/grove_air_quality_sensor_v1_3.py", line 68, in main
time.sleep(.1)
KeyboardInterrupt
このセンサーを使用して空気品質を検出できます。++ctrl+c++を押して終了します。
アナログポートの場合、シルクスクリーンのピン番号はA1, A0のようになっていますが、コマンドではデジタルポートと同じように0と1を使用します。そのため、モジュールを正しいポートに接続してください。そうしないとピンの競合が発生する可能性があります。
I2C
Raspberry PiでRaspberrypi OS >= Bullseyeを使用している場合、このコマンドラインはPython3のみで使用してください。
I2Cポートの例として、Grove - OLED Display 128x64を取り上げます。
ハードウェア接続図
コマンドラインインターフェースで以下のコマンドを入力します:grove_oled_display_128x64
(env)pi@raspberrypi:~$ grove_oled_display_128x64
何も起こらないように見えますが、OLEDを確認すると、サイバー世界で最も有名なフレーズが表示されていることがわかります。😄
I2Cツールを使用してGroveモジュールのI2Cアドレスをスキャンすると、2つ以上のアドレスが見つかる場合があります。0x04はGrove Base Hat for Raspberry Piのアドレスです。
回路図オンラインビューア
ST32シリーズのチップが世界的に品薄となり、価格が数回にわたり上昇し、明確な納期がない状況です。そのため、MM32チップへの切り替えを余儀なくされました。具体的な代替モデルは以下の通りです:STM32F030F4P6TRはMM32F031F6P6に置き換えられます。チップが置き換えられた後も、製品の機能、特徴、使用方法、コードは変更されません。ただし、ファームウェアのバージョンが変更され、工場出荷時のファームウェアは異なるチップに応じて調整されています。ファームウェアを再書き込みする必要がある場合は、チップに対応するファームウェアをダウンロードしてください。
リソース
[Zip] Seeed Grove.pyライブラリ
[Zip] STM32F030F4P6TRファームウェア
[Zip] MM32F031F6P6ファームウェア
[PDF] STM32データシート
[PDF] MM32F031F6P6データシート
プロジェクト
この製品の紹介動画です。
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験をスムーズにするために、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。