「さ~ボード」プロジェクト(15)ー 自動販売機キットの製作

「さ~ボード」プロジェクト(11)で書いたように、文科省の「小学校・プログラミング教育の手引き」では、「総合的な学習の時間」の探究的な課題として自動販売機をプログラミングする事例を紹介しています。前回は市販のペーパークラフトを改造しましたが、紙とはいえ教材としては高額でかさばるものでした。そもそもこのプロジェクトは、どこの小学校でも簡単にプログラミング教育が実施できるのを目標にしていますので、最小限の構造で、小学生でも作れる安価なキットができないか考えてみました。

機構については、前回の改造ペーパークラフトを踏襲し、サーボで半円筒を回転させるものにすればよさそうです。全体を小型にしたいので扱う商品はキャンデーや小さなチョコなどとします。
機能は最小限にして、一回ごとに商品を補充する単発式でいいと思います。また商品の補充や調整を簡単にするため、筐体の背面は開放式のほうがよさそうです。開放すれば機構の動作もよくわかります。

材料は身近で揃う物にします。筐体はボール紙などを想定し、A4判の用紙1~2枚で収まるように考えます。とりあえず設計図らしきものを描いててみますが、手描きもあれなのでソフトを使います。
一歩進めて設計図から児童に描かすことも想定するとCADはあれですし、お絵かきソフトの図形の組合せで各部の寸法に矛盾なく描くのは、結構難易度高いです。手描きなら方眼紙か工作用紙に描くところですので、ここで登場するのが、一部の用途で悪名高い「Excel方眼紙」です。方眼なので直角は保証されますし、セルの数で寸法が簡単に合わせられます。

Excelのセルの範囲を選択して、周囲に罫線を引けば簡単に四角形が描けます。あらかじめシート全体の行と列の高さを19ピクセルに設定しておくと、誤差はありますがほぼ5mm方眼の方眼紙になりますので、この方眼の上に、罫線で筐体とパーツの展開図を描いていきます。

安定のため底面を少し大きくしてあります。A4で2枚になりましたが、A4のプリンターに通せる厚紙があれば直接印刷すると簡単です。今回は普通紙に印刷してからダイソーの白ボール紙に貼ってカッターで切り出しました。

組立は、のりしろにスティックのりなどで接着したうえでセロハンテープで補強します。
商品を排出する半円筒部は、片側にサーボのホーンをセロハンテープで固定し、反対側は千枚通しで穴をあけて、つまようじを軸に筐体と串刺しにします。つまようじはハサミで適当な長さに切断します。

サーボの取り付けは、筐体に後半部が通るサイズの穴をあけておき、内側からセロハンテープで固定してあります。

コイン検知のセンサーは、2枚のアルミホイル片を1~2㎜程度の間隔をあけて貼り付け、ジャンパーケーブルをセロハンテープで留めてあります。

つぎにScratchで作るソフトウェアを考えます。

動作の基本的な流れは文科省の事例にあるように
(1)コインを投入する
(2)コインの投入を検知
(3)購入ボタンが押せる状態になる
(4)購入ボタンを押す
(5)商品が排出される
という順序になります。

(1)(2)コイン検知は「いぬボード」のセンサーを利用します。「いぬボード」のセンサーはジャンパの設定で、内蔵の光センサー(フォトトランジスタ)と、外部入力を切り替えられます。アルミホイルのセンサーを外部入力の「IN」と「GND」に接続します。
「いぬボード」からPCへ入力される音量は、外部入力が開放状態のとき最大(100)、短絡状態のとき最小(0)になりますので、コインがないときは音量=100、コインでセンサーが短絡されると音量=0になるはずですので、Scratchの「音量」変数でこの状態を取得します。

(3)コイン投入を検知したら購入ボタンをイネーブル(使用可能)状態に変化させます。
実際の自販機ではボタンにランプが点いて直感的にわかるようになっています。Scratchの場合はボタンのスプライトに色違いのコスチュームが用意されているので、これを切り替えるとそれらしくなります。

Scratchのスプライトはキャラクターを動かすだけでなく、アプリのユーザーインターフェースを作れるのが、同種の他のソフトと違うメリットのような気がします。

(4)(5)ボタンが押されたら、音を出して「さ~ボード」に入力し、サーボ回転の指令とします。この「さ~ボード2」のファームウェアは25KHz(音程99)と62KHz(同115)に対応させていますので、音量=100%、楽器=12(フルート=正弦波)、音程=99の音を1拍発生させます。

おまけとして、自販機らしくするためコイン投入で金額を表示するようにしました。
あとは、コインが未投入の場合はボタンが機能しないという条件判断を付けてもいいと思います。(現状はコインがなくてもボタンを押すとサーボが回ります)