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

IoT for everyone! 大人IoTプログラミング体験 at Salesforce.com Tokyo Marunouchi

2018/04/12
#IchigoJam #IoT #KidsIT 

東京丸の内、世界一のCRMソフトウェア企業、セールスフォース・ドットコムにて、IoTプログラミング体験会。

こどもIoTハッカソンの流れに沿って、IchigoJamを使ったはじめてのプログラミング&電子工作&ネットワークづくり、そして、sakura.ioを使ったはじめてのIoTとアイデアソンまで!


IoTの前に「T」できた!(セールスフォース・ドットコムのみなさま!)


翔泳社デブサミでお会いした、セールスフォース・ドットコムの阿部さんも共同著書のIchigoJam紹介本つながりも!
子どもに読んで伝えたい!おうちではじめるプログラミングの授業 (SHOEISHA DIGITAL FIRST) | 阿部 崇, 平 初 |本 | 通販 | Amazon
子ども向けパソコン「IchigoJam」どこで買う?~はじめてのプログラミングキット購入とセットアップ (1/2):EdTechZine(エドテックジン)」 by レッドハット 平 初さん


まずはコンピューターの基本要素、インプット、アウトプット、電源の3点つなぐセットアップから


ディスプレイ、キーボードを外して、ボタンを押しながらスイッチON、モノがプログラミングできました
映画マトリックス、最終シーンの主人公ネオように、社会に潜むコンピューター達の息遣いが聞こえますか?


