Magicode logo
Magicode
1
4 min read

Raspberry Pi Picoで加速度センサ(MMA8452Q)を動かしてみた

https://cdn.apollon.ai/media/notebox/361b6fc0-9583-49b1-b085-2bee2cd16ce3.jpeg

はじめに

前の投稿でraspberry pi pico(以下、pico)を動かしてみた。 今回は、加速度センサーを動かしてセンサーの値を取得してみる。

環境

  • PC
    • windows 10
  • pico
  • USBケーブル
    • 家に転がってたものを
  • 加速度センサー(MMA8452Q)
  • 330Ωの抵抗 x 2
    • 動作確認では手元になかったので使ってないが、ドキュメントを見た感じ合った方がよさそう。
  • ブレッドボードやジャンパー
    • VDD/GND用 2 or 4本
    • SCL/SDA用 2本
  • 開発環境
    • Visual Studio Code
  • 動作確認環境
    • TeraTerm

作業方針

ブレッドボード配置&配線

MMA8452Qのチュートリアルpico-exampleにあるmma8451_i2cにある配線図とpicoのピン配置図を参考に、3V3, GND, SCL, SDAをそれぞれつなぐだけ。
ピン配置上、SCL/SDAのピンは複数あるが、サンプルではsdkで定義されているデフォルトのピン(GP4, GP5)を使っている。
また、pico-exampleでは電源を3V3ではなくVSYSを使っているが、VSYSは「ボードからPicoのVSYS端子へ3.5~5.5Vを給電」するパターンに使うが、今回はUSBから給電するので3V3を使った。
・ボードからPicoのVSYS端子へ3.5~5.5Vを給電 PicoのマイクロUSBを使用しない場合はこの方法が使えます。供給する電圧は自由度があります。Picoに供給できる電圧は下限1.8Vですが、このボードはオーディオ用にレギュレータで3.3Vを生成しているため、3.5V以上の電圧が必要です。 https://blog.boochow.com/article/rpi-pico-spec-5.html より

出力先をusbに変更

サンプルをそのままビルドしただけだとusb経由でシリアル通信ができない。
hello_worldではusbとserialを別々に作っているので、ここを確認した。
プログラム上では差分はなく、CMakeLists.txtでusbを有効にし、uartを無効にしていた。
https://github.com/raspberrypi/pico-examples/blob/master/hello_world/usb/CMakeLists.txt#L9-L11 pico-examples/i2c/mma8451_i2c/CMakeLists.txt に下記を追加することでusbでシリアル通信できるようになる。
# enable usb output, disable uart output
pico_enable_stdio_usb(mma8451_i2c 1)
pico_enable_stdio_uart(mma8451_i2c 0)

動作確認

前の投稿と同じようにビルド結果のuf2ファイルをpicoに書き込み、teratermで出力を確認する。

終わりに

ひとまず動かしてみました。exampleの中身の確認もいずれ記事にしたい。
この辺とかでgpioファンクションを確認してからだとわかりやすそう。

Discussion

コメントにはログインが必要です。