11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PERSOL CROSS TECHNOLOGYAdvent Calendar 2024

Day 4

ESP32で上司に「たすけて」っていうシステムを作りたかった話

Last updated at Posted at 2024-12-03

はじめに

はじめまして。深夜のノリでAdvent Calenderに登録してしまった新人エンジニアです。
9月に入社し、まだ3か月と少ししか経っていません。
現在フルリモートで働いています。
メンバーとのコミュニケーションもぼちぼち取れてきたかな…という状況です。

だったのですが、今投稿します。 現在無事2年目に突入しました!!

ということでこの記事はAdvent Calender2022改め
PERSOL CROSS TECHNOLOGY Advent Calendar 2024です。
素敵な先輩たちがいっぱい記事を書いてくれているので、ぜひ読んでください!
https://qiita.com/advent-calendar/2024/persolcrosstechnology


そんな私ですが、大きな悩みがあります。
それは、「うわ!!!困った!!!助けてマネージャー!!!」 という際に
「でもスケジュール見たらすごい忙しそう…急に連絡するの、迷惑かな……。」とか、
「まだ気軽に助けてって言いにくいな……。」とか考えてしまい、
連絡するのに二の足を踏んでしまっていることです。(2022年時)
困っているということを言い出せないけど気づいてほしい……。

そこで閃きました。

言わなくても困ってるってことが伝わればな……。
そういえばサーバールームとかエラー起きたときにパトランプ光ってるよな……。
image.png
こういうの



あ!!!!!!!



ボタンをポチっとしたらランプ光らせるやつ作って上司のデスクに置いてもらお!!!
リモートワークでも気づいてもらえるじゃん!!

やっていきます。

やりたいこと

わたし「わーーーーー困った!!!!!!!」

スイッチぽち

:rotating_light:ペカー

マネージャー「うわー!!なんか光っとる!!」

用意したもの

ESP32(というかM5Stack)

ESP32初心者なのでM5Stackを使います。

M5Stack(エムファイブスタック)は、約5cm×5cmの正方形のケースの中にWi-FiとBluetoothによる無線通信機能を備えたCPU(ESP32)をはじめ、カラー液晶ディスプレイ・プッシュボタン・スピーカ・microSDカードスロット・バッテリーなどの周辺部品がひとつのモジュールにまとまっている、小型のマイコンモジュールです。
IoT機器を開発する際に頻繁に使われる機能が上述のように標準搭載されているため、液晶ディスプレイやmicroSDカードスロットなどを使うためにわざわざ配線をする必要がなく、ハードウェア開発の手間が大幅に削減され、ソフトウェア開発に専念することができる汎用性の高さから人気が高まっています。

今回はSwitch ScienceのATOM Liteを使用します。

1500円、やっすい

リレーユニット

リレーモジュールなんもわからん!となったのでリレーユニットを購入。
「M5Stack リレーユニット」で検索してヒットしたこちらを使用。
image.png

ジャンプワイヤとブレッドボード

具体的な製品名を覚えていないのですがこんなやつを買いました。
image.png

ランプ

Amazonでなんかいい感じのやつを買います。

環境構築

エディタ

Arduino IDE(2.0.3)を使用します。

image.png

入った!あとはM5 Stackと繋げたらいいんだよね、楽~!!
……あれ?

USBに挿しても認識されない

image.png
ここに出てくるって聞いたんだけど出てないな……?

スクリーンショット 2022-12-08 092318.png
ドライバーがないのか。
じゃあドライバーをインストールしよう!

image.png
調べたらCP210x_VCP_Windowsってやつらしいな、インストール!

スクリーンショット 2022-12-08 092318.png
:thinking:

スクリーンショット 2022-12-08 093006.png
スクリーンショット 2022-12-08 093506.png

IoT自信おじさんお兄さんたちありがとう
この記事はこのお兄さんたちに支えられてできています
なお2022年時点でいたこのお兄さんたちは今ほぼいません。

教えてもらったのがこのサイト。
私が使うATOM Liteは「FTDI Drivers」というやつが必要らしく…
ここからインストールできます。

インストール後
image.png
なんか出た!合ってそうな気がする!

あとはボード。どれがいいのかわからず……。

こちらのサイトにお世話になりました。
image.png
たぶんこれかな?
image.png
できた!!!!!!

動確をする

とりあえずLチカをやってみよう!

ライブラリのインストール