かわくだりゲームで学ぶアプリケーションの基礎、子供も大人もワーっとなる、魔法のコマンド、GOTO20
100円だって5000万回、コンピューターの繰り返し速度だって超高速(動画


今回の新アイテム、1つ40円の温度センサー(MCP9700-E/TO


平らで字が書いてある方を上に、足が右をむくようにおき、IchigoJamのCN4のGND/OUT1/OUT2に差し込みます
OUT1を入力(IN5)へ切り替え、アナログ信号入力コマンドANA(5)で温度に連動する数が取得できます
指で温めるとじわじわ上がる温度、飲み物で冷やすとどんどん下がる


値段の違いは、精度の違い。
原価の把握と必要最小現のスペックを見極めるがIoTビジネス成功の秘訣!


デバイスに刺さっているSIMカードが見えますか?
いよいよIoT、鯖江市営バスでも活躍、月額65円で1万回(日付除いて、最大1.2MB送受信)通信できる4Gデバイス sakura.io をつなぎます。

即興でもつくれちゃう、IoTピアノ

10 GSB810:IF F BEEP N,30 15 WAIT10:GOTO10

スマホから数を送るとその数に応じて圧電サウンダー(30円)から音が奏でられます
12名でのIoT合奏団のできあがり!


復習用「こどもIoTハッカソン大人体験会」の資料(アイデアまとめなど少し加筆版)


もっとやりたい!ぜひオンラインショップもある「PCN(プログラミング クラブ ネットワーク)」へどうぞ!

丸の内だと、PCN直営、秋葉原のフラッグシップ店、ASSEMBLAGEも近いです
東京駅から3分、JR秋葉原駅の電気街口から徒歩1分!


楽しい時間、ありがとうございました!
IoT programming for everyone!


お花きれいなセールスフォース・ドットコム社内、アストロ&クラウディ、かわいい

links
- Salesforce - セールスフォース・ドットコム
- 寄せられた感想
- こどもIoTハッカソン
- Hana道場
- こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円)

7bit x 8 = 7byte、IchigoJam用バイナリデータ圧縮法 Base128実装例

2018/04/11
#IchigoJam 

IchigoJamでつくるオリジナルキャラクター、たくさん作るとプログラムが溢れてしまいます。
じぶんだけのキャラをつくる / はじめてのプログラミングその19

そんなときに便利な圧縮技術。168byte、21コのキャラクターがわずかこの2行!

* 圧縮にカタカナを使ったので打ち込みはちょっと大変(-はハイフン、カタカナの長音記号は使いません)

メモリに書き込んであるデータを、効率よくプログラム形式に変換するプログラムのつくりかた。

IchigoJamのキャラクターを眺めると、アルファベットなどとカタカナだけで128文字分はありそうです。

128コのキャラクターは7bit分データを表せます。
8bit(=1byte)を表現するのに足りない1bit分を7つ集めて1つの文字とすればちょうどいい。
0-82の83文字を「,(44)」から「~(126)」、83-127を「ア(177)」から「ン(221)」にそれぞれ対応させることにしました。
デコードする時のプログラムサイズが短くなるように、いろいろと試行錯誤し、短く仕上げたものがこちら。

A=#700:N=#7A7-A+1:?"1 '";:FORJ=1TON/7+(N%7>0):[0]=0:FORI=1TO7:C=PEEK(A):A=A+1:[0]=[0]|C&128>>I:[I]=C&127:NEXT:FORI=0TO7:?CHR$([I]+44+50*([I]>82));:NEXT:NEXT:?

#700からの168byteをプログラム形式に変換するエンコーダープログラム(長さはNで調整)

逆に、メモリに書き戻すデコーダープログラムはこちら

A=#700:S=#C04:FORJ=0TO23:FORI=0TO7:C=PEEK(S):S=S+1:[I]=C-44-50*(C>176)+[0]<<I&128:NEXT:FORI=1TO7:POKEA,[I]:A=A+1:NEXT:NEXT

大きめで168byteまでのマシン語のエンコードにも使えます!

バイナリをテキスト化する方式では、たぶん最も有名なのは64種類の英数字を使ったBase64
今回作ったものはBase64にカタカナを加えて128種類に拡張したBase128的なものと言えますね。

他にも、IchigoJam用に考案されたBase16B15なども!
自分なりに使い勝手良いエンコード方式、考えてみるのも楽しいですよ。

links
- IchigoJamのメモリ内のバイナリデータをテキスト・プログラム化するツール ( パソコン ) - ボクにもわかる電子工作 - Yahoo!ブログ
- BASE16 : (株)田木屋商店 開発室

PWAでエッジ化するウェブ、JSこどもプログラミング「progrun」iOS11.3でオフライン対応!

2018/04/10
#web #js #progrun #opendata 

IchigoJam開発きっかけのひとつ、タブレット用こどもプログラミング環境、progrun

石川高専のインターンOB生と一緒に開発し、2012年の一日一創にてリニューアル。 親子体験会、2013年おもしろフェスタで子供100人体験、鯖江のシニア向け講座、鯖江市役所JK課向け、デザイナー向けにも活躍!福井県、鯖江市の写真オープンデータを使えるようにして、オープンデータ推進にも一躍担ってもらいました。
親子プログラミング教室子供100人体験シニアプログラミング教室JKxプログラミング

ネットワーク不要で使えて便利だった Application Cache API(廃止)が、PWA(Progressive Web Apps)となって還ってきました!(iPhone/iPadがiOS11.3から部分対応)

久しぶりに、progrunのメンテナンス(ServiceWorkerでのキャッシュと、manifest.jsonでアプリ設定対応)。ホームに追加して起動すると、以後、オフライン環境でも遊べます。(ネットワークへのアップロード、ダウンロードはまだできません。ローカル保存機能とかあるといいかも)

スマホ、タブレット、PC対応こどもプログラミング環境「progrun」PWA版 - src on GitHub

当時使っていた説明資料、アップしておきます。手軽なJavaScriptプログラミングはじめとして遊んでみてください。

progrunを作って試して分かったこと
- 文字を書くだけで、絵が出るテキストコーディング体験は新鮮で楽しい!
- 簡単に何度も作り直せるコンピューターものづくりの本質に触れてもらえた
- 小学生にとってアルファベットの小文字は馴染みが薄い(→ IchigoJam BASIC は大文字基本)
- プログラミングにハマル子は一定割合いる!
- 簡易環境では次のステップを示しづらい(複雑にすると入り口のハードルが上がる)
- タブレットを買ってあげちゃうと余計なことに使いそうで嫌という親の声(→ ネット不要のIchigoJam)

子供が何か創りたいと言ったらチャンス!(そもそも、子供はデフォルト、クリエイター)

links
- KidsIT - 子供とプログラミングが遠いという危機感
- なぜ今デザイナーにプログラミングなのか? P4D in FUKUI 開催レポート
- かんたんプログラミング環境「progrun」を使った福井県児童科学館での教室開催中(動画付き)
- 一見分かりやすいビジュアル言語 vs 想像かき立てるテキスト言語

Googleマップハンズオンの続き、地図内に鯖江市水位メーターの位置アイコンを全部置く方法

2018/04/09
#opendata #js 

鯖江市に試験設置中のIoT河川水位メーターに地図を加えてみます。
Googleマップハンズオンで、地図表示を習得したら、APIリファレンス「Google Maps JavaScript API」を見ながらガシガシ改造しちゃいましょう。

1つサンプルとして、よく使うアイコンを全部地図上に表示する方法を紹介します。

「鯖江市 水位メーター」(試験版)

使うAPIは、緯度経度の範囲を表す google.maps.LatLngBounds と、その範囲が入るように表示する map.fitBounds です。

var bounds = new google.maps.LatLngBounds(); for (var i = 1; i < sensors.length; i++) { var s = sensors[i]; var ll = s[4].split(","); var marker = new google.maps.Marker({ position: new google.maps.LatLng(ll[0], ll[1]), icon: "icon_waterlevel.png", map: map }); bounds.extend(marker.position); } map.fitBounds(bounds);

boundsをつくり、画面内に収めたいアイコンの位置情報を extend で範囲を拡張、最後に fitBounds で完了です!

アイコンとして、水位メーターを加工して、32x32のPNGを作成しました

自分で創ったモノを売ってみよう!はじめてのしょうばい - 高性能温湿度計のつくりかた(SHT31編)

2018/04/08
#KidsIT #sabae #megane #IchigoJam #maker 

人はなぜ勉強するのか?
→ 価値提供力を高め、社会をより良く発展させるため。

最もシンプルな価値提供、自分で創って自分で売る。
「はじめてのおつかい」ならぬ「はじめてのしょうばい」体験を鯖江市の定例祭、誠市で実施。
小学生自ら、メーカー兼販売店兼販売員となって、行き交う人に売り込み!
商品は、先日「ハードオフ x Hana道場企画、ジャンクREメイクショップ」で創ったもの。


ラジオの発電機と扇風機の羽を再構築してメガネに接続魔改造された「せんぷうメガネ」2,000円


メカなメガネだから「メカネ」ナイスネーミング!


ガラケーを再構築した「電話けんし」500円


基板やコンピューターをたっぷりつかったメガネ「コンピューターづくし」1000円(税抜)


メーカーさんと一緒に写真が撮れるサービス、いいね!


試着できます


興味がある人ない人、買ってくれる人くれない人、値段は高い?安い?


商売というコミュニケーション、売り手の立場が分かると、買うときの意識も変わります。


どういう店構えにするといいかな?「自分の商品を売る」をゴールにあれこれその場でチャレンジ!
自分の作品が売れたあとも、「友達の作品を紹介して一部もらおう」など、早速商売の幅が広がってました。
雨で客足少ないなら、売り込んじゃおうと、会場中を商品を持って走り回ってました。


ここでしか買えないメガネ!


美味しくてお買い得な、たくあん
周りのお店で何がいくらで、どのくらい、どういう人に売れている?現場で学ぶマーケティング。


鯖の丸焼き!


あったかいシシ汁、おいしかった!


定番サバエドッグ、実はその誕生は2010年7月12日の誠市(命名は鯖江市長!)
サバエドッグ(福井県鯖江市) 持ち歩くソースカツ丼  :日本経済新聞
全国にファンを持つ鯖江グルメの代表格。いち早く掲載したのはこのブログ

あるくソースカツ丼!?サバエドック登場、雨でも賑わう7月誠市&ご縁市
新しい商品が生まれるお祭、誠市!


市長と!


楽しかった、またやりたいとの声!それぞれ何か手応えを掴んだ様子。


5度台まで下がった冬日、ストーブと福井弁でしゃべる温度計が活躍してました。


950円の高性能温湿度計、SHT31
ピンヘッダーでブレッドボード上で接続してもOKですが、基板でIchigoJam用にコンパクト化!


SHT31使用 高精度温湿度センサモジュールキット: 組立キット 秋月電子通商 電子部品 ネット通販
基板 for プラケース(2枚入) - aitendo」←この基板をニッパーで切って使ってます


下二桁表示で、リアルタイムにくるくる変わる温度と湿度がなかなか新鮮。

SHT31、I2Cで数値を取り出す方法

POKE#700,#2C,#06:R=I2CR(#45,#700,2,#700,6)

温度や湿度の計算にマシン語を使って (A*B)>>16 を実現

R1+=R0 R0=[R1+0]W R2=[R1+1]W R0*=R2 R0=R0>>16 RET

これをasm15マシン語表を見て手でアセンブルしたものを使います。
ポインタで連続する2つの変数を渡して計算するテストで確かめましょう
マシン語わからなくても使えればOK!)

