Seeeduino XIAOで学べるソフト開発と標準ライブラリの使い方

組み込みエンジニア

こんにちは、ENGかぴです。

Seeeduino XIAOはArduino環境でソフト開発ができるため標準搭載のライブラリを使用することで各種センサーの動作確認ができます。ソフト開発に対して苦手意識があり敷居が高く感じていた方でも簡単に動作確認ができるため趣味や業務で簡単なアプリを作りたい場合にお勧めの開発環境です。

私が動作確認しているライブラリなどのプログラムを動作させてみたり改造したりと有効利用していただき少しでも興味を持っていただけたのなら幸いです。

ソフト開発と標準ライブラリの使い方

Seeduino XIAOはSeeeduinoシリーズにおいて最も最小なモジュールです。ARMマイコンでありATSAMD21G18A-MUを搭載しています。500円玉適度の小サイズですがArduinoと互換性があり使い勝手のよいモジュールです。

Seeeduino Xiaoをはじめよう – Seeedウィキ(日本語版) (seeedstudio.com)

SeeedウィキではSeeeduino XIAOについてハードウェアやソフトウェアの情報やピン配置などの情報が記載されています。Arduinoと互換性があるためArduino IDEを使ったソフト開発や標準ライブラリを使用することができます。

Seeeduinoの開発環境を作る

Arduinoの開発環境であるArduino IDEのダウンロードからインストールまでの手順をまとめていきます。対象OSはWindows10です。Seeeduino XIAOの開発環境をArduino IDEに追加する手順と動作確認を行った方法についてまとめています。

SPI通信を行う

Arduino環境ではSPI通信を行うために標準ライブラリとしてSPIライブラリがあります。BME280の製作メーカが提供しているAPIを使用して温度・気圧・湿度の計算を行いSPI通信でセンサー情報を取得する方法をまとめました。

BME280の製作メーカであるBOSCH社が提供しているAPIを使用することを推奨しているためAPIの実装方法についても説明しています。

温度は室温計とほぼ同じ値でしたが気圧や湿度はスマホのデータを比較した場合少しずれている気がしました。実際はスマホのデータ環境と室内では環境が違うため厳密には比較できませんが、センサーからデータが取得できているのが確認できると達成感があります。

Wire(I2C)通信を行う

I2C通信を持つセンサーモジュールが増えてきているためWireライブラリでI2C通信で動作確認ができることはセンサーの性能が検討しやすいのは良い点だと思います。

FreeRTOSを使用してマルチタスク処理を行う

FreeRTOSライブラリを使用してBME280から温湿度・気圧の情報を取得しLCDに表示するタスクと動作中であることを表示するLEDを点灯/消灯させるタスクを登録しました。

タスクの一時停止についての注意事項やタスク登録を増やし過ぎた時のデメリットであるスタックオーバーについて説明しています。

パルス波形でブザーを鳴らす

標準ライブラリのanalogWrite()によってPWM波形を生成しブザーを鳴らしました。analogWrite()ではPWMのデューティ比が変更できるためデューティ比を変更してブザーに供給する電圧を変化させることで若干音程が変わります。

Seeeduino XIAOを使って標準ライブラリであるtone()によってブザーを鳴らす方法とタイマを使ってブザーを鳴らす2つの方法で動作確認しました。タイマを使ってブザーを鳴らす方法は、キャリア周波数とデューティ比のどちらの管理が可能となる方法です。

割り込みの頻度が多くなりすぎると割り込みの渋滞の問題もありますが、動作確認を手早く行いたい場合には有効な方法だと思います。

デジタル加速度センサのデータを取得

Wire(SPI)を使用すると加速度センサー(ADXL345)の加速度やタップ情報などを取得することができます。ADXL345のライブラリのスケッチ例である「ADXL345_demo_code」を一部追加して動作確認を行いました。

RTCを使って時刻情報を読み書きする

RTCモジュールにRX8900(秋月電子)を使用してRTCモジュールから書き込んだ時刻からの時間を取得しています。RTCへの時刻書き込みはシリアルモニタの送信を使ってできるように自作の電文を作成して書き込みを行っています。

