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

IchigoJam workshop at Tumba Collage of Technology (トゥンバ高専)

2017/10/19 23:55:00
#IchigoJam #js #africa #movie 

We went to Tumba Collage of Technology (トゥンバ高専@ja) from Rwand Kigali!
ルワンダ、トゥンバ高専でIchigoJamワークショップ!ルワンダに、たくさんの仲間ができました!

We were glad to meet you with good faces!


The movie of way to Tumba KOSEN and Tea Factory.
About 1.5 hours from Kigali city.


3 members of PCN graduated from Fukui National Collage of Technology (FUKUI KOSEN / 福井高専@ja).
Here is Tumba Collage of Technology (Tumba KOSEN / トゥンバ高専@ja).
We're same school colleague! 高専仲間!


What a great place! Good nature and winds!


Raymond-san was orgnized this event! Thank you for this very excited chance!


Hara introduced today!


Let's build! (today's slide material using IchigoJam)


They have already mastered the soldering iron!


I introduce the first step of programming and how to make a game.
Thank you for enjoying!


Matta introduced tempeX, IchigoJam extension module!


They said they want to share and teach how to programming to kids!


Let's enjoy programming! Let's enjoy create something!


I made a new material, IchigoJam print "CHAT" (pdf)
Let's connect two IchigoJam!


It's a just beginning! Let's collaborate Rwanda and Japan!


I ate the Hiyashi Chuka (冷やし中華@ja) last night at Kigali.


Thank you ASIAN KITCHEN for the first and the last night also!
JavaScriptとIchigoJam BASICで実装する、uuencode!エチオピア・ブルンジ経由、ルワンダ入り」 DAY 0

Programming for Rwandan kids! Open Teaching Materials

2017/10/18 23:55:00
#IchigoJam #js #africa #opendata 

IchigoJam workshop in FABLAB Rwanda at Kigari!

Thank you kids! It was very excited! You're IchigoJam evangelist.

This slide is Open Programming Learning (Teaching) Materials with IchigoJam.

Check the IchigoJam prints(日本語版) also!
We support on the Facebook group IchigoJam-FAN@en (日本語版).


Same on the earth!


We presented IchigoJam 4 sets to FABLAB Rwanda!


Thank you FABLAB and kLAB!

Improve innovations with kids programming at Rwanda!

2017/10/17 23:55:00
#IchigoJam #js #africa 

Africa IT Tour, Rwanda Day 3!

Kigali Convention Centre with colorful illuminations


babyl improving helthcares in Rwanda from UK.
SMS is still important because smart phone users in Rwanda are under 10%.
He can read my T-shirt BASIC program!


Rwandan mobile phone infrastructure company TRES is focusing softwares and youth!


Not sweet Banana, like a potato!


