23週目の記事もあるので良かったら読んでみてください。
Day 106 ~ 107: Moments of Significance
この日は、講師の一人が提唱している「Mechanics of Meaningfulness」の考え方を説明されました。その後に水曜日までの課題を出されてそれを作っていました。課題の内容は、「家庭内での重要な瞬間をラジオセンサーを使って解決する Low-Fi プロトタイプを作る」です。この章では、Mechanics of Meaningfulness の内容を簡単に共有して、この課題で作った物を共有しようと思います。
Mechanics of Meaningfulness
Mechanics of Meaningfulness を簡単に説明すると、価値があるプロダクトはただ機能を提供するのではなく、ユーザーに成長と気づきの瞬間を提供するプロダクトであるということです。かなり端折って説明しているので、興味がある人は下記の原文を読むことを勧めます。
そして、Mechanics of Meaningfulness の具体例が下記のサイトに纏まっています。
Radio sensor
前述の通りラジオセンサーを使って、Low-Fi のプロトタイプを作るという課題に取り組みました。ラジオセンサーとは、簡易の無線機です。車のロックや車庫のシャッターの開閉などはこのようなラジオセンサーを応用して作られています。僕はこのセンサーとモーションセンサーを使って、机にいる時間と現在時刻を計測して、自動で電気を消すプロトタイプを作りました。そのプロトタイプの動画を下記に示します。
原理としては、机上にある各センサーで計測した値を計算して、条件を満たすと電気のスイッチの近くにある別の Arduino に信号が送られて、電源を落とします。そのコードを下記のリンクに示します。transmitter が机上の信号送信機で、reactor がスイッチ付近の信号受信機です。
Day 108 ~ 110: People to People
この日は、金曜日までの課題を出されてそれを作っていました。課題の内容は、「インターネット通信を使って、人と人を繋ぎ何らかの課題を解決する Low-Fi プロトタイプを作る」です。この章では、この課題で作った物を共有しようと思います。
Arduino Nano + WiFi module
この日は、インターネット通信が課題に含まれていたので、実際の IoT にかなり近いものづくりになりました。今回は Arduino でインターネット通信を行うために、Arduino Nano と WifiNINA というライブラリーと ArduinoJson とういうライブラリーを使いました。それぞれのライブラリーの詳細を下記のリンクに示します
この2つのライブラリーを使うと、インターネットリクエストを作ることが出来るようになります。また今回は、P5.js と連携させて、音声処理を行いました。そのために、WebSocket を使って同期的な連携を実装しました。今回は下記の PubNub という外部サービスの無料枠を使って WebSocket を実装しました。無料で簡単に使える WebSocket サーバーです。Firebase を使っても同じことが実装できますが、今回は簡単に実装したかったので PubNub を採用しました。
僕たちのチームは、横断歩道を無視する人が多く、事故が起きていることを課題にしました。そして、横断報道の信号にモーションセンサーを取り付けて、横断報道を待っている両サイドの人たちで、待ち時間に音楽を作るというプロトタイプを作りました。各モーションセンサーが音階を持っていて、モーションセンサーとの距離に応じて音のボリュームを操作するように作ってあります。そのプロトタイプの動画を下記に示します。また、作ったコードも示します。
Day 111 ~ 112: Purpose
この日は、水曜日までの課題を出されてそれを作っていました。課題の内容は、「LoRa の長距離通信を使って、何らかの課題を解決する Low-Fi プロトタイプを作る」です。この章では、この課題で作った物を共有しようと思います。
LoRa
LoRa とは最近普及し始めた技術です。直径約10km範囲内で無線でデータ通信ができます。低電力で実現できるために、Arduino などのマイコンでも使えるようになっているのが特徴です。詳しい内容は下記のサイトを見てみてください。
一番の重要な点は、インターネットの接続無しで、約10kmのデータの送受信が可能です。最初の課題で使ったラジオセンサーの長距離版と理解すると良いと思います。今回は、下記のリンクの Arduino と LoRa が一緒になったマイコンを使いました。
また、Arduino で LoRa を使うには下記のライブラリーが必要です。
基本的には下記のリンクのセットアップに則って、LoRa の設定を行いました。
また、Arduino で LoRa を動かすためには、ボードの追加が必要で、下記の画像の用に Preference に2つの json のリンクを貼り付けて再起動する必要があります。
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
僕たちのチームは、国立公園で遭難の事故が起きていることを課題にしました。そして、国立公園の受付と各装置を LoRa で繋いで、天候情報や遭難情報を受付と訪問者で送受信できるというコンセプトを作りました。しかし、LoRa の挙動が安定せず、実際に動くプロトタイプを完成できませんでした。一応動くコード下記に示して起きますが、挙動が安定しないことを念頭に置いておいた方が良いと思います。
Day 113 ~ 115: People to Self or People to Time
この日は、金曜日までの課題を出されてそれを作っていました。課題の内容は、「LoRa かインターネット通信を使って、『時間』を捉え直すようなサービスの Low-Fi プロトタイプを作る」です。この章では、この課題で作った物を共有しようと思います。
API connection
この日は、Arduino Nano を使って API にリクエストを送信する方法を学びました。例として、下記の Weather API を使って世界中の天気情報を取得できるものを作りました。
必要なものは Arduino Nano と前述した WiFiNINA を使ってリクエストを作ることができます。下記にサンプルのコードを示しておきます。
今回の課題では、前述した PubNub を使って、直接2つの Arduino Nano を繋いでデータの送受信を行っています。僕たちのチームは、携帯の使用時間を可視化してユーザーに携帯の使いすぎを意識させる携帯カバーとホームデバイスを作りました。原理としては、カバーにしまわれているとカバーの Arduino Nano がカバーにしまわれている時間をカウントします。そのカバーをホームデバイスに近づけると、カバーとホームデバイスにつけてある磁石に反応した磁力センサーが ON になり、カバーからホームデバイスにカウントされた時間の送信を開始するという作りになっています。そのプロトタイプの動画を示します。また、作ったコードも示します。
また、円形の LED を使うために使った、ライブラリーも共有しておきます。
Day 116 ~ 120: One week project
最終週は、1週間の課題を出されてそれを作っていました。課題の内容は、「コスタリカのコンテキストで、Meaningful な Hi-Fi なプロトタイプを作る」です。この章では、この課題で作った物を共有しようと思います。
Magenta
僕たちのチームは、コスタリカの首都であるサンホセで歴的建造物が取り壊しになっていることを課題として、サンホセ市民に取り壊しの再考を促すサービスを考えました。イテレーションの当初では、壁掛けのデバイスをデザインして、建物の音を毎日録音して、その録音をランダムで流すというようなサービスを考えていました。下記がその当初のイテレーションのプロトタイプの画像です。
上記の画像のボタンを押すと、建物の日々の音がランダムで流れてきて、歴的建造物の経た時間を感じるというのも作っていました。ただ、これだと録音を聞いてるだけで、「毎日通いたい」という気持ちが湧いてこないという議論になりました。そこで、気温や時間や来場者数に応じて、アウトプットの音を変化させて、建物の感情を表現しようとなりました。そこで、僕たちのチームは Magenta という機械学習のライブラリーを使うことにしました。
Mageta ではパラメーターを設定して、そのパラメーターと音声ファイルを使って音楽を自動で作ることが出来るライブラリーです。僕たちのチームは、とりあえず「気温」をパラメーターとして、過去の録音を音声ファイルとしてプログラムを作りました。その動画を下記に示します。
ちょっとホラーな音(笑)ですが、スタートさせると自動で音声ファイルを使って、パラメーターに応じた音楽を自動で作ってくれます。 Mageta 用のコードを下記に示します。今回、P5.js は使わずに Mageta は python3 -m http.server で実行されるように作っています。
これを最終的に、ウェブのインターフェイスから、Arduino Nano と接続して装置とインタラクションをしたら、この音楽が流れるように作り変えました。今回僕たちのチームのインタラクションは「壁掛けの装置の前を通る」「壁掛けの装置をノックする」「壁掛けの装置に Upe と声をかける」です。それぞれをモーションセンサーとサウンドセンサーを使って実装しました。下記に、僕たちのチームのインタラクションの図と Arduino 用のコード示します。(本当は Twitter 連携まで考えていましたが、時間の問題で出来ませんでした。。。)
最後に最終的なコンセプトビデオと発表資料を載せておきます。
今回は、作ったものをベースに共有しましたが、もちろんインタビューやボディーストーミング、ディスカッションを行っています。ただ、内容は今までのブログで書いた内容と同じなので、作ったものや技術をベースに共有しました。
正直、課題が多くてかなりしんどい授業でしたが、最終的にはチームが満足できるようなサービスができた満足しています。また、CIID に入った当初の「IoT がやりたい」という気持ちも満たせたのでとても満足の授業でした。
27~29週目の記事もあるので良かったら読んでみてください。