香港学習塾 epis Education Centre

わかば深圳教室 教室長ブログ

教室長末木千尋

2011年12月に香港へ赴任。旧九龍教室、わかば深圳教室とで合計6年間勤務をし、2017年から再び深圳へ。きめ細やかなサポートには定評があり、時間が経つのも忘れついつい話し込んでしまうことも。本気で立ち向かう生徒の守護神として頼れるアネゴ的存在であるスエキチ先生は、衣食住どれをとっても刺激の絶えないここ深圳での生活がお気に入り。暑さには弱いが辛さには強い。好物は山椒のたっぷり入った激辛料理全般だとか。

ハンディーファンプログラミング&はんだ付けワークショップ

はんだ付けをしたことがない子がほとんど。


前回まではお掃除ロボットをプログラミングするワークショップを開催してきましたが、今回は暑すぎる夏の必須アイテムハンディーファンの基盤を半田付けしてプログラミングしてしまおうということでハンディーファンハックに挑戦しました。講師は今回も日本から来ていただいたOPENFORCEの河野先生。何回か参加している子供達からは「博士」と呼ばれている河野先生。今回も胸元にファンをつけた白衣姿で見た目だけでも子供達を喜ばせてくれます。


1時間もするとはんだ付けもプロ級

なぜか参加者は女子ばかり。ハンディファンはやはり女子アイテムなのか?深圳で女子が半田付けをしている姿はものづくりの新時代の到来を感じさせてくれます!
まずははんだ付けの練習をかねて河野博士の特製のPro Micro(Aruduino)とモータードライバをのせた基板に抵抗、LEDテープ(NeoPixel)を接続して、Ardublockでプログラミングします。LED1つを点灯させるところからスタートして全体を光らせたり、色を変えたりできるようにしました。


Pro Micro(Aruduino)でLEDを光らせる

LEDの点灯ができたところで、次はモーターの制御をします。今回はモーターをボタンスイッチで制御するのではなく、ファンに息を吹きかけファンを回転させることによりモーターを起動します。モーターの回転数(風力)は、その時の息の強さ(モーターの回転数)によって決まるように設定しました。

息を吹きかけるとファンが回り始めること、息の強さで回転数が変わるので、子供達は何度も何度も息を吹きかけて試していました(遊んだ?)。


Ardublockでプログラミング

このプログラミングを終えて基板をハンディーファンの中に収納して完成!
なのですが、基板を収める時にケーブルの長さを考慮せずに触っているとはんだ付けした部分が外れてしまうこと、最後にカバーを無理やり装着することでどこかのケーブルが外れてしまうことなど、初めて分解、ハックした子供達には想定できない難関が待っており、最後の最後は河野博士修理センターがフル稼働するという大変な事態を乗り越えてのワークショップ終了となりました。


カバーを付け直せば完成!だけど・・・。

今回は身近にある機械を分解してプログラミングすることで今までブラックボックスだった物が制御可能、改造可能であることや、深圳では河野博士が作ってくれたよう特注の基板も短時間ではるかに安い価格で作ることができることも実体験として知ることができました。

温度による制御、音による制御も可能ということで、次回のワークショップも楽しみです!河野博士また次回もよろしくお願いします!


お掃除ロボットプログラミング&電子工作&華強北電気街探検!

華強北のメイカースペースSEGMAKERでのワークショップ

前回に引き続き日本からいらっしゃったOPENFOECEの河野先生との共同開催ということで、お掃除ロボットのプログラミングと電子工作そして深圳の迷宮のような巨大電気部品市場華強北での部品調達に挑戦しました。

前回は深セン市華強北のコワーキングスペースでの開催でしたが、今回は同じ華強北でも会場を変えてSEGMAKERというメイカースペースでお掃除ロボットのプログラミング(衝突センサーと車輪の制御)とArduinoを使った電子工作を学習しました。


河野博士も子供達も楽しそう


プログラミングしたお掃除ロボットを追いかける


今回のお掃除ロボットのプログラミングでは、前回より複雑なセンサーも使ったプログラミングに挑戦し、分解して走ることしかできなくなったお掃除ロボットが少しずつ元のお掃除ロボットの姿に戻っていきます。

と言っても掃除をさせるようなプログラムはしておらず、今回は衝突センサーをプログラムに組み込んで、衝突しても方向を変えて走り続けられるようにするところまでプログラミングしました。


華強北の電気市場で部品調達。こんなちびっこは見かけないので、目立つ存在。

