2020年10月27日火曜日

20.10.27 色紙でうろうろ歩き

 


以前カラーセンサーを使って「信号を守って走る三輪車」を作ったが、同じカラーセンサーで違う動きをさせてみた。

格子状の道を歩くうろうろ歩きで、交差点に色紙を置き、その色紙の指示に従って歩くようにする。


床に置いた色紙の色を検出するため、センサーは床から8mm位の高さに下向きに取り付ける。反射光が強くなるように白のLEDで床を照らし、明るい部分がセンサーの正面になるように調整する。
色紙は、Mr.ぶんぐで赤・黄・緑・青、の4色を買ってきた。色紙がなくて、白い床のままのところもあるので、白を加えた5色を判別できるようにする。


道路は以前作ったものをそのまま使う。センサーが車体の左側についているので、交差点の左手前に色紙を置くことにする。トレース用のセンサーの邪魔にならないよう、色紙は1辺が2cmの正方形にした。車輪に蹴飛ばされて動かないよう、両面テープで軽く固定しておく。
センサーの反応を待ったり測定値が安定するまで待ったりする必要があるので、交差点に来たらいったん停止して、測定値が安定するまで待つようにした。数百msの待ち時間になる。


色紙による指示は、赤:3秒間停止、黄:右折、緑:左折、青:直進、とする。赤以外のときにも、色紙を認識したことがわかるよう2秒間停止するようにした。指示に従うとコースをはみ出す場合は指示に従わずにランダムに方向を決める。
センサーの出力が周囲の明るさにも影響されるので、あまり明るいところや窓のそばでは誤動作することがあるが、夜になると元気に動くようになる。

2020年10月26日月曜日

20.10.26 かくれハモンドでBGM

 


今年の春はコロナでものづくり教室も4か月間休みになり時間があったので、久しぶりにPCのソフトを作ることにして、かくれハモンドキーボードをパソコンから鳴らすソフトをGUIを使って作ることにした。


GUIでソフトを作る環境としてJavaを試してみたが、グラフィックやMIDI周りなど、ネットで調べながら1人でやるのは難しく、ほかの方法を探していたところ、最近のVisualStudioは無料のものでもGUIを使えることがわかり、これを使うことにした。
ちょっと古いやりかたらしいが、C++で使えるMFCを使うことにして、ダイアログベースのアプリを作ってみた。
ハモンド音源の音色とエフェクトを操作し、SMFファイルで自動演奏ができるソフトを作る。

9本のドローバーをスライダーでコントロールしようと思ったが、スライダーを9本画面に並べてイベントハンドラーを9つ書くのは面倒なので、ドローバーの組み合わせのプリセットデータをスピンコントロールで選んで呼び出す方法にした。エフェクトも同じように9つのプリセットから選ぶ。プリセットデータの内容は、画面で表示するようにした。
自動演奏は、以前SMFのプレイヤーを作ってあったので、これを組み込んだ。曲を登録しておくと、次々にランダムに曲が鳴る。ついでに音色とエフェクトもランダムに変わるようにしてみた。



パソコンと音源の接続は、秋月から調達したUSB-Serialインターフェイスを使う。かくれハモンドは電池の消費量がかなり多いので、電源をUSBからもらうことにした。これで電池交換の心配もない。さらに、BGM用ならキーボードは不要なので、BGM専用に音源基盤とUSB-Serialインターフェイスを板につけたものを作った。



ハモンドの音は刺激が少ないし、和音の鳴り方も気持ち良くてBGMには具合がいいので、小さめの音でよく鳴らしている。


2020年10月25日日曜日

20.10.25 かくれハモンドキーボード

 


4年前に作ったハモンド音源をものづくり教室の教材用に作り直した。音源部のソフトはほとんど以前のままで、生徒が作りやすいようにプリント基板を作成した。キーボードはプラダンで1オクターブのものを作る。ドローバーはなしでプリセット音色だけとした。


音源部はプリント基板を作ったので生徒も短時間ではんだ付けできた。マイコンのdsPIC33FJ64GP802はかなり電気を食うし、ヘッドホンも鳴らすので、音源は単3電池3ヶをレギュレータで3.3Vにして使う。ヘッドホンを鳴らす部分はいくつかアンプのICなど試してみたが、結局以前と同じエミッタフォロワとした。アンプにつなげるところは、直流をカットするためにコンデンサを入れたので、ヘッドホンジャックが2ヶ並んでいる。
ソフトはほとんど以前のまま。デモ用の自動演奏のデータにクラシックのオルガン曲も入れた。


