スマホを使えない人が、手書きのやり取りをLINEで行える端末を作ってみました。メッセージを送るときはホワイトボードに手書きするとLINEに送信され、逆にLINEから届いたメッセージはプリンターで印刷されて出てきます。これならスマホを使えなくても、LINEでやりとりができるようになります。
現状の課題
高齢者世帯と離れていてスマホを使えないという場合、電話をするほどでもないような用事の連絡手段がありません。急な用事であれば電話すればいいですが、「スーパーで○○が安売りしてたけどいる?」みたいなどうでもいい内容を、わざわざ電話でするのは面倒です。また、耳が遠くなれば電話も難しくなってきます。そうなると、スマホを使えない高齢者との連絡手段が無くなってしまうのです。
高齢者は新しいものを覚えられない
前にスマホを(携帯すらも)使ったことがない高齢者に、ホーム画面をシニア向けホームアプリに変えたスマホを持たせてみました。一通り説明をして練習もしましたが、結局電話に出ることすらありませんでした。仕方ないので中古のガラケーに変えてみたものの、あまり結果は変わりませんでした。
特に混乱してしまったのが、「通知」でした。OSのアップデートやアプリの通知、着信の通知でアイコン出てきたり点滅したりしてると、何をしていいかわからずにフリーズしてしまいます。画面を覆うダイアログなんてもってのほか。LEDがチカチカ光ってると何か異常なんじゃないかと不安に感じます。デジタル世代ではごく普通のことでも、デジタルに馴染みのない世代に難しいようです。
FAXはどうか?
FAXも試したことがありますが、電話回線が1回線の場合、電話とFAXで共用しなくてはなりません。そうするとかかってきた電話がFAXなのかどうか判定して切り替えなくてはいけません。FAX機には自動切替の機能があるので自動的に切り替わってはくれるのですが、FAXなのに着信音が鳴ったり、試した機種では使い勝手がよくありませんでした。
また、紙やインクの無駄も気になります。家庭用のFAX機はロール紙に印刷するタイプと、A4の用紙にインクフィルムを転写する方式がありますが、現在は後者しか販売されていません。1行で納まるメッセージを送信したいだけなのに、A4の紙を1枚消費して、A4の長さのインクフィルムを消費してしまいます。
M5Stackで自作する
無ければ作る!の精神で、自分で作ることにしました。今回は以下のことを目的としました。
高齢者側
・操作を覚える必要がないこと
・手書きの文字を送信でき、受信は操作不要で行われること
現役世代側
・LINEで完結すること
手書きの文字を送信する方法
まず最初に考えたのは、M5Stack Core2のタッチパネルに書く方法でした。
実際に購入してテストをしてみると、タッチパネルの精度があまりよくないことがわかりました。特に画面の端の部分で位置ズレが目立ちました。そしてもう一点、この小さな画面上で文字を書くのは困難だということもわかりました。
これを手先が不自由になりつつある高齢者に求めるのは難しそうです。ということでタッチパネル方式は諦めることにしました。
カメラで撮影する方法
手書きで書いたものをカメラで撮影して送信する方法を考えました。この方式のメリットは、普通に紙に書くのと同じで、書いたものだけでなく何でも写真で送れるということです。
使用したカメラは「GROVE – シリアルカメラモジュールキット」です。このモジュールはUARTで通信できるので、M5StackのGPIOポートを2つ目のUARTとして設定してあげれば、簡単にデータのやり取りができます。
カメラの位置は被写体の真上にあると書きづらいため、斜め方向から撮影するようにしました。そうすると撮影した写真も変形してしまうので補正する必要がありますが、そういった複雑な処理はサーバー側で行い、M5Stackからはそのままの状態で送信するようにしました。
受信したメッセージを印刷する方法
受信したメッセージを印刷するのにサーマルプリンタを使用しました。レジで出てくるレシートのように、ロール状の感熱紙に印刷されます。M5Stackとのデータ通信は、カメラと同じくUARTで行います。
このプリンターには日本語フォントは入ってないので、このままでは日本語を出力することができません。そこでサーバー側でテキストを画像化して、画像をサーマルプリンターで印刷することで解決しました。「こうすると日本語が出力できる」というような情報もあるのですが、この種のプリンターはファームウェアの種類がいろいろあるようで、私が試したものはうまくいきませんでした。データシートにあるコマンドも一部は対応してなかったり、安いからといってAliExpressで買ってもファームウェアが全然違いました。
筐体の作成
筐体は3Dプリンターで作りました。接合部はアクリサンデーというアクリル用の接着剤で、PLAも溶けてくれるので強力に接着します。完成したのがこちら!
かなりイカツイ感じになっちゃいました。紙を使わずに何度でも書けるように、100均のホワイトボードを使いました。左手前の黄色いボタンは、書いたメッセージを送信するボタン。M5Stackの小さなボタンを押さずに、簡単に・わかりやすくするために、この位置になってます。
サーバー側の処理
M5StackとLINE APIは直接しているわけではありません。M5StackとLINE APIの間にサーバーがあり、その間でデータの処理を行っています。
送信の処理 手書き→LINE
手書きのデータはJPEG形式でサーバーに送信されます。カメラが斜めの位置にあるため、文字が書かれた部分の映像は台形に歪んでしまっています。これを正しい縦横比の長方形に変換したあと、画像をLINE APIに送信しています。画像の編集にはFFMpegを使いました。
# 斜めから撮影した画像を正面から見たように修正するコマンド
/usr/bin/convert input_image -matte -normalize -virtual-pixel white -distort Perspective "30,40 30,10 100,420 0,480 640,40 610,10 570,420 620,480 " -crop 640x480+0+0 output_image
受信の処理 LINE→印刷
大きく分けて2つの機能があります。1つはテキストの画像化、もう1つはメールボックスの処理です。LINEから送られてきたデータがテキストだった場合、True Typeフォントで画像化します。プリンターの横幅に合わせ、白黒画像として生成します。LINEから送られてきたデータが画像だった場合は、画像を縮小して2値化を行います。最終的には全て画像形式のデータが作成されます。
メッセージの送信(サーバー→M5Stack プリンター)は、電子メールと同じキュー方式を採用しました。キュー方式にすることで非同期で処理することができるので、送信したタイミングで受信できない状態だったとしても、後で受信することができます。これが結構重要で、WiFiが繋がらなかったり、電源を抜いてしまっていたりして、常に受信できる状態とは限らないのです。こんなときは非同期の処理が適してます。
POP3プロトコルと同じように、実際にM5Stackからは1分おきにサーバー側にメッセージがないか確認を行います。新着メッセージがあれば受信し、プリンターで印刷を行います。他にもメッセージがあれば逐次受信し、無くなるまで繰り返します。LINEからメッセージを受信した場合は、サーバーからM5Stackにトリガーを行います。そうすることで1分またなくても、新着メッセージを即座に受信することができます。
2年間運用してみた感想
これを作ったのは2020年の10月頃でした。しかし1年半くらいの間、完全な一方通行状態でした。LINEから送ったものは読んでいるのですが、返事が来ません。向こうから連絡してくることもありません。かといって送信機能が壊れているわけでもありません。実は遠隔操作する隠しコマンドがあり、遠隔で送信ボタンを押したり、稼働状態を返す機能があります。異常はありません。単に使ってくれないだけです。(涙)
変化があったのが、このメッセージの「テンプレート」を渡してからです。これはわざわざ手書きしなくても、決まった要件なら、このカードをホワイトボードの上に置いて撮影するだけでメッセージを送れるように、というものです。
今回行ったことと同じ課題を解決しようとしているNTTドコモの研究結果があるのですが、メールなどの非同期コミュニケーションに慣れている我々とは違い、高齢者は同期コミュニケーションを好むそうです。もしかしたら、このようなリアルタイムではないやりとりで、何と言い出していいのかわからなかったのではないか…?この後は「○○したい」「○○を買って来てほしい」と書くようになりました。
市販の製品はどうか?
詳しく調べたわけではありませんが、検索して最初に出てきたCroqyという、手書きのメッセージがやりとりできる端末がありました。電子ペーパーを使ったもので、画面上で書いて送れるのはいいですね。バッテリー式で持ち運び可能。コンパクトで場所も取らず、価格は約2万円。これは素晴らしい!
でも、ちょっとだけ言わせてください。そのオシャレ感を狙ったアイコンだけのUI、これはITリテラシーが高い人にしか理解できません。「これ何だっけ?」と考える必要のない端末が理想だと思います。こうゆうのは 物理ボタン+説明つき にするべきです。
個人的には、上記の物理ボタンに加え、SIMカード内蔵で単体でインターネットに繋がる端末がベストです。まず、高齢者宅にはWiFi以前にネット回線がありません。そのためだけに回線を引くのは高コストです。WiFiルーターも年に数回はフリーズするので、Switch Bot Plugなどを使って遠隔で再起動する手段も必要になります。実際にやり始めてみると、思いもよらないようなトラブルがいっぱい出てきます。
幻の2号機
初号機があまりにゴツかったので、スリムな2号機を作ってみました。M5StackからATOM Matrixに変更し、PIRセンサーを新たに追加しました。PIRは「みまもりセンサー」として使うもので、動きがあるかないかで生存確認をします。しばらく音沙汰が無いから行ってみたら白骨化してた…なんてことがあったらいやですからね。
ATOM Matrixは本体がボタンになっていて、そのまま送信ボタンに使えます。5×5のLEDをアニメーションできるので、送信中だったり、受信中だったりといった、簡単な状態表示も可能。ほんとこのサイズによく納めたよなって感じです。
ただ結局2号機は使いませんでした。カメラの下の空いたスペースに、ホワイトボードのイレーザーを置くようにしたのですが、実際に使ってみると位置が猛烈に使いにくかったです。あとなぜかすぐにネットに繋がらなくなる問題があり、そもそも初号機も使ってくれないという状況でモチベーションが上がらず、ここで開発中断となりました。
これがRaspberry Piで作れば、サーバー側で行っていた画像変換の処理も単独でできて、専用SIMで運用もできそうですね。私はもうモチベーションが続かないですが、きっと世の中で必要とされているものなので、どなたか作って社会に役立ててみていただければと思います。(他力本願)