POKE#700,1,68,8,136,74,136,80,67,0,12,112,71 [0]=17500:[1]=24834 ?USR(#700,#800)-4500 2131 ← 21.31度

温湿度計に仕立てます!

10 U=96:LET[U],#4401,#8808,#884A,#4350,#0C00,#4770:U=#800+U*2 15 GSB@LINIT 20 POKE#700,#2C,#06:R=I2CR(#45,#700,2,#700,6) 30 [0]=17500:[1]=PEEK(#700)<<8|PEEK(#701):T=USR(U,#800)-4500 40 [0]=10000:[1]=PEEK(#703)<<8|PEEK(#704):H=USR(U,#800) 45 CLS:?"@"; 50 ?" ";T/100;".";DEC$(T%100+100,2);CHR$(1);" "; 60 ?H/100;".";DEC$(H%100+100,2);"%"; 70 ?" ":S=#900:GSB@LPOS:GSB@LPUT 80 WAIT10:GOTO20 300 @LINIT:LET[0],#38,#39,#14,#70,#56,#6C,#3C,#C,#1:FORI=0TO8:POKE#700,0,[I]:R=I2CW(#3E,#700,2):NEXT 305 POKE#700,0,#48:R=I2CW(#3E,#700,2):POKE#700,#40,#18,#18,7,8,8,8,7,0:R=I2CW(#3E,#700,9):RTN 310 @LPUT:R=I2CW(#3E,S,LEN(S)):RTN 320 @LPOS:POKE#700,0,#80:R=I2CW(#3E,#700,2):RTN

