sousci’s diary

新しい事とモノ作りが好きです。日頃の趣味を発信していきます。

ケーブル癖取り器の製作

f:id:sousci:20180908092900p:plain:w240

はじめに

電化製品に囲まれた生活。特にモノ作りをやっている人は、ありとあらゆるケーブルが家中を這い、あたかも自室がジャングルではないかと錯覚するほどです。
几帳面な方は上手くケーブルを括るなりデスクの裏側に隠すなりで、綺麗に見える工夫をされていますね。

私は上記の対極の人間なので、辺りを見渡せばケーブルを見かけないことがない程度です。
使う頻度の高いケーブルはやはり手元にあってほしいですが、美観を損ねないように収まり良くいてほしいものです。

苦肉の策として、表に出ているケーブルはピシッと真っ直ぐにしようと思い、今回の製作に至りました。

ケーブル癖取り器の詳細

ケーブルにはある程度の柔軟性が持たせられていますが、過度に曲がった状態で保管されると、その曲がりが癖となって残るわけですね。
f:id:sousci:20180908094612j:plain:w240f:id:sousci:20180908095459j:plain:w240

癖を取るためには、その曲がった方向の逆に曲げれば良いわけですが、いちいち人力でやるのはスマートではないと思いました。
そこで見つけた発想のヒントはこれです。
http://www.howarequipment.com/images/products/wire_tooling/wire_straighteners/wire_straightener_sq_type_full.jpg

もともとは針金のような硬い金属棒を真っ直ぐにする装置のようですが、ケーブルは既に柔軟性があるので、敢えて曲げるという設計にしました。
そして、形になったものがこちら。
f:id:sousci:20180908094750j:plain:w480

2つのプーリによって、ケーブルを互い違いに曲げている感じです。

蓋もちゃんとできます。
f:id:sousci:20180908094722j:plain:w240f:id:sousci:20180908094648j:plain:w240

これを3往復くらい通せば、ケーブルが真っ直ぐになりました。
f:id:sousci:20180908095532j:plain:w480

終わりに

STLファイルを公開しますので、3Dプリンタをお持ちの方は是非これを使って頂き、ご家庭でケーブル真っ直ぐライフを送って頂ければ幸いです(?)
なお、ケーブルの傷み等の保証は受け付けませんので悪しからず。。。

github.com

ここまでお読み頂きありがとうございました。

スマート学習リモコンsRemo-R2が届いたので試してみた

f:id:sousci:20180825120304j:plain:w480

そもそも学習リモコンとは

学習リモコンとは、既存のリモコンの機能を代行できるように、赤外線の受信と送信ができる機能を持った汎用リモコンです。
動作の仕組みは、先般のArduinoリモコンと同じで、赤外線信号をコピーし同じものを出力することで家電を制御できます。
これがキチンとリモコンの形になって市販されているんですね。

スマートと名が付くだけあって、ネットワークに繋げて各種サービスと連携させることで、その利便性が更に高まるという、今どきのデバイスというわけです。

商品の紹介

今回購入したのがこちら。

2が発売されるということで、予約購入を行なっていました。(Amazonから発送のメールが来るまで注文したことを失念していました)
アプリで登録と設定を済ませれば、スマホがあらゆる赤外線リモコン代わりになります。

登録と設定もろもろ

流れとしては、

  1. スマホ用アプリのダウンロード
  2. sRemo用クラウド(sCloud)へのアカウント登録
  3. アプリからクラウドへログイン
  4. 本体とのネットワーク設定
  5. 赤外線データの登録

となります。
同封の紙(セットアップマニュアル)があるので、特に躓くこともなく完了しました。

1. スマホ用アプリのダウンロード

QRコードか、『sRemoR』で検索して、アプリをダウンロード
f:id:sousci:20180825123216j:plain:w240

2. sRemo用クラウド(sCloud)へのアカウント登録

アプリを開くと、いきなりsCloudへのログイン画面が出るので、適当に新規ユーザ登録を行う。
f:id:sousci:20180825124212j:plain:w240

3. アプリからクラウドへログイン

ユーザ登録時の情報でクラウドへログイン。
パスワードの使い回しはイケません。

4. 本体とのネットワーク設定

ログインすると、ネットワークのモード選択を聞かれます。
カスタムモードでなくても屋外からのリモコン操作は可能なので、今回はスマートモードで行いました。
f:id:sousci:20180825123942j:plain:w240

