工作と競馬2

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

tarでアーカイブを作成するときに気を付けること(展開先のパーミッションを変化させてしまわないため)

先日、tarでアーカイブを作成し、あるディレクトリに展開したところ、展開したディレクトリのパーミッションが変わってしまった。このせいで、展開先ディレクトリにある他のファイルを参照していた他のプログラムがエラーを起こしてしまい、ひどい目に遭った。なぜ展開先ディレクトリが影響を受けてしまうのかとイライラしたが、結局tarでアーカイブを作成するときのやり方がまずかった。今後ミスしないようにメモしておく。


アーカイブ

hoge/
  abc.tgz --- 作成されたアーカイブ
  src/
    a.txt
    b.txt
    :

srcディレクトリ内のファイルたちをアーカイブするつもりで、以下コマンドを実行。

cd src
tar czvf ../abc.tgz ./

展開先

dest/
   abc.tgz --- アーカイブファイル
   abc/
     a.txt
     :

destというディレクトリにabc.tgzをコピーし、tarで展開したら、destのパーミッションが755に変わってしまった。

cd dest
tar xzvf abc.tgz .


原因

自分としては、srcディレクトリ中身すべてをアーカイブ対象としたつもりが、srcディレクトリが対象になってしまっていたこと。そのせいで、展開先ディレクトリdestにsrcが展開されてしまうために起こる。


正しい方法

