【Arduino+Raspberry PiでIoT】中国で電子工作大会に参加した感想

Arduino

どうも電☆砲です。

今回は会社の同僚に誘われて参加した 第6回海峡两岸青少年创客大赛(電子工作大会の名前)について、参加するまでに準備した材料やプログラム、当日の会場の雰囲気、大会の結果等々についてまとめたいと思います。

背景

そもそもなぜ私のような電子機器に疎い人間が会社の同僚に参加を誘われたのかというと、彼女曰く

我们的儿子和他同学想参加,但是参加小组人员至少要3个人。你是高材生,所以我想到你了!(私の息子とその友達が参加したいんだけど、最低参加人数が3人であと一人足りない。あなたは秀才だから、あなたを誘うことを思い至ったのよ!)

とのことだそうだ😂
要するに、おおざっぱに言って人数埋め合わせである。

彼女曰く、とりあえず3人とも別々に事前にテーマを決めて、決まったら一緒に顔合わせして、どのテーマでいくかを話し合って決めようとのこと。
私は日本でもこのような電子工作の大会に参加したことはなかったし、電子工作自体にもあまり興味を持っていなかった。しかし、今回この同僚のお誘いを断らずに参加したのには理由があった。それは、

  1. 参加することで、電子工作大会を通じて、中国の文化に触れられる
  2. 参加することで、同僚やその子供たち(高校生)と会話でき、色々学びがありそう
  3. 参加前の事前準備段階で、自分自身の電子工作やプログラミングに関する知識を増やせる

という目的意識を持っていたからだ。とりわけ、3つ目の目的意識は非常に高く、これが決め手となって参加したといっても過言ではない。

私は同僚からこの大会への参加を誘われた時から、心の中に作ろうと決めていたものがあった。それは、、、

自動浄水システム(自动净水系统)

である。
どんな浄水システムかというと、このシステム全体は以下から構成される。

  • 濾過フィルター装置
  • 各種電子部品やセンサー(モーター、ポンプ、リレーモジュール、液晶、ブザー、濁度センサー)
  • Arduino Uno R3(センサー制御用)
  • Raspberry Pi 4B(クラウド通信用)

システム全体像のイメージは以下の画像のような感じ(最初はもっと漠然としたものだったが、以下の画像は大会前日の最終修正後の提出用スライドの一部)。

自动净水系统概观

フローチャートはおおよそ以下

自动净水系统流程图

のような感じで、まず泥水から濁度センサーを通して濁度を読み取り、濁度がある値(しきい値)以上であればリレーモジュールを通してモーターを駆動して、ポンプを通って泥水をくみ上げ、濾過フィルター装置に投入する。濾過フィルター装置を通って出てきた濾過水は再び泥水のなかに滴下され、システムは濁度がしきい値以下になるまでこれを繰り返す。この間、液晶には現時点の濁度がリアルタイム表示される。濁度センサーの値がしきい値以下になったら、リレーモジュールの駆動を停め、ブザーを一定時間鳴らし、濁度値と浄水完了フラグをArduinoからラズパイに送信する。
ラズパイ側ではサーバーを立ち上げ、Wechatからのユーザーリクエストを監視する。ユーザーリクエストが来たら、そのリクエストに沿った情報をArduinoから読み取り(例:現時点の濁度値)、ユーザーにWechat上で返信する。

これぞまさにIoTである!
我ながらかなり面白いIoTシステムを作ったなと、このときマジで思った。

でも、このままだと同僚の息子とその友達の出番がなくなるのでは??とこのとき思った。これでは私の独壇場になってしまい、本来のグループでの参加の意義がなくなってしまうのでは?と思った。そこで、濾過フィルター装置に関しては、私ではなく彼ら2人に任せることにした。

そして、顔合わせ当日。

会社の同僚とその息子、友達の3人に合って、スライドを見せながら私の案について説明をした。システム側(プログラミング)は私が責任を負うので、濾過フィルター装置は2人で作ってほしい、と。2人とも私の説明を理解して、最終的に納得してくれた。
こうして我々グループの創作テーマが決まり、3人で作業を分担することとなったのである(続く)。。。

大会参加の流れ

↑あまり文章慣れしていないせいで、自然と小説っぽい口調になってしまっていました、すみませんでした🙇‍♂️

…では、話を本題に戻します。

この電子工作の大会参加の流れですが、とりあえずざっくりと以下のような感じです。

  • こちら からQRコードをスキャンして、Wechatグループに参加
    ⇒ 事前参加説明会にオンラインで参加して、物資調達リストに必要な物資を記入
    ⇒ 大会当日まで創作物に関するPPT資料を提出
    ⇒ 当日1日目は、午前・午後それぞれ1回オンライン会議にログインして、点呼をとる(グループ内全員点呼とる)
    ⇒ 当日2日目は、午前は発表リハーサル、午後はオンライン上で3分間(2分発表、1分質疑応答)の発表、午後5時頃結果発表

