ボッチャ普及員を目指す

ボッチャ普及指導員になることを目指しています。

指導者講習会を2日間受講する必要があるようですが、日本ボッチャ協会のサイトでは、講習会情報が全く掲載されていません。(2017年5月10日現在)

ただ、他を探してみると、葛飾区のサイトにボッチャ普及指導員講習会の参加申し込み情報が掲載されていたので、そちらに申し込もうと思います。

・・・葛飾区の住民でないので、ダメかもしれませんが。

ボッチャ教室にも通うことに

それと同時に、週1でボッチャ教室に通い始めました。

平日ということもあり、開始時間になっても私1人しかいなく、なかなか不安もありましたが、最終的には10人くらい集まり、和やかにボッチャ練習をすることができました。

いろんな投球練習がある

最初はコートに置かれた輪の中に、ボールを入れる練習です。

距離があると、なかなか輪の中でボールが止まりません。

すると今度はA4用紙をコートに敷き、その上に止める練習に移ります。

もっと精度の高い投球が求められます。

・・・A4用紙に乗らない。

 

それにしても、いろんな練習方法があるものです。

正式ルールではないレクリエーション・ボッチャなら、自由にルールを決められるので、まだまだ楽しい練習方法や遊び方が考えられそうです。

試合形式で練習

そして、試合形式での練習が始まりました。

先ほどと違い、他のボールを押して優勢にしたり、相手チームの投球進路を邪魔したり、戦略が加わります。

ジャックボールを投げる時に気づいたのですが、自分が一番端にいる時は、自分側のコートの端に投げると、反対側の端にいる人が投げにくくなります。

でも、それをやったら、少し心が痛みました。

 

ゆるい勝負

驚いたのは、勝負のゆるさです。とてもゆるい。

審判は計測器具を一切使わず、すべて目測。

最終的に同じくらいのボール距離に見える場合、引き分け。

・・・思わず笑ってしまいました。

 

雪降るウォッチ

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

ウェアラブル端末を作ります。16回目にしてようやくIoTです。

手を振るとブラウザ上で雪が降る仕組みを作ります。

ウォッチを作る

足立区のイベントでもらったパラスポーツ応援リングに、前回作ったブレッドボードを巻きつけます。

もっと小さくして、ただのリングにしたかったのですが、大きくなって時計のようになってしまいました。

バッテリーも邪魔です。

・・・まあ、最初のIoT体験としてはこれで良いでしょう。

1回振ると、1つ雪が降る

腕を1回振ると、ブラウザ上で1回雪が振る仕組みを作ります。

「ESPr Developer」をサーバーとし、腕を振った回数を取得できるようにします。

雪を降らすまでの大まかな流れは、

傾斜センサーが傾き取得

LEDが光ると同時に、傾いた回数をカウント

傾いた回数を0.5秒ごとにサーバーがJSONP出力

ブラウザからAjaxでJSONP取得

傾いた回数が増えていたら、増えた数だけ雪を降らす

「ESPr Developer」側のプログラム

世の中に出して良いプログラムなのか迷うほど、正攻法とは思えないやり方ですが、「ESPr Developer」に書き込んだプログラムを掲載します。

/*
ESPr Developerを使ったWi-Fi接続コードは、下記をサイトのものを使わせて頂きました。
ESPr Developer ( ESP-WROOM-02 開発ボード )の使い方をザッと紹介
*/ #include <ESP8266WiFi.h> #define PIN 13 const char* ssid = "※自分のWi-FiのID※"; const char* password = "※自分のWi-Fiパスワード※"; WiFiServer server(80); WiFiClient client; int val = 0; //アナログ入力値 int count = 0; //振った回数 int interval = 0; boolean shake = false; void setup(){ pinMode(PIN, OUTPUT); #ifndef __AVR_ATtiny85__ #endif Serial.begin(115200); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); server.begin(); // Print the IP address Serial.println(WiFi.localIP()); } void loop(){ val = analogRead(0); if(val > 800){ //傾き無し digitalWrite(PIN,LOW); shake = false; }else if(shake == false){ //傾き初回 digitalWrite(PIN,HIGH); count++; shake = true; }else{ //傾き中 digitalWrite(PIN,LOW); } delay(50); interval++; if(interval > 10){ //50m秒×10(=500m秒)ごとに Ini_HTTP_Response(); //HTTPレスポンス実行 interval = 0; } } void Ini_HTTP_Response() { client = server.available(); delay(1); String req; while(client){ if(client.available()){ req = client.readStringUntil('\n'); Serial.println(req); if (req.indexOf("GET / HTTP") >= 0 || req.indexOf("GET /?callback") >= 0 || req.indexOf("GET /favicon") >= 0){ Serial.println(req); while(req.indexOf("\r") != 0){ req = client.readStringUntil('\n'); Serial.println(req); } req = ""; delay(10); //JSONP書き出し client.print("callback({\"Shake\":"); client.print(count); client.print("});"); delay(1); client.stop(); Serial.println("\nGET HTTP client stop--------------------"); req = ""; } } } }

