IoT記事を書いてみた感想と今後に向けて


# はじめに
せっかくなので今までに作成したIoT関係技術を整理したいと思い3記事書きました。自己満足になりますが、それぞれやったことや感想, 今後の展望を書いていきたいと思います。


# 書いた記事
今月は下記の記事を書きました。
## Raspberry Pi

https://qiita.com/f-mio/items/0b3ba18cda62c0645e58

https://qiita.com/f-mio/items/2e90ef7761fb77dff2b0

## M5Stack系

https://qiita.com/f-mio/items/c184509b8030336e2881


# Raspberry Pi重量計

## 経緯
記事でも少し触れましたが、友人が会社内のDX担当になったとのことでIT教えて欲しいということがきっかけです。
いくつか話を聞いている中で、「製造現場の廃棄物管理で紙データが多く集計に時間がかかっている」ことがIoTの取り組みで面白そうと考えました。また、過去に自分がSFAに携わった経験から、このような場合、上位職の方が現場の状況がわからないという問題が生じることが多くあります。こういったものを可視化し、関係するすべての人がデータを確認できるインフラが必要が必要と思い手をつけようと考えました。
そのための【測って登録する】部分を担うシステムを試作したというものです。

## 検証時期
- 企画：2022.10月〜11月
- 制作：
　ラズパイ電子工作　：　2022.12月
　Webアプリ制作　：　2023.3〜4月

## 制作エピソード 〜工作編〜
### 部品の購入
まず、何はともあれ部品がないと測ることができません。購入をまず第一に始めました。
多くの重量計内部はロードセル(歪みゲージを鉄の棒に貼ったもの)を使った仕組みで動いていることを知っていたので、シングルビーム型のロードセルを購入しました。また、アナログデータをデジタルに変更してラズパイに送る機器が必要のようでしたので、ADコンバータHX711を購入しました。

![重量測定部材一式.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/68f8fdd5-ad2c-a330-c457-eed1034605a6.jpeg)

