Version 2 (modified by 7 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.html | TOPPERSライセンス | RTOS |
TOPPERS/ECNL lwIP対応β版 | https://www.toppers.jp/ecnl.html | TOPPERSライセンス | ECHONET Lite通信ミドルウェア |
FatFS R0.10b | http://elm-chan.org/fsw/ff/00index_j.html | BSDライクなライセンス | SDカード用ファイルシステム |
lwIP 1.4.1 | http://savannah.nongnu.org/projects/lwip/ | BSD-style license | TCP/IPプロトコルスタック、DHCPクライアント、DNSクライアント、IGMPクライアント、SNTPクライアント |
TLSF 3.0 | http://tlsf.baisoku.org/ | public domain | メモリアロケーター |
WolfSSL 3.7.0 | http://www.wolfssl.jp/wolfsite/ | GPLv2 or 商用 | SSL/TLSライブラリ |
libcurl 7.47.1 | https://curl.haxx.se/libcurl/ | MIT/X derivate license | HTTP/HTTPSクライアント |
musl libc | http://www.musl-libc.org/ | permissive MIT license | time関数とgmtime関数 |
※正確なライセンスは、それぞれの提供サイトで確認してください。
lwIPのASP対応では、「第3回 TOPPERS活用アイデア・アプリケーション開発コンテスト」の受賞作、松浦光洋さんの「lwIP の移植」をベースにさせていただきました。
それぞれのオープンソース提供者に感謝いたします。
ビルド方法
コンパイル/ビルドには、CubeSuite+が必要です。サイズ制限のある無償版ではビルドできません。
cspフォルダの下に以下のフォルダがあり、その中にCubeSuite+のプロジェクトがあります。
csp/libasp/libasp.mtpj | TOPPERS/ASPのライブラリ |
csp/liblwip/liblwip.mtpj | lwIPのライブラリ |
csp/libwolfssl/libwolfssl.mtpj | WolfSSLのライブラリ |
csp/libcurl/libcurl.mtpj | libcurlのライブラリ |
csp/usb_watt_meter/usb_watt_meter.mtpj | USB充電器電力計のプログラム |
順にビルドして、 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を利用して代替えを行っています。通信電文の文字列が正しくフォーマットされない可能性がありますので、注意が必要です。