キーボードはプラダンを切って作る。白鍵と黒鍵を1枚のプラダンで作ることにしたが、鍵盤のすき間を2枚刃カッターで切る作業が難しく、予想以上に時間がかかることが判明したため、仲間が作ってくれた3ヶに加え、新たに5ヶの2枚刃カッターを作成した。鍵盤の接点はメッキ線を使い、共通のグランド接点はアルミテープを使うことにした。



基板と鍵盤の間をフラットケーブルで接続するが、接点のメッキ線とフラットケーブルをはんだ付けする作業が難しいようで、ほとんどの生徒が苦労していた。



小さなキーボードだけど、スピーカーで鳴らすと本格的な音で聴けるし、レスリースピーカーの効果もあるので、生徒も喜んでいた。


2020年7月5日日曜日

20.7.5 加速度リモコン


加速度センサーのMPU-6050を使って三輪車のリモコンを作った。重力加速度と手で振動させる加速度を使う。


センサーのMPU-6050はX,Y,Zの3軸の加速度を測定するセンサー。最初はセンサーの使い勝手を調べる意味もあり、水準器を作った。重力加速度の変化を測定して、傾きを十字型に並べたLEDで表示する。水平なら中央のLEDだけが点灯するが、傾くとX方向とY方向の高い方にLEDの光が移動する。センサーの感度は5段階に切り替えられるようにしてある。


水準器の応用で、傾けた方向に三輪車が走るリモコンを作ってみた。前に傾けると前進、右に傾けると右折、左に傾けると左折する。
もう1つは、リモコンを前後に振動させると、その加速度で前進の速度を決める。左右は傾きで制御する。このやり方は、疲れるしうまく走らせるのは難しい。


おまけで、簡単なシューティングゲームも組み込んだ。1つめは、横に並んだLEDの左から右に的が動いていくので、中央に来た時にスイッチを押すと的が爆発する。外れるとそのまま右に消えていく。的に当たると、次は的の動きが速くなっていく。
2つ目は上級者向けで、的が左右、右左、上下、下上にランダムな方向で飛んでくるし、次に出てくるまでの間隔もランダムに変化する。

2020年7月4日土曜日

20.7.4 手回し電子サイコロ


発電と蓄電をテーマにして、電子サイコロを作った。発電は去年三輪車で使ったギヤ付きモーターを使い、蓄電はスーパーキャパシタとも呼ばれる電気二重層コンデンサを使う。


発電用のギヤ付きモーターに手回し用のアームを3Dプリンターで作り、レゴのハンドルをつけた。蓄電は充電式の電池ではなくコンデンサを使うことにして探してみたところ、秋月で1Fのものが1ヶ100円であるのを発見。サンプルを調達してみた。ちなみに、電源などで100μFくらいのコンデンサを使うが、1Fはこれの1万倍。


モーターの出力をダイオードで整流してコンデンサに溜める。最初の実験ではコンデンサを3ヶつけて3Fにしてラジオを鳴らそうとしてみたが、モーターをブンブンまわしても瞬間的にザーというノイズが出る程度で、音を出すのはあきらめた。3Fあっても、電池の容量とは比べ物にならないことがよくわかった。
消費電力が少なくて、短時間で遊べるアプリとして、電子サイコロに落ち着いた。LEDを6角形に並べ、サイコロの目を表示する。同時には1ヶだけ点灯すればよいので、コンデンサ1ヶで十分遊べることがわかった。


電圧が下がっても使えるよう、最近よく使っているステップアップレギュレータを使う。これで、3.3Vに昇圧してマイコンとLEDを動かす。
コンデンサに蓄えた電力を表示するため、コンデンサの出力の電圧を測定して表示することにした。LEDの点滅回数で電圧を表示する。3回点滅なら3V以上、2回点滅なら2V以上、1回点滅なら0.5V以上とした。点滅しなくなったら動作しなくなるので、モーターを回して充電する。

サイコロの操作はスイッチ1ヶで行う。スイッチを押して離すとLEDがクルクル回って光り、動きが徐々に遅くなって止まり、どれか1つのLEDがブリンクしてブザーが鳴る。スイッチを押している時間が長いと止まるまでの時間が長くなる。
スイッチをダブルクリックすると、LEDが回るのではなく、ランダムに点滅し、動きが徐々に遅くなって止まって出た目を表示する。さらに、3回押しにすると、サイコロ2ヶが同時に振られたことになり、止まった時に2つのLEDが点滅する。2つのサイコロが同じ目のときは、ブリンクの周期が半分になる。

2020年7月3日金曜日

20.7.3 CD永久ごま


仲間からCDのメディアをたくさんもらったので、CDをコマにしてみることにした。
基本構造は以前作ったものと変わりないが、細部はかなり違うものになった。


以前はコマはレゴのブロックで作ったが、今回はCDを使う。磁石はCdの裏面に張り付けることにした。軸はレゴの軸を使うが、軸の先を尖らせると安定して回ることがわかった。磁石をバランスよく張り付けて、レゴの軸を通すアダプターを3Dプリンターで作成した。CDの表には丸い玉で虹の色を印刷してみたが、インクジェットではきれいな色は出なかった、残念。


コマを回す台は前回は盃を使ったが、今回は木製のスプーンを使う。百均で見つけたお茶用の小さなスプーンがそのまま使えるのでこれを採用。
磁石の位置を検出するセンサーは、以前はリードスイッチを使ったが、ケースのガラスが割れやすいので、今回はホールセンサーを使うことにした。薄いトランジスタのような形で、割れる心配もない。センサーの取付位置は微妙なので、コマを回しながら調整する必要がある。駆動用のコイルは以前作ったものをそのまま試作に使った。生徒は治具を使ってコイルを巻くことになる。
磁石が4ヶ、コイルが2ヶついていて、センサーに磁石が近づいたのを検出するとコイルに電流を流し、磁石とコイルが反発して回転を続ける。
基板は3年位前に仲間に作ってもらったリモコン用のプリント基板を一部修正して使う。CPUは新しいPIC12F1572を使うことにした。


コマの磁石がセンサーやコイルにぶつかると、壊れてしまう可能性があるので、カバーを作った。スチレン板をCDくらいの大きさに切り、コイル・センサにかぶせるように置くことにした。これで、コマの回転が止まるときもおとなしく止まるようになった。


調整するのは、センサーの位置・コマの下に出る軸の長さの2つ。サンプルを見ながら安定して回るように調整する。
スイッチを押すと3分間動作する。時間が来ると動作を停止し、CPUはスリープする。動作中にスイッチを押すと動作停止する。

2020年7月2日木曜日

20.7.2 マイコン式手回し計算機


60年以上前に、タイガー計算機という機械式手回し計算機が使われていた。今回は、同じように手回しで計算する「マイコン式手回し計算機」を作ってみた。
計算は、「答え」±「足す数」→「答え」の足し算・引き算だけができる。掛け算は足し算を繰り返して行うことで計算する。掛け算の場合は、掛ける数の1桁分ずつしか計算できないので、筆算と同じように、桁をずらしながら計算する必要がある。でも実際は掛け算が一番得意。


マイコンは、掛け算は必要ないのでPIC16F1508を使う。表示は16*2文字の液晶表示器を中国から調達した。操作子は5ヶのタクトスイッチを使い、ハンドルはレゴのブロックで作った。ハンドルの回転の数と方向を2つのフォトインタラプタで検出する。


表示は左上に「足す数」(8桁)、右上に「足す回数」(6桁)、左下に「答え」(8桁)、右下に「計算」(*/)の4つ。
下の写真は「123*45=5535」の計算をした結果。


「足す数」の入力
機械式のものは、桁ごとにレバーを動かして値をセットするようになっていたが、今回は桁ごとにハンドルを回して値をセットすることにした。
"IS"スイッチを押して「足す数」のどれかの桁がブリンクするようにし、"DL","DR"スイッチを押して桁を選ぶ。ハンドルを右に回すとブリンクしている数字が1つずつ大きくなり、左に回すと小さくなる。


足し算(54+32=86)
"CA"でクリア、ハンドルを回して「足す数」を54にする。"IS"を押して「足す回数」の1の位がブリンクしているのを確認してハンドルを1回右に回すと、「答え」が54になる。"IS"を押してハンドルを回して「足す数」を32にして、"IS"を押してハンドルを1回右に回すと答えが足し算の結果の86になる。
引き算は上の手順の「足す数」を32にして"IS"を押した後、ハンドルを左に1回まわすと「答え」が引き算の結果の22になる。

掛け算(123*45=5535)
"CA"でクリア、まずハンドルを回して「足す数」に123を入力する。次に"IS"を押して「足す回数」を45にすると、「答え」が掛け算の結果の5535になる。

割り算(3456/78=44余り24)
"CA"でクリア、まずハンドルを回して「足す数」に3456を入力する。次に"IS"を押してハンドルを右に1回まわすと「答え」が3456になる。次に"IS"を押して「足す数」に78を入力する。次に"IS"を押すと「足す回数」の1の位がブリンクする。3456/78の商は10の位からになるので、"DL"を1回押して10の位がブリンクするようにする。ハンドルを左に回していくと、「ピッ」と音がして「答え」がマイナスの値になるので、ハンドルを1回右に回すともう一度「ピッ」と鳴って「答え」がプラスの値になる。次に商の1の位を求めるために"DR"を押して「足す回数」の1の位をブリンクさせ、ハンドルを左に回していくと、「ピッ」と音がするので、1回右に回してもう一度「ピッ」と鳴らす。これで計算が完了。「足す回数」が商の44になっていて、「答え」が余りの24になっている。


割り算その2(3456/78=44.3076)
割り算の答えを商と余りでなく、小数まで求めたい場合のやりかた。まず割られる数の3456を左の桁に詰めて34560000と入力する。あとは上の例の割り算の計算を「足す回数」の1の位まで繰り返すと、「足す回数」が商の44.3076になる。商の位取りは自分で考える必要がある。

2020年7月1日水曜日

20.7.1 RGB温度計


以前作った3色表示の温度計を教材用にまとめたもの。特徴は、①3色の光で温度を表示する、②目盛りがないので遠くからでも温度がわかる、③自分で光るので暗くても温度がわかる、④使いかけの電池でも動き、きれいに使い切って捨てることができる。


作りやすいようにプリント基板を作成した。部品を基板にはんだ付けすれば、すぐに動くようになる。生徒にはLEDの光の拡散方法とケース作りを考えてもらう。
光の拡散は、サンプルとして、拡散カバーを取り付けただけのもの、ストローの内側をサンドペーパーでこすったものをかぶせて煙突のように光らせるものを用意した。
ケースのサンプルは、黒い画用紙で囲っただけのもの、プラダンで作った箱形のケースを用意した。


温度の表示方法は、①麻雀方式、②バイナリ方式、③モールス方式、の3種類。
①麻雀方式は、4拍1小節で0~39度を表示する。1拍めで10の位、2,3拍めで1の位を表示し、4拍めは休み。


②バイナリ方式は4拍3小節の4ビットバイナリで0.0~99.9度を表示する。1小節め(赤)が10の位、2小節め(緑)が1の位、3小節め(青)が少数の位。


③モールス方式は5拍3小節のモールス信号で0.0~99.9度を表示する。1小節め(赤)が10の位、2小節め(緑)が1の位、3小節め(青)が少数の位。


今回使ったセンサーは測定温度のオフセットが大きいので、オフセットをキャンセルするためにキャリブレーションをやることにした。
以前使った、温度・湿度・気圧を測定できるセンサーの精度がまずまずだったので、このセンサーと振り子測りの基板で温度計を作成した。この温度計とRGB温度計をケーブルでつなぎ、スイッチをダブルクリックすると正確な温度の値がRGB温度計に伝わり、温度のオフセットを記録して調整する。


2020年6月30日火曜日

20.6.30 信号を守って走る三輪車


コロナ対応の気分転換で久しぶりにおもちゃの書き込み。
去年作った「ライントレース三輪車」に信号の色を判断するためのカラーセンサーを取り付けて、信号を守って走らせてみた。
走る道は楕円形のコースに直角に交わる直線の道路を追加して交差点を2つ作った。信号は緑・黄・赤の3つのLEDで作り、1つの交差点に置くことにした。


去年作った三輪車の基板にカラーセンサーを追加した。CPUの端子は使っていないピンがあったので、基板の裏にケーブルをはんだ付けしてセンサーをつないだ。センサーは小さく切った基板に取り付けて、メインの基板に取り付けてある。
スタートさせるときは、内部の直線の道路に三輪車を置く。交差点で内部の直線から外周に行くときは右折か左折、外周を走っていて交差点にきたときは直進か曲がって内側の直線に進む。


信号は4セット作り木の枠に取り付けた。緑・黄・赤の3つのLEDを4セット光らせるが、一度には1色しか光らないので、4セットの信号を50*4=200Hzで時分割で点灯させる。色で明るさが異なるので、点灯時間は色ごとにタイマーで調整する。
信号を木の枠に取り付けたが、センサーになるべく垂直に光が当たるよう、取付の高さはセンサーの高さギリギリにしてある。


カラーセンサーは浜松ホトニクス製のもので、RGBと赤外のフォトトランジスタの出力が出てくる。信号のLEDの光の強さを測定するとき、周囲の明るさが変わるとセンサーの出力が変化するため、その調整もやるようにしたが、基本はなるべくLEDに近い距離で測定することにした。


走るのが1台だけなのに信号が必要か?という疑問はあるが、簡単なセンサーでも信号の色を検出できることがわかった。