아주 기본적인 이야기 이지만, 버튼을 눌렀을 때 Bouncing 이 발생한다는건 많은사람들이 상식적으로 알고있는 이야기 이다.

하지만 실제로 어떻게 시그널이 생성되는지 잠시 알아보기 위해 몇가지 실험을 해보고 이를 해결하기 위한 방법을 S/W 와 H/W 로 접근해보기로 한다.

일단 수치적으로 보면 버튼을 눌렀을 때 아래와 같은 현상이 발생한다.

A0 (14) 핀에 버튼을 물려놨고, 버튼이 처음 HIGH 일 때 부터 1000 번의 루프에서 digitalRead() 를 한 결과이다. 

버튼을 누르고 있는 상태에서 조금 버튼을 비벼(?)댔더니 96%와 심지어 28%까지의 결과가 중간에 나온다.


위 실험 결과를 보면, 눌렀다 떼었다 한 부분이 다른 부분은 명확하지만 파란색 박스가 쳐져있는 부분은 순간적인 Bouncing 이 일어난 부분이다. 만약 무조건 HIGH = 눌림 으로 했거나 Interrupt 를 걸어서 H-L 위상 변화 시에 눌림으로 인식하게 했다면 파란색 부분은 두번 이상 눌린 효과가 발생했을 것이다.

(Plotting 도구와 내 컴퓨터의 성능 한계로, 아두이노는 115200 속도에 5ms 딜레이를 매 루프 내에 주었다. 5ms 미만으로 줄 경우 툴이 반응하지 못해서 측정이 불가하다. 오실로스코프가 필요한때이다 싶다)


위 그래프는 아날로그로 Read 한 결과이다. 누른 상태에서 버튼을 비벼대니 저런 지저분한 결과가 나왔다. 원래 의도대로라면 계속 눌려있어야 하는데 눌리지 않고 중간에 저렇게 전압이 마구 변동되는 모습을 볼 수 있다. 

앞으로 해볼일은 위 현상들을 Single 버튼일때 없애는 것과 ADC 를 통해 Analog 로 여러 버튼으로 읽을 때 없애는 것이며, S/W 와 H/W 적인 방식에 대해 직접 테스트 해볼 예정이다.

반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

오늘 둘째놈이 아빠방에 고장나서 방치되어있는 자기 지프차를 보더니 "아빠 이거 고쳐줘잉~" 이런다. 요새 계속되는 회사 야근때문에 손을 거의 데지 못하고 있었는데, 오늘 좀더 진도를 나가본다.

오늘은 수신기쪽에 모터와 서보를 붙여놓고 실제로 돌아가는지 테스트를 해봤다.

좌측이 송신기쪽, 우측이 수신기쪽이다. 

수신기쪽에 파란색 작은 SG90 이 스티어링 서보이고, 스탠다드 사이즈의 서보처럼 생긴것은 서보가 아니고 그냥 감속기어 달린 모터이다.

좌측의 송신기쪽 스틱 하나로 스티어링과 서보를 모두 제어하게 설계하였는데, 이게 문제가 좀 있다. 스틱이 하나이다보니 스로틀+스티어링이 동시에 제어되기 힘든구조이다.

앞으로 밀면서 옆으로 밀면 앞으로 밀 수가 없다. 저 스틱의 움직이는 범위가 사각형이 아니라 원형이기 때문에 왼쪽+위 이런게 안된다. 우선 1차 버전은 심플하게 이렇게 만들고 다음 버전에서는 스틱을 분리하던지 건타입을 어떻게 해서든 만들어봐야하겠다.

움직이는 동영상 하나 올려본다.

이번에 수정한 코드이다. 좀더 설계를하고 만들어야 하는데, 막코딩으로 가고있다.

송신기 코드는 이전과 같고, 수신기 코드만 올려본다.


반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

수신기 회로도를 그려봤다. 이제 연결해줘야할것들이 조금씩 늘어나니 회로도를 안그려놓으면 나중에 분해했다가 다시 만들때 또 고생할 생각을 하니 이건 아니다 싶어서 급 그려본다.

