Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

電子工作🐈 Arduinoでサーボモータと障害物センサを制御。「いそいでくぐるETC」を作りました。

f:id:miraluna:20180806220931j:plain:w200 Mira

暑中お見舞い申し上げます。
みなさんいかがお過ごしでしょうか? どうか無事に過ごされますように。

私はというと。
夏休みだけど雨でがっかり、でも家で電子工作ができてうれしい、けれどちょっと運動不足、それでもやっぱり夏休みを満喫中🍉のミラです。


今回は
赤外線障害物センササーボモータを組み合わせて
いそいでくぐるETC🚛』を作ってみた」
という記事です。

主なパーツは「みつは(ATmega328(を搭載したArduino(私のはMaruduino)))」と、「障害物センサ(LM393搭載)」と、「サーボモータ(SG90)」です。
 🌽 Arduino        🍧 障害物センサ      🍉 サーボモータ
f:id:miraluna:20191122170928j:plain:w195 f:id:miraluna:20210815150450j:plain:w195 f:id:miraluna:20190609183242j:plain:w195

障害物センサというのは、センサに物体が近づくとそれを感知して「何かが近くにあるよ」と知らせてくれるというもの。今回はみつは(Arduino)に「何かがあるよ」と伝えるようなプログラムにしましょう。前に使ったことがあるので、使い方などはこちらの記事に載せてあります。

 ↓ 赤外線障害物センサモジュールの記事
miraluna.hatenablog.com
          

サーボモータは指定した角度(今回はArduinoが角度指定の指令を出します)まで回転するモータのこと。このナーサリーラボでも何度か紹介してきました。だからサーボモータについての記事がいくつかあるので、まとめのページを作りました。

 ↓ サーボモータの使い方いろいろ
miraluna.hatenablog.com



【「いそいでくぐるETC」イメージ図】
何もない時にはゲートが閉じている。
.障害物センサの前に何かが来ると、Arduinoに送っている信号の値が変わる。
.信号の変化を読み取ったArduinoは、サーボモータに回転の命令を出す。
Arduinoに命令されたサーボモータは90°回転し、ゲートを開く。
 → 障害物センサの前に何もなくなったら、1.2.3.と同じ手順でゲートを閉じる。
f:id:miraluna:20210815150412j:plainf:id:miraluna:20210815150432p:plain

(ミラの悪ふざけ)
それは遥か古の時代から閉ざされ続けてきた門。その奥にあるお城には氷の女王が住んでいるとかいないとか。ある日そこに一台のクレーントラックがやってきて、こう言いました。「『ETCカードを確認しました』。Open Sesame!」するとどうしたことでしょう。固く閉ざされていた門があっという間に開きました。開いたと思ったらすぐに閉じました。「今開けてあげるモン。でもぐずぐずしてたら閉めちゃうモン。」果たして緑のクレーントラックは門をくぐって氷の女王に会えるのでしょうか。次回「古の門がいけず(行けず)なんだモン!?」乞うご期待。
ばかなこと言ってごめんなさい。ちょっとふざけました。 f:id:miraluna:20180430190439j:plain:w50
運転をする方はくれぐれもETCはいそいでくぐらないでください。一時停止? するのかな。安全に通ってくださいね。



さて、みつはに書き込むプログラムですが、まず障害物センサで常に障害物の有無を感知させます。そして近く(距離は調整できます)に物体があることを感知したらArduinoに信号を送り、信号を受け取ったらサーボモータを90°回転させるものにしました。

以下スケッチ(プログラム)

//「いそいでくぐるETC」
#include <Servo.h>  //サーボモータのライブラリ
Servo penguin;         //サーボモータの名前「ペンギン」
const int in = A0;      //障害物センサの信号線をA0につなぐ

void setup() {
  Serial.begin(9600);  //Arduinoとセンサで通信を行う
  penguin.attach(7);   //ペンギンの信号線を7ピンにつなぐ
  penguin.write(0);     //ペンギンを0°の角度に戻す
  delay(400);              //ペンギンの0°への戻り待ち
}

void loop() {
  int n =analogRead(in);  //障害物センサの値をアナログで読む
  Serial.println(n);            //シリアルモニタに値を表示させる

  if(n<150){                     //もし値が150未満なら
    penguin.write(90);      //ペンギンを90°の角度まで回転させる
    delay(200);                 //ペンギンの回転待ち
  }else{                            //もしそうでなければ
    penguin.write(0);       //ペンギンを0°の角度まで回転させる
    delay(200);                //ペンギンの回転待ち
  }
}

こんなプログラムです。

このプログラムでは値を見てみたかったのでアナログで読み取っていますが、障害物センサは本来デジタルで「0(OFF)」と「1(ON)」を読み取る使い方をするんだと思います。プログラム内の「150」という値は、ONとOFFの間にある任意の数値です。詳しく知りたい方は、この記事にさっき登場した障害物センサのリンク先の記事を読んでみてくださいね。


「いそいでくぐるETC」はいそいでくぐらないとゲートが閉じてしまうETCです。
どんな動きをするのか気になると思ったので動画にしました。ぜひ見てください。
(👍ボタンお待ちしています。)
いそいでくぐるETC」【動画

www.youtube.com


夏休みだけど雨ばかりで退屈☔ そんなときにははんだごてを手に、電子工作はいかがでしょうか? おすすめですよ~🐈

作製・紹介はミラでした。 f:id:miraluna:20181206182641j:plain:w300



<ミラのおすすめ電子工作道具~入門編~>

🍉 白光さんのはんだごて
 私、電子工作を始めてから今もずっとこれを使ってる。

🥒 サンハヤトさんのブレッドボード
 私は透明なのとかカラフルでかわいいのとか買っちゃうんだけど、ワイヤがうまく挿さらなかったり、通電しない部分があったりする。サンハヤトさんのブレッドボードはとっても評判がいいので、初めて買う方におすすめします。玄人の方で愛用者はきっと多いはず。

🍆 はんだ付け作業マット
 はんだ付けは直にテーブルの上でやるわけにはいかないので、焦げてもいいような板が必要。このシリコンマットははんだの熱でも解けないので作業しやすいと思いますよ。

🍧 ポリウレタン銅線(おすすめは0.26ミリなんだけど、見つからなかった)
 ポリウレタン銅線は使い方が分かると本当に便利。被膜をむかなくてもいいし、細いところも通せるし、導線同士を重ねてもショートしないし。この広告は0.2mmだけど、私は0.26mmを使っています。

おすすめしたい物はまだまだあるけど、それはまた別の機会に。(∂, ∂🎀ノ Byebye