びっくりしたのが、大会で使う物資は事前にこちらで用意しなくても、大会運営側で買って配布してくれるとのこと(無料です!)。私はArduinoやブザーを申請しましたが、全部無料で手に入りました。いや~、太っ腹ですね。
といっても、私は事前に接続確認や動作確認を早めにやっておきたかったので、自分で別で買って用意していましたので、これらは使いませんでしたが。

次にびっくりしたのは、大会参加や創作物のプレゼンがすべてオンライン上で進行したということ。
運営側のオンラインシステムは 腾讯会议 を使っていました。事前参加説明会の後、その様子を録画していた動画は、字幕が自動で付与され、その後クラウドにアップロードされ、誰でも閲覧できるようになっていました。
いや~、この大会コロナ対策万全ですねぇ(日本の電子工作大会とかも、今はこんな感じでオンライン進行してるんでしょうか?)。

私が作ったものと周辺装置の紹介

肝心の創作物についてですが、私のグループの創作物は上記で説明したように 自動浄水システム です。システムは Arduino Uno R3Raspberry Pi 4B を用いて構築しました。
私は、Arduinoは淘宝(タオバオ)で、ラズパイ4Bは京东(ジンドン)で買いました。今回は配達の速さと価格を重視してショップを選びました。

で、当日完成した自動浄水装置がこちらです!↓

自动净水系统_实物照片01

自动净水系统_实物照片02

文字がかなり小さくなって見づらくなってしまいました。。。🙇‍♂️
詳しい説明動画を撮影していなかったので分かりづらいのですが、この自動浄水システムの操作方法としては、Wechat上から事前に 微信公众号平台 で設定しておいた公众号に、以下のメッセージを送信すると、自動で浄水システムの現在の状況(水の濁度、浄水の進捗(自動終了まであと〇〇%)、稼働/停止の状態、(稼働中の場合)開始からの経過時刻)を返してくれます。
微信公众号平台とは自分のアカウントでログインすると以下のような画面が現れます。今回の件で初めてこんかことができるんだと知り、とても勉強になりました。

微信公众号平台01

自分でプログラミングしていて思いましたが、これってIoT分野ではかなり応用利きそうかつ便利だと思います。
というのも、Wechatは中国人にとっては今やなくてはならない日常の一部(日本でいうLine)となっており、このWechatを通じて、いろんなDIY機器が機器が操作できるようになったり、機器上で何かイベントが発生したらそれを自動でWechat上に通知してくれたりできれば、結構便利だと思うんですよね。

技術的な内容に関しても、ざっくりと触れておきましょう。

ちなみに、今回の大会で使用したソースコードや事前の動作確認用コードは、すべて GitHubのレポジトリ にアップロードしておきましたので、Arduino+Raspberry PiでI2C通信を利用したIoTをやってみたい、など興味のある方はご参考になってください。

濾過フィルター装置

これに関しては至ってシンプルで、上から丸石、砂利(中)、砂利(小)、砂、ヤシの木の乾燥樹皮、砕いた活性炭、布(上から下に従って粒度が徐々に小さくなっていく)から構成されています。以下に濾過フィルタ装置の材料と実物写真も載せておきますね。

濾過装置の材料

濾過装置の写真

ほんとはここでもっと何か創造性のある工夫ができたらよかったのかな~なんて、大会後に思いましたが、難しそう。やっぱテーマ設定ミスった感がありますねぇ。。。

モーター&ポンプ

タオバオで買いそろえました(20元)。

リレーモジュール

モーターを制御するために使用します。これはモーター&ポンプを買った際にセットで付いてきました。
リレーモジュールの原理に関して、リレーでON (1) Arduino UNO を参考にさせていただきました。

半固定抵抗

ポンプで吸い上げる水量(ポンプの電圧)を調整するために使用します。同じくタオバオで買いました(約0.5元)。
半抵抗値の原理と使い方に関して、半固定抵抗の使い方半固定抵抗器の基礎知識 を参考にさせていただきました。

液晶

濁度を表示するために使用します。同じくタオバオで買いました(12元)。
私は Arduino 入門 Lesson 16 【LCD モジュール編】 を参考にしながら、Arduinoスケッチを作成しました。

ブザー

浄水完了時に音を鳴らすために使用します。同じくタオバオで買いました(2元)。

濁度センサー

濁度を検出するために使用します。同じくタオバオで買いました(45元)。
タオバオなら、基本的な小さい電子センサー類は何でも売っているようです、超便利😌

Arduino Uno R3ととRaspberry Pi 4Bの接続

