2022年11月19日土曜日

今回でこのblogは終わりにします。

 書き方や著作権の扱いが未熟で修正が効かないのが理由です。ここに書き込む事で色々な勉強になりました。一旦休憩してレベルアップしたblogが書ける様になればと思います。書き始めてから関わった全て方に感謝します。著作権をよく理解出来ずご迷惑をお掛けした事をこの場を借りてお詫びします。

有難う御座いました。

2022年11月4日金曜日

git でバイナリーデータのバージョン管理

 現在社内の図面は2次元CADでバイナリーファイルでバージョン管理が難しい。

READMEファイルに注記を入れてスナップショットで管理するしかないかと思います。

3Dだとクラウドで勝手にバージョン管理されるので履歴も誰が更新したかも特に問題な無し。

後はgoogleドライブのアクションアイテムを利用してファイルを交換すれば”何時””誰が””何を”を管理する事が出来る様になります。

お互いの齟齬が無くなるので改善すると思います。

印刷物と違いその後のフォローも出来るので何かとヒューマンエラーを防止できる。


2022年10月28日金曜日

Jetson でjupytre labサーバー作成

 折角の機械学習や分析の手法を共有する為のサーバーを作ってみます。

ネットの情報そのままではライブラリ等で躓いたので追記しました。Windowsのファイル指定がかえってなれないのと

今後新しい人が来た時に使いやすく独立したサーバーにしておきます。



Jetson にアナコンダをインストールしてからサーバー化

Sudoで直接インストールはseaborn等でエラーが出るのでanaconda環境で

jupyterlabをインストール

https://www.pc-koubou.jp/magazine/38846

上記参考にUBUNTUanacondaをインストール

但しアームコアなので下記ファイルでインストール

https://github.com/Archiconda/build-tools/releases

$ cd ~/Download

※日本語化して使用している方はディレクトリ名が『ダウンロード』の場合もあり

ます。

bashで実行する

ディレクトリを移動したら先程ダウンロードしたファイルをbashで実行します。

今回ダウンロードしたファイル名はArchiconda3-0.2.3-Linux-aarch64.shですの

で、そのまま入力します。

 

$bash Archiconda3-0.2.3-Linux-aarch64.sh

source ~/.bashrc

conda activate

(base)

conda list

conda install pip

conda detactivate

conda install jupyterlab

jupyter lab

取り敢えず起動の確認

その後以下を良く使うのでインストール

 

conda install pandas

conda install matplotlib

conda install seaborn

conda install openpyxl

conda install scikit-learn

 

matplotlibの文字化け様に日本語フォントインストール

 

https://self-development.info/ipaexgothic%e3%81%ab%e3%82%88%e3%82%8bmatplo

tlib%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96%e3%80%90python%e3%80%91/

IPAexGothicのインストール

文字化けを解消するためには、日本語のフォントが必要です。

ただ、Ubuntuには、デフォルトでIPAフォントから派生した「Takaoフォント」がイ

ンストールされています。

それを使うという手もありますが、一般に普及しているIPAexGothicを使うことに

します。

 

IPAexGothicは、IPAexゴシックのことです。

findfont: Font family ['IPAexGothic'] not found. Falling back to DejaVu

Sans.

IPAexGothicフォントなんてないよ!!」というエラーです。

このエラーが出る場合は、ほぼキャッシュが原因となります。

 

ちなみに、キャッシュはユーザー毎にあります。

場所は、ホームの下ですね。

なお、ファイル名が同じとは限りません。

 

$ ls ~/.cache/matplotlib/

fontlist-v330.json

このファイルを削除します。

rm」コマンドで適当に削除してください。

 

再度、「japanse.png」を作成するプログラムを実行します。

文字化けせずに「日本語title」で表示されれば、成功です。

 

以上、「IPAexGothicによりMatplotlibを日本語に対応させる」でした。

 

ここから先はconda acvitaeして(base)wiwao@wiwao-desktop:~で作業する。

 

#AnacondaVersion確認

#root@XXX tmp]# anaconda -V

#anaconda Command line client (version 1.7.2)

 

jetson nano nvidia-l4t-bootloader errorが出る場合は下記処理

 

sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/backup/

sudo mkdir /var/lib/dpkg/info/

sudo apt-get update

sudo apt-get -f install

sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/backup/

sudo rm -rf /var/lib/dpkg/info

