Jetson/i2cProject_with_Jetson 12

i2c공부 1)

i2c에 대해 좀 더 공부가 필요하다고 느꼈다.그래서 i2c에 대해 리뷰를 해보려한다. ( 현재 프로젝트에서는 Linux와 Arduino IDE에서 i2c통신을 하고 있으니 해당 함수들에 대해 자세히 파헤치고, 프로젝트에 적용하려 한다. ) 시작해보자Linux에서 사용하는 라이브러리는 i2c-dev를 이용한다.참고는 두곳에서 참고하여 해석해보았다. https://www.kernel.org/doc/Documentation/i2c/dev-interface https://github.com/Leonamin/Sensor-Test/blob/master/Guide/Linux%20I2C%20Guide.md Sensor-Test/Guide/Linux I2C Guide.md at master · Leonamin/Sens..

server에 올라오는 명령어에 따라 Fan 제어 3)

실제 기구에 올라가기전 마지막 테스트이다. 코드들을 전부 실제 기구에 올라가게 맞추고, 제어해보기 위해 수정작업을 진행한다. 최대한 기구와 환경을 비슷하게 맞추기 위해 보드를 총 5개 가져왔다.일단 바뀐점이 있다.우노는 UART통신을 컴퓨터와 통신 핀을 제외하면 UART핀이 없음 ( UART핀 하나는 디버깅용으로 하나 남겨둘 예정이라는 것을 참고)따라서 SoftwareSerial 이라는 라이브러리로 통신을 할 수 있지만, i2c통신하는데 있어 충돌이 일어날 확률이 많음따라서 우노를 쓰지 않기로 함대안책) 듀에를 사용하여 하드웨어로 제공되는 UART를 사용할 예정  연결은 완료되었고, 코드는 현재 보드 4개는 전부 구동이 가능하다.문제점이 생겼다.i2c는 보통 32바이트를 주고 받는다.따라서 나도 그렇게 ..

server에 올라오는 명령어에 따라 Fan 제어 2)

이제 마지막으로 서버에 올라간 데이터를 실시간으로 받아서 c++로 명령어를 전송하고, c++에서 명령어를 받아 명령어를 아두이노에게 전달할 수 있게끔 만들어서 i2c통신으로 아두이노에게 명령을 전달한다.그리고 아두이노가 명령에 따라 i2c통신을 이용하여 젯슨에게 데이터를 주고, 그 데이터를 http통신을 활용하여 서버에 올리는 것을 포스팅해보겠다. 해당 코드들은 다음 깃헙에 남겨두겠다. (마지막 숫자일수록 최근 버전)https://github.com/PCY00/KSensor/tree/main/24_11_8/V1 KSensor/24_11_8/V1 at main · PCY00/KSensorContribute to PCY00/KSensor development by creating an account on G..

server에 올라오는 명령어에 따라 Fan 제어 1)

나는 지금부터 i2c에 대해 이해하고, 데이터를 서버에 보내보기도 했다.이제 이것을 활용할 일만 남았다. 따라서 이제 부터 프로젝트에 관련한 포스팅을 남길려한다.따라서 기록물이 될 확률이 매우 높기 때문에 카테고리 이름을 i2c를 이용한 프로젝트라고 바꾸겠다. 프로젝트의 간략한 설명 : 사용자의 명령어를 받아 Fan을 속도 제어 해야 할 것들- Jetson Nano와 Arduino Due의 i2c 통신으로 Fan 3개, PMS7003 3개의 값을 서버에 Post하기- Jetson Nano와 Server 간 Mqtt로 명령어 실시간 통신- Mqtt에서 받은 값 Arduino Due로 i2c 전송하기 대강 3개정도의 개발과정을 거쳐 보겠다. 코드는 전부 github에 올려두고 여기서는 기록만 할 예정이니 코..

i2c로 받은 데이터 server에 post - sensor data post

이번 포스팅에서는 sensor 값을 받은 데이터를 i2c를 통해 젯슨나노에 값을 보내고 젯슨에서는 그 값을 서버에 post하는 작업에 대해 포스팅해보겠다. 이전 작업이 어려운거고 이번 포스팅은 기록이라고 보면 되겠다.이번 포스팅에서 영상은 제외했다. 참고바란다. 시작하겠다. 개발 환경- Jetson Nano B01 4GB- Arduino Due- Ubuntu 20.04 먼저 Fan 3개를 PWM제어를 할 예정이고, tach핀을 사용하여 rpm을 측정하고 그 rpm 값을 서버에 보내는 걸 해보겠다.* 전압은 fan, 아두이노 듀에 둘다 외부 전압으로 준다는 점 유의바란다. 순서는 다음과 같다.1. 아두이노 듀에에서 PWM제어를 하고, tach핀을 활용하여 RPM 측정해보기2. RPM이 맞다는 가정하에 ( ..

i2c로 받은 데이터 server에 post - Jetson Nano requests a value from Arduino via i2c, then uploads it to a server

먼저 바뀐 보드 듀에에 i2c 연결을 하고 연결이 되었는지 체크하자. 일단 하나만 연결하겠다.sudo i2cdetect -r -y 1  전체 코드는 나의 깃헙을 참고하라 (코드때문에 길이가 너무 길다..)https://github.com/PCY00/KSensor/tree/main/24_11_8/HTTP_I2C/basic KSensor/24_11_8/HTTP_I2C/basic at main · PCY00/KSensorContribute to PCY00/KSensor development by creating an account on GitHub.github.com 깃헙 안에 있는 코드를 수행하면 아래 서버에 다음과 같이 값이 올라가는 것을 확인할 수 있다.  * 원래 i2c 함수에서 return 방식을 b..

i2c로 받은 데이터 server에 post - send data with Jetson nano

i2c통신으로 젯슨나노와 서로 값을 주고 받는 것은 해보았다. 이제 제목대로 서버에 값을 올릴려면 여러 단계를 거쳐야한다.그 단계를 천천히 밟아 나가보겠다. 첫번째 단계인 Jetson Nano에서 값을 올리는 것이다.일단 http.h와 http.cpp를 만들어 준다. 잠시 먼저 라이브러리를 설치해주자 json과 curl을 사용하기 때문에 둘다 설치해준다.sudo apt update sudo apt install libcurl4-openssl-dev libjsoncpp-dev *  주의사항만약 json.h를 찾지 못할 경우 json.h의 위치를 알아야한다.sudo apt install mlocatelocate json.h 확인해보니 include 안에 jsoncpp안에 json안에 json.h가 있다. 따..

제품 변경 (아두이노 Due)

제품을 변경하게 된 이유는 내가 쓰고 있는 아두이노는 메가인데, 메가 2560은 인터럽트 핀이 총 6개이다.하지만 내가 하고 있는 프로젝트에서 통신 방법을 시리얼통신으로 하고 있는데 이것을 i2c통신으로 바꾸게 되면서 인터럽트 핀를 쓰고 있던 자리가 뺏겼다.  메가2560Due인터럽트 핀 번호2, 3, 18, 19, 20, 21모든 디지털 핀 따라서 모든 디지털 핀이 인터럽트를 제공하는 Due로 바꾸게 되었다. Due에 대한 간단한 IDE 설정을 보자 툴에서 보드 매니저를 클릭한다.  이후 위에 due를 입력하여 보드의 패키지를 다운받는다.2개의 포트가 있는데 아래와 같은 이유로 우리는 programming port를 사용할 예정이다. 이렇게 해서 듀에를 업로드 해서 이용하면 된다. 만약 본인이 사용하는..

Jetson Nano and Arduino Due

젯슨나노에서 아두이노 Due를 사용하려면 windows랑은 다른 방법을 사용해야한다. 사진으로 설명할테니 차근차근 따라와라  아마 windows랑 같은 식으로 due의 보드 패키지를 설치하려했다면 다음과 같은 오류를 만난다.Tool arm-none-eabi-gcc is not available for your operating system. 운영체제가 맞지 않는다는 뜻이니 머리 좋은신 분들이 만들어 놓은 것을 사용하자 - file -> Preferences에 들어가면 다음과 같이 뜬다. 이후 아래 Additional Boards Manager URLs: 에 다음을 붙여 넣어라https://per1234.github.io/ArduinoCore-sam/package_per1234_samarm64_index...

Jetson Nano와 아두이노 간의 I2C 통신 3)

이번 포스팅에서는 I2C로 마스터가 슬레이브에게 값을 요청하면 값을 전달해주는 작업을 해보겠다. 먼저 진행은 다음과 같이 진행할 예정이다.- 젯슨과 아두이노와의 LED를 제어하고, 제어한 LED의 상태를 아두이노로 부터 받기- start라는 신호를 젯슨나노가 보내면 아두이노는 0,0,0,0,0,0,0,0,0,0,0라는 값을 보내보기 젯슨과 아두이노와의 LED를 제어하고, 제어한 LED의 상태를 아두이노로 부터 받기먼저 아두이노 코드를 수정하자우리가 전에 짰던 코드는 마스터에게 요청을 받으면 값을 주긴하지만 ReadRegister를 적용하지 않았다.따라서 그것을 적용하여 진행해볼 예정이다. 코드는 다음과 같다.#include #define LED 13#define SLAVE_ADDRESS..