create every day - 福野泰介の一日一創

広がるプログラミングと電子工作、こども、おじいちゃん、校長、そして、ギャル!見事にちょうどいいカセットテープ x IchigoJam

2017/11/06 23:55:00
#IchigoJam #maker 

Edvation x Summit 2017」にて開催、前原小松田校長とPCN代表の松田さんによる「全く新しいプログラミング ー1年生から6年生まで、全部IchigoJam !
発想自由な小学生の内に、プログラミングと電子工作な技を身に付け、想像と創造の自由を獲得しよう!(してもらおう!)

自作の罠でイノシシを狩るおじいちゃんに続き、人気な電子工作なギャル「ギャル電」もEdvation x Summit 2017に登壇!
Edvation x Summit 2017 ギャル電の光るカセットテープネックレスワークショップWS | Peatix

松田さんも感化されて作った「光るカセットテープ」
うらやましくなり、ひさびさに買ったカセットテープ、IchigoJamにちょうどいい!

カセットテープの穴ふたつ、左はOUT3、右はCN5の3.3VとGNDに刺すとIchigoJamにちょうど安定
テープ状のWS2812Bを10コ(約110円分)、カセットテープ内部に貼り付け、線を3本 IchigoJam につなぐだけ
カセットテープを光らせるアイデア、最高です!これぞギャル力(ぎゃるりょく)!

