Posts

Showing posts from 2016

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

Bezier Curve 베지어 곡선 구현

Image
베지어 곡선 typedef struct { float x, y; } point;  CurvePoint.x = ControlPoints[0].x * (1.0 - t) * (1.0 - t) * (1.0 - t)   + ControlPoints[1].x * 3.0 * t * (1.0 - t) * (1.0 - t)   + ControlPoints[2].x * 3.0 * t * t * (1.0 -t )   + ControlPoints[3].x * t * t * t;  CurvePoint.y = ControlPoints[0].y * (1.0 - t) * (1.0 - t) * (1.0 - t)   + ControlPoints[1].y * 3.0 * t * (1.0 - t) * (1.0 - t)   + ControlPoints[2].y * 3.0 * t * t * (1.0 - t)   + ControlPoints[3].y * t * t * t; point 구조체 배열을 제어점 ControlPoints로 부터 얻어낸 곡선의 점들로 채우는 함수가 필요하며, 이함수의 호출에는 충분한 메모리가 할당되어야한다. 메모리가 부족하면 정상적으로 출력이 되지 않는다. ex)ControlPoints = (point *)malloc(sizeof(point)*n);       n은 점의 개수로 생각하면된다. 500정도면 어느정도 봐줄만한 곡선이 그려진다. ControlPoints[0]은 시작점 (P0), ControlPoints[1]은 첫번째 제어점 (P1) ControlPoints[2]는 두번째 제어점 (P2), ControlPoints[3]은 끝점 (P3) t는 매개변수로, 0 ≤ t ≤ 1 사이값을 갖는다. 0 ≤ i < n, delta = 1.0/n,  t =  i * delta 곡선의 모양은  제어점을 변경하여 조절할수 있으며, 베지어 곡선은 어떠한 경우에든지 항상 블록다각형(Convex Hull)내에 위치하게 된다. 시작점(P0)

영상처리 Morphology

Image
솔지 원본사진 바이너리 Erosion 연산(침식)  눈썹과 머리 옷의 검은부분이 넓어 짐을 확인할수 있다. 바이너리  Erosion 연산(팽창) 좌측의 흰 무니들이 넓어졌고 입이 사라짐을 확인할수 있다. 영역이 사라지는 것과 더욱 넓어지는 것은 마스크의 크기과 관계가 있다. 오프닝과 클로징 오프닝은 Erosion 다음에 Dilation 을 클로징은 Dilation  다음에 Erosion 연산을 시행한다. 1) 그레이 원본 사진 2) 오프닝 연산 Erosion 다음에 Dilation 연산을 하였기때문에 원본 사진과 비교하여 전체적으로 어둡게 뭉개졌다. 3) 클로징 연산 Dilation 후 Erosion 연산을 하였기 때문에 원본사진보다 전체적으로 밝게 뭉개졌다. 뭉개지는 정도는 마스크의 크기에 따라 달라진다.

유니티 5 로 소셜 네트워크 게임만들기

지금까지 유니티 툴을 다루는 책을 여러권 접해보았다. 이번에 구입한 "유니티 5 로 소셜  네트워크 게임 만들기"라는 책은 비교적 최근에 나온 게임들을 소개로 시작을한다. 유니티로 제작된 인기게임들과 해봤을만한 게임 단순한 게임 등이 소개되어 시작부터 친근하다. (무언가 이 툴만있으면 나도 이정도는 만들 수 있을거 같은!) 유니티로 개발을  시작할때 가져야할 개념이 있다. 이 책에서는 그런 개념들을 쉬운 예를 들어 설명하여  비전공자들도 어렵지 않게 이해할 수 있도록  도와준다. 전공자들도 이해도를 높일 수 있는 계기가 될 수있다. 가장 마음에 드는 것은 인터페이스에 대한 설명이다. 처음에 필요한 기능을 어디서 찾아야하나 해매던 기억이 난다. 이름뿐만 아니라 무슨 기능을 가지고 있는지 언제 사용되는지를 알 수 있게해준다. 책 자체는 실전이라고 하나 처음 접하는 사람들도 금방 따라할 수 있는 수준인것 같다. 소셜 네트워크 게임 만들기라는 책답게 페이스북과 같은 소셜 네트워크 서비스와의 연동법도 설명되어있다. 참고서는 여러가지가 있지만 지금가지 봐온 책중에서는 지금당장 유니티를 시작하기에 가장 좋은 책인것 같다. 시간이 지나면 유니티는 업데이트도 빠른편이고, 국내 인지도도 점점 높아지고 있기때문에 더 쉽고 좋은 내용의 책이 나올것이다.