Eagle Cad 보다 Fritzing 이 난 더 맞는듯 하다. 다만 Schematic 의 Wiring 이 아직 많이 불안하지만 그래도 Eagle Cad 의 라이브러리 찾는 고생과 클릭 위주의 인터페이스 보다 더 쉽고 직관적이라 좋다.



입력 전원은 1.2V 짜리 Ni-MH 5알을 사용할것이라 6V 로 잡았다.

모터 전원은 8V 를 쓰고, Servo 는 SG90 미니서보가 집에 굴러다니므로 사용할 예정이다. 그냥 6V 를 넣어줄까 하다가 기존 아들놈의 RC카가 테스트 대상인데, 원래 파워소스가 1.5V AA 5개(배터리 먹는 귀신 같으니라고,...)를 사용하므로 7.5V 가량 나왔으므로, 완충된 AA 배터리라고 가정하고 모터에 8V 를 넣어주기로 했다.

SG90  은 MAX 6V 입력전원이라 7.4V Li-Po 를 물려서 자작 서보테스터로 테스트 해보니 모터가 미친듯이 떤다. PC 의 5V USB 전압으로 돌려보니 출력이 모자라서 아두이노가 계속 꺼졌다 켜졌다 한다. 캐패시터를 1000uF 정도 넣어주니 좀 덜 꺼지기는 하는데 뭐 그거나 그거나다.. 그래서, SG90 의 입력전압은 전원 소스 6V 를 그대로 넣어주는걸로 했다.


<SG90 미니서보. 개당 2,000원 가량 한다>

L293D 는 아직 내가 MOSFET 기반의 H-브릿지는 만들어보지 않은 관계로 이전에 사용해본 경험을 기반으로 구성했다. (내 블로그에도 사용해본 글이 있으니 참고)

이제 수신기측 동작 코드 짜고 회로 연결해서 수신기쪽 테스트를 해봐야겠음.


반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

지난번에는 기본적인 통신 테스트를 마쳤고 이번에는 고정된 테스트값이 아니라 정말로 아날로그 스틱에서 값을 읽어와 NRF24L01 모듈로 송수신하여 테스트 해봤다.

일단 내가 만들고자 하는 V1.0 의 송수신기는 아래 그림과 같다.

2축 스틱으로 Steering 과 Accelerometer 를 제어하고 (채널1, 2), 스틱을 누르면 채널3 으로 디지털 입력을 받을 예정이다.

채널 4,5,6 중 채널 4는 아날로그 값을 Volume 으로 받고, 5,6 은 DIGITAL 로 받으려 한다. 마지막으로, V1.0 에서는 간단히 스틱의 입력값 범위를 설정하기 위한 Function S/W 를 하나 달아줄 것이다. 무쟈게 심플하다. Trim 이나 EPA 도 없다. 

전원은 집에있는 USB 보조배터리를 사용하도록 하고, 손잡이 부분에 넣도록 할 것이다.

기구는 집에있는 OC 마네킹 3D 프린터로 찍어볼것이다. 그런데 이게 도면 그리는게 쉽지 않을듯 하다.


자 일단 스틱을 붙였다. 인터넷으로 주문 가능한 바로 그 스틱이다. 뭐 얼마 하지도 않는다. VCC, GND, VRX, VRY, SW 이렇게 4선이 있다. 


나노에 연결하고 지난번 만들었던 코드를 수정했다.

송신기쪽 코드이다

큰 변화라면, 이전에 사용하던 TX_DATA 구조체 내에 accel, steering, ch3, ... 변수를 그냥 배열로 바꾸어 취급하기로 했다. 변수명을 하나씩 써주니 코드도 지저분해져서 배열로 만들고 Loop 로 돌려서 Analog 입력을 받아 저장하고 수신기 쪽으로 보낸다.

아래는 수신기쪽 코드이다

