プロッタを作ってみた


やっと材料がそろったので「プロッタ」を作ることにしました。
「プロッタ」というのは、ペンプロッタのことで、ペンを自動で動かして、図形を描画する装置のことです。

ずいぶん前にこの記事を見た時から作ろうとしていたのです・・

http://www.instructables.com/id/Mini-CNC-Plotter-Arduino-Based/


要はジャンクDVD-ROMドライブからペンプロッタが作れるよという記事です。
これなら僕でもできそう!

材料の調達

DVDROMドライブ

まずは秋葉原にいってジャンクDVD-ROMドライブを買ってきます。

実は、ここにで一つ試練が。

DVD-ROMドライブには「あたり」と「はずれ」があります。

今回のやり方でプロッタを作るためには「ステッピングモーター」が必要です。
DVD-ROMドライブの中には「ステッピングモーター」を用いているものと、(おそらく)「DCモーター+ロータリーエンコーダ」を用いているものがあるようです。


こちらがはずれ

こちらが当たり

おそらくどちらの仕組みでも、うまくやればプロッタを作ることができると思うのですが、今回は参考URLの通り「ステッピングモーター」を使いたいので、あたりが2つ手に入るまでDVD-ROMドライブを買うことにします。

相場としては一つ500円くらい。もっと安いものもちらほらあるかな、、と。

今回はモバイルPC用の「スリムドライブ」も買ってみました。

これも分解してみるとステッピングモーターが入ってることを確認できました。
ただ分解が少し面倒、薄型なのでねじも小さい。 また、ステッピングモーターの稼働範囲が少し少ない(僕の買ったものしか知らないですが)などデスクトップPC用のDVD-ROMドライブとは少し異なっているようです。

ステッピングモーター操作モジュール

次にステッピングモーターを操作するためのICを調達します。
もっと安い方法もあるかもしれませんが、今回はaitendoでEasyDriverと呼ばれるステッピングモーターを簡単に扱うための定番のキットを購入しました。

ステッピングモーター1つにつきEasyDriverが1つ必要なので、2つ購入。

http://www.aitendo.com/product/10976 (今見ると在庫が少ない)

Amazonならこちら

EasyDriver ステッピングモータドライバ

EasyDriver ステッピングモータドライバ

  • メディア: おもちゃ&ホビー


ほかにもステッピングモーター制御用のICはあるので、これじゃなくてもできるはずです。

ひとつ350円

サーボモータ

もう一つ、ペンの上げ下げのために必要な「サーボモーター」を調達します。
千石電商https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=8ADR-HCKF を購入しました。

ひとつ1300円

トルクとかあるらしいけどよくわからない。

Amazonならこちらとかがよさそう

SG5010 デジタルサーボ

SG5010 デジタルサーボ

  • メディア: おもちゃ&ホビー

ペンを紙に押し付ける何か

元記事でも「That's the most difficult part of our construction.」と書かれている部分

ここを実現するための何かを100均で探していると偶然「PUSH CLUP」なる ビニール袋の封をするための製品が、ちょうどよさそうということで、購入しました。

108円

Amazonだとこちら(ちょっと多いけど・・)

その他必要なもの
  • はんだごて、はんだ
  • ハンドドリル
    • ホームセンターで2000円くらいで売っている、電動ドライバーに100均で購入したドリル刃を装着したものを利用しました。
    • 2mm 3mm 4mm のドリル刃を使いました。

分解

まずはDVDROMドライブを分解します。
ねじを外していけば基本はOK

http://air.ap.teacup.com/vitz/1480.html

こういう記事を参考にしながら分解します。
”強制イジェクトホールをを押す”ところがわからなくてしばらく悩みました。

動作チェック

EasyDriverとDVDROMドライブから取り出したステッピングモーターの動作チェックをします。

http://www.schmalzhaus.com/EasyDriver/
本家サイトを参考にしつつ、ArduinoとEasyDriverとステッピングモーターを接続します。

http://www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html
この例に従って動くことを確認。


組み立て

こういうことがやりたいわけです

まずはX軸用のステッピングモーターとY軸用のモーターを垂直に固定する必要があります。

