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