画面に表示される通り、設定を進めていきます。
次は、sRemo-R2が接続されるSSIDの情報を登録してやります。
これは普段スマホとかを繋げているルータの情報です。
f:id:sousci:20180825124506j:plain:w240

次にsRemo-R2本体へ、スマホWi-Fi接続します。
SSID名は『sRemoSet』、初期パスワードは12345678です。
f:id:sousci:20180825124515j:plain:w240

sRemo-R2に名前をつけます。
f:id:sousci:20180825140711j:plain:w240

これでネットワークと本体の設定は完了です。
f:id:sousci:20180825141215j:plain:w240

5. 赤外線データの登録

試しに照明をつける信号を登録してみます。
上のアイコンから照明を選ぶと、95番以降の登録ブロックが表示されます。
実際のリモコンのレイアウトに合わせて設定すると良いかも知れません。

左上のメニューを押す。
f:id:sousci:20180825141211j:plain:w240

リモコン設定(モード)を押す。
f:id:sousci:20180825142359j:plain:w240

登録したいボタン番号を押します。ここでは、名前やボタン色の設定ができます。
完了したら、下の設定ボタンを押す。
f:id:sousci:20180825142402j:plain:w240

手動で学習を押す。
f:id:sousci:20180825142406j:plain:w240

後は本体に正面からリモコンを向けて、赤外線信号を送ります。
成功すれば、そのまま登録が完了します。
f:id:sousci:20180825142354j:plain:w240

登録したボタンを押して、家電が動けば登録完了です。
また、スマホWi-Fiを切ってキャリア回線からも操作できる(=屋外から)ことを確認しましょう。

おわりに

おうちハックで家電の制御を色々やりましたが、やはり市販品の完成度は高いです。
アプリで手軽にできるので、ある種のスマートハウスらしさがあります。

この赤外線信号を独自のフォーマットで登録すれば、家電に限らずラズパイクローラの制御とかにも応用できそうですね。

ここまでお読み頂きありがとうございました。

定電流(CC)駆動回路のあれこれ

f:id:sousci:20180823171900j:plain:w480

電流はとっつきにくい?

電気回路において電流より電圧の方が馴染みがある、というのは案外多いのではないでしょうか。
オームの法則の通り、電流と電圧の関係は背中合わせなのですが、『電圧があるから電流が起こる』というイメージが一番理解しやすいのかなと思っています。

直流安定化電源の中には、電圧を調整するC.V.と書かれたツマミの他に、C.C.という機能がついているものがあります。
C.V.(Constant Voltage: 定電圧)に対して、C.C.(Constant Current: 定電流)ですね。

電圧さえ得られれば良いという使い方であれば使う機会のない機能ですが、定電流駆動以外にも保護動作としても使える便利な一面もあります。
適当な負荷に電圧を印加してC.C.ツマミを絞ると、ある点で出力電圧が下がります。
これは、負荷に流れる電流を徐々に制限していき、その制限値が実負荷を下回ると、電圧を自動的に下げて電流を制限値に合わせるという動作をしているためです。

負荷抵抗を変化させても、この電流値は変化せず、その代わり電圧が上下します。
回路の設計ミスで大電流が流れてしまう時でも、C.C.を適切に絞っていれば部品が焼けるのを防げる場合もある、というわけですね。

定電流回路のメリット

定電流駆動の何が嬉しいか、LEDの点灯回路を例に紹介します。
もちろん、他にも色々活用できるシーンはたくさんあります。

LEDはダイオードの一種ですから、順方向電圧の特性は下のダイオードのグラフに同じです。
f:id:sousci:20180823153803j:plain:w240

「見たことある!」や「ウッ…じんましんが…!」という声が聞こえてきそうですね。
グラフの立ち上がりの電圧はシリコンダイオードで0.6~0.7 V程度ですが、LEDはその種類にもよりますが2.1~3.7 V程度になります。

ポイントとなるのは、立ち上がり後の急峻な順方向電流の増加です。電圧がほんの0.1 V変化するだけで、電流は大きく変化することが分かります。
これが、LEDを光らせるにあたって障壁になる特性なんですね。

LEDの輝度は電流にほぼ比例しますから、複数のLEDを並列に繋いで電圧源に接続すると、その特性のバラツキにより輝度が揃わないどころか、過剰な電流により寿命を縮めかねない恐れがあります。
ですので、LEDを複数個光らせるときは、直列接続して全てのLEDに同じ電流が流れるようにするか、今回紹介する定電流回路をかませる必要があるのです。

