얼마전 유튜브 알고리즘으로 약 10년 전 나온
신의 한수를 다시 보게되었습니다
그러다 의문점이 든 것이,,
영상에 나오는 저 원격 신호 및 조작 장치,, 진짜 만들 수 있는게 아닐까..?
그래서 이번에는 아이디어가 아니라 실제로 제작하면
얼마나 복잡할지 딱 이정도로 알아보겠습니다.
아래와 같은 구조로 굉장히 간단하게 진행된다고 생각해보겠습니다
오늘의 코딩은 전능한 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