タグ: hiroshima

  • こどもプログラミング教室(PCNひろしま)参加について

    「PCNひろしま」という団体の立ち上げに参加し、こどもたちに「プログラミング専用パソコン IchigoJam」を体験していただくイベントを開催することになりました。
    第1回は私が講師を担当する予定です。開催日は7月30日(日曜)午後1時開始、3時30分終了の予定です。
    会場は「イノベーション・ハブ・ひろしま Camps」です。
    募集開始が7月になっていますが、詳しくは connpass のイベントページをご参照ください。

    経緯

    ここでは、私の視点での IchigoJam の魅力、そしてこの活動に関わることになった経緯を書いておきたいと思います。
    2015年の年末に「こどものプログラミング教室」について相談を受けたことがあり、ちょうど気になっていた教材候補の一つとして2016年1月に IchigoJam を購入してみました。
    いわゆるビジュアルプログラミングの教材もいくつか試してみたのですが、私は IchigoJam がシンプルで扱いやすい、魅力的な教材だと感じました。
    また、ある程度ハードウェアを拡張でき、しかもその扱いも簡単であることから、教育用としてだけでなく、大人のちょっとした電子回路の実験にも使えるように思いました。
    とは言いつつ、最初はいろいろ不満もありました。なぜ PS/2 キーボードなのか、なぜ(アナログの)ビデオ出力なのか、などなど。。
    私の作業場所にはアナログビデオ入力のディスプレイがなかったため、アナログから HDMI に変換するスキャンコンバーターを購入してみたのですが、微妙に信号の規格がずれているらしく、実用的なクオリティの画像を HDMI ディスプレイに出力できませんでした。
    中国からの輸入品で購入した超小型の液晶モニタがちょうどよくて、作業環境はやっと落ち着きました。
    けっきょく去年「こどものプログラミング教室」に私は関わることはなく、しばらく IchigoJam の応用例を参考にして MicroPython + ESP8266 の実験をやったりもしていました。
    今年の2月の「オープンセミナー広島」に jig.jp の福野さん(IchigoJam の開発者)がいらっしゃって、それにあわせて開催された IchigoJam の体験会に立ち会わせてもらいました。
    そして、この教材に対する見方がまた変わりました。
    一言でいえば「こどもの教材としてよく考えて作られている」ということでした。
    ご自身がちゃんとこどもたちと向き合ってプログラミングを教えながら、その経験を踏まえて仕様を改良して、現在に至っているということが理解できました。
    その後、福野さんを広島に招いたり体験会を企画してくださった石崎さんを代表として「プログラミング・クラブ・ネットワーク (PCN)」の広島版を立ち上げることになり、やっといま、第1回イベントの告知にこぎ着けたところです。
    広島に戻って以来、大学生にプログラミングを教えることからもしばらく遠ざかっていたのですが、私自身がこども時代に「黒い画面とキーボードだけのコンピューター」にワクワクしていた気持ちを思い出して、私が理解した IchigoJam の魅力を多くの人にお伝えしたいと思っています。

    おまけ

    西本はことし RubyKaigi 2017 オーガナイザーとして、全国・世界の Ruby 技術者が9月18日からの3日間広島に集まるお祭りの裏方をやっております。
    現在は Super Early Bird 料金でのチケットを販売中です。
    またスポンサー企業も募集しております。
    そろそろカンファレンスの詳細がいろいろ発表されると思います。ご期待ください。
    去年まで活動していた Python のイベントはどうなったのかというと、今年は「すごい広島 with Python」として、4月から毎月1回、定期的な勉強会として盛り上げていこうとしています。
    スクリーンリーダー NVDA に関しては、VIC への参加、そして今年は秋以降に NVDA 日本語チームとして東京圏での活動を計画中です。
    あわせて今後ともよろしくお願いします。

  • 「つくれば工房」で MicroPython 体験会

    この記事は たまに広島 Advent Calendar 2016 20日目の記事です。
    広島で Python のカンファレンスを開催してきた PyCon mini Hiroshima 実行委員会の西本です。
    その他に、オープンソースの Windows 用スクリーンリーダー NVDA の日本の開発者コミュニティ、NVDA日本語チーム、そして広島のコミュニティNVDA ユーザ会広島などをやってきました。
    11月12日の PyCon mini Hiroshima の報告は PyCon JP のブログに書きました
    また 11月27日 OSC 2016 Hiroshima のセッション『jus研究会広島大会「ITコミュニティの運営を考える」』で NVDA のコミュニティについて喋らせてもらいました。開催レポートで詳しく紹介していただいています。

    つくれば工房

    広島で「電子工作やLED手芸など自分で自由に作るものづくりの場」=「つくれば工房」を運営しておられる遠藤さんが PyCon mini Hiroshima 2016 に参加され、私が紹介した MicroPython について興味を示してくださったので、MicroPython 体験会を提案しました。
    事前に見学をさせていただきました。
    会場は広島市西区楠木町のアドウィンテクノ塾です。
    お子さんから年配のかたまでいろんな人がいらっしゃって、Arduino や 3D プリンタなど、いろいろなことにそれぞれ取り組んでいらっしゃいました。
    毎週土曜日に欠かさず開催されているそうです。ものづくりの「もくもく会」だと思いました。

    MicroPython体験会

    ということで12月10日の「つくれば工房」にて「MicroPython体験会」を開催していただきました。

    つくれば工房のウェブサイトに報告を掲載していただいているので、自分用の記録をここにまとめます。

    • 参加者 17人くらい。やはり年配の方からお子さん(お母さん同伴)まで。マイコン開発経験者もPython経験者もいらっしゃった。Windowsパソコンを持ってきたけどプログラミング未経験、というかたもいらっしゃった。
    • スイッチサイエンスの ESPr One の持参を推奨したが、他の ESP8266 基盤を持参された方もいた。機材によってはLED点滅の実験のためにLEDをGPIOポートにつないでいただく必要があった。
    • ファームウェアの書き込みのためにPCとMicroUSBケーブルで接続していただいた。充電はできるけど通信はできないMicroUSBケーブルもあり、サポートに手間取った。
    • 西本が事前に確認したのは PC 側に Python 2.7 + esptool.py をインストールして書き込みをする手順だった。体験会をした部屋で WiFi がうまく使えなかったため、USB メモリで ESP8266 Flasher と MicroPython のバイナリ、ESPr One のUSBシリアルドライバなどを回覧してセットアップしていただくことになった。
    • Windows に TeraTerm をインストールしていただいたら、バージョン 4.93 に文字化けの不具合があり、4.92 を入れ直していただいた。

    説明したこと:

    • nishimotzのサイトで紹介したLED1の点滅を、ターミナルから逐次入力でやってもらった。
    • コンマとピリオド、コロンなど、文法を説明した方が間違えにくいということに気づき、基本的な Python の文法の説明をした。
    • ペーストモードの説明をして、このLEDの点滅を def blink() のように関数として「メモ帳」に書いてもらって、ペーストモードで貼り付けてもらった。そうすると blink() だけで点滅を実行できる。
    • 早くできた人は PWM でだんだん明るくなるコードを自分で試していた。
    • トラブルシューティング:ペーストモードで改行が余分に入る。TeraTermの改行設定を送受信ともにCRにしてもらう。
    • WiFiを触ってもらうと面白いのだろうが、いろいろ難しそうだったので今回は説明を見送り。

    質問されたこと:

    • WebREPL が動いてない:MicroPython 1.8.6 から初期化を実行しないと WebREPL が動かない仕様になった。
    • 割り込みは?:ユーザーボタンを押すとメソッドを実行する、といったコードは動作を確認している。
    • 起動すると自動的に実行するコード(main.py)をどうやって書き込むの?:WebREPLでアップロードするか、プログラムをファイルシステムに書き込むためのプログラムをターミナルで実行する。
    • 本格的に使えるの?:処理系を自分でビルドすれば、C言語拡張モジュールを組み込むことができる。CQ出版「インターフェース」2016年10月号に情報あり。

    私はいろいろ準備不足でしたが、ベテランのかたが気を利かせてサポートしてくださったおかげで、無事に体験会を行うことができました。
    ふだん Arduino でマイコン開発を楽しんでおられるかたも何人かいらっしゃいましたが、MicroPython のメリットや面白さをなにか感じていただければと思います。
    広島に Python Boot Camp を誘致する計画も進んでいますが、広島で MicroPython 体験会、いかがでしょうか。こんどやるときはもっと上手にやれると思うので、ご連絡ください。
    自分が映ってる写真を撮り忘れたので、「つくれば工房」さんのサイトからお借りしました:

  • 電子工作のためのPython: MicroPython on the ESP8266

    2016年11月12日に PyCon mini Hiroshima 2016 を開催しました。
    開催報告記事は準備中ですが、まず私の発表を紹介しておきます。


    作ったプログラムと回路図
    準備のためにいろいろ実験していた記録
    過去のIoTLT広島での私の発表の記録
    録画(YouTube)
    質疑応答の時間に「産業界での利用状況は?」というコメントがあり、産業界というよりも教育分野での盛り上がり(BBC micro:bit 対応など)のことしか触れなかったのですが、Damien George さんの講演(YouTube GOTO2016 の動画)では「宇宙開発への応用のための SPARC 移植版」などに言及されていました。開発者がもともとそういう分野の出身なのだそうです。思い出せなくてすみませんでした。。

    私の発表では ESP8266 での動作状況だけをお話しましたが、もともとのターゲットである PyBoard などの ARM 系 CPU については、実行時にバイトコードではなくCPUのネイティブ命令を生成する機能など、性能を上げる処理がいろいろ実現されています。
     


    このブログ記事では、今回の発表をどのように準備したかを簡単に振り返っておきます。
    まず9月末に ESPr One を入手し、MicroPython の書き込み、動作確認をしました。
    そして手頃なセンサーやデバイスをいろいろESP8266の入出力につないでMicroPythonで動かしてみました。
    明るさセンサー(NJL7502)は「IchigoJamではじめる電子工作&プログラミング (I・O BOOKS)」で紹介されていて、いずれ遊ぼうと思って入手していました。
    また圧電サウンダ(ピエゾ圧電ブザー)は IchigoJamU に付属していたものをそのまま拝借しました。すでにモデルチェンジしているようなので、現在購入できるモデルにブザーがついているかどうかはわかりません。

    超音波センサーHC-SR04は5月にソラコムのハンズオンをやった(IoTLT広島で紹介済み)ときのパーツです。
    ESPr Oneからは5Vと3.3Vの両方の電源をとることができます。
    HC-SR04は5V駆動で、ESP8266のGPIOは(Arduinoと同じ)3.3Vとのことなので、ECHO の入力側は抵抗で分圧しています。
    こういうのは “Arduino 3.3V HC-SR04” で検索すると見つかるので、人気のあるパーツを選ぶと便利ですね。
    MicroPython for ESP8266 の Quick Reference にはデジタルの入出力方式として SPI, I2C, OneWire が紹介されています。
    今回 SPI は手頃なパーツがなかったので実験しませんでした。
    I2C でつないだのは小型のディスプレイ(OLED)です。
    MicroPython のライブラリや Adafruit のサイト記事や動画を見て SSD1306 というドライバーのものが簡単に使えると知ったので安価なものを Amazon で探しました。
    TonyDさんは ssd1306.py を組み込んでビルドし直していますが、MicroPythonのソースに入っているドライバーファイルをWebREPLでアップロードすればそのまま動きました。メモリを節約したかったら組み込んでビルドしたほうがいいと思います。


    OneWire は Quick Reference に書かれていた温度センサー DS18B20 をすでに入手していました。
    Arduino や Raspberry Pi などの書籍や記事でよく出てくるパーツだったので買っておいたのでした。
    手で触ると体温で温度が上がるのはわかるのですが、実際に組み合わせて使い道を思いつかなかったので、マイコンの起動直後に温度を表示して、18度から20度までの範囲だったら “good condition” と表示する、みたいな「しょうもない」使い方しかしていません。
    OneWire はプルアップの抵抗が必要なのですが、ESPr One のボード内の(おそらくは Arduino のプログラミングモード切り替えのための)抵抗をそのまま使えるように GPIO のポート番号を選びました。
    ESPr Oneにはスイッチがあって GPIO で値を読むことができますが、ボードをケースに入れてしまったせいで、細い棒のようなもので突かないと押せません。

    じゃあ光センサーと超音波距離センサーをスイッチの代わりにするか、ということで、全体を「光線銃ゲーム」に仕立てることに決めました。
    光センサーを「懐中電灯を当てたときに閾値を超える」ように AD 変換で使う抵抗の値を選び、超音波センサーは「距離測定を3回実行して80センチ未満が1回以上あったかどうか」を判定することで誤判定をなるべく回避するように実装しました。まあ誤判定しますけど。。
    ゲームにつきものの乱数は MicroPython の math にはなくて os.urandom で得られるランダムなバイト列を使いました。
    MicroPython の PWM は LED の明るさを変える目的で使われると思いますが、ここでは LED と圧電ブザーを並列につなぎ、メロディを流すのに使いました。
    性能が足りないのか精度が足りないのか、高い音は綺麗に出ません。
    音が出ているときはLEDも光ります。音を止める時は duty=0 にして信号が0になるようにしています。
    ゲームそのものの実装とデバッグは本番直前の2〜3日でやりましたが、よく考えると(電子工作やマイコンに親しんでいた子供時代を含めて)人に見せるために電子工作やミニゲームを開発したのはこれが初めてだなあ、と思いました。
    私が子供のころの電子工作はハンダ付けで組み立てるのが普通で、ブロックを組み合わせるような電子工作実験回路を羨ましく思ったものでした。
    いま、こういう回路がブレッドボードで簡単に組み立てできて、入出力デバイスもモジュール化されて、マイコンとデジタルで繋がって、しかもPythonで対話的に開発、実行できる。
    いい時代になったんだな、と素直に思った、そんなこの数日間でした。
    私に懐かしい世界を思い出させてくれた IchigoJam も好きですが、MicroPython と ESP8266 も、教材が充実してくれば、子どもの遊びやプログラミングの教育に使えるのではないでしょうか。