수신쪽 코드는 크게 변한것이 없고, 송신쪽에서 받은 배열값을 화면에 출력한다.



그런데 이상한 현상이 발생한다. Transmission Fail 이 계속 떨어지고, 전송 속도가 무려 40ms 정도가 걸린다. 뭔가 특이한것도 없는데 이렇다.. 혹시 콘덴서 안달아서 이러는가 싶기도 하지만 PA Level 을 LOW 로 주었는데도 이런거면 큰일이다.. 우선 값이 전달되는건 되는걸 확인하고 일단 닫았다.


다음날 저녁에 퇴근하고 집에와서 애들 자는거 보고 또 열었다. 그리고 원래 있던 코드를 손도 안대고 돌려본다. 그런데 갑자기 FAIL 이 안뜬다.. 뭐 이런경우가.. 어제 저녁에는 100% 오류가 나더니.. (기분탓인가.. 그러기에는 저렇게 확연한 증거가 있는데..)

아무튼, 이쯤 하고 값이 잘 전달된다는걸 확인했으니 다시 프로젝트를 닫았다. 참 이상한일이다.

브래드보드에서 실제 기구에 이식할때에는 꼭 콘덴서 달아주리라 마음먹고 오늘은 이쯤한다.

다음에는 출력쪽을 다루어야 하고, 회로도도 그려서 올려야겠다.

지금까지의 회로도는 아래와 같다



반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

우선 예전 조종기 스케치가 보이지 않아 스케치는 둘째 치고, 핵심적인 통신모듈 테스트부터 해보기로 했다.

Arduino & nRF24L01+ 모듈을 활용하는게 가장 현실적이기에 예전에 사두었던 nRF24L01 모듈 (A 타입, 안테나 내장형) 모듈과 아두이노 나노 2개로 바로 테스트 해보았다.
(nRF24L01 모듈에 대한 글은 내 블로그에 있으니 참고하면 되겠다)




블로그에 있는 글 처럼 아두이노 나노와 nRF24L01 모듈을 2개 각자 연결하고 후딱 코딩을 해봤다.일단 캐패시터는 스킵하고 RF24 의 PA 를 LOW 로 하여 전원에 에로사항이 최대한 안생기게 하고 테스트를 했다.

:: 송신기 측 테스트 코드

:: 수신기 측 테스트 코드


일단 조종기에서 Steering, Acceleration, 기타 채널 3~6 까지 총 6채널이라 가정하고, 각 unsigned short 값에 PWM 값을 보낸다고 가정하여 데이터를 넣어봤다. 이부분은 다음에 조이스틱과 토글스위치 및 볼륨 등으로 바꾸면 될것이다.

데이터를 송/수신 해서 Serial Monitor 에 잘 찍히는지 모니터링 해봤는데 잘 찍힌다. 간단한 테스트라서 그다지 내용은 없으나 작동하니 기분은 좋다. 


[송신기와 수신기의 시리얼 출력 화면] 

다음에는 조종기와 스위치를 달아줘야겠다.


반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

소프트웨어

nRF24L01 은 기본적으로 SPI 방식으로 통신을 하고, 스펙에 정의된 프로토콜로 상호 통신을 한다. (스펙은 아래 링크로 다운로드)

nRF24L01_Product_Specification_v2_0.pdf


일일이 레지스터 비트놀이를 할 수도 있겠지만, 역시나 쉽게 사용할 수 있도록 만들어놓은 라이브러리들이 있다.

