2019年4月7日日曜日

Raspberry PiとIchigoJamで同じキーボードを使えるようにする

手軽に使える学習用コンピュータとして、Raspberry Pi(RPi)とIchigoJamに注目しています。コンセプトの違いはあるものの両方ともかなり気に入っていて、いろいろなところでオススメしています。

RPiとIchigoJamは、それぞれのコンセプトが違うだけでなく、使えるキーボードの条件も違います。現状で一番手に入りやすいのは、USBキーボード。RPiは、USBキーボードが使えるので問題はありませんが、IchigoJamは、PS/2キーボードにしか対応していません。PS/2キーボードは、以前は多くの種類が出回っていましたが、最近はかなり少なくなっています。ややこしいのは、現在販売されているIchigoJamは、キーボードの接続コネクタがUSBの形状になっていること。つまり、内部ではPS/2として動いていて、信号的にUSBにして出力するキーボードを使う必要があるのです。

先日、近所のHard Offへ行ったところ、SolidYearのACK-595というPS/2仕様のUSキーボード(SolidYear提供の情報がありませんでした)を2台見つけて衝動買いしてしまいました。
#そもそも、私はUSキーボードしか使いません。日本では、当然のようにJISキーボード(日本語キーボード)の方が品揃えが多く、USキーボードは選択肢が限られることになります。

普段RPiで使っているのは、PFUHHKB Lite 2です。これは、普通のUSBキーボードなので、PS/2キーボードではありません。つまり、IchigoJamでは使えません。今回購入したACK-595は、HHKB Lite 2に比べると打鍵感はダメダメですが、PS/2キーボードです。何とかACK-595を、RPiにもIchigoJamにも使うことができないかやってみました。

先ずは、IchigoJamに接続してみます。PS/2接続の古いタイプのものには、そのまま挿して使えました。USB形状になった新しいものには、PS/2をUSBの形状に変換するコネクタを使いました。

これに挿すと、問題なく使うことができました。Amazonで安く購入できたので、2つ入りのものを購入しました。
#たくさん出品されているようなので、レビューを見ながら評判の良いものを選べば良いと思います。

このキーボードは、IchigoLatteでも使えました。なお、USキーボードを使う場合は、予めUSキーボードに対応したファームウェアに更新しておく必要があります。詳しくは、「ファームウェアの更新」を参考にしてください。

次に、RPiに接続してみます。先程のPS/2をUSBの形状に変換するコネクタを使ってみましたが、やはりダメでした。そこで、SANWA SUPPLYUSB-CVPS1を使ってみました。

すると、自宅にある、初代RPi、RPi B+、RPi 2B、RPi 3Bで使えました。反応が遅いとか、途切れるとかというような問題もありません。これで問題は解決です。

ついでに、RPi 3の日本語入力を設定しました。

$ sudo apt update && sudo apt install fcitx-mozc

前々回前回では、ibus-anthyやuim-anthyを使っていましたが、fcitx-mozcの方が評判が良いみたいなので、今回はこちらにしました。

この後、「sudo apt update && sudo apt upgrade」して、「sudo apt clean && sudo apt autoremove」しましたが、かなり時間を使いました。RPiには、安くなったときにまとめ買いした8GBのMicro SDカードを使っているのですが、upgradeが多すぎてできないというエラーが出ることもありました。必要なさそうなものを削除して、すべてのupgradeを終わらせましたが、これからはもう少し容量の大きなものを使った方がいいかもしれないと思っています。

2019年3月4日月曜日

【プログラミング教育】「正三角形をかくプログラムを考えよう」の授業案

前回の授業案の続きです。今回も「えんぴつ」のメタファを、「図形をかく」教材に利用しています。できるだけ、見た目やスプライトを統一して、使うコードのポイントになる部分だけを変える、という手法で作っています。これは、教科の学習のねらいに即した部分に焦点を当てて、プログラミングを教科の学習に埋め込むための工夫でもあります。Scratchの場合は、リミックスの敷居も低いので、学習したことを応用して更に別の図形をかくプログラムに改変しながら、さまざまな「図形をかくコード」を考案していってほしいと思っています。

----------------------------------------------------------------------------------------

【使用教材】
 【算数】正三角形をかく(1)
 【算数】正三角形をかく(2)

【課題】
 「どうすれば、正三角形がかけるのかな?」正三角形をかくプログラムを考えよう

【児童の問】
 プログラムで正三角形がかけることはわかったけど、自分でやるのはむずかしそう。
 どうすれば、正三角形をかくプログラムができるのかな?