src内のファイルたちをちゃんと指定する。つまり、./ではなく、./*。

cd src
tar czvf ../abc.tgz ./*

展開時には、

cd dest
tar xzvf abc.tgz -C ./

とする。

ソーラー発電式自動水やり器を作る(2) --- 電気回路の設計、製作 ---

概要

前回に続き、電気回路の設計と、製作を行った。


背景と目的

前回に続き、電気回路の設計と、製作を行う。


詳細

1. 回路全体

以下。ただし、ソーラーパネル発電とリチウムイオン電池まわりはここには書いていない。別途、描く予定。

1.0 電源まわり

大元は、リチウムイオン電池から4V程度が供給される。これを+BATTとしている。後述のマイコン用電源として3.3V系が必要なので、4VをレギュレータU2で落とす。これを+3V3とする。マイコンとその他消費電流から考えて、NJM2845を選択。


1.1 メインのマイコン

おなじみのESP-WROOM-32を使用。 Wi-Fiが使えて、各種GPIO、アナログ入力があり、3.3V系で動くので、+3V3を供給。


1.2 土壌水分センサ

U3が土壌水分センサ。アナログ入力ポートにつなぐだけ。こちらに書いた通り、電圧は高いほうが電池の終わり際まで動いてくれるはずなので、電源は+BATTから取る。


1.3 ポンプ駆動部

今回使用するポンプM1についてきたリレーモジュールを使用する。2次側のノーマリーOFF(NO)とCOM間にポンプの電源を接続し、一次側のコイルに電流を流した時に2次側が導通してポンプが動く。

厄介だったのが、このリレーモジュールRM1の素性が分からなかったこと。Amazonの商品説明ページには細かいことが書いてないので、自分で動かして調べた限り、

  • VDD=1次側コイルの電源には3.7V以上、55mA程度が必要
  • VINは、VDDにつなぐとOFF、GNDに落とすとコイルに電流が流れる

なので、VDD端子には、3.3Vではなく+BATTを接続。また、VIN端子は、ESP32のGPIO出力だと3.3Vしか出せないので、ちゃんとOFFできていなかった。そのため、簡単なトランジスタスイッチを使って+BATT/GNDでスイッチングできるようにする。ちなみに、VIN端子をGNDに落とすには2mAくらい引いてやる必要がある。まあ、電流的にはGPIOでも引ける。

それと、注意したいのは、こちらに書いた通り、GPIO出力初期状態がポートによって違う問題があるので、LOWになるポートを選んだ。(最初、HIGHになるポートを使っていて、電源を入れると必ずポンプが動いてしまうという問題に見舞われた。)

1.4 水位センサ

水位センサSW1は、水瓶の水切れを検出するために使用する。水位に応じて+3V3/GNDの2値になるように抵抗を介して接続し、ESP32のGPIOで受ける。


1.5 BME280

温度、湿度、気圧を測るセンサU1。3.3Vで駆動。I2C接続なので、ESP32のI2C端子と接続。ラインにはプルアップ抵抗。


1.6 その他

ESP32への書き込み用スイッチやシリアルなど。それと、LEDを1つ。(というか、後述の基板の都合上はじめから付いている。)


2.製作

製作した結果は以下。

  • 薄い木の板をベースボードとして、各回路を固定。大きさは、だいたい12cm×10cmくらいか。
  • ESP32の載る基板は、過去に私が遊びで作ったダッシュボタンの基板が余っていたのでそれを使った。ソフト書き込み用スイッチやシリアル端子、LEDなどが一通り載っているが、GPIOが引き出されていないので、端子に線をはんだ付けしてGPIOなどを引き出してある。通常は、

ESP-WROOM-32 ピッチ変換基板 ロングwww.switch-science.com

などを使ったほうが作りやすい。

  • リレーモジュールは、ネジ穴などがないので、仕方なく結束バンドで固定。
  • リチウムイオン電池と充電制御IC基板は、1の回路図には載せていないが、このベースボードに固定。


まとめと今後の課題

電気回路の設計、製作ができた。次回は、筐体を作成する。


ソーラー発電式自動水やり器を作る(1) --- 構想検討 ---

概要

植物の自動水やり器の構想を検討した。


背景と目的

およそ1年半前に、こちらで、同じようなタイトルの記事を書いたが、途中で他の製作が忙しくなりやめてしまっていた。最近、やっと手を付ける余裕ができたので、リスタートする。まずは、改めて構想を練ってどのようなものを作るか決める。


詳細

1.やりたいこと

ざっと列挙すると、以下の感じ。最後の項目は、あいまいな感じではあるが、温度や湿度といった基本的なものでよい。

  • 室内またはベランダに置いた植木鉢に、水やりをができる
  • 水やりの実施有無は、植木鉢の土の湿り気を基に判断する
  • 電力はソーラーパネルで発電して賄う
  • 水やりの実績をスマホ等に通知する
  • 周囲の環境も計測したい


2.システム要素

2.1 水やりを電気的に行うには

最近、このシステムで使うことを想定して、以下の記事で、試している。ちゃんと使えることがわかったので、これを使うことにする。

dekuo-03.hatenablog.jp


2.2 湿り気を判定するには

土の湿り気は、土壌水分センサを使う。前回すでにセンサだけは買っていたが、いよいよ日の目を見る時が来た。

dekuo-03.hatenablog.jp


2.3 ソーラーパネルで電力を賄うには

ソーラーパネルは、昨年秋に検討をした。その際、一時蓄電用にエネループニッケル水素電池を用いたのだが、繰り返し中途半端な充電をしたためか、途中でメモリ効果らしき現象が起き、うまく充放電できなくなってしまったため、頓挫していた。

dekuo-03.hatenablog.jp

今回はどうするかというと、記事には書いていないが、別途、リチウムイオン電池を使った系を検討し他結果うまく稼働しそうな手ごたえを得られたので、ソーラーパネル発電+リチウムイオン電池で蓄電という構成を用いることにする。


2.4 実績をスマホ通知するには

リモート水位センサの定期通知で使用しているおなじみIFTTT+LINE Notify連携でいいだろう。あまりこだわらない。

https://dekuo-03.hatenablog.jp/archive/category/%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E6%B0%B4%E4%BD%8D%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0dekuo-03.hatenablog.jp


2.5 温度や湿度の計測

これは、適宜温度センサや湿度センサを使えばいいだろう。手持ち品でBME280があるのでそれで十分。


3. システム構成

上記のシステム要素を踏まえ、以下のようなシステム構成になる。

  • メインのマイコンは、手持ちのESP-WROOM-32が使う
  • 理想的なシステムは水道直結の給水系だが、室内 or ベランダとなると施工が厳しいので、一定期間分の水がためられるバケツのようなもの(図では水瓶)を用意し、1週間に一度バケツに給水という感じにする。チャンスがあれば、屋外で水道直結の系を実現してみたいが、今回はお預け。
  • 水瓶自体の水切れがわかるように、水位センサも付けることになるだろう


まとめ

植物の自動水やり器の構想を検討し、大まかなシステム構成が描けた。次回から、設計していく。