子供の破壊活動への対策

IoT×プログラミング教育の補足情報です。

「Arduino UNO」は、3,000円くらいする高級品?です。

うちの次男、三男、四男あたりが破壊しそうなので、アクリルケースでガードしました。(写真右側)

しかし・・・そんなガードも通用しない気がして、破壊されてもいいように、激安「Arduino Uno互換機」をAmazonで買いました。(写真左側)

500円以下という値段です!

これなら破壊されても、心のダメージは小さくて済みます。

互換機は本当に使えるのか?

互換機「EasyWordMall UNO」は、オリジナルの「Arduino UNO」と、同じようなことができるはずです。

ただ、値段が全然違うので、性能か何か違うのでしょう。

Amazonで説明を読んでいると・・・

キャプチャ:Amazon
Amazon 「Arduino互換機 EasyWordMall UNO」の説明

「オリジナルのUNO R3より高性能。」

いやいや、何を言っているんだい。

 

とはいえ、カスタマー評価は良いし、注文しました。

普通に使える

1週間後、中国語の書かれた封筒に梱包せれ、航空便で届きました。

Windos10のPCに接続してみると、シリアルポート「COM4」として認識します。

Arduino IDEで、シリアルポート「COM4」を選択します。

「マイコンボードに書き出し」ボタンを押すと、あっさりプログラムが書き込まれ、意図通りに動作しました。

あえてこの「EasyWordMall UNO」の悪いところを書くならば、部品の接着がゆがんでいるところでしょうか?

子供に破壊されること前提で買っているので、問題はありません。

 

廉価な互換機であれば、親(私)がビクビクせず、子供は自由(粗雑)に触れるので、のびのび電子工作を楽しめるでしょう。

 

電気の基礎を勉強しよう

IoT×プログラミング教育

進めていくうちに、ある問題に気づきました。

電気の基礎を知らない

ブレッドボードにピンを挿して回路を作ると、見えないところで導線がつながります。なので、回路が「つながる」ということが直感的には分かりません。

そしてもうひとつ。

すごく当たり前のことでしたが、6歳以下の子供たちには、何が電気を通すのかすら、分かっていません。

思い返せば、子供たちと絶縁体や誘電体について語り合ったことはありませんでした。

電気が通る道をつなげよう

まずは、電気を流すためには、電気が通る道をつなげる必要がある、ということを見ていこうと思います。

ブレッドボードを使わずに、LED、抵抗、導線(ジャンパーワイヤー)を、直接テープでつなぎとめます。

接触が悪いので、アルミ箔で巻いてから、テープを巻くとよいです。

 

回路は単純です。

プログラムも必要ない、POWERの「5V」にプラスの線、「GND」にマイナスの線を挿します。

導線は一か所、意図的につなげません。

つなげなかった導線の端には、アルミ箔を付けて、通電実験をしやすくしておきます。

そして、アルミ箔どうしをくっつけると・・・

光ります。

「すごーい!」と感嘆の声を上げる6歳の長男。

電気はスタートからゴールまで、通り道を作ることで流れることを知ります。

電気を通すものは?

身近なもので、電気が通るものを探してみましょう。

まず、スプーンは・・・?

長男「通った!」

 

それじゃあ、箸は?

長男「あら・・・通らないんだ。木だから。」

早くも、絶縁体と誘電体の違いを、つかんできた感じです。

 

まだまだ、実験してみましょう。

お金は、1円玉から500円玉すべて・・・「通る。」

消しゴムは・・・「通らない。」

紙は・・・「通る。あっ、通らない。」

ぬいぐるみは・・・「通らない。」

カバンは・・・「チャックは通るけど、ここ(皮)は通らない。」

 

もう、分かってきたようです。

何でできたものが、電気を通す?

長男「金属!」

 

電気工作を楽しむうえでの基礎をマスターしたようです。

 

 

曲当てクイズ

第5回 IoT×プログラミング教育

電圧スピーカーを使ってメロディーを流し、子供に何の曲かを当ててもらいます。

メロディーをプログラム

回路は前回と変わりません。

プログラムだけ、書き換えます。

ドレミのメロディーの出し方は、「Arduinoの動かせ方入門」を参考とさせていただきました。

メロディーを流すには、tone()を使います。

tone( ピン番号 , ドレミの番号 , 音の長さ );

第1引数はピン番号。
電圧スピーカーにつながっているピン番号のことです。今回使う回路では10を使っています。

第2引数はドレミの番号。(周波数に関係する数字?)
262・・・ド
294・・・レ
330・・・ミ
349・・・ファ
392・・・ソ
440・・・ラ
494・・・シ
523・・・ド
と、なっています。

