wiki:UsbWattMeter

Version 2 (modified by coas-nagasima, 8 years ago) ( diff )

--

USB充電器電力計

USB充電器電力計は、ECHONET Lite 通信ミドルウェアTOPPERS/ECNLのサンプル・アプリケーションです。コンセプト・コードであり、実用的に使用する場合は十分な試験が必要です。
GR-SAKURAにECHONET Liteの電力計を6つ実装し、アナログPIN0~5の最大入力を2.4Aとして計測しています。電圧は5V固定で電力を算出しています。
またHTTPSクライアント機能を持ち、定期的に計測値の履歴をPOSTします。
NCES TRAINING BOARDを使用した場合、7セグにアナログPIN0~7の瞬時値を2秒ごとに切り替えて表示しているのが見えます。

ダウンロード

ソースコードはこちらにあります。trunkの行の「Size」列にある↓をクリックすると、zipファイルでダウンロードできます。

ソフトウェアについて

いくつかのオープンソースを利用していますので、各ソフトウェアのライセンスに従ってください。

ソフトウェアURLライセンス備考
TOPPERS/ASP 1.9.2 動的生成版https://www.toppers.jp/asp-kernel.htmlTOPPERSライセンスRTOS
TOPPERS/ECNL lwIP対応β版https://www.toppers.jp/ecnl.htmlTOPPERSライセンスECHONET Lite通信ミドルウェア
FatFS R0.10bhttp://elm-chan.org/fsw/ff/00index_j.htmlBSDライクなライセンスSDカード用ファイルシステム
lwIP 1.4.1http://savannah.nongnu.org/projects/lwip/BSD-style licenseTCP/IPプロトコルスタック、DHCPクライアント、DNSクライアント、IGMPクライアント、SNTPクライアント
TLSF 3.0http://tlsf.baisoku.org/public domainメモリアロケーター
WolfSSL 3.7.0http://www.wolfssl.jp/wolfsite/GPLv2 or 商用SSL/TLSライブラリ
libcurl 7.47.1https://curl.haxx.se/libcurl/MIT/X derivate licenseHTTP/HTTPSクライアント
musl libchttp://www.musl-libc.org/permissive MIT licensetime関数とgmtime関数

正確なライセンスは、それぞれの提供サイトで確認してください。
lwIPのASP対応では、「第3回 TOPPERS活用アイデア・アプリケーション開発コンテスト」の受賞作、松浦光洋さんの「lwIP の移植」をベースにさせていただきました。
それぞれのオープンソース提供者に感謝いたします。

ビルド方法

コンパイル/ビルドには、CubeSuite+が必要です。サイズ制限のある無償版ではビルドできません。
cspフォルダの下に以下のフォルダがあり、その中にCubeSuite+のプロジェクトがあります。

csp/libasp/libasp.mtpjTOPPERS/ASPのライブラリ
csp/liblwip/liblwip.mtpjlwIPのライブラリ
csp/libwolfssl/libwolfssl.mtpjWolfSSLのライブラリ
csp/libcurl/libcurl.mtpjlibcurlのライブラリ
csp/usb_watt_meter/usb_watt_meter.mtpjUSB充電器電力計のプログラム

順にビルドして、 usb_watt_meter/DefaultBuild/usb_watt_meter.mot が実行プログラムになります。

注意事項

HTTPSのPOSTを試すにはSDカードが必要です。履歴ファイルを直下のlogフォルダの中に作成し、そのファイルをPOSTします。
また、履歴ファイルを受け取るWebサーバーも必要です。JSON形式で書き出していますが、これを処理するサーバーのお手本があるわけではありません。
サーバーは仮のURLとして「www.example.com」となっていますので、変更してください。
時刻を取得するためにSNTPクライアントが動いていますが、lwIPで提供されているままのNTPサーバーアドレスですので、変更してください。
libcurlのmprintf.cにあるdprintf_formatf関数は、スタックメモリを大量に使用していたので、FatFsのサンプルにあるfprintfを利用して代替えを行っています。通信電文の文字列が正しくフォーマットされない可能性がありますので、注意が必要です。

Note: See TracWiki for help on using the wiki.