そのためにはL字型の金具みたいなものが必要です。
今回はDVDROMドライブのケースを利用することにしました。

木材をいいくらいにカットして、DVDROMドライブケースにねじで固定します。
木材にDVDROMドライブから取り出したステッピングモーターとその枠をねじで固定します。

Y軸側も木材をいいくらいにカットしたものに、DVDROMドライブから取り出したステッピングモーターとその枠を グルーガンで固定します。
木材とDVDROMドライブケースをねじで固定すれば、X軸、Y軸の完成です。

こんかいはX軸は普通のDVD-ROMドライブから取り出したステッピングモーター、 Y軸はスリムドライブから取り出したステッピングモーターを採用しました。
スリムドライブのステッピングモーターは上下が平たい構造となっており、Y軸に固定するのがとても簡単でした。

Z軸についてはも木材をいい感じにカットしたものに、ねじでサーボモータを固定します。
さらに、100均で購入した「PUSH CLIP」にドリルで穴をあけたものを、ねじで木材に固定します。
このとき、サーボモーターの回転によってPUSH CLIPが縮まるように位置を調節する必要があります。 ここが結構難しい。

簡易結合

ブレッドボードを使い、X,Y軸用のステッピングモーターとEasyDriver、Z軸用のサーボモーター、Arduinoをくみ上げます。
てきとーにプログラムを書いて、X,Yの移動、ペンの上げ下げができることを確認します。

基板組み立て

ブレッドボードのままでは、取り回しが面倒くさいのでArduinoプロトタイプ基板にはんだ付けします。


ペンの固定

ペンは、細めのマジックを選定。フェルトのペン先だと多少圧が足りなくても線が描けるだろうということで、、

PUSH CLIPとペンをどうやって固定するか・・・

とりあえず手近にあった「輪ゴム」で止めます。
輪ゴムだけどがたがたしたので、結束バンドでさらに固定します。

X軸とY軸が完全に垂直になっていないと、ペンがと紙が離れてしまうので、調整します。
調整といっても厚紙を折り曲げたものを台の下に挟み込んで、傾きをつけるだけですが・・

リサージュ曲線の描画

X軸、Y軸をそれぞれ数値で制御できるようになれば、sin,cosを使ってリサージュ曲線を描くことができます。

できたっ!


任意の図形の描画

http://www.instructables.com/id/Use-3D-Printer-As-a-Plottercutter/?ALLSTEPS
ここにあるSVGGコードに変換するライブラリを使って、Gコードのデータを作成します。

GコードArduinoのプログラムに変換するプログラムを作ります。

で、あとは実行するだけ。

できたー

感想

プロッタ作成はとても面白い。そしてリーズナブル。
ぜひぜひみんなもやってみよう。

今のところの課題

  • 描画範囲が小さい 3cm*3cmくらい
    • これはDVD-ROMドライブを使っている以上仕方がない
  • ペンを上げるときにペンが曲がる
    • PUSH CLIPがガタガタしているのが原因、もう少ししっかりしたスライド機構が必要
  • 描画データが大きくなるとArduinoのメモリからあふれる
    • シリアル経由で描画指示を送れるように変更すればこの問題はなくなる

続きです

inajob.hatenablog.jp

2016まとめ

所感

今年は何といっても入籍したのが大ニュース。人に会うたびに「おめでとう」と言われてハッピーでした。仲良くやっていきます。

電子工作は自作ゲーム機の年だったなと
Gamebuino,Arduboyのクローンを作るとこから始まり、8月にはArduboyの作者と会うことができた。自分が目をつけているプロダクトがどんどん広まっていくのを体感するのは楽しいですね。もっとやれることもあったかなと思うので、来年も引き続きゲーム機はやっていこう。
去年末にrakuchordの基板を作った影響もあって、そこそこ安定してきたし、いろんな人に見せびらかすことができた。来年は完成度を高めていきたいところ

docker, kubernetes, goといった、ややインフラ寄りのソフトウェアに触れることができたのは、会社の仕事の影響が大きい。まだまだ知らないことが多いので継続して勉強していきたい。