電圧-電流の特性のグラフが急峻なときは、状況に応じて定電流or定電圧駆動させるというのは、回路の安定性を高める上でのテクニックの1つです。

定電流回路あれこれ

お手軽なものは、

  1. 定電流ダイオードを使う

  2. J-FETの自己フィードバックを使う

  3. バイポーラトランジスタを使う

の3つですね。
他にも精度が得られるOPアンプを使った定電流回路がありますが、実際に使ったことはありません…

1. 定電流ダイオードを使う

http://akizukidenshi.com/img/goods/C/I-00186.jpg

一番手っ取り早い方法です。所望する電流値の定電流ダイオードを回路に直列に接続するだけです。
f:id:sousci:20180823170844p:plain

とは言っても、特性のばらつきで正確な電流値が得られなかったり、電源電圧の範囲は広く取れないデメリットがあります。

2. J-FETの自己フィードバックを使う

私が定電流回路で一番良く使う方法はこれです。以下に回路を示します。
f:id:sousci:20180823173757p:plain:w240

J-FETの動作原理は飛ばしますが、電流が流れると可変抵抗によりFETのゲートに逆バイアスがかかり、電流が制限される回路です。
可変抵抗を絞って0 Ωにすると、J-FETは貫通状態となります。
このとき電流は最大となり、その値はJ-FETにより異なります。

可変抵抗でゲート- ソース間に電位を生じさせることで、電流をピンチ(制限)していくんですね。

3. バイポーラトランジスタを使う

堅実(?)な方法です。
バイポーラトランジスタの電流増幅作用を利用します。

f:id:sousci:20180823183803p:plain:w240

出力電流の計算式は以下の通りですが、期待するほど精度は出ません。
またV_{BE}は0.6 Vとしています。

I_{out}=\frac{V_R - 0.6}{R_3}

V_R=(\frac{R_2}{R_1 + R_2})V_{CC}

ここまでお読み頂きありがとうございました。

おうちハック記録(その3) - ラズパイクローラの製作 -

f:id:sousci:20180821075135j:plain:w480

クローラって?

f:id:sousci:20180821075102p:plain:w480

クローラー (Crawler)は日本語で言うと、無限軌道車の意味です。
馴染みのある言い方をするとキャタピラーですが、こっちは登録商標なんですね。
乗用車の車輪に無限軌道と呼ばれるベルトをつけて、接地面積が広くなるようにすることで、悪路走破性が格段に向上します。

今回はこいつを使って、自宅内を走り回しながら動画をストリーミングするのが目的です。

大まかな構成を考える

足回りはクローラ、車輪はモータで回すので、モータドライバも必要です。
電源はモバイルバッテリ、前方にWebカメラ、何より大切な頭脳となるラズパイですね。

大体の商品はネットで調達しました。以下に列挙します。

1. Raspberry Pi 3 Model B

www.switch-science.com

2. モバイルバッテリ

KYOKA 薄型 軽量 大容量 11200mAh LEDライト付き 持ち運び急速充電器USBスマホ モバイルバッテリー iPhone/iPad/Android各種他対応 (ブラック) https://www.amazon.co.jp/gp/product/B073WVPTQR/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

3. クローラ部

タミヤ 楽しい工作シリーズ No.100 トラック&ホイールセット (70100) https://www.amazon.co.jp/gp/product/B001VZJDY2/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

タミヤ 楽しい工作シリーズ No.168 ダブルギヤボックス 左右独立4速タイプ (70168) https://www.amazon.co.jp/gp/product/B001Q13BIU/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

4. Webカメラ

Logicool ロジクール HD プロ ウェブカム c920r https://www.amazon.co.jp/dp/B0158F77Z2/ref=cm_sw_r_tw_dp_U_x_QK1EBb9N6ENNH

5. モータドライバ

ELEGOO L298NデュアルHブリッジステッパーDCモータドライバシールド拡張ボードArduinoDIYスマートカーロボットMega UNO https://www.amazon.co.jp/gp/product/B072DVK87Q/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1

組み立て

色々な組み立て方ができますが、無難に安定しそうな構造を考えて作りました。

  1. 基本の足回りにギアボックスとWebカメラを固定します。
    f:id:sousci:20180821113114j:plain:w480

  2. その上にモバイルバッテリを載せます。
    後からいじれるように、固定はあえてマジックテープにしました。
    f:id:sousci:20180821113147j:plain:w480

  3. 更にその上にラズパイとモータドライバを載せました。
    f:id:sousci:20180821113213j:plain:w480

