週刊 パタパタをArduinoで動かしてみた

電子工作の素人でエアラインファンの人が、ジャンク市で手に入れたかつて空港で使われていた行先表示板「パタパタ」を動かす妄想にとらわれてArduinoやステッピングモーターにお小遣いをつぎ込んでいく趣味の記録です。原則土曜日更新。

カテゴリ: パタパタ

前回までで、とりあえず安定して動作するものが作れました。

もっと良くしたい課題はいくつもあるのですが、その中で最も簡単に取り組めそうな、
「見た目を良くする」
に、今回はトライしました。やってみたのは以下です。

1:ステッピングモーターの配線を短くする
↓ Before
00

↓ After
43

これは簡単でした。ステッピングモーターからL6470のドライバにつながっている線が長めにとってあったので、これをすっきりさせます。

ついでにストロベリーリナックスで販売している、L6470とステッピングモーターを一体化させる専用のネジでピッタリ取り付けました。モーターと基盤の距離が短くなっているのが分かると思います。これまでは既製品のネジを使っていたので、ちょっとグラグラしていたのですが、これでがたつきがなくなりました。

2:配線に貼っていたビニールテープの見た目を良くする
↓ Before
01


↓ After
58

どの配線をどのピンにつなげればいいかを、これまではビニールテープに番号を書いて貼っていましたが、さすがに見た目が悪いです。できれば取りたいけど、どこにつなぐか覚えられないので、目印は残したい。(回路図は書いたけど、それを見なくても分かるようにしたい)

…ということで、日本人の大好きな「テプラ」で番号を書いてみることにしました。
少しはきれいになったかな?

ちなみに使ったのは、テプラではなくて前からうちにあったブラザーの2430PCという製品です。安くて便利。ちなみにテプラを製造しているのはブラザーらしいので、中身はおんなじなんですかね。

3:ブレッドボードの試作感を軽減する
↓ Before
46

↓ After
15
Sparkfunの超小型ブレッドボードを使ってかなりコンパクトになりました。黒いブレッドボードを採用して他の部分となじませたのですが、コンパクト化の結果、どうしてもトグルスイッチを一つ減らさざるをえなかったり、配線が増えてしまい、きれいかと言われると…ですが。
とりあえず、普通のブレッドボードの白い感じで試作感満載だったのがなくなったのでよしとします。

Sparkfunの超小型ブレッドボードは、その名の通り普通のブレッドボードよりすごく小さいです。
49
サイズは幅45ミリ、高さ35ミリです。
普通のブレッドボードは幅85mm、高さ55mmでしたので、1/4近い大きさになりますね。
色も白、赤、青、緑、黒と揃っていて、なかなかにかわいいです。 
ストロベリーリナックスや、スイッチサイエンスで販売されています。
スイッチサイエンスさんによると、上記のものは廃盤で、連結ができるタイプに置き換わっていくようです。
しかしこのブレッドボード、普通のと違って配線が直行している部分がありません。
bread-w-2b
こんな感じの配線になっています。
これだと、今回のパタパタのように、電流を並列にながしてスイッチを作るようなときにちょっと不便です。上下左右連結できる仕様にするなら、正方形のブレッドボードにしてくれればよかったのに…と思うのは、初心者だからでしょうか?

4:コンセントを一本にまとめる

これまでは、arduinoとステッピングモーターの二つにそれぞれ12V、2AのACアダプタを取り付けてましたが、線が二本になるし、なによりコンセントを二つ使ってしまいます。
実際にはステッピングモーターは1Aあれば足りるようなので、なら一つのアダプタから配線を分岐すればいいじゃない、ということで買ってみました。「DC電源2分配ケーブル」というものです。


共立エレショップという大阪のショップで扱っていました。小さい物なら定形外郵便で送ってくれるので低コストで注文できます。(届かないリスクはありますが…)

一応テスターで計測してみましたが、両方に12Vが供給されているようで、無事動きました。ついでにステッピングモーター側のACの接続端子も少しスマートにして、だいぶコンパクトになりました。


ということで、外観はこんな感じになりました。

01

07

30

56


