개발이야기

아두이노에 ChatGPT를 연결해봤습니다 – AI와 대화하는 나만의 스마트 디바이스 만들기

게임교수 2025. 3. 31. 16:31
반응형

아두이노에 ChatGPT를 연결해봤습니다 – AI와 대화하는 나만의 스마트 디바이스 만들기

처음에는 단순한 호기심이었어요. “아두이노와 ChatGPT를 연결하면 뭔가 재미있는 걸 만들 수 있지 않을까?”라는 생각이 들었거든요. 그런데 이게 막상 해보니까 생각보다 훨씬 더 가능성이 많더라고요.

이번 글에서는 아주 기초적인 수준에서 시작해, 아두이노와 ChatGPT를 연결해서 실제로 대화를 주고받는 스마트 디바이스를 만드는 과정을 일상적인 말투로 소개해볼게요. 어렵게 설명 안 할 테니까 가볍게 읽고 따라와 주세요!


💡 1. ChatGPT를 아두이노와 연결할 수 있을까?

일단, 중요한 사실 하나! 아두이노는 ChatGPT처럼 복잡한 AI 모델을 직접 돌릴 수는 없어요. 사양이 너무 낮아서요. 하지만! 아두이노는 입출력 장치로서 기능하고, ChatGPT는 외부 서버에서 돌아가는 AI니까 이 둘을 연결해 대화를 주고받을 수는 있어요.

중간에 필요한 게 하나 있어요. 바로 중간 브릿지 역할을 해줄 장치나 소프트웨어, 대표적으로는 라즈베리파이, ESP32, 또는 PC에서 실행되는 파이썬 프로그램이 그 역할을 해줍니다.


🔧 2. 전체 구성도는 이렇게 생겼습니다

[아두이노 (입력/출력)] ←→ [ESP32 또는 시리얼 통신] ←→ [PC (Python + OpenAI API)] ←→ [ChatGPT 서버]

즉, 아두이노는 센서 데이터나 버튼 입력을 보내고, 응답은 ChatGPT가 생성해서 다시 아두이노에 출력하도록 하면 되는 구조예요.


📦 3. 준비물

  • 아두이노 Uno (또는 Nano, Mega)
  • ESP32 또는 USB 직렬통신 연결 PC
  • ChatGPT API 키 (OpenAI 가입 필요)
  • Python 3.x 설치된 컴퓨터
  • USB 케이블
  • 간단한 출력장치 (예: LCD, OLED, 시리얼 모니터)
  • (선택) 마이크로폰, 스피커, 조이스틱, 버튼 등

🖥 4. ChatGPT와 통신하는 파이썬 프로그램

OpenAI API를 사용해 대화 요청을 보내는 간단한 파이썬 코드 예제입니다:

import serial
import openai

# OpenAI API 키
openai.api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx'

# 시리얼 포트 연결 (아두이노와 연결된 포트 확인 필요)
ser = serial.Serial('COM3', 9600)

while True:
    if ser.in_waiting:
        user_input = ser.readline().decode().strip()

        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "user", "content": user_input}
            ]
        )

        reply = response['choices'][0]['message']['content']
        ser.write((reply + '\n').encode())

💡 실제로 사용 시 API 요금 주의! 프리티어도 있지만 너무 자주 호출하면 유료가 될 수 있어요.


🧠 5. 아두이노는 뭘 담당하냐면요…

아두이노는 텍스트 입력 → 시리얼 통신 → 응답 표시까지의 단계를 담당해요.

간단한 예:

void setup() {
  Serial.begin(9600);
  Serial.println("Ask me something:");
}

void loop() {
  if (Serial.available()) {
    String userText = Serial.readStringUntil('\n');
    Serial.println(userText);  // 이 부분은 PC 파이썬 코드가 처리하고, 응답을 다시 보내줌
  }
}

답변은 파이썬 코드에서 다시 Serial로 보내주면, 아두이노는 LCD나 OLED 또는 시리얼 모니터로 출력하면 끝!


📺 6. 디스플레이 연결 예시 (16x2 I2C LCD 기준)

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.begin();
  lcd.backlight();
}

void loop() {
  if (Serial.available()) {
    String message = Serial.readStringUntil('\n');
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(message.substring(0, 16));
    lcd.setCursor(0, 1);
    lcd.print(message.substring(16, 32));
  }
}

이렇게 하면 ChatGPT 응답이 실시간으로 LCD에 표시됩니다.


🎮 7. 확장 아이디어

  • 음성 인식 → 텍스트 변환 → 질문 보내기 → 음성 합성으로 응답 듣기
  • 버튼 4개로 미리 정해진 질문 선택
  • 온도센서, 습도센서 등 실시간 센서 값 포함 질문 보내기
  • ChatGPT를 통해 조언 받는 화분, 반려동물 돌봄 장치
  • ChatGPT를 통한 미니 퀴즈 게임기

 

✅ 8. 마무리하며

이번 프로젝트는 아두이노만으로는 부족했던 ‘대화형 반응’을 가능하게 해줍니다. 물론 완전한 AI 비서를 만드는 건 아니지만, 센서값을 이용한 응답, 입력 버튼에 따른 다양한 질문 등으로 실생활에서 쓸만한 수준까지도 구현이 가능해요.

가장 중요한 건 어렵지 않다는 점입니다. 코드 몇 줄, 연결 몇 개로 꽤 인상적인 결과를 얻을 수 있어요. 오히려 직접 해보면, ‘이 정도로 ChatGPT랑 대화된다고?’ 하는 감탄이 나올 수 있어요.

📌 출처: ythouse.tistory.com

반응형