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

鯖江で実稼働している公共交通IoT クラウドEXPOにてスペシャルセッション at さくらインターネットブース / PubTra-IoT Special Session in Cloud Expo 2017

2017/05/09 23:55:00
#IoT #opendata #IchigoJam #english 

クラウドの展示会、クラウドコンピューティングEXPO【春】のさくらインターネットブース、スペシャルセッションにて「sakura.io と IchigoJam でつくるバス公共交通IoTとオープンデータ」をテーマにトークセッション!(5/10水14:30〜)
We'll have a show at the booth of Sakura Internet in Cloud Computing Expo Spring!

こどもでも作れる簡単、高速、低消費電力IoTプログラミング環境でもある「IchigoJam」と月額61円からの4G通信モジュール「sakura.io」を使った、鯖江市営バスのシステム。 Code for Japan コーポレートフォローシップで誕生した、本システムの背景とを鯖江市役所の情報統括官で Code for Sabae のメンバー、本システムの共同開発者でもある牧田氏を交えて紹介。 更なる低価格IoTを実現するLoRaとこども起業家輩出を目指す企業連携プロジェクト「KidsVenture」が創る未来を、代表の高橋氏を交えて公開ディスカッション!
- Easy IoT Programming Environment "IchigoJam" x Just ¥61/month IoT "sakura.io"
- About Code for Japan Corporate Fellowship and this system with Mr. Makita CIO of Sabae city.
- How to make the future with Mr. Takahashi Leader of KidsVentrue.


"オープンデータ鯖江市つつじバスモニター / Sabae Tsutsuji Bus Monitor with opendata"

ブースでは、IchigoJam x sakura.io で動くシステムの予備機と鯖江で4月から運用されているバスのリアルタイム乗客数オープンデータを紹介。
だれでも作れる IoT ぜひ会場までお越しください!
We'll show the acutual IoT device and the demo page on web at the booth.
IoT for everyone! Welcome to the booth of Sakura Internet!


(運転手さんに実際使ってもらった実証時の写真)


Bus Graph / つつじバス乗客数グラフ@ja
(based on つつじバスなう)

links
- Code for Sabae 4周年!(スペシャルセッション講演資料)
- 「第8回 クラウド コンピューティング EXPO【春】」(東京)の弊社ブースにて、セッションを行います | さくらインターネット
- 福井県鯖江市、jig.jp、さくらインターネットが共同開発した「バス乗客リアルタイムオープンデータシステム」を鯖江市の公共バスで運用開始
- 鯖江市バスのリアルタイムオープンデータを使ったグラフアプリ
- - クラウド コンピューティング EXPO | リードエグジビションジャパン
- バス乗降数IoT実験、Code for Japan x Yahoo!Japan コーポレートフェローシップ in 鯖江

ARMマシン語でつくる32bit大きな数計算ライブラリ / 32bit Integer Library on IchigoJam

2017/05/08 23:55:00
#IchigoJam #asm #english 

メモリが4KBしかないIchigoJam、節約のため変数はすべて16bit。低い限界を楽しめる設計です。 もちろんプログラミングでその限界は超えられます。今回はマシン語を使って超える方法の紹介。
How to exceed the 16bit limit of IchigoJam!

@CALC32 PUSH {LR,R4,R5,R6} R6=8 R6=R6<<8 R6=R1+R6 R5=#F<<2 R4=R0 R0=R4>>2 R0&=R5 R0=[R6+R0]L R1=R4&lt;<2 R1&=R5 R1=[R6+R1]L R2=R4&gt;>12 R2-0 ' plus IF !0 GOTO @SKIP1 R0=R0+R1 GOTO @END @SKIP1 R2-1 ' minus IF !0 GOTO @SKIP2 R0=R0-R1 GOTO @END @SKIP2 R2-2 ' multi IF !0 GOTO @SKIP3 R0*=R1 GOTO @END @SKIP3 R2-3 ' division IF !0 GOTO @SKIP4 PUSH {R4} GOSUB R3 POP {R4} GOTO @END @SKIP4 R2-4 ' division(remain) IF !0 GOTO @SKIP5 PUSH {R4} GOSUB R3 POP {R4} R0=R1 ' GOTO @END @SKIP5 @END R4=R4>>6 R4&=R5 [R6+R4]L=R0 POP {LR,R4,R5,R6}

