라즈베리 파이로 간단한 AI 보안 로봇 만들기
Wikiprompt, 무료 프롬프트 백과사전에서
라즈베리 파이로 간단한 AI 보안 로봇 만들기 시네마틱 3D 액션 광고 - [제품/브랜드 삽입], 극적인 스튜디
프롬프트 내용저장
🌐
라즈베리 파이, ESP32, 카메라, 모션 감지, 서보 추적, 텔레그램 알림을 사용하여 간단한 AI 보안 로봇을 만들어 드리겠습니다. 배선, 코드, 부품 목록, 설정 순서를 제공합니다.
**부품 목록**
- 라즈베리 파이 4 (2GB 이상 권장)
- ESP32 개발 보드
- 라즈베리 파이 카메라 모듈 v2 또는 USB 웹캠
- 서보 모터 2개 (팬/틸트용, 예: SG90)
- PIR 모션 센서 (HC-SR501)
- 브레드보드 또는 3D 프린트된 프레임
- 점퍼 와이어, 전원 공급 장치 (5V/2.5A 이상)
**배선**
1. **서보 모터**: 각 서보의 신호 핀을 ESP32의 GPIO 핀 (예: GPIO 13, GPIO 12)에 연결합니다. 전원 핀은 5V, 접지 핀은 GND에 연결합니다.
2. **PIR 센서**: PIR의 출력 핀을 ESP32의 GPIO 핀 (예: GPIO 14)에 연결합니다. 전원은 5V, 접지는 GND.
3. **카메라**: 라즈베리 파이 카메라 모듈을 CSI 포트에 연결하거나 USB 웹캠을 USB 포트에 연결합니다.
4. **ESP32와 라즈베리 파이 통신**: ESP32를 USB 케이블로 라즈베리 파이에 연결하거나, Wi-Fi를 통해 MQTT 또는 HTTP로 통신합니다 (권장: Wi-Fi).
**설정 순서**
1. 라즈베리 파이 OS 설치 및 부팅
2. 라즈베리 파이에 Python, OpenCV, python-telegram-bot 라이브러리 설치
3. ESP32에 Arduino IDE 또는 MicroPython 펌웨어 업로드
4. ESP32 코드에서 Wi-Fi 자격 증명 및 라즈베리 파이 IP 설정
5. 라즈베리 파이 코드에서 텔레그램 봇 토큰 및 채팅 ID 설정
6. 서보 및 PIR 테스트
7. 통합 테스트 및 배포
**코드**
**ESP32 코드 (Arduino IDE)**
```cpp
#include <WiFi.h>
#include <HTTPClient.h>
#include <Servo.h>
const char* ssid = "YOUR_WIFI";
const char* password = "YOUR_PASSWORD";
const char* serverName = "http://YOUR_PI_IP:5000/motion";
Servo servoX;
Servo servoY;
int pirPin = 14;
int pirState = LOW;
int posX = 90;
int posY = 90;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
servoX.attach(13);
servoY.attach(12);
pinMode(pirPin, INPUT);
}
void loop() {
pirState = digitalRead(pirPin);
if (pirState == HIGH) {
HTTPClient http;
http.begin(serverName);
int httpCode = http.GET();
http.end();
delay(5000); // 5초 대기
}
// 서보 제어는 라즈베리 파이에서 명령을 받아 수행 (예: /servo?x=120&y=80)
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("http://YOUR_PI_IP:5000/get_servo");
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
// payload 형식: "x:120,y:80"
int commaIndex = payload.indexOf(',');
String xStr = payload.substring(2, commaIndex);
String yStr = payload.substring(commaIndex + 3);
posX = xStr.toInt();
posY = yStr.toInt();
servoX.write(posX);
servoY.write(posY);
}
http.end();
}
delay(100);
}
```
**라즈베리 파이 코드 (Python)**
```python
from flask import Flask, request, jsonify
import cv2
import numpy as np
import telegram
import asyncio
import threading
import time
app = Flask(__name__)
# 텔레그램 설정
TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
bot = telegram.Bot(token=TOKEN)
# 카메라 설정
camera = cv2.VideoCapture(0) # 또는 카메라 모듈 사용 시 cv2.VideoCapture(0) 대신 picamera 사용
fgbg = cv2.createBackgroundSubtractorMOG2()
# 서보 상태
servo_x = 90
servo_y = 90
def send_telegram_alert(frame):
# 프레임을 저장하고 텔레그램으로 전송
cv2.imwrite('alert.jpg', frame)
asyncio.run(bot.send_photo(chat_id=CHAT_ID, photo=open('alert.jpg', 'rb')))
def motion_detection():
global servo_x, servo_y
while True:
ret, frame = camera.read()
if not ret:
continue
fgmask = fgbg.apply(frame)
# 모션 감지 로직 (간단한 예)
if np.sum(fgmask) > 10000:
# 모션 발생 시 텔레그램 알림
send_telegram_alert(frame)
# 모션 중심 계산 (간단한 예)
M = cv2.moments(fgmask, True)
if M['m00'] != 0:
cx = int(M['m10'] / M['m00'])
cy = int(M['m01'] / M['m00'])
# 서보 각도 계산 (간단한 비례 제어)
servo_x = max(0, min(180, 90 + (cx - 320) * 0.1))
servo_y = max(0, min(180, 90 + (cy - 240) * 0.1))
time.sleep(0.1)
@app.route('/motion', methods=['GET'])
def motion_trigger():
# ESP32에서 PIR 감지 시 호출
return jsonify({'status': 'ok'})
@app.route('/get_servo', methods=['GET'])
def get_servo():
return f"x:{servo_x},y:{servo_y}"
if __name__ == '__main__':
# 모션 감지 스레드 시작
threading.Thread(target=motion_detection, daemon=True).start()
app.run(host='0.0.0.0', port=5000)
```
**설정 순서 상세**
1. 라즈베리 파이 OS 설치 (Raspberry Pi Imager 사용)
2. SSH 활성화 및 Wi-Fi 설정
3. 라즈베리 파이에서 다음 명령 실행:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip
pip3 install opencv-python flask python-telegram-bot
```
4. ESP32에 Arduino IDE 설치 및 보드 설정 (ESP32 Dev Module)
5. ESP32 코드 업로드 (Wi-Fi 자격 증명 및 라즈베리 파이 IP 수정)
6. 라즈베리 파이 코드 저장 (예: `security_robot.py`) 및 실행
7. 텔레그램 봇 생성 (BotFather) 및 토큰, 채팅 ID 확인
8. 서보 및 PIR 연결 확인, 각도 테스트
9. 전체 시스템 테스트: PIR 감지 시 ESP32가 라즈베리 파이에 신호, 라즈베리 파이가 모션 감지 및 텔레그램 알림, 서보가 객체 추적
**참고 사항**
- 카메라 모듈 사용 시 `picamera` 라이브러리 설치 및 코드 수정 필요
- 서보 전원 공급 시 전압 강하 방지를 위해 별도 전원 권장
- 보안을 위해 텔레그램 토큰 및 채팅 ID를 환경 변수로 관리
- 모션 감지 알고리즘은 필요에 따라 더 정교하게 수정 가능 (예: YOLO 객체 감지)
전체 프롬프트를 보려면 로그인하세요
Continue with:
By logging in, you agree to our Terms of Use and Privacy Policy
사용법
이 프롬프트는 coding와 함께 사용하도록 설계되었습니다. 위의 프롬프트 내용을 복사하여 원하는 AI 도구에 붙여넣으세요.
최상의 결과를 얻으려면 자리 표시자(대괄호 또는 대문자로 표시)를 특정 요구 사항으로 사용자 지정할 수 있습니다.
토론
댓글 0개