これで、「ESPr Developer」と同一ネットワーク上にあるPCやスマホのブラウザで、JSONPを取得できるようになります。

Serial.println(ssid);により、シリアルモニタにIPアドレスが書き出されるので、それをブラウザ側でも使います。

ブラウザ側のプログラム

次にブラウザで表示するHTMLを作ります。

ローカルサーバーでもレンタルサーバーでも良いので、やりやすいところにHTMLを置きます。

HTML(CSSとJS込)は以下です。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>距離計測結果</title>

<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<style type="text/css">
body {
 background: #000;
 color: #FFF;
 overflow:hidden;
}
#output {
 font-size: 100px;
}
.snow {
 position: absolute;
 border-radius: 50%;
}
 
.snow.layer0 {
 width: 50px;
 height: 50px;
 background-color: hsla(0,0%,100%,0.8);
 animation: fall 2s linear;
}
 
.snow.layer1 {
 width: 40px;
 height: 40px;
 background-color: hsla(0,0%,100%,0.6);
 animation: fall 3s linear
}
 
.snow.layer2 {
 width: 30px;
 height: 30px;
 background-color: hsla(0,0%,100%,0.4);
 animation: fall 4s linear;
}

@keyframes fall {
 0% {
  margin-top: 0;
 }
 100% {
  margin-top: 1200px;
 }
}
</style>
</head>
<body>
<div id="wrap">
 <div id="output"></div>
</div>
<script type="text/javascript">
 var count = 0,
 oldCount = 0,
 snowCount = 0,
 
 init = function(){
  setInterval(function(){
   $.ajax({
    type: 'GET',
    url: 'http://192.168.179.2',
    dataType: 'jsonp',
    jsonpCallback: 'callback',
    success: function(json){
    oldCount = count;
    count = json.Shake;
    if(count > oldCount){
     $("#output").text(count);
     snowCount = count - oldCount;
     for(var i = 0; i < snowCount; i++){
      $("#wrap").append('<div class="snow layer' + Math.floor( Math.random() * 3 ) + '" style="left:' + Math.floor( Math.random() * 101 ) + '%; top:-' + (Math.floor( Math.random() * 101 ) + 50) + 'px"></div>');
     }
    }
   }
  });
 },1000);
}

init();


</script>
</body>
</html>

Ajaxで取得するURLは、Arduinoシリアルモニタで確認したIPアドレスを指定します。

JSONPで、クロスドメインの壁を超えていますが、こんなやり方でよいのでしょうか・・・。

雪を降らそう

ブラウザをフルスクリーンにして、雪降るウォッチを振ってみます。
左上の数字は降った(振った)回数です。

たまに動作が安定しないので、そういう時は「ESPr Developer」のリセットボタンを押してやり直します。

子供の食いつきはなかなか

IoT体験として、子供の食いつきは良かったです。

有り余る子供のエネルギーに、パソコンが連動するのが良いです。

今回は深い理由もなく、雪を降らせましたが、別途IoT観戦で使えないか研究中です。

多分「ESPr Developer」をサーバーとするやり方は限界があるので、別の方法も考えていきます。

傾くと光る 傾斜センサー

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

単純で簡単そうな部品「傾斜センサー」を使ってみます。

傾斜センサーとは?

Arduino拡張キットにコンデンサーみたいな形のセンサーが入っていました。

降ると音がして、中に球が入っているようです。

説明書には「傾斜センサー」と書かれていたので、傾きを取得してくれるのでしょう。

