工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

リモート水位センサシステム ver3(ソーラー発電対応)(1) --- ソーラーパネル組み立て ---

概要

リモート水位センサシステムをソーラー発電対応させるため、ソーラーモジュールの調達と防水加工を行った。



背景と目的

一昨年にから稼働しているリモート水位センサシステムの電源は、今まで電池を使用してきたのだが、いつかソーラー発電を導入したいと考えていた。今年は3シーズン目で、いよいよソーラー発電を導入するための作業時間が確保できたので、取り組むことにした。



詳細

1. 構想と設計

まず、屋外使用可能で、価格、発電容量の条件に見合うソーラーパネルを探したのだが、なかなか見つからなかった。結局、以下のソーラーモジュールを選定し、自前で防水加工をすることにした。

akizukidenshi.com

具体的には、以下のように、ソーラーモジュールの周りに防水用スポンジ(エプトシーラー)を配して、アクリル板で両面から挟み込む構造にした。耐候性に優れ、透明性も高い素材としてアクリルやポリカーボネートがあるが、今回は、たまたま入手しやすかったのでアクリルにした。 周囲の8個のネジで締め上げてエプトシーラーが圧縮されるようにする。配線は、ソーラーモジュールの背面の電極から、横に出す形。なので、あまり厚みが出ないように注意深くはんだ付けが必要。

f:id:dekuo-03:20210321112533p:plain


2. 材料調達

  • アクリル板

一部をカットして使う。

https://www.amazon.co.jp/gp/product/B00E84KFIQ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1

  • エプトシーラー

https://www.amazon.co.jp/gp/product/B0795CJFBT/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1


3. 組み立て

2.1 配線

ソーラーモジュールの裏面は、こんな感じ。

f:id:dekuo-03:20210321122044j:plain

はんだ付けして、テープで押さえる。

f:id:dekuo-03:20210321122100j:plain

2.2 アクリル板切り出し

所定の寸法にカットし、周囲に穴あけ。

f:id:dekuo-03:20210328233039j:plain

2.3 ソーラーモジュール挟み込み

ソーラーモジュールを挟みこんで、ネジで締め上げる。といってもあまりに締めすぎるのは負担がかかるのでほどほどに。

f:id:dekuo-03:20210328233054j:plain

これで、外観は完成。


3. テスト

2.3に先立って、ソーラーモジュールを挟む前に、エプトシーラーで囲まれた領域に水が入らないか、テストした。ネジの締め付けは、ソーラーモジュール厚み程度にエプトシーラーが圧縮される強さにした。 方法は、約5cm程度の深さの水に、パネルを沈め、1時間ほど放置。

f:id:dekuo-03:20210328233047j:plain

結果、水の侵入がないことを確認できた。したがって、設計した構造で防水は問題なさそう。(日光による劣化の評価は時間がかかるのでまたあとで)



まとめと今後の課題

ソーラーモジュールの防水加工ができた。次回は、システムに組み込む。


windowsでlibusbを使う

概要

Windows PC上で、libusbを使ったC言語プログラムをビルドして、動かした。


背景と目的

Windows PC上で、libusbを使いたいので、方法をメモる。


詳細

参考

0. 環境


1. MinGWをダウンロード、インストール

https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download


2. libusbをダウンロード、インストール

2.1 ダウンロード

https://github.com/libusb/libusb

バイナリを落とす。githubソースコードではない。

2.2 インストール

VS2019のdllを使うので、VS2019/MS64/dll/libusb-1.0.dllを以下のフォルダにコピーする。 これで、出来上がった実行ファイルがlibusb-1.0.dllを参照できる。

C:\Windows\System32


3. コンパイルしてみる

3.1 ソースコード

https://sites.google.com/site/memomuteki/tinylinux/linuxdepentabumojuruwozuochengshiyou

上記を参考に、使うものに合わせて編集。 PC側からの送信に使うエンドポイントアドレスがあるデバイスなので、そのアドレスでlibusb_interrupt_transfer関数を使って送信。

#define VID 0x**** // 使用するものに合わせる
#define PID 0x**** // 使用するものに合わせる
#define INTF_NUM 0
#define EP_ADDR 0x81
#define EP_ADDR2 0x01 // PC側からの送信に使うエンドポイントアドレス
#define MAX_PACKET_SIZE 64 // 変更

:

        // libusb_set_auto_detach_kernel_driver() failed: LIBUSB_ERROR_NOT_SUPPORTEDと出るのでコメントアウト
    // r = libusb_set_auto_detach_kernel_driver(handle, TRUE);
    // if (r != LIBUSB_SUCCESS) {
    //  printf("libusb_set_auto_detach_kernel_driver() failed: %s\n", libusb_error_name(r));
    //  goto exit;
    // }

:

    // 送信用にコードを追加
    int transferred2 = 1;
    buffer2[0] = 0x52;
    libusb_interrupt_transfer(handle, EP_ADDR2, buffer2, sizeof(buffer2), &transferred2, 100);

3.2 コンパイル

include/libusb-1.0のlibusb.hとVS2019フォルダのdllを参照する。

gcc -I./include/libusb-1.0 -L./VS2019/MS64/dll -lusb-1.0 -o test test.c


4. 動かす

実行した結果、正しく通信できた。

52 02 00 4a 02 53 39 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


まとめと今後の課題

Windows PC上で、libusbを使ったC言語プログラムをビルドして、動かすことができた。