RX8900モジュールを動作させるために自作したAPIを使用して時刻データの読み出しと書き込みを行っています。RTCに書き込んだ時刻が電源OFFによって消失しないように電気二重層コンデンサを使ってバックアップしています。

電源OFFにしてから12時間経過した後バックアップ電源は0.18Vしか低下していなかったことからかなり低消費であると感じました。

トワイライト(TWELITE)とシリアル通信

ZigBee無線モジュールでるトワイライトはシリアル機能を持つため各種センサーと通信する機能があります。トワイライトのSerialParserのAPIを使ってSeeeduino XIAOとバイナリ形式のデータをシリアル通信する方法をまとめました。

トワイライトのSerailParserは受信データに対してヘッダやチェックサムを計算するようにAPIが構成されているので定義に合わせた電文を送信することでトワイライトとシリアル通信ができます。

チャタリング防止やチェックサムの計算の仕方などのテクニックについてもまとめています。

Seeeduino XIAOではシリアルモニタ専用のSerialと外部機器へのシリアル通信するSerial1があります。Serialを区別して使用できるのはデバッグ効率が上がるため良い点だと感じています。

Seeeduino XIAOとスターターキットを紹介

上記リンクで使用しているSeeeduinoはSeeeduino XIAOです。Seeeduino XIAO本体だけでは動作確認するには部品が足りないのでスタータキットでまとめて購入するのがおすすめです。

ELEGOO Arduino用のUNO R3 最終版スタータキット UNOチュートリアル付 (63 Items)
ELEGOO
200以上のコンポーネントも付き、本品は最も完全なArduinoを始めようとするキットです。部品が63種類も入れて、お買い得です

Seeeduino XIAOは小さいながらも機能が充実しておりデジタルピンの不足しやすい欠点がありますが、使いやすさは満点だと感じています。

まとめ:まずは感覚を掴むことが大切です。

Arduinoはライブラリを使用することでSPIやI2C通信などが簡単に実現できるためマイコンの動作を勉強するには最適な環境です。ソフト開発に対して苦手意識があり敷居が高く感じていた方でも簡単に動作確認ができるため苦手意識をなくせることがメリットと言えます。

Arduinoはライブラリを使って各種機能を実現するためライブラリにない動作を組み込みたい場合は自作する必要があります。ライブラリは有志が作成したものであるためバグがある可能性もあり動作の保証はないのがデメリットです。

実際にセンサー情報を取得したりシリアルモニタに表示したりと動作確認しながら1つ1つの技術の成功を積み重ねていけばできることが増えていき自信がつくことでソフト開発に対する苦手意識がなくなっていくことは間違いありません。

自信がつきマイコンの機能をフル活用してみようとレジスタの操作についてデータシートを見てみようと興味が湧いてくれば、あっという間に脱初心者となるでしょう。

私は業務に追われながらも独学していたためソフト開発に慣れるまでに10年程度かかってしまいました。ArduinoだけでなくPICマイコンやRXマイコン最近はIoTモジュールのソフト開発などをしていますが、早い段階でプログラミングを教養として身に着けておけば10年もかからなかったと感じています。

TECH::CAMPプログラミング教養【無料体験会】

最近では無料体験できるプログラミングスクールも増えてきており、あなたに合った学習プランによって短期集中してプログラミングに親しめる環境があります。無料体験でもプログラミングに対する感覚を掴めておけばソフト開発に対するハードルが下がることは間違いありません。

関連リンク

Arduinoのライブラリを使って動作確認を行ったことを下記リンクにまとめています。

Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方

ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方

Arduinoのようにソフト開発したり周辺回路と組み合わせてデータを取得させたりして電子製品を開発するエンジニアは組み込みエンジニアといいます。IoT社会実現と組み込みエンジニアの職種との関係についてまとめています。

組み込みエンジニアはIoT社会実現のために需要が高い職種

ZigBeeモジュールであるトワイライトでソフト開発と無線通信を行い動作確認したことについてリンクをまとめています。

トワイライト(TWELITE)のソフト開発と無線通信でできること

最後まで、読んでいただきありがとうございました。

タイトルとURLをコピーしました