「ESPr Developer」を使う

傾斜センサーに反応して光る仕組みを作りますが、最終的には無線接続をしたかったので、今回は「Arduino」ではなく、Wi-Fi搭載の「ESPr Developer」をArduino互換機として使います。

以前「ESPr Developer」について予習した知識では

  • アナログ入力は1つしかなく、TOUTピンを使う
  • TOUTは1Vまでの入力なので分圧回路を組む

・・・ここら辺は、子供に説明できるレベルを超えているような気がして、傾斜センサーを中心に見ていきます。

傾斜センサーの回路を組む

「ESPr Developer」の下にジャンパーワイヤーを差し込んでいます。

傾斜センサーは足が2本しかないので、今まで使ったセンサーの中で最も簡単な部類に入るかと思います。片方の足に電圧をかけ、アナログ入力(TOUT)につなぐだけです。

傾きに応じて、電圧が変化すると思いきや・・・ON、OFF、スパッと切り替わります。

これは、センサーというよりスイッチでは?

傾くとスイッチが切れるようです。

アナログ入力を使う必要があるのか分かりませんが、分圧回路で510Ωと200Ωの抵抗器を使い、TOUTへ入力を1V以下に抑えています。

あとは、傾きに反応して光るよう、13ピンにLEDをつないでいます。

傾けて光らせよう

 

計算では・・・常時942くらいのアナログ入力値を受け取ることになると思いますが、余裕をみて800より大きい時を通常時とし、800以下を傾いたと判断します。

#define PIN 13
int val = 0; //アナログ入力値

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

void loop(){
 val = analogRead(0);
 if(val > 800){ //傾き無し
  digitalWrite(PIN,LOW);
 }else{ //傾き中
  digitalWrite(PIN,HIGH);
 }
 delay(50);
} 

傾けている間、光ります。

やってみます。

傾けると・・・

光ります。

・・・これだけです。

しかし、次回は「ESPr Developer」を使ったIoTを体験できるようにします。

引き戸と押し戸を間違える

小学校の授業参観に行ったとき、玄関のドアが開けられず困りました。

鍵がかかっているのかな?と、思って、別の入り口を探してキョロキョロしていると、先生が「引き戸なんですよ、分かりにくいですよね。」と、開けてくれました。

・・・恥ずかしい。

デザインが悪い

自己嫌悪に陥いりそうですが、これはデザインが悪い。

先生の話では、他にも間違えた人がいるようです。

有名な認知心理学者ノーマン博士の著書『誰のためのデザイン?』に、ドアのデザインの問題と、それを作ったデザイナーの問題について、書かれていた記憶があります。

たしか・・・悪いのは使う人ではなく、間違いを起こすデザインだと。

少なくともユーザー(私)の経験では、押し戸(開き戸)だと認知してしまいました。

なぜ間違えたか?

側面と正面からみた、ドアの形です。

大部分がガラス張りで、金属の取っ手がついています。

なぜ私が横にスライドさせる引き戸だと思わず、押してしまったのか・・・理由は分かりました。

普段使うデパートの入口の押し戸に、とても近いデザインだったからです。

今までの経験が、押し戸と引き戸を間違えさせたようです。

バリアフリー配慮か

では、なぜ学校の玄関を、引き戸にしたかを考えました。
確か私の小学校は押し戸だったような・・・。

息子の通う学校は比較的新しく、校内には車いす用トイレや、エレベーターが設置されています。

なるほど・・・車いす用トイレのドアと同じ設計思想なのでしょう。

前後移動がなく、車いすでも開けやすいのが引き戸です。

バリアフリーへの配慮で、玄関が引き戸になったと考えられます。

 

ただ、間違える人が多いなら、ユニバーサルデザインとは言えません。

開けてくれた先生が「横矢印でもつけようかな・・・」と言っていました。

確かに、それなら横に引くと、すぐ認識できそうです。

人が光を好む理由

電子工作をしていてLEDの光を見ていると、楽しくなります。

なぜ、人が光を好むのでしょうか?

毎年イルミネーションを見ても飽きない

LEDで彩られた街。
冬になると、イルミネーションを当たり前に目にするようになりました。

妻(女性)はイルミネーションを好む傾向がありますが、それはカブトムシが光を好んで飛んでくるような、本能的なものなのでしょうか?
・・・怒られます。