色んな角度から。

f:id:sousci:20180821112627j:plain:w240f:id:sousci:20180821112654j:plain:w240

f:id:sousci:20180821112727j:plain:w240f:id:sousci:20180821112856j:plain:w240

f:id:sousci:20180821112957j:plain:w240f:id:sousci:20180821113028j:plain:w240

配線

WebカメラはUSB接続で、ラズパイのGPIOは全部で4本がモータドライバへ繋がっているだけなので、とてもシンプルなものです。
電源はUSB端子を少し改造して、ラズパイとモータドライバにそれぞれ分配する形をとっています。(上の写真を参照してください)
f:id:sousci:20180821120744p:plain:w240f:id:sousci:20180821120747p:plain:w240

Amazonの商品説明欄の画像をお借りしました。8-11pinが2つのモータを正転・逆転させるよう振り分けられています。
どのピンがどっちのモータをどっち方向に回すのかパッと分からないので、とりあえず繋いでみてピンごとの挙動を見るのが、ある意味確実かもしれません。
使用したラズパイのGPIOピンは、
35(GPIO19)
36(GPIO16)
37(GPIO26)
38(GPIO20)
です。これをモータドライバのInputピンへ接続します。
なお、GNDは電源で共通しているので、追加で接続する必要はありません。

ハードウェア側の準備はこれで完了です。

MJPG-Streamerの導入

ラズパイクローラの目玉機能でもある、映像ストリーミングを実現するための実装をしていきます。
今回はMJPG-Streamerを導入しました。お手軽さ第一なのがバレバレですね。

参考させて頂いたサイトはこちら。
第8回: MJPG-streamerのインストール – Blue-black.ink

こちらのBlue-black.inkさんのサイトでは、~/tool/にインストールしていますね。場所はお好みで結構です。
私はホームディレクトリ直下にmjpg-streamerのディレクトリを置いて(~/mjpg-streamer)、その中で展開しました。

次は、ラズパイの起動時に、MJPG-Streamerが自動起動するように、スクリプトを記述します。
前回のおうちハック記事(2)に追記した、スクリプトを記述しrc.localでこれを読む手法を使用します。
sousci.hatenablog.com

~/tool/startup_script.shを作成し、以下の内容で書込みします。

gist.github.com

※IDとパスワードは適宜変更してください

スクリプトを呼ぶrc.localの中身↓
gist.github.com

これで、MJPG-Streamerの導入は完了です。
テストの為にラズパイを再起動して、ブラウザから[IPアドレス]:8080にアクセスして、以下の画面が出ればOKです。
f:id:sousci:20180821155345p:plain:w480

試しに左のStreamをクリックし、ストリーミング映像を見てみましょう。
f:id:sousci:20180821155518p:plain:w480

補足になりますが、
f:id:sousci:20180821164321p:plain

の部分を引用すれば、自前のhtmlやphpのページに、このストリーミング映像を埋め込むことができます。
これについては、次の見出しで使用します。

GPIOでモータ制御する

いよいよラズパイクローラを操作する画面の作成です。
ここでもapache2でサーバを建てて、ボタンが押されるとGPIOが制御されるようにするページを作成します。
また、ストリーミング映像とボタンは同一のページにある方が使い勝手が良いので、これを実現できるようにします。

Apache2のサーバの建て方は前回記事の通りなので省略させて頂きます。
場所は同じく/var/www/html/になります。ホームディレクトリからは、

$ ../../var/www/html/

ですね。

ここに、MoveTrackbelt.phpというファイルを作成し、以下の内容で書込みします。

gist.github.com

f:id:sousci:20180821163451p:plain 前の見出しで補足したのが、この部分です。ここのIPアドレスはラズパイに設定したIPアドレスに合わせる必要があります。
また、モータドライバの挙動によって、0, 1の組み合わせは適宜変更してください。
ブラウザやスマホから、[IPアドレス]/MoveTrackbelt.phpでアクセスし、下のような画面が出ればOKです。
f:id:sousci:20180821163344j:plain:w240

これで全ての準備が完了しました。

いざ発進

映像を送って貰いながら、これを頼りに進行方向を制御できるのはとても楽しいですね。
床面が走行可能な程度に片付いていれば、家中カメラが見に行くことができます。
モバイルバッテリは10,000mAh以上のものを載せましたが、連続稼働時間は3時間程度でした。

