5070796_s


トマト栽培で老化苗を定植したら微量要素の課題が付き纏うまでの記事で触れている植物学の観点から見たトマトの栽培と平行して、施設栽培の環境制御の方も見ていくことにする。

とは書いたものの、環境制御について


2599985_m


2599985_s


ハウス内の温度を測って、温度によって天窓を自動開閉したり、ファンを回したりといった漠然としたものしかわからなくて、実際にはどのように作成しているのか?は知らない。

というわけで、電子工作を一から勉強してみることにした。




P6248915


最初の教材として選んだのがMicro:bitと呼ばれる学生用のマイコンで配線を繋げばモーターを動かせるし、温度計をつければ、周辺の温度に合わせてモーターを動かせたりする。

Micro:bitで用いる言語は、Scratchのようなビジュアル言語の他にJavaScriptやPythonになる。

※Micro:bitで他に出来る事を知りたい場合は下記のリンク先のページをご覧ください。

Micro:bit財団は、技術による発明を誰にとっても楽しいものにする、グローバルな非営利団体です。


Micro:bitのチュートリアル的なものは本屋に行けば、いろんな本が出ているので、ここでは触れない。

今回触れるのは、ハウスの天窓に使われるサーボモータと呼ばれるモータにする。


robot_arm


サーボモータというのは、ロボットアームの関節部分に用いられるモーターで、回転する向きを自由に変える事が出来、アームの上下運動に寄与する。

サーボモータ - Wikipedia


今回は、


P6248917


LEGOのブロックに組み込む事が出来る360度回転のサーボモータを購入してみた。

GeekServo 9G 360° Motor-Orange - スイッチサイエンス


実際の動きは後ほど記載するが、


P6248916


モータにLEGOのミニフィグを載せて、ミニフィグを時計回りか半時計回りに回転させる工作をしてみた。

ちなみに載せたミニフィグはLEGO Ninjagoのカイにした。

LEGO Ninjago - Kai - YouTube




実際のコードを書く前に今回使用した部品を挙げておく。


P6248916a


Micro:bit(写真右)と電池パック(写真左)


P6248918


(今回は必要ないけれども)Micro:bit用の入出力端子穴のみの拡張ボード

KEYESTUDIO Edge Connector I/O Sensor Breakout Expansion für BBC Micro:bit Microbit


P6248919


拡張ボードの入出力端子用のワニ口クリップ


P6248921


モーター側に付けるジャンパー線


P6248917


サーボモータのオレンジの線(信号線)を、ジャンパー線→ワニ口クリップを介し、拡張ボードの入出力端子P0につなぐ。

赤色の線(VM:+極)を拡張ボードの3Vのどれかにつなぐ。

茶色の線を拡張ボードのGND(-極)につなぐ。


繋ぎ方は


P6248916b


ボードの入出力端子とワニ口クリップを繋ぎ


P6248916c


ワニ口クリップの逆側ではジャンパー線の配線を噛むように繋ぎ、ジャンパー線の反対側にサーボモータを繋ぐ。

これで準備が出来たので、次はコードの作成に移る。




Microsoft MakeCode for micro:bitを開き、下記のコードを作成する。


makecode_servo_1


makecode_servo_2


変数を設けて、まどろっこしいコードになっているが、自身がサーボモータを理解する為に必要だったので残しておく。

一番上の「最初だけ」のところで変数を90にするのは、サーボモータが90度を基準とするからなので明記しておく。

ちなみに「最初だけ」の箇所でチェックのアイコンの表示を入れているのは、コードが正しくMicro:bitに入ったか?(フラッシングと呼ぶらしい)を確認するため。


ボタンAを押した時に入出力端子のP0からサーボモータに角度の命令を送るようにしている。

角度を基準よりも大きな値にするとサーボモータは半時計回りになる。


逆にボタンBを押した時の処理にある角度の基準よりも小さい角度を送ると、サーボモータは時計回りになる。


早速このコードを試してみると、



ボタンAを押した時(90度よりも大きい数字)は半時計回りになり、



ボタンBを押した時(90度よりも小さい数字)は時計回りになった。


ここでサーボモータの初心者として感じた事が、角度を指定したのにどちらも一回転してしまっていることで、指定した150度や30度の箇所で止まっていないということ。

後は動画にはないが、回転が止まらないこと。


どうやら、端子からサーボモータに伝えた角度は一定時間内にどれ程の角度回るか?という値らしい。


サーボモータはどうやって止めれば良いのだろうか?