液晶AQM1602とSHT31を接続して使用
10行:掛け算&シフトのマシン語を配列に格納

WS2812Bでキラキラ光るバー表示もステキかも。
温度センサーIC MCP9700-E/TO 低消費電力リニアアクティブ: センサ一般 秋月電子通商 電子部品 ネット通販

次は何創る!?

links
- はじめてのはんばい!ジャンクREメイクショップ in誠市: Hana道場
- バラバラにしてつくって販売!?ジャンクREメイクショップ: Hana道場
- HARD OFF × Hana道場 ジャンク品REメイクショップ開催 | 親切丁寧な買取、リサイクルショップならハードオフグループ

福井弁でしゃべる無駄に細かい温度計 - お手軽I2C高精度温度センサーADT7410 x AquesTalk x IchigoJam

2018/04/07
#IchigoJam #maker 

秋月電子で500円、誤差0.5度の高精度温度センサーADT7410を使った、福井弁でしゃべる温度計。

有効桁数的には標準の13bitモードで、下一桁表示で十分そうですが、16bitモードにすると分解能が0.0078125度(1/128度)まで細かくなり、0.01度の単位までリアルタイムに変化する様子が楽しめます。

データシート(使用半導体資料)によると標準的な温度化での誤差は0度からマイナス0.2度内に安定して収まっているので、広範囲に使えそうです。

ADT7410、温度算出がとっても楽!