これが自律走行可能になればもっと楽しみが増えますね。どんどん改良していきたいです。

ここまでお読み頂きありがとうございました。

おうちハック記録(その2) - 赤外線信号で家電を制御 -

f:id:sousci:20180820032322j:plain:w480

赤外線信号とはなんぞ

一般的に普及している家電の多くにはリモコンが付属しており、ユーザはその場から動かずとも家電を操作することができます。
この赤外線リモコンから発射される赤外線信号の中身は、各メーカが公表しているはずもなく(公表しても誰が使うんでしょうか…)、おうちハッカーとしては、まずこの壁を乗り越えることになります。

【参考】赤外線信号のフォーマットについて
このサイトがとても詳しく、かつ簡潔に書かれていて勉強になります。
赤外線リモコンの通信フォーマット

幸いにも、世界には家電を操作するリモコンの赤外線信号を、なんとかコピーしようと試行錯誤した方々がたくさんいるので、その成果の恩恵を受けさせて頂こうと思います。

完成ビジョン

ざっくりとした、完成ビジョン(制御の流れ)は以下のようになります。

  1. スマホからラズパイサーバにアクセスし、ブラウザ上に表示されたボタンを押す
  2. ボタンが押されると、ラズパイのGPIOが動き、そのピン状態をArduinoに渡す
  3. Arduinoは、ピン状態に応じて赤外線信号を送出
  4. 家電が動く

1.ラズパイサーバを建てる(1/2) - Apache2の導入とページの作成 -

ラズパイでサーバを建てるとなると、Apache2の導入が手軽です。
Apache2の導入については、色んな人が記事を書いているので、ここでの紹介は省きます。

Apache2の導入が完了したら、ラズパイに振ったIPアドレスをブラウザのアドレス欄に打ってアクセスします。
f:id:sousci:20180820102745j:plain:w480

このページ[index.html]の場所は/var/www/htmlです。ホームディレクトリからここへ移動するには

cd ../../var/www/html

とコマンドを打ちます。
このディレクトリ内に、家電を制御するボタンを並べたページを置きます。

sudo vi HomeSwitch.php

で、新規ファイル[HomeSwitch.php]をviで作成します。
下記をそのまま貼り付けて、
gist.github.com

viのコマンドモード(escキー)に切り替え、

:wq

で書込&viを終了させます。
ブラウザのアドレスバーに[ipアドレス]/HomeSwitch.phpと打ち込み、
f:id:sousci:20180820113525j:plain:w480

このページが表示されれば成功です。

2.ラズパイサーバを建てる(2/2) - GPIOの制御 -

ラズパイにはGPIO用のピンが搭載されており、/sys/class/gpio/の下にディレクトリを生成したり値を投げ込むことによって、ピンの状態を変化させることができます。
基本的な使い方は、ツール・ラボさんの記事がとても参考になります。
tool-lab.com

実は、先ほどの[HomeSwitch.php]には、既にこのディレクトリを操作する内容が記述されており、ボタンを押すとラズパイのGPIOが動く仕組みとなっています。
起動時のみ、GPIOを使うという初期設定が必要なため、下記のコマンドを実行します。
gist.github.com

ざっくりと説明すると、8ch分のGPIOをOUTPUTとして使用する宣言をして、状態をLOWにしておく。という内容です。

追記
ラズパイの/etc/rc.localに、『起動時に走らせたいスクリプト』を書いておくと、上記の手間が省けます。
お手軽で有効な方法なのでご紹介します。

ホームディレクトリ直下に、起動時に走らせたいスクリプトを書いたファイルを置くことにします。
今回は、toolという名前のディレクトリに、startup_script.shというスクリプトファイルを作成しました。

$ mkdir tool

$ sudo vi tool/startup_script.sh

gist.github.com

次に、rc.localにこのファイルを実行するよう追記します。

$ cd ../../etc/

/etc $ sudo vi rc.local

以下をexit 0 の直前に追加してください。
gist.github.com

これで完了です。

3.赤外線リモコンの代わりを作る(1/2) - Arduinoで赤外線信号をデータ化 -

モノ寄りの電子工作は、Arduinoが便利です。今回は赤外線リモコンをArduinoで実現するためのライブラリを使用しました。

github.com

GitHubからZIPをダウンロードして、Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「.zip形式のライブラリをインストール」します。
インストールが成功したら、「ファイル」→「スケッチ例」→「IRremote」→「IRrecord」を選択してスケッチを起動します。
これは、赤外線リモコンから出る信号をデータとしてシリアルモニタに表示するスケッチです。

