LoRa 모듈 E22-900T22S Breakout Board 설계 2

Image
지난번 설계 에서 두 가지 업데이트 사항이 있다. 첫 번째로 3.3V 로 로직 컨버터를 거치지 않고 직접 통신할수 있는 포트를 구성하였다.  이 포트를 통해 3.3V 동작의 MCU를 사용할때 좀 더 빠르게 회로를 구성  할수 있을것으로 기대한다. 두 번째로 동작 전압 레벨이 서로 다른 MCU 와 Lora 모듈이 통신할때 사용할 기준전압을 직접 인가 할 수 있도록 하였다. 보드에는 위 와같은 점퍼가 주어지는데 3.3V 나 5V 로 점프 시키지 않을 경우 VREF 핀에 사용할 소스전압을 직접 인가해 주어야한다. 특수한 경우가 아니라면 Vref를 사용하는일은 없을것 같다. 위사 진들은 이번에 제작한 테스트 모듈이다.  왼쪽은 E22-900T22S 모듈이고 오른쪽은 ATmega328P/PB 3.3V 8Mhz 보드를 준비했다. 오른쪽의 보드는 ATmega328P/PB 를 모두 장착하여 사용할 수 있도록 설계했다. E22-900T22S 보드의 전체 회로는 다음과 같다. 동작 전압 레벨이 서로 다른 장치와 통신 할 수 있도록 레벨 컨버터를 추가 하였고, 핀 헤더를 장착하여 다른 MCU 보드와 통신하거나 점퍼를 수정해서 USB 시리얼 통신을 할수 있도록 했다. 모듈의 테스트는 mischianti의 E22 라이브러리 를 사용했다. 정리가 아주 잘 되어있는 라이브러리로 생각된다. 아래 코드는 라이브러리에 포함된 시리얼 입력을 LoRa 통신으로 전송하는 예제이다. Lora ATmega328p AUX D3 RX D4 TX D5 M1 D6/GND M0 D7/GND 송신측 코드 #include "Arduino.h" #include "LoRa_E22.h" LoRa_E22 e22ttl(4, 5, 3, 7, 6); void setup() { Serial.begin(9600); delay(500); // Startup all pins and UART e22ttl.begin(); Serial.println(&q

[Raspberry Pi] - rc카 만들기 #7 카메라 틸트 만들기 (Camera Tilt)





#7 카메라 틸트



카메라를 사용하는 방법을 알았으니 이제 로봇에 마운트를 시켜야 한다.
물론 그냥 달아 주기만 해도 멋지지만 서보 모터를 장착한 카메라 틸트를 이용하면 로봇이 큰 이동없이 제자리에서 주변을 둘러 볼 수 있다. 
문제는 시중의 틸트들은 대부분 가격이 만만치가 않다. 
거기다 마음에드는 구조일수록 고가였다. 까짓거 만들자는 생각이 들었다.

틸트 프레임은 포맥스를 이용해 제작하였다.
포맥스는 칼로 자를 수 있을 만큼 재단이 쉽고 내구성도 좋다.
또 생상도 다양해 선택의 폭이 넓다. 
틸트는 파츠별로 제작하여 조립식으로 만들었다.





틸트는 1mm 포맥스 2장을 겹쳐서 만들었고, Pi Cam 구입시 딸려오는 마운터를 마운트 할 수 있도록 만들었다. 토션 스프링은 기타줄을 잘라 만들었다.




안쪽의 서보모터는 록타이트로 붙여진 것이 아니라 추후에 틸트가 업그레이드 될 수도 있기때문에 끼워서 고정되는 방식으로 제작하였다. (록타이트는 제질에 따라 부품이 손상될수도 있다.)




하단의 서보모터는 스크류 나사로 고정되어있다.
서보 컨트롤러 선을 각각의 핀에 할당  해주고 Dual Shock 4로 컨트롤 할 수 있도록 조건문을 작성해 준다. 입력 펄스값은 본인이 어떤 각도를 기준으로 삼았냐에 따라 다르다.

다음 코드는 카메라 틸트 부분만을 캡쳐한 것으로 L2, R2가 0보다 작거나 같으면 펄스값을 0으로 만들어 틸트가 컨트롤러(Dual Shock 4)의 입력으로 움직이지 않도록  해준다. 이는 Dual Shock 4의 오른쪽 Axis를 로봇의 앞 바퀴의 방향전환을 담당하는 서보와 함께 이용하기 때문이다. 주변 환경의 관찰이 필요할 시에 L2, R2을 당겨서 카메라의 방향을 오른쪽 Axis로 조종 할 수 있도록 한다. 

참고로 L2, R2의 값은 1부터 -1까지의 값이며 완전히 눌렸을 때의 값이 1이다.
따라서 L2, R2위의 두 키가 정해진 값이상으로 눌리지 않으면 각각의 서보모터는 작동하지 않는다.

혹은 L2, R2가 눌리지 않았을 때의 idle값으로 가장 최근에 입력받은 펄스값을 입력해주어도 된다. 일단 펄스값이 주어지면 반복문 내에서 약속된 횟수만큼 Raspberry Pi에서 계속 신호를 보내기 때문에 서보모터가 외부 힘에 의해 움직이지 않는다. (서보모터가 낼수있는 토크보다 강한 힘을 가하면 고장남) 반면에 펄스값에 0을 주게 되면 손으로도 쉽게 서보모터를 움직일수 있다.






다음 영상 내 소음은 쿨링 팬 소음이다.
스트리밍도 하고 로봇 제어도 하다보면 60도가 넘어가면서 데몬이 꺼지기도한다.
힘들어서 스스로 꺼버리는거 같다. 팬을 통해 38도 수준으로 다운시킬 수 있었다.







Thx.

Comments

  1. 안녕하세요 컴공4학년 학생입니다.
    서보 모터를 이용해서 파이카메라의 각도를 제어하고
    실시간 스트리밍해서 앱으로 보여주고 싶은데
    지금 하신 프로젝트의 소스코드를 보면 도움이 많이 될거같은데
    제공해 주 실수있을까요..??

    ReplyDelete
    Replies
    1. 대학시절 취미로 만들어본거라 도움은 아마 안될겁니다.

      그래도 보고 싶으시다면 이 곳 에 제가 진행하던 프로젝트의 "극히일부"소스가 있습니다.
      아쉽지만 저때 사정이 좀 있어서 완성본은 없습니다. (프로젝트 업데이트가 2017년도에 끊긴 이유입니다.)

      그리고 이 소스코드는 거의 맨 처음에 작성한 포로토타입 소스코드고 중요한 스트리밍 부분이 누락되었기 때문에 큰 도움은 되지 않을거 같구요.

      하지만 블로그에 있는 소스코드로도 무선 스트리밍에 컨르롤러 조종까지 충분히 구현 가능합니다.
      솔직히 제 깃허브 보다는 블로그 업데이트 기록에있는 소스코드를 보시는 쪽이 더 도움이 되실겁니다.

      Delete

Post a Comment

좋은하루되세요. ^^

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결

[Python] - 블루투스 모듈 HC-06의 MAC 주소를 이용하여 통신 포트 찾기