💡

農系IoT勉強会#3 M5とリレーを使ってモータやLEDを制御してみよう

2024/07/08に公開

今回の目標

M5からリレーを制御して、モータを動かしてみよう
他のセンサーなどを使ってモータやLEDを制御してみよう
結果をLINEなどを使って管理しよう

リレーとは

OMRON HPより
https://components.omron.com/jp-ja/products/basic-knowledge/relays/basics

今回はM5Stack用ミニリレーユニットという製品を使います。
https://www.switch-science.com/products/4054
Groveコネクタに差すだけで使えるのでとても便利です。
M5から5Vの電圧をリレーに与えることでリレーが動きます。
NO(A接点:非通電時OFF、通電時ON)、NC(B接点:非通電時ON、通電時OFF)の2つの接点が用意されています。

さっそく動かしてみよう

ここではまずはM5からリレーを動かすところまでを実装してみます。
さっそくArduinoIDEを開きましょう。

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

「ツール」⇒「ライブラリを管理」⇒ M5Unifiedと検索してM5Unified.hをインストールします。

サンプルコードを動かしてみよう

M5にリレーをGroveコネクタで接続して下記のコードを実行してみましょう。

#include <M5AtomS3.h>

void setup() {
  M5.begin();
  M5.Lcd.setTextFont(2); // フォントサイズを設定
  M5.Lcd.setTextColor(YELLOW, BLACK); // 背景とテキストのカラーを設定
  pinMode(2, OUTPUT); // ピン2を出力モードに設定
}

void loop(void) {
  digitalWrite(2, HIGH); 
  M5.Lcd.fillScreen(BLACK); 
  M5.Lcd.setCursor(0, 0, 2);
  M5.Lcd.println("hi"); 
  delay(500); 

  digitalWrite(2, LOW); 
  M5.Lcd.fillScreen(BLACK); 
  M5.Lcd.setCursor(0, 0, 2); 
  M5.Lcd.println("lo"); 
  delay(500); 
}

ボタンでリレーを制御してみよう

今度はボタンを押すとリレーが動くように変更しましょう。
M5AtomS3は画面がボタンになっていてBtnAとして扱われます。
M5.update()で画面を一度更新してあげる必要があります。

今回はボタンが押されたらrelay_becomes_hi()を呼び出す形にプログラムを変更しました。
後半にセンサを使って・・・というお題の時にはM5.BtnA.wasClicked()の部分をセンサの情報に変えやすいように情報を整理しました。
relay_becomes_hi()を「関数」と呼びます。

#include <M5AtomS3.h>

void setup() {
  M5.begin();
  M5.Lcd.setTextFont(2); // フォントサイズを設定
  M5.Lcd.setTextColor(YELLOW, BLACK); // 背景とテキストのカラーを設定
  pinMode(2, OUTPUT); // ピン2を出力モードに設定
    M5.Lcd.println("Can you push Lcd?");
}

void loop(void) {
  M5.update();

  if (M5.BtnA.wasClicked())
  {
    M5.Lcd.fillScreen(BLACK); 
    M5.Lcd.println("Button A was clicked");
    relay_hi_to_low();
    M5.Lcd.println("Can you push Lcd?");
  }
}

void relay_hi_to_low(){ 
  digitalWrite(2, HIGH); 
  M5.Lcd.println("relay status is hi"); 
  delay(2000); 
  digitalWrite(2, LOW);  
  M5.Lcd.fillScreen(BLACK); 
  M5.Lcd.setCursor(0, 0, 2);
  M5.Lcd.println("relay status is low"); 
  }

モータなどを動かしてみよう

電源

今回使う電源は「安定化電源」と呼ばれる直流電源です。
https://amzn.asia/d/02Pvcygv
電圧を調整出来るものがホビー用には重宝すると思います。

他にも選択肢として下記がお手軽な電源として使われます。
ポータブルバッテリー
ポータブルバッテリは定電流すぎると電池の保護のために電源の供給と止めてしまいます。
定電流モードのあるバッテリーかおすすめはしませんが安全装置のないバッテリーでないとマイコンは動作しないことがあります。
https://amzn.asia/d/0cT8sB3O

電池ボックス
単3電池をいれて使うタイプが多いです。安価ですぐに試すことができます。
アルカリ電池で500mAh程度の容量です。
https://amzn.asia/d/09uCp5EW

配線


動作確認

配線が正しく出来ているか確認をして
マイコンの電源、安定化電源の電源を入れ、モータを動かしてみましょう。
思った通りに動作しましたか??

センサを使って動きを制御しよう

ここからは自分の好きなセンサを使ってモータのONOFF制御をしてみましょう。
この記事では勉強会#1,#2で使用した温湿度センサの温度の値をトリガーにモータを動かすことを目標にコードを書いていきます。

配線

M5AtomS3には1口しかGroveコネクタのポートがありません。
温湿度センサは上からG39.G38.G.5Vと書いてある、AtomS3の裏側の4つの端子を使いましょう。
コネクタの順番のまま差し込めばOKです。

コード

次のコードはセンサの温度が30度以上になったらモータを回すようなコードの例です。

https://github.com/nono112002/IoT_workshops_for_agriculture/blob/main/Controlling relays with sh4

LINEで動きを管理しよう

↓こちらの記事を参考にモータのON、OFFをLINEに通知してみてください。
wifiの設定も忘れずに。
https://zenn.dev/tokuiten_dev/articles/0747e32abfa71e

Discussion