赤外線信号を受信するので、そのためのパーツも必要です。今回は秋月で購入できるポピュラーな赤外線受信モジュールを使いました。
http://akizukidenshi.com/img/goods/C/I-01570.jpg http://akizukidenshi.com/catalog/g/gI-01570/

正面向かって左からVo, GND, Vccです。これをそれぞれArduinoの11pin, GND, 5Vに繋ぎます。
f:id:sousci:20180820022037j:plain:w480

スケッチを見てみるとボタン用のピンとして12番が割り当てられていますが、手軽に動作させるなら、GNDと接続しておけばOKです。
ボーレートを9600bpsに設定し、そのまま記録したい赤外線リモコンを受信モジュールに向けながら、ボタンをプッシュ!
すると、シリアルモニタに何やら数字の羅列が表示されます。
f:id:sousci:20180820022840j:plain:w480

頭につくm, sは信号のHIGH, LOWを表しているようです。数字はその状態の長さですね。
赤外線リモコンの信号は、ON-OFFの長さの違いにより情報を送っているわけです。
これを再現するには、ここで得られたデータの通り、赤外線LEDを光らせればできるはずです。

赤外線リモコンの代わりを作る(2/2) - Arduinoで赤外線信号を送出 -

先ほど採った赤外線信号のデータを使って、次はArduinoに同じ信号を送らせてみましょう。
同様に、「ファイル」→「スケッチ例」→「IRremote」→「IRsendRawDemo」を選択してスケッチを起動します。

スケッチには既に何かのデータが書き込まれていますね。
f:id:sousci:20180820023907j:plain:w480

irSignalという配列が実際のデータです。ここを所望のデータ(さっき採ったもの)に書換えましょう。
配列はコンマ区切りなので、さっきのデータのフォーマットは手直しが必要ですね。
メモ帳を起動し、元データを貼り付けたら、Ctrl+hで置換の画面を表示し、sとmを,(コンマ)にしてやりましょう。
「IRrecord」のスケッチをいじって、初めからコンマ区切りになるようにしてもGoodです。

赤外線LEDは3番ピンに直接接続します。キャリア周波数38kHz(デューティ1/3)となるようになっていますので、電流制限抵抗は不要です。
準備ができればArduinoに書き込んで、LEDを家電に向けます。動きましたか?
動かなければ、赤外線LEDがちゃんと光ってるか、データを取り直すなどしてみましょう。

3.ArduinoRaspberry Pi連結の下ごしらえ(1/2) - ピンの状態変化で送出 -

前ステップで、Arduinoによって赤外線信号を送出し、家電を操作することができるようになりました。
次は、この赤外線信号の送出のキックとなる動作(ラズパイのピン変化)に対応するスケッチを書きましょう。
gist.github.com

デジタルピンの4から11までの8本をINPUTに設定し、このピンの状態が変化すれば、それに対応した赤外線の信号が出るというスケッチです。
ピン1つにつき、1つの赤外線信号を登録するので、最大8個までとなります。

試作という言い訳をしていますが、ゆくゆく3-8ラインデコーダやもっとテクニカルな手法を使って拡張していければ…。

3.ArduinoRaspberry Pi連結の下ごしらえ(2/2) - ジャンパ接続-

下の表の通り、Arduinoとラズパイをジャンパ線で繋いでいきましょう。

Ardruino Raspberry Pi 対応する赤外線データ
4 31(GPIO6) irSignal1
5 32(GPIO12) irSignal2
6 33(GPIO13) irSignal3
7 35(GPIO19) irSignal4
8 36(GPIO16) irSignal5
9 37(GPIO26) irSignal6
10 38(GPIO20) irSignal7
11 40(GPIO21) irSignal8

https://yazdkit.com/wp-content/uploads/2018/07/pi-gpio.png

繋いでみると、ぐちゃぐちゃになりました。
f:id:sousci:20180820032322j:plain:w480

これで、準備は全て完了です。

4.いざ実戦

部屋の照明のON-OFF機能のみなので、壁スイッチ風にしてみました。
f:id:sousci:20180820032335j:plain:w480

おわりに

ラズパイでサーバを建てて、実際に家電を操作することが実現できました。
次は同様のテクニックで製作した、ラズパイクローラを紹介します。

ここまでお読み頂きありがとうございます。

おうちハック記録(その1) - LAN環境構築 -

