[아두이노] 부품이 없을 때 아두이노 실험 팁

IOT/아두이노|2019. 7. 15. 09:00

[아두이노] 부품이 없을 때 아두이노 실험 팁



수 많은 부품들과 오픈 라이브러리 소스를 이용하여 아두이노로 쉽게 실험을 할 수 있습니다. 하지만 많은 부품들을 실험할 때마다 구매하기는 사실 부담이 됩니다. 부품을 구매해서 실험을 하면 좋지만 꼭 구매해야만 실험 할 수 있는 것은 아닙니다. 제가 post를 쓰면서 자주 온라인 가상시뮬레이터에서 실험을 해왔는데 이 가상시뮬레이터를 이용하여 실험하고 싶은 주제의 결과물을 얻을 수 있습니다. 하지만 가상시뮬레이터도 만능은 아닙니다. 모든 전자부품을 제공되지 않습니다. 기초적인 기본 부품만을 제공합니다. 없는 부품을 실험 할 때는 가상시뮬레이터에서도 제약이 따릅니다. 제공되지 않는 부품의 경우는 실험을 못하느냐고 묻는다면 충분히 실험을 할 수 있습니다. 실제 구매해야 하는 부품을 가상시뮬레이터에서 해당 부품의 특징과 비슷한 부품을 대체해서 코딩상으로 해당 주제에 대한 실험을 할 수 있습니다. 즉, 부품의 특징과 원리만 잘 이해하고 있다면 충분히 다른 부품을 사용하더라고 실험하고 싶은 내용으로 실험을 충분히 할 수 있습니다.

그러면, 어떻게 실험을 하는지 그 방법에 대해 살펴보도록 하죠.

1. 온라인 가상시뮬레이터를 이용한 실험


온라인 가상시뮬레이터 tinkercad에서 제공되는 기본 아두이노우노와 부품들은 몇개 되지 않습니다. 하지만 많은 것들을 실험할 수 있습니다. 기본적으로 제공되는 각 부품들의 특징들만 잘 이해하고 있으면 제공되지 않는 부품들도 어느정도 유사한 실험을 할 수 있습니다. 그러면 어떻게 유사한 실험을 할 수 있는지 알아봅시다.

1) 가상시뮬레이터에서 제공되는 부품의 특징


크게 읽기/출력 부품으로 나뉩니다. 읽기는 디지털 읽기와 아날로그 읽기가 있으며 출력도 디지털 출력과 아날로그 출력으로 나뉩니다.

  • 디지털 읽기 : 0 or 1 신호를 읽습니다. (0-0V, 1-5V)
  • 디지털 출력 : 0 or 1 신호를 출력합니다.
  • 아날로그 읽기 : 0~1023 신호를 읽습니다.
  • 아날로그 출력(PWM핀) : 0~255 신호를 출력합니다.
  • 시간값(HIGH->LOW 변환시간, LOW->HIGH변환시간) 외 신호 펄스 관련 제어

2) 실험 할 부품의 특징 파악 후 대체 부품 찾기


실험에 사용 할 부품이 가상시뮬레이터에서 제공되지 않는 부품일 때 해당 부품은 디지털/아날로그 신호를 읽어오는지 출력하는지의 부품의 특징을 우선 알아야 합니다. 그 특징과 유사한 부품의 특징을 가진 가상시뮬레이터의 부품으로 실험 목적에 맞는 유사 실험을 진행 할 수 있습니다.

예를들면, 지난시간에 실험한 토양수분센서를 실험하고 싶을 때 아래 부품을 구매를 해야 실험을 할 수 있습니다. 가상시뮬레이터에서도 제공되지 않는 부품이라서 구매하지 않으면 실험을 할 수 없겠죠.


토양수분센서가 없다고 해서 실험을 할 수가 없는것은 아닙니다. 바로 대체 부품을 찾으면 됩니다. 토양수분센서는 0~1023의 아날로그 신호를 만들어 냅니다. 그러면 0~1023의 신호를 발생하는 부품을 찾으면 되겠죠. 가상시뮬레이터에서 0~1023의 신호를 발생하는 부품은 여러개가 있는데 그 대표적으로 조도센서가 있습니다. 가스센서를 이용해도 되고 가변저항기를 이용해도 됩니다. 0~1023의 아날로그 신호를 발생하는 부품이면 토양수분센서를 대신 할 가상부품으로 여기고 실험을 수행할 수 있습니다.


