これまでの検証でBLEモジュールのAE-TYBLE16の使い方がわかってきたので、次はATTiny85をArduinoとしてAE-TYBLE16とのシリアル通信を試してみようと思います。
ATTiny85への書き込みは以前の記事に書いたのと同じです。
開発環境
- Mac Book (10.13.6)
- Arduino IDE (1.8.13)
機材一覧
その他 ブレッドボード、ジャンパワイヤなど
ブートローダ書き込み
ATTiny85は初期設定が1MHzのようです。
delay(1000);
と記述して1秒待機したはずなのに7~8秒かかってしまうのはそのためで、1MHzのままだとシリアル通信で正しくデータを取得できないようなので8MHzに変更します。
ツールのClock Sourceから8MHz(internal)を選択して、ツールのブートローダを書き込むを実行することで8MHzに変更できるようです。
テストコード
正しく送受信ができるかを確認するため、BLEモジュールからシリアル通信で受け取った文字列を、改行コード毎に返信するようにしています。
/* * ATtiny85 PIN * 5/A0 U VCC * 3/A3 | 2/A1 * 4/A2 | 1 * GND | 0 */ #include <SoftwareSerial.h> SoftwareSerial bleSerial(3, 4); // RX, TX String str = ""; void setup() { bleSerial.begin(9600); pinMode(LED, OUTPUT); } void loop() { while(bleSerial.available()) { char inChar = bleSerial.read(); if (inChar == '\n' || inChar == '\r') { if(0 < str.length()) { bleSerial.println(str); str = ""; } break; } str += inChar; } }
回路作成
ESP32は3.3V電源の供給用として使っています。
接続テスト
今回は接続を確認するだけなので、太陽誘電のアプリを使いました。
アプリからAE-TYBLE16に接続して、改行コードを設定してテキストを送信すると、送信したテキストと同じ内容が帰ってくることが確認できました。
さいごに
無事にATTiny85をAE-TYBLE16と接続してシリアル通信することができました。
しかし、このままだと時々に通信データに欠損が発生して、文字化けしてしまうようです。
なんとか改善する方法はないか調べてみようと思います。