・光るカセットテープ IchigoJam エディションのつくりかた
(オリジナルはこちら「フェスでテンあげ☆ 光るカセットテープ | dotstudio

30年前にはよく使ったカセットテープ(MSXからの保存は成功せず)

カセットテープをばらす(磁気テープは今回は使いません、クリスマスの飾り付けなどに活用ください)

中の出っ張りはニッパーでカット!破片を飛ぶので指を添えよう。

WS2812B、5コずつ2ラインがお手軽。5コでもいいし、細かく切ってたくさんつなげてもグッド!

WS2812Bを10コ、カセットテープ内に貼り付ける幅に並べてテープで仮留めして、予備ハンダ

DIからDOへとつながるように配線!5V同士、GND同士、外からコントロール用にジャンパー線3つもハンダ

カセットテープ内に貼り付け、ジャンパー線を通せばできあがり!(配線のじゃまになるところはニッパーで切除)

信号線をOUT1、VCC/GNDで電源を取って、クリスマス飾りで使ったWS2812BのIchigoJamプリント通りにプログラムすれば、光ります!

IchigoJamをカセットテープにちょうどくっつけるには、左の穴からOUT3、右の穴からVCC(3.3V)とGNDを刺すといい感じ。 ということで、OUT1用のマシン語プログラムを、OUT3で使えるようにパッチを当てます(上書き改造!)

25 POKE#73C,16

* マシン語コード OUT1用の [R1+`0001] をOUT3用 [R1+`0100] に変更

光りました!

今回のキラキラ電飾のシーケンスを実現するプログラムPOKE使用版はこちら(OUT3版、OUT1使用時は25行を削除)

1 'WS2812B x10 OUT3 10 POKE #700,240,181,114,182,64,24,80,33,9,2,1,49,9,4,4,136,1,48,128,37,1,48,3,120,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38 20 POKE #728,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,60,234,209,98,182,240,189 25 POKE#71A,10,97:POKE#72E,10,97 30 V=100 40 POKE#800,10*3,0 45 FORJ=0TO7 50 POKE#802,RND(V),RND(V),RND(V) 60 FOR I=1 TO 9:POKE#802+I*3,RND(V),RND(V),RND(V):NEXT 70 U=USR(#700,#800) 80 WAIT10:NEXT 100 FORJ=0TO3 105 POKE#802,0:COPY#803,#802,29 110 POKE#802,RND(V),RND(V),RND(V) 115 FORI=0TO9 120 U=USR(#700,#800) 130 COPY#802+29,#802+26,-27 140 WAIT3:NEXT 150 NEXT 200 FORI=0TO3 205 R=RND(V):G=RND(V):B=RND(V) 210 FORJ=0TO10:POKE#802,R*J/10,G*J/10,B*J/10:COPY#805,#802,27:U=USR(#700,#800):WAIT2:NEXT 220 FORJ=9TO1STEP-1:POKE#802,R*J/10,G*J/10,B*J/10:COPY#805,#802,27:U=USR(#700,#800):WAIT2:NEXT 230 NEXT 240 GOTO 30

* 30行のVは明るさ(0〜255、電流使いすぎに注意!)、40行〜ランダム、100行〜ぐるっと光る、200行〜フェードイン・アウト

自分だけのバイブス、創りましょう!

こども向け「プログラミング クラブ ネットワーク」
シニア向け「シニア プログラミング ネットワーク」に続き、
松田校長による「イノベーティブな校長ネットワーク」誕生!
さらに、ギャル電!
オープンなネットワーク社会、それぞれのゆるいつながりが生む新しい世界もまた楽しみです!

links
- フェスでテンあげ☆ 光るカセットテープ | dotstudio
- 世界をポジティブにぶっ壊す! ド派手な電子工作ユニット『ギャル電』が起こす小さな革命 | CAREER HACK
- 「サンプルコードをコピペ」から始めよう! ギャル電が提唱する、エモみある電子工作のススメ | i:Engineer(アイエンジニア)|パーソルテクノロジースタッフのエンジニア派遣
- 「ギャル電」が話題沸騰 いったい何者?渋谷ハロウィンで本人達を直撃 - モデルプレス
- 発明家インタビュー / 「繋げたら光るバイブスでやってる」モテるために電子工作を始めた『ギャル電』 | 藤原麻里菜|エステーQ
- エモいカセットテープ by ギャル電 に感化されてさっそく作りました、IchigoJam BASICバージョン! – about yrm
- カセットテープ復権、しかし誰も作っていなかった - WSJ

100円マイコンを使い倒そう!たった28byteから始めるマシン語アプリ開発

2017/10/14 23:55:00
#IchigoJam #lpc1114 #maker 

IchigoJamで活躍、100円だけど1秒に5000万回も計算しちゃうCPU、NXP社のLPC1114FN28/FDH28。

32KBのFlashROMという書き換えも可能な記憶装置を内蔵していて、そこにIchigoJam BASICというOSを書き込むことで、IchigoJamとして動いています。(別のOS、IchigoLatteを入れるとJavaScriptが使えます!)

通常は、FlashROMに書き込むプログラムをC言語を使って開発しますが、ARMマシン語を使って最小の開発環境づくりに挑戦、一応エルチカすることに成功!

FlashROMの先頭、アドレス0番から4byteにスタックの初期アドレス、その後にリセット時(電源投入時)に実行するアドレス、更に様々な割込に対応するアドレスが続く、192byteのvectorsという領域があり、その後プログラムが通常続きます。

リセット時以降、割込を使わなければその領域もプログラムに使っても大丈夫かも?ということで、実験してみました。

DATA L #10001000 DATA L #00000009 R1=[@GPIO1DIR]L R0=`100000 [R1]=R0 R1=[@LED]L [R1]L=R0 GOTO 0 @GPIO1DIR DATA L #50018000 @LED ' PIO1_5 DATA L #50010080

RAMは#10000000からの4KBなので、後ろから順に使うスタックをその一番後ろ、#10001000と設定します(ISPコマンドを使う場合は32byte空けましょう)。

続いての#9は、その後アドレス8から始まるプログラムの先頭にマシン語のThumbとして呼び出すことを示すために1を足した、アドレス9を指定します。

以後は、通常通りマシン語でプログラムを作りますが、起動直後LEDが接続されているPIO1_5は入力になっているので、GPIO1DIRを使って出力に切り替えるコードを追加します。 これでLEDを光らせるプログラムができました!

リセットされた時に呼び出されるプログラムは帰る場所がないので、終了はRETではなくGOTO 0と無限ループにしておきます。

asm15 assemblerにhex出力機能を追加したので、hex fileとして出力したものを、lpc21ispなどを使って書き込むと点灯成功!

:100000000010001009000000024920200870024979 :0C0010000860FEE70080015080000150F5 :00000001FF

わずか28byteととってもコンパクトに開発できるので、IchigoJamを開発機として、マイコンや別のIchigoJamに書き込んで使うこともできそうです!

せっかくなのでマシン語でエルチカしてみましょう。もっとすっきり書けそうですが、何かの不具合で短くするとうまくいかない点は要調査です。(誤り発覚、最小は32byteでした

DATA L #10001000 DATA L #00000009 R1=[@GPIO1DIR]L R0=`100000 [R1]=R0 R2=0 R1=[@LED]L @LOOP [R1]L=R0 R7=[@WAITCNT]L R6=R7 R6-=1 IF !0 GOTO -1 R2=0 R1=[@LED]L [R1]L=R2 R6=R7 R6-=1 IF !0 GOTO -1 GOTO @LOOP @GPIO1DIR DATA L #50018000 @LED ' PIO1_5 DATA L #50010080 @WAITCNT DATA L 3000000

クロックは初期設定時は内蔵IRCを使った12MHz動作なので、1回4cycleかかるループを、300万回まわすことで、1秒置き点滅が実現できました!

LPC1114ベアメタルなエルチカ!アフリカ上空にて

普通の開発環境を一切使うことなく、マイコン開発ができたので、次は、IchigoJamだけで行うマイコン開発に挑戦です!

IchigoJam RPi ベータ版公開!

2017/10/11 23:55:00
#IchigoJam #rasppi #maker 

お待たせしました、Raspberry Piで動くIchigoJam、IchigoJam RPiのベータ版がIchigoJam-FANからダウンロードできるようになりました! 超簡単エルチカがラズパイでも実現です!


* 書籍は、高専プロコンで出会った高知高専の今井一雅さん著「Raspberry Pi ZeroによるIoT入門- Zero W 対応

LED1 OK LED0 OK

わずか8MBのファイル群を、microSDカードにファイルをいれて、ラズパイにセット、電源をいれれば数秒で起動、LED1、エンターでラズパイのLEDが光ります!(まるで、IchigoJam!)

10 LED1:WAIT60 20 LED0:WAIT60 30 GOTO10 RUN Break in 10 SAVE0 Saved 42byte OK

IchigoJamのボタンを押しながら電源ONの代わりに、キーボードをつながずに電源ONで自動起動。LEDが1秒おきに点滅します。

GPIO/PWMも同様にいろいろと使えます。

microSDカードは、起動後はファイルを保存、読み込みする以外は使わないので、いつ電源を切っても大丈夫! ラズパイを使ったお手軽電子工作にもぜひチャレンジください。

links
- IchigoJam RPi ベータ公開 on IchigoJam-FAN
- $15 Computer IchigoJam meets Cute Manufacture Pimoroni in UK, and connects SkyWriter HAT!
- ラズベリーパイ財団も特別協賛、PCNこどもプロコン表彰式
- IchigoJam meets Raspberry Pi! Mr. Eben Upton's first IchigoJam BASIC program is...
- IchigoJam on Raspberry Pi - ラズパイ用のベアメタルOSとしてのIchigoJam

みちびき打上成功!GPSモジュールを使った狂わない時計のつくりかた

2017/10/10 23:55:00
#IchigoJam #maker 

日本独自の衛星測位システム(日本版GPS / GPS_jp?)、全4機中4機目の打ち上げが成功!

みちびきは、準天頂衛星といって日本上空に8時間ほど留まる軌道で周る衛星です。 1機あたり8時間留まり、アメリカのGPS信号を補完することで、位置測位精度を上げてくれます。 都市部のビル街など、空が真上しか見えない場所で、位置が狂って迷うことが格段に減るはずです!

また、位置測位の精度も向上するため、誤差が大きく利用できなかった分野でも使えるようになります。 いろいろ実験してみましょう!(誤差6cm!?)

IchigoJamにみちびき対応のGPSモジュール(2,200円@秋月電子)のつなぎ方は前回解説しましたが、今回はもっと簡単な時計のつくりかた。

たくさんの衛星からの信号を元に位置を測定する場合、正確な時計が重要です。その時刻信号も受け取れるので、それを利用すると狂わない時計がつくれます。

GPS時計のつくりかた

1. IchigoJamの5V/TXD/GNDをGPSの5V/RXD/GNDへ(初回のみ)
(速度を115200bps、受け取るメッセージをシンプルに、一度設定すれば記憶されます)

BPS9600 OK UART3:?:?"$PMTK314,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2B":UART0 OK UART3:?"$PMTK251,115200*2F":UART0:BPS0 OK

* 試しにGPSのTXDからIchigoJamのRXDにさしてみると、信号受信を確認できます!

2. プログラムを入力して、RUN

1 'GPS CLOCK 10 SWITCH1:CLS 20 CLK:LC0,-1 30 IF INKEY()!=ASC("$") CONT 40 FOR I=1TO6:K=INKEY():NEXT 50 FOR I=0TO2:[I]=(INKEY()-48)*10+INKEY()-48:NEXT 60 [0]=([0]+9)%24 70 LC4,4:FOR I=0TO2:?DEC$([I],2);:IF I<2 ?":"; 80 NEXT 90 GOTO 20

3. IchigoJamの5V/RXD/GNDをGPSの5V/TXD/GNDへ
* SAVE0に保存しておけば、自動実行対応!
* GPSモジュールの1PPSは、位置測位中、超正確な1秒間隔でちょっとGNDになる信号として使えます

いよいよ来年度からの本格運用とのことですが、今でも時間帯によってはみちびきパワーを体感できるはず!

links
- GPS受信機キット 1PPS出力付き 「みちびき」対応: センサ一般 秋月電子通商 電子部品 ネット通販
- JAXA|「みちびきさんに聞いてみよう」~みちびきFAQ~
- 送信信号一覧|みちびきについて|みちびき(準天頂衛星システム:QZSS)公式サイト - 内閣府
- みんなのみちびき
- 準天頂衛星みちびき4号打ち上げ成功 日本版GPSへ:朝日新聞デジタル
- 誤差6センチ、畑も自動で耕せる? 「みちびき」が成功:朝日新聞デジタル

尾道IoTワークショップ&福岡エンジニアパネル@さくらインターネット、位置ログ保存マシン on IchigoJam

2017/10/07 23:55:00
#IchigoJam #hiroshima #fukunoka #maker 

尾道にて、はんだづけによる初めてのコンピューターづくり&プログラミングから、さくらインターネットのsakura.ioを使ったIoTづくり体験を実施。 大人も楽しい、電子工作新時代!(体験項目:はんだづけ、LEDチカチカ、信号機づくり、かわくだりゲーム、音楽づくり、sakura.ioでスマホからIchigoJam、IchigoJamからスマホ)


尾道駅から徒歩3分、ソフトクリームが目印!


楽屋な場所をお借りしてIchigoJamをはんだづけ!


IoT体験!スマホでつながると夢ひろがる!


尾道でもIchigoJam、ぜひどうぞ!

場所を福岡さくらインターネットに移して、エンジニアパネル。みんなきっかけはいい仲間が集まるコミュニティがあったから。いかにコミュニティを活性化していくかが鍵。 福岡はさくらインターネット他、コミュニティーに理解ある大企業が場所をつくって、その場所をつかったイベントを中心にコミュニティができていったとのこと。 場ができた福井、鯖江、こどもエンジニアコミュニティーづくりに興味ある、小中学生を探してみるのもおもしろいかも?


ジョンバーガーのいちごスムージー、おいしい!


エンジニアパネル!


懇親会@福岡


PCN福岡に頼もしい助っ人!?


エンジニア!

いろいろ場所を移動するので、場所の記録をIchigoJamでも取ってみる。GPSモジュールは、レギュレーターをスキップすれば3.3Vで動くとのことで、常時ONになってしまうCN5の5Vではなく3.3Vを使うように小改造。 データを簡易的に保存するため#C00〜#FFFのプログラム領域の後ろから、緯度経度を分で整数部と小数部で表した8byteを順に記録するプログラムを追加。 起動すると最初の位置測位でプログラムと一緒に位置を記録できるようになりました!


早速エンジニアコミュニティパワー、秋月GPSを使っている人から、三端子レギュレーター、左のピンが3.3Vを取る技を聞いたので実践! 直接はんだづけすればOKでした


外でGPSチェック!結果良好でした

10 UART0,1:SWITCH1:LED1:F=0 20 K=INKEY():IF K!=36 CONT ELSE CLS 30 ?CHR$(K);:K=INKEY():IF K!=13 CONT ELSE ? 40 GSB@PRS 42 IF E&&!F F=1:FORI=0TO3:N=[I]:GSB@DPUSH:NEXT:SAVE 44 GOTO20 100 @PRS:A=#900+18:E=PEEK(A)=65:IF!E RTN 110 GSB@GETM:LET[0],N,M:GSB@GETM:LET[2],N,M:RTN 200 @GETM:A=A+2:L=3-(PEEK(A+4)=46):GSB@ATOI:N=M 210 L=2:GSB@ATOI:N=N*60+M 220 A=A+1:L=4:GSB@ATOI 230 A=A+1:IF PEEK(A)=83 OR PEEK(A)=87 N=-N 240 ?N,M:RTN 300 @ATOI:M=0:FORI=1TOL:M=M*10+PEEK(A)-48:A=A+1:NEXT:RTN 500 @DPUSH:A=#FFE 510 IF PEEK(A)=0&&PEEK(A+1)=0&&PEEK(A-1)=0 POKEA,N,N>>8:RTN ELSE A=A-2:IF A<#1000-FREE() RTN ELSE CONT 550 @DSHOW:A=#FFE 560 N=PEEK(A)|PEEK(A+1)<<8:IF!NRTN 570 ?N:A=A-2:IFA<#1000-FREE()RTN 580 GOTO560 GSB @DSHOW 2014 7679 7824 1267 2014 7679 7824 1267 2014 8213 7824 1248 2014 8367 7824 1307 2014 8411 7824 1387 2014 8228 7824 1682 2014 8246 7824 1420 2014 8268 7824 1546

体育とプログラミング教育、GPS x IchigoJamで校庭に絵を描いたり新スポーツ創ったり

2017/10/05 23:55:00
#KidsIT #IchigoJam #maker 

自分たちで外で遊ぶコンピューターゲームを創って遊ぼう!

IchigoJamで色を変えるボタンとsakura.ioをつなげば、サーバーに送ってみんなでお絵かきしたり、オープンデータを使って近所の宝探しをしたり、いろいろと遊べそうです! データを外部記憶装置(EEPROM)にどんどん書き込んでいく形にすれば、自分だけの地図を作ることもできちゃいます。

鯖江市のバスIoTの「つつじバス x sakura.io」GPSデータも合わせて送信する版の準備も兼ねて、 日本の衛星、みちびき対応のGPSモジュール「GPS受信機キット AE-GYSFDMAXB 2,200円(秋月)」をIchigoJamにつないで使ってみました。


緯度経度のデータをGPSモジュールからシリアル信号で受け取って、緯度経度の部分を切り出して分で表示するプログラムを、液晶モジュールと単3電池のモバイルバッテリーで動かしている様子。

まずはモジュールをはんだづけ。GPSモジュールから5ピン、ピンヘッダーやピンソケットなどを使って配線。

電源は5V、GNDをIcigoJam TのCN5につないで、IchigoJamの方をシリアル通信速度を9600bpsに合わせて準備。

BPS9600

GPSモジュールのTXDをIchigoJamのRXDに接続すると、画面にデータがつぎつぎと表示されます。
* IchigoJam 1.2では、「OK0」というコマンドでエラーメッセージが出ないようにできるので、データの確認に便利です。「OK」または「OK1」で元に戻ります。

データは、NMEAセンテンスといってGPSモジュールの標準の形式です。多すぎるので緯度経度だけを取得するシンプルなメッセージ$GPRMCだけを、3秒に1度だけ送ってもらうよう設定します。 GPSモジュールのTXDの線を一旦抜き、RXDからIchigoJamのTXDに接続して、次のコマンドを実行。

UART3:?:?"$PMTK314,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2B":UART0

UART3は、GPSモジュール向けの改行コードCR+LFを送信するモード。PMTK314で受け取るメッセージを設定します。 GPSモジュールのTXDをIchigoJamのRXDにつないでみて確認しましょう。

9600bpsではちょっと遅いので、RXDを抜き、IchigoJam標準の115200bpsに設定して高速化!

UART3:?"$PMTK251,115200*2F":UART0:BPS0


GPSモジュールとIchigoJamは4本の線で接続。設定はGPSモジュールに記憶されるので、設定が終わったらGPSモジュールからのTXDは不要です。
初回だけ位置測位に時間がかかりますが、次からの起動では数秒で位置データが来るので、必要なときだけ電源をいれる用途にも使いやすい!

次に受け取ったデータを変数にいれます。
シリアルからの信号は、INKEY()で取得できるので、開始記号「$(=36)」を目印に、画面先頭に表示します。

10 UART0,1 20 K=INKEY():IF K!=36 CONT ELSE CLS 30 ?CHR$(K);:K=INKEY():IF K!=13 CONT ELSE ? 40 GOTO 20

UART0,1で、シリアル送信は止めて、シリアル受信だけを有効にしています。
開始記号でCLS、改行コード13が来るまで表示します。

$GPRMCメッセージのフォーマットは、時間、A(正常) or V(警告)、緯度、経度・・・となっているので、Aを受信していれば、緯度経度の読み取りをします。 数値の読み取りは画面上の文字コードから"0(=48)"を引けばOKです。

300 @ATOI:M=0:FORI=1TOL:M=M*10+PEEK(A)-48:A=A+1:NEXT:RTN

画面の左上に123と書いておき、呼び出すと値123となります。(Lは長さ、2にすると12になる)

LC 0,0:?"123" A=#900:L=3:GSB@ATOI:?M A=#900:L=2:GSB@ATOI:?M

応用して、dddmm.mmmmと度と分で表されている緯度経度を、整数と小数部分それぞれに分けて読み取るプログラムを作ります。

100 @PRS:A=#900+18:IF PEEK(A)!=65 RTN 110 GSB@GETM:LET[0],N,M:GSB@GETM:LET[2],N,M:RTN 200 @GETM:A=A+2:L=3-(PEEK(A+4)=46):GSB@ATOI:N=M 210 L=2:GSB@ATOI:N=N*60+M 220 A=A+1:L=4:GSB@ATOI 230 A=A+1:IF PEEK(A)=83 OR PEEK(A)=87 N=-N 240 ?N,M:RTN

画面先頭に$GPRMCのメッセージを表示し、@PRSを呼び出すと配列の0〜3に緯度経度が分数の小数表記で入ります。

液晶モジュールを接続したモバイルバージョンのプログラム全文がこちら。

10 UART0,1:SWITCH1:LED1 20 K=INKEY():IF K!=36 CONT ELSE CLS 30 ?CHR$(K);:K=INKEY():IF K!=13 CONT ELSE ? 40 GSB@PRS:GOTO 20 100 @PRS:A=#900+18:IF PEEK(A)!=65 RTN 110 GSB@GETM:LET[0],N,M:GSB@GETM:LET[2],N,M:RTN 200 @GETM:A=A+2:L=3-(PEEK(A+4)=46):GSB@ATOI:N=M 210 L=2:GSB@ATOI:N=N*60+M 220 A=A+1:L=4:GSB@ATOI 230 A=A+1:IF PEEK(A)=83 OR PEEK(A)=87 N=-N 240 ?N,M:RTN 300 @ATOI:M=0:FORI=1TOL:M=M*10+PEEK(A)-48:A=A+1:NEXT:RTN

*シリアル受信がおかしくなる現象対策版をIchigoJam-FANにて、β版1.2b51として公開中

GPSを持って外に出よう!

自分で作る電飾!4足の数珠つなぎできるコンピューター内蔵LED「PL9823でいろあそび - IchigoJamプリント」

2017/10/02 23:55:00
#KidsIT #IchigoJam #maker 

WS2812Bと同じように数珠つなぎにできるコンピューター付きフルカラーLED「PL9823
赤緑青(RGB)を0〜255の256段階で順に指定してマシン語を呼び出すだけ!

色、自由自在!(PL9823、選べる大きさ5mm8mm


一番長いピンがGND、データシートに習って右から2番目にくるように見ます。
左から、DIN(データ信号入力)、VCC(電源5V、3.3Vでも動く)、GND、DOUT(次のPL9823のDINへ)


IchigoJamプリントPL9823へいろあそび」(PDF)
マシン語はWS2812Bと共通ですが、色の並びが異なります(WS2812B GRB、PL9823 RGB)


2つつないだ例。1つ目のDIN、VCC、GNDを2つ目のDOUT、VCC、GNDにつなげばOK!
数珠つなぎで数百コ接続してもOKです!(明るく光らせる場合は電源の追加は必要です)


アイオーデータ、細野さん、会長就任おめでとうございます!記念写真 with IchigoDake

全10か所相互中継、第7回小中学生対象のプログラミングコンテスト「PCNこどもプロコン表彰式」

2017/10/01 23:55:00
#KidsIT #IchigoJam #IoT #maker 

PCN(プログラミング クラブ ネットワーク)主催の小中学生対象のプログラミングコンテスト、7回目となる「PCNこどもプロコン2017夏」の表彰式がありました。 賞が決まって、大喜びする子供達、賞を逃した子供達にも審査委員からのコメントと参加賞をお届けしますよ!

今回は、イギリスのラズベリーパイ財団とケニアのアイダーアフリカから、海外からの初の特別協賛!
シンガポール在住、チームラボの高須さんから子供たちへの講演からも、世界との近さ、感じてくれたはず!

創って、見せて、また創りたくなる。誰かの創ったのを見て創りたくなる。何かを創ることつながる、創る仲間に国境なし。創ること好きの輪、世界中に広げましょう!


サテライト会場の人も含めて記念写真!


全国9か所を相互中継!


IchigoJamで作られた「300円を入れたら利用できる富士山トイレ」
心打たれる、身近な社会課題に切り込んだ作品!


印象深い「スマホ使いすぎ防止マシーン」
ゲームしすぎと怒られた時代とは隔世の感がありますね!子供が親をマシーンでたしなめる時代です。


シンプルな機構、安定した動作、筐体のインパクト、大きな音(音量調整可能)。
抜群の完成度の高さを誇っと、足でひくピアノ「Step on(音) the piano(IchigoJam BASIC)」


アルミホイルとダンボール、各端子からの配線をブレッドボードにまとめ、音量は100均のアンプとスピーカーを改造して強化!


回線の契約がないiPod touchでもプログラムの受け渡しするために、画像化エンコード・デコードを独自研究によって実装、検証した作品「EasyAppExchange」 子供ならではの課題をテクノロジーで解決しちゃう感がナイス!


子供の作品にうなる大人


シンガポール、メイカーが大事すぎて大臣もメイカーに!?
国連で演説するヴェヴィアン外務大臣!


ヴィヴィアン外務大臣は、なぜつくるのか? → 楽しいから
大人だって楽しいからつくるのだから、子供はもっともっとつくって楽しんでほしい。
やってみないとわからない、つくってみないとわからないのは大人も子供も一緒!
じゃんじゃんつくって、たくさん失敗すればするほど強くなる!


仙台と福井をむすんだ、IoT(インターネット オブ シングス)デモ!
スマホに表示される距離センサーの値をみながら、福井のロボットを仙台からちゃんと制御できるのか!?
こどもでも遊べるIoT!ネットネイティブな子供にとってはネットにつながるのは極自然なことなのかも。


ラズベリーパイ財団賞には創始者Eben Upton(エベン・アプトン)さんも賞賛「スマホ使いすぎ防止マシーン」
お母さんのスマホ使いすぎを子供がオリジナルのマシンを発明して、注意する時代です!


アイ・オー・データ機器を授与する細野会長!いい笑顔です!


テレビ会議サービスZoomを使って双方向につないだ、各地サテライト会場となったPCNへ協賛賞パネルをこっそり事前送付。


今回は北海道から東京サテライトへ参加してくれたスマホ使いすぎ防止装置をつくった森下くん!


金沢から福井会場に来てくれました!


SwiftでiPhone用クイズアプリ「IchigoJam Mania」をつくったMASAHARU、永和システムマネジメント賞を受賞!


jig.jp賞は、Scratchでつくったカブトムシキャッチャー。吸引しちゃうアームがコミカル、採ったら減点のハエ、高得点の金のカブトムシ。得点計算の演出がかわいい!

副賞のIchigoJam詰め合わせに、楽しい「コンピューター付きフルカラーLED WS2812B」とその使い方も同梱。
IchigoJamプリント「WS2812Bでいろあそび」ぜひチャレンジしてみてください!

IchigoJam用に買った7インチディスプレイ、電源にACアダプターソケットがないことあり!?

はんだづけテクニックがあれば、大丈夫!(高電圧は危険なので気をつけて!)

審査委員として、CoderDojo から安川さんにも参加いただきました!
全国103か所以上の子どものためのプログラミング道場「CoderDojo」もぜひ訪ねてみてください!

経験値を貯めるほどに上がる、ものづくりレベル!
第8回もお楽しみに!

links
- PCNこどもプロコン

IchigoJamで計算する色相環、色相・彩度・明度を光の三原色に / HSV2RGB in BASIC

2017/09/30 23:55:00
#IchigoJam #maker 

虹みたいなグラデーション、色相を学んで自分で作ろう!
赤→橙→黄→緑→青→藍→紫→赤、と色がループするものと捉えるのが色相環。
色は、色相(Hue)と、鮮やかさ(発色の良さ)を彩度(Saturation)、明るさを明度(Value)でも表せます。


低価格コンピューター内蔵フルカラーLED「WS2812B」を使って、色相をぐるぐる変えてみました。


切ってもつないで自在に使えるWS2812B、3つだけカットし、ピンヘッダーを付けたコンパクト版。
5V/DI/GNDを、IchigoJamのVCC/GND/OUT1にそのままさして手軽に実験できます!

プログラムはこちら(10/20行はWS2812Bコントロール用マシン語)

10 POKE#700,240,181,114,182,64,24,80,33,9,2,1,49,9,4,4,136,1,48,128,37,1,48,3,120,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38 20 POKE#728,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,60,234,209,98,182,240,189 100 POKE#800,3*3,0 110 V=30:S=80 115 FOR I=0 TO 359 STEP 1 120 H=I:GSB@HSV2RGB:POKE#802,G,R,B 130 H=I+60:GSB@HSV2RGB:POKE#802+3,G,R,B 140 H=I+120:GSB@HSV2RGB:POKE#802+6,G,R,B 145 U=USR(#700,#800) 150 NEXT 160 GOTO 115 500 @HSV2RGB 505 R=V:G=V:B=V:IF S=0 RTN 510 D=H/60%6:C=V-(59-H%60)*V/60*S/100:E=V-H%60*V/60*S/100:F=V*(100-S)/100 520 IF D=0 G=C:B=F 530 IF D=1 R=E:B=F 540 IF D=2 R=F:B=C 550 IF D=3 R=F:G=E 560 IF D=4 R=C:G=F 570 IF D=5 G=F:B=E 580 RTN

H、S、Vに値を指定して GSB@HSV2RGB で、光の三原色RGBに変換します。
Hは色相、0-360で指定します。0が赤です。
Sは彩度、0-100で指定します。100で一番鮮やか、0でモノクロ。
Vは明度、指定した値がRGBそれぞれの最大輝度になります。
変数C/E/Fを使っているので注意!
(変換方法の詳細は「HSV色空間 - Wikipedia」などを見てみよう)

WS2812Bを3つ、色相を60度、120度ずらしたものと合わせてグラデーションさせながら点灯させています。 110行の明度と彩度をいろいろ変えてみましょう。普通のフルカラーLEDをPWMで制御するものにも使えます!

彩度(S)を使わない HV2RGB だともうちょっとシンプル。

500 @HV2RGB 510 D=H/60%6:E=H%60*V/60 520 IF D=0 R=V:G=E:B=0 530 IF D=1 R=V-E:G=V:B=0 540 IF D=2 R=0:G=V:B=E 550 IF D=3 R=0:G=V-E:B=V 560 IF D=4 R=E:G=0:B=V 570 IF D=5 R=V:G=0:B=V-E 580 RTN

過去の一日一創作品より、色相関係をピックアップ

HSVの3パラメーターを3本指で!(マルチタッチ用)カラーセレクター / colsel」 2016年


簡単に色調が整えられる TinyHSVTinyHSV」 2013年


hsb2rgb」 2012年

色、たった3パラメーターなのに奥深い!

冷蔵庫IoT、25円の温度センサーで温度異常を検出せよ! IchigoJam x sakura.io x MCP9701

2017/09/29 23:55:00
#IchigoJam #IoT #maker 

冷蔵庫が壊れて温度上昇!?うっかり開けっ放しで外出してしまって大変!
そんな時、温度センサーをつなげた冷蔵庫IoTがあれば安心です。

温度センサーは誤差0.5度の高級なものもありますが、温度異常を調べるだけなら安くてOK。 相対温度の誤差1度のtempeXにも使われているMCP9700/MCP9701がお手軽です。


MCP9701-E/TO 温度センサーIC、8コで200円、1コあたり25円!
電源は3.1V-5.5VまでOKなので、IchigoJamの3.3Vを使いましょう。出力はアナログ電圧1度の変化が19.5mVの変化になるようです。


データシートからピン配置を調べると、平らな文字面を表にして左からVDD,VOUT,GND
IN2がアナログ入力なので、VDDをIN1へ、VOUTをIN2、GNDをIN4へ差し込みます(IN3はI2Cで使うので飛ばします)
次のプログラムで、温度の値がとれることを確認しましょう。(手で持って温めたりすると変化します)

10 OUT8,1:OUT11,0 20 ?ANA(2):WAIT10:CONT RUN 307 309 308 307

アナログ入力は、0V-3.3Vの変化を0-1023の値で教えてくれます。
19.5mVは、6.045の差。6変わったら1度変わったことになるので、6以上変化したらsakura.ioで通知してみましょう。(sakura.io x IchigoJam 接続方法

Nに送信したい値をいれて、GSB@SENDN で送るプログラムを準備します。

100 @SENDN:POKE#800,#21,10,1,76,N,N>>8,0,0,0,0,0,0,N>>8^N^102:U=I2CR(79,#800,13,#820,3):RTN

*即時送信バージョン(4Gの正式版はこれだけでOK!)

100 @Q:POKE#800,#20,10,1,76,N,N>>8,0,0,0,0,0,0,N>>8^N^103:U=I2CR(79,#800,13,#820,3):RTN 110 @SENDQ:POKE#800,#24,0,#24:U=I2CR(79,#800,3,#820,3):RTN 120 @CHK:POKE#800,1,0,1:U=I2CR(79,#800,3,#820,4):C=PEEK(#822)&~U:RTN 130 @SENDN 140 GSB@CHK:IF C<>128 WAIT30:?".":CONT 150 GSB@Q:GSB@SENDQ:?"SENT! ";N:RTN

*LoRaのα版/4Gのβ版は送信キューにいれる必要があります(回線状況チェック付きバージョン)

通信モジュールが1回点滅になるのを待ってから、sakura.ioのコンソール、WebSocketのページを見ながら、テストしてみましょう

N=15:GSB@SENDN OK

うまくいったら、温度異常を検出するプログラムを加えてできあがり!

1 'TEMP-D WATCHER 10 OUT8,1:OUT11,0 20 N=ANA(2) 30 @L 40 WAIT10:M=ANA(2):?"ANA(2) ";M 50 IF ABS(N-M)>6 N=M:GSB@SENDN 60 GOTO @L

ABSはabsoluteの略で、絶対値を求める関数です。差が6以上あったら、基準の値Nを書き換えて、送信!


どんどん温度が下がっていく様子が分かりますね!
* 注意、冷蔵庫内の冷媒に引火して火災になるリスク、湿度が高いため結露による故障リスクなどがあるので、短時間の実験までに留めておきましょう!

来週10/7、広島県尾道にて、
IchigoJamとsakura.ioを使った、プログラミングの基本からIoTづくりまでのセミナー開催決定!
【IoT入門】~はんだづけ、プログラミング、sakura.ioを使ったIoTづくりまでを実体験〜

ジョンバーガーのランチ付き!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image