おうちハック

正式な名前ではないですが、巷では話題になっているおうちハックというものがあります。
IoTブームに拍車がかかったことで、Raspberry Piなどの超小型ワンボードコンピュータが普及し、手軽にその恩恵を受けられるものとして、そのIoTを住環境に取り込んでいこうぜ!というやつです。

その名の通り、おうち(家)をハック(技術でより良く?)するわけです。

できること

おうちハックでできることはとても幅広いです。アイデアと少しの技術があれば、何でもできると考えています。
下に一例(今後やっていきたいこと)を挙げてみます。

  • 赤外線リモコンの代わりとなり、家中の家電をスマホ1つで制御できる
  • センサで室温などを監視。暑or寒かったりすると、自動的に家電を制御してくれる
  • 可動式カメラで家の中の監視
※屋外からでも出来るようになると、もっと楽しい!?!?

下ごしらえ(1/2) - 無線LAN環境 -

おうちハックと言っても、最近のラズパイであれば無線機能がオンボードされていますから、自宅に無線LAN環境があれば自由度は非常に高く、保守性もGoodです。
これから進めるおうちハックは、基本的にLANを通してできるものを作っていきます。

我が家は若干縦に長く、かつインターネット回線のコンセントがその端っこにあるので、無線ルータを2台用意し、コンセント側に1台、PLC(電源線通信)で反対側に伸ばした先にもう1台というヘンテコな環境になっています。
自動接続設定が有効なホストなら、どちらもSSIDとパスワードを同じにしておけば、電波の強い方に勝手に接続してくれます。
ラズパイZEROを使うと、案外電波が届かなかったり不安定になったりすることが良くあります…

下ごしらえ(2/2) - SSHで接続 -

おうちハックで使うデバイスのメインはラズパイなので、コマンドラインのみで大体のことができます。
ラズパイ用OSのRaspbianをダウンロードし、 www.raspberrypi.org

SDカードに書き込みます。
初めこそモニタとキーボードを接続して、無線の設定やSSHの有効化が必要になりますが、これさえ終えれば後はすべてSSHで遠隔から中身をいじれるようになります。
私は無線の設定ツールとしてwicd-cursesを使っています。固定IPアドレスの設定や自動接続の設定などが一遍に行えるのでオススメです。

sudo apt-get install wicd-curses

LAN環境に合わせてIPアドレスを設定し、無事に無線接続できれば、PCからSSH接続してみましょう。TeraTermからでもコマンドプロンプトからでもOKです。
コマンドプロンプトの場合は、

ssh -l [ユーザ名] [IPアドレス]

です。macのターミナルも同様にできます。

ログインできれば完了! f:id:sousci:20180819141941j:plain:w480

おわりに

今回はここまでで、次回からは実際に赤外線信号で家電を制御したり、ラズパイを載せた可動式カメラを製作して紹介します。

ここまでお読み頂きありがとうございます。

ハーバリウム用イルミネーションの製作

f:id:sousci:20180816080323j:plain:w480

ハーバリウムとはなんぞ

みなさんはハーバリウムというものをご存知でしょうか。

Wikipedia先生によると、

植物学において保存された植物標本の集積(植物標本集)を指す

以外にも

インテリア装飾性の高いガラス瓶とシリコンオイルや流動性パラフィンなどを用いて、鑑賞目的で製作された植物標本

とも書かれています。後者のように、鑑賞目的で作られるハーバリウムが静かに人気のようです。 ハーバリウム - Google 検索

今回、我が家に何故かこのハーバリウムが転がっていたため、そのまま飾るのも忍びないので、LEDでイルミネーションしてやろうと考えたのがキッカケです。
この記事が皆さんの素敵なLEDイルミネーションライフに繋がれば幸いです(?)

f:id:sousci:20180816060636j:plain:w240
実際のハーバリウム。なんの花でしょうね。

構想を練る

実際にどういった感じで作るのか、使用環境はどうかを考慮して、以下に落ち着きました。

  • ハーバリウムが2本あるので、2つのフルカラーLEDの色が滑らかに変化するよう駆動させる
  • 玄関に置くので電源は電池orモバイルバッテリー
    • 制御はマイコンではなくアナログ回路で完結したい
  • ケースは最近買った3Dプリンターで出力したい

以上を踏まえ、駆動回路は3組の非安定マルチバイブレータ回路(Lチカができるトランジスタ2石のやつ)で決定しました。 ガワはFusion360でサクッと作成。 f:id:sousci:20180816062546j:plain:w480