正三角形をかくためには、同じ長さの3つの辺が必要です。プログラムで描画する際にもこの性質を使います。また、「( )度回す」の角度は、60度ではなく120度です。これは、外角にあたるのですが、外角の意味を教えなくても体を動かしながら考えるとわかりやすくなります。正面を向いて、60度向きを変えたとき、三角形には収束しません。120度回らなければならないのです。

ここで、子どもたちが三角形の内角の和が180度と知っていて、正三角形の1角が60度だと知っていることがポイントとなります。なぜ60度ではなく120度なのか。そして、この120度にどんな意味があるのか、じっくり考えさせたいところです。プログラミングだけを学ぶのではなく、プログラミングを通して正三角形の性質を学ぶのです。

今回使う、2つのプログラムは、両方とも全く同じ正三角形を描画します。コードに違いがあるのですが、これが味噌となります。2つのプログラムを比べることで、子どもたちがその違いに気づき、新しい表現による新たな可能性をも見いだせることを期待します。

続きはまた。

2019年2月17日日曜日

Scratch 3.0でmicro:bitを使う(プログラミング教材づくりのために)

自分で教材を作り、先生方へ授業のアイデアを提供しながらプログラミング教育の実践をお願いしているところですが、すぐに理解してどんどんやれる子と、なかなか理解できずにつまずく子がいて、どのような支援をしていくべきなのかというところに課題を感じています。

例えば、図形をかくプログラムのコードを見て、「その図形をかくために最も重要な部分は何か」を探す場面で、図形の定義から、コードのどこにそれが表されているのかを探せない子がいます。そういうときに、教師が教えてしまうのは簡単です。しかし、それではコードを読む力が育ちませんし、自分が求める何かを自分で作る力が育ちません。

そこで、そうしたつまずきに対する支援をプログラムでできないかという考えに至りました。(これは自然な流れだと思います)辺の長さは、どこで決められているのか。角度の大きさは、どこか。辺や角の数は…。というように、コードの違いを見比べることで気づけるような教材を作りたい。(カードのような形でも良いけれども…)実際に触って動かせるものがあったらもっと良い。これは、フィジカル・コンピューティングの出番だ!ということで、手軽にScratch 3.0と連携できるmicro:bitを使ってみようと思い立ちました。

幸いなことに、Scratchのページに、micro:bitとの連携の仕方が丁寧に解説されています。この手順に従って、まずはScratch Linkをダウンロードして解凍し、出てきたパッケージファイルを使ってインストールします。次に、Scratch micro:bit hexファイルをダウンロードして解凍し、パソコンにmicro:bitを接続してそのドライブの中にコピーします。これで両方の準備が完了です。超簡単です。

Scratch Linkを起動して、ブラウザー(IE非対応につき要注意)を開いてScratch 3.0のエディタ画面にしてから画面左下の「機能拡張」から、micro:bit機能拡張を選びます。すると、接続されているmicro:bitを自動的に探してくれるので、接続されているmicro:bitが表示されたら、「接続」をクリックします。これで無事にScratch 3.0とmicro:bitが連携して動くようになりました。Offline版のScratch 3.0でも動きました。
#ちなみに、スイッチサイエンス製のmicro:bit互換機「chibi:bit」では、動作しませんでした。

プログラミング教材への応用はこれからやっていきますが、もともと教材開発をScratch 1.4をベースに行っているため、3.0への移行によってどのような影響があるのか吟味しながら進めていきたいと思っています。

2019年2月11日月曜日

【プログラミング教育】「正三角形のしくみを考えよう」の授業案

自作の教材をどのように授業で活かすかを例示するという点で、いろいろと試行錯誤を重ねておりました。料理人によって、食材の活かし方が違うのと同様に、同じ教材でも、それを使って授業をする教員によって活かし方が違うと思っています。その意味で、私自身が授業の仕方まで例示してしまうことに一定の躊躇があります。しかし、プログラミング教育の場合は、やったことも見たこともないという先生方が大半だろうと思われますので、試みに「こんな授業はどうですか」という提案をするつもりで例示をしてみようと思います。今回をスタートとして、【プログラミング教育】の授業案を掲載します。

----------------------------------------------------------------------------------------

【使用教材】
 【算数】いろいろな正三角形をかく(1)

【課題】
 「どうして正三角形になるのかな?」正三角形のしくみを考えよう

【児童の問】
 正三角形は、3つの辺の長さがどれも等しい三角形だよね。
 どんなに大きさが変わっても、正三角形になるのかな?

三角形の3つの辺の長さがどれも等しい場合に、正三角形と言われる図形になりますが、これをプログラムから確かめる活動をさせてみたいと思います。プログラムのどの部分が正三角形を描くためのプログラムなのかを探し出し、正三角形のしくみを考えるのです。

