ATtiny85電子百葉箱完成
ATtiny85を使用した電子百葉箱作成記事も今回で最後になります。前回の記事でハード作成が終わりましたので今回は実際にコードを書き込んだATtiny85を実装させて動作確認とまとめになります。
実際にATtiny85に書き込むコードに関してはテキスト形式で文末に載せたいと思いますので参考にされる方はご使用ください(無保証)。
動作確認
実際に動作確認していきます。比較するのは私が愛用している電波時計に内蔵されている温湿度計です。気圧に関してはカシオの腕時計PRO TREKで比較を行います。
■ 温度(電波時計:24.6℃ / 電子百葉箱:24.42℃)
■ 湿度(電波時計:40% / 電子百葉箱 : 39.93%)
■ 気圧(電波時計: 986hPa / 電子百葉箱 : 1003hPa )
温度・湿度はいい感じに既製品の温度計と変わらないくらいの値を表示していますね。気圧計は20hPaくらい差があります。ちなみに天気予報の気圧は1016hPa(絶対気圧換算で986hPa)でした。天気予報の気圧は海面気圧に換算しているので実際の気圧は高度を換算している986hPaでした。この結果からみるとさすがPRO TREK!!
気圧から標高を計算 – 高精度計算サイト – Keisan – CASIO
で、電子百葉箱の方なのですがその時々で結構気圧が変動します。機嫌がいいときはPRO TREKと同じ同じような値を表示してくれますし、写真のようにずれているときもあります。ここら辺は測定のオーバーサンプリングとかフィルタの設定によるものなのかな?と思っていたりします。気圧に関しては課題として後日掘り下げてみたいと思います。
苦労したところと課題
◎ スライドスイッチの不良
メインスイッチに使用している中国製のマイクロスライドスイッチが3連続不良で随分と悩ませてくれました。20個で400円弱と格安だったので購入しましたが、安いわけです。。。感覚的に2-3個に1個は不良を引くのでもしも購入する場合はお気を付けください。
◎ LCDの昇圧回路
以前の記事でも触れましたが、今回は秋月で売られているAQM0802A-RN-GBWというLCDを使用しました。このLCDはST7032iというドライバを内蔵しており、昇圧回路機能を持ち合わせております。なので3.3Vで使用する場合はこの昇圧回路を使用しないと表示できないわけですが、レジスタの設定以外にも外部コンデンサが必要であることを見落としていて半日くらい悩んでいました。
◎ ATtiny85の外部割込みPin
Arduinoでのデバックでは表示切替のボタンとスリープからの復帰として外部割込み(INT0)を使用しておりました。しかしATtiny85に実装する際にI2CのSCLとINT0が同じPinに割り振られていたために使うことができず、泣く泣くResetピンを使用してボタンを1個増設しました。というかI2C使うときは外部割込みが使えないという認識で合っているのか??
◎ ブートローダー書き込み
Arduino_ISRで書き込むときに内部クロック選択(internal)を選ばないとクリスタルがない限り動かない体になってしまいます。一個ダメにしました。
● 気圧の測定値
先ほども書いた通り気圧が安定しません。そのうち高度計を作るついでに掘り下げていこうと思います。
ATtiny85コード
- 読み取り間隔:1秒(読み取りの際にインジケータLED点灯)
- スリープ待機:30秒(画面切り替えでカウントリセット)
- スリープ解除:リセットボタン(PB5をGNDに落とす)
- 表示切替:PB3押下(チャタリング防止は遅延カウンタ)
- タイマ割り込み:約50ms(CTC)
- 内部クロック:4MHz
おわりに
今回でATtiny85での電子百葉箱作成は終わりです。課題は残りますが、まずまずの結果に満足です。
次は発展としてESP8266などのWifiモジュールと連携してタイマ割り込みでクラウドにデータをアップするIOT的な使い方が出来ると面白いかもしれませんね。
ではでは~
コメント