アニメを見る量を減らして、ネットラジオを聞くようにしています。心境の変化?
英語が必要とされる機会が例年より多くなった気がする、これはいよいよ本腰をいれて勉強する必要があるか・・?

去年ほどではないが体調不良が多め、毎朝のラジオ体操は継続中だが、もう少し何か考えたほうが良いかも


今年はわりと新しいことに挑戦できたかなと思う。今年から始めて今後も続いていきそうなネタが結構できたように思います。

去年はあまりブログが書けなかったが、今年はまぁ大体月1で更新できたので良しとしよう。

ステータス

  • 引っ越してから1年目(来年更新年)
  • 会社入ってから7年(来年度で8年目)
  • 結婚してから1年未満

今年学んだスキル

  • docker, kubernetes
  • go
  • 電子工作
    • ゲーム機の作り方
    • stm32使い方
    • esp8266
  • 中国通販

月別ふりかえり

自作リズムマシン兼シーケンサ「cheapseq」

RakuChordを作るにあたり、音源をもっとリッチにしたい、、と思い、音作りを試行錯誤できるデバイスを作ることにした。
そもそもRakuChordにはつまみがない、ディスプレイもない・・ ということでそれを補完できるように考えてみる。

材料はうちにあるありあわせのもの

お値段的には1000円くらいでできたのでは?

外観


動作している様子

機能

とりあえず思いつく機能を片っ端から実装している。

  • 8ステップドラムマシン x 4パターン
    • 音色は低い「ドン」と高い「チッ」のみ
  • 8ステップトーンシーケンサ x 8パターン
    • 音程は1オクターブの範囲のみ
  • 8ステップドラムパターンシーケンサ
    • ドラムパターンを並べることができる
  • 8ステップトーンパターンシーケンサ
    • トーンパターンを並べることができる
  • スピード調整
  • ピッチシフト
  • オクターブシフト
  • ドラムの減衰調整
  • トーンの減衰調整
  • トーンの変調用オシレータ周波数調整1
  • トーンの変調用オシレータの重み調整1
  • トーンの変調用オシレータ周波数調整2
  • トーンの変調用オシレータの重み調整2


とりあえずこんな感じ。
メモリは余っているのでまた思いついたら実装していきたい

cheapseqで音源を調整して、RakuChordに取り込んでいくのがよさそう。乞うご期待

GamebuinoとArduboy

GamebuinoをOLEDで作ってみた

ずいぶん前に作っていたのだけれど、ブログに書いていなかったので。

巷ではArduboyが盛り上がっていますが、Gamebuinoもなかなかイケてます。

項目 Arduboy Gamebuino
ディスプレイ OLED 128*64 FSTN 84*48
SDカード なし あり
携帯性 抜群 そこそこ

ディスプレイはArduboyが優れており、SDカードからのゲームロードという点でGamebuinoが優れています。

そこで、、

「Gamebuinoの回路で、ディスプレイをOLED128*64にしたもの」
を作ってみることにしました。

要はGamebuinoとArduboyの良いところを真似たゲーム機です。

ディスプレイはこれを使います http://www.aitendo.com/product/7273 SPIなので、ほかの液晶と同様に接続すればOK
あとは以前記事を書いた ここ http://d.hatena.ne.jp/inajob/20160322 と同じです。

また、今回は前回より小型化を目指しており、そのために単4電池1本で動くようにしました。昇圧回路が思ったより場所をとったので、単四電池2本でも大して変わらなかったかも・・

まぁそんなこんなで、完成品です。
Arduboyよりも一回り小さいディスプレイですが、反応速度やコントラストはさすがOLEDといったところです。



GamebuinoからArduboyへの移植用のライブラリを作ってみた

こうして作ったハードウェアはGamebuinoとよく似ていますが、ディスプレイが違うため、ソースコードに手を入れる必要があります。
その手を加えたものがこちら。
https://github.com/inajob/Gamebuino/blob/master/for-arduboy.md

このライブラリを使ってGamebuinoのゲームをコンパイルすることで、このハードウェア用のバイナリを作ることができます。
またおまけとして、純正Arduboy用のバイナリを作る機能も付けました。

