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

デジタル指点字はじめのいっぽ「数字」の点字表現を体得する読み上げ学習マシーン

2018/04/25
#IchigoJam #braille 

慣れると読み取りできそう感ある、6点式体表点字、別名「デジタル指点字」。
読み上げデバイスと合わせて学習できるマシーンがあれば、覚えられるかも、とひとまず、0から9までの数覚えデバイスを作成。

0から順に数を読み上げながら、対応する点字のパターンで振動モーターが震えます。

数の点字は、点字(Wikipedia)を見て、上段から順に2進数として読んで、数値化したものがこちら

10 LET[0],28,32,40,48,52,36,56,60,44,24

続けて、順番に表示しながら震わせるプログラムを書きます。

20 FOR I=0 TO 9 30 PRINT I,BIN$(I,6) 40 OUT[I]:WAIT5:OUT0 50 WAIT 45 60 NEXT 70 GOTO 20

40行と50行のWAITで感覚をいろいろ調整。覚えたらどこまで速くできるかチャレンジ!


数の点字は上2段しか使わないので、ひとまず対応する4つの振動モーターを並べて、指で軽く押さえて振動を感じてみます。 がっちり固定してしまうと、振動が感じられなくなるので、ふわっと設置するスポンジを置くなど、ハードウェア的工夫がいろいろ必要になりそう。


JAIST、宮田先生にも体験いただきました。
2コ100円の振動モーターをMOSFETで100mA流すだけのお手軽アウトプットデバイス。


宮田研究室には、点字ボランティア経験者も!何かのヒントに使ってください!
検索してみると、情報科学研究科で非目視文字などの研究行う、下平研究室を発見。
ヒトとマシンが対等につき合える社会を目指して - 下平研究室


JAISTでは、福井高専の後輩とも再会!
JAIST(=北陸先端科学技術大学院)は、大学院しかない大学院大学。学生は、それぞれ2つの研究テーマに取り組んでいるとのこと。

異分野コラボによるおもしろ新展開に期待です!

links
- 長谷川 貞夫「人間の新しい文字情報チャンネルとしての2点式体表点字システム」
- コミュニケーション方法の詳細 « 東京盲ろう者友の会 | 東京都盲ろう者支援センター(指点字)
- 指点字略字
- JAIST 北陸先端科学技術大学院大学
- 生まれつき盲目の男性がAmazonでソフトウェアエンジニアとして働く - GIGAZINE

デジタル指点字、6点式体表点字デバイスをIchigoJamで作る方法。代表が中学生のPCN支部誕生!

2018/04/17
#IchigoJam #braille #KidsIT 

指点字。見えず聞こえない、盲ろうの教授、福島智さんの本「ことばは光」に登場する、コミュニケーション手段です。 指の感覚というインプットを使い、6点で1文字を表す点字を、話し手から両手の人差し指、中指、薬指の6指使って受信する。

振動モーターを使った長谷川さん考案の体表点字の応用として、6つの振動モーターに拡張する回路を書いて、作ってみたのがこちら。

被験者は福井大学教育学部附属義務教育学校(以下、福大附属)科学部の小林くん
分かりそう!との声。

3Vで動き、100mA程度消費する、振動モーター(円盤型、2コ100円)を動かすには、せいぜい10mA程度しか流せないIchigoJamのOUTポートでは力不足。 そこで登場、電気信号で切り替えるスイッチ、MOSFET(モス・エフイーティー)、2N7000。 VGSthというしきい値が、2.1Vなので、OUT命令で3.3Vを出力するIchigoJamにぴったり。MOSFETの出力電流(ID)も200mAと振動モーター1つ駆動に十分です。


FAIRCHILD 2N7000 データシートより)
G(gate)に電圧をかけるとON、D(drain)からS(source)へと電流が流れます。

6つの振動モーターを制御するために、6つのMOSFETを配置します。
こういう時は紙と鉛筆(ボールペン)が便利、ちょうどいい配置が見つかりました。

Sを真ん中に一直線に配置し、GNDに接続。
振動モーターは3.3VからDをつなぐピンソケットに接続。
Gの隣にOUT1-6から配線。

IchigoJam用の拡張基板の工作には、aitendoの信号名入りユニバーサル基板[P-JAM-EXT-U]が便利です。
IchigoJam Tについている3.3Vは、最大300mA、振動モーター6つ(600mA)には不足するので、IchigoJamのCN5の5Vから電源をとって、別途レギュレーターで3.3Vをつくります。
手元にあった500mAのレギュレーターを2つ並べましたが、最大2Aのレギュレーター(2コ100円)がきっとシンプル。


