こんにちは、フィジコンインターンのYです!
最近はコロナの影響で在宅勤務が続いていますが、フィジコンのミッションによって充実したWFHができています!
大変な世の中ですが、今回はそれに関連したものを作ってみたいと思います。
背景
コロナ対策では避けるべき3密というものがあります。
- 密接
- 密集
- 密閉
これら3密を避けるために重要になってくるのが「ソーシャルディスタンス(社会的距離)」です。
今回はソーシャルディスタンスをもっと定量的にできないか?といった観点からものづくりをしてみました!
作ったもの
今回作ったものはソーシャルディスタンシングバッジのプロトタイプです。
ソーシャルディスタンシングバッジとは、人との距離をセンサで測定し、その距離がディスプレイに表示されているバッジです。
いずれウェアラブル化することが目標ですが、今回はその前段階としてプロトタイプを作りました。
使ったもの
使用したものは次の通りです。
制作手順
今回は大きく分けて3段階の手順を踏みました。
- センサの動作確認
- LEDの動作確認
- センサとLEDの連携
それではひとつひとつ説明していきます!
センサモジュールの動作確認・使い方
利用したセンサはVL53L0Xという赤外線レーザーを使った距離センサです。
レーザーが物体で反射して戻ってくるまでの時間をはかることで距離を求めています。
Raspberry PiやArduinoなどのマイコンで使用できます。
今回はセンサ単体ではなく、秋月でモジュールを購入しました。
サンプルコードが下のリンクにあります。
このコードをベースにしています。
LEDの動作確認・表示方法
4桁7セグメントLEDは存在は知っていたものの、どのようにして表示されるのかまったく知りませんでした。
そもそも7セグメントとは何か?というところですが、これは数字を7画で表しているもののことです。
電光掲示板やデジタル時計などでよく見る方式です。
この7画を7つのLEDで表し、光るLEDを制御することで数字を表現します。
また、4桁の表現は「ダイナミック点灯」という方法で行われています。
ダイナミック点灯とは、LEDを4桁同時に点灯するのではなく、1桁ずつLEDを順番に点灯していくことです。
1桁ずつ点灯するときの切替時間間隔を小さくすると、4桁同時に点灯しているように見えます。
今回は次の記事を参考にLEDがつくかどうか動作確認してみました!
参考記事:http://tsukutta.hatenablog.com/entry/2014/06/30/180629
どのピンがどのLEDに対応しているのかわかりやすく説明してくれています。
こうやってLEDを制御するのか…と思いました。
センサとLEDの連携
一番つまづいたのがこの部分です。
センサ値を表示する部分で、LEDのダイナミック点灯が滑らかにいかず、消えたり点いたりチカチカしてしまいました。
非常に目が疲れる…。
そして一番左の桁だけ謎に常時点灯…。謎です…。
どうやらloop()中にdelay()を入れてしまうと、delay()のたびにLEDが全消灯してしまうためチカチカしていたみたいです。
それを解決できるのがMsTimer2というものでした。
これはタイマー割り込みをするライブラリで、割り込み間隔と割り込み発生時に呼び出す関数を指定するものです。
割り込みとは指定した条件のもとで実行中のプログラムに割り込んで異なるプログラムを一時的に実行するものです。
MsTimer2ではタイマーを開始すると指定した時間ごとに割り込んで関数を呼び出します。
こうするとloop()とは独立で繰り返されるため、全消灯されることがなくなり、チカチカしなくなります。
参考サイト:https://garretlab.web.fc2.com/arduino/introduction/beginning_with_7segment_led/
完成したプロトタイプの動作
ちゃんと7セグLEDに距離が表示されています!
チカチカもしていません!
まとめ・今後の課題
次はウェアラブル化するべく、回路設計をしたりはんだ付けをしたり、ちょっと本格的な電子工作をしてみようかと思います。
首からかけるタイプのものを作るのが目標です!