正直、Arduinoなしで、ラズパイだけでセンサー系の制御もやろうと思えばできるんですが、今回それぞれ「センサー制御系」と「クラウド通信系」で分けた理由としては、将来的にもし機能を拡張する場合、例えばもっと多くのセンサーや外部通信を追加しようとする場合、ラズパイだけだと情報処理量が多すぎる気がするんですよね。。。
「センサー制御系」はArduinoに任せて、「クラウド通信系」はラズパイに任せれば、処理系の切り分けがはっきりして結構スッキリしませんか??
今回私はArduinoとラズパイをI2C通信で接続させましたが、ラズパイ(Raspberry Pi)とArduinoをI2Cで接続【基本編】 ラズパイからPythonのSMBusモジュールを使ってArduinoにデータを送信しようRaspberry Pi ArduinoをADコンバータとして使う(I2C)Node.jsでraspberry piのハードウェアを叩く7つの方法 といったサイトを参考にさせていただきました。

ラズパイにクラウドサーバーを立ち上げて、Wechatからのユーザーリクエストを監視

これを行うために、7億人以上に利用されているWeChatのbotを作る〜チャットボット編〜node-webot/wechatローカルで起動したサーバーを簡単に外部公開できるngrokと活用方法 を参考にさせていただきました。
Wechatボットの設定や各種機能に関しては、微信公众号平台 から設定しました。

大会の結果発表

さて、皆さんお待ちかね、大会の結果発表のお時間がやってまいりました👏👏

その結果は、、、なんと、、、

5組中第5位

でした😂
今までの記事の中に伏線(ここここ)を張っておりましたが、気づきましたでしょうか😂

…何はともあれ、そんなこんなで大会終了後、同僚の家にお邪魔になり、最下位で吃鸡(中国語のネットスラングで、一般にはゲームで優勝することを指すが、今回は最下位だったことと大会後に同僚と火鍋で鶏を食べた(吃鸡)ので、これらを掛けている)させていただきました。
いや~、火鍋うまかったっすね。

まとめ

大会前2種間くらい、マジで本気になってプログラミンしたり、電子工作したりしてました。でもそのおかげで、色々な知識が身に付いたのは事実です。
非常に充実した2週間でした。また、グループの皆とも楽しくやれたので、よかったかなと思います。

(おまけ1)電子機器関連の知識と工具が増えた話

今回の件で、以下の電子工作には必要不可欠なものたちをタオバオやジンドンで購入しましたが、中華系ECサイトってこんな安いんですねぇ、びっくりしました。

万能ドライバー(約450円)

テスター(約2,000円)

試しにAmazonでも似たようなスペックのを調べてみたのですが、以下のような感じ。

KAIWEETS テスター 6000カウント デジタルマルチメータ AC|DC電流 AC|DC電圧 真の実効値 オートレンジ 導通・温度・静電容量・抵抗・ダイオード・周波数・抵抗・NCV非接続電圧測定+Liveライン測定 日本語説明書付き(HT118A)(割引後3,299円)

JK6088A 38in1特殊ドライバーセット トルクス ヘクスローブ 六角棒 Y型 三角ネジ 五角 ペンタローブ プラス マイナス iphone5 アイフォン ハッピーセット コンパクト(割引後664円)

中華系サイトの方が日本のAmazonよりも単価が安くなっています。これは電子工具に限ったことではなく、日用品や食べ物など、基本的にすべて中国の方が日本よりも安いです。
しかも、中華系サイトで購入すると、配送スピードも速くて早ければ次の日に到着します。日本のAmazonの場合、1~2週間くらいかかった気がします。

商品単価だけでなく、配送スピードも中国の方がメリットあるなと感じる今日この頃でした。

(おまけ2)会場の当日の雰囲気

私の3人グループで集合写真もとりましたが、プライバシーとかありそうなので、とりあえず非公開で。
その代わりと言っては何ですが、当日の会場の写真を載せておきます。2枚目に写っている貴賓席の人が少ないですが、終わりころになったらちゃんと満席になってました。大会後に皆で打ち上げにでも行くんでしょうかねぇ。

比赛_点心

比赛_现场

参考

国际创客平台
Raspberry Piで水質測定(DO、pH、ORPなど)回路編
Raspberry Pi とリード線だけで漏水センサーを作る
Python+树莓派 实现微信拍照、摄相机器人
7億人以上に利用されているWeChatのbotを作る〜チャットボット編〜
node-webot/wechat
ローカルで起動したサーバーを簡単に外部公開できるngrokと活用方法
微信公众号平台
Arduino 入門 Lesson 16 【LCD モジュール編】
ラズパイ(Raspberry Pi)とArduinoをI2Cで接続【基本編】 ラズパイからPythonのSMBusモジュールを使ってArduinoにデータを送信しよう
Raspberry Pi ArduinoをADコンバータとして使う(I2C)
Node.jsでraspberry piのハードウェアを叩く7つの方法
半固定抵抗の使い方
半固定抵抗器の基礎知識
リレーでON (1) Arduino UNO
nodejs 监控微信公众号关注事件推送

タイトルとURLをコピーしました