人感センサーでUSB電源をスイッチする
洗面所の蛍光灯がすぐ切れます。電球ならLED電球に付け替えれば良いのですが、蛍光灯は管だけ交換みたいにお手軽にはいきませんね。
そんなわけで、USB電源のLED照明を追加で付けていました。
ルートアール 30灯 USB LED バーライト スイッチ付き 昼光色 RL-BAR30D
- 出版社/メーカー: ルートアール
- メディア: エレクトロニクス
- この商品を含むブログを見る
しかしケーブルの途中にスイッチが付いてブラブラしているので、ちょっと使いにくいです。センサーで自動点灯できるといいな。
センサーどれにしよう?
赤外線パッシブ
HiLetgo® 3個セット HC-SR501人体赤外線感応モジュール 人体の赤外線の感応器 [並行輸入品]
- 出版社/メーカー: HiLetgo
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
超音波
HiLetgo 3個セット HY-SRF05超音波距離センサモジュール測定センサモジュール Arduinoに互換 [並行輸入品]
- 出版社/メーカー: HiLetgo
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
電波
KKHMF マイクロ波レーダーセンサーRCWL-0516スイッチモジュールヒューマンインダクションボード検出器
- 出版社/メーカー: Apple Trees E-commerce co., LT
- メディア:
- この商品を含むブログを見る
使うならこのあたりが定番でしょうか。
超音波は比較的正確な距離を測れますが、動かすにはマイコンが必要だし距離精度は必要ないので除外します。
レーダー(電波)も評判は良さそうですが、今回は赤外線タイプを使います。
ボリュームで感度や点灯時間が簡単に調整できるのが良さそうです。
回路図
赤外線センサーの出力で、チップの MOSFET をドライブするだけです。
基板図
のせる部品が少ないので、ほとんどベタGND。
Micro USB は、パターンごともげやすいので、スルーホールタイプを使用します。端子のハンダ付けが難儀すると思われるのでSMDパッドも大きめに修正します。
基板実装
面
裏は部品なし。
センサー取り付け。スペーサーは M2 の 11mm です。
ケースのモデリング
ジャストフィット!
フックの強度確保のため、フタは立てて造形します。
完成
使用感
センサーの感度が高すぎて、洗面所の前の廊下を通るだけで点灯してしまいます。
感度ボリュームをめいっぱい下げてもダメなので、センサーのレンズ左半分にマスキングテープを貼りました。
「どうせ消費電力小さいし」と、今までこのLED照明を常時点灯で使っていたのですが、アダプター(USB充電器)がかなり熱くなり気になっていました。
センサー化によってアダプタが熱くならなくなったのが一番のメリットかな?
シリアルモニターを作る
Arduinoなどのマイコンの動作状態をパソコンのモニタに表示させたい場合、大抵はシリアルモニタを使いますでしょうか。
作ったものを他人に使ってもらう場合、それだけのために Arduino IDE をインストールしてもらうのも勝手が悪いですよね。使い方の説明もしなきゃならないし。
一般的には TeraTerm かな?
それはそれで、ポートの設定とか説明しなければなりません。
というわけで、シンプルなシリアルモニターを作ってみます。開発環境は Visual Studio Community 2017、言語は Excel のマクロでおなじみの VB にしました。
サンプルコードも豊富でわかりやすかったサイトがこちら。
VB.NETでシリアル通信を行う
送信機能は省略しました
受信した文字列をテキストボックスに羅列するだけのアプリです。
接続済のポートと事前に設定したボーレートを表示して起動するので、接続ボタンを押すだけで使えます。
ハマったところ
切断
ボタンで SerialPort1.Close()
をすると、アプリが固まって反応しなくなりました。
検索すると、Invoke
を BegenInvoke
にすると良いとか、 BufferSize
を大きくすると良い、という記事や投稿がありました。しかし、試してみるも効果なし。
受信した文字列をテキストボックスに追記するところで固まっているようだったのでテキストボックスのプロパティをいじりまわしたところ、ScrollBars
を None
から Vertical
にしたら正常に動くようになりました。
もうちょっと機能を入れてみる
ステッピングモーターの位置を方位磁石のように表示する機能を付けました。
モーターの動作は、Arduinoにプログラムされています。
Arduinoがステッピングモーターを動かすごとにステップ位置をシリアルで送ってくるので、1周のステップ数から計算してモーターの角度を表示しています、
位置を示す赤い矢印は、外形の座標を計算してプロットしています。学校で習った三角関数が試験以外で役に立ったレアケース。
グラフを描く部分
Dim deg As Single = 0 'degree Dim pos As Integer = 0 'position Dim spr As Integer = 0 'steps per round Dim offset As Integer = 0 'offset for zero adjust Private Sub DrawCompass() Dim canvas As New Bitmap(PictureBoxCompass.Width, PictureBoxCompass.Height) Dim cw As Integer = canvas.Width - 1 Dim ch As Integer = canvas.Height - 1 Dim g As Graphics = Graphics.FromImage(canvas) '図の外形円を描く g.DrawEllipse(Pens.Black, 0, 0, cw, ch) '図の目盛りを描く For d As Integer = 0 To 360 Step 15 Dim l1 As Integer = 40 'primary leader line length Dim l2 As Integer = 10 'secondary leader line length Dim dxa As Integer = (cw / 2 - 1) * Math.Sin(CSng(d) / 180.0 * Math.PI) + 0.5 Dim dxb As Integer = If(d Mod 90 = 0, cw / 2 - l1, cw / 2 - l2) * Math.Sin(CSng(d) / 180.0 * Math.PI) + 0.5 Dim dya As Integer = (ch / 2 - 1) * Math.Cos(CSng(d) / 180.0 * Math.PI) + 0.5 Dim dyb As Integer = If(d Mod 90 = 0, cw / 2 - l1, cw / 2 - l2) * Math.Cos(CSng(d) / 180.0 * Math.PI) + 0.5 Dim sl As Point() = { New Point(cw / 2 + dxa, ch / 2 + dya) _ , New Point(cw / 2 + dxb, ch / 2 + dyb) } g.DrawPolygon(Pens.Black, sl) Next '中心点を書く g.FillEllipse(Brushes.Red, CSng(cw / 2 - 4 + 0.5), CSng(ch / 2 - 4 + 0.5), 8, 8) If spr <> 0 Then 'マーカーを描く Dim aw As Integer = 5 'Arrow Width Dim al As Integer = 40 'Arrow Length Dim ao As Integer = 2 'Arrow Offset Dim an As Integer = -4 'Arrow Notch Dim dx1 As Integer = (cw / 2 - ao) * Math.Sin(deg / 180.0 * Math.PI) + 0.5 Dim dx2 As Integer = (cw / 2 - al) * Math.Sin((deg + aw) / 180.0 * Math.PI) + 0.5 Dim dx3 As Integer = (cw / 2 - al - an) * Math.Sin(deg / 180.0 * Math.PI) + 0.5 Dim dx4 As Integer = (cw / 2 - al) * Math.Sin((deg - aw) / 180.0 * Math.PI) + 0.5 Dim dxe As Integer = (cw / 2 - ao) * Math.Sin((deg + 180.0) / 180.0 * Math.PI) + 0.5 Dim dy1 As Integer = -(ch / 2 - ao) * Math.Cos(deg / 180.0 * Math.PI) + 0.5 Dim dy2 As Integer = -(ch / 2 - al) * Math.Cos((deg + aw) / 180.0 * Math.PI) + 0.5 Dim dy3 As Integer = -(ch / 2 - al - an) * Math.Cos(deg / 180.0 * Math.PI) + 0.5 Dim dy4 As Integer = -(ch / 2 - al) * Math.Cos((deg - aw) / 180.0 * Math.PI) + 0.5 Dim dye As Integer = -(ch / 2 - ao) * Math.Cos((deg + 180.0) / 180.0 * Math.PI) + 0.5 Dim ps As Point() = { New Point(cw / 2 + dx1, ch / 2 + dy1) _ , New Point(cw / 2 + dx2, ch / 2 + dy2) _ , New Point(cw / 2 + dx3, ch / 2 + dy3) _ , New Point(cw / 2 + dx4, ch / 2 + dy4) } g.FillPolygon(Brushes.Red, ps) '矢の軸を描く Dim cl As Point() = { New Point(cw / 2 + dx1, ch / 2 + dy1) _ , New Point(cw / 2 + dxe, ch / 2 + dye) } g.DrawPolygon(Pens.Red, cl) End If g.Dispose() PictureBoxCompass.Image = canvas End Sub
まとめ
折れ線グラフを表示するシリアルプロッターが Arduino IDE にありますが、自分が使いやすいようカスタムした表示ができたら用途も広がるし楽しそうなので試してみました。
ボタン押したらシリアル送信してモーターを指定に位置に、とかできたら使い道ありそうです。
「スコープに宣言がありません」と怒られたらプロトタイプ宣言してみよう
Arduinoでスケッチが長くなってきたら
機能ごとにファイルを分割したりしますよね。
で、コンパイルすると宣言がないと怒られたわけです。
でも
タブを切り替えるとちゃんとある。
実際のスケッチは関数名が長いので、打ち間違えていないか一文字ずつ指差し確認。
でも一致しているように見える。
テキストエディタにコピペして並べてみてもやっぱり同じだ。
おっかしいなぁ.....。
プロトタイプ宣言
見つからないって言うんだから、見つかるようにプロトタイプ宣言してみようか。
(Arduinoはコンパイル時に自動でやってくれるから本来は要らない。)
あっ.......
別のタブの別の関数で、ネストのカッコ閉じを失敗していました。
カッコを直したら
プロトタイプ宣言を削除しても無事コンパイルが通るようになりました。
まとめ
正しく宣言がされているにも関わらずコンパイラに「宣言がない」と怒られたら、その関数をプロトタイプ宣言してみよう。
すると、真の原因が見つかるかもしれない。
おもちゃの修理を頼まれた(アンパンマン掃除機編)
「余計に壊れて復元不能になっても知らないからね!」を条件に、小物の修理を引き受けていたらだんだん 面倒 厄介なモノも持ち込まれるようになってきました。
https://www.amazon.co.jp/dp/B00HFID516/
切れたホースをつなげ
せめてもうちょっと真ん中らへんで切れてくれれば、ビニルテープぐるぐる巻きとかやりようがあるのですが。
ホースの両端はグリップに合わせて成型されており、汎用品を切って使っているのではなく専用品のようです。
接続用のパーツをモデリング
まずは蛇腹ホース。
グリップの中の空間もざっくり採寸。
蛇腹ホースは円筒ボディーをかぶせる。
2つのパーツをロフトで連結。
先端は挿し込みやすいようにテーパをつけて、蛇腹側は結束バンドを巻くための突起をつける。
蛇腹ボディーを引き算して断面をみるとこんな感じ。
挿し込みが固そうなので割り込みを入れておく。
2つに割って完成。
造形
同じものを2個作ります。
組立て
ホースを挟んで
押し込む!
爪も折れることなく入りました。すっぽ抜けないか心配でしたが、かなり固くはまっています。
あとは結束バンド巻いて完成です。
反対側が切れた
直ったと思ったら、ホースの反対側が切れました。
ビニールテープぐるぐるではなくクリアの収縮チューブを使いました。
しかし、かなり蛇腹ホースの劣化が進んでいるようです。またすぐ違うところが切れるでしょう。
おまけ
「おもちゃの音が出なくなった」系の故障は、スピーカーの交換で今のとこ復活しています。(N=3)
https://www.amazon.co.jp/dp/B01I9FBIOE/
スピーカーの抵抗を測定し、断線してそうなら交換。
5年分ぐらい届いたよ!
3Dプリンタでの造形物を三脚に付けたい
3Dプリンタで作ったケースをカメラ用三脚に付けたい
だけどネジ穴をモデリングしてもすぐ潰れてしまいそうです。
ということで思い付いた一案。
カメラネジアダプターをねじ込む
三脚を取り付ける位置に直径 9mm の孔をモデリングしておき、C面も2~3mmぐらい付けておきます。
そこにカメラネジアダプターをねじ込む。
- 出版社/メーカー: ハクバ
- メディア: Camera
- この商品を含むブログを見る
モデリング
NEMA17 ステッピングモーターを三脚に取り付けて
その上で小さなテーブルをぐるんぐるんさせよう。
造形
カメラネジアダプターの取り付け
マイナスドライバーでねじ込んでいきます。
なんとか入った。
まっすぐねじ込むのが難しい
軸をまっすぐに保つのが難しく斜めに入ってしまいます。
めいっぱいねじ込んであれば気にならないけど、ちょっとネジをゆるめて浮かせるとわかります。
幅 10mm の大きめのマイナスドライバーでも、カメラアダプターの溝にギリギリかかる程度でツルっと先端が滑り、PLAの硬さも相まって手こずりました。
本来はネジ穴の大きさを変えるためのパーツですので、タップタイトのように使うには向いていなかったようです。
これだけネジ山が高いとハンダゴテで熱溶着も無理がありそうです。きっと三脚に適合するインチタイプのインサートナットもあると思うのですが、見つけられませんでした。
まとめ
三脚に取り付けたところ、思ったより安定していました。
先端がこんな形状のドライバーがあったら、アダプターの軸を垂直に保ちつつしっかり回せそうです。
3Dプリントした造形物にビットインサートの熱溶着を試す
3Dプリンタで作ったパーツをネジで固定したい
今回は知人が親子でダンボールキッチンを作っていたので、ガスコンロをもうちょっとかっこよくできるかも?と、ツマミとゴトクを贈呈しました。
こちらは完成時。テーブルの高さ 40cm、幅60cmぐらい。
3Dプリントしたパーツの組立てでネジを使う場面は、大抵はネジボスを立ててそこにタップタイトのネジで固定でしょうか。今回は強度に不安があったのでビットインサートの熱溶着を試してみました。
モデリング
ツマミ
上から順に、ツマミ、台座、留め具です。台座を段ボールにボンドで貼って、ツマミを取り付けたら裏から留め具をネジで固定。ツマミはちゃんと90度回って止まる予定。
ゴトク
黄色がゴトクで赤が留め具です。
ボンドや両面テープでの接着だけだとすぐ剥がれてしまいそうな気がしたので、段ボールに穴をあけて裏から留め具でも固定します。
ビットインサートの熱溶着
3Dプリントしたものをタップタイトネジで固定しても、すぐに割れて外れてしまいそうな気がします。そこで、ビットインサートを熱溶着してコネジで固定します。
今回使ったビットインサートはこちら。
国産 黄銅 ビットインサート フランジ型 M3xD1=4.5xL2=5.0 60ヶ入 HFB-3001
- 出版社/メーカー: ウィルコ
- メディア:
- この商品を含むブログを見る
Φ4.5mm の下穴をあけておき(ビットインサートの径より少し小さい)
ビットインサートをあてがって
300℃のハンダゴテでぐぐっと押し込む。熱せられたビットインサートがプラを溶かしながら埋まっていく。
3Dプリントの素材は PLA なので、300℃では温度が高すぎたようです。
白光FX600 なら下は200℃まで下げられるので、めいっぱい下げると良いかもしれません。
うまく付いたように見えましたが
裏から見るとはみ出ちゃってる!しかも溶けたPLAのくずが中に入り込んでしまいネジが入りにくい。
裏から留め具を付けるとこんな感じです。
ツマミもゴトクと同様にビットインサートを熱溶着してボンドと留め具で取り付けます。
牛乳パックを積み上げて骨組みを作り、段ボールで壁をつくり、その上に壁紙のようなシートを貼っているそうです。流し台も内側にアルミテープを貼ってピカピカ。廃材で作った割にオシャレに仕上がっています。
まとめ
3Dプリンタで作った物をネジで組み立てるのは、タップタイトネジでは強度や割れの心配があったが、インサートナットの使用で使い勝手は良くなる。
インサートナットの内側にハンダが付くとネジが入らなくなるので、コテ先は未使用品が良い。コテ購入時に付属していた円錐形のコテ先が未使用のまま残っていたので今回はそれを使用。
インサートナットを差し込む方向がネジとは逆方向からだと、インサートナットの中に溶けたプラのくずが入り込んでしまいネジが入りにくくなってしまった。インサートナットはネジと同じ方向から差し込むのが良さそう。
ツマミ側はネジと同じ方向からインサートナットを入れたのでネジの入りはスムーズで問題なかった。
プラの素材がPLAだったので、ハンダゴテの温度が300℃は高すぎた。すぼっと軽く入ってしまい、やや傾いてしまっている。
ツマミを回しきったときのクリック感が欲しくなる。
お子様にも気にいってもらえたようで何よりです。
ガーバーのファイル名をまとめて変える
KiCadから出力したガーバーを
Elecrow とか FusionPCB に送るためにファイル名を変えるとき、1個ずつファイル名を変えてませんか?
batで自動化している人もいるようですが
Windows標準の機能でまとめて変えることができます。
一番上のファイルを選択し、
Shift を押しながら一番下のファイルを選択。
このとき Ctrl + A でまとめて選択するとうまくいきません。
F2キーを押し
揃えたいファイル名を入力
そのまま Enter すると、
拡張子より前は全部同じファイル名になりました。
ファイルを選択するときに Ctrl + A で選択すると
F2キーでファイル名を変更しようとしたとき、一番上のファイルを変更する状態になります。すると、そこは既に変更後に設定したいファイル名なので、あらためて同じファイル名を入力しても何も変更されません。もとのファイル名と違う名前にすればまとめて変更されます。
まとめ
ドリルと基板外形の拡張子変更は、2個だけなので手動で変更しましょう......