mbedで蛍光表示管を使って温度・湿度・気圧を表示できるデバイスを作成しました。
この作品はMakerFaireTokyo2014に出展します。
実物見たい人は是非見に来てください。
製作について
1. 蛍光表示管のシールド作成
蛍光表示管の信号線をすべて1本1本mbedに接続すると、9個(7セグ+ドット+4の横棒)*4の36個も端子を使ってしまうので、そういう接続はせずに、ダイナミック点灯という方法を使います。
ダイナミック点灯は目の残像を利用した点灯方法です。 4本のうち光っているいるものは常に1本で、それを高速で切り替えることで、残像で全部が光ってみえます。
4本あるうちのどの蛍光表示管を光らせるかの接続4個とどの部分を光らせるか(上の9個)の13個の信号線だけで蛍光表示管を駆動できるので端子数が節約できて良いです。
蛍光表示管をダイナミック点灯するための回路は、デジットで売られている蛍光表示管のキットの回路を大体そのまま使わせてもらいました。
蛍光表示管は駆動するのに、最低でも12V以上の電圧が必要となります。なので、mbedの端子から出力できる3.3Vの電圧では足りないため、間にトランジスタを挟み、mbedの出力を別電源から与えた電圧に変換して蛍光表示管に与えています。
蛍光表示管を光らせるには電圧は12V以上の電圧が必要ですが、電流はそんなに流れません。
そこで蛍光表示管用の電源は、外部に別の電源を用意するのではなく、秋月の昇圧キットを使って、USBの5Vから昇圧して20Vを得ることで光らせることにしました。
なお、今回20Vとしているのは、ダイナミック点灯により実質明るさが1/4となってしまうため、電圧を上げてその分、1本あたりの明るさをあげています。
2. 使用したセンサー
- 温湿度センサー:AM2321(http://akizukidenshi.com/catalog/g/gM-07001/)
- 気圧センサー:LPS331(http://akizukidenshi.com/catalog/g/gM-06679/)
を使いました。
どちらもI2C接続で接続でき、mbedの使用する端子の数を減らせます。 AM2321とLPS331は、LPS331のI2Cのアドレスを変更することで同時利用できます。
3. mbedのプログラム
mbedはLPC1768、いわゆる青mbedを使いました。 何だかんだで使いやすいmbedだと思います。
今回使用したライブラリは以下です。
- AM2321 - AM2321 Temperature and Humidity Sensor mbed libra… | Mbed
- AM2321用
- LPS331_I2C - STMicroelectronics LPS331 I2C Library. | Mbed
- LPS331用
- mbed-rtos - Official mbed Real Time Operating System based on… | Mbed
- RTOS
ソースコードは以下で公開しています。
mbed_vfd_thermometer - thermometer, hygrometer and barometer. Using VFD … | Mbed
初めてタイマー割り込みを使ってみましたが、こんなに便利なものとは思ってなかったです。コードがすっきりするので見通しがよくなりますね。
下のような感じで表示されます。
温度の表示のときは末尾が「C」になります。
湿度表示のときは末尾が「P」になります。
気圧表示のときはの末尾なしか3桁のときは「h」が出るようになっています。
4. 外装の作成
2枚のアクリル板で挟むサンドイッチみたいな構造にします。
上側にセンサーや蛍光表示管やICなどが出っ張っているので、それを活かしたデザインにします。
まずはプロトタイプを紙で作成しました。
加工は、いつもどおりはざい屋にお願いしました。
現物合わせで調整したい基板の取り付け穴などは自分で加工しました。
仮組みしてみたときはこんな感じです。
できあがり
まとめと今後
- メジャーなセンサーはmbed.orgにライブラリをつくってくれている人がいるのでありがたいです。
- RTOSはサンプルプログラムがわかりやすいので、サンプルを実行しながら説明を読むと、理解しやすかったです。
- Ethernetとかの部分はまだ作りかけです。