今回の課題のプログラミングを終えた後は、子供達がなぜか楽しみにしていた電気街への買出しです。Arduino、ケーブル、LED、ブザー、抵抗、光センサー、ブレッドボードなど今回作る電子回路に必要な部品を買いに行きます。

12階にあるメイカースペースからエスカレーターでぐるぐる回りながら、何に使うのかわからないような部品を見ながらひたすら下の階を目指します。

大人が見ても謎ばかりの電子部品だらけのビルを子供たちはキャッキャしながら、突き進んでいく姿なちょっと不思議な印象を受けました。何が楽しいんだろう???初めての非日常的な空間にワクワクしていたのかもしれません。(こういう時に行き先もわからないのに先に進む子供達の心理って何なんでしょう?)子供の行動は謎だらけです。


部品をみてはしゃぐ子供達。子供の好奇心はすごい!

こんなところで迷子になったら大変なので、目を離さないように子供達を追いかけつつ、お店に到着。あらかじめお店の人には子供達が買い物に来ることを伝えておき、普通は100個単位、1000個単位ではないと売ってくれない部品を特別に1つ1つ売ってもらいました。


ArduinoでLEDを制御中。

ここでもどのように使うのかもわからない部品を買い集めて大喜びする子供達。買い物を楽しんだ後はまたグルグルと回りながらエスカレーターで会場に戻って電子回路とプログラミングに挑戦。前回はArduinoでLEDを点灯させただけですが、今回はボタンスイッチや光センサーなども組み込みました。

子供たちはお掃除ロボットを分解しプログラミングし直すことからブラックボックスだったお掃除ロボットの大枠を理解し、部品を市場で買い集め回路を組み上げてプログラミングすることを通して基盤をプログラミングすることで、市場で売られている部品がロボットの中身を構成していることを学ぶことができたと思います。

今回参加した子供達は、深圳でのモノづくりを体験することができました。彼らが未来のクリエイター、イノベーターの道を歩み始めたのかと思うとワクワクします!


深セン華強北でお掃除ロボットプログラミング!

お掃除ロボットを分解して基盤にプログラムをアップロード!

深センのイノベーションの震源地である福田区にある超巨大電気街「華強北」のコワーキングスペースで、お掃除ロボットを分解、再プログラミングしてロボットカーにしてしまおうという、「お掃除ロボットHack」イベントが開催され、epis深圳教室の生徒たちと一緒に参加してきました。


深セン市華強北のコワーキングスペース。ここからアイディア商品が誕生する。

お掃除ロボットをプログラミングするウォーミングアップとして、Arduino(アルデュイーノ )という、学生がコンピューターサイエンスを学習するために開発されたマイコンボードを使ってLEDを点灯させることから始めました。プログラムはビジュアルプログラミング言語でブロックを組み立てます。


Arduinoをブロックでプログラミング。

今回プログラミグをしたお掃除ロボットには、Arduinoのような基盤が使われているので、
LEDを点灯させるのと同じ要領でプログラミングをすれば、お掃除ロボットをプログラミングすることができます。
子供達には先生からお掃除ロボット制御のお題が与えられ、課題をクリアすべく一人一人がプログラミング に挑戦しました。
まずは、お掃除ロボットの右側の車輪(モーター)を回転させることからはじめ、その後、前進、右回転など少しずつ課題をクリアするためにプログラミング をしました。


様々なハプニングが起こることこそが醍醐味!?

プログラミングが正しくても、右の車輪と左の車輪が同じように回転しなかったり、床が平らではないためにまっすぐ進んでくれなかったりすることもあるなど、ハードウェアを制御することはプログラミング正しくても上手くいかないことも学びました。

今回はモーターを制御しコースを走らせたところで終了となりましたが、次回6月にはお掃除ロボットが搭載している各種センサー類も使ってのプログラミングということで次回も楽しみです!



HaloCodeでプログラミング×STEM スマートホームインテリア

HaloCodeで作った生徒たちの作品

 春期講習の6SRの授業では、わかば深セン教室のある深セン市に本社を置くMakeblockの新製品HaloCodeを使ってプログラミング(STEM、創客)の授業を実施しました。MakeblockはmBotというプログラミング可能な製品で有名になり、北米、ヨーロッパや香港の多くの学校で使われている製品を開発生産しています。
 わかば深セン教室は、そのMakeblock社のある深セン市にありますので、同社との付き合いも深く、今回はまだ日本では発売されていないHaloCodeというプログラミン学習用マイコンボードをお借りしてプログラミングの授業を実施することができました。日本ではまだ発売されていないので、HaloCodeを使った授業は日本初かもしれません!?深センではプログラミン用の教材を開発している企業も多数ありますので、このような機会が得られるのも深センだからできることです。
 今回はこれまでに発売されているmicro:bitやArduinoなどのプログラミング学習用マイコンボードには搭載されていない機能を使った学びをしてみたいと思い、音声(音量)に反応してLEDが色を変化させながら光るインテリア作りをしました。
