2017年9月3日日曜日

スマホ、サイコン化計画

サイクルコンピュータには、GARMINを利用してきましたが、どうも文字が小さく「老眼の人は使わないで結構です」といわんばかりです。

そこで、Smartphoneをサイクルコンピュータ化してみました。
技術的には、ANT心拍/パワー/速度等の各センサーの情報をスマートフォンにWiFiで転送するデバイスを製作してみました、というものです。

現状品
















スマートフォンのブラウザで各センサーのデータを表示します。
スマホなので、画面の拡大、縮小やスクロールが楽です。
ピンチ操作で拡大してみました。




サイクルコンピュータは、ボタンを押しにくいものが多く、よく不便に感じてましたが、だいぶ改善できたと思います。

また、夏は、信号ストップでサイコンを見て「今、気温43度!熱すぎるー」と空騒ぎするのが自転車の楽しみですが、GARMINは温度表示がかなりいい加減です。

感覚的に誤差が±4度くらいあり、誤差範囲がANTチップ内蔵の温度センサーと重なることから、ANT受信チップ内蔵の温度計をそのまま使ってると推測します。

もう少し温度の精度がほしいです。
丁度、BME280というチップが、温度、湿度、気圧を計測でき、温度誤差は±1度なので、これを採用しました。

今回のハードウェア構成です。
-D52(Dynastream製ANTモジュール)- これでANTセンサーの無線情報を受信します。
-BME280              - これで温度、湿度、気圧を計測します

-Arduino Pro Mini          - 上記2つのモジュールからデータを受信し、文字列として、ESP-WROOMに転送します。

-ESP-WROOM            - WEBサーバとして機能し、各センサーの情報が反映されたWEBサイトをブラウザに送信します。

クライアントは、スマートフォンに限らず、WEBサイトを表示できるデバイスならば、PCでもタブレットでも、腕時計でもOKです。
専用のAppを入れる必要もなく、WiFiのアクセスポイントをESP-WROOMに変更し、ブラウザで、192.168.10.1にアクセスすれば、ブラウザで画面表示され、1秒置きにページが更新される仕組みです。

配線図




ソフトウェアは、Arduino ProMiniはもちろん、ESP-WROOMもArduinoとしてプログラムを書き込んでいます(ESP-WROOMをArduino IDEで書き込む方法はGoogle検索でたくさんでてきます)。

BME280へのアクセスは、GIT HUBのSWITCH SCIENSE製のソースコードをそのまま利用させていただきました。

つづく




2 件のコメント:

  1. お世話になっております。信州MAKERSです。新作のアイデア凄いですね。スマホに表示するためにBLE-JAVA言語などは使わずにWEBサーバー経由でデータを転送表示できるのは、素晴らしいアイデアだと感心いたしました。私もPMMで使わせていただきたく存じます。ご指導宜しくお願いいたします。

    返信削除
  2. 早速のコメントありがとうございます。
    HTMLページの更新速度が1秒毎と遅いため、PMMに利用できるか否かは不明ですが、とりあえず、ソースコードをお送りします。
    HTMLをベタに送信するのではなく、Server-Sent Eventsという技術を使うと、スマホでリアルタイムにセンサーの情報を表示できるようです。勉強不足なのと、1秒間隔更新の方が、バッテリには優しいのでは、と考えて、手つかずの状態です。
    “ご指導”差し上げられるものは、何ひとつ保有しておりませんが、ご指摘のとおり、もう少し記事をわかりやすく書き換えようと思います。

    返信削除