메이킹 아이디어

[메이킹 소재] 원격 신호 장치 (신의 한수)

  • -

 

 

 

얼마전 유튜브 알고리즘으로 약 10년 전 나온

신의 한수를 다시 보게되었습니다

그러다 의문점이 든 것이,,

 

영상에 나오는 저 원격 신호 및 조작 장치,, 진짜 만들 수 있는게 아닐까..?

 

 

 

https://www.youtube.com/watch?v=JKounENh5rw

 

 

 

그래서 이번에는 아이디어가 아니라 실제로 제작하면

얼마나 복잡할지 딱 이정도로 알아보겠습니다.

아래와 같은 구조로 굉장히 간단하게 진행된다고 생각해보겠습니다

 

 

 

 

오늘의 코딩은 전능한 Chatgpt님에게 한번 물어봤습니다.

 

 

신호를 보내는 쪽

#include <WiFi.h>
#include <AsyncUDP.h>

const char *ssid = "YourNetworkSSID";
const char *password = "YourNetworkPassword";
const IPAddress receiverIP(192, 168, 1, 2); // 수신기 ESP32의 IP 주소
const int switchPin = 2; // 택트 스위치 핀

AsyncUDP udp;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  pinMode(switchPin, INPUT_PULLUP); // 풀업 모드로 택트 스위치 핀 설정
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  if(udp.listen(1234)) {
    Serial.println("UDP Listening on IP: ");
    Serial.println(WiFi.localIP());
    udp.onPacket([](AsyncUDPPacket packet) {
      Serial.print("UDP Packet Type: ");
      Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
      Serial.print(", From: ");
      Serial.print(packet.remoteIP());
      Serial.print(":");
      Serial.print(packet.remotePort());
      Serial.print(", To: ");
      Serial.print(packet.localIP());
      Serial.print(":");
      Serial.print(packet.localPort());
      Serial.print(", Length: ");
      Serial.print(packet.length());
      Serial.print(", Data: ");
      Serial.write(packet.data(), packet.length());
      Serial.println();
    });
  }
}

void loop() {
  // 택트 스위치가 눌리면 메시지를 보냄
  if (digitalRead(switchPin) == LOW) {
    sendMessage("pressed");
    delay(500); // 임의의 딜레이
  }
}

void sendMessage(String message) {
  udp.writeTo((const uint8_t*)message.c_str(), message.length(), receiverIP, 1234);
}

 

 

받아서 신호를 재생하는 쪽

#include <WiFi.h>
#include <AsyncUDP.h>
#include <toneAC.h>

const char *ssid = "YourNetworkSSID";
const char *password = "YourNetworkPassword";
const uint16_t udpPort = 1234;
const int buzzerPin = 4; // 피에조 부저 핀

AsyncUDP udp;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  pinMode(buzzerPin, OUTPUT); // 피에조 부저 핀 설정

  if(udp.connect(IPAddress(192, 168, 1, 1), udpPort)) { // 보내는 쪽 ESP32의 IP 주소
    Serial.println("UDP Connected");
    udp.onPacket([](AsyncUDPPacket packet) {
      Serial.print("UDP Packet Type: ");
      Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
      Serial.print(", From: ");
      Serial.print(packet.remoteIP());
      Serial.print(":");
      Serial.print(packet.remotePort());
      Serial.print(", To: ");
      Serial.print(packet.localIP());
      Serial.print(":");
      Serial.print(packet.localPort());
      Serial.print(", Length: ");
      Serial.print(packet.length());
      Serial.print(", Data: ");
      Serial.write(packet.data(), packet.length());
      Serial.println();

      String receivedMessage = String((char*)packet.data());
      if (receivedMessage == "pressed") {
        // 피에조 부저로 소리 재생
        toneAC(buzzerPin, 1000, 100); // 피에조 부저 소리 재생
      }
    });
  }
}

void loop() {
  // 여기서 추가 작업을 수행할 수 있습니다.
}

 

 

 

생각보다 엄청 쉬워서 놀랐습니다 각 esp32에 배터리만 달아서

같은 wifi를 공유하게 하면 다른 정보도 필요없이 제작이 가능하네요

esp32 보드가 아니라 esp32칩셋에 필요한 기능만 추출하고 기존

배터리와 스위치만 달아주는 것만으로 크기를 줄일 수 있을 것 같습니다.

 

그렇게 되면 신발 밑창이나 옷, 모자에 숨겨서 같은 공간에 있는 사람들끼리는

정보가 실시간으로 공유가 가능할 것으로 보이고,,,

 

시험조작까지도 가능할지도 ㄷㄷ...

이렇게 생각하니 무서운 아이디어였네요

 

더 검색을 해보니까 실제로 잡힌 분들도 계십니다

만들지는 않을 프로젝트가 되겠습니다,,,

 


https://www.youtube.com/watch?v=tiOybKaTIqE

 

 

 

 

 

 

반응형
Contents

포스팅 주소를 복사했습니다!

이 글이 도움이 되었다면 추천 부탁드립니다!