10 R=I2CR(#48,0,#700,2):T=PEEK(#700)<<8|PEEK(#701) 20 ?T>>7 30 WAIT30:GOTO10

16bit(=2byte)データをI2Cで取得して、7bitシフト。整数表示の温度計プログラムのできあがり!

?T>>7;".";T&#7F*10/128

下位7bit分から小数第一位を取り出して表示

5 POKE#700,3,#80:R=I2CW(#48,#700,2) 20 ?T>>7;".";DEC$(T&#7F*100/128+100,2)

16bitモードに設定して小数第二位まで表示もこれだけのプログラムでできちゃいます!
優秀!「ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール: センサ一般 秋月電子通商 電子部品 ネット通販


福井弁でしゃべる温度計にするための部品達
16x2行 AQM1602の大きめ液晶モジュールが変換基板付きで550円!(@秋月電子

数値読み上げが便利な、AquesTalk pico を使って温度をしゃべらせます。

S="tada'imano,kion;wa <NUMK VAL=10.53>do/de'su.":GSB@TALK

標準っぽく(ただいまのきおんは、10.53どです)

S="i'mano kionwa <NUMK VAL=1.53>do/deyo":GSB@TALK

フランクに(いまのきおんは、10.53どだよ)

S="ima'no/o--'-- kion;wano-- <NUMK VAL=10.53>do/yatte--":GSB@TALK

福井弁風?アクセントをいろいろ調整して、オリジナルな読み上げを作ろう!


I2Cで使う3.3V/GND/SDA/SCL、並びを揃えるための治具をコンパクトにはんだづけ


IchigoJamのCN5に差し込んで使います(長ピンソケットを使うと重ねて使う、スタック利用ができて便利!)

全プログラムはこちら
10-60 メインループ、ボタンが押されたら福井弁!
100-110 便利ツール
300-340 AQM1602 小型液晶用ライブラリ
400-410 ADT7410 高精度温度センサー用ライブラリ

10 GSB@LINIT:GSB@TINIT 20 @LOOP:CLS:GSB@TGET:?"@";:GSB@TPUT:?CHR$(1);" ADT7410" 30 GSB@LPOS:S=#900:GSB@LPUT 40 CLT 50 IF BTN() GSB@TTALK:ELSE IF TICK()<60 CONT 60 GOTO@LOOP 100 @TPUT:?T>>7;".";DEC$(T&#7F*100/128+100,2);:RTN 110 @TTALK:?"ima'no/o--'-- kion;wano- <NUMK VAL=";:GSB@TPUT:?">do/yatte--":S=#920:GSB@TALK:WAIT300:RTN 300 @LINIT:LET[0],#38,#39,#14,#70,#56,#6C,#3C,#C,#1:FORI=0TO8:POKE#700,0,[I]:R=I2CW(#3E,#700,2):NEXT 305 POKE#700,0,#48:R=I2CW(#3E,#700,2):POKE#700,#40,#18,#18,7,8,8,8,7,0:R=I2CW(#3E,#700,9):RTN 310 @LPUT:R=I2CW(#3E,S,LEN(S)):RTN 330 @LCLS:POKE#700,0,1:R=I2CW(#3E,#700,2):N=0:RTN 340 @LPOS:POKE#700,0,#80:R=I2CW(#3E,#700,2):N=0:RTN 400 @TINIT:POKE#700,3,#80:R=I2CW(#48,#700,2):RTN 410 @TGET:R=I2CR(#48,0,#700,2):T=PEEK(#700)<<8|PEEK(#701):RTN 600 @TALK:R=I2CR(#2E,#700,1):IF R STOP ELSE IF PEEK(#700)!=ASC(">") CONT 610 R=I2CW(#2E,S,LEN(S)):R=I2CW(#2E,13):RTN

おまけ、時報と合わせて温度を読み上げる風なデモ

110 @TTALK:S="#K":GSB@TALK:?"<NUMK VAL=";:GSB@TPUT:?">do sujaa'taga sitiji'wo osirasesima'su.":S=#920:GSB@TALK:S="#J":GSB@TALK:WAIT300:RTN

links
- しゃべるIchigoJamで、聞くプログラミング - 音声合成版ブラインドプログラミング

音声認識パーツとして使うラズパイゼロ、声でプログラミングするIchigoJam コンパクト版

2018/04/06
#IchigoJam #rasppi 

声でプログラミング第二弾、前回はMacだったのでラズパイゼロを使って、コンパクトになりました。

マイクに向かって「えるいーでぃーいち」と話すと、LEDをつけてくれます!
電源を入れてから1分で準備ができて、しゃべりかけるたびに、シリアル出力でIchigoJamに伝えます。
なので、キーボードは必要なし!


IchigoJamとラズパイゼロ(Raspberry Pi Zero)との接続は、5V/GND/TXD/RXDの4本
PanCakeや、MixJuiceのように、シリアル信号経由でいろいろなことをラズパイにしてもらえそうです。
I2Cも使いたいところですが、ラズパイにI2Cスレーブモードはないのかも??


ラズパイで使ったOSは、IchigoJam RPiも載っているOS一覧から、Raspbian Stretch Liteを選択。
IchigoJamと同様、画面の入出力はシリアルにも同時入出力されますが、raspi-configを使って「shellでは使わない、ハードウェアとしては使う」に設定変更。 あとは、前回同様、pyserialでラズパイのシリアルを表す /dev/ttyAMA0 に出力するようにすればOK!

IchigoJamでおなじみ小型モニターで使う場合、config.txt を下記のように設定するとなんとか読めます。

overscan_left=4 overscan_right=4 overscan_top=24 overscan_bottom=24 framebuffer_width=320 framebuffer_height=240

ネットワークがないラズパイゼロは、アプリのインストールがちょっと面倒ですが、Macと共有できるスペースを確保しておくと便利でした。

SDカードにRaspbianを書き込む

sudo dd bs=1m if=2018-03-13-raspbian-stretch-lite.img of=/dev/rdisk2

fdiskで余りの領域に、VFATのパーティションを作成する

sudo fdisk -e /dev/disk2 edit 3 [pid] C [start, size は、デフォルトでOK] write quit

diskutilでVFATパーティションをフォーマットする(16GB SDカードの場合、14G確保可能)

diskutil splitPartition /dev/disk2s3 1 "MS-DOS FAT32" "data" 14G

この領域にいろいろコピーしておくことで、ネットワークがなくてもなんとかなります。
ラズパイ上でマウントするコマンドは、こちら

mount /dev/mmcblk0p3 /data

パーミッションとかいろいろ面倒ですが、部品として使う場合、root(管理者権限)で全部やっちゃうと楽です

sudo passwd root

音声認識エンジン julius をラズパイ上でコンパイルして、前回の設定ファイルで動くように /etc/rc.local に起動スクリプトを書いて出来上がり。 動作速度が心配でしたが、前回のMacで試したときと体感的な差はなく、実用レベル!(長い文章認識だと違うかも)


ボストンクラブ新社屋(360度写真)にて、SWL(Sabae Wearable Laboratory)の第4回ミーティングがありました。
おみやげに、めがね会館で購入、お菓子なメガネ、サバエイトのちっちゃいパッケージ。
鯖江市×老舗お菓子メーカーフルタ製菓×仮面女子コラボ決定「サバエイトチョコ」!|日刊アイドル

ポストスマホの未来はメガネ、夢のようで、そうでもない話で、盛り上がります。
電脳メガネサミット、次回開催に向けて、いろいろネタを創りましょう!
電脳メガネサミット2018 in Tokyoの記事書き起こし - ログミー

IoTで防災力アップ! 河川水位IoTセンサー鯖江市内6箇所、試験稼働中

2018/04/05
#opendata #IoT #sabae 

2013年に訪問、さくらインターネットのデータセンター所在地、北海道石狩市でのLoRaを使った水位IoTセンサーが発表されました。
北海道石狩市とさくらインターネット、IoTなどの情報技術を活用した地域活性化に関する包括連携協定を締結~4月よりLoRaを利用した河川水位計測システムの試行運用開始~


水位IoTセンサー設置作業(鯖江市、日野川上)


10m対応の距離センサーによって水面上昇を捉えます。


計6ヶ所に設置、続々とデータが集まってきます。

取り外しには少し手間がかかるので、電池の交換は極力抑えたいところ。 差分がないときには頻度を落とし、水位が上昇してきたことを検出した場合には頻度高くするなどのメリハリついた送信が良さそう。 設置するケース自体の大きさは、もう少し大きくていいので、電池を多めに積んでおくのも有効そう。

links
- 距離計測IoTと水位センサー、現実社会へのデプロイのおもしろさ
- 親しみやすく表示する鯖江市論手川水位メーターアプリ with D3.js

しゃべるIchigoJamに小型液晶を追加する - AQM1602/AQM0802とのI2C接続 with IchigoJam BASIC

2018/04/04
#IchigoJam #maker 

しゃべるIchigoJamに簡単な文字表示だけつけてみます。
秋月で新発売で見かけたので買ってみた小型液晶「AQM1602Y-FLW-FBW」は、I2Cコントロール。
使うには、1uFコンデンサが2つ必要でした。
(接続方法参考:同型のAQM1602Y-RN-GBW取扱説明書大きめですが変換基板付きが便利です!)

しゃべりながら表示もするIchigoJam
(キーボードは、IchigoJamで使えるPS/2対応、日本語ふにゃふにゃキーボード、AOTECH FKBJ-86BL

初期化はこちら

LET[0],#38,#39,#14,#70,#56,#6C,#38,#C,#1:FORI=0TO8:POKE#700,0,[I]:?I2CW(#3E,#700,2):NEXT:RTN

続いて、文字表示はこのように(@マークは#40、文字書き込み用の指定で、実際表示されるのはABCの3文字)

?I2CW(#3E,"@ABC",4)

画面下段にカーソルを移動するには

POKE#700,0,#C0:?I2CW(#3E,#700,2)

画面クリア

POKE#700,0,1:?I2CW(#3E,#700,2)

モニタの画面の上16文字2行をそのまま小型液晶へ表示する

POKE#700,0,1:?I2CW(#3E,#700,2):POKE#700,#40:COPY#701,#900,16:?I2CW(#3E,#700,17):POKE#701,0,#C0:?I2CW(#3E,#701,2):COPY#701,#920,16:?I2CW(#3E,#700,17)

いろいろ自在に使えますね!
I2CWの返り値を ? で表示していますが、動作確認できたら R= などと置き換えてOKです。
AQM0802も横幅が違うだけで、ほぼ共通で使える気がします。なんと、320円!

前回のプログラムと混ぜて、しゃべりながら、小型液晶に表示するプログラムがこちら

5 GSB@LINIT 10 FOR I=0 TO 1 STEP 0 20 K=INKEY():IF !K CONT 30 ?CHR$(K);:GSB@LPUT 40 IF K>=ASC("a") AND K<=ASC("z") S="<ALPHA VAL=a>":POKE S+11,K:GSB@TALK 50 IF K>=ASC("A") AND K<=ASC("Z") S="<ALPHA VAL=a>":POKE S+11,K:GSB@TALK 60 IF K>=ASC("0") AND K<=ASC("9") S="<NUM VAL=0>":POKE S+9,K:GSB@TALK 70 NEXT 100 @TALK 110 R=I2CR(#2E,#700,1):IF R STOP ELSE IF PEEK(#700)!=ASC(">") CONT 120 R=I2CW(#2E,S,LEN(S)):R=I2CW(#2E,13) 130 RTN 200 @LINIT:LET[0],#38,#39,#14,#70,#56,#6C,#38,#C,#1:FORI=0TO8:POKE#700,0,[I]:?I2CW(#3E,#700,2):NEXT:RTN 210 @LPUT:IFN=16:POKE#700,0,#C0:?I2CW(#3E,#700,2):ELSE IFN=32 N=0:POKE#700,0,1:?I2CW(#3E,#700,2) 220 POKE#700,#40,C:?I2CW(#3E,#700,2):N=N+1:RTN

links
- AQM0802A-RN-GBW - I2C接続小型キャラクタLCDモジュール 8x2行
- AE-AQM1602A(KIT) - 大型16x2行 変換キット付き 550円
- I2C接続小型キャラクタLCDモジュールピッチ用変換基板 - 120円
- 秋月電子内をAQMで検索!

しゃべるIchigoJamで、聞くプログラミング - 音声合成版ブラインドプログラミング

2018/04/03
#KidsIT #IchigoJam 

先日作った盲ろう者向けプログラミング環境
盲ろう者には、難聴や弱視の方も含まれます。(盲ろう者とは - 全国盲ろう者協会

全く見えずに全く聞こえない、全盲ろう者は盲ろう者の8.2%。 盲ろう者の内69%は、補聴器などを併用した音声によってコミュニケーションを受けているとのこと。 (厚生労働省 平成24年度盲ろう者に関する実態調査報告書

しゃべるPM2.5計でも使った「AquesTalk pico
IchigoJam用ボードをゲットしたので、これを使ったコンパクトなしゃべるIchigoJamが実現!

このボードでは、I2Cモードで使います。次のコマンドでまずは実験。

?I2CW(#2E,"ichigo'jamu",11):?I2CW(#2E,13)

* ver1.2以前の場合 POKE#700,13:?I2CW(#2E,#700,1) と記述

こちらが打ち込んだアルファベット小文字を中心に書く、発音記号を打ち込めばしゃべってくれるプログラム

10 CLS 20 INPUT N 30 ?I2CW(#2E,#901,LEN(#901)):?I2CW(#2E,13) 40 GOTO 10

発音記号を使って、抑揚をコントロールする方法、慣れると楽しいですよ!

アルファベットや、数字をしゃべってくれるコマンドを使って、キーやシリアルから入力した文字を読み上げるプログラムを作ります。

10 FOR I=0 TO 1 STEP 0 20 K=INKEY():IF !K CONT 30 ?CHR$(K); 40 IF K>=ASC("a") AND K<=ASC("z") S="<ALPHA VAL=a>":POKE S+11,K:GSB@TALK 50 IF K>=ASC("A") AND K<=ASC("Z") S="<ALPHA VAL=a>":POKE S+11,K:GSB@TALK 60 IF K>=ASC("0") AND K<=ASC("9") S="<NUM VAL=0>":POKE S+9,K:GSB@TALK 70 NEXT 100 @TALK 110 R=I2CR(#2E,#700,1):IF R STOP ELSE IF PEEK(#700)!=ASC(">") CONT 120 R=I2CW(#2E,S,LEN(S)):R=I2CW(#2E,13) 130 RTN

INKEYで受け取った文字がアルファベットか数字の場合、Sに読み上げ文字列をセットして、読み上げルーチン@TALKを呼び出します。 前回と同様、別のIchigoJamとつなげば音声版ブラインドプログラミングが実現できます!

S="paso'kon":GSB@TALK

@TALK部分は、このように気軽に使うことができます。110行で発話中でBUSYな場合、待つ処理をいれているので、発話中かどうかは気にしなくても大丈夫。

アルファベットの発音方法を変更したい場合、こちらA〜Zを発音記号にしたものをベースに改良ください。

5 LET[0],"e'i","bi'i","si'i","dhi'i","i'i","e'fu","ji'i","e'iti","a'i","je'i","ke'i","e'ru","e'mu","e'nu","o'u","pi'i","kyu'u","a-'ru","e'su","thi'i","yu'u","vu'i","da'buryuu","e'kkusu","wa'i","zi'i" 30 IF K>=ASC("a") AND K<=ASC("z") S=[K-ASC("a")]:GSB@TALK 40 IF K>=ASC("A") AND K<=ASC("Z") S=[K-ASC("A")]:GSB@TALK


IchgoJam用音声合成ボード - IchigoJam-FAN」とパーツを集めて・・・
* 写真のATP3012では動きません!! ATP3011を用意しましょう


できあがり!発売、楽しみですね!
* 写真のATP3012では動きません!! ATP3011を用意しましょう

中学生による、すごい作品がありました。
第75回全日本学生児童発明くふう展 経済産業大臣賞 - 夏の大三角形を探せ!!~松戸プラネタリウム~
松戸市立第六中学校(千葉県)2年、小栁和季さんの作品
フルカラーLED、光ファイバー400本、ステッピングモーターなどを使った「光ってしゃべって動く星座盤」
これは実物をぜひ見てみたい!!

links
- IchgoJam用音声合成ボードを5枚配布します。 - IchigoJam-FAN
- 音声合成LSI - AquesTalk pico LSI
- 音声合成LSI ATP3011F4-PU(かわいい女性の音声): 半導体 秋月電子通商 電子部品 ネット通販
- 音声合成LSI ATP3011F1-PU(ゆっくりな女性の音声): 半導体 秋月電子通商 電子部品 ネット通販
- 音声合成LSI ATP3011M6-PU(男性の音声): 半導体 秋月電子通商 電子部品 ネット通販

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