몇가지 라이브러리와 대표적인 양대 라이브러리가 있는데

  • RF24 - RadioHead 라는 이름의 통신 라이브러리가 나오는데, 그 개발자가 nRF24L01+를 위해 최적화 해서 만든 라이브러리이다. 아두이노, Raspberry Pi, Attiny 등에서 모두 동작하고 많은 기능을 지원한다. nRF24L01 도 이 드라이버를 통해 지원된다.
  • RF24Network - 위 RF24 라이브러리 기반으로 OSI7 레이어 (SW 개발하시는 분들은 아시쥬?)를 구현해놓은 네트워크 라이브러리이다. 
  • RF24Mesh - 이 또한 RF24 기반으로 센서들의 Mesh Network 을 구현하는 목적으로 만들어놓은 라이브러리이다. 자동 어드레싱과 동적 설정 등이 추가된 버전이다
  • MySensors - Mesh Network 을 목표로 nRF24L01 을 중심으로 한 라이브러리를 만들어 배포하는 곳이다. 센서 데이터를 전달하는데 좀더 적합한 라이브러리 모양이다.
  • Mirf - 양대 라이브러리 중 하나의 라이브러리이다. 코드와 API 모두 심플하여 많은 사람들이 활용한다.AVRLib 의 Arduino 버전을 포팅해놓은것이다.
  • RadioHead - RF24 뿐 아니라 여러가지 통신방식을 "드라이버"개념으로 지원한다. 위 RF24 라이브러리 만든 개발자가 만들었다. 드라이버 중 RH_NRF24 드라이버가 있다.
위 라이브러리들 중 RF24 와 Mirf 라이브러리가 양대 드라이버 정도 되겠다. 가장 유명하다.혹은 위 RadioHead 라이브러리 내의 RH_NRF24 드라이버를 사용해보는것도 좋겠다


여기에서는 RF24 라이브러리를 사용하는 예제를 보겠다


위 처럼 nRF24L01 모듈의 CE, CSN 핀을 결정해주면 된다.

중요한 개념중 하나가 Channel 과 Pipe Address 이다.

Channel 은 nRF24L01 이 사용하는 2.4 ~ 2.525GHz 주파수 대역을 동시에 사용할 수 있는 통로를 말한다. nRF24L01 은 125개의 채널을 사용할 수 있다. 그런데 이건 256Kbps 아 1Mbps 의 Data Rate 를 사용할때의 이야기이고, D/R를 2Mbps 를 사용할 수 있는데 이때에는 62채널로 줄어든다. 그만큼 대역폭이 더 많이 필요하기 때문이다.

Pipe Address 는 채널 내에서의 가상의 송/수신 주소이다. Ethernet 의 IP 주소와 유사하다고 보면 된다. 이 Pipe Address 는 5바이트 이내의 값을 사용하면 되며, 예제에서는 1Node 2Node 라고 임의로 주었다.

Pipe 를 Open 할 때에는 Sender 의 Write 대상 주소는 Receiver 의 Reader 주소와 같아야 한다. 

또한 이 주소는 총 6개 까지 만들어서 Listen 할 수 있는데, 


이렇게 하나의 RX 가 총 6개의 TX 들과 1채널 내에서 통신할 수 있다. 

단, 하나 주의할 점은, 여러개의 주소(총 6개까지가능한) 중 0번 주소는 5바이트 주소값 전체를 원하는대로 만들어주면 되지만, 1번 ~ 5번 주소는 가장 마지막 LSByte 값을 제외한 나머지 4바이트 값들이 동일해야 한다. (아마도 성능때문에 요런 꼼수를 쓴 듯 하다)

위 설명을 그림으로 나타낸것이다. 

Data Pipe 0 의 주소는 뭘 해도 상관 없고, pipe1 ~ 5 까지는 앞의 4바이트 주소값이 같아야 한다는 이야기이다. 그리고 제일 마지막 1바이트는 같으면 안된다는 이야기이다.

또하나 주의할 점은 nRF24L01 모듈은 Half Duplex 모듈이다. 그래서, Write 를 하기 전에는 Listening 을 멈춰야 한다. 무전기 같은것이다. 그래서 코드에서도 radio.write() 하기 전에 radio.stopListening() 을 호출해주는 것이다.

그러면 stopListening --- startListening 과의 시간차가 발생할텐데 이 간격이 어느정도냐면

 

그림 처럼 130uS 가량 된다. 즉시 Switching 되는게 아니므로 주의해야 하겠다. 