このプログラムでは、「答え」に入力された数値を使って(このプログラムでは、「5歩」を「答え」回繰り返すようにしています)線を描いて120度回ることを3回やって元のところに戻ります。(あえて、「(3)回繰り返す」にしていません)この部分にさえ注目させれば、他のところはあまり重要ではありません。えんぴつが描く図形が正三角形であると言えるのは、この部分があるからだと見出だせればよいのです。(人が歩くa歩は、人により状況により違いますが、Scratchの場合は、常に一定であることを説明しておく必要があると思います)

こうして、プログラムによる正三角形を描くしくみがわかったら、いろいろといじってみたくなるはずです。どこの数字をどうかえていったら面白いか、プログラムをより効率的にするにはどうしたらよいか、どんな図形でも描けるのか、…遊んでいるように学べるのもプログラミングの良いところだと思います。

2019年1月14日月曜日

Scratchでプログラミング教育用の教材づくり

これまでにも、総合的な学習の時間を中心にフィジカル・コンピューティングの教育実践を行ってきましたが、その時々の子どもたちの実態に応じてカリキュラムを作っていくような実践が多く、広く一般的に取り組むには、かなりハードルの高いものになっていました。

立場も変わり、できることが限られていく中で、「プログラミング教育」が必修化されるということになり、自分自身にもまだまだやれることがあるのではないかと思うようになりました。とはいえ、これだけに没頭できる立場ではないし、自分自身が授業ができる立場でもないので、先生方に実践してもらえる状態まで準備をしなければなりません。1年近く前に「プログラミング教育をはじめます」と宣言をしてからコツコツと計画を練り、授業ができる環境づくりをしてきました。手始めに、既にScratchのWebサイトで公開しているプログラミング教育用の教材をこのBLOGでも紹介し、授業実践に結びつけた記事を書いていきたいと考えています。

これらの教材は、「単体で使う」あるいは「完成品として使う」ということではなく、複数のものを組み合わせたり、中身を改変したりしながら「プログラミング的な考え方」を学んでもらうことをねらっています。

2018年11月11日日曜日

M5Stackを使ってみる

M5Stack」は、ESP32を搭載し、Wi-FiやBluetoothも利用可能な小さな(5cm角)マイコンボードです。ColorLCD(TFT 320*240)を搭載し、SDカードスロットもついています。拡張モジュールによって機能を追加することができるため、やりたいことをスマートに実現させるガジェットとしては申し分なく、コンパクトなAll in Oneマイコンボードと言えると思います。Arduino IDEでの開発が可能なため、手軽に始められると思って購入してみました。
スイッチサイエンスマガジンでも紹介されています。「M5Stackであそぼう

今回参考にしたのは、公式サイトにあるMacOS向けのページです。もともと、Arduino IDEを使っていたので、今回は、インストール作業をしませんでしたが、まだインストールしていない場合は、先述のサイトからお使いの環境に合ったものをダウンロードしてインストールしてください。

次に、USBドライバのインストールなのですが、Silicon LabsCP2104を使っているようなので、それに合わせてSiLabs CP2104 Driverをインストールします。今回は、こちらもインストール済みだったので、インストール作業はしませんでした。

続いて、ターミナルを起動し、以下のコマンドを丸ごとコピーして貼り付けてから、最後にEnterキーを押します。ちょっと長くて意味がわからない感じがすると思いますが、パソコンとESP32とのやりとりができるようにするために、インターネットを介して必要なファイルをダウンロードして、あるべき場所に配置する作業をしているようです。

mkdir -p ~/Documents/Arduino/hardware/espressif && \
cd ~/Documents/Arduino/hardware/espressif && \
git clone https://github.com/espressif/arduino-esp32.git esp32 && \
cd esp32 && \
git submodule update --init --recursive && \
cd tools && \
python get.py

すべて一度にコピー&ペーストした方が、手間がかからなくて済みます。一つ一つ確かめながらやりたい場合には、1行ずつやって頂いても結構ですが、その場合は「&& \」は、必要ありません。

続けて、Arduino IDEを使って、M5Stackのライブラリーをインストールします。Arduino IDEを起動して、「スケッチ」メニューから、「ライブラリをインクルード」→「ライブラリを管理…」と選択していきます。出てきた画面上の検索窓に「m5stack」と入力します。すると、「Library for M5Stack Core development kit」という項目が現れるので、これを選択してインストール作業を行います。アップデートがある場合には、アップデートもお忘れなく。

