昨日はNucleo-L432KCでNuttXのGPSのデータを取得するサンプルを動かしてみました。今日はそのソースを読むところから作業を開始しました。GPSに関する部分のソース自体はシリアルデバイスから文字を読み込みながらNMEAフォーマットを解析して計測値を取り出すという極めて普通のものでしたので深追いせずに終了です。

昨日、I2C接続の温湿度センサーのデータを所得してみようと思いましたが、手持ちのセンサー(BoschのBME280)に対応するドライバーがNuttXのディストリビューションに含まれていなかったので諦めました。NuttXに含まれていたのはBMP280という気温・気圧センサーです。

BME280については過去にArduinoとmbedでデータを取得するコードを書いていたので、たぶんそれほど苦労せずにNuttX用のドライバーを書けるのではないかと思い、自分で書いたドライバーをNuttXの環境に取り込む方法を調べてみました。

まだドライバーを書いて動作確認したわけではないのでこれが正解ということにはならないかもしれませんが、ビルドされるところまでは確認ができたのでその方法について備忘録として書いておきます。

ドライバーのソースを追加する

include/nuttx/sensors に ヘッダーファイルを追加する(bme280.h)

drivers/sensors にドライバーのソースを追加する(bme280.c)

drivers/sensors/Kconfig を編集する。

drivers/sensors/Make.defs を編集する。

これで make menuconfig を実行すると、自分で追加したセンサーを選択できるようになります。

設定を保存して make すると自分が追加したドライバーがコンパイルされて nuttx.binにリンクされることを確認できます。

BME280用のドライバーを書くより前に、手持ちのTFT LCDを使う方法、自分が書いたアプリケーションをNuttXのビルドシステムに組み込み自動起動させること、簡単なランチャーを組み込むことなどを学ぶ予定です。

今日やった内容はGithubに置いておきます。

現在取り組んでいることは、簡単なサイクルコンピューターを作るための実験です。木製ロードバイクは完成に漕ぎ着く目処が立ってきて2台目3台目の製作に取り掛かるところですが、それに搭載する電子機器の一つとしてサイクルコンピューターを自作したいです。自転車で長時間走ることを考えると要求される電力の大きな機器は荷物になってしまいますので、消費電力が少なくて最低限の機能のもので良いと思っています。小さな液晶ディスプレイ・小さなバッテリー・GPSと温湿度センサーで構成されていて、速度・温度・湿度・高度・目的地の大まかな方向がわかる程度のものを考えています。