以上、ドレスアップパーツの紹介みたいになってしまいましたが…
言うほど見た目が良くなってない気がするので、今後ももう少し見た目は凝っていきたいです。


    

このところエイプリルフールのGoogleのパタパタネタとか、大人の科学のパタパタ電波時計とかでお茶を濁してきましたが、とりあえず空港のパタパタも一段落させたいと思い「空港のパタパタがスイッチを押すと動く」というものを作りました。

前回は、Arduinoにケースをつけて、パタパタと一体化させましたが、それにプラスして、スイッチを複数つけてパタパタを自在に(?)操作できるようにしています。

スイッチを作るにあたっては、こことかここを参考にしました。

こんな外観をしています。
58


Arduinoから引っ張ってきている3Vの電気を並列につなげて、それぞれGNDに逃がす途中でArduinoのDIGITAL INに値を返すようにしています(という書き方でいいのかな?)
スイッチは4つで、それぞれ下記のような動きをするように設定しています。

46

・タクトスイッチ(左):押し続けている間、フリップが動く。
・タクトスイッチ(右):フリップが一周して、一つ先のフリップで止まる
・トグルスイッチ(左):スイッチOnの時の間、フリップが動く。(タクト左と同じプログラム)
・トグルスイッチ(右):トグルスイッチ(左)と同じ

プログラムはこんな感じです。相当適当なので、何の参考にもならないと思いますが…

#include
#include // ピン定義。
#define PIN_SPI_MOSI 11
#define PIN_SPI_MISO 12
#define PIN_SPI_SCK 13
#define PIN_SPI_SS 10

void setup()
{ delay(2000); // ピン設定。
pinMode(2,INPUT) ;
pinMode(3,INPUT) ;
pinMode(4,INPUT) ;
pinMode(5,INPUT) ;
pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(PIN_SPI_MISO, INPUT);
pinMode(PIN_SPI_SCK, OUTPUT);
pinMode(PIN_SPI_SS, OUTPUT);
digitalWrite(PIN_SPI_SS, HIGH);
//SPI通信開始
SPI.begin();
// シリアル通信。
Serial.begin(9600);

SPI.setDataMode(SPI_MODE3);//SCKの立ち上がりでテータを送受信&アイドル時はpinをHIGHに設定 SPI.setBitOrder(MSBFIRST);//MSBから送信

//前のコマンドの引数を消去
L6470_send(0x00);//nop
L6470_send(0x00);
L6470_send(0x00);
L6470_send(0x00);
//デバイスリセットコマンド
L6470_send(0xc0);//ResetRevice
L6470_setup();//L6470を設定
}