위 조도센서를 이용하여 토양수분센서의 역할을 수행 할 있습니다.

3) 실험 할 부품이 원리를 파악 후 대체 부품 만들기


실험에 사용 할 부품이 가상시뮬레이터에서 제공되지 않을 경우 해당 부품을 직접 만들 수 있습니다. 원리만 잘 이해하면 그 원리에 맞게 가싱시뮬레이터에서 디자인을 할 수 있습니다.

예를들면, 4-Digit 7-Segment Display는 가상시뮬레이터에서 제공되지 않습니다.


직접 만든다면 4-Digit 7-Segment Display의 원리를 데이터시트를 보고 파악을 해야 겠죠. 가상시뮬레이터로 대체 부품을 만들면 아래와 같습니다.


응용해서 추가로 만든다면은 다음과 같이 늘릴 수 도 있겠죠.


대체 부품을 만들기 위해서는 해당 부품의 데이터시트를 보고 동작 원리에 맞게 부품을 만들어야 하는 어려움이 있지만 어느정도 LED 원리를 터득하고 7-Segment Display를 터득했다면 복잡해 보일뿐 위 표현은 충분히 하실 수 있습니다. 다른 부품의 경우도 이와 유사합니다.

4) 실험 할 부품을 대체 부품을 못 구할 시 Serial 통신 이용


대체한 부품을 찾지 못하거나 부품을 만들 수 없을 때는 Serial 통신을 이용하여 가상 입력과 출력를 표현하는 방법입니다. 즉, 어떤 특정한 부품이 있을 때 부품의 읽는 값을 대신해서 시리얼통신에서 가상 데이터를 입력하고 그 값을 코딩 상에서 가상 데이터를 처리하고 그 결과를 대체 부품이 있으면 출력시키고 출력을 대체 할 부품이 없을 때는 시리얼모니터로 출력시켜서 부족한 부분을 Serial 통신으로 대체하면 됩니다.

예) 시간변환 예제

만약 대체 부품을 구했다면 아래의 post처럼 직접 만들어서 실험을 할 수 있겠죠.

이처럼 가상시뮬레이터에서 대체 할 부품이 있다면 그 부품으로 이용하고 대체 할 부품을 만들 수 있다면 직접 디자인하고 이것도 저것도 아니면 Serial 통신을 이용해서 가상데이터를 입력 받게 하고 출력도 Serial 모니터로 대신 동작하게 할 수 있습니다.

위에 열거한 방법들을 잘 기억해 놓고 아두이노 실험을 하시기 바랍니다.

2. 대체 부품을 이용 시 코딩에 중점을 두자


아두이노를 실험하는 것은 회로도를 만드는 것도 중요한 목적이지만 코딩에 더 집중 하셔야 합니다. 우리가 아두이노를 실험하는 큰 이유가 아두이노를 통해 어떤 특정한 동작 명령을 내려 그 동작을 수행하게 하기 위해서 입니다. 하드웨어에 명령을 내리기 위해서는 코딩을 해야 하고 이부분은 무척 중요합니다.

현재 실험에서 부품이 없더라도 유사 느낌으로 코딩상에서 동작을 제어할 수 있습니다.

지난시간의 자동토양물주기를 토양수분센서와 water pump가 없었지만 충분히 가상시뮬레이터에서 실험을 할 수 있었습니다. 대체 할 부품으로 조도센서와 DC모터를 사용하고 실제 자동토양물주기 동작 명령 코딩에 중점을 두고 실험을 했기 때문입니다. 이 실험은 코딩 상에서 조도센서의 값을 토양수분센서로 인식하고 DC모터를 water pump로 인식하고 코딩을 했고 그 처리 동작도 자동토양물주기의 동작명령을 코딩했기 때문에 실제 다른 부품을 사용했지만 정상적인 결과물을 얻을 수 있었습니다.

아두이노를 실험할 때는 실험 할 부품이 있으면 실감나게 실험을 할 수 있지만 없더라도 대체 부품으로 실험 목적의 맞는 내용으로 코딩을 하면 원하는 결과를 얻을 수 있기 때문에 아두이노 실험에서는 코딩이 역할이 무엇보다 중요합니다. 그래서, 틈틈히 코딩 연습을 해주세요.

아두이노는 부품없이 코딩만으로도 실험을 할 수 있습니다. 부품이 있으면 좋고 없으면 대체부품을 찾고 그것도 없다면 부품을 디자인하고 그게 힘들면 Serial 통신으로 대체하더라도 결과물을 얻을 수 있습니다. 뭔가를 실험하기 위해서 꼭 부품이 필요한 것이 아니니깐 코딩적 관점으로 실험을 하셔도 됩니다.