スマートフォンやスマートスピーカーと照明が連動して部屋のムードを変えるシステムが最新のIoT家電、スマートホーム家電としてショールームなどで見かけるようになってきましたが、まさにそのようなイメージで、部屋で普通に話しているとインテリアが音声に反応して光り方を変えるというものです。


STEMにアートを加えたSTEAMの感覚も重要

 わかば深セン教室のプログラミング学習は、単にプログラミング言語を学ぶだけではなく、深セン市が推進する創客教育(深セン版STEM教育)を実践するものです。創客教育には、「プログラミング×テクノロジー×想像力」で、想像力や問題解決能力を高めようという狙いが込められています。
 AIを含めたテクノロジーの進化の過程で、今まで実現できなかった問題の解決、新しいサービスの開発が可能な世の中において、子供達はプログラミング言語を学ぶのと同時にそれを生かした製品、サービスを生み出す想像力を磨いていく必要があります。それが深圳の創客教育です。
 今回の授業でも「完成形」を見せて組み立てるだけの工作ではなく、基本のコードと製作用の基本的な材料を与えて、自由にコードを組み替え、自由に作品を完成させるように授業を進めました。
創客教育において重要なことは完成度の高さではなく、いかに生徒自身が自ら考え、テクノロジーを活用し問題を解決しようとしたかどうかです。
 今回の授業でも私たち大人が考えもつかない形で作品を作り出してくれました。次回の授業がまた楽しみになってきました。


※動画ではかなりギラギラ光っていますが、実物はもっとキラキラと綺麗に光っています。


micro:bitでプログラミング×STEM vol.8 LEDルーレット

micro:bitとLED(NeoPixel)


LEDルーレット

今日のSTEM×プログラミングの授業では、前回に引き続きLEDリング(NeoPixelリング)を使った作品作りをしました。前回は全体の色をグラデーションさせてクリスマスの飾りを作りましたが、今回はLED一つ一つを制御して、くるくる回るような動きにしてルーレットを作るという小林先生オリジナルの内容です。

「micro:bit×プログラミング」という取り組みの場合、何が問題で想定の動きをしないのかを探すのが非常に大変です。プログラミングがおかしい場合、LEDがおかしい場合、LEDの接触が悪い場合、ケーブルがおかしい場合、電池の電圧が落ちている場合などなど・・・。

プログラミングやハードウェアをまだ扱い始めたばかりの小学生にとっては、「なぜかできない!」という状況になるのですが、これをひたすらデバッグしてみたり、友達に相談してみたり、なんとかして問題解決するしかありません。
micro:bitを使ってプログラミングをするのですが、実際の学びはこの問題をいかに解決するかが大きな学びになってきます。
私は普段数学を教えているので、「これが数学だったら・・・」と考えると、いくらやっても解けない問題があったら諦めてしまう生徒が出てしまってもおかしくない状況の中で、プログラミングの授業では、子供達が一切諦めようしません。
できたときの喜び、感動を思うとなんとしても完成させたいのだと思います。
数学でもみんあがそう思えるような授業にしていきたいと思うのと同時に、プログラミングが子供を魅了する力は計り知れないなと感じています。
次回がまた楽しみです。


今回のコード LEDルーレット

let pikapika: neopixel.Strip = null
pikapika = neopixel.create(DigitalPin.P0, 16, NeoPixelMode.RGB)
pikapika.setPixelcolor(1, neopixel.colors(NeoPixelColors.Blue))

input.onButtonPressed(Button.A,function () {
for (let i = 0; i < Math.randomRange(40,56); i++) {
pikapika.show()
pikapika.rotate(1)
basic.pause(100)
}
for (let i = 0; i < 8; i++) {
pikapika.show()
pikapika.rotate(1)
basic.pause(500)
}
for (let i = 0; i < Math.randomRange(3,10); i++) {
pikapika.show()
pikapika.rotate(1)
basic.pause(1000)
}
})
input.onButtonPressed(Button.B,function () {
control.reset()
})