With Chief Strategist ICT Sector Development at RDB (Rwanda Development Board!
He said "world-class professional talent for innovation" in Rwanda!
Let's expand a range and connect Rwandan and Japanese kids!


With Rwanda Speciality Coffee producer BUFCOFFEE
Solve the problems about agriculture with IoT and kids!


In front of WiredIn, software development service company related Japan!
WiredIn's co-founder Mr. Tanaka is born at Sabae-city, my home town!


Rwanda-Japan Night!


with Good Curry!


BananaCrepe with colored LEDs!


I showed up my room at hotel with colored LEDs!

How to show up with colored LED.
1. get the WS2812B LED tape.

2. solder just 3wires to colored LED.
3. program it on IchigoJam!

1 'WS2812B looping driver 10 POKE#700,66,70,75,70,252,180,64,24,80,33,9,2,1,49,9,4,4,120,160,70,69,120,172,70,1,48,129,70,114,182,128,37,1,48,3,120,255,34,74,96 20 POKE#728,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,60,234,209,68,70,72,70,98,70,1,58 30 POKE#750,148,70,228,209,98,182,252,188,144,70,153,70,112,71 100 L=48:POKE#800,L*3,300/L:I=0:V=7:S=60 120 FORJ=0TOL 130 H=I+J*360/L:GSB@HSV2RGB:POKE#802+J*3,G,R,B 140 NEXT 150 U=USR(#700,#800) 160 COPY#802+L*3-3,#802,3:COPY#802,#805,L*3-3 165 WAIT3 170 GOTO 150 500 @HSV2RGB 'use CDEF 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

source code of WS2812B looping driver in ARM Cortex-M0 Assembly language.

'POKE[ad],[data len],[loop count],[GRB data ...] @WS2812BLOOP R2=R8 R3=R9 PUSH {R2,R3,R4,R5,R6,R7} R0=R0+R1 R1=#50 'R1=#50010000 GPIO1 R1=R1<<8 R1+=1 R1=R1<<16 R4=[R0] R8=R4 R5=[R0+1] R12=R5 R0+=1 R9=R0 CPSID @LOOP_DATA R5=#80 R0+=1 R3=[R0] @LOOP_BIT R2=#FF [R1+`0001]L=R2 R7=3 R6=10 R3&R5 IF 0 GOTO @SKIP R7=10 R6=3 @SKIP R7-=1 IF !0 GOTO -1 R2=0 [R1+`0001]L=R2 R6-=1 IF !0 GOTO -1 R5=R5>>1 IF !0 GOTO @LOOP_BIT R4-=1 IF !0 GOTO @LOOP_DATA R4=R8 R0=R9 R2=R12 R2-=1 R12=R2 IF !0 GOTO @LOOP_DATA CPSIE POP {R2,R3,R4,R5,R6,R7} R8=R2 R9=R3 RET

Have a fun with the computer and programming!

オープンデータで見るルワンダ / Look Rwanda through Open Data

2017/10/16 23:55:00
#opendata #js #africa 

ルワンダの人口ピラミッドアプリをルワンダオープンデータを元に作成。
I made a Rwanda Web App using Rwanda Open Data in JavaScript.

ルワンダの年齢別人口 - Rwanda Open Data App
35歳から49歳のゾーンがへこんでいるのが、23年前のジェノサイドの影響。
子供の数が急激に増えつつも、近年は伸びが鈍化し安定または減少に入るか?


ルワンダ人口予想
現在1100万人、2030年には現在の約1.5倍、1500万人〜1600万人予想と予想されている。
減少傾向にある日本とは全く異なる。


ルワンダのオープンデータ「RWANDA Data Portal」から、必要なデータを選び、


Exportすると、JSONでデータを使用できる3つ星オープンデータ

アフリカITツアー、二日目 / Africa IT Tour day 2

lunch meeting with DMM.HeHe
DMMが「最強IT集団」をルワンダで育てる意味 | インターネット | 東洋経済オンライン | 経済ニュースの新基準


アフリカでAmazon的に各地展開が進むJUMIAグループで、食事デリバリーを行う JUMIA FOOD RWANDA
The food delivery service for Rwanda!


福井からのお土産、五月ヶ瀬をお届け! Satsukigase as OMIYAGE!


コワーキングスペース、ハードウェアな FabLab Rwanda と、ソフトウェアな kLab がお隣同士!
It's good locations, FabLab for hardwares and kLab for softwares are connected.


IchigoJamに興味津々、水曜日はこちらでIoTワークショップ開催です。
They were interested in IchigoJam as tool to learn programming for kids. On Wed we'll hold the event on KLAB!

JavaScriptとIchigoJam BASICで実装する、uuencode!エチオピア・ブルンジ経由、ルワンダ入り

2017/10/15 23:55:00
#IchigoJam #js #africa 

アフリカITツアー、初日。

エチオピア到着


エチオピアのローカルフード、インジェラ(ラム肉セットバージョン)
チョコ風味なクレープのようで、予想を反する酸っぱさがおもしろい!ラムを巻いて食べる
辛味のソースをもらって付けるとグッド!


エチオピア発ルワンダ行きの飛行機は、ブルンジにも経由。間違って降りてしまわないよう注意!


ルワンダ、キガリに到着!


ルワンダ史上、最も福井率が高い夜!?


21世紀の必須インフラインターネット、ルワンダでは路上に携帯電話会社の代理店の人がいて、SIMが買えたりチャージできたりする。


普通のバナナチョコクレープと思いきや、中のバナナが酸っぱく、インジェラを思い出す


IchigoJamでマイコン開発プロジェクトに必須なuuencodeをIchigoJam BASICで実装。
C系統とは違った演算子のシンプルな優先順位は、カッコが少なくコードが短い!


uuencode on Web (JavaScript)
JavaScriptによるuuencodeの実装と比較してみましょう。

JavaScriptでuuencode(抜粋)

var x = s2.charCodeAt(i); var y = s2.charCodeAt(i + 1); var z = s2.charCodeAt(i + 2); res.push(uuenc(x >> 2)); res.push(uuenc(((x & 3) << 4) + (y >> 4))); res.push(uuenc(((y & 15) << 2) + (z >> 6))); res.push(uuenc(s2.charCodeAt(i + 2) & 0x3f)); var uuenc = function(c) { return c == 0 ? "`" : String.fromCharCode(0x20 + c); };

IchigoJam BASICでuuencode(抜粋)

30 X=PEEK(S+P):Y=PEEK(S+P+1):Z=PEEK(S+P+2) 40 C=X>>2:GSB100 50 C=X&3<<4+Y>>4:GSB100 60 C=Y&15<<2+Z>>6:GSB100 70 C=Z&#3F:GSB100 100 IFC=0?"`";:RTN:ELSE?CHR$(#20+C);:RTN

考え方(=アルゴリズム)を、どうプログラミング言語化するかの違いはありますが、基本は一緒。
気持ちなど、伝えたいことをどう言語化するか、人間の言葉と一緒ですね。

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に書き込んで使うこともできそうです!

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

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だけで行うマイコン開発に挑戦です!

衆院選アプリづくりの注意点!人気投票の公表の禁止(公職選挙法)と政党オープンデータとプログラミング

2017/10/13 23:55:00
#opendata #senkyo #codefor 

来週10/22(日)と迫った第48回目となる衆院選。
Code for JapanのCode for 選挙プロジェクトが進むなど、オープンデータ、オープンソースな活動にも注目です!

衆院選を考えるに当たっていろんなサービスを作りたくなりますが気をつけたいのは「公職選挙法」、特に第138条の3「人気投票の公表の禁止」。

(人気投票の公表の禁止)
第百三十八条の三
 何人も、選挙に関し、公職に就くべき者(衆議院比例代表選出議員の選挙にあつては政党その他の政治団体に係る公職に就くべき者又はその数、参議院比例代表選出議員の選挙にあつては政党その他の政治団体に係る公職に就くべき者又はその数若しくは公職に就くべき順位)を予想する人気投票の経過又は結果を公表してはならない。

「何人も」とあるので、候補者・候補者陣営含め、誰であっても禁止です。句読点がなくて何を意味するのか不明瞭ですが、候補書のみだけではなく、政党の予測も含めて禁止とも読めます。

考えていたサービス
- 政党に成り代わって議論しながら、その勢力数がリアルタイムに変わるサービス
(各選挙区では政党の代わりに、候補者に成り代わって議論することでローカルな議論にも対応!)

この勢力図の変化が見られ、どう投票するか考えを深められるので良さそうかと思いましたが、「人気投票の公表」に該当しそうなため企画倒れ。 新聞社による「衆院選情勢調査」と同様、何か公表する手があるのかもしれません。

衆院選48の情報は、Wikipediaによくまとまっています。
こちらを元に前回の衆院選アプリを元に、アプリとオープンデータを第48回対応しました。政党数、多いです!


第48回 衆院選 政党一覧アプリ政党一覧オープンデータCSV/HTML」(前回、第47回

オープンデータに関する解説もしてくれた、TOKYO MX「VRフレンズ2」でのパックンとの対談コーナー

プログラミングできれば、誰でも自由に使えるオープンデータは楽しい素材になりますよ!
来週、再来週の金曜日夜20時にも登場します!

Let's write a code for the election of Japan!

links
- 記名率38% オープンデータで見る参院選 福井県での比例候補者得票数ランキングと当選結果
- 鯖江の自民比率57.4%、地方間で大きく異なる参院選結果
- 国を担う48名、164名の参議院比例代表候補者一覧オープンデータ&アプリ「SDH48」
- 政党「支持政党なし」? 第47回 衆院選 政党割合表示アプリ

jig.jp 内定者合宿@三国とポケベル入力復活への道

2017/10/12 23:55:00
#jig #IchigoJam 

東尋坊で有名、福井県坂井市、三国にて内定合宿。

今回の場所は、ペンション「ハウスアムメーア」東尋坊、雄島の近く。


鳥取の砂丘近くに SUNABA COFFEE、東尋坊の岩場近くには IWABA CAFE


どう使おうかワクワクする、IWABA CAFE シール!


IWABA CAFEから望む、東尋坊と雄島。(神の席、行き忘れ!)


地物のお魚、ペンションで食事!


サポートも一段落した深夜、おもむろに、はんだづけスタート


4x4のマトリクス状になったスイッチ16コをOUTとINを使って識別プログラムができました!
テンキーによるポケベル入力付きの送受信可能なIoTポケベル実現へ一歩近づきました。

1 '4x4 BTN MATRIX 10 FORI=0TO3:[I]=0:NEXT 11 FORI=0TO3:OUT1<<I 15 [0]=[0]+IN(1)<<I 16 [1]=[1]+IN(2)<<I 17 [2]=[2]+IN(9)<<I 18 [3]=[3]+IN(4)<<I 19 NEXT 20 K=-1:M=-1:FORI=0TO3:N=[I]:IF N!=15 M=I 21 NEXT 30 IF M<0 GOTO40 31 FORI=0TO3:IF[M]&(1<<I) K=M*4+3-I 32 NEXT 40 ?K:WAIT10:CLS:GOTO10

マトリクススイッチの8ピン、4ピンをIchigoJamのOUT1〜4に、残りの4ピンをIN1,2,9,4に接続。 IN3はEEPROM用にとっておき、IN2はブレッドボードでプルアップ抵抗(VCCから10kΩ程度をIN2へつなぐ電圧安定用の抵抗、IN1とIN4はCPU内部でプルアップされているので不要)を接続。
キーを押すと、0〜15の数値が表示されます。


WiFiはもちろん、地下ではライブ練習、浴室サウナもあって快適合宿環境です。


ハウスアムメーア、福井、日本海岸すぐそばの豊かな自然の中にあります。
ランチもあり!

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センチ、畑も自動で耕せる? 「みちびき」が成功:朝日新聞デジタル

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