siroitori0413のアイコン画像
siroitori0413 2021年02月27日作成 (2021年12月20日更新)
製作品 製作品 閲覧数 1412
siroitori0413 2021年02月27日作成 (2021年12月20日更新) 製作品 製作品 閲覧数 1412

小4理科学校教材の車を前進・停止をリモート操作可能にする

小4理科学校教材の車を前進・停止をリモート操作可能にする

小学校の理科教材のモーターで走る車をラジコンにする

息子が貰ってきた小学校の理科教材のモーターで前進走行する車です。
スイッチを付けたら走り続ける仕様となっていますが、これを改造して前進・停止がリモート操作できるようにしようと思いました。

キャプションを入力できます

材料

  • 小4理科教材 ダイワ 電気と光F型(電源を入れたらモーターで前進する簡単な車であれば何でも良いと思います) × 1個
  • M5StickC× 1個
  • リレーモジュール× 1個

作り方

リレーモジュールとM5StickCの接続は以下のように接続します。

そしてリレーモジュールを理科教材のスイッチ(写真の黄色いパーツ)に繋がってた部分に差し替えます。スイッチに差し替える向きはどちらの向きでも大丈夫です。

車とリレーモジュールの接続

連結車両をLEGOで作りました。

キャプションを入力できます

キャプションを入力できます

プログラム

Arduino IDEでM5StickCに以下のコードを書きこみます。

#include <M5StickC.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>
#include "time.h"
 
const char *ssid = "M5StickCtrl";
const char *password = "";

bool CurrentValue = false;
 
WiFiServer server(80);
 
RTC_TimeTypeDef RTC_TimeStruct;
RTC_DateTypeDef RTC_DateStruct;
 
int lastDrawTime = 0;
 
void setup() {
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
 
  M5.Lcd.setTextSize(1);
  M5.Lcd.setCursor(0, 10);

  pinMode(26,OUTPUT);
 
  Serial.println("Configuring access point...");
 
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.begin();
 
  M5.Lcd.println("Connect:");
  M5.Lcd.println(ssid);
  M5.Lcd.println("Enter:");
  M5.Lcd.println(myIP);
  delay(1000);
  M5.Lcd.qrcode(myIP.toString(),
    80, 0, 80, 15);
}
 
void loop() {
  WiFiClient client = server.available();
 
  if (client) {
    Serial.println("Client Connected.");
    String currentLine = "";
    
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html; charset=utf-8;");
            client.println();
  
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");
            client.println("<head>");
            client.println("<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />");
            client.println("</head>");
  
            client.println("<body>");
            client.println("<form method=\"get\">");
  
            client.println(String("<input name=\"control\" type=\"text\" value=\"") + (String(!CurrentValue ? "On" : "Off")) + (String("\" style=\"display:none;\" \\>")));
  
            client.println(String("<button type=\"submit\">Turn ") + String(!CurrentValue ? "On" : "Off") + String("</button>"));
  
            client.println("</form>");
            client.println("</body>");
            client.println("</html>");
  
            Serial.println("html Rendering");
  
            break;
          } else if (currentLine.indexOf("GET /?") == 0) {
            int pos1 = 0;
            int pos2 = 0;
            String val = "";

            pos1 = currentLine.indexOf('control=', pos2);
            pos2 = currentLine.indexOf(' ', pos1);
            val = currentLine.substring(pos1 + 1, pos2);
            if (val == "On") {
              CurrentValue = true;
            } else {
              CurrentValue = false;
            }

            if (CurrentValue) {
              digitalWrite(26,HIGH);
            } else {
              digitalWrite(26,LOW);
            }

            client.println("HTTP/1.1 302 Request Succsessful");
            client.println("Location: /");
            client.println();
            client.println("Request was succsessful. redirect to <a href=\"/\"> here. </a>");
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
 
    client.stop();
    Serial.println("Client Disconnected.");
  }
}

実行する

上記プログラム書き込み後、M5StickCの画面にQRコードが表示されると思います。

まず、リモコン操作したい端末(スマホ/PC)から、WiFiの設定で「M5StickCtrl」というSSIDが登場しているはずなのでここにつなぎます。そのとき、4G回線とかに接続しているスマホなどであればそれもいったんオフ(機内モードなど)にしておいた方が良いみたいです。

キャプションを入力できます

その後、M5StickCの画面上のQRコードを読み取るか、リモコン操作したい端末のブラウザにIPアドレスをURLとして入力します。

キャプションを入力できます

上記の画面が出たらOKです。
「Turn On」を押すと、ラジコンカーが前進します。
ボタンの表記が「Turn Off」に変わり、そのボタンを押すと停止します。

ここに動画が表示されます

siroitori0413のアイコン画像
https://siroitori.hatenablog.com/
ログインしてコメントを投稿する