마지막으로 Payload 의 사이즈는 최대 32 byte 까지 가능하다. 한 패킷에 데이터가 32바이트를 넘지 않아야 한다. 

그림처럼, preamble 1 바이트, 주소 3~5바이트, CRC 1~2 바이트가 붙고, 데이터는 1~32 바이트 까지 가게된다. 더 보내려면 잘라서 보내야 한다.


이정도로 기본적인 nRF24L01+ 모듈 사용에 대해 정리해본다. 더 많은 기능들과 Shock Burst 모드 같은게 있다는데 아직 자세히는 안알아보았고, 앞으로 쓰다가 사용하게 되면 차차 추가해보도록 하겠다.


반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

소개

아마도 2006년 쯤 이었던것 같다. 40MHz, 27MHz 대역의 크리스탈을 TX/RX 세트로 열 세트 쯤은 갖고다니다가 2.4GHz 의 유행이 Spektrum 송신기를 통해 불기 시작하더니 결국 FM 주파수는 자취를 감추고 말았다.

nRF24L01 모듈은 2.4Ghz 주파수로 무선통신을 가능하게 해주는 Nordic 社의 RF 모듈이다. 전 세계적으로 Maker 들이 이 nRF24L01+ 모듈을 많이 쓰는데, 이유는 값이 무지하게 싸고 크기도 작으며 성능 또한 매우 떨어지거나 하지 않기 떄문이다.

가격은 PCB 안테나 타입인 nRF24L01 모듈이 우리나라 돈 1,000 원 정도 한다. 물론 국내 판매업자들은 이걸 또 몇 배 이상 뻥튀기 해서 팔고있다.


모양은 위 처럼 생겼고, 크기는 검지손가락 한마디 반 정도 된다 매우 작다

성능은, 여기저기서 실험해본 동영상들이 있지만 좀 시니컬한 테스트 결과를 보면, PCB 버전이 대략 200m 가량. PA-LNA 외장 안테나 버전이 대략 800m 가량의 유효거리가 나온다. 물론 PA(Power Amplifier) 의 세기 설정에 따라 다르다.


몇가지 테스트 데이터와 동영상들 중에서 기특하게도 저렇게 테스트한 결과를 그래프로 표시해둔 자료가 있어서 첨부해봤다


하드웨어


Pin Assign 은 위와 같이 되어있고, SPI 인터페이스를 사용한다. 

전원은 3v3(3.3V) 를 사용하므로, 아두이노의 3.3V 아웃풋에 연결해주면 된다. 단 이때 주의할 것은, 아두이노의 3.3V 레귤레이터의 노이즈로 인해 아두이노 3.3V 에 직접 물려서 사용할 경우, nRF24L01+ 의 VCC 와 GND에 Bypass Capacitor 를 하나 달아줘야 나중에 실전에서 사용할 때 문제가 안생긴다.용량은 UNO 계열은 1~10uF 정도를 달아주는것을 추천하나 100uF 달아서 사용하는 사람들도 많다


아두에노에 연결 방법이다. 아두이노를 Master 로 보므로, nRF24L01 의 CSN(CS)는 아두이노에서 소프트웨어 적으로 핀 할당해줄것이므로 저렇게 8번 핀에 연결해준다.

CE(Chip Enable)은 7번으로 할당하였으나 언제든 바꿀 수 있다

IRQ(Interrupe, Active Low)는 대부분의 라이브러리(아래 소프트웨어 쪽에서 설명할)에서 사용하지 않는다


다음 글에서는 소프트웨어에 관해 써보겠다



반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

98년 부터였을꺼다 Visual C++ 로 개발을 해온것이.. Visual C++ , Embedded Visual C++ 로 개발을 하고 있다가 07년도 부터 Java 로 건너오면서 거의 Visual Studio 를 사용하지 않다보니 이제는 Visual Studio 의 까만색 배경 부터가 왠지 낮설다.