振動モーター6つをマスキングテープで腕の貼り付け、動作確認。いい感じに震えます。

10 FOR I=0 TO 63 20 OUT I:WAIT 10 30 OUT 0:WAIT 60 40 NEXT 50 GOTO 10

6点、6bitで順番に出力するテストプログラム
(点字について、創ろう!攻殻機動隊の世界、体表点字で有線編 - 高専カンファレンス in 高尾2018 kosenconf-118takao // Speaker Deck


音声合成ボードの使い方とI2Cを紹介。いろいろしゃべらせて遊びながら夢広がっている様子。
大きな音が鳴るようにすると、関心引きそう。AIスピーカーは創れる!
しゃべるIchigoJamで、聞くプログラミング - 音声合成版ブラインドプログラミング


力強い看板「科学部」の先には・・・


天国がありました!ジャンクで創造、そして、販売へのチャレンジも楽しいかも!?
自分で創ったモノを売ってみよう!はじめてのしょうばい - 高性能温湿度計のつくりかた(SHT31編)


かわいいお魚。水族館プロジェクトがあるとのこと!


スッポン!なんと近所の川にもいるらしい。


中学生が代表するPCN支部、誕生へ!

代表の小林くん(右から2番目)は、はじめての人には教えられるけど、初級者向けにも教えられるようになりたいと意欲的。 附属幼稚園、福大教育学部の大学生、先生へと教えられる人は周りにたくさん!自分で設計して作っているという、自動ドアへもアドバイス。

メンバーで共有する、Twitterアカウントを作って、活動報告や、わからないこと質問などに使うと良いかも。 作った知見は、GitHubを使ってwebサイトとしての公開も効果的。いろんなツールを使いこなして、より良い社会を創っちゃおう!

すべての科目をプロジェクトベースで進める福大附属の新スタイル、子供たちが世界の教育を変えようと取り組む姿がスゴイ。日本の教育システム、まだまだポテンシャルありますねっ。

links
- プログラミングは勉強だってゲームに改造できる秘密の道具、福井大学附属中学校21世紀夢講座2017年から義務教育学校へ

盲ろう者のこどもたちにもプログラミングを! 体で感じる体表点字、IchigoBrailleでブラインドプログラミング、IchigoJam 4th Birthday!

2018/04/01
#KidsIT #braille #IchigoJam #Apr1 #sabae 

4/1、エイプリルフールはIchigoJamの誕生日
「すべてのこどもたちにプログラミングを」
プログラミングクラブネットワーク、PCN活動は遠くアフリカ、シリコンバレーにも!

沖縄での体験をきっかけに、地理的ではなく、プログラミングに遠い子供、盲ろう者の子供達にもプログラミングをと思って作った「IchigoBraille」を発表します。(盲ろう者=視覚障害と聴覚障害を持つひと、盲聾)

6bitの点字を、常駐下段3段を時分割、振動モーター2つを使って表現する体表点字。
「O、K」の振動パターンはすぐ覚えちゃいます。
ブラインドタッチで、?"Ichigo" と書いてエンター、Ichigoを振動で感じられます。

真っ暗闇でも、静かに遊べちゃうのが、IchigoBraille!
目の見える人も、たまには、大切な目を休めて、ブラインドプログラミングはいかがでしょう?


振動モーター2つをうなじに左右対称に貼り付ければ、気分は攻殻機動隊!

IchigoBrailleのつくりかた
シリアル信号を受けて、体表点字化するプログラムを書き込んだIchigoJamをシリアルで接続します。
OUT1とOUT2から、トランジスタを通して信号を増幅、振動モーターを駆動すると同時に、LEDも点灯。


2017年のエイプリルフール生まれのIchigoJam 0 on IchigoDakeを使ってコンパクトに実現!
もちろん、IchigoJamでも動きます

1 POKE#700,0,14,11,49,26,7,59,2,15,15,11,14,8,3,13,18,28,32,40,48,52,36,56,60,44,24,12,10,41,15,22,11,32,32,40,48,52,36,56,60,44,24,28,34,42,50,54,38,58,62,46,26,30,35,43,29,51,55,39 2 W=6 10 C=INKEY():IFC<32||C>122CONT 11 IF C>=97 C=C-32 15 B=PEEK(#700+C-32) 20 ?CHR$(C),C-32,B 30 FORI=4TO0STEP-2:O=B>>I 40 OUT1,O&2:OUT2,O&1:?BIN$(O,2):WAITW:OUT0:WAITW 50 NEXT 60 WAIT W*3 70 GOTO10

*アルファベット大文字小文字は区別なし。記号は複数文献を参考に仮に作成。カタカナ未対応。

攻殻機動隊の孫達による電脳メガネづくり
IchigoJamが活躍、鯖江のHana道場ではハードオフコラボのジャンクで電脳メガネづくり。
熱いメガネが誕生!来週の鯖江のお祭、誠市で子供たちによる現品限りの販売会があります!



IchigoJamが生まれたから、4/1はいちご記念日。

投稿された、いろんなIchigoJam!
- IchigoJam ESP32版!? IchigoJamPy!?
- Ichigo Boy Advance SP 誕生!?
- IchigoJamの並列接続!?
- IchigoJam mini!?
- IchigoMotto - 1600万プログラム保存可能!?
-
4th Anniversary プログラム
- POVでIchigoJam
- Quest物語 開幕 - IchigonQuest関係作!?

古のいちごミルクも食べました。fb/tw

links
- 2014年 目指すはMSX! Raspberry Pi より安価な IchigoJam 発表!
- 2015年 創る人を創ろう! Pepper より安価な こどもロボットPaprika 発表!(Kids Robot paprika)
- 2016年 MSXになりたい「こどもパソコンIchigoJam」あの起動ロゴを搭載!(boot logo)
- 2017年 IchigoJam Zero the World's Lightest PC 0g 150yen for IchigoJam Things!
- 2018年 盲聾のこどもたちにもプログラミングを! 体で感じる体表点字、IchigoBrailleでブラインドプログラミング、IchigoJam 4th Birthday!

陰キャの祭典、高専カンファレンス in 高尾 レポート! コミュ障助けるウェアラブルのススメ

2018/03/31
#kosen #kosenconf #kosenconf_118takao #IchigoJam #braille 

八王子にある、東京高専にて開催、通し番号でもう118、高専カンファレンス in 高尾!(GitHub pages 活用)


なぜ高専には陰キャが多いといわれるのか?
→ 何かを心から好きになることができる人が多いから → 打ち込めるものがある力と幸せは世界をリードする
by 東京高専1年生 Kuritain (Tweetは85いいね!

新カテゴリー、陰キャと陽キャ。陰があるから陽がある。内なる光が陰キャの強み?
自分は、どっちかと問われると、陰キャかな。
キャラと固定化するよりも、環境やその場の気分と割り切るくらいが気軽でいいと思うけど。


高専カンファレンスは、ゆるい学会。
それぞれ自由なテーマで持ち寄って発表、自分の知らない世界が広がります。
(発表は、サブスクリーン今昔物語 by @asonas


沖縄高専の紹介とみせかけた、沖縄高専ICT委員会の紹介!
こんな動画もあるよ、IchigoJamでプログラミング! by @shimamiz


今回目立っていた小山高専勢。トヨタ、アクアのモーター。普通のモーターの1000倍!


なんと、持参してきていたアクアのモーター、20kg。
1m先の棒にママチャリをくっつけたものが、毎分5000回転しちゃう代物!?


同小山高専勢、理系がラノベ作家になってわかった”文章力”の話 by @kaname_aizuki
文系的文章と理系的文章の違い。理解か共感か、人が期待していること、伝えたいことの種類を意識してみよう。 舞台も高専な作品「俺たちは異世界に行ったらまず真っ先に物理法則を確認する(ファミ通文庫) - カクヨム」(Kindle版もある!

高専カンファレンスでの発表は、理解するには短いけど、定型がない分、それが熱意となって現れ、共感につながるいいとこどりかも。


ほしいな、高いな、作っちゃおう ← これが高先生の発想
自作の左手キーボード、筐体は3Dプリンター、キーは再利用品 by @N0n5ense


「創ろう!攻殻機動隊の世界、体表点字で有線編 - 高専カンファレンス in 高尾2018 by @taisukef
好きなこと話すって、楽しい!


懇親会での発表「高専カンファレンス、10周年!」


懇親会で目を引く、謎技術で電車の位置を表示するモノ


基板は学校で削り出したもの、こういう設備をサクッと使えちゃうのが高専のいいところ

ウェアラブルメソッド
懇親会で声をかけやすくなるウラワザ → モノに語らせる(纏う=ウェアラブルが楽!)
自分で作ったモノや、自分の好きなモノを持って懇親会に望めば、発表した人とリンクもすぐできるし、その場でしかできない体験になる。
名札に大きく、自分の好きなテーマを書いておくとか、好きな動画を画面にうつしたスマホを首に下げるとかでもいいかも。

こちら、今日の首さげIchigoJam用、3分タイマープログラム

10 F=0:W=60:L=5:U=0 20 @LOOP 25 D=U!=W&&W!=L:U=W 30 LED1:WAIT L:LED0:IF D D=0:WAITL:LED1:WAITL:LED0:WAIT W-L*3 ELSE WAIT W-L,F 35 IF BTN() F=!F:LED1:WAIT60:LED0:CLT 40 IF !F W=60:L=5:GOTO@LOOP 50 C=TICK()/60 60 IF C<60 W=10*60:GOTO@LOOP 70 IF C<120 W=5*60:GOTO@LOOP 80 IF C<150 W=3*60:GOTO@LOOP 90 IF C<160 W=2*60:GOTO@LOOP 100 IF C<170 W=60:GOTO@LOOP 110 IF C<180 W=30:GOTO@LOOP 120 IF C<190 W=600:L=600:GOTO@LOOP 130 IF C<240 W=600:L=0:GOTO@LOOP 140 F=0:W=60:L=5:GOTO@LOOP

普段は省電力で5秒おきに点滅(ボタン電池1つで10時間以上たった今も点滅中)
ボタンを押したらタイマーモード。3分に近づくにつれて点滅が速くなる。サウンダーで音をつけるのもいい。


いろいろな発表、写真アルバム (ライセンス CC BY @taisukef)でのダイジェストでどうぞ!
伝わらないので、ぜひ会場へ、7/7@京都7/15東京(高専生でなくても大歓迎!)


おつかれさまでした!(集合写真 by @heppoko_yuki


会場の東京高専の桜!

links
- 高専カンファレンス Wiki

すぐ作れる力で備える。一日一創のきっかけ、3.11 - Swift4で点字テーブルアプリ

2018/03/11
#swift #braille 

7年前の2011年、必要なものをすぐに作ることができなかった悔しさが、2012年の一日一創の原動力。
あのときには存在しなかったオープンデータが、今は日本中にある。
開発力を持った子供たちがどんどん誕生している。

久々にiPhoneネイティブアプリをSwiftで作ってみる。
Swift入門から3年、当時Swift2だったものはSwift4になっている。
時代に合わせてどんどん変わる言語を使うには、webと自ら学ぶ力、大事。

動作確認を兼ねて、点字を覚えるためのアプリを作成。
点字と書いた点字アイコン。

タップしたら、体表点字化させるなど、何か作ると、追加でいろいろ改造したくなる。


Xcodeの新規プロジェクト作成画面、"Argumented Reality App"を選ぶと、すぐにできちゃうARアプリ。

当初は有料でしか開発できなかったiPhoneアプリ、今は無料なのでMacとiPhoneを持っていれば子供でも気軽に開発可能。
[Xcode][iOS] 有料ライセンスなしでの実機インストール 全工程解説! | Developers.IO
あると楽しい、すぐ作れる力!

点字テーブルアプリのプログラム(ViewController.swift)

// // ViewController.swift // tenji1 // // Created by Taisuke Fukuno on 2018/03/12. in Swift4 // CC BY http://fukuno.jig.jp/ // import UIKit class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { var tableView:UITableView! /* 2800 ⠀ ⠁ ⠂ ⠃ ⠄ ⠅ ⠆ ⠇ ⠈ ⠉ ⠊ ⠋ ⠌ ⠍ ⠎ ⠏ 2810 ⠐ ⠑ ⠒ ⠓ ⠔ ⠕ ⠖ ⠗ ⠘ ⠙ ⠚ ⠛ ⠜ ⠝ ⠞ ⠟ 2820 ⠠ ⠡ ⠢ ⠣ ⠤ ⠥ ⠦ ⠧ ⠨ ⠩ ⠪ ⠫ ⠬ ⠭ ⠮ ⠯ 2830 ⠰ ⠱ ⠲ ⠳ ⠴ ⠵ ⠶ ⠷ ⠸ ⠹ ⠺ ⠻ ⠼ ⠽ ⠾ ⠿ https://ja.wikipedia.org/wiki/%E7%82%B9%E5%AD%97 */ let sections = ["数字", "アルファベット", "ひらがな", "記号"] let data = [ ["1 ⠂", "2 ⠆", "3 ⠒", "4 ⠲", "5 ⠢", "6 ⠖", "7 ⠶", "8 ⠦", "9 ⠔", "0 ⠴" ], ["A ⠁", "B ⠃", "C ⠉", "D ⠙", "E ⠑", "F ⠋", "G ⠛", "H ⠓", "I ⠊", "J ⠚", "K ⠅", "L ⠇", "M ⠍ ", "N ⠝", "O ⠕", "P ⠏", "Q ⠟", "R ⠗", "S ⠎", "T ⠞", "U ⠥", "V ⠧", "W ⠺", "X ⠭", "Y ⠽", "Z ⠵" ], [ "あ ⠁", "い ⠃", "う ⠉", "え ⠖", "お ⠊", "か ⠡", "さ ⠱", "た ⠕", "な ⠅", "は ⠥", "ま ⠵", "や ⠌", "ら ⠑", "わ ⠄", "を ⠔", "ん ⠴" ], [ "数字 ⠼", "アルファベット(外字符) ⠰", "濁音符 ⠐", "半濁音符 ⠠", ] ] override func viewDidLoad() { super.viewDidLoad() tableView = UITableView() tableView.frame = view.frame tableView.delegate = self tableView.dataSource = self tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell") tableView.tableFooterView = UIView(frame: .zero) view.addSubview(tableView) } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 40 // セクションヘッダの高さ } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 20 // セルの高さ } func numberOfSections(in tableView: UITableView) -> Int { return sections.count } func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { return sections[section] } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return data[section].count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) cell.textLabel?.text = data[indexPath.section][indexPath.row] //cell.accessoryType = .disclosureIndicator //cell.accessoryView = UISwitch() // スィッチ return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print(indexPath) // セルタップ時 let alert: UIAlertController = UIAlertController(title: "tenji", message: data[indexPath.section][indexPath.row], preferredStyle: UIAlertControllerStyle.alert) let btnok: UIAlertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { (action: UIAlertAction!) -> Void in print("OK") }) alert.addAction(btnok) present(alert, animated: true, completion: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

LED1つで文字を感じる、1点式体表点字 on IchigoJam

2018/03/10
#IchigoJam #IoT #braille 

6点の点字を2点ずつ時間軸でずらして伝える、2点式体表点字
2点は2bit、つまり、0〜4で表せるので、LEDを更に1つ減らして、LED1つで表現してみました。

1 'TAIHYO-TENJI-1 A-Z 10 LET[0],32,40,48,52,36,56,60,44,24,28,34,42,50,54,38,58,62,46,26,30,35,43,29,51,55,39 20 FOR I=0 TO 25 30 WAIT60:N=[I]:?:?CHR$(65+I) 40 O=N>>4:GSB@W 50 O=N>>2&3:GSB@W 60 O=N&3:GSB@W 80 NEXT 90 GOTO10 100 @W:?BIN$(O,2):W=4 105 IF O=0 WAITW*6 110 IF O=1 LED1:WAITW*3:LED0:WAITW*3 120 IF O=2 LED1:WAITW:LED0:WAITW*5 130 IF O=3 LED1:WAITW:LED0:WAITW:LED1:WAITW:LED0:WAITW*3 140 RTN

(1点式体表点字 RUN on IchigoJam web
A-Zまでを順に1点式体表点字の光表現(LED)で表します。
点なしは点灯なし、左1点は短く1回、右1点は長く3倍の長さで1回、両方は短く2回。
モールス信号的ですが、1文字の長さが固定なところが特徴となります。

あとは、点字を覚えるだけ!
攻殻機動隊のように、ネット越しに届くメッセージを耳も目も使わずに感じることができるはず。

シンプルに実装できますが、速度的にはきっと2点式体表点字が有利です。
音声読み上げと比べて、どこまで速く理解できるか!?

links
- ICT時代だからこその「ヘレンケラースマホ」(1/4):NICT
- 点字ファイルをユニコード点字に変換するプログラム
- 点字リーダー 一日一創2012
- 点字ライター 一日一創2012
- 2進数とプログラミングで解く点字 - IchigoJam
- バリアフリーに潜むイノベーション、4セグメント時計 - 北陸情報通信協議会 G空間xICTまちづくり推進部会にて講演

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