Arduino IDEを一度閉じてから再び起動し、M5Satckの本体(Core)をUSB Type-Cに対応したケーブルでパソコンに接続します。今回は、自宅のMacを使っていますので、以下はMacでの動作確認となります。ここからは、「小型万能マイコン「M5Stack」で自分だけのクソダサいスマートウォッチを作る」を参考に、M5Stackの画面に時刻を表示することにしました。
#実は、M5Stackをスマートウォッチ風にする「M5WATCH」を購入していて、何かできないかなと思っていたのでした。

Arduino IDEの「ツール」メニューから「ボード」→「M5Stack-Core-ESP32」と選択します。同じく、「ツール」メニューから「シリアルポート」→「/dev/cu.SLAB_USBtoUART」と選択し、準備は完了です。「スケッチ」メニューから「スケッチ例」→「M5Stack」→「Advanced」→「Display」→「TFT_CLOCK_DIGITAL」とたどって選択し、コンパイルしてM5Stackに流し込んだら、画面に時間が表示されました。まだまだおもしろいことができそうです。これから、スケッチ例も参考にしながらなにができるかやってみたいと思います。
#ちなみに、今回のデジタル時計は、電源を切ってしまうと時間がリセットされてしまうので、注意が必要です。

2018年10月27日土曜日

USBシリアルモジュールでIchigoJamとその仲間たちのファームウェアを更新する

自宅には、教材研究のために購入し組み立てたIchigoJamが、新旧合わせて5個あります。忙しさにかまけて3年ばかり放置しておりましたが、そろそろ先生方にも紹介してみようかなと思いたち、最新のファームウェアに更新することにしました。

前回の更新では、FTDIのチップを載せたUSBシリアルモジュールを使って、Maclpc21ispからhexファイルを流し込む方法で更新を行いましたが、今回は買ったまま放置していたJamToastを使ってやってみることにしました。ところが、Webサイトを眺めていたら「SDカード非対応」らしき記述を発見。MMCカード及び互換カードって何?という状態で調べてみましたが、SDカードでうまくいくかもしれないとか何とか。試しに自宅に在庫しているSDカードを使ってやってみましたが、いくらやっても使えるSDカードに巡りあうことができませんでした。仕方がないのでやっぱり今までの方法で、IchigoJam、IchigoLatte、PanCakeのファームウェアを更新することにしました。
#前回参考にしたものと合わせて「ファームウェアの更新」も参考にしました。

IchigoJamのWebサイトでファームウェアのhexファイル等が公開されているので、ここからダウンロード(現時点での最新版は、1.2.3でした)して、適当なところに展開しておきます。今回は、私が使っているキーボードがUS配列のため、「ichigojam-ntsc-uskbd.hex」を使います。USBシリアルモジュールは、他のものでも構わないようです。
#5Vモードで動かした状態でないとダメみたいですが、はっきりとした検証ができていません。

IchigoJamとUSBシリアルモジュールの接続が終わったら、IchigoJamの電源を入れます。LEDがうっすら光っている状態がISPモードで、ファームウェアの更新を受け入れられる状態です。次に、Maclpc21ispを起動して、更新するhexファイルを選択します。続いて、シリアルポートの選択画面が表示されるので、「/dev/tty.usbserial-(※チップによって違う文字列)」を選択します。後は、書き込みを開始してしばらく待ちます。すると、無事に書き込みが終了して確認を求める画面が表示されます。これでファームウェアの更新は終了です。
#一番新しいIchigoJam Tは、表面実装のチップを含めて手ハンダで作ったためか、うまくファームウェアの更新ができませんでした。

同じことを、IchigoLatteでもやってみました。使ったのは、IchigoLatteファームウェア(ダウンロードファイルへの直リンク)で、現時点での最新版は1.1.7です。こちらは、IchigoJamと同様の操作でファームウェアの更新が完了しました。

次に、PanCakeのファームウェア更新を試みました。使ったのは、PanCakeファームウェア(ダウンロードファイルへの直リンク)で、現時点での最新版は1.2です。いろいろなWebサイトの情報から、PanCakeのファームウェア更新が面倒であることはわかりました。結局一番わかり易い方法として、IchigoJamのLPC1114FN28を外してPanCakeのLPC1114FN28を載せ替えてから、同じ手順でファームウェアの更新を行いました。これ以外の方法も試してみましたが、うまくいきませんでした。
#足が折れてしまうと使えなくなってしまうので、かなり慎重に作業をしなければなりません。

ここまでやって、かなり遅くなってしまったので作業を終了することにしました。残りは、MixJuiceのファームウェア更新です。次の作業ができるのは、いつになることやら。

【追記】のちにJamToastでのやり方も確認できました。(2023.12.31)