M5StackとATTiny85でI2C通信をする

 M5StickCでPM2.5センサーを使った花粉測定システムを構築していたのですが、M5StickCの5VOutは、DeepSleepでも常にHIGHのため5Vファンの制御ができませんでした。そのため、GPIOも足りないこともありI2C通信してATTiny85から制御することにしました。

 開発と実験はM5StackとATTiny85で行いました。何かの役に立つかもしれないので記事にしておきます。

 もくじ(Index)

M5Stack関連の目次へ戻る

用意した環境

ハードウェア

 今回はFireで行いましたがBasicでもGrayでも大丈夫です。

ソフトウェア

 ArduinoIDEのバージョンはなんでもいいと思います。ATTiny85がVMWareで認識できなかったのでWindows10を使っています。

M5Stack側

ATTiny85側

ATTiny85の開発環境について

 ATTiny85はArduinoIDEで開発できますが、M5Stackとは別にしたほうがいいと思います。ArduinoIDEのポータブル環境であれば同じOS上に別の環境を作成できるので便利です。詳しくはArduinoIDEの便利技を見てください。

ドライバのインストール

https://github.com/digistump/DigistumpArduino/releases から「Digistump.Drivers.zip」をダウンロードします。2020/3時点では1.6.7(2016年リリース)が最新のようです。

 USBポートによって認識しない場合があるので色々試してください。デバイスマネージャーに「Digispark Bootloader」というのが増えれば認識されています。

ArduinoIDEの使い方

①環境設定

 追加のボードマネージャーのURLに「http://digistump.com/package_digistump_index.json」と書き込みます。

②ボードの追加

 ボードマネージャーを開いて「digispark」を検索して「Digistump AVR Boards by Digistump」をインストールします。

③ボードの変更

 「ツール」→「ボード」で「Digispark(Default 16.5mhz) 」を選びます。

④書き込み装置の変更

 「ツール」→「書き込み装置」で「Micronucleus」を選びます。

⑤スケッチの書き込み

  1. ATTiny85をPCに「接続しないでおく」
    ※接続した状態で書き込むと「Assertion failed: res >= 4, file library/micronucleus_lib.c, line 100」というエラーが出ます。
  2. マイコンボードに書き込み(Ctrl+U)を実行します。
  3. 「Plug in device now…」と表示されたらUSBに接続します。
  4. 完了です。

テストプログラムについて

 M5StackとATTiny85を接続してM5StackのボタンA~Cを押したらLEDの光るパターンが変化するようにしました。

  • ボタンA:(1を送信)1秒おきに0.1秒点滅1回を繰り返す
  • ボタンB:(2を送信)1秒おきに0.1秒点滅2回を繰り返す
  • ボタンC:(0を送信)1秒おきに0.25秒点滅を2回を繰り返す(初期状態)

ソース

 GitHubにて公開しています。

配線図

 下記の図のように配線します。

参考にしたHP

まとめ

 これでM5StackやM5StickCがDeepSleep中にファンを時間差で止める/動かすといった制御が可能になります。応用できると思うので活用してみてください。

 実はMaster→Slaveは上手く行っているのですが逆がまだです(爆)上手く行ったら更新します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です