体重計の改造
一般に、デジタル式の体重計では、ひずみゲージセンサを使った「ロードセル」というデバイスで重さを計測しています。このロードセル、単体でも入手できますが、体重計を作 るなら、市販の体重計をばらしてロードセルと筐体をそのまま流用してしまったほうが、手間もコストもかからず楽です。というわけで、タニタのシンプルなデジタル式体重計(HD-661)を購入して分解・改造。ロードセルを使った重さの計測には、HX711というICチップを使ったロードセル用のADコンバータを、マイコンには無線LAN内蔵のESP-WROOM-02(ESP8266)を、体重の表示には4桁の7セグメントLEDとロジックIC(シフトレジスタ)の74HC595を使います。体重計そのものとこれらの部品など含めて、部品代は総額3500円くらい。
過程はすっ飛ばして、出来上がった体重計はこんな感じです。
回路図は以下の通り。7セグメントLEDと74HC595の周辺の配線が多くて苦労しました。。。
(回路図を書くためにFritzingを初めて使ってみましたが、便利ですねこれ)
マイコン側はArduinoで体重を計測してHTTP POSTするプログラムを、クラウド側はAWSのAPI Gateway + Lambda + DynamoDBで計測した体重を記録するだけのWEBサービスを、それぞれ作りました。
スマートスピーカーとの連携
このままだと誰の体重かが分からないので、Alexa Skill Kitでカスタムスキルを作って、スマートスピーカー(Amazon Echo dot)に誰の体重を測ったのかを伝えられるようにしてみました。使う人とスマートスピーカーとのやり取りはこんな感じ(やり取りがわかりやすかったのでテスト用の画面で)。これで、人ごとにデータを記録できるようになります。
実際のデータ記録先は、IoT向けのセンサデータなどの記録・分析用WEBサービスであるThingSpeak(運営しているのはMatlabのMathWorks)。グラフでログも確認できます。
というわけで、体重を毎日測って健康管理できるようになりました。
※今回のハードとソフトを作るにあたっては、以下の記事などを参考にしました。
- 歪みゲージ(ロードセル)と HX711 を使って重量計測する (Arduino) | tech - 氾濫原
- 体重計をハックして無線化してみた - Qiita
- 4連の7セグメントLEDをシフトレジスタで制御してピン数を節約する | ものづくりとプログラミング日記
- ESP-WROOM-02 Arduino互換ボードのGPIOはこうやって使う - Qiita
- ESP8266でSPI通信する - Qiita
- ESP8266 (ESP-WROOM-02) の便利ライブラリまとめ (Ticker編) - Qiita
- esp8266 - What is the secret of the arduino `yield()`function? - Stack Overflow
- Alexa | アレクサ | Alexaスキル開発トレーニング
- [日本語Alexa] ダイアログモデルでスロットを自由自在に操作するためのドキュメント | Developers.IO