NucleoとmbedのWeb IDEと加速度計で傾きアラームをつくる

メイカーの趣味を実生活に役立てるため、傾きに応じてブザーがなる装置をつくることになりました。以下が、ブレッドボードでプロトタイピングしたものの動作イメージ。

使用した部品

以下の部品を使用します。マイコン制御が必要なときにいつも使っているNucleo + mbedの組み合わせです。

  • Nucleo-L432KC (ブレッドボードにさせるCortex-M4マイコンモジュール)
  • 加速度計 LIS3DH(秋月電子のDIPモジュールAE-LIS3DH)
    • この加速度計をI2Cで読み出すためのライブラリはすでにを使うと一瞬です。
    • 3軸の加速度情報がfloat[3]で取得できます。
    • 裏面のサーフェスジャンパを3個ともはんだ付けして、I2Cで読み出せる設定にします。このモジュールのI2Cのアドレスは0x30になります(あとでライブラリのコンストラクタに渡すときに使います)。
  • ブザー (発振回路内蔵で電圧をかけるだけで音がでるもの; 秋月で100円のPB03SD12を使用)
    • NucleoのGPIOピンの出力を直接接続。

配線

ブレッドボードにならべて、以下のようにピンを接続します。

プログラム開発の手順

  1. mbedのウェブ上のIDEで、Nucleo-L432KCをプラットフォームとして追加し、新規プロジェクトを作成。テンプレートは”Display a message on PC using UART”等でOKです。
  2. メニューバーのImportボタン→ 検索フィールドからLIS3DHを検索。Kenji AraiさんLIS3DHライブラリを選択して、ありがたく使わせてもらいます。
  3. main.cppを開いて、以下のようなソースコードを入力します。
  4. Compileをクリック。コンパイルが成功すると、生成された実行形式がダウンロードされる。
  5. NucleoとMacをUSBケーブルで接続。USBディスクとしてマウントされたディスクに、ダウンロードしたバイナリをドラッグドロップすると、バイナリが内蔵ROMに書き込まれ、自動的に実行開始される。
  6. ボードを傾けていき、80度(プログラム内で指定しているthreshold)を超える傾きになると、ブザーがなります。
  7. screenコマンドでシリアルコンソールに接続すると、以下のように計測値がダンプされます(引数のusbmodemNNNNのところは、環境ごとに変わるので、適宜ls等で確認して指定)。「傾き(off angle)」は、(0, 0, 1)というベクトルと、加速度の計測値の内積のarccosで計算しています。浮動小数点演算も三角関数も普通のC++として簡単に記述できて、期待通り動いてくれるのがmbedのいいところですよね。
    screen  /dev/tty.usbmodem1413
    
    LIS3DH Ready = 1
    X = 9.3359
    Y = 0.1961
    Z = 2.4320
    Off angle 75.4 deg
    
    LIS3DH Ready = 1
    X = 9.4928
    Y = 0.3530
    Z = 1.4122
    Off angle 81.5 deg
    
    LIS3DH Ready = 1
    X = 9.2575
    Y = 0.1569
    Z = 2.9420
    Off angle 72.4 deg
    
    (screenコマンドの終了はCtrl+A → Ctrl+K → Yを続けて入力)
    
  8. 今回使用したブザーはNucleoのGPIOの3.3Vでならすとちょうどよいくらい(うるさすぎず、でもちゃんと聞こえる)の音量でした。

PCB化とケーシング

  • Eagleのライセンスを買ってしまったので、PCBのデザインをしてみました。
  • 2017年06月03日にElecrowに5枚発注(4.9ドル/送料別)したので、届いたら組み上げて、電池での動作などを試験します。シンガポールへの送料は$14.99なので、送料のほうが高い・・・。
  • ちなみにElecrowの中国→日本と、中国→シンガポールの送料は以下のような感じ(2017年6月5日時点)。日本向けのEMS($12.21)のほうがHong Kong DHL($14.99)より2.5ドル安いですね。Registered AirmailはAliexpressでの買い物のときによく使うのですが、届くまで3週間くらいかかる(ほとんど通関手続きを待つところで時間をくっているみたい)のと、1度$50くらいの買い物が途中で無くなったことがあったので、今回はDHLにしました。

    日本向け送料。

    シンガポール向け送料。

  • ケースは3Dプリンタで作って、服にとめて使えるようにしたいと思っています。

← Previous post

Next post →

1 Comment

  1. はじめまして、
    SeeedStudio会社Fusion PCB課のKathyと申します。

    SeeedStudioはオープンソースハードウェア(Open source hardware)の会社として、世界でも有名です。
    Fusion PCB課のプリント基板試作(PCB Prototypep )は弊社の特色サービスであります。
    基板製造・実装・設計は低価格・短納期、高品質で入手を実現できます!

    つきましては、記事を拝見しました。
    日本の皆様のおかげで、5月4日にfusionの日本語サイト(https://fusionpcb.jp)が営業に運びになりました。
    宣伝するために、レビュー記事を募集中です。
    ですから、ご連絡いたします。お忙しいところ、申し訳ございません。
    恐縮ですが、もしよかったら、弊社のFusion PCBへレビュー記事をお書きいただけませんか。
    日本の皆様に格安のプリント基板をご紹介いただければ幸いと思います。

    もし可能なら、kathy@seeed.ccまでご連絡ください。

    よろしくお願いします。

Leave a Reply

Your email address will not be published. Required fields are marked *