기본 콘텐츠로 건너뛰기

RF24 한 모듈에서 Read/Write 하기

RF 통신을 사용하는 간단한 장비 개발을 진행하게 돼, 가장 가격이 낮기도 하고 보편화됀 2.4Ghz RF 모듈을 사용하기로 했다. 위 보드를 사용하기 위해서 RF24 라이브러리를 사용할때 기기마다 Write 하고 Read 하는 기기가 별도로 지정되어 있으면 별 문제가 없지만, 한 기기에서 Read/Write를 동시에 하는 경우에는 문제가 생긴다. RF24 radio ( 9 , 10 ) ; radio . openWritingPipe ( ADMIN_ADDRESS ) ; radio . openReadingPipe ( 1 , RELAY_ADDRESS ) ; radio . startListening ( ) ; if ( radio . available ( ) ) { uint8_t * packet = ( uint8_t * ) calloc ( sizeof ( uint8_t ) , PACKET_SIZE ) ; radio . read ( packet , PACKET_SIZE ) ; radio . writeFast ( packet , PACKET_SIZE ) ; delete [ ] packet ; } 위와 같이 RELAY_ADDRESS로 받은 신호를 받아서 ADMIN_ADDRESS로 보내주기만 하는 코드가 있다고 가정하자, 이 경우 RF24 라이브러리에서는 수신은 가능하지만 송신은 불가능한 문제가 있다. 이 경우 writeFast의 반환값이 3번 정도는 송신에 성공했다는 true값을 반환해서 문제점을 찾기가 어렵다.  해결법은 다음과 같다. RF24 radio ( 9 , 10 ) ; radio . openWritingPipe ( ADMIN_ADDRESS ) ; radio . openReadingPipe ( 1 , RELAY_ADDRESS ) ; radio . startListening ( ) ; if ( radio . available ( ) ) { uint8_t * p...
최근 글

인제 서킷 주행기

라이센스 따고 오랫만에 오는 인제 서킷 어제까지의 주문진 일정을 마치고, 다른 인원이랑 서킷 타기로 해서 인제로 모였다. 이번년도 목표는 2분 25초라 지금 못하면 나중에 또 와야한다. 라이센스 가지고 있는게 혼자라 열심히 동승만 시켜주고 온듯 죽음의 3세션 예상한 동승 인원은 총 3명 7, 10, 11 세션을 구매했다.  첫 세션은 랩타이머 설정을 까먹어서 (...)  기록을 날려먹었다. 쉬고 있던 형들이 측정해준 시간은 2분 23초  목표는 달성했지만 어림 잡아 측정해준거라서 아쉬운 상황. 아직 2세션이 남아있다. 아래는 오버스티어 발생 영상들 디젤이라 프론트 헤비긴한데...타이어가 영 별로기도 하고 오버가 잘난다. 그래도, 점점 기록은 단축돼서 2:18.33 기록 6단 자동변속기 락업좀 잘 잡아주면 좋겠다...직선에서 162km/h... 꼭 다음차는 DCT나 수동.. laptimer 기록 하지만 역시 순정 패드와 15인치 에코 타이어는 3 세션을 견디지 못하고 다 찢겨 나갔다... 실 나온거 처음본다 순정 디스크랑 패드랑 다같이 갈려나가서 전부 교환 판정 이참에 브레이크 좋은거로 바꿀까... 타이어도 뭐...당연히... 이럴줄 알고 타이어 4짝 준비해둠 돈은 많이 나갔지만 재밋다 ㅎㅎ 근데 타이어랑 브레이크 다 걸레짝 됐는데 왜 랩이 점점 좋아지지? 

EF쏘나타 계기판 Project Cars 2 연동

테스트 사진 코로나 때문에 나가지도 못하고... 집에서하는 게임이랑 연동 되는 계기판을 만들어봤다. EF쏘나타 계기판이 속도 신호랑 RPM신호가 PWM신호로 들어가는데, 비슷한거 하실 분들은 이 CAN신호 보내면 되는 이후 모델 계기판으로 하시는걸 추천드립니다. (파형 hz구하는 식은 아래 코드 참조) template < typename T> uint32_t kmHToHz(T speed) { // 200 = 50hz auto test = static_cast < double >(speed); if (test > 240 ){ test = 240 ; } double speedHzOutput = test * 2.5 ; ESP_LOGI( "Speed" , "%lf hz" , speedHzOutput); return static_cast < uint32_t >(speedHzOutput); } template < typename T> uint32_t RPMToHz(T rpm) { // 1000 = 30.9hz auto test = static_cast < double >(rpm); if (test > 8000 ){ test = 8000 ; } double hz = test / 30 ; ESP_LOGI( "RPM" , "%lf hz" , hz); return static_cast < uint32_t >(hz); } 나중에 유로트럭이나 프카1 패킷에도 호환 시키려고 함수템플릿 적용

Orange Pi RK3399 10.1 Touch LCD 연결방법

이번에 Orange Pi RK3399 10.1인치 터치LCD가 나왔다. https://www.aliexpress.com/item/4000055556030.html 글쓰는 9월 18일 기준으로 59달러니까 10.1인치에 터치모니터 구성이면 가성비 좋은 제품이긴한데 문제가 연결하는 방법을 찾을수가 없다. 이리저리 시도해보다가 결국 방법을 찾았다. OS는  http://www.orangepi.org/downloadresources/  에서 받아서 진행하면 된다. 우선 케이블쪽에 적혀있는 1과 LCD 보드쪽에 적힌 2를 같은 방향으로 가게 꼿아주면 된다. 그리고 반대쪽은 방향을 거꾸로해서 케이블쪽에서는 40적힌곳이 보드쪽에서는 삼각형 표시가 있는 방향으로 꼿아주면 된다.  터치 패널쪽도 거꾸로 꼿아줘야한다.  접점이 커넥터 위쪽으로 가도록 꼿아준다. Orange Pi랑 연결할때도 중간에 한번 꼬아서 한쪽은 커넥터 위로 접점이 가게 하고, 한쪽은 커넥터 아래로 접점이 가게 꼿아주면 정상 동작한다.

더 뉴 아반떼(MD) 오토 기어봉 교체하기 (DIY)

운전하기 편하다... 저번주에 친구 차를 타보고 K7 기어봉에 대한 뿜뿌가 왔다. 주로 운전할때 한쪽 손은 기어에 올려두고 운전하는데 넓은 기어봉이라 그런지 확실히 편하다... 검색 해보니 기어봉 직경은 맞는거 같아서 DIY 시작! 품번은 46720D4200WK 다른 기어봉(46720D4100WK)은 플라스틱으로 마감처리 됐다는데 K7에서 맛본 촉감(?)을 위해 4200으로 주문했다. 기어봉은 예상외로 쉽게 뽑힌다 우선 기어봉 탈거! 기어봉을 N으로 옮긴 다음,   기어봉에 달린 버튼을 눌러주면서 위로 힘을주면 어느순간 '텅' 하고 뽑혀나온다. K7 기어봉을 바로 쓸수 있으면 좋겠지만,  측면과 안쪽에 있는 튀어나온 플라스틱 부분들을 제거해줘야한다. 외부에 있는건 적당히 커터칼로 제거 가능하다. 제거 하면 이렇게 된다. 뭔가 될거같은 자신감이 든다. 외부만 처리하고 기어봉을 바로 장착하게 되면 제대로 들어가질 않는다. 아쉽게도 사진을 남겨두지 않았는데  1. 기어봉 금속 부분을 탈거하고 U자형 고정쇠를 제거 2. 기어봉 안쪽에 튀어나온 부분들을 제거 위 2개 작업을 해주면 잘 들어간다. 몰론 고정쇠가 없어져서 제대로 고정은 되지 않는다. 그렇다고 해서 있어도 고정은 안되니 참고 (고정쇠 위치가 다른듯) 장착후 사진  20,900 원 짜리 DIY치고는 제일 만족스럽다 ㅋㅋㅋ

android -> androidx 전환시 오류 고치기

구글 IO 2018에서 발표된 JetPack은 기존의 'com.android.support.*' 라이브러리들을 통합한 라이브러리 라고 보면 편하다. 그래서 원래 있던 프로젝트들을 위와같이 바꿔주고 빌드를 하면... 짠. 버그가 발생한다. 프로젝트 맨위에 'gradle.properties' 파일에 아래내용을 추가해준다. android.useAndroidX=true android.enableJetifier=true   원래 Android Studio 버전이 3.2.0 이상이면 마이그레이션 기능을 지원하지만, 일일히 옮기면 저런 버그가 발생하니 주의!

Raspberry Pi RTSP 솔루션별 지연 시간 비교

#  설치법은 인터넷에 많아서 넘어가겠습니다 . Raspberrypi  에서 스트리밍을 하기 위한 방법으로는 크게 아래 3 가지 방법이 있습니다 . 1.      Raspivid -> VLC 2.      Gst-rtsp-server  3.      V4l2rtspserver    위  명령어들을  하나씩  실행해 보며  RTSP  지연을 측정해보면  다음과  같습니다 . 테스트  기기는  Google Project Tango rpi  와 태블릿  모두  5Ghz  무선 인터넷 환경 command Delay (sec) Connection  수 (MAX : 6) raspivid -n -w 1920 -h 1080 -b 4500000 -fps 30 -vf -hf -t 0 -o - | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/test}' :demux=h264 ~6 6 ./test-launch "( rpicamsrc preview=false bitrate=2000000 keyframe-interval=15 ! video/x-h264, framerate=15/1 ! h264parse ! rtph264pay name=pay0 pt=96 )" ~3 1 v4l2rtspserver -F30 -H 1080 -W 1920 -P 8554 /dev/video0 ~3 6 1 번  방법은  가장  간단하게  서버를  구축 할수  있지만 ,  가장  느...