Arduinoでマシーンを作ろう(スイッチでサーボを動かす編)
無駄、かもしれない。けど、作ろう。自己表現の無駄づくりの学校!
「とにかくなにかをつくろう」をテーマに、物作りのノウハウをみんなにティーチしていく超最先端の学校です。先生の藤原麻里菜です。
隣にいるのは意味のないマスコットの「無」くんです。
今日は、Arduinoを使って電子工作をしてみましょう!
Arduinoってなんだ?
Arduinoとは、手のひらサイズの基板にコンピュータの最低限の機能が入っている「マイコンボード」の一種です。これがArduinoです。読み方は、アルディーノって言ったりアルドゥイーノって言ったりします。
両サイドにある穴、ピンと呼ばれるところににモーターやセンサーなどを繋いで、プログラムをパソコンから書き込むことで、モーターを動かしたり、センサーから値を読み取ったりできる……簡単にいうと、つまり、ロボットやマシーンを作ることができるんです。
この「無駄づくりの学校」はインスタントに自己表現をするための学校なので、むずかしいことは極力言わず、とりあえず「電子工作を使ってなにかを作りたいんだ!」という方に向けて、簡単に教えていきます。なので、物足りないところもあるかもしれませんが、それはごめん……。
Arduinoを見せると、よく「むずかしそう〜」と言われるのですが、そんなことないんです。電子工作を簡単にしてくれる優れものなんですよ。
Arduinoって名前が難しそうすぎる。電子工作簡単くんとかに改名して欲しいよね。むずかしそうに思えるんだけれど、実はけっこう簡単で、始めやすいんです!1時間、いや30分、いや15分もあれば、サーボモーターを動かせるようになりますよ。
また、電子工作を始めるもう一つの関門が、「プログラミング」です。プログラミングっていうのも名前からしてむずかしそうなオーラが漂っています。でも、そんな心配も大丈夫。
なぜなら、Arduinoのプログラムを書くソフトウェアであるArduino IDEにはサンプルコードがたくさん入っているんです。だから、ゼロからプログラムを書けなくても大丈夫です。私もプログラムはゼロから書いたことないけど、いろんなマシーンを作ってるよ。慣れてきたら既存のプログラムをちょちょっといじるだけで好きなマシーンを作れるようになれるんです。
また、無駄づくりの工作にはほとんどArduinoが使われています。例えば、「インスタ映え台無しマシーン」これは、スイッチを押すと、モーターが動くという仕組みをプログラミングして作りました。
インスタ映えを気にしすぎる世の中に一石を投じてみましたhttps://t.co/2ZXEtOAK9b pic.twitter.com/VpgEQjklo1
— 藤原 麻里菜 | Marina Fujiwara (@muda_zukuri) 2017年7月31日
「オンライン飲み会脱出マシーン」も同じで、スイッチを押すと、モーターが動く仕組みです。
オンライン飲み会から緊急脱出できるマシーンを作りました pic.twitter.com/gB2Ur6f21i
— 藤原 麻里菜 | Marina Fujiwara (@muda_zukuri) 2020年4月29日
「ヤンキーロボット掃除機」は、衝撃を感知するセンサーを音声を再生するパーツを組み合わせて作ったものです。
ロボット掃除機を改造してヤンキーにしました pic.twitter.com/iJKg6BXdzD
— 藤原 麻里菜 | Marina Fujiwara (@muda_zukuri) 2021年6月3日
それに、Arduinoは世界中で使われているから、たくさんのエンジニアの人たちがいろんなプログラムを公開していたり、トラブルがあったときの対処法もシェアしてくれているんです。本当に感謝です。
<Arduinoの基本>
電子工作でArduinoを使うときは、2つのポイントがあります。それは、
・回路
・スケッチ(プログラム)
です。回路というのは、さっき話したように、Arduinoにセンサーやモーターなどを繋げること。例えば、Arduinoにサーボモーターを繋げる回路は、こんな感じです。
この図を回路図と呼びます。ちょくちょくでてきている「サーボモーター」って一体何? という問いには次の項目で答えます。
スケッチとは、Arduino用語なのですが、プログラムと同じです。パソコンのソフトウェア(Arduino IDE)を使って書きます。
プログラミングって言葉は聞いたことあるかと思いますが、コンピューターに指令を出すお手紙みたいなものです。「お願いなので、モーターを90度動かしてくれませんか……」と、お願いするんです。
日本語や英語があるように、機械が理解できる言葉があります。Arduinoのスケッチは、C言語とC++というプログラミング言語をベースにした言葉が使われています。英語をベースにした言語なので、まるっきりわからないということはないのです。
<Arduinoでサーボモーターを動かす>
じゃあ、早速Arduinoでサーボモーターを動かしてみましょう。用意するものはこちら
・Arduino UNO
・ジャンパワイヤー 3本
・9gのマイクロサーボモーター
・Arduinoとパソコンを繋げるUSBtype-BとtypeA
・パソコン
サーボモーターってなんだ?
サーボモーターとは、角度を制御できるモーターです。ミニ四駆とかに使われているDCモーターは、ぐるぐる回転するものですよね。でも、サーボモーターは90度回転して、90度戻るといった風に回転の角度を変えることができるんです。
さっきも見せましたが、「インスタ映え台無しマシーン」や「オンライン飲み会脱出マシーン」で使われています。
1.ArduinoIDEをダウンロードしよう
まずは、スケッチを書くためのソフトウェア、パソコンで動かすアプリみたいなものです。これをダウンロードします。
1. Software | Arduinoにアクセス
2.windows、mac、Linuxのバージョンのソフトウェアがあるので、自分の持っているパソコンに合ったものをダウンロードしましょう。私はmacなので、macをダウンロードします。(寄付をお願いする画面がでかでかとでてくるのですが、裕福な場合は寄付をカツカツなときは左の「just download」をクリックしましょう。
3.ダウンロードしたら、そのファイルを開きましょう。開き方が分からなかったら、パソコンで「ダウンロード ファイル 開き方」とかで検索してみてね。検索パワー!
2.回路図を参考にArduinoとパーツを繋げよう
じゃあ、次に回路図を参考に、Arduinoとサーボモーターを繋げてみましょう。
この回路図を元にサーボモーターをArduinoに繋げてみましょう。サーボモーターには3本の線があります。サーボモーターの種類によって色が異なってくるのですが、だいたい端っこの茶色っぽい暗い色の線はArduinoのGND、真ん中の赤っぽい線は、Arduinoの5V、余った黄色っぽい線はデジタルピンの9番に繋げます。
3.Arduinoとパソコンを繋げて書き込みをしよう
そうしたら、ArduinoとパソコンをUSBケーブルで繋げましょう。
1.Arduino IDEを開いてください。
これをパソコンからArduinoに書き込みをするのですが、その前に設定をします。
2.一番上のバーから
Tools > Boards > Arduino AVR bords > Arduino UNO
を選択します。Arduinoにはたくさん種類があって、今日私たちが使っているのはArduino UNOという種類なので、それを選択しました。
3.一番上のバーから
File > Examples > Servo > Sweep
を開きます。これが、サーボモーターを動かすスケッチです。
4.その後は、スケッチのウインドウの上にある白い長方形を選択して、一番上に出てくる「Arduino UNO」を選択します。
これはパソコンと繋がっているArduinoを選択しています。
5.スケッチのウインドウの上に右矢印ボタンがありますよね。そこをクリックします。そうしたら、書き込みができます。(オレンジ色になっているところ!)
ウィーン
動いたらやったね〜! もし、動かない場合は、ジャンパワイヤーを挿す場所を間違っている可能性があります。プリントされている字が小さくて見づらいので、確認してみましょう! 読みにくいよねー。
ちゃんと動いたら、天才です! 次は、サンプルコードを書き換えて、好きな角度に回転できるようにしましょう。
<サーボモーターのサンプルコードを書き換える>
1.Arduino IDEで、サーボモーターのスケッチを全部コピーします。
2.File>Newsketch
で、書かれているスケッチを全て消して、さっきコピーしたサーボモーターのスケッチを全てペーストしてください。
#include <Servo.h>
Servo myservo; // create servo object to control a servo// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {myservo.attach(9); // attaches the servo on pin 9 to the servo object}
void loop() {for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees// in steps of 1 degreemyservo.write(pos); // tell servo to go to position in variable 'pos'delay(15); // waits 15 ms for the servo to reach the position}for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degreesmyservo.write(pos); // tell servo to go to position in variable 'pos'delay(15); // waits 15 ms for the servo to reach the position}}
スケッチを見てみましょう。180という数字が2つあるのを発見できると思います。ここが、角度を指定している場所なんですね。
180度回転して、180度戻る。なので、ここを変えると好きな角度で動かすことができるわけです。ちなみにだいたいのサーボモーターは180度までしか動かないので、注意しましょう。
じゃあ、90度回転するスケッチに書き換えてみましょう。180を90に変更するだけです。簡単だ!
書き換えたら、Arduinoとパソコンをつなげて、書き込みしましょう。ちゃんと動いたらOKです。もしプログラムにエラーがでた場合は
・大切な箇所を消してしまった
・プログラムに全角スペースが入り込んだ/全角で数字をタイピングしてしまった
などの理由が考えられます。変な箇所を消してしまったら、保存せずにウインドウを消して、もう一度開き直しましょう。全角スペースが原因の場合は、その箇所を消したり、半角に変えたりしてください。
今はパソコンに繋いでいる限り、ずーっと動いていますよね。電源スイッチが欲しいと思います。
では、次はスイッチを押したらサーボモータが動く仕組みに挑戦しましょう!
<スイッチを押したらサーボモーターが動く>
用意するもの
・Arduino UNO
・サーボモーター
・ジャンパワイヤー 6本
・ブレッドボード
・抵抗器(220Ω)
・タクトスイッチ
ブレッドボードと抵抗器とタクトスイッチ……よくわからないパーツが追加されました。
・ブレッドボードとは
ブレッドボードは、ピンを増やすアイテムです。Arduinoには一つのピンに対して、一つの穴しかないけれど、ブレッドボードをつなぐと穴を拡張することができます。
ブレッドボードのここの列は繋がっているので、例えば、ArduinoのGNDからブレッドボードにジャンパワイヤーを繋げると、
ここの列が全てGNDのピンになるっていうわけです! 便利アイテム!
・抵抗器とは
抵抗器は、電気の流れに抵抗してくれるパーツ。名前の通りですね。例えば、LEDライトに1.5Vの電池を直接繋げると、LEDライトがそれだけの電気の量に耐えられなくてパーンってショートしてしまうんです。そういったことを防ぐのが、抵抗器の役割です。
・タクトスイッチとは
タクトスイッチは、見ての通り、スイッチ! 電子工作でよく使われます。
1.この回路図を見ながら、スイッチと抵抗器をつないでいきましょう。
2.そこにサーボモーターを足していきます。ちょっと回路図が複雑になってきたけれど、サーボモーターの茶色っぽいのをGND、真ん中を5V、端っこを9番ピンに挿すだけです。
3.Arduino IDEで、スケッチを書いていきましょう。今回は、サーボモーターのサンプルコードに11行足します。
とりあえず、これをコピペすればOKです。サーボモーターのスケッチに何が足されたのか見てみるとちょっと勉強になるかも。
#include <Servo.h>Servo myservo;int pos = 0;
const int buttonPin = 2;int buttonState = 0;
void setup() {myservo.attach(9);pinMode(buttonPin, INPUT);}void loop() {buttonState = digitalRead(buttonPin);if (buttonState == HIGH) {for (pos = 0; pos <= 0; pos += 1) {myservo.write(pos);}}else{for (pos = 0; pos <= 90; pos += 1) {myservo.write(pos);delay(15);}delay(100);for (pos = 90; pos >= 0; pos -= 1) {myservo.write(pos);delay(15);}}}
スイッチを押すと、サーボモーターが動きます。
動かなかったら、ちゃんとピンがささっているかなどを確認しましょう。
<インスタ映え台無しマシーンを作ろう>
動いたはいいけど、何を作れば良いかわからないという人は多いと思います。そんな方々のために、今日はインスタ映え台無しマシーンを作ってみましょう。スイッチを押すとスマホのカメラに親指が映り込んじゃうそんなマシーンです。
用意するものは、どのご家庭にもある指です。
これはマジック用の指なのですが、amazonなどで購入できます。ぜひ買ってみてね。
1.サーボモーターの羽の部分につけます。付け方はグルーガンや接着剤、両面テープなどでくっつけてください。
あまり工作をしないとグルーガンという言葉は聞き馴染みがないと思います。これは、グルースティックという固形の接着財を熱で溶かして抽出し、空気に触れさせて固めることで接着するアイテムです。瞬間接着剤と違って、粘土みたいにけっこうどろんとしているので、デコボコした面を接着するときや、「えーいくっつけー」みたいなときにとても役に立ちます。100円ショップなどでも売ってますよ。
2.ブレッドボードとサーボモーターを両面テープでスマホカバーに接着します。
3.電源ですが、モバイルバッテリーを使うとコンパクトになります。
4.完成!
これで、指が映り込んで、インスタ映えを台無しにすることができますね。やったぜ!
こうやって、技術を覚えて、これを使ってどういう物を作れば良いかな?と考えるのもたのしいです。
<宿題>
今回の宿題は、サーボモーターで無駄なものを作ってみようです。
「#無駄づくりの学校」をつけて、Twitterに投稿してください。
投稿された物は動画で紹介します〜!ぜひ変なものを作ったら投稿してみてください。
次は、センサーを使ってマシーンを作る方法についての授業です。
お楽しみに!