void loop(){
//以下に動きを書くとその通りに動く
int i = 0; //一度押すと、61枚送るスイッチ
if (digitalRead(2) == HIGH) { //2番ピンとつながってるスイッチがonになったら下記を実行
while(i < 61){//ここの数字ぶんパタパタする。
L6470_send(0x51);//Run(DIR,SPD),0x51:正転,0x50:逆転L6470_send(0x00);//SPD値(20bit)ここから下の3行でスピードの20bitを表現しているらしい
L6470_send(0x20);//ここの数字を下げると遅くなる
L6470_send(0x00); delay(133);//この数字の時間だけ動作する i++;
}
L6470_send(0xB8);//HradStop_急停止
}

//押している間、パタパタする
if (digitalRead(3) == HIGH) {//3番ピンとつながってるスイッチがonになったら下記を実行
while(i < 1){
L6470_send(0x51);//Run(DIR,SPD),0x51:正転,0x50:逆転
L6470_send(0x00);//SPD値(20bit)ここから下の3行でスピードの20bitを表現しているらしい
L6470_send(0x20);//ここの数字を下げると遅くなる
L6470_send(0x00); delay(133);//この数字の時間だけ動作する i++; }
L6470_send(0xB8);//HradStop_急停止 }

//押している間、パタパタする
if (digitalRead(4) == HIGH) {//4番ピンとつながってるスイッチがonになったら下記を実行
while(i < 1){ L6470_send(0x51);//Run(DIR,SPD),0x51:正転,0x50:逆転 
L6470_send(0x00);//SPD値(20bit)ここから下の3行でスピードの20bitを表現しているらしい
L6470_send(0x20);//ここの数字を下げると遅くなる
L6470_send(0x00); delay(133);//この数字の時間だけ動作する i++; }
L6470_send(0xB8);//HradStop_急停止}

//押している間、パタパタする
if (digitalRead(5) == HIGH) {//5番ピンとつながってるスイッチがonになったら下記を実行
while(i < 1){ L6470_send(0x51);//Run(DIR,SPD),0x51:正転,0x50:逆転 
L6470_send(0x00);//SPD値(20bit)ここから下の3行でスピードの20bitを表現しているらしい
L6470_send(0x20);//ここの数字を下げると遅くなる
L6470_send(0x00); delay(133);//この数字の時間だけ動作する i++; }
L6470_send(0xB8);//HradStop_急停止
 }
//ここまで

}

void L6470_send(unsigned char add_or_val)
{ digitalWrite(PIN_SPI_SS, LOW); SPI.transfer(add_or_val); // アドレスもしくはデータ送信。
digitalWrite(PIN_SPI_SS, HIGH); } void L6470_setup(){ //最大回転スピード
L6470_send(0x07);//レジスタアドレス L6470_send(0x00);//値(10bit),デフォルト0x41
L6470_send(0x30); //モータ停止中の電圧設定 L6470_send(0x09);//レジスタアドレス
L6470_send(0x20);//値(8bit),デフォルト0x29
//モータ定速回転時の電圧設定
L6470_send(0x0a);//レジスタアドレス
L6470_send(0x40);//値(8bit),デフォルト0x29
//加速中の電圧設定
L6470_send(0x0b);//レジスタアドレス
L6470_send(0x40);//値(8bit),デフォルト0x29
//減速中の電圧設定
L6470_send(0x0c);//レジスタアドレス
L6470_send(0x40);//値(8bit),デフォルト0x29
//フ ル ス テ ッ プ,ハ ー フ ス テ ッ プ,1/4, 1/8,…,1/128 ステップの設定
L6470_send(0x16);//レジスタアドレス
L6470_send(0x00);//値(8bit)
}


回路図的な物はこんな感じ。回路図を描くツール、Fritzingを初めて使ってみました。
130504_bread


これで、とりあえずですがパタパタを動かして楽しむことはできるようになりました。





課題は

・スイッチを押し続けるとフリップを送り続けてしまうが、「押しつづけていても1枚だけめくって止まる」という仕組みを作りたい

・正確に1周するようにしたい(現在は時間で歯車を動かしているため、どうしてもずれが生じる)

・12Vの電源アダプタが2個必要なのがかっこわるい

・大人の科学の電子時計みたいに、時を刻むパタパタにしてもいいかも

・見た目にブレッドボードだったり、配線がぐちゃぐちゃでかっこわるいので、もう少しきれいにしたい

などなど。山積みです。
最後のやつ以外は、独力では解決できないかもしれませんが、またいろいろと調べつつ、地味にやって行こうと思います。

 次回は外観を少しきれいにしてみます。

   

このGWは「大人の科学マガジン」付録のパタパタ電波時計を作っていました。

 24
表紙。ミッドセンチュリー風です。

0010
 こちらが付録のパタパタ電波時計。裏面にフラップのシートが入ってます。

23 
大きさの目安も掲載されています。これいいですね。
最初に見た印象は、ちょっと大きいかな、でした。

42
組み立て手順書に従って作っていきます。
作業時間は正味90分くらいでした。左右の区別をするところが2、3あるので、そこだけ注意すればそんなに大変なところはないかと思います。

33
モーター。私が使ったようなステッピングモーターではなく、
普通のミニ四駆とかを動かすようなモーターです。
ギアの組み合わせによって回転比率を変える方式を採用しているようです。
市販のパタパタ時計もこういう仕組みなのかな?

41
基盤の写真を取り忘れたので、組み上がったものを撮影(見づらいですが…)
チップらしいものが見当たりませんが、真ん中に黒くカバーされた部分があり、そこにマイコンや電波の受信チップがあるようです。電波時計って最近はこなれてきているんですね。
Leaf Clockという名前が基盤に書かれていますが、詳細はわかりませんでした。
時刻合わせ等を行うボタンはタクトスイッチが使われていて、外側の白いボタンとつながっています。

47
取り付けるモーターには左右の別があります。配線が青い方が右。

47
パタパタのフリップを差し込むギアも左右があります。すごく見づらいですが歯車にL,Rと書いてあるので、注意して組み立てましょう。

39
フリップは手でシートからはがせます。分と時のシートがあるので間違えないように。
ちなみにこのシート、無地のものが5枚500円で追加購入できるそうです。
結構取り外しが面倒なので、どれだけやるかな…という気はしますが。
受付は定額小為替のみの対応、というアナログっぷりが「そこまでして欲しい人にしかお勧めしません!」という意図が感じられて良いです。

34
こうやって1枚1枚取り付けていきます。左右水平に取り付けないといけません。
最初にずれていると、最後の最後で間違いに気づいてもだえることになりますので注意。
単純作業ですがフリップがちょっと外れやすいので、あせらずゆっくりと。

29
完成です。電池を入れると、電波を受信して自動的に時刻が合います。
窓際に置くのが吉。

39 
余談ですが電池ボックスはカバーがなくむき出しです。


動いている動画はこちら。
「パタッ」という音は結構大きめです。しかし空港のパタパタは風圧を感じるほどパタパタしますし、 この商品はパタパタのパタパタたるところを感じるための物ですから、多少うるさくてもそこがいいんですきっと。

ということで、パタパタ電波時計、時間もとても見やすくていいです。ご自宅に一台、いかがでしょうか!


大人の科学マガジン本誌では、前述の白紙フリップを使用して、鉄拳さんが「パタパタ漫画」を描いた様子が掲載されています。なかなか根気がいりそうですがオリジナルのパタパタも面白そうですね。
飛行機ネタでは何が考えられるかな…

  
 

以前ブログでもちょっとだけ書いた、雑誌「大人の科学」にパタパタ時計の付録がつく件、
発売日がいつの間にか4/18に決まっていました。

 

早速amazonで予約注文しました。
今日(4/20)届くはずなのですが…どんな仕組みになっているのかな?

「春発売」 とだけ書かれていてしばらく発売日が決まらなかったところを見ると、
結構開発が大変だったのでしょうか?

空港パタパタのほうは、思ったところで止めるのがうまく行かない日々が続いていてちょっと挫折しているので、何か参考になれば良いと思っているのですが…

 面白い記事も載っているといいなー

 

最近あまり自分の作業に進捗がないので、パタパタに関する雑学(?)でも。

先日、お台場にある日本科学未来館へ行ってきたのですが、そこでパタパタを発見しました。
 
26 

「CHILDREN」とかいてあるところがパタパタです。

32

作品名がわからないのですが、展示としては、世界中の様々な要素がどれくらいの数があるのかを見ることができる装置、といったもののようで(うろ覚え)、上の例では世界の子供にまつわるいろいろな数を表示していたんだと思います。他にもいろんな要素が選択できて、選択するとパタパタと切り替わります。

地味な展示のため、未来館のサイトにも全然説明がないので、ストリートビューの画像を貼付けておきます。動画を取り忘れたのが悔やまれます…


大きな地図で見る

パタパタの側面をズームしてみると、私の持っているパタパタにとても良く似ていることが分かります。金属のエンボスの感じとか、歯車やモーターの感じも同じ。同じメーカーなのかも!?

日本科学未来館のパタパタ
01
 
うちのパタパタ(モーターは取り外してあります)
47 

未来館のパタパタの背面にはなにやら配線と基盤が…
08

さすがに展示物だけあって、他の数字の表示とかとも連携したり、パタパタもしっかり制御されていて、適当に作っている私のとは違いました。って、比較するのも失礼ですが…

47

日本科学未来館さん、これからも訪れる子供たちにパタパタの素晴らしさを伝えていってください!


↑このページのトップヘ