光ではなく、色鮮やかな美しさに、本能が反応するのだと思います。

人間の本能的な行動心理は、原始時代から変わらないといいますので、きっと鮮やかな果物を効率化に採取するため、女性の方が色鮮やかなものに反応しやすいのでしょう。
・・・夢のない理屈です。

 

なお、私個人は青色のみで統一されたイルミネーションが落ち着いて好きです。

一応、色彩心理で青は精神を落ち着かせる効果があるといいます。

奇跡の復活「光の王国」

経営難のハウステンボスが、奇跡の復活を遂げたのは、経営者にとっては伝説的な出来事です。

復活に貢献した一つの施策が、イルミネーション「光の王国」集客でしょう。
12月の来場者数が、前年の1.5倍くらいになったといいます。

光を(うまく)使った集客は、安定した効果を発揮し、費用対効果が高いです。

逆に、プロジェクションマッピングや、3D映画など、インパクトが大きいものは、同時に飽きられやすく、しかも制作コストが高い・・・。悪いわけではないですが、ハードルが高いです。

その点、イルミネーションなら、50年先も集客効果を期待できる!そんな安定感を感じます。

この安定感は、色鮮やかな光が人間(特に女性)の本能的な部分に訴えかけているからなのでしょう。

光と色は、行動心理や色彩心理を理解し、効果的に使っていきたいです。

スポーツ普及による医療削減効果

ボッチャのような年齢を問わない、誰でもできるスポーツは、普及する可能性を秘めていると思います。

そして高齢者に普及した場合、ボッチャは頭を使うスポーツなので、認知症予防に効果を発揮しそうです。

スポーツ普及による医療削減効果は?

具体的にスポーツ普及による医療削減効果を調べました。

文部科学省の「スポーツの経済効果に関する調査研究(平成26年度)」の4章に、三重県いなべ市の研究結果が掲載されています。

1人当たり 医療費削減効果は、78,246 円 / 年という報告です。

仮に、2025年を想定してみると、65歳以上高齢者が3,500万人と言われるので、5%の高齢者人口にスポーツ普及を促すことができれば、1,370億円 の医療費削減効果となります。

・・・予想より小さい金額。

総務省の資料では、2025年の後期高齢者医療費だけでも24兆円という、とんでもない数字がでています。

焼け石に水とは言わず・・・ITを活用して普及率を上げるなど、なんとか削減していきたいものです。

 

 

ジャイロスコープ・加速度センサーを使ってみる

ボッチャの指示版(ラケット)を作る際、「ジャイロスコープ・加速度センサー」というパーツを初めて使いました。

ラケットの向きを取得したかったからです。

安価なMPU-6050

Amazonで「MPU-6050 使用 3軸ジャイロスコープ・3軸加速度センサー モジュール」を280円で購入しました。

スマホ普及のおかげで、ジャイロ、加速度センサーが安く手に入るようになったと聞きます。ありがたい話です。

しかし、ジャイロや角速度について、実はあまり理解していません。

 

立てた状態か知りたかった

ラケットを立てている状態を判断したかっただけなので、本当はジャイロ+加速度の6軸はいらなかったような気がしますが・・・

とりあえず加速度のY軸のみで、ラケットを立てている状態を判断できました。

立てると重力で加速度Yの値が大きくなります。

 

 

単純なことしかできないので・・・もう少し、ジャイロ+加速度の6軸を使いこなせるよう、勉強します。

ボッチャ 結果を全ての人へ

ボッチャ観戦で、盛り上がりのタイミングがずれる問題を以前取り上げましたが、審判の判定結果の出し方も、盛り上がりにマイナス影響があるかもしれません。

判定結果を一度に会場全ての人に共有できず、歓喜、歓声がばらつくからです。

ラケットで伝えるボッチャの判定

ボッチャは3投目以降、白いボールから遠い色のチーム(人)が、次の球を投げます。

赤、青、どちらが投げるかを、審判が卓球のようなラケットで、選手たちに伝えます。

例えば次の投球が赤の場合、ラケットの赤面の方を選手たちに見せます。

赤面が見せたということは、青ボールの方が白ボールの近くにあるということで、審判の判定で初めて結果が分かることが、多々あります。

