로봇(9)
-
#11/12 아두이노 로봇 HowTo
LCD 모듈 LCD 모듈은 로봇의 주행 성능과는 무관하지만 차량의 상태 정보를 나타낼 수 있고 어렵지 않게 구현을 할 수 있어 택했다. 1602 Character LCD로 16개 문자를 두 줄에 표시할 수 있는 저렴한 LCD이다. 앞의 사진에서 보는 바와 같이 연결해야 할 핀들이 상당히 많다. 우리가 가진 디지털 핀들의 개수가 몇 개 안남았기 때문에 당장은 연결을 할 수 없는 상황이다. 하지만 I2C LCD Interface를 사용하면 문제를 해결할 수 있다. 라이브러리를 추가해야 한다. 이미 만들어진 라이브러리를 사용할 것이기 때문이다. 개발 환경에서 툴→ 라이브러리 관리를 선택해서 LiquidCrystal I2C를 설치한다. I2C란? IIC라고도 부르며 아이-스퀘어-씨로 읽..
2022.11.04 -
#10/12 아두이노 로봇 HowTo
적외선 거리 측정 모듈 (HS-IRSM) 적외선 거리 측정 모듈은 다음과 같이 생겼다. 핀의 연결은 하나의 데이터 라인을 아두이노와 연결을 하고 전원을 각각 연결한다. LED가 두 개가 있어 한쪽에서 적외선을 내 보내고 한쪽에서는 받는다. 지금까지 썼었던 초음파 센서는 음파임에도 우리가 들을 수 없었고 적외선은 우리가 볼 수 있는 가시광선 영역에서 벗어나기 때문에 볼 수 없다. 하지만 적외선의 경우에는 디지털 카메라로 볼 수가 있다. 다음의 사진은 모듈을 로봇의 전면 하단부에 장착을 하고 전원을 준 상태로 사진을 찍은 것이다. 투명했던 LED 한쪽에서 빛이 나옴을 볼 수 있다. 이렇게 적외선을 사용하는 경우에는 카메라로 적외선이 나오는지 여부는 확인을 할 수 있다. 적외선을 많이 사용하는 것이 리모콘..
2022.11.04 -
#9/12 아두이노 로봇 HowTo
스텝 2. 업그레이드 1차로 자율 주행 로봇을 만들고 나서 아쉬운 점을 나열을 했었다. 센서의 한계로 인해서 장애물을 감지 못하여 예상했던 대로 움직이지 못하는 경우가 꽤나 있었다. 거실에서 자율 주행을 시작해 놓으면 한 동안 이리저리 왔다 갔다를 반복하다가 주방의 어딘가에서 아이방 어딘가에서 헛바퀴만 도는 경우가 많았다. 그래서 조금 업그레이드를 해 보려고 몇 가지 주문을 했다. 블루투스 모듈 (HC-06) 적외선 거리 측정 모듈 (HS-IRSM) LCD 모듈 자율 주행보다는 수동으로 조정을 하는 것도 재미있겠다 싶어 블루투스 모듈을 주문을 했다. 사실 리모콘 모듈을 가지고 먼저 테스트를 해 봤는데 실수로 리모콘 입력부(IR)가 쇼트가 나서 탄 이유도 있었지만 리모콘은 IR이 입력이 수신부 정면..
2022.11.04 -
#8/12 아두이노 로봇 HowTo
자동 주행 알고리즘 전원을 넣고 나면 장애물을 피해서 배터리가 다 닳을 때까지 계속 이동하는 로봇이다. 우리가 가지고 있는 정보는 초음파 센서로 들어오는 정보에 의존을 한다. 그래서 loop 함수를 다음과 같이 작성을 했다. 초반에도 설명을 한 바와 같이 loop 함수는 무한 반복이 되는 함수다. 그 무한 반복되는 함수가 아래의 20여줄의 함수이며 이 함수에 의해서 로봇은 장애물을 계속 피해가며 움직이게 된다. void loop() { Detect_Front(); // 정면 거리 측정 if(distanceFront > STOP_DISTANCE) // 정의된 거리보다 크면 앞으로 전진하고 물체 확인 { Robot_Go(); } else { // 정면의 거리가 정의된 거리보다 작을 경우 Detect_Ob..
2022.11.04 -
#7/12 아두이노 로봇 HowTo
로봇 동작시키기 로봇의 동작은 전진, 후진, 좌회전, 우회전, 180도 회전 등으로 나눌 수 있을 것이다. L298N은 각도 조절을 할 수 없기 때문에 경험치에 의해서 각도를 조절해 보려고 한다. 우선 배터리의 전압에 따라서도 회전 속도가 달라지니 각자 테스트를 해 보는 수 밖에 없을 것이다. 모터의 회전 자체는 변경을 할 수 있는데 여기서는 속도는 기본으로 두고 진행을 할 예정이다. 100% 배터리가 충전이 되었을 때 테스트를 하는 것이 좋겠다. 배터리가 많이 닳아 있는 상태라면 100% 충전이 되었을 경우 예상보다 더 회전을 할 수 있을 것이다. void loop() { Robot_RightTurn(); Robot_LeftTurn(); Robot_180Turn(); } /* * 로봇을 180도 회전시..
2022.11.04 -
#5/12 아두이노 로봇 HowTo
서보모터 서보모터는 CPU의 명령에 따라 특정 각도만큼 움직이도록 하는데 사용이 되는 모터이다. 3개의 라인이 있으며 일반적으로 빨간선이 전원 검은색이나 갈색이 GND 그리고 노란색이나 주황색 선이 데이터 선으로 사용이 된다. 서보모터는 정면을 90도로 맞추어 0도에서 179도까지 숫자를 주면 각 각도별로 모터가 회전을 한다. 우리가 서보 모터를 이용하는 이유는 회전 축에 초음파 센서를 부착을 하기 위함이다. 일정 각도마다 회전을 하면 초음파 센서가 거리를 측정하고 측정된 거리를 가지고 전진을 할 것인지 후진을 할 것인지를 판단하는 기능을 넣고자 한다. 서보모터의 데이터 라인은 아두이노의 6번 핀에 연결을 했다. 연결을 한 사진은 다음과 같다. 서보 모터를 사용하기 위해서는 서보모터 제..
2022.11.04 -
#4/12 아두이노 로봇 HowTo
함수를 만들어보자 앞에서 loop안에 로봇을 전진시키는 코드 네 줄을 넣어서 동작을 시켰다. 그런데 로봇은 전진 뿐만 아니라 후진, 좌회전, 우회전, 멈춤이 추가로 필요할 것이다. 그런데 그 때마다 4줄씩 코드를 넣어야 한다. 그리고 digitalWrite 함수에 HIGH 또는 LOW를 넣어야 하는데 나중에 코드를 보면 이해하기가 어렵다. D1과 D2에 HIGH를 넣어야 멈춤이고 HIGH, LOW를 넣으면 전진이라는 것을 외우고 있지 않은 이상 코드를 이해하기 쉽지 않다. 그래서 각각 전진, 후진, 멈춤, 좌회전, 우회전의 함수를 만들어 해당 함수를 호출하고자 한다. 디지털 포트 번호를 선언한 다음에 함수 다섯개를 선언을 했다. 이것은 이러한 함수가 있다고 선언을 해 주는 것이며 뒤에서 함수의 동..
2022.11.04 -
#1/12 아두이노 로봇 HowTo
스텝 0. 아두이노 개발 환경 아두이노를 이용해서 자율 주행 로봇을 만든다. 아두이노 우노, 모터 두 개, 초음파 센서와 서보 모터를 이용한다. 초음파 센서로 거리를 측정하고 물체가 감지되면 방향을 바꾸어 이동을 한다. 아두이노란? 아두이노(Arduino)란 오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드와 관련 개발 도구 및 환경을 말한다. 2005년 이탈리아의 IDII(Interaction Design Institutelvera)에서 하드웨어에 익숙지 않은 학생들이 자신들의 디자인 작품을 손쉽게 제어할 수 있게 하려고 고안되었다고 한다. (위키백과) 아두이노를 이용해서 센서나 모터 혹은 LED 등을 제어할 수 있어 연결된 다양한 센서나 모터 등의 상호 작용을 하는 ..
2022.11.04 -
인공지능 시대가 두려운 사람들에게
인공지능 시대가 두려운 사람들에게 저자 리처드 왓슨 출판 원더박스 발매 2017.12.28. 엔지니어 백그라운드를 가진 사람들도 어렴풋하게 인공지능에 대해서 알고는 있지만 실제로 인공지능이 어디까지 적용되고 사용이 될지는 잘 모르는 것이 사실이다. 저자는 책 머리에서 이 책의 목적을 다음과 같이 밝히고 있다. 이 책의 목적은 미래를 정확하게 예측하는 것이 아니라 미래를 개괄적으로 그려보는 것이다. 우리가 현재 어떻게 살고 있는지에 대한 논평이며 앞으로 어떻게 살아가고픈가에 대한 논의이다. 디지털 혁신은 계속 될 것이다. 무엇보다 우리가 신성함과는 거리가 먼 속도, 편의, 효율의 삼위일체에 집착하고 있기 때문이다. 컴퓨터를 사용하면 많은 일들이 쉬워진다. 그런데 컴퓨터 때문에 쉬워지는 일 대부분은 굳이 하..
2020.11.10