3. 시간 날 때마다 부품의 이해


부품은 각각 고유의 특징을 지니고 있습니다. 기울기 센서는 기울기에 따라서 0 or 1의 신호를 발생하고 조도센서는 빛의 영향으로 아날로그 신호가 발생하고 LED은 0 or 1의 전류 상태로 불이 on/off 상태가 되고 초음파센서는 전방에 장애물에 거리를 초음파로 벽에 부딛치고 되돌아오는 시간값으로 거리를 측정하고 스위치버턴은 스위치를 누르면 스위치버턴에 연결된 전류의 선이 이여지는 등의 새로운 부품들의 특징을 시간 날 때마다 원리를 머리속에 담아 두세요. 그래야 새로운 부품으로 실험을 해야 하는데 그 부품이 없는 경우에 그 부품의 특징과 기존에 공부한 부품과의 유사 부품으로 대체해서 원하는 실험을 할 수 있게 됩니다.

그리고, 전자부품 쇼핑몰에 가셔서 시간 날 때마다 어떤 부품들이 있는지 부품을 검색하세요. 그 부품의 동작 원리와 특징들을 알아 두셨으면 합니다. 그러면 특정 부품을 가지고 실험을 할 때 같이 연동할 부품을 상상하기 편하고 상상을 할 때 공부 해놓은 부품들이 많으면 다양한 상상설계에 도움이 됩니다.

부품 공부는 전자부품 쇼핑몰에서 찾은 부품을 다시 구글검색에서 해당 부품으로 실험한 자료들을 수집하거나 데이터시트를 검색하셔서 동작 원리를 공부해 주세요. 상상코딩에 무척중요한 부분입니다.

상상코딩의 예를 들면 영화나 애니메이션에서 SF 장면을 보면 제 경우 그 한 장면 장면들이 아두이노적 시각으로 상상을 할 수 있습니다. SF영화에서 특수 장갑을 끼고 VR 화면을 조정하거나 실제 로봇을 조정하는 장면이 있다면 이 부분을 아두이노로 표현한다면 어떻게 할까요. 다양한 방법이 있지만 간단하게 소개하면 구부림센서가 있습니다. 구부림의 각도에 따라서 로봇의 손을 움직일 수 있습니다. 그리고 VR화면을 조정할 수 있습니다. 아니면 근육신경센서를 이용해서 근육의 움직임센서값을 이용해서 로봇의 손을 움직일 수 있습니다. 뇌신경센서로 로봇을 조정할 수 있습니다. 이런것들을 상상하기 위해서는 여러분들이 다양한 많은 부품들을 알고 있어야 합니다. 각 부품들의 특징만이라도 알고 있으면 특정 부품을 공부하거나 상상 실험을 할 때 응용할 수 있는 상상력의 범위가 넓어집니다.

꼭 전자부품 쇼핑몰에 가셔서 특수 부품들을 살펴보시고 해당 부품의 데이터시트를 보시고 동작을 이해하는 공부를 꼭 해주세요. 상상은 그냥 되는게 아닙니다. 여러분들이 얼마나 많은 부품을 체험해 보았느냐에 따라 남들과 다른 상상을 할 수 있습니다.

마무리


오늘은 좀 두서없는 이야기를 한 것 같네요. 꼭 하고 싶은말은 특정 실험을 할 때 꼭 실제 부품이 필요하지 않습니다. 아두이노로 실험할 것들은 엄청 많습니다. 그 많은 실험을 하기 위해서 모든 부품을 다 사용할 수 없습니다. 왠만큼 실험하기 위해서는 금전적 부담이 크기 때문에 특수한 실험의 경우는 부품 하나의 가격이 만만치 않기 때문에 실험을 하기 부담 됩니다. 그럴 때는 꼭 부품을 구해서 실험을 할 필요는 없습니다. 그 부품을 대신 할 부품으로 원하는 동작을 수행하게 할 명령 코딩만 잘 짜시면 됩니다.

실험에 사용되는 부품을 대체 할 부품을 찾기, 대체 할 부품이 없을 때 비슷한 동작 부품 만들기, 부품 없을 때 Serial 통신으로 대체하기 등 이 세가지를 이용하여 아두이노로 다양한 실험을 하시고 많은 상상을 하셨으면 합니다.

댓글()