Arduino IDEの「ツール」より「ライブラリを管理…」を選択し、ライブラリを追加します。
(と偉そうに言っていますが初めての開発なのでライブラリって何?と思っています)

 ライブラリは、センサやディスプレイ、モジュールなどとArduinoとの接続を容易にするためのコードの集合です。例えば、Arduinoソフトウェア付属のLiquidCrystalライブラリはLCDディスプレイの操作を容易にします。インターネット上にはダウンロード可能な追加ライブラリが多数存在します。付属のライブラリといくつかの追加ライブラリはLibrariesに載っています。追加のライブラリを利用するには、それらをインストールする必要があります。

image.png
「M5ATOM」と検索し、こちらのライブラリをインストールします。

image.png
「FastLED」はこれを使います。

いざLチカ

「ファイル」→「スケッチ例」→「M5Atom」→「Basics」→「LEDSet」
image.png
参考サイト:https://msr-r.net/atom-lite-setting/

trim.ADA279EB-5310-411B-933D-05BE2C3731C0.gif

動いた!!!!!!!!
ひとまずATOM LiteとArduino IDEの接続はちゃんとできました。
やっと半分というところ……。

工作

とても雑ですが今回の回路図はこちら。
画像1.png

ということでまずはランプの線を切ります。
image.png
抑えている場所が悪いのですが、ちょうど真ん中くらいで切断し、ランプ側とPC側の2本にしました。

外側がビニールで覆われているので、ペンチでいい感じに取ります。
image.png

と、黒い線と赤い線がでました。(回路図の黒と赤に対応してます)

これもビニールなので、また外側を取ります。
image.png

これ赤が成功パターンです。
後から「これどっちの線!?」となるので若干見えるように残しておきましょう……。

続いてジャンプワイヤも同じく切断し、銅線を出します。
ジャンプワイヤを使ってブレッドボードに繋げるためです。

銅線が出たら、ランプの銅線とよりよりして一本にします。
image.png
ジャンプワイヤと繋げるときに銅線長い方がよりよりしやすかったので多めにむき出しておくことをお勧めします。
image.png
はんだ付けじゃ~~~~~!!!!!!

image.png

へたくそか?つながったのでOKです。
このあとは、はんだ付けした部分をセロテープで保護し、
ブレッドボードにはんだ付けしたジャンプワイヤをさし、
ブレッドボードとリレーを未加工のジャンプワイヤで繋ぎます。
image.png

ブレッドボードはこんなかんじです。
image.png

これも有識者おじさんに教えてもらったのですが、
ブレッドボードの裏側をみるとこんな感じになっています。
image.png

上段と中段は縦に繋がっていて、下段は横に繋がっています。
image.png

同じ番号のラインに線をつないじゃうと回路がパーンとなるのでずらさないといけないみたいです。
こちらのサイトでとてもわかりやすく書いてくれています!
https://iot.keicode.com/electronics/what-is-breadboard.php

とりあえず回路ができているのか確認

image.png
普通にランプの電源をONにしてみます。
これで点かなかったらシンプルな回路ミスです。

image.png
点いた!ヨシ!!!!

コードを書こう

やっとコードを書くところにたどり着きました。
今回書いたコードはこちら。

// M5 Atomのライブラリをインポートする
#include <M5Atom.h>

#define RELAY_PIN1 32
#define RELAY_PIN2 26

//M5Stackが起動したとき1回だけ走る
void setup(){
  M5.begin();
  // リレー接続したピンを出力モードに変更
  pinMode(RELAY_PIN1,OUTPUT);
  // pinMode(RELAY_PIN2,OUTPUT);
  // リレーOFF
  digitalWrite(RELAY_PIN1,LOW);
  //digitalWrite(RELAY_PIN2,LOW);

}
// setupが終わり次第Loopに入る
void Loop(){
  // ボタンを押したらリレーをONにする
  if(M5.Btn.wasPressed()){
    digitalWrite(RELAY_PIN1,HIGH);
    // 1000ミリ秒待つ
    delay(1000);
  }
  // リレーOFF
  digitalWrite(RELAY_PIN1,Low);
  //ボタン操作の取得に必要
  M5.update();
}

初めてArduinoを使ったのですが、C/C++のような感じで書くんですね……。
ちなみに頻出するPINはこれのことです。
image.png

びっくりするくらい粗いのですが、白いコードがPIN1、黄色がPIN2です。

で、書いたコードを読み込ませる(Type-CでPCと接続する)と、完成です!

プレゼンテーション1.gif

完!!

はんせいかい

2022年のアドベントカレンダーに登録したはずが2024年のアドベントカレンダーに投稿されるというめちゃ時差投稿でした。ほんとうに申し訳ない。
今もリモートワークが続いているので、今度こそPower Automateを使って在宅の上司にアラートを飛ばすシステムを作りたいです。

11
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?