Arduboyはついにスイッチサイエンスでも販売されるようで、これからますます流行ってくるのではないかと思います。
https://www.switch-science.com/catalog/2880/

このライブラリを使ってGamebuinoのゲームをArduboy用にコンパイルして遊んでもらえればと思います。

また、腕に覚えのある方は、秋葉原を回って、僕みたいにGamebuinoとArduboyの良いとこどりゲーム機を作ってみてはいかがでしょうか?

未踏IoT合宿(2回目)に参加してきた

未踏IoT合宿(2回目)に参加してきた

前回( http://d.hatena.ne.jp/inajob/20160606 )に引き続き、IoT合宿に参加してきました。

未踏経験者Onlyで、かつ初心者歓迎というこの合宿。
しかもとても電子工作に詳しい未踏の先輩が教えてくれる会!

僕はちょっとは電子工作できるということで、何かあればお手伝いだったりをやりつつ、日ごろ気になっていたことを周りの人たちに聞いたりしてました。

やったこと

マイクテスト

この合宿では、スイッチサイエンスのエイドステーション( https://www.switch-science.com/info/aidstation/ )を導入していて、面白そうな部品はその場で買うことができます。

ということで、マイクを使って電子楽器の演奏に幅を持たせられないかという実験を、、
と思ったけど、少しやってたらどうもマイクを壊してしまったみたい・・ つらい・・

でもオペアンプを使ったピークホールド回路のイメージはついたので、いつかリベンジしたい。

ゲーム機の修復

以前作ったゲーム機の配線が断線してしまったので、修復。

この合宿では温度調整付きのはんだごてが利用できたので、使ってみました。 (やはり僕が中学生のころ作ったはんだごてとは違う)

WifiでWebと連動するスイッチ。

冷蔵庫の納豆がなくなったら、スイッチを押してLEDを点灯させ、 そのLEDの状態がWebからも見られる
という仕組みをESP8266で作ってみました。

WebからもLEDを操作でき、その結果を本物のLEDに同期するように作ったため、実際に運用すると結構な勢いで電池を消費しそうだけれども、まぁ動いたのでよし。

Arduboyでシーケンサ

Maker Fair Tokyo 2016で本物のArduboyを購入したのですが、まったく触れていませんでした。
ということでまずはシーケンサを作ってみようということで作ってみました。

ドット絵エディタのような仕組みで、ドットを置くと音が鳴る という単純な仕組みです。
これだけでもいろいろ音楽っぽいものが作れて楽しい。


Arduboyでシーケンサその2

Arduboyのライブラリにある音を鳴らす仕組みでは(おそらく)単音のメロディしか鳴らすことができません。
そこで、RakuChordで培ったAVRのタイマーの知識を使って、Arduboyで和音を鳴らせるようにしてみました。
そんでもって、↑で作ったシーケンサの和音もならせるバージョンを作りました。

かなり音量が小さくなってしまいましたが、まぁ一応和音が出るようになりました。

まとめ

IoT合宿といいつつ、後半はArduboyのソフトを書いていたので、あまり電子工作という感じではありませんでしたが、まぁこういうのもよいかと。

初心者向けの講座としてはRaspberryPIからI2Cで温度センサーの値を読み取る というのが行われていました。

電子工作に触れてみたい未踏関係者の方はぜひ次回もあるそうなので参加してみてください。

Maker Fair Tokyo 2016に参加した

風邪をひいてダウンしてたので少し前のことになりますが・・
8/6,8/7に開催されたMaker Fair Tokyo 2016に出展者として参加してきました。

http://makezine.jp/event/mft2016/

Maker Fair Tokyoオライリーが主催する電子工作の発表会です。
僕は以前からちょいちょい参加していてまして、 まぁ大人の文化祭みたいなもんだと思ってます。

今回僕は「コネクト・ミー」http://makezine.jp/event/makers2016/connect-me/ の一員として参加しました。

コネクト・ミーとしての参加記録はこちらをご覧ください。
http://connect-me-net.tumblr.com/post/148922762373/maker-faire-tokyo-2016%E3%81%AB%E5%87%BA%E5%B1%95%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F

コネクト・ミーには仕事の仲間つながりで混ぜてもらいました。
「にゃんぼっと」という植物の様子を教えてくれるいわゆるIoT的なアシスタント的なアレアレを作りました。

にゃんぼっとの中身はESP-WROOM-02です。僕は中身の処理の大雑把な実装と、電子回路のダブルチェック係(メンバーの中では電子工作歴が少しだけ長いので)をしてました。
以前 http://d.hatena.ne.jp/inajob/20160618 こんなことをやっていたので、少しだけ役に立ちました。なんでも触っておくもんですね

で、せっかくなのでブースの端のほうを少し開けてもらって、自作ゲーム機と、自作楽器を展示していました。

僕のブース(正確にはコネクト・ミーのブースの端っこ)

自作楽器はhttp://d.hatena.ne.jp/inajob/20160312 で紹介した、発注した基板を使ったものです。
ソフトウェアを改造して、「デチューン」の効果を入れてみたところ、会場のざわざわノイズに若干強くなったかなと。
見に来てくれた方にはおおむね好評でした。操作方法を説明すると、さらっと一曲引いてくださる方もいて、個人的に感動しました。
せっかく基板も作ったことだし、興味のある人に配ってみたいな なんてちらっと思ってみたり・・

自作ゲーム機は http://d.hatena.ne.jp/inajob/20160322 で紹介したものです。
このゲーム機はGamebuinoをベースとしたもので、今回の展示ではArduboyのライブラリを移植し、Arduboyのゲームを動かせるようにしていました。


Arduboy本家との遭遇

と、なんの偶然かFabxFabのブース(http://makezine.jp/event/makers2016/fabxfab/ )にArduboyのポスターが掲げてあるではありませんか!

Arduboyの掲示板でちらっと「出展するよ」みたいなことが書いてあったのに、ブースがないなぁ と思ってたのですが、どうやら代理店(?)を通しての展示・販売ということだったようです。

そして、なんとそのブースでArduboy作者のKevinに会うことができました。


片言の英語ですが、事前にArduboyのフォーラムで紹介していたりしたので、 「ああ、これがあの!」「そうです!、これです、触ってみてください」的なことを話すことができました。
オープンソースのゲーム機を真似して実装してたら、ひょんなことから海の向こうの作者さんと会えた! ということで割と感動しました。

ロボット芸人さんをArduboy売り場までご案内イベント

また、僕のtwitterのフォロワーさんもちらちら遊びに来てくれて、「あ、あなたがあのアイコンの人ですね!」みたいなオフ会的なコミュニケーションをしていました。
面白かったところでいうと
ロボット芸人の「高橋ちゃん(https://twitter.com/pokipoki121 )」さんが、思っていた以上にちゃんとした芸人さんで(失礼しました;)、ロボットと一緒に僕のブースに来てくれました。
ゲーム機にすごく興味があるということだったので、Arduboyのブースまで案内して購入を見守るというRPGのお使いクエストみたいなのを実施ました。

GamebuinoやArduboyをインターネットで見つけて、実装していたら思った以上にいろんな人と関わることができているなぁと実感できるイベントでした。

その他、気になったものたち

https://twitter.com/qx5k_iskw さんの、小さいペンプロッタ!これは僕も作ってみたい!

SDカードの中に加速度センサーを入れて、後処理でキャリブレーションを行うことができる「VirtualGimbal」 (写真が雑だった・・)

ESP8266で作ったゲーム機 WifiBoy http://makezine.jp/event/makers2016/wifiboy/

感想

趣味で電子工作をやってきましたが、会社の仲間からも「電子工作ができるヤツ」ということで、今回のようなイベントに誘ってもらえるようになりました。
また、Arduboyも成果をこのブログやフォーラムに書いていたことがきっかけで、本家の方とも挨拶することができました。
このブログやTwitterなどにこまめにアウトプットしていたことがここにきて実ったのかなと思っています。

社会人になってなかなか、学生の時ほど自由な時間が取れないですが、限られた時間で興味があることをいっぱいやって、その成果を発信していくことで、こういった楽しいイベントなどに参加できるということを改めて実感しました。
まぁ今後もゆるりとこのブログやTwitterにやっていることを書き出していきたいなと思っています。

これからもどうぞよろしくお願いします。

といったところででMaker Fair Tokyo 2016の参加レポートでした。

スイッチサイエンスのMicro:bit互換機を使ってみた

BBCが小学生に無料で配っているらしいMicro:bit互換機を手に入れたので、一通り触ってみたレビューです

本家: https://www.microbit.co.uk/

BBC-micro-bit
flickr

互換機

Micro:bitはイギリスのBBCが作ったもので、4cm×5cmの大きさのボードで、中身はCortexM0。 電池やUSBで動作するmbedな開発ボード。

Arduinoやmbedを使ったことがある人なら、そういうものの一種だと思ってもらえると。

ただし、micro:bitにはデフォルトでたくさんの入出力がついている。

  • 5×5のマトリクスLED (アルファベットも出せる)
  • Aボタン、Bボタン
  • コンパス(地磁気センサー)
  • 加速度センサー
  • BLE

特徴的な下側のエッジコネクタには、ワニ口クリップがつけやすいように大きなコネクタが5つついている(3つがGPIO、3V,GND)。小さいコネクタもそれぞれれGPIOとつながっている。

本家Micro:bitはイギリス仕様のため、日本の技適は通っていない。
そこでこの互換機です。

http://mag.switch-science.com/tag/microbit/

あのスイッチサイエンスが作っているものです。
モニターを募集していたので、ダメもとで応募したらなんと当選した。 ということで、僕の手元にMicro:bitの互換機がやってきたということです。

どうやらこれは来たる8/6, 8/7のMakerFairTokyoにて販売されるらしいので、この記事を見てほしくなった人は、予定と財布の準備をしておくとよいと思います。

Getting Started

プログラミングから実行までの流れがとてもスムーズだったので、その感動をお届けしようと思います。(micto:bitを持っていなくてもシミュレーターで遊べるので、暇な人は手順を追ってみてください)

まずはこちらにアクセス
https://www.microbit.co.uk/app/


「Create Code」をクリックすると、何でプログラムを書くか選ぶことができます。

  • JavaScript
    • JSでも書けるらしい。
  • BlockEditor
    • おすすめ、Blockyのようなビジュアルプログラミング環境でプログラムが作れます。 今回はこれを使ってみる。
  • TouchDevelop
    • まだ試していないけどMicrosoftのプログラム支援Web開発環境 これもおすすめ
  • MicroPython
    • Pythonでも書けるらしい

BlockEditorをクリックします。

それっぽい画面が出てきます。
あとは、ブロックを並べていきます。

試しにこんな感じ。

「run」をクリックすると、シミュレーションが動きます。



(実際はアニメーションしています)


よさそうなら、いよいよ書き込み。
「complie」をクリック おもむろにファイルのダウンロードが始まります。

  • Micro:bitをUSBでパソコンに接続すると、USBストレージが現れます。
  • 先ほどダウンロードしたファイルを、そのUSBストレージにコピーします。
  • 少し待ちます。
  • 書き込み完了です。



(実際はアニメーションしています)


すごい簡単!

ざっと感想

LED、加速度センサー、地磁気センサー、ボタン、BLE、などが初めからついているArduinoという感じ。
BlockEditorも簡単。とにかく手軽に始められる電子工作環境だと思いました。

Arduinoでもツールを組み合わせれば近いことはできるけれども、それがデフォルトでいきなり使えるというところがMicro:bitの強みかなと思いました。( https://developer.mbed.org/platforms/Microbit/ )

また中身はmbedなので、普通にmbedのIDEを使ってより複雑なプログラムを作ることもできるため、一通り遊んで、さらに踏み込んだことがやりたくなったときも、そのまま使い続けることができるというのも良いと思いました。

ともかく何もかも簡単なので、プロトタイピングはまずMicro:bitでやってみる、というのはありだと思いました。