sudo mv /var/lib/dpkg/backup/ /var/lib/dpkg/info/

sudo apt update

sudo apt upgrade

sudo apt dist-upgrade

 

 

jupyterVesion確認

[root@XXX tmp]# jupyter --version

4.4.0

 

Path確認

[root@XXX tmp]# jupyter --path

config:

   /root/.jupyter

   /root/anaconda3/etc/jupyter

   /usr/local/etc/jupyter

   /etc/jupyter

data:

   /root/.local/share/jupyter

   /root/anaconda3/share/jupyter

   /usr/local/share/jupyter

   /usr/share/jupyter

runtime:

   /run/user/0/jupyter

 

ここからWEBサーバーの設定

 

JupyterNotebookの設定ファイルを生成する

$jupyter notebook --generate-config

設定ファイルの編集をする

$sudo vi /home/takeo/.jupyter/jupyter_notebook_config.py

Writing default config to: /home/takeo/.jupyter/jupyter_notebook_config.py

 

Vi/を押して

/c.NotebookApp.allow_origin

として検索します。

自己サーバーにアクセス許可設定します。

######c.NotebookApp.allow_origin = ''

コメントアウト(#)は削除し

c.NotebookApp.allow_origin = '*'

に変更し、同じ様にc.NotebookApp.ipを検索します。

#####c.NotebookApp.ip = 'localhost'

コメントアウト#をはずしすべてのIPをリッスン

c.NotebookApp.ip = '0.0.0.0'

に変更します。

ローカルでブラウザを立ち上げないようにします。TrueからFalseに変更。

c.NotebookApp.open_browser = False

:xを実行しviを終了します。

 

jupyterのパスワードを設定いたします。設定ファイルにハッシュが入ります。

 

$ jupyter notebook password

 

[NotebookPasswordApp] Wrote hashed password to

/home/takeo/.jupyter/jupyter_notebook_config.json

jupyterを起動します。

 

$jupyter lab

外部デバイスからブラウザの検索バーにipアドレス:8888でアクセス可能に

 

参考

 

https://jupyter-notebook.readthedocs.io/en/latest/config.html

https://jupyter-server.readthedocs.io/en/latest/operators/public-server.html

 

これでも下記エラーが出るのでその処理。

私の環境では、

train_test_split(テストデータ分割関数)を使用するために

 

from sklearn.model_selection import train_test_split

をソースコードの記載し、実行すると

 

ImportError: /usr/lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block

となってしまうので、

 

$ export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1

を実行しました。

 

コマンドラインでは、その端末のみ有効となるため、恒久的に行う場合には、

 

~/.bashrc

export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1

を追加して下さい。

この対処が正しいかはわかっていませんが、とりあえず実行できるようになりました。

 

 

遣っ付けの書き方もいずれ直します。すみません。


2022年7月9日土曜日

蓄電池システム

 電力需給が逼迫してますが、太陽光は限定的な役に立っているか?だけ。日が暮れる夕方にかけてかえって状況を難しくしています。日が暮れて暑さが変わらなければ供給が不足します。

蓄電池を普及させる事によって逼迫状況がどう変わるかを調べていますが、各家庭の日中の電力消費のデータはありそうでない。(怪しい太陽光関連にデータらしいものはありますが、出典を調べてもどうもそれらしい情報は見つかりません。)プロットしているデータも東電か全国平均かどうかも書いていません。東電は契約数や月間の消費電力はCSVでダウンロードできる様になっているのでデータ処理する事を前提に提供しています。関電は無い。

そもそも会社がデータをどの程度重要視しているかwebページを見ると分かります。無いところはそういう事です。

さて逼迫している電力と蓄電池を普及する事による貢献をどの様に数字で表現するか?


とりあえず移動平均取ってみよう。

社内の消費電力と同じ太陽光発電、夜間の発電と天気の幾何分布で試行錯誤してみます。

2022年6月29日水曜日

ノイズ

 ノイズはどの様な計測にもつきものです

(ノイズではなく計測装置の謎の挙動でした。メータの表示も含めてランダムに校正されている様でカットしたら合計の電力がおかしいので元に戻しました。)

会社の1月の消費電力のプロットですが、計測装置の加減で大きな外れ値があるようです。
この二つの取り除くと…
それでもまだ通常の10倍程の外れ値があります。
これを一年分同じ様な傾向があるのでどの様に取り除くか?
まさか手作業で取り除く?その基準は?
そこで統計処理の四分位数を使っって外れ値の削除をします。
外れ値の割合は全体の数%なので1%を四分位数で取り除くと…
1年間では
これでやっとそれらしい数値に落ち着きました。
これと気温と太陽光発電量をプロットしましたが、発電量は消費電量と気温との相関関係がない様で数値が一定でグラフが見にくいので気温と消費電力をプロットしました。
それぞれ単位が違うので正規化(0−1)の値に変換してグラフにすると…
機械学習のライブラリーで四分位数で外れ値を削除しました。
最初の生データで分析しても良い結果が得られません。
でもこれらの処理はそれぞれのデータで方法が変わります。
結論経験が必要。




2022年6月21日火曜日

UVR

 世の中には色々なアナログ回路の作り方が載っています。YouTubeでの解説もあります。

もちろん自己責任になりますが、市場に正規の機器ば入手出来ない状況で動作させる状況は起こりうるので色々な情報をもとに作りました。

まず停電条件を整理します。瞬停で回路が誤作動する事をタイマーで回避します。

停電では回路の制御電源も確保しなくてはいけませんが、今回はバッテリと充電回路は流通している機器をできるだけ使用する事を前提にしています。コンデンサを使ったバップアップはまだまだ調べる事やテストが必要です。

①コンセント100v用にボルテージセンサーを考えます。

ボルテージセンサー

マイコン用のセンサーですが、トランスで絶縁している事と二次側の電圧の変更が容易なのでこれを参考にしました。絶縁せず直接ダイオードで整流しても部品点数が減って安くできるのかもしれませんが。

アナログ回路で設計するので交流電圧を整流して積分する事にします。

半波整流でも全波整流でも良いのですが、全波整流でダイオードが1個壊れて判定がおかしくなってもどうかと思い半波整流を考えています。それも想定して全波整流で進めるのも良いかもしません。

100vと60vで直流電圧で8.5vと4.9vを判定の為コンパレータに渡して判定です。
次のコンパレータで出力を反転出力します。
コンパレータではヒステリシスに幅を持たせて閾値でのチャタリングも防止しています。
詳しくはトランジスタ技術に解説があります。
コンパレータ

停電判定は3秒のタイマーを組みました。抵抗とコンデンサーで組んでみましたがリレー出力のトランジスターの増幅率と抵抗の電流を考慮しないと出力が足らなくなる事がありますが、そのはLT spiceで十分確認した方が良いです。
シュミレーションの為にリレー回路はここを参考にしました。
555タイマーを使った回路も試してみました。
これが曲者でネットに載っている回路がどれも解説が不十分で動作しても予期しない事が起きそうなものが多いです。
海外の動画ですが、回路説明は一番良いと思います。555タイマー

デバック用にLEDを4つ、電源、判定、タイマー、リレー動作を考えました。これらのトランジスタ出力にリレーを追加しました。直接ドライブすると続く回路の電流等が影響が出ました。
動作したかの記録にラッチリレーを追加しようと思います。

色々調べていると継電器としてはアナログ回路では無くMCUを使った回路でないとダメの様です。理由は制御が出来ない状態を表示しないといけないのでウオッチドックタイマでエラーが出たらLED点灯しないと安全性を担保出来ないという事でしょう。




2022年6月13日月曜日

動かない回路

ちょっとしたアナログ回路をつくっているとネットで便利な情報があったりします。

LT SPICEでシュミレートで確認すると動かない。

一見動きそうな点滅回路、、、

コンデンサーに電荷が溜まってベースの電圧が上がって動作を繰り返すと書いてあります。
それも大学名が記述されたページです。
トランジスタの下にあるLEDは電圧降下をするので説明の様に電流は流れません。
絶対に動かない回路です。
他にも色々おかしな回路は多くネットにあり検索の上位にくるサンプルでも動作がおかしい回路が多くあります。YouTubeで変な解説もあります。

海外のYouTubeでは説明が丁寧でいい加減が説明ばかりで混乱していてもよく理解できるページがあります。内容を理解するのに時間が必要なので探すのが大変です。

555タイマー

定番のタイマー回路ですが、いざ使うとなるとうる覚えで躓きました。

トランジスタ技術のページの解説は間違いないですが、ちょっと理解が難しい。

でも実践的な解説が多いです。

LT SPICEも使い慣れているわけではないのでもう少し時間が掛かりそうです。