처음에 Eclipse를 접하면서 '뭐 이런 허접한 툴이 다있어.. Visual C++ 의 개발 편의성이나 생산성, 빠릿한 반응은 찾아볼 수가 없구만..' 하고 불평하며 어느새 Eclipse 만 9년을 넘게 쓰고있었다.

Arduino 를 취미삼아 개발하기 시작하면서 당연히 Arduino 는 Arduino IDE 로 개발해야한다는 생각을 하고 정말 UltraEdit 나 NotePad++, 심지어 윈도우의 메모장과 비교할만한 수준의 개발도구에 혀를 차고 있었다.

정말 너무나도 심플한.. IDE 라고 이야기 해도 될까라는 생각이 들 정도의 허무한 기능들이다. 


그래서 Visual Studio 2015 (이왕이면 최신버전~)를 설치하고, "Extensions and Updates" 를 통해 보니 역시나 Visual Micro 의 Arduino IDE 가 있다.

이 Visual Micro Arduino IDE 는 Atmel Studio 의 플러그인으로도 나오고 있다. 그도 그럴것이 Atmel Studio 자체가 Visual Studio Platform 기반으로 동작하기 때문이다.

위에 보이는대로 Arduino IDE for Visual Studio 를 다운로드 한다.

VS 를 재시작 하면 아래와 같이 물어본다. 뭐 별로 건드릴게 없다. 그냥 OK 누르면 이제부터 시작이다.


New Project 를 바로 해보면, Templates>Visual Micro 내에 Blank Project 와 Blink Led Example 이 보인다.


Black Project 를 선택했다. Project 이름과 동일한 .ino 파일이 생기고, 툴바에 뭔가 한줄이 더 생긴다.


정말 감탄을 금치 못한다. 심플하고 있어야 할 기능들이 다 있다. Eclipse CDT 기반으로 개발환경 설정하는 것도 나중에 하나 올리겠지만, Arduino IDE 와 Eclipse CDT 에 Arduino 개발 플러그인 끼운것과 비교하면 '왜 이렇게 안만드나' 싶을정도다.

포트 선택도 연결된 포트가 심플하게 나온다. COM5 에 VUSB 로 잡혀있다.

툴바 말고도, Visual Micro 메뉴가 보이고, 안에는 각종 기능들이 보인다. 오리지널 Arduino IDE 보다 낫다.


특히나 Visual Micro Explorer 를 메뉴를 통해 띄워보면, Arduino API Reference 와 예제들, 보드 정보, Arduino.cc 에서 볼 수 있었던 각종 써드파티 Library 들이 모두 보인다. 

그냥 웹페이지로의 링크가 아니라 심지어 클릭하면 Library 를 바로 다운로드 받을 수 있다. 정말 훌륭하다.

코드가 코드 답고, 오른쪽에 살짝 보이는 저 창은 Serial Port Monitor 이다.


정말 나에게 필요했던 바로 이 기능! VIM 으로 C++ 개발할때도 지원되던 Intellisense(Code Assist) 기능과 Parameter 정보 표시 기능이 왜 Arduino IDE 에는 없는것인가.. 완벽하게 동작한다. Eclipse 의 플러그인 보다도 훨 낫다. 한 100배 정도?


Arduino IDE 에서도 제공하지 못하는 Debug 기능도 제공된다. 아직 사용법을 잘 몰라서 그런건지 loop() 함수의 Entry 부분에서 항상 Break 걸리는 수준의 Debug 이지만 아마도 사용법을 좀더 익혀보면 되지 않을까 싶다.

모든게 정말 완벽하다. 그러나 아쉬운점도 있다. 바로 Serial Monitor 기능인데, 이게 한글이 안나온다. .ino 파일의 인코딩을 바꿔서도 해보고 여러가지 시도를 해봤지만 한글이 Serial Monitor 에서는 깨져서 나온다.

이 다음에는 Atmel Studio 7 을 설치해보고 마찬가지로 Visual Micro Arduino IDE 플러그인을 설치해보겠다. 