判定の見えない死角がある

問題は審判の提示する判定の見えない、死角があることです。

審判は、真後ろまで判定結果を提示しません。

次の投球が始まるまで、結果を知ることのできない観客がいます。

また厳密には、ラケットを最初は選手側に向けるので、逆サイド側は少し遅れてラケットがかざされます。

このように、判定を知るタイミングが段階的になってしまいます。

リオで感じた、まとまりのない歓声の原因は、ボッチャの判定提示方法が少なからず影響していると思われます。

同時に全ての人に結果を知らせるには?

この問題は、全方位から見える光(照明)で解決できるのではないでしょうか。

試作品なので小さいですが、結果を瞬時に光の色で知らせます。

ラケットと連動して、LEDが光ります。

ただラケットを持っているだけでは光っていません。

判定結果を伝えるときに、リアルタイムでLEDが連動して光ります。

 

まずは・・・赤が白いボールの近くに来ました。次は青チームです。

青面を見せると(今は有線ですが)、青いLEDが光ります。

青面は、ジャイロセンサー、赤外線センサー、配線がむき出しで、すごいことになっていますが、小型化してラケットに埋め込むこともできるでしょう。

 

今度は赤チームの番です。

ラケットの赤面を見せれば、赤いLEDが光ります。

 

まだまだ試作ですが、観客が判定結果を同時に知る仕組みを作り、一斉に歓声が上がる状態になればと願います。

ボッチャ ミリ単位の戦いを計測

ボッチャのハイレベルな選手たちは、ミリ単位の戦いを繰り広げます。

あまりにボールの隙間が小さいと、以前作ったコンパス型IoT定規では測ることができません。

そこで開発したのが、隙間差し込み型定規です。

ミリ単位の戦いの場面

隙間数ミリの戦いになる場面は、よくあります。

角度によって、隙間の見え方が変わったりするので、慎重に測る必要があります。

隙間を計測してみよう!

尖った三角形を隙間に差し込んでいき、ボールと触れたら差込むのをやめます。

白と青の隙間は・・・6.88mm!
(試作品なので、全然正確ではありません。)

一方、赤と白の隙間は・・・

6.01mm!

赤の勝ちです!!

 

この試作定規は、中国製の数百円のマイコンボードを使いましたが、入力電圧が安定せず、数字がブレまくるので、実用レベルでは全くありません。

次の段階では、もっとコストかけて安定したものを作りたいと思います。

安くて手軽な7セグメントディスプレイを求め

今まで、いくつかの7セグメントディスプレイを試してきましたが、ついに、安くて手軽な「TM1637 4桁7セグメントLEDディスプレイ」に出会えました。

はんだ付け不要・配線4本・145円

「TM1637 4桁7セグメントLEDディスプレイ」は、はんだ付け不要で、配線4本つないで簡単に使えます。

しかも145円!

互換品らしいので、正規品もあるようですが、とりあえず動けば問題ありません。

回路は、前回の「スライドポテンショメータ」とあわせて使ってみましょう。

 

スライドのつまみを操作すると、7セグメントの数字が変わるようにします。

ライブラリをインストール

Arduino公式サイトにTM1637の説明が載っています。

ページ下部にあるGitHubから、ライブラリをダウンロードできます。

ライブラリのインストールは、以前やった手順で問題ありませんでした。

 

ライブラリを使って、Analog入力の数値を7セグメントディスプレイに表示するプログラムを作ります。

#include <Arduino.h>
#include <TM1637Display.h>

#define CLK 2
#define DIO 3

TM1637Display display(CLK, DIO);
int i = 0;

void setup(){
 display.setBrightness(0x0f);//明るさ 0x01←暗い 明るい→ 0x0f
}

void loop()
{
 i = analogRead(0);
 display.showNumberDec(i, false);//数字を表示
 delay(10);
}

11行目のように、明るさを設定しないと7セグメントディスプレイには、何も表示されないので注意が必要です。

0x01、0x03、0x07、0x0fというような16進マスク?を設定すると、表示する数字の明るさが変わります。

とりあえず0x0fで不満はないので、これでいいです。

動かしてみる

スライドのつまみを操作すると、7セグメントの数字が変わりました。

値段の割に、十分な満足度を得られる7セグメントディスプレイでした!