回路を作る

ここからが本題です。

フルカラーLEDは秋月で買った(と思われる)4本足のやつです。 http://akizukidenshi.com/img/goods/3/I-02476.jpg

カソードコモン(LEDのマイナス側が3本括られた足)になっていて、コモン以外にそれぞれ赤・緑・青に光る足が生えてる感じです。 これらをうまく組み合わせてフルカラー駆動させるってわけですね。

こいつを2個分フルカラーで駆動させる為に、2端子がそれぞれON-OFFが繰り返される非安定マルチバイブレータ回路を3組作るっていう思惑です。

回路はこんな感じになります。EAGLEを初めて使ってみました。 電源は省略されていますが、各ブロックの上の横線が+、下の横線が-と考えてください。 f:id:sousci:20180816082948p:plain:w480

ゆるっと回路の説明します。
3組とも回路構成は一緒で、フルカラーLEDの色によって適切な電流が若干異なるので、電流制限抵抗の値のみ変えています。
真ん中の部分が非安定マルチバイブレータ回路です。一番上の組で言うR2とC1、R3とC2の値により、2石のトランジスタのON-OFF周期が変わります。今回は100 kΩと100 μFなので、大体1周期(ON状態からOFFになって、またONになるまで)が14秒程度になります。
これは、時定数という言葉がキーになります。興味があればググってください。

マルチバイブレータ回路から左右に伸びているのは、積分回路と呼ばれるものです。
トランジスタのON-OFFにより、コレクタ電位は矩形波を示すので、これではイルミネーションの光がじんわりと変化しません。
この回路を挟むことで、電圧の変化を滑らかにし、蛍の光が尾を引くような光り方をさせることができます。

両端のLEDが接続されている部分はあまり見かけないかも知れません。今回の為に工夫したのはこの部分になります。
フルカラーLEDがカソードコモンなので、よく使うNPN型トランジスタだと、エミッタ側にLEDを接続する形になるため、ベース-エミッタ間電圧を安定させられないという問題が発生します。
ここではPNP型トランジスタを使って解決しています。コレクタ側にLEDを接続するので、回路図のようにしてやればベース-エミッタ間電圧はLEDの順方向電圧の影響を受けることはありません。

いよいよ実装

実装はスピード勝負です。頭が冴えている内にササッと作るのがベターです。
今回も夜なべして作りました。 f:id:sousci:20180816073912j:plain:w480

持ち合わせた部品なので、見た目がバラバラですが…
これを3Dプリンタで出力したケースに収納します。

電源はどうしたかと言うと

電池だといちいち外したり充電器にセットしたりと面倒ですよね。
そんな怠惰な心が、モバイルバッテリーという選択を後押ししました。

モバイルバッテリーを色々買い漁っては引き出しの肥やしにしている人間なのですが、どれも出力電流が微弱だと自動的にOFFになります。今回はこの機能が引っかかりました。
色々調べている内に、ボタン操作で電源オンオフできる機能があるモバイルバッテリーを見つけたので、ご紹介しておきます。

f:id:sousci:20180816075036j:plain:w480

https://www.amazon.co.jp/dp/B018KD0D82/ref=cm_sw_r_tw_dp_U_x_S2kDBbM3ZB2X4

IoT対応と謳っているので、安心して色んな用途に使えますね。容量当たりの値段の高さがネックですが。 f:id:sousci:20180816075625j:plain:w480

ケースに差し込んだらUSBケーブルが刺さって給電されるようにしました。

f:id:sousci:20180816075709j:plain:w480

とてもかわいい。

さあ実戦

明るいと全然目立たないですが… f:id:sousci:20180816080358j:plain:w480

暗くすると、我ながら良い感じ。 f:id:sousci:20180816080323j:plain:w480

こんな綺麗な色にもなります。 f:id:sousci:20180816080424j:plain:w480

おわりに

ArduinoRaspberry Piが流行って、LEDの制御もプログラムを書けばササッとできてしまう便利な時代ですね。
このようなアナログな手法を使っても、あんまり注目されないと思います。
しかし、定数を変えたり部品のバラツキで発光周期が変わるので、この世に2つも作れないオリジナルのLEDイルミネーションでもあります。ロマンを感じますね(?)

デジタルの世界に疲れた方、たまには半田ごてを持ってアナログな光に癒やされてみてはいかがでしょうか。

ここまでお読み頂きありがとうございました。