아두이노 나노 기반 식사 로봇 만들기: 단계별 가이드
부품 및 소모품
- 아두이노 나노 R3 (Arduino Nano R3) × 1
- 초음파 센서 HC-SR04 (일반) × 1
- 솔더리스 브레드보드 하프 사이즈 × 1
- SG90 마이크로 서보 모터 × 1
- 점퍼 와이어 (일반) × 1
필요한 도구 및 기계
앱 및 온라인 서비스
- 아두이노 IDE (Arduino IDE)
- 아두이노 웹 에디터 (Arduino Web Editor)
프로젝트 소개
이 프로젝트 아이디어는 제 딸에게서 나왔습니다.
딸이 로봇을 원했는데, 입이 열려서 음식을 입에 넣을 수 있는 로봇이었으면 했습니다.
그래서 실내에서 구할 수 있는 것들(골판지, 아두이노 나노, 초음파 센서, 서보 모터...)을 찾아 최대한 빠르고 저렴한 비용으로 딸이 놀 수 있는 로봇을 만들었습니다.
본체 만들기
로봇 본체를 골판지로 만듭니다.
글루건으로 모든 부품을 연결합니다.
본체 대부분 완성
눈 구멍 만들기
입 만들기
부품 연결도
USB 전원 연결
테스트 및 디버깅
완성!
소스 코드
GoldScrew_EatingRobot.ino
/*
* 골판지 식사 로봇
* 작성자: GoldScrew
* 이메일: goldscrewdiy@gmail.com
* 설명: HC-SR04로 거리 5cm 이하 음식 감지, 서보로 입 열기/닫기
*/
#include
#define SERVO_PIN 9 // 서보용 핀 9 설정
// HC-SR04 초음파 센서
const int trig = 3; // HC-SR04 trig 핀
const int echo = 2; // HC-SR04 echo 핀
// 서보
Servo mouthServo;
void setup() {
// 9600 보드레이트로 시리얼 연결
Serial.begin(9600);
// TRIG 핀으로 신호 송신
pinMode(trig, OUTPUT);
// ECHO 핀으로 신호 수신
pinMode(echo, INPUT);
// 입 서보
mouthServo.attach(SERVO_PIN);
mouthServo.write(90); // 초기 위치(닫힘)
}
void loop() {
/* 지속 시간 */
unsigned long duration;
int distance; // 거리
/* TRIG 핀에서 신호 송신 */
digitalWrite(trig, 0); // TRIG 핀 정지
delayMicroseconds(2); // 2마이크로초 지연
digitalWrite(trig, 1); // TRIG 핀에서 신호 송신
delayMicroseconds(10); // 10마이크로초 지연
digitalWrite(trig, 0); // TRIG 핀 정지
/* ECHO 핀에서 HIGH 펄스 폭 측정 */
duration = pulseIn(echo, HIGH);
// 거리 계산
distance = int(duration / 2 / 29.412);
if (distance <= 5) {
// 거리 출력
Serial.println("거리가 5cm 이하입니다");
// 입 열기 시작
mouthServo.write(0);
// 지연
delay(1200);
} else {
// 거리 출력
Serial.println("거리가 5cm 이상입니다");
// 입 닫기
mouthServo.write(90);
}
// 지연
delay(200);
}
회로도