### 技術調査
正直、電子回路はまったくわかりません。ですので、この部分は既存の仕組みを使わせていただくことで形にしようと考えました。
なので、既存コードおよび接続方法調査を行いました。結果として、[記事内のリンク記事](https://qiita.com/f-mio/items/0b3ba18cda62c0645e58#%E5%8F%82%E8%80%83%E8%B3%87%E6%96%99)に辿り着き、無事に配線と測定ができました。


### プロトタイプの作成
その後、HX711用の半田付けや、記事を参考に配線しました。半田で結構加熱してしまったので、HX711が正常に動くか心配でしたが、なんとか動いてよかったです。換算していない値ではありますが、自分が組み立てたものから数値が出力された時は感動しました。

![重量測定プロトタイプ.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/987dfa7c-e924-3e4d-3f1c-62acf24f9951.jpeg)

![キッチンスケール分解中.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/0a376263-ff1b-aaae-c720-97a7b0c7cc77.jpeg)

![キッチンスケール分解後.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/bfed66d3-99f8-06fa-f757-8f4b0b484052.jpeg)
赤黒白緑のコードですが、かなり細いので、電線を傷つけずに被覆されているプラスチックを剥ぐのに苦戦。

### 重量測定プログラムの編集
重量測定プログラムの、重量への測定値換算方法を変更し、測定した値をテキストファイルに保存する仕組みへ変更。

## 制作エピソード　〜Webアプリ〜
### 技術選定
主にPythonを使っているので、それに合う軽量なフレームワークとしてFlaskを使用しました。
また、ORMのSQL Alchemyが気になっていたので、せっかくなので触ってみることに。(のちに使用方法がわからず苦戦)

### アプリ制作
空き時間に趣味で少しずつ作っていきましたが、ページ作成自体は特に問題なかったです。知人にどういったものが見やすいか聞いて、若干調整したくらいだったと思います。

### 重量計とアプリ機能の連携方法
ここも記事に書いていたのですが、最後まで結構悩みました。
最悪、DB(SQLiteくらいでいい)を立てて、それを介して連携しようとは思いましたが、このレベルでそこまで負荷をかけたくないと思い、悶々としていました。ぼーっ、とシャワーを浴びている時に、テキストファイル使えば楽じゃね？、と思いつき、それをそのまま実装した形です。(一旦、すべてを忘れてリセットするの重要だと思いました)
・・・まあ、SQLiteならファイルとそんなに変わらないのかもしれないですけど。

## 作ってみた感想
一言で言うとやってみてよかったとすごく思いました。
自分の満足感も一つですが、他の人からの反応が良いことも理由の一つです。仕事柄、初めて会う人と喋ることが多いのですが、製造業でIoTに興味ある方にこれを見せると結構評判がいいです。「こういうのやってみたい」というお声もいただいたことがありました。今では自己紹介の一部や、IoTで実施できることのイメージを持ってもらうために見せる動画として使っています。
ただ、肝心の友人の方でPoCできていないのでそこが少し残念。(仕組みがわからないから使いにくいのだそうです...)　こちらは絶賛フォロー中。

## (補足) Raspberry Piをちょっと触ってみようと思ったら
こちらは約2年前の記事でアップデートできておりませんが、よろしければ見てください。
初期の環境設定方法およびOpenCVインストールと顔検出プログラム作成を行っています。
(今のRaspberry Piでは初期ユーザpiが削除されたらしいので若干違うかも...)

https://qiita.com/f-mio/items/03f4727a2630a728f5bd




# M5Stack系

## 経緯
別の方から[M5 Stick C plus](https://docs.m5stack.com/ja/core/m5stickc_plus)を教えていただけました。その方はこれを使って機械の状態監視等を行なっているとの話を聞きました。
WiFi内蔵で、多種多様なセンサーが準備されて、さらにソースコードまで公式が準備している。最後の一押しで、4000円前後で制御器であるM5 Stick C plusが購入できるという、マストバイアイテムです。
自分でもやってみようと思い作り始めた、というものです。
また、あるクラウドサービスで可視化はしているが、今よりサービス拡大を行うと課金が発生するとのことで可視化ツールを探している、という話もあり、せっかくだからBIツールを触ってみようというモチベーションもありました。

## 検証時期
2023.5月〜2023.7月ごろ

## 制作エピソード
### M5使用方法の習得
まずはセンサー購入と環境構築を行いました。照度センサーや人感(パッシブIR)センサー等を購入して試してみました。Arduino言語がわからず苦戦した記憶。

![検証1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/49798f94-eb54-b897-db4f-595b7b9c984d.jpeg)

![検証2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/dd1aa66f-e8a8-c2dc-c910-e9b3aa559807.jpeg)

![検証3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/7ad53cea-cb43-4b22-e27c-af24791d5ce8.jpeg)


### 通信の学習
IoTではMQTTがよく使われているようなのですが、そもそもMQTTが何かを調べたりしました。
その後、OSSのEclipse Mosquittoを知り、公式サイトのDockerを使って動かしてみました。

### DB
この部分は、普段から触っているのであまり苦戦せず。(業務ではないので) 超甘々セキュリティでサクッと立ち上げて検証開始しました。
はじめに拘り過ぎないことが重要です。一回サクッと作ってみたほうがイメージ掴みやすいです。

### システムとして
M5プログラミングで行う場合のMQTTに載せるjsonデータで結構エラー出した記憶があります。
たとえば、【'2023/10/14 19:11:22】(シングルクォートが抜けている)となってしまったり。本題とは逸れますが、プログラミングの可読性は重要と改めて感じたタイミングでした。
ちなみに、エディタからM5へのアップロードから1分くらいあるので地味にエラー出るとテンションが下がります...
それ以外は機器やサービス単位ではうまく動いていたので、システムとしては苦労した部分は上記の凡ミス以外はあまりなかった記憶。

### 可視化について
PowerBI使ったのですが、これが一番悩んだ記憶...
今後も悩みそう...

## 感想
こちらもやってよかったと感じました。
MQTT Broker構築を通じて内容を少し理解することができました。また、可視化まで含めた記事を書いたことによって、システムの全体像を意識するという訓練につながったように思います。(少ないかもしれないが誰かの役に立ったと思う)
必要な情報を可視化することで、問題の見える化や他の方へのスムーズな説明に繋げられると思います。必要に応じて可視化まで含めたシステム提案をできるようになると強いエンジニアになれそうな気がします。


# 今後の私のIoT活動について

## 現在感じている課題感
### キーワード
- 電子回路
- MQTT学習
- セキュリティ

### 次アクション
IoTを触っている中で、一番課題に思っている部分は電子回路の知識がないこと、と思っています。
この部分はRaspberry Piを使って、いろいろなセンサーで遊んでいって身につけていきたいと考えています。
あとは、MQTT理解が浅く、Eclipse Mosquittoのメソッド等も理解できていない。セキュリティともつながるところですが、この辺りの理解も並行して進めていきたい。


### 気になっているセンサー
加速度センサー、マイク、臭気センサー、CO2センサー、RFID用センサー

<details><summary>ちょっとやってみたいこと</summary>

RFID使って、

　　<b>【誰得？勤務管理システム】</b>

を作ってみるのもおもしろそう、と思っています。
既存のサービスが多いから、本当に誰得なんだよ、って感じですが。
ちなみに、今は初期のER図作成を少ししたところで止まっています。

</details>


## 2024年に向けて
### 全体
継続して学習していきたいと思います。特に電子回路部分。

また、インフラ構築の後のイメージを作っていきたいです。
インフラ構築の後には、可視化してデータを分析し、改善等を進めていくステップがあります。(このあたりの話は、[IBMさんのページ](https://www.ibm.com/blogs/solutions/jp-ja/iot-4steps/)が参考になります)
インフラ構築できても、その時点ではただのデータが集まっているだけです。データは、分析を通じて価値のある情報に加工しないと意味がないと思います。こういった自分の中の正解ルートを探していく活動も初めていきたい。

### Raspberry Pi重量計
重量計システムのインフラ部分ができたので、これを可視化するシステムがほしいところ。本来ならBIツールで対応したいのですが、自分の勉強という側面が強いのでDjangoとChart.jsを使って作成しています。動作自体は[こんなイメージ](https://drive.google.com/file/d/1rXDEaxY_SONl4M41dKjC0IB4Y0RgFIZb/view?usp=drive_link) (作成中のもの)です。


### M5 Stick C plusについて
照度測定はPoCをやっていきたい。

M5全体に話を戻す。
PoC用途でサクッと使うのには向いていると思う。ただ、複数のものを組み合わせたりするには少し不安が残るので、メインはラズパイにしたい。(M5にはポートハブというものがありセンサー接続数は増やすことはできますが、後述の理由もあり少しM5から離れたい)
あと、簡単に作れてしまうので、あまり考えないのが心配。M5はPoCと遊び用と割り切って、ラズパイの学習を進めようかな、と考えています。

## (補足)そもそもIoTで商売できるか？
結論できると思います。
ただ、技術力よりもコミュニケーション力が強く要求される印象。
【困っている人を見つける】と、【プロジェクトとして立ち上げ、巻き込みながら進める】ことでしょうか。
特に、(当たり前なのですが)お客さんが何をすることでビジネスが前進するか、という視点を持たないとビジネスとして進展しないです。IoTは、「やったほうがいい」というのは誰でも思うところですが、自分の仕事をIoTで進化させるイメージを持っている方はあまり多くない印象。(イメージ持っていたらやっていると思いますし)
必要なのは、実装と測定結果に対してどうやって動いて改善していくかを説明して実現していく力なのかな、と思っています。


以上