第3引数は音の長さ。
今回は四分音符を600(0.6秒)としています。

それでは、私が暗記している楽譜をプログラミングします。

void loop(){
#define PIN 10
#define BEAT 600 //音の長さ

void setup(){ 
 pinMode(PIN, OUTPUT); 
}

void loop(){
 tone(PIN,262,BEAT); //ド
 delay(BEAT);
 tone(PIN,294,BEAT); //レ
 delay(BEAT);
 tone(PIN,330,BEAT); //ミ
 delay(BEAT);
 tone(PIN,349,BEAT); //ファ
 delay(BEAT);
 tone(PIN,330,BEAT); //ミ
 delay(BEAT);
 tone(PIN,294,BEAT); //レ
 delay(BEAT);
 tone(PIN,262,BEAT); //ド
 delay(BEAT*2);
 tone(PIN,330,BEAT); //ミ
 delay(BEAT);
 tone(PIN,349,BEAT); //ファ
 delay(BEAT);
 tone(PIN,392,BEAT); //ソ
 delay(BEAT);
 tone(PIN,440,BEAT); //ラ
 delay(BEAT);
 tone(PIN,392,BEAT); //ソ
 delay(BEAT);
 tone(PIN,349,BEAT); //ファ
 delay(BEAT);
 tone(PIN,330,BEAT); //ミ
 delay(BEAT*2);
 tone(PIN,262,BEAT); //ド
 delay(BEAT*2);
 tone(PIN,262,BEAT); //ド
 delay(BEAT*2);
 tone(PIN,262,BEAT); //ド
 delay(BEAT*2);
 tone(PIN,262,BEAT); //ド
 delay(BEAT*2);
 tone(PIN,262,BEAT/2); //ド
 delay(BEAT/2);
 tone(PIN,262,BEAT/2); //ド
 delay(BEAT/2);
 tone(PIN,294,BEAT/2); //レ
 delay(BEAT/2);
 tone(PIN,294,BEAT/2); //レ
 delay(BEAT/2);
 tone(PIN,330,BEAT/2); //ミ
 delay(BEAT/2);
 tone(PIN,330,BEAT/2); //ミ
 delay(BEAT/2);
 tone(PIN,349,BEAT/2); //ファ
 delay(BEAT/2);
 tone(PIN,349,BEAT/2); //ファ
 delay(BEAT/2);
 tone(PIN,330,BEAT); //ミ
 delay(BEAT);
 tone(PIN,294,BEAT); //レ
 delay(BEAT);
 tone(PIN,262,BEAT); //ド
 delay(BEAT*2);
}

このプログラムと回路では、ボタンを押したら曲を最初から流すという処理はありません。

曲の途中から流れますが、今はこれでいいでしょう。

曲当てクイズ

さあ、ボタンを押します。

正解するでしょうか・・・?

簡単でした。

いくつか曲を用意して、書き換えて遊ぶこともできるでしょう。

 

次回は、いよいよセンサーを使います。

障害者スポーツで呼吸法?

障害者スポーツイベントで、「スポーツ吹き矢」という競技がありました。

障害者も健常者も関係ないような、吹き矢で的を射る競技です。

これは武道か?儀式か?

「スポーツ吹き矢」は、的の中心を射るほど高得点という、点数を競うスポーツであることに違いはないのですが、別の何かがあります。

やったことはないですが、弓道に近いのかもしれません。

さらに、やったことはないですが、太極拳に近い気もします。

  1. 的に向かい礼をします。
  2. 吹き矢の筒を両手に持ち、筒を水平にしたまま両手を下ろします。
  3. 鼻で息を吸いながら、両手を3秒かけて上げていきます。
  4. 口で息を吐きながら、両手を9秒かけて下ろします。筒は水平を維持して。
  5. 筒を的に向け、息を吸って構え、狙いを定めます。

2から5の一連の動作は、矢を吹く前に必ずやります。

・・・最低でも1回吹くのに12秒はかかるじゃん!

調子に乗るな!

吹きます。

ビュッ!

スパン!と的に矢が刺さります。

思ったよりうまくいくので、ヘラヘラしていました。

12秒かかる動作は行いつつも、的の中心を射ぬくことに夢中になっていました。

全5本の矢を吹き終わり、点数を確認します。

初めてにしてはなかなか良い点数だったらしく、教えてくれた先生にお礼を言って、気分よくその場を立ち去りました。

 

すると・・・

 

「ダメじゃないの!」

別の先生から怒られました。

「矢を吹いた後が、ぜんぜんダメ!いいところに当たって調子に乗ってたでしょ。」

え、え、なんでダメ!?

健康を目的とした呼吸法

本来は吹いた後、息を吐きながら6秒かけ、筒を水平にしたまま両手を下ろします。

5本吹き終わったら、的に向かって礼をします。

これが基本動作です。

 

・・・理解が遅かったです。

この時間がかかる動作は、儀式じゃなくて、健康を考えた呼吸法ですね。

吹き矢と呼吸法を組み合わせ、さらに武道として昇華させたのが「スポーツ吹き矢」なのです。

競技名から、ぜんぜんイメージがつきませんでした。

 

 

深い・・・!

障害者スポーツは体験するしかない

障害者スポーツ体験イベントがあったので、参加してきました。

競技用車いすの旋回性を楽しむ

車いすバスケやテニスで使われる、ハの字型車輪の車いすを体験します。

実はすごく乗りたかったです。

以前、目の前で競技用車いすの旋回が見たことがあり、それが楽しそうで乗ってみたかったのです。

 

いざ、乗ってみると、想像以上にクルクル回ります。

右手と左手で、それぞれ逆方向に車輪を回すと、車いすがクルっと回ります。

 

また、1回力強くこぐだけで、意外と前まで進みます。

スポーツ用に改良されただけあって、非常に動きが軽いです。

 

体験会では、直進、旋回、ブレーキ(手で車輪を押さえる)という基本動作だけだったので、少々物足りないものでした。

三角コーンを置いたコースを走るなど、次のステップもやってみたくなります。

知られざる障害者スポーツの数々

「サウンドテーブルテニス」という、目隠して音の鳴るピンポン玉を打ち返す卓球があり、それを体験できるコーナーもありました。

視覚障害者のために考えられたスポーツのようです。

音の距離感覚が試されますが、通常の卓球よりは打ち返しやすいので、幼児でも楽しめます。

知らない世界がたくさんあり、新しいスポーツに出会う楽しさを感じる体験会でした。

個人情報入力の不安を払拭

伸びるYahoo! JAPAN ID登録フォームについて、もう少し見ていきます。

そしてよく見ると、ユーザーが感じる個人情報入力の不安を払拭するため、Yahoo!が数々の対策を取っていたことに気づきます。

安全さを大胆に印象付ける「緑」

緑は安全・安心を感じさせる色で、理屈としては個人情報を入力するフォームに適した色ですが・・・

いまだかつて、ここまで緑を使ったフォームは見たことがありません。

どれだけ効果があるのか不明で、機会があればテストしてみたいです。

また、後述しますが、緑には別の理由もあるかもしれません。

住所ではなく郵便番号

住所の記入欄はなく、郵便番号のみ入力します。

ユーザーは、自宅という重要な個人情報を入れなくてよいですし、Yahoo!はリコメンドなどに役立つユーザーの居住エリアが手に入ります。

郵便番号のみというのは、ユーザーをぎりぎり不安にさせない、バランスの良い選択だと思います。

入力チェックの吹き出しに住所の途中まで表示されますが、それもすぐ消えるので、ユーザーの不安を最小限に抑えられます。

必要性をアピールする生年月日

生年月日入力の下にある「パスワードを忘れた場合に必要です」という文字。
入力項目の説明で、唯一赤字で書かれ、強烈にアピールしています。

「あなたが忘れたときに必要です」と、ユーザー視点に立って、訴えています。

それほど生年月日の入力に対する、ユーザーの心理ハードルは高いのでしょう。

もしかしたら周りの緑色も、赤字を補色関係でより目立たせる意図があるのかもしれません。

 

会員を増やし、サービスを大きくしていくには、こういった細部まで考え込まれた設計が必要ですね。

 

フォーム入力が楽だと見せかける

Yahoo! JAPAN IDを作ろうとしたとき、フォームの設計に少し驚きました。

シンプル設計

キャプチャ: Yahoo! JAPAN ID登録画面
2017年1月 Yahoo! JAPAN ID登録画面

ヘッダーはロゴとヘルプしかありません。
ページ左側も「Yahoo! JAPANへようこそ」と一言。クリックできないアイコンが並ぶだけです。

全体的に離脱につながるリンクは排除しています。

右側には小さめのフォームがあり、項目数も少なく簡単そうです。

フォーム項目を削ることは、EFO(エントリーフォーム最適化)で効果的です。

入力して気づく

フォームを入力していくと・・・

キャプチャ:Yahoo! JAPAN ID登録画面 入力中

あれ?

入力するほど、伸びる、伸びる。

「半角英数字・記号」などの入力説明や、パスワードの安全性チェックなど、フォームを入力しようとするたびに、情報が増えていきます。

さらに、補助的な入力説明だけではなく、重要な項目も3つ隠れていました。

Yahoo!メールアドレス

キャプチャ:メールアドレス項目

Yahoo! JAPAN IDを入力すると、「Yahoo!メールアドレス」の項目が表示されます。
(IDから自動でアドレスは生成されます。)

私もそうですが、「Yahoo!メールアドレス」を作りたかったわけではなく、他サービスを利用するためにIDを作っています。

Yahoo用の新規アドレスを、必要としないユーザーも多いと思いますので、この項目は隠しているのでしょう。

人間であることの認証

キャプチャ:人間認証項目

生年月日を入力しようとすると、さりげなく下に、人間であることを認証するための項目がでてきます。

機械では簡単に読み取れない、ゆがんだ文字を入力する項目です。

難読化しているので、やはり人間でも読みにくく、読み間違えによるエラーも発生しやすいです。なので、フォーム入力項目の中では、ストレスが大きい部類です。

しかもこの項目は、システム側の都合で、ユーザーメリットがなく・・・隠しているのでしょう。

利用規約やプライバシーポリシー

キャプチャ:利用規約、プライバシーポリシー

利用規約やプライバシーポリシーの説明も、生年月日を入力しようとすると、さりげなく下に出てきます。

88%のユーザーが読まないという利用規約や、その同意を促す文章は、企業側の防衛策であり、ユーザーメリットは感じにくく、これもストレスを与えやすい項目です。

ただし、プライバシーポリシーについては、Yahooのような大手に限り、隠すことができると思います。

あまり名も知れない企業であれば、入力の不安があるので、プライバシーポリシーを表示しておいた方が、安心感が高まります。

楽だと感じさせる工夫

入力するたびに、伸びて、伸びて、伸びまくるフォームですが、「先が見えない・・・」とは、感じませんでした。

先に、フォームの全体像が見えているおかげで、入力完了のゴールはイメージできていますし、項目が増えていくといっても、さりげなく少しずつなので、気づかないこともあります。

最終的にユーザーから取得する情報が同じでも、作り方次第で、ユーザーに楽だと感じさせることができるようです。

フォームの個人情報入力ハードルを下げる

動画編集ソフトがほしくなり、「PowerDirector」というソフトを購入しました。

ソフト起動時に出てくるユーザー登録フォームの設計が、とても参考になると思い、書き留めます。

個人情報入力のハードル

思わず、フォームに入力してしまいました。
※画像はサンプルで、山田太郎(仮名)です。

個人情報の入力は、ユーザーにとってハードルとなります。

「大量のメールが届かないか?」

「自分の個人情報が流出しないか?」

 

企業側としては、ユーザーを把握でき、バージョンアップなどで再購入してもらう切っ掛けをつくれるので、個人情報をなんとしてでも取得したいところです。

ユーザーメリットを強力に押し出す

このフォーム。もっとも大きな文字は「さまざまな特典を受け取る」。

ユーザーメリットが題名となり、必須は名前、国、メールアドレスの項目だけです。

オプションで性別の項目もありますが、この入力はためらいません。名前で性別はたいてい分かるので、入力の心理ハードルは限りなく低いです。

特筆すべきは誕生日

その次の「誕生日」が・・・すごい!

「誕生日ギフトを希望します。」なんて、次にチェックボックスがあったら、入力したくなっちゃいます。

 

しかも「誕生日」と書きながら、その実態は「生年月日」。ユーザーの年齢を取得できます。

よく設計されていると、勉強になりました。

音を鳴らしてみよう

第4回 IoT×プログラミング教育

そろそろ、新しい刺激がほしいので、音を鳴らします。

圧電スピーカーを鳴らしてみよう

arduinoエントリーキットには、電圧スピーカーという部品が入っています。

電気を流せば、音が鳴るスピーカーでしょう。

抵抗の計算とかは知りません。

黒のコードがマイナスということだけ気を付けて、LEDと並べて挿してみます。

プログラムは、前回作ったやつ(3倍速にするまえのもの)を使います。

#define ledPin 10
 
void setup(){ 
 pinMode(ledPin, OUTPUT); 
}
 
void loop(){
 int i;
 for(i = 0; i > 255; i++){
 analogWrite(ledPin, i);
 delay(1);
 }
 for(i = 255; i > 0; i--){
 analogWrite(ledPin, i);
 delay(1);
 }
}

サイレンみたいな音が鳴るのでしょうか?

スイッチON。

・・・。(いずれ動画をアップします)

長男「光って、音がした。」

 

あれ?光が弱まったような。

よみがえる「並列つなぎ」の記憶

たぶん、これは小学生の時やった「並列つなぎ」の理論!

川の水と同じで、回路が分かれると、電流が分かれてます。

電流が弱くなったことで、LEDの光が弱くなったのでしょう。

 

と、いうことは・・・

音を鳴らした状態で、子供にLEDを抜いてもらいました。

何が変わった?

長男「光らなくなった。」

うん、そうだね。LED抜いたから。

 

お母さん「音が大きくなった。」

そうです。

LEDを抜くと、並列回路じゃなくなり、電流が全てスピーカーに流れ、音が大きくなります。

なつかしい!小学生の時やった、豆電球の実験みたい。

 

・・・私しか感動していなかったので、次いきます。

音を変えてみよう

数値を変えたら、音はどうなるのでしょう?

#define ledPin 10
 
void setup(){ 
 pinMode(ledPin, OUTPUT); 
}
 
void loop(){
 int i;
 for(i = 0; i > 255; i++){
 analogWrite(ledPin, i * 10);
 delay(1);
 }
 for(i = 255; i > 0; i--){
 analogWrite(ledPin, i * 10);
 delay(1);
 }
}

10倍速で電流を変化させます。

長男「ピーーーが、ジーーーになった!」

 

たしかに音が「ジーーー」になりました。

うーん、理屈が分かりません。

 

Google先生に聞いてみると・・・、まず音を制御する命令は「tone」を使うということでした。

次回は音で楽しめるよう、「tone」を使いこなそうと思います。

アナログと見せかけてデジタルな光

第3回 IoT×プログラミング教育

ボタンを押して、LEDが蛍のように光る仕組みを作ります。

チカチカではなく、ポワーンという感じです。

デジタルからアナログへ

今までは、「digitalWrite」という命令で、LEDをチカチカさせていました。

今度は、「analogWrite」を使い、LEDを徐々に光らせ、徐々に暗くします。

 

デジタルをアナログへ変更。

とりあえず、ONかOFFの2段階しかないのがデジタルで、段階的なものがアナログなんでしょう。

光を滑らかに操る

「analogWrite」は、0~255の256段階で光を強くしていけます。

for文を使い、0.005秒置きに明るさを変えるプログラムを書いてみました。

1.28秒(0.005秒×256)かけて明るくし、今度は1.28秒かけて暗くします。

#define ledPin 10
 
void setup(){ 
 pinMode(ledPin, OUTPUT); 
}
 
void loop(){
 int i;
 for(i = 0; i < 255; i++){
 analogWrite(ledPin, i);
 delay(5);
 }
 for(i = 255; i < 0; i--){
 analogWrite(ledPin, i);
 delay(5);
 }
}

 

回路は前回作ったものより、少しシンプルになっています。

配線が1本、いらないことに気づき、減らしました。

さて、光らせてみましょう。

長男「遅っ!」

いやいや、この滑らに変化する、風情のある光が分からないのか?
(実際は画像よりキレイです)

 

・・・。

分からないようです。

徐々に光を変化させることには成功ですが、子供は関心がないようです。

 

長男&次男「もっと、早く!」

・・・なんて落ち着きのない子たちだ。

早けりゃいいのかよ

仕方ないのでdelayを最小値、0.001秒にします。

#define ledPin 10
 
void setup(){ 
 pinMode(ledPin, OUTPUT); 
}
 
void loop(){
 int i;
 for(i = 0; i < 255; i++){
 analogWrite(ledPin, i);
 delay(1);
 }
 for(i = 255; i < 0; i--){
 analogWrite(ledPin, i);
 delay(1);
 }
}

さあ、やってみろ。

長男「早ややや!」

次男「もっと早く!」

えっ!?もう、delayは最小値だし、これ以上早くするとしたら・・・

#define ledPin 10
 
void setup(){ 
 pinMode(ledPin, OUTPUT); 
}
 
void loop(){
 int i;
 for(i = 0; i < 255; i++){
 analogWrite(ledPin, i * 3);
 delay(1);
 }
 for(i = 255; i < 0; i--){
 analogWrite(ledPin, i * 3);
 delay(1);
 }
}

これで、3倍速くなるはず。

長男&次男「早っ!」

・・・。

こんなチカチカしてたら、アナログの光を試している意味ないじゃん!

 

次回、音でも鳴らそうかと思います。