工作と競馬2

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

Amazonの激安USBシリアル変換アダプタを試す

概要

激安USBシリアル変換アダプタが使えるか試し、いくつか修正を施すことで動作することを確認した。


背景と目的

最近、USBシリアル変換アダプタをもう1個欲しいなと思って探したところ、Amazonで400円の激安品を見つけた。

www.amazon.co.jp

レビューを見る限り、多少当たりはずれがあるのか、環境差異か、動く場合も動かない場合もあり、私の環境で動くかどうかはそこからは読み取れないので、最悪ダメでもいいと割り切って買ってみた。そこで、私の環境で動くか試す。


詳細

1.環境

  • DELL Insprion 5000シリーズ
  • Windows10 64bit


2.いきなり使ってみる

USB端子にアダプタを指し、Tera Termで新しい接続を選ぶと、シリアルポートとして認識された。ドライバは自動でインストールされた模様。しかし、OKボタンを押したところ、開けないとのエラーが出た。

ちなみに、Arduino IDE上でシリアルモニタとして開こうとすると、port is busyという表示が出る。


3.解決法を探す

以下に参考になる情報があった。

ehbtj.com

どうやら、64bit向けの修正版ドライバを提供しているところがあるという情報があり、

www.ifamilysoftware.com

これが使えるのではないかと思えた。


4.修正し動作確認

上記のサイトから、目的のドライバをダウンロードし、インストール。 USBシリアル変換アダプタを接続せずに、インストールしたアプリケーションを実行し、以下の画面が出たら、シリアル変換アダプタを接続して、Continueを押す。完了後、PCを再起動して、再度シリアル変換アダプタを使ってみると、正しく動作した。Tera Termも、Aruduio IDEもOK。


まとめと今後の課題

激安USBシリアル変換アダプタが動作することを確認できた。激安なので、スペアで持っておきたいという人にはAmazonの買い物ついでに買っておくのもいいだろう。


土壌水分センサ(DFRobot社Gravityシリーズ)の動作電源電圧の下限を調べる

概要

土壌水分センサ(DFRobot社Gravityシリーズ)の動作電源電圧の下限を調べた。


背景と目的

スイッチサイエンスで売っていた土壌水分センサを使用したいと考えている。動作電圧下限は仕様書上3.3Vである。
今回使用を想定する電源は、ソーラーパネルリチウムイオン電池による約4Vの電源からレギュレータで3.3Vに落とした系で、天気が悪いとリチウムイオン電池に充電できず、3.3Vを供給できないだろう。マイコンは3.3Vを下回っても動くので、このセンサも3.3V以下で使えた方が電池の有効利用になる。そこで、下回った場合の挙動を調べ、3.3V以下でも使えないか調べてみる。


詳細

1. 方法

方法は単純に、

電源電圧を上下させて、センサ出力電圧の変化を見る

とする。上下させる範囲は実験しながら適宜。センシング対象は空気中と水中の2種類。


2. 結果

以下の通り、3Vまでは、センサ出力が変わらず、使えそうだということがわかった。

また、それ以下であっても電源電圧に対して直線的に出力が下がっている。ということは、電源電圧を計測して補正するという手もなくはない。使用予定のマイコンは、2.7Vくらいまで動くので、補正をすればマイコンが動く範囲では2.7Vくらいまで使えるといえる。あるいは、そもそもリチウムイオン電池から直接取る(動作電圧最大5Vに対して、電池は最大でも4.2Vなので)方が楽かもしれない。


まとめと今後の課題

土壌水分センサ(DFRobot社Gravityシリーズ)の動作電源電圧の下限がわかったので、これを考慮して回路構成を考えたい。


ApacheでFlask Appをデーモンで動かすためのメモ

ApacheでFlask Appをデーモンで動かすときにつまずいたのでメモしておく。 そもそも、なぜデーモンで動かしたいかというと、

デーモンにしない場合、セッション毎(というかアクセス元IPアドレス?何で判断しているのかよくわからないが)に、アプリが別プロセスで立ち上がって、セッションにかかわらず共有したいデータが共有できなかった。例えば、今何人がログイン済みか、みたいなデータはデータベースを使用する手もあるが、データベースを使用せずとも、アプリ上で保持して共有したい場合に、不便。

なので、デーモンにして、立ち上がるプロセスを1つにして共有したい。

前提条件

  • Apache 2.4
  • mod_wsgiでflaskアプリと連携する
  • Apacheの実行ユーザーはwww-dataとする
  • アプリの実行ユーザー、アプリの実行グループはmyappuserとする
  • /www/myapp に、アプリのソースコード(adopter.wsgiなど)置く。


設定ファイル

.confファイルのWeb上にある情報が非常に雑多で、いろいろなパラメータが書いてあったりなかったりする。なので、どれが正しいのかよくわからず、カットアンドトライになってしまったが、 ハマったポイントとしては、

  • アプリの実行ユーザー名のディレクトリが、home以下にないとだめなので、作成しておく。(ユーザー作成時にディレクトリ作らなかった場合は注意)作成しないと以下のエラーが出る。
Unable to change working directory to home directory '/home/***'
  • WSGIDaemonProcessの各パラメータを忘れない。socket-userなど。
  • WSGIDaemonProcessのプロセスグループ名とWSGIProcessGroupのプロセスグループ名はちゃんと合わせる
  • WSGISocketPrefixを指定する。指定しないとアプリのプロセスが見つからずApacheが通信できない旨のエラーが出る

/etc/apache/conf.d/myapp.conf

LoadModule wsgi_module path/to/mod_wsgi-py35.cpython-35m-arm-linux-gnueabihf.so

WSGIPythonHome Python本体のあるディレクトリパス
WSGIPythonPath Pythonが参照するパス、必要に応じて
WSGISocketPrefix /var/run/wsgi

<VirtualHost *>
    WSGIDaemonProcess プロセスグループ名 user=myappuser group=myappuser threads=整数 socket-user=www-data
    WSGIScriptAlias / /www/myapp
    KeepAliveTimeout 3600 # 必要に応じて

    <Directory /www/myapp>
        WSGIProcessGroup プロセスグループ名
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Require all granted
    </Directory>
</VirtualHost>