반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

RC를 하다보면 녀석들이 많아질때 마다 수신기를 늘려가야하는 부담이 있었다.

수년간 모델체인지 없는 송신기용 수신기이면 몰라도 한때 FUTABA 와 양대 산맥을 이루던 SANWA 의 내 조종기 M11 도 5~6년 간 각종 모듈에 악세사리에 잘 나오다가 결국 2.4GHz 대 조종기가 나오면서 2.4GHz 모듈을 끝으로 은퇴를 하고 말았다.


[추억의 M11]

이 2.4GHz 모델이 Radio Post 라는 국내 브랜드 모듈이었는데 몇년 버티지 못하고 결국 단종이 되고 말았다. 이 송신기 모듈에 맞는 수신기는 그냥 없다고 봐야한다.


[Radiopost 2.4GHz 수신기와 M11용 모듈]

이렇게 2.4GHz 의 같은 대역대를 사용하는 송수신기 이더라도 문제는 각 조종기 벤더마다 호환이 안된다는 즉 표준이 없다는게 문제이다.


요새는 쿼드콥터를 하는 관계로 난생처음 4채널 이상의 비행기 조종기를 써보는데 이놈들도 그러한 프로토콜 호환의 문제점과 전용 수신기의 비싼 가격은 마찬가지이다.

값싼 아두이노를 기반으로 송수신기를 만들어보고자 마음먹고 프로젝트를 해본다. 뭐 프로젝트라 할 것 까지는 없고, 일단 초간단 송수신기를 차량용으로 만들어보고 향후 쿼드콥터용도 만들어보고자 한다.


이미 아두이노를 활용한 송수신기를 만들어보는 자작기 들은 몇몇 외국인들과 국내 분들도 시도해본 듯 하다. 

[Instructable 에서 발견한 아두이노 기반 조종기]



[국내 RC 카페 동호인께서 개조하신 조종기]

나는 우선 우리 4살 둘째놈이 한손으로 조종할 수 있을 만큼 작은, 스틱 기반의(휠 기반으로 하려니 마땅한 부품을 구입하기 쉽지 않아보인다) 송신기와 Arduino Pro Mini 기반의 4~6채널 정도의 수신기를 만들어보고자 한다. 

일단 계획이 너무 창대하면 실현이 어려울듯 하여 Sprint 를 3차로 나누어 조종기 Version 1.0 을 만들어 보도록 하겠다.

Sprint #1 의 목표

. 2.4GHz 로 송/수신 된다

. 4채널 데이터를 송신기가 보낼 수 있다

. 4채널 데이터를 수신기가 PWM 으로 출력할 수 있다

. 브레드보드에서 회로가 동작한다


(이후 글 부터는 실제 구현 과정을 담아보도록 하겠다)


반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

 버튼이 많이 필요한 경우에는 아두이노의 PIN 이 모자를때가 있습니다. 궂이 푸시로 하나의 버튼 누르는데 버튼 여러개라고 핀을 여러개 할당 할 필요가 없습니다.

 아래처럼 저항값을 이용하여 전압을 AnalogRead 하면 대략 어떤 버튼이 눌렸는지 알 수 있겠습니다.

같은 저항값으로 버튼 연결 (하나의 버튼 검출)


 위에 R1 은 1M 가 없어서 150K 로 했고, 결과는


S1 을 눌렀을 때 오는 값입니다. S2, 3, 4, 5 모두 다른값들이 옵니다. 저항의 오차를 감안하여 값 범위만 잘 준다면 꽤 쓸만한 방식이겠습니다.


다른 저항값으로 버튼 연결 (동시 누른 버튼 검출)

 위 회로도에서, 각 저항값만 2K, 4K, 8K ... 과 같이 달리 해준다면 대략의 계산된 결과로 어떤 버튼들이 동시에 눌렸는지 계산이 가능하겠습니다. 

- 끝 -





반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,