"32bit calc library on asm15-rc1"

マシン語呼び出しのパラメーターで、計算種類、配列位置で、結果格納、計算する数2つを指定します。32bit = 4byte なので、配列は[0]と[1]など、2つずつ使います。コンパイルした結果がこちら。

10 POKE#700,112,181,8,38,54,2,142,25,60,37,4,70,160,8,40,64,48,88,161,0,41,64,113,88,34,11,0,42,1,209,64,24,19,224,1,42,1,209,64,26 20 POKE#728,15,224,2,42,1,209,72,67,11,224,3,42,3,209,16,180,152,71,16,188,5,224,4,42,3,209,16,180,152,71,16,188,8,70,164,9,44,64,48,81 30 POKE#750,112,189 RUN

例えば、1234*5678 (=7006652)を計算するには、このように使います。

[0]=1234:[2]=5678 U=USR(#700,#2201):'[4]=[0]*[1] [6]=10000 ?DEC$(USR(#700,#3523),4)DEC$(USR(#700,#4423),4) 7006652

結果の表示上、9999万9999まで表示します。マイナスの数はどうなるか、やってみましょう! links
- IchigoJam
- マシン語でつくるプログラマブル学習リモコン
- レゴテクニックシリーズをIchigoJamと赤外線LEDで制御する(マシン語) / Control Lego Technic by IchigoJam and IR LED
- はじめてのマシン語 - IchigoJamではじめるARMマシン語その1

DMM 4K対応、プログラマブル学習リモコン by IchigoJam / Programmable IR receiver and sender

2017/05/07 23:55:00
#IchigoJam #maker #asm #english 

DMM.make 4Kディスプレイの入力切り替えが面倒なので、IchigoJamで学習リモコンを作ってみました。
I made programmable IR sender by IchigoJam.


ハードウェア設定 (hardware setup)
IR LED - OUT1
IR Reciever - IN1 (赤外線受光モジュール)

10 POKE#700,112,181,114,182,8,34,18,2,138,24,0,40,54,208,80,35,27,3,1,51,27,3,1,36,228,4,202,38,0,33,0,240,40,248,1,49,33,66,30,209 20 POKE#728,29,104,0,45,247,209,36,9,0,32,0,33,0,240,29,248,1,49,33,66,19,209,29,104,0,45,247,208,17,82,2,48,176,66,12,208,0,33,0,240 30 POKE#750,16,248,73,28,33,66,6,209,29,104,0,45,247,209,17,82,2,48,176,66,229,209,0,33,17,82,2,48,64,8,98,182,112,189,100,37,210,53,1,61 40 POKE#778,253,209,112,71,80,35,27,2,1,51,27,4,4,51,1,36,0,38,17,90,0,41,234,208,28,96,0,240,21,248,30,96,0,240,18,248,1,57,247,209 50 POKE#7A0,2,48,17,90,0,41,222,208,0,0,0,0,0,240,8,248,0,0,0,0,0,240,4,248,1,57,245,209,2,48,228,231,154,37,1,61,253,209,112,71 200 IF BTN()=0 CONT 210 A=#BF00 220 B=#E11E:GSB300:N=USR(#700,0):WAIT60 230 B=#E21D:GSB300:N=USR(#700,0):WAIT30 240 B=#BE41:GSB300:N=USR(#700,0) 250 GOTO200 300 LET[0],346,169 310 FORI=0TO15:[2+I*2]=25:[3+I*2]=18+43*(1<<I&A!=0):NEXT 320 FORI=0TO15:[34+I*2]=25:[35+I*2]=18+43*(1<<I&B!=0):NEXT 330 LET[66],25,0:RTN

配列に送信用のデータを作成(300行)し、マシン語(10-50行)で38kHzの赤外線LED点滅信号として送信。ボタンが押されたら、あらかじめ調べたコードを順番に送信。これでワンボタンで入力切り替えができます!アンプ連動やセンサーで自動でONとかにも!
It makes IR data on the array (line 300) and send via IR LED blinking. I did it just 1 pressing when switch the input!

こちらがリモコンコード受信用のプログラムです。上のプログラムを一度実行したあと、一度 NEW でプログラムを消して、下記を入れることで、送信&受信テストができます。
This is the IR code receiver program. You can get the code after run the abobe program, NEW command and enter this program.

100 INPUT"1:SEND 2:RECV ?",N 110 IF N=1 N=USR(#700,0):GOTO 100 120 N=USR(#700,1) 130 FOR I=0 TO N-1 STEP 2:?[I];" ";[I+1];" ";:NEXT:? 140 N=0:FORI=0TO15:N=N|([3+I*2]>37)<<I:NEXT:?HEX$(N) 150 N=0:FORI=0TO15:N=N|([35+I*2]>37)<<I:NEXT:?HEX$(N) 160 GOTO 100

家のリモコンで動くもの全部、IchigoJam BASIC プログラミング可能に!
You can program your all devices have a IR receiver by IchigoJam BASIC!

links
- IchigoJam
- レゴテクニックシリーズをIchigoJamと赤外線LEDで制御する(マシン語) / Control Lego Technic by IchigoJam and IR LED
- はじめてのマシン語 - IchigoJamではじめるARMマシン語その1

レゴテクニックシリーズをIchigoJamと赤外線LEDで制御する(マシン語) / Control Lego Technic by IchigoJam and IR LED

2017/05/06 23:55:00
#IchigoJam #KidsIT #maker #english 

こども大好きロボット、高かったり難しかったりと敷居が高いものをいかに下げるか?
How to lower hurdles about robots?

レゴ テクニックシリーズは、ロボットづくりの肝のひとつ、メカトロニクス版を電子工作でいうブレッドボードのように試行錯誤が自由自在! シンプルなサッカーロボなら10分ほどでつくれてしまいます。 オープンソースハードウェアでもある組立図を見ながらこんな大型クレーンや、ショベルカーまで!
Lego Technic series likes breadboard! It's easy to make everything!

レゴテクニックのマイコン制御!今回このレゴとIchigoJamをつなぎました!以前からマイコンに接続してネコのおもちゃや、iPhoneコントロールラジコンカーバスなどを作っていた頃のコードを再利用!
I connected Lego and IchigoJam using past codes.


こんなIchigoJamのプログラムで動かせます。付属されているリモコンと違って前後7段階に出力調整可能!
You can control the Lego with this program with selectable power 7 levels.

1 P=4 10 A=-P:B=P:GSB100:WAIT30 20 A=-P:B=0:GSB100:WAIT30 30 A=0:B=P:GSB100:WAIT30 40 A=P:B=P:GSB100:WAIT30 50 A=0:B=0:GSB100 99 END


ミニマムなロボットにして実験しましたが、2モーターx4チャンネル、最大8モーターまで制御可能!
This demo robot is very simple. But you can control up to 8 motors! (2 motors x 4ch)


赤外線LEDをGNDとOUT1に挿すだけでOKですが、トランジスタで増幅して飛距離アップ!
It's OK just put in IR-LED GND and OUT1. But a transistor enlarge the power!

こちら上記のプログラムを動かすためのマシン語とサブルーチン
This program drives a IR-LED to control Lego.

100 N=1<<14|C<<12|B&15<<8|A&15<<4 110 R=15^(N>>12&15)^(N>>8&15)^(N>>4&15) 120 IF PEEK(#700)!=112 GOSUB2000 130 ?USR(#700,N|R):RTN 2000 POKE#700,112,181,114,182,80,35,27,2,1,51,27,4,4,51,1,37,0,38,1,36,228,3,0,240,28,248,78,34,0,240,19,248,0,240,23,248,20,34,0,240 2010 POKE#728,14,248,32,66,2,208,22,34,0,240,9,248,100,8,243,209,0,240,11,248,78,34,0,240,2,248,98,182,112,189,0,181,0,240,14,248,1,58,251,209 2020 POKE#750,0,189,0,181,6,34,29,96,0,240,6,248,30,96,0,240,3,248,1,58,247,209,0,189,155,33,1,57,253,209,112,71 2030 RTN

IchigoJamで使うマシン語の勉強したくなったらこちらもどうぞ!
See also if you want to learn the machine language on IchigoJam.

"asm15 - Assembler for IchigoJam"
BoxHeadRoomさん作のIchigoJam用アセンブラを調整して、赤外線制御プログラムのアセンブルに対応しました。
I modified to assemble the code by BoxHeadRoom.

links
- PawerFunctionsの赤外線解析⑤・・・ - LEGOの機関車○●○ - Yahoo!ブログ
- IchigoJam 用アセンブラ - BoxHeadRoom 別館

グミのお菓子とレジンでイカLEDづくり / Squid LED by Gummy Tray

2017/05/05 23:55:00
#KidsIT #maker #english 

こどもの日はHana道場でもくもく会。たくさんの子供達がプログラミングの体験にも来てくれました。
This Kid's day as the Moku-Moku making party in Hana-Dojo. Many kids came there!


グミのお菓子でイカLEDづくりもしてみました。(二年前のマイLEDづくり
I made also squid LED by the gummy tray.


光るスーパーキノコ! The super mushroom lightied up!


小さいものなら数分で固まる、UVレジン硬化用のUVライトをHana道場に導入! (参考、UVライト 1,980円
You can use UV light at Hana-dojo!


年長さんから小6の子まで、IchigoJamではじめてのプログラミングにチャレンジ!
From 5-11 age kids tried first programming on IchigoJam!


やっぱりゲームは盛り上がります! All kids love games!


ロボットがつくりたいという年長さんに、サーボ制御を伝授!
I taught how to control a servo to a child wanted to make robots.

links
- つくるおやつ|バンダイ キャンディ公式サイト (Splatoon / Super Mario Maker / Pokemon etc...)

椅子IoT リアルタイム座席オープンデータ向け新システム / Chair IoT for Real Time Seat Open Data

2017/05/04 23:55:00
#IchigoJam #maker #IoT #english 

椅子をネットにつないでみました。
I connected the chair to web.

今回は1コあたり400円のWiFiモジュール ESP-WROOM-02 を書き換えなしで使います。 光センサーの代わりに、お菓子IoTで使った圧力センサーを WiFi Shield を使ってIchigoJamに接続。
IchigoJam with $4 WiFi module "ESP8266" and pressure sensor via WiFi Shield.

抵抗を変えると感度が変えられます。
You can modify registors.


ディスプレイでチェックしながら、100Ωをセレクト
I selected 100Ω resistor after checking on the monitor

10 VIDEO3 20 ?ANA(2):WAIT30:CONT

WiFiのアクセスポイントの設定をしておきます。
Set ID/password to the WiFi access point

OK0 UART3,0:OUT5,1:OUT6,1:WAIT300:UART3,2 ?"AT+CWJAP=";CHR$(34);"**SSID**";CHR$(34);",";CHR$(34);"**password**";CHR$(34)


牛乳を乗っけてチェック!3秒置きにスリープから復帰し、値が100変化していたらWiFiを通じてwebサーバーへデータを送ります。
Check with milks! Send a data to web if change the number via WiFi.

100 VIDEO0:B=0 110 N=ANA(2):?N 120 IF ABS(N-B)>100 LED1:WAIT10:LED0:GOSUB@SENDN:B=N 130 WAIT 3*60,0 140 GOTO110 200 @SENDN 210 UART0,0:OUT5,1:OUT6,0:OUT6,1:WAIT300:UART3,0 220 ?"AT+CIPSTART=";CHR$(34);"TCP";CHR$(34);",";CHR$(34);"sabae.club";CHR$(34);",80":WAIT3*60 230 M=1+(N>9)+(N>99)+(N>999)+(N>9999) 240 ?"AT+CIPSEND=";82+M:WAIT30 250 ?"GET /siot/4/?key=********&v="N;" HTTP/1.0" 260 ?"Host: sabae.club 270 ?"User-Agent: IchigoJam 280 ? 290 WAIT180:OUT5,0 300 RTN

*for IchigoJam 1.2b47 / ******** is secret key to write


乾電池で動く省エネ仕様なので、貼り付け設置、簡単!
Easy to deploy because it works by cheap batteries!

合計原価で1500円くらい、通信料なし!でも、WiFi設定が手間。
Total cost about ¥1,500 without monthly fees. But It takes time and effort to set up the WiFi.

お菓子IoT 重量センサーと32x16ドットマトリクスで食べ過ぎ防止 / Diet IoT with pressure sensor and 32x16 matrix LED by IchigoJam x sakura.io

2017/05/03 23:55:00
#IchigoJam #maker #IoT #english 

食べ過ぎて困る!?圧力センサーで測った重さを大きく表示しつつ、重量の変化をサーバーに送る「お菓子IoT」をつくってみました。
Use pressure sensor to diet!


お菓子の量を重さで監視して、変化があったら sakura.io で送信!
Send the number if the weight change.


肝はこの圧力センサーFSR402(500円@秋月電子)
Pressure sensor!


圧力センサーの片方に1kΩの抵抗を介してVCCとアナログ入力へのワイヤー、もう片方をGNDに接続。
Pressure sensor (terminal A, B)
A: --+-- 1kΩ -- VCC
      +-- BTN(ANA)
B: -- GND


32x16ドットマトリクス(500円@共立デジット)はダイナミック点灯が必要。BASICでは速度がでないのでマシン語化!
Machine language is so fast!

32x16 dot matrix LED
VCC - VCC(IchigoJam)
SIN_1 - OUT1
SIN_2 - OUT2
SIN_3 - OUT3
CLOCK - OUT4
LATCH - OUT5
/ENABLE - OUT6
VLED - 5V
GND - GND

こちらお菓子IoTのプログラム (source of Diet IoT) *for IchigoJam 1.2b46

1 '32x16 MATLED driver 100 POKE#700,240,181,10,38,5,0,31,0,0,36,137,176,0,146,118,66,40,0,10,33,184,71,51,0,67,67,93,25,237,0,0,155,129,53,255,53,93,25,4,171,229,80,4,52,5,0,16,44 110 POKE#730,238,209,100,32,5,155,0,147,4,155,1,147,7,155,2,147,6,155,3,147,4,34,82,66,1,33,19,29,153,64,0,37,140,70,128,35,97,70,35,76,27,2,25,64,35,0,0,41 120 POKE#760,0,209,11,0,32,73,33,79,11,128,7,42,52,216,0,155,128,33,155,92,9,2,27,2,30,0,1,155,41,65,155,92,30,67,51,0,11,64,0,208,22,75,59,128,2,155,3,159 130 POKE#790,155,92,191,92,27,2,59,67,11,64,0,208,17,75,20,73,11,128,0,33,19,75,1,53,25,128,28,128,99,70,91,0,156,70,16,45,205,209,0,37,15,73,16,75,1,50,28,128 140 POKE#7C0,12,128,13,128,0,33,25,128,12,42,189,209,1,56,0,40,184,209,28,128,9,176,240,189,0,35,0,33,59,128,4,75,25,128,222,231,255,15,0,0,4,0,1,80,8,0,1,80 150 POKE#7F0,16,0,1,80,32,0,1,80,0,8,1,80,0,4,1,80 RUN:SAVE0 NEW:'Main program 200 N=0:C=100 210 A=1023-ANA() 220 U=USR(#700,A) 230 C=C-1:IF C=0 C=100:IF ABS(N-A)>2 N=A:GSB@SEND:?"SEND";N 240 GOTO210 300 @SEND:POKE#800,32,10,1,76,N,N>>8,0,0,0,0,0,0,103^(N&#FF)^(N>>8),36,0,36:R=I2CR(79,#800,13,#820,3):R=I2CR(79,#80D,3,#820,3):RTN SAVE1 LRUN0

links
- 【共立エレショップ】>> 32×16ドットマトリクスLEDモジュール■限定特価品■
- IchigoJamで32x16ドットマトリクスLEDを制御する - ※個人の感想です (マシン語編)
- さくらインターネットが提供するIoTプラットフォームサービス、sakura.io

大きなLEDをIchigoJamで制御する / Big 7 Seg LED controlled by IchigoJam

2017/05/02 23:55:00
#IchigoJam #maker #KidsIT #english 

まちなかに見る大きな電光掲示板、つくってみたくない?
Do not you want to make a big LED sign at the town?

信号機づくりの次のステップ、大型LEDの制御をしよう!
Let's control a big LED as next step after making a traffic signal.

気をつけて!電圧が高くなると危険度も増すよ!
Be careful! Higher voltage has higher risk of you.

超大型赤色7セグメントLED表示器のデータシートを見ると、光らせるには7.2V(ドット部分だけは3.6V)が必要みたいです(VF)。 12VのACアダプターと抵抗をつないで、光らせてテストしてみましょう。抵抗なしや、抵抗が小さすぎると電流が流れすぎてLEDを壊してしまうので注意!データシートのIFに20mAとあるので (12V-7.2V)/0.02A=240Ω と計算したあたりの抵抗を使います(ドット部分DPは、(12V-3.6V)/0.02A=420Ω)。
You need 7.2V VF to light big 7 seg LED according to the data sheet. Use about 240Ω and 420Ω with a 12V AC adapter.

大きなLEDを制御するにはトランジスタを使います。トランジスタアレイ(TD62004APG)を使うと便利!
Use a transistor to control a LED. Transistor array(TD62004APG) is useful to control many LEDs!

IchigoJamのOUT1〜6とLEDを、7セグLEDのA〜Gへとつなぎます。
Connect OUT1-6 and LED to A-G of 7 seg LED.

OUT1 OK OUT2 OK

ついた? Is it OK?

10 LET[0],#3F,6,#5B,#4F,#66,#6D,#7D,#27,#7F,#6F RUN OK OUT[5] OK

5とついた? Did you get a '5'?

20 OUT RND(64) 30 IF BTN() OUT[RND(10)]:WAIT60 40 WAIT 2 50 GOTO 20

0-9までのサイコロプログラム 10 dice program

20 C=0 30 OUT[C] 40 WAIT 20 50 C=C+1 60 IF C=10 C=0 70 GOTO 30

自動カウンター auto counter


鯖江商工会議所オープンデータ活用、ブログ紹介アプリ / Open Data App of The Sabae Chamber of Commerce and Industry

2017/05/01 23:55:00
#sabae #opendata #english 

単独では日本初!商工会議所によるオープンデータ、鯖江商工会議所からスタート!
The Sabae Chamber of Commerce and Industry (JCCI member) started Open Data, !

鯖江の産業に関する3つのブログとRSSがオープンデータを使って、オープンデータアプリ「AKIJIKAN」をベースに、アプリ「さばえ商工ブログ」を公開。
I created an app based on AKIJIKAN using HTML and RSS of 3 blogs as Open Data.

"さばえ商工ブログ" - http://sabae.cc/i/

links
- 鯖江商工会議所オープンデータをはじめました | 鯖江商工会議所
- 「オープンデータ」での検索結果 - 日本商工会議所
- 日本商工会議所

Signal Gacha controlled by IchigoJam / 信号ガチャ改造法

2017/04/30 23:55:00
#maker #KidsIT #english 

Let's show the real world to kids! (こどもに社会を魅せよう!)
PCN showed programmer's work with IchigoJam at the event "Hatara Kids (はたらキッズ@ja)" in Fukui Lpa (エルパ@ja).

For instance do you know how the traffic signal works? (例えば信号機の仕事)
I found the signal toy Gacha (信号ガチャ) in Village Vanguard at Fukui Lpa.

There are steps to modify it to controll by IchigoJam BASIC.


Disassemble by the cutter and the minus driver (カッターとマイナスドライバーでバラす)


Remove contents (中身を取り除く)


3 3mm LEDs green, yellow and red (3つの3mm LED緑黄赤を準備)


Drill holes to put LEDs (LEDを差し込むための穴を空ける)


Glue LEDs (LEDをホットボンドで固める)


Wire 3 long legs and GND all short soldered legs (長い足と、はんだづけしてつなげた短い足GNDの4本配線する)


Program!

10 OUT1:WAIT30 20 OUT2:WAIT10 30 OUT4:WAIT50 40 GOTO10

It's not difficult to modify and program. Let's try!
改造もプログラムもそんな難しくないので、レッツトライ!

links
- Make your own Signal by IchigoJam with CutleryCard - easy way with cards!
- IchigoJam print "Pedestrian Signal" as first step of electronics
- タカラトミーアーツさんのガチャ信号 + IchigoJam - ナチュラルスタイルの工作
- the Signla Gacha where can I get? - 3 spots in Fukui! (福井にも3箇所!)

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