###### tags: `m5stack`
# M5Stackで始めるモーター制御
## 1.ことのはじまり
 ひとつの文章があったとして、私たちはどれだけ考えることができるだろうか。近年はあらゆるものが認識されるようになり、すべてに名がつけられている。逆かもしれない。名があってはじめて認識が生まれるのだ。
 IoTはひとつの認識である。無機質なものにセンサを取り付け、それが発する信号から新しい存在を知るようになる。沈黙を守っていた彼らが一斉に語りかけ、私たちの世界は一気に広がる。狭くなるかも?
## 2.モーター制御
### 2-1.動くものはおもしろい
 動くものを作りたい。M5Stackの環境設定や、初歩的なプログラムは以前紹介したことがある。彼にはディスプレイやボタンがついているため、それだけでも十分おもしろいものを作ることができる。でも、動くものをつくりたい。モーターを制御しよう。
 私はモーターがなんなのかよくわかっていない。電気を流せば回るらしい。でもそのくらいの知識でこの世界はいいように動いているのだ。中身はブラックボックスでも構わない。できればいいのだ。
### 2-2.つかうもの
 今回使用するものは以下の通りである。
- M5Stack
- DCモーターたのしい工作シリーズ
- モータードライバ
- ジャンパワイヤ
- ブレッドボード
だいたいamazonで買うことができる。
### 2.3 つなぎかた
 モーターに電池を接続するだけでもぐるぐる回る。けれどON/OFFを制御したいので、モータードライバを付け足す。
 モータードライバーってなんだろ。きっとモーターのドライバーなのだろう。そして、こんなふうに接続する。
<img src="https://i.imgur.com/zcoQxxE.jpg" width="400">
 理屈はいろいろあるらしいけど、よくわからない。 電源はPCのUSB経由で問題ない。M5StackとPCを接続しておけばOK。
### 2-4. コード
 以下のコードを記入する。
#include <M5Stack.h>
int motor1 = 16;
int motor2 = 17;
void setup() {
// put your setup code here, to run once:
M5.begin(true, false, true);
M5.Lcd.clear(BLACK);
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(65, 10);
M5.Lcd.println("Motor TEST");
M5.Lcd.setCursor(3, 35);
M5.Lcd.println("Press button A = Motor ON");
M5.Lcd.println("Press button B = Motor OFF");
M5.Lcd.setTextColor(RED);
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
M5.update();
if (M5.BtnA.wasPressed()) {
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
} else if (M5.BtnB.wasPressed()) {
digitalWrite(motor1, LOW);
digitalWrite(motor2, LOW);
}
}
ボタンを押したらモーターが動く。
## 2.5 動作
<img src="https://i.imgur.com/twKU3as.png" width=
"400">
 ボタンを押すとモーターが回るようになった。
風車がくるくる回る。
## 3.実践:はんこ押しロボットを作ろう
### 3-1.構想検討
 モーターの制御ができたので、楽しげなロボットが作れそうな気がしてくる。というわけでハンコ押しロボットを作ろう。モーターの回転運動をハンコを押す往復運動に変換させる。どんな機構がいいか考えたが、やはりオーソドックスなクランク機構がいいだろう。
 こういうときはミスミのin CAD Libraryが参考になる。非常に多くの設計事例が紹介されている。今回はその中から「スイッチ耐久試験治具」からアイデアをもらった。
 ちょっとスケッチしてみよう。
<img src="https://i.imgur.com/j2WaAx4.png" width="400">
 
 できた。凹凸によって中央のアングル部が上下に動く。そこにハンコをつける。そしてなんといっても、ハンコを固定するところにバネがいる。これがないと鮮明に印字がされない。ベースが動いたり、紙がぐしゃぐしゃになったり、リンク部が折れたりする。
<img src="https://i.imgur.com/wKWaC76.png" width="400">
 
<br><br><br>
 こんな構造を考えた。円筒形で中はバネが入っている。ちょうどボールペンの後ろのように、ノックしてもばねによって押し戻される機構だ。
 
### 3-2.CAD
<img src="https://i.imgur.com/rkxmjhy.png" width="400">
 
 構想が固まってきたら3DCADにおこす。わたしはFusion360を使っている。趣味目的の利用であれば無料で使えるすばらしいやつだ。部品は単純なものばかりだったのでわりあいすぐにできる。
 
### 3-3. 3Dプリンターで出力
<img src="https://i.imgur.com/S9q1Jtc.jpg" width="400">
 3Dプリンターで部品を出力する。写真のやつはdavinci proとかいうもので、10万円程度の品物だ。げっこう頑丈なつくりなので、こどもが壊す心配もない。
食い入るように見つめる長男。これが近未来だよ。
<br>
<img src="https://i.imgur.com/j3uQJqW.jpg" width="400">
 出来た。
<br> <br>
### 3-4. やったか?
<img src="https://i.imgur.com/CaHTuB0.jpg" width="400">
 ぐっちゃぐちゃだけどなんとか形になった。動かしてみたらちゃんと上下にスライドする。でもハンコは押せない。
 
## 4.理想と現実
 ハンコが押せない理由はいくつかあるが、一番大きなものはわたしの怠慢である。本来はもっと試行錯誤を繰り返し、よりよいものをつくればよかったのだろうが、わたしにはそれができなかった。なんということだ。日々の時間はそれはそれだったし、食べていくので精一杯だった。
 現実は非情である。
## 5.M5Stackと私の未来
 それでも日々は動く。今日のわたしは昨日のそれとは違うし、あしたはもっと楽しい感じにあれしてる。それでいい。次回はちゃんとしたものをつくって、すごいワクワクを皆さんにプレゼントしたい。
 M5Stackの未来はあかるいぞ!!!