SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

Ichigoチャイム

IchigoJamサーボモーターで鉄琴を叩いて、おなじみの学校チャイム(ウェストミンスター・チャイム)を奏でてみました。
動画はこちら。

※(11/7)改良版の動画に差し替え。


※(11/7)改良版の写真に差し替え。

鉄琴は、市販の鉄琴工作キットを使いました。
大きな基板(ベニヤ板)が付いていて、まさに改造工作のためにあるような品です(^_^)

マレット(バチ)は2本付いていますが、今回は4本欲しかったので、追加で別の品を2本購入しました。

ヘッドの大きさがキット付属のマレットと若干違うのですが、そこは気にしないことに。
なおヘッドが「硬い」品にしないと、鉄琴を叩いた時に綺麗に響きません。


※(11/7)改良版の写真に差し替え。

マレットは棒を短く切って、サーボモータSG92Rにアロンアルファで接着。機構全体を、近所のホームセンターで買ったコルクブロックに載せています。
なお、サーボモーター機構はいろいろ試行錯誤しました。
当初はカムロボなどでよく使われる小型のSG90にしたのですが、マレットの重さでトルクが足りず、動かして止めた時にハンチング(ブルブル振動して止まらない)を起こしてしまいました。
トルクが大きいSG92Rに変えた所、だいぶ軽減したのですが、それでもハンチングは止まらず。
そこで、マレットのホームポジションを真上方向に変えて、真上から100°ほど叩き下ろして、すぐに真上へ戻すようにしました。真上で止めるとハンチングが起きません。
これだとテンポの速い曲は演奏できないのですが、今回はスローなチャイムなので問題なし。
機構を変えて、スプリングで支えたマレットをサーボで弾くなどすると、もっと安定して叩けるかもしれません。

※(11/7)改良版
サーボモーターの動きのばらつきを吸収するため、マレットの柄を途中で切断して、スプリングでつなぎました。だいぶ安定して鉄琴を叩けるようになりました。
スプリングは、ホームセンターで買った8mm径の引きバネです。本当は7mm径があれば、一番マレットの柄に合いそうでしたが…。



IchigoJamサーボモーターの間は、子どもの工作も想定してブレッドボードとジャンプワイヤで配線。
電源はIoT用モバイルバッテリ「cheero Canvas」を使いました。

cheero cheero CANVAS 3200mAh IoT対応 モバイルバッテリ

cheero cheero CANVAS 3200mAh IoT対応 モバイルバッテリ

展示用に持ち運びできるようにしたかったのと、乾電池だと電圧が変動してサーボモーターの動きが安定しないからです。また、待機時は消費電力が少ないので、普通のモバイルバッテリだと給電が自動的に切れてしまいます。

ベニヤ板に色を塗ったりしてカスタマイズ工作もできるので、子ども向けの工作企画にいかがでしょうか。

プログラムリスト

※(11/7)改良版のプログラムに差し替え。

  • プログラムを起動すると、マレットがウォームアップ動作をします。しばらく動かしてサーボモーターを暖めないと、叩く動作が安定しません。IchigoJamのボタンを長押しすると止まります。
  • もう一度ボタンを押すと、チャイムを演奏します。演奏終了後にボタンを押すと、再度演奏します。
10 '*Chime V2
20 CLV:VIDEO 0:LED 1
30 'Home Pos,Strike Pos,Strike Wait (Mallet 2-5)
40 LET [90],50,146,11,50,158,12,54,166,12,54,164,12
50 M=12
60 'Melody (Mallet 2-5, 0=Rest)
70 LET [0],3,5,4,2,0,0,3,4,5,3,0,0,5,3,4,2,0,0,2,4,5,3,0,0
80 L=23
90 'Warm Up
100 @WARMUP
110 FOR P=2 TO 5
120 GSB @P0
130 NEXT
140 IF !BTN() GOTO @WARMUP
150 'Home Reset
160 @RESET
170 FOR P=2 TO 5
180 H=[84+P*3]
190 PWM P,H
200 NEXT
210 IF BTN() CONT
220 WAIT 60
230 LED 0
240 'Play Loop
250 @LOOP
260 IF !BTN() CONT
270 LED 1
280 P=2:GSB @P0
290 FOR I=0 TO L
300 P=[I]
310 IF P GSB @PING ELSE WAIT M
320 WAIT 30
330 NEXT
340 LED 0
350 GOTO @LOOP
360 @PING
370 H=[84+P*3]
380 S=[85+P*3]
390 W=[86+P*3]
400 PWM P,S:WAIT W:PWM P,H
410 RTN
420 @P0
430 PWM P,100:WAIT M
440 PWM P,50:WAIT M
450 RTN

OUT2〜5の4本のPWM出力で、4個のサーボモーターを動かしています。
出力が4本なので、今回は4音階のチャイムを作ることにしたのですが、IchigoJamを2台にして相互に通信しながら動かせば、8音階全て演奏できるかもしれません。

40行で、4個のサーボモーターのホームポジション・叩くポジション・WAITを初期設定しています。これは各モーターの個体差やマレットの工作具合によるので、実際に動かしてみて調整する必要があります。

70行はチャイムの音階データです。OUTポート番号(2〜5)で指定しています。0は休符です。

  • GBAD GABG BGAD DABG
  • ソシラレ ソラシソ シソラレ レラシソ

今回は鉄琴の高い音を出したかったので、マレット位置を高めの音階にしました。実際の学校チャイムは、これより一音階低い「ファラソド〜」の所が多いかもしれません。

本格的なディナーチャイムを使えばもっと綺麗な音が出そうですが、かなり高価なので子ども向け工作にはちょっと…(^_^;)

ゼンオン ディナー・チャイム C5

ゼンオン ディナー・チャイム C5