Youtube

感染対策に最適!便利なIoTグッズ作ってみた【IoT電子工作ラズベリーパイ】

date2024年01月29日
感染対策に最適!便利なIoTグッズ作ってみた【IoT電子工作ラズベリーパイ】
タグ:

今回の出演者

てもし
てもし

元役者ITエンジニア

しろ
しろ

新卒ITエンジニア

ゲスト かおりん
ゲスト かおりん

IoTエンジニア

ITサプリについて

この記事は動画『ITサプリ』で配信している内容をもとにテキスト配信しています。ITサプリは未経験からIT業界へ転職したい方に向けて情報配信をしているYouTubeチャンネルです。IT業界ではたらく上で役立つ知識を発信していますので動画でもお楽しみください。

てもし

てもし

今回は『IoTグッズを作ろう!』ということで、IoTエンジニアのかおりんさんにお越しいただきました。

1.IoTグッズのイメージを決めよう

てもし

てもし

一体作るものは何かと言いますと、ティッシュカバー。これをIoT化してみたいと思います。

しろ

しろ

『日用品のIoT化』は良いですよね。

てもし

てもし

ですね。どんな機能をつけるかというと、ティッシュカバーにCO2濃度センサーをつけて、3段階のアラートを鳴らせるようにしていきたいと思います。今では飲食店などにも『CO2濃度センサー』というものがあると思いますし、このご時世にぴったりなものを作りたいと。

しろ

しろ

といっても、作るのは結構大変そうだと思いますが……?

てもし

てもし

ですので、今日はかおりんさんに丸投げで、パパッと作っていっていただこうと思います!(笑)

2.IoTグッズ制作の準備

かおりん

かおりん

では、用意するものをご紹介しますね。まず『Raspberry Pi (ARMプロセッサを搭載したシングルボードコンピュータ)』という、小さいパソコンみたいなもの。

Raspberry Pi を紹介している場面の画像
【Raspberry Pi】
かおりん

かおりん

次に、CO2の濃度を測るセンサーですね。

CO2濃度センサーを紹介している場面の画像
【濃度センサー】
しろ

しろ

結構小さいですね。

かおりん

かおりん

そして、先ほどのセンサーとRaspberry Piを繋ぐためのケーブルですね。どこに何をさしたか分かりやすいように、カラフルにしています。

ケーブルを紹介している場面の画像
【ケーブル】
てもし

てもし

なるほど。

かおりん

かおりん

あとは、音を鳴らすためのスピーカーと、電源を供給するためのモバイルバッテリー。それから設置するためのティッシュボックスですね。

スピーカーを紹介している場面の画像
【スピーカー】
モバイルバッテリーを紹介している場面の画像
【モバイルバッテリー】
ティッシュボックスを紹介している場面の画像
【ティッシュボックス】

3.センサーとRaspberry Piを接続しよう

かおりん

かおりん

では実際に作っていきます。まず、センサーとRaspberry Piを接続します。
センサーの裏に「ここはこうですよ」という情報が貼ってありますので、それに合わせてケーブルのピンをさします。同様に、Raspberry Piにも「ここは電源ですよ」とか「ここはこれですよ」という決まり事がありますので、それに合わせてつないでいきます。

センサーの接続部分を確認している場面の画像
【センサーの接続部分を確認】
Raspberry Piの接続部分を確認している場面の画像
【Raspberry Piの接続部分を確認】
てもし

てもし

そのケーブルは、色によって何か変わるとかではなくて全部同じなのでしょうか?

かおりん

かおりん

はい。全部同じで、ただケーブルの色が違うだけです。
今回は電源に分かりやすく赤を、グラウンド(GND・グランドとも呼ばれ、電気をスムーズに流すために、必要な回路動作を決める基準となるもの)には、紫のように少し濃い色のケーブルをつけていきます。

センサーの電源にケーブルを接続している場面の画像
【センサーの電源・グラウンドにケーブルを接続】
かおりん

かおりん

こちらはシリアル通信(電気通信において伝送路上を一度に1ビットずつ、逐次的にデータを送ること)という形で接続しますので、センサー裏面の『TX』『RX』と書いてあるところにもピンをさしてまいります。

センサーのTX・RXに接続している場面の画像
【センサーのTX・RXにケーブルを接続】
かおりん

かおりん

続いて、Raspberry Pi側の右から2番目が電源の接続部になるので、こちらに赤いケーブルをさします。その横がグラウンドですので、そちらにもケーブルをさします。

Raspberry Piの電源接続部分にケーブルを接続している場面の画像
【Raspberry Piの電源接続部に赤いケーブルをさす】
Raspberry Piのグラウンド接続部分にケーブルを接続している場面の画像
【Raspberry Piのグラウンド接続部にケーブルをさす】
てもし

てもし

「ここが電源」と基盤にしっかり書いてあるのですか?

かおりん

かおりん

書いていないですね(泣)
「Raspberry Pi ピンアサイン」と調べていただいて、確認していただければと思います。続いて『TX』『RX』ですね。確か、TXが上でRXが下だったかな……

Raspberry PiのTX・RX部分にケーブルを接続している場面の画像
【Raspberry PiのTX・RX接続部にケーブルをさす】
センサーとRaspberry Piのの接続が完了した場面の画像
【センサーとRaspberry Piの接続完了】
かおりん

かおりん

このような感じで、センサーとRaspberry Piの接続というのは、こちらでひとまず終了となります。あとはスピーカーを差し込みまして、箱に設置していこうと思います。

Raspberry Piにスピーカーを差し込んでいる場面の画像
【Raspberry Piにスピーカーを差し込む】
Raspberry Piにスピーカーを設置完了した場面の画像
【設置完了】
しろ

しろ

あ、電源つきましたね。

かおりん

かおりん

ですね。やはり、電源が入りますとセンサーにも電源が供給されますので、センサーのLEDが光っています。

4.ティッシュケースに設置しよう

Raspberry Piをティッシュケースに設置した場面の画像
【ケース底部の設置】
かおりん

かおりん

ケース底部に設置したRaspberry Piの上からティッシュを乗せまして、フタを閉じます。

てもし

てもし

もう分からないですね。

かおりん

かおりん

こちらでティッシュケースへの設置は終了となります。

しろ

しろ

早技ですね(笑)

5.音声を録音しよう

かおりん

かおりん

次は、パソコンを使って音声を録音ですね。では録音していきましょう。

てもし

てもし

アラート音の録音ですね。ここは、しろさんに音声を入れてもらいましょうか。

しろ

しろ

3段階だから、3つ音声をとるということですよね? 何にしましょう、1つ目のセリフ考えてください。

てもし

てもし

何にしましょうか……ウィスパーのような囁き声とか? あまり意味なさそうですが(笑)

しろ

しろ

逆に「あれ、今何か話したよ?」みたいな感じになるかもしれませんよ。

てもし

てもし

なるほど。「何か聞こえたぞ?」となるアラート音ですか。
では、1つ目はウィスパーボイスで何かを言ってもらって、2つ目は普通に「そろそろ換気しませんか?」と言う感じでどうでしょう。それで、3つ目は「換気しやがれコノヤロウ」とか、怒鳴り散らすような感じで。

しろ

しろ

なるほど、結構怒る感じでね(笑)

てもし

てもし

はい、そんな感じで収録していきましょう。

かおりん

かおりん

まず1つ目ですね。

しろ

しろ

(小さな声で)「そろそろ換気しませんか?」
……これ、聞こえていますか? 要らなくないですか?

てもし

てもし

OKでしょう!(笑)
次、2つ目ですね。これは普通にお願いします。

しろ

しろ

「そろそろ換気しませんか?」

てもし

てもし

良いですね、可愛いじゃないですか。

しろ

しろ

これ、自分の声っていうのが恥ずかしいですね。

てもし

てもし

3つ目は「換気しろ、コノヤロウ」と怒鳴る感じで。

しろ

しろ

「はやく換気しやがれ、バカヤロウ!」
……これ、大丈夫? これで良いですか?

てもし

てもし

良いですね! こんなアラート鳴ったら、少し腹立ちますけど(笑)
さて。こんな感じで収録した音声を「Raspberry Piに移していく」ということで、かおりんさん、次の工程をお願いします。

6.音声をRaspberry Piに送ろう

かおりん

かおりん

では、先ほど収録した音声を、パソコンからRaspberry Piに送っていく、ということをやっていきたいと思います。
まずはファイル名を『case1』『case2』『case3』に変更します。

収録した声の素材名を決めている場面の画像
【声の素材名を決める】
かおりん

かおりん

音声を移す前に、拡張子(ファイルの種類を識別するために、ファイル名の末尾に付けられる文字列)の形式を、inputの値として適したものに変更していきます。元のデータから、変換したいものを「この拡張子に変更するよ」ということを記載することができます。

音声データの拡張子を変更している場面の画像
【拡張子を変更する箇所】
かおりん

かおりん

このように、ファイルを3つとも、wavという拡張子に変更していきます。

拡張子の変更が完了した場面の画像
【拡張子の変更完了】
拡張子の変更を確認している場面の画像
【拡張子変更後の確認】
かおりん

かおりん

ファイルの拡張子が変更できていることが確認できましたら、このファイルをネットワークでつながっているRaspberry Piに直接送っていきます。その際、scpコマンド(ファイルをコピーする際に使用する、Linuxのコマンド)で「このファイルをRaspberry Piのディレクトリに入れて」ということを記載します。

Raspberry Piにファイルをコピーするためのコマンドを入力している場面の画像
【scpコマンドの記述】
てもし

てもし

Linuxではお決まりですね。

しろ

しろ

これで、送信できている感じでしょうか?

Raspberry Piにファイルを送信している場面の画像
【送信開始】
かおりん

かおりん

はい、送れました。これで名前を変えつつ、残りの2つも送ってまいります。

ファイルを送信完了した場面の画像
【送信完了】
かおりん

かおりん

移せたことを一応確認しますと、Raspberry Piのコンソール内の『case』というフォルダにcase1~3のデータが入っているのが確認できました。

Raspberry Piにデータが入っているのを確認している場面の画像
【送信後のデータ確認】
てもし

てもし

これで、しろの音声データがRaspberry Piに引っ越すことができました。

7.プログラミングをしよう

かおりん

かおりん

次はプログラミングですね。センサーで実際に受け取った値をケース分けして、対応した音声を流すということを書いていきたいと思います。
先ほど接続したセンサーの値を受け取るのに、とても便利なライブラリがPythonにありますので、まずはライブラリのインポートをおこないます。

てもし

てもし

なるほど。プログラミングにはPythonを使用されるのですね?

かおりん

かおりん

はい、Pythonを使います。
センサー内のライブラリ名がmh_z19ですので「import mh_z19」と入力します。続いて「import subprocess」と入力しますが、こちらはスピーカーから音を出すときに使用するライブラリですね。
そのために、CASE1・2・3という形で、センサーのアラートを鳴らす『条件の値』を決めていきます。

換気の目安のCO2濃度を決定している場面の画像
【換気の目安表】
てもし

てもし

濃度が「これぐらい高まったら鳴るよ」のような値を決めていく、ということですね。

かおりん

かおりん

900くらいで「換気しませんか」とささやきまして、1000超えたところで通常に「換気してください」と。1500を超えたら怒る、ということで値を設定しました。

CO2濃度の値を設定している場面の画像
【値の設定】
かおりん

かおりん

続いて「センサーからCO2の濃度を受け取る」というコードを書いていきましょう。CO2の値を取得できるメソッドというものがありまして、そちらの変数にCO2を入力してまいります。

CO2濃度を取得するためのコードを入力している場面の画像
【CO2濃度を取得するためのコード入力】
かおりん

かおりん

次に、先ほどインポートしました『subprocess』で決めた『条件の値』と比較して音が鳴るように、コマンドを叩くような形で「shell=True」といった記述をしてまいります。3つとも似たような文章になるので、複写しつつ値を記述します。

条件によって音が鳴るようにコマンドを入力している場面の画像
【『subprocess』でのshell=True記述】
コマンドが入力完了した場面の画像
【shell=True記述完了】
てもし

てもし

それぞれのケースで決めた『条件の値』ごとに、やることを決めていく、ということですね。

かおりん

かおりん

コンソール上で叩いた時にCO2の濃度を知りたいので、確認ができるように一応、デバッグ用として『print』というコマンドも入力していきます。

コンソールにCO2濃度を表示するためのコマンドを追加した場面の画像
【print(co2)のコマンド追加】
てもし

てもし

こうすることで、現状の濃度が数値で見ることができる、ということですね。

かおりん

かおりん

値が取れているか、の確認はしたいですからね。プログラムとしては、こちらで以上です。

てもし

てもし

では、プログラミングまで終わりましたので、動作確認も忘れずに。

かおりん

かおりん

あっ、定期実行する設定のプログラミングを忘れておりました! Linuxおなじみcron(ジョブ・スクリプトなどを自動実行するためのデーモンプロセス)を使用して『new cron』として記述しまして、1分ごとに実行するという設定をいたしました。

スクリプトを定期実行するためのコマンドを入力している場面の画像
【cron入力】
定期実行コマンドを記述完了した場面の画像
【new cronの記述完了】
てもし

てもし

1分ごとに濃度計をチェックして、その時の値に応じた「アラートを鳴らして、設定した『条件の値』以下だった場合はアラートが鳴らない、ということでしょうか?

かおりん

かおりん

そうですね。

てもし

てもし

なるほど。かなり仕組みを理解できました。

8.動作確認をしよう

てもし

てもし

ではここから動作チェックを行います!

しろ

しろ

どうなるかな?

かおりん

かおりん

今実行したところ、濃度が855ぐらいでしたので、軽く息を吹きかけたらアラートがなるかと思います。

てもし

てもし

(息を吹きかけ) ……これで実行をお願いします。

「そろそろ換気しませんか?」

しろ

しろ

普通の声ですね。

てもし

てもし

これは1000を超えたということで、濃度が少し高くなってしまいましたね。
ウィスパーボイスが聞きたいのですが(笑)

しろ

しろ

そうですね。

「はやく換気しやがれ、バカヤロウ!」

CO2濃度センサーを付けたティッシュケースが換気を促している場面の画像
【怒るティッシュケース】
てもし

てもし

怒られてしまいました(笑)
今怒られてしまったので、換気しないといけませんね。

かおりん

かおりん

かなり値が上がっていますね。箱を開けて、少し換気しましょうか。

てもし

てもし

良いですね。

「はやく換気しやがれ、バカヤロウ!」

てもし

てもし

ずっと怒っているので、まるで機嫌の悪いティッシュケースみたいですね(笑)

しろ

しろ

今のところ、動作確認はうまくいっていますね。

かおりん

かおりん

数値が下がってきたので、もう少しでcase2になりそうです。

「そろそろ換気しませんか?」

てもし

てもし

まあまあ機嫌が良くなってきましたね。数値も1150くらいということで、そろそろ怒らずにウィスパーボイスでささやいてくれるかな、と思うのですが。

しろ

しろ

確か、ささやき声は900以上1000以下でしたよね?

かおりん

かおりん

かなりレアですね(笑)

てもし

てもし

ウィスパーボイスの設定範囲が狭いことと、ささやき声のため聞こえにくい、ということでレアボイスになりました。ここまでで一通りの動作確認をしまして、実際に測定したCO2濃度の上下で音が鳴ることが確認できました。CO2濃度を測れるIoTのティッシュケース、完成です!

しろ

しろ

素晴らしい!

てもし

てもし

こうやって、パパッと作っていただけましたし、音は別としても、この機能があるIoT機器はあると便利だなと思いますね。今のご時世「そろそろ換気しないと」というのが分かるだけでも便利ですし、自宅で自作できるのも楽しいです。
前回、やりがいなどのお話を聞かせていただきましたが、気持ちがすごく分かった気がしました!

まとめ

今回は『IoTグッズを作ろう!』ということで、ティッシュケースをIoT化した『CO2濃度センサー』を作成し、動作確認するまでの流れを紹介・解説してきました。
センサーやRaspberry Pi本体を接続するピンは、裏面やピンの近くに記載が有るものと無いものがあるとのことでした。接続する際は「ピンアサイン」と検索して、どのピンが何に対応しているかを確認する必要があるようです。
音声をアラート音として使用するには、ファイル名や拡張子の変更や、プログラミングを行う必要があるそうです。プログラミングにはPythonを使用するとのことで、アラートの条件の値や、定期実行する記述などを行うことで濃度を計測し、設定した値の場合にアラートが鳴る、という設定ができるそうです。
換気のタイミングが分かるだけでも便利なアイテムですが、自宅で自作も可能のようです。興味のある方は、試してみてはいかがでしょうか?

未経験からでもITエンジニアになることは可能です。セラクでは未経験からでも約1.5か月の研修を通じて活躍しているエンジニアが多数在籍します。
少しでもご興味を持っていただけたら、ぜひ、セラクにご応募ください。まずは面談でのお話をすることも可能です。お気軽にご相談ください。

IT業界に挑戦したい23年卒の方、私たちの仲間になりませんか?
【会社選びは、仲間探しだ】IT業界に挑戦したい23年卒の方、私たちの仲間になりませんか?
株式会社セラク 開く