はじめに
elchikaさんの Leafonyプレゼントキャンペーン で Leafonyをいただくことができたのでちょっと触ってみました。
本記事は Leafony Basic Kit の中身についてと、VSCodeを使用したLED点滅についての記事となります。
またLED点滅サンプルを試した後に、元々書き込まれていたデフォルトのサンプルに戻すことも行います(悩む箇所があった為、追記)。
クイックスタート
ちなみにトリリオンノード研究会のサイトにクイックスタートがあります。
届いた時点でリーフ(各パーツ)が組み立てられており、
既にWeb Bluetoothを使ってセンサの値を表示するプログラムが書き込まれていました。
おかげでとりあえずはクイックスタート通りに試すだけでそのままWeb Bluetoothを体験することができます。
Code
クイックスタートのWebBluetoothのサンプル
WEB側:https://github.com/Leafony/WebBluetooth_for_Leafony_app
Leafony側:https://github.com/Leafony/Sample-Sketches/blob/master/4-Sensors_BLE/4-Sensors_BLE.ino
Leafony Basic Kit 中身
中身はこんな感じで左側の空きは何用なんだろうなどと思うくらいスッキリしてます。
既にBasic Kitに入っているリーフは接続された状態で入ってきています。
簡単に分解して半田もなく組み立てが簡単なことが利点なようなのでためしに分解してみました。
下からAV01A CR2032、AC02A BLE Sugar、AP01A AVR MCU、AZ01A USB、AI01A 4-Sensors という感じで接続されていました。(下記画像の左が下に配置)
見にくいですが一番上に AZ62A Connector Cover がついていました。悲しいことにとろうとしてちぎってしまったので、これから触る方はとるときは注意しましょう・・・。
ちぎれてしまった保護カバー的なやつ。せっかく分解したから組み替えてみようとしたときの悲劇。届いてすぐのことであった・・・。
まあネジで閉めるので半分ちぎれてても大丈夫でしょう・・・。
Kit内リーフのリンクまとめ
※個別リーフ資料について電源やI/Oなどでまとめられているこちらの個別リーフ資料のページの方がわかりやすいかもしれない。
LED点滅
応用システム資料 に各種簡単なサンプルがあります。今回はLED点滅をやってみました。
せっかくなので前回やったように VSCode の PlatformIOに置き換えて試しています。
AVR MCUの場合は、「ツール」 →「 ボード」から、”Arduino Pro or Pro Mini”と”ATmega328P(3.3V,8MHz)”を選択。
サンプルに書かれているようにボードの設定をして、Platform.ini をみると、platform は atmelavr となっていました。
スケッチの書き込み
- Arduino IDEで、「ファイル」→「スケッチ例」→「01.Basics」→「Blink」で、マイコンボードに書き込んでください。
PIO Home > Platforms > Atmel AVR にサンプルの記載があるのでこれをそのまま main.cpp にコピペしてビルドすると問題なく動きました。
M5StickC では別途専用のライブラリを追加する必要がありましたが、 Leafony はそのまま Arduino.h でよいようです。
動作イメージはこちらです。
デフォルトのWeb Bluetooth サンプルに戻す
元から書き込まれていたサンプルに戻してみます。
※単に書き戻せばいいと思っていたらここで結構詰まってしまったので追記しました。
リーフの組み立てについては以下リンクにて。
以下の記載の通り、このサンプルでは別途ライブラリが必要です。
書き込みには、BLE、4-Sensorsライブラリが必要です。予め、ライブラリをインクルードしておいてください。詳しくは、こちら。
またそのほかにも足りないものがあったため、ライブラリを探して追加します。( https://platformio.org/lib/search )
※HTS221は上記で検索して出てくるものではなかったようなので Github側を指定しています。
この後記載するように悩んだ箇所があるのですが、とりあえず完成形として、platform.ini に追加するライブラリは以下のようになります。
lib_deps =
MsTimer2
Adafruit Unified Sensor
ClosedCube OPT3001
# Adafruit LIS3DH
https://github.com/adafruit/Adafruit_LIS3DH#1.1.2
# HTS221
https://github.com/ameltech/sme-hts221-library
# BLE 4-Sensors Library
https://github.com/Leafony/TBGLib
さて、問題の箇所はAdafruit LIS3DHのライブラリとなるのですが、4-Sensors_BLE.ino のコメントに以下のように Adafruit_LIS3DH.h のコードを修正するように指示されていますが、Adafruit LIS3DHのライブラリのコードにそのような関数はありませんでした。
//use libraries
//Adafruit LIS3DH
//https://github.com/adafruit/Adafruit_LIS3DH
//※ Adafruit_LIS3DH.h
// uint8_t readRegister8(uint8_t reg);
// void writeRegister8(uint8_t reg, uint8_t value);
// をpublic:に移動する
バージョンをさかのぼりつつコードを検索していってみると 1.1.2以下のバージョンであれば記載の内容が入っていることがわかったのでLIS3DHのバージョンを下げました。
(一つ一つ遡りつつ検索するの面倒だったのですが何かうまい方法あるのだろうか・・・)
そういった理由でhttps://github.com/adafruit/Adafruit_LIS3DH#1.1.2
のように tag(バージョン)を指定しています。
あとはサンプルスケッチに記載の通り、publicの方に記載箇所を移動させます。
(protectedに書かれているものをpublicに持ってくるようなことって普通なのだろうか・・・)
そしてまだこれでも問題が解決しきれず、ble112.ble_evt_system_awake = my_evt_system_awake;
の箇所で、
「型 "void (*)(const ble_msg_system_boot_evt_t msg)" の値を型 "void ()()" のエンティティに割り当てることはできません」となっていました。ただしここは何故かそのままビルドするとビルド成功してしまいました。(C++ や Arduino言語よくわかってない感満載)一応は書き込みもできて元の状態に戻せたので、ちょっと謎も残りますがこれで終了です。
おわりに
ネジで固定されてるだけなので簡単に組み替えできて面白いですね。
今回はBasic KitでできるLED点滅を試しましたが、Extention Kit には LCDユニットなどもあって組み合わせを変えるだけで色々なものができるようです。
各リーフ(Kit内リーフのリンクまとめ項参照)のページにもそれぞれ サンプルスケッチ として例が用意されており、応用システム資料 にもいくつか簡単なサンプルが用意されているのでこの中から面白そうなサンプルを試してみるだけでも楽しめそうです。
ただ、ものによっては必要なライブラリのバージョンなどがクリティカルになりそうなのでうまくいかない場合はライブラリのバージョンアップによる差分の確認を注意しておきたいと感じました。
投稿者の人気記事
-
Ala
さんが
2020/06/14
に
編集
をしました。
(メッセージ: 初版)
-
Ala
さんが
2020/06/14
に
編集
をしました。
(メッセージ: 工場出荷時のサンプルに戻す方法を追記)
Opening
HakoHiro
2020/06/14
Ala
2020/06/15
ログインしてコメントを投稿する当方も本日Leafonyキャンペーンのプレゼントが届き、早速試してみました。環境はMac+PlatformIO+VSCodeです。環境を整えて、真っ先に投稿しようと思っていたのですが、先を越されました。でもうまくまとめられているので、そのまま実行してあっさりとLチカが実現しました。
また、Web Bluetoothプログラム復帰の記載は非常に参考になりました。当方はまだBLEには手を付けていませんが、助かります。今後とも 情報発信していただければ幸いです。
Leafonyはコンパクトに纏まっていて面白いボードですね。もう少し価格が低ければ良いのですが、販売量もあってなかなか下げられないのでしょうね。
ありがとうございます!資料とかみていると、公式が日本語資料でとっつきやすい感じがあって初心者にも優しいですが、値段は・・・確かにそうですね。せっかくいただけたので弄り倒したいところです。