전체 글 124

PWM제어 with Jetson Nano 3)

특정 레지스터에서 1바이트 값을 읽어옵니다. 이번엔 라이브러리에 대해 심층분석에 들어가보자https://github.com/PCY00/Ubicomp_Lab/blob/main/AIoT/U-Neck/MotorControl/Servo/V1/JHPWMPCA9685.cpp Ubicomp_Lab/AIoT/U-Neck/MotorControl/Servo/V1/JHPWMPCA9685.cpp at main · PCY00/Ubicomp_Labstarted 2022.06. Contribute to PCY00/Ubicomp_Lab development by creating an account on GitHub.github.com헤더파일도 같이 있으니 확인하자 일단 먼저 헤더파일부터 확인해보자#include #include #i..

PWM제어 with Jetson Nano 2)

코드에 대해서 심층 분석하기 위해 포스팅을 한다.내 공부를 위해 정리하면서 하는 포스팅이니 틀린부분이 있으면 댓글로 알려주면 감사하다. 먼저 저번 블로그의 메인함수부터 보겠다.https://github.com/PCY00/Ubicomp_Lab/blob/main/AIoT/U-Neck/MotorControl/Servo/V1/servoExample.cpp Ubicomp_Lab/AIoT/U-Neck/MotorControl/Servo/V1/servoExample.cpp at main · PCY00/Ubicomp_Labstarted 2022.06. Contribute to PCY00/Ubicomp_Lab development by creating an account on GitHub.github.com #includ..

롤링포토(?) 만들기

이 포스팅은 아마 27일에 열릴 것 같다. 롤링포토? 같은 걸 만들건데, 선물로 줄 제품이기에 27일 이후에 열릴 예정이다. 일단 아이디어는 인스타 릴스에서 어떤 외국 아주머니(?)가 종이로 만든건데, 만드는 방법은 나와있지 않다.따라서 외부 디자인과 사진이 어떻게 넘겨지는지는 비슷한 방법으로 구현하고, 나머지는 직접 생각해서 만들어 봤다. 먼저 해당 포스팅을 따라하고 싶은 사람이 있다면 도움이 되길 바란다. 준비물3D 프린터기 ( 3D프린터기가 필요하다.. )필라멘트 PLA (색상은 상관 없음)5파이 3T 원형 네오디움 자석 x 16A4용지와 프린터기  준비물부터 진입장벽이 조금 있을수 있다.그래도 나는 완성도 있는 선물을 주고 싶어 3D프린터기를 선택했다. 시작하겠다. 사진 크기 설정 먼저 사진 크기..

RTC사용해보기

Data와 Time을 한번 UART로 보내볼건데, 먼저 시간을 우리가 설정해줄것이다. 먼저 RTC란 현재의 시간을 유지시키는 컴퓨터 시계이다.그래서 현재의 시간은 우리가 정해주고 (그러기 싫으면 NTP) 시간의 흐름을 출력해보자 먼저 외부클럭을 다음과 같이 설정해주자  날짜 시간을 설정해준다.RTC의 동작 주기는 기본적으로 LSE(32.768 kHz) 또는 LSI(약 32 kHz) 클럭을 사용RTC를 정확히 1Hz로 동작시키기 위해, 분주기를 설정하여 클럭을 나눈다.RTC 클럭을 1Hz로 만들기 위한 Prescaler 계산  그리고 다음과 같은 코드를 짜준다.RTC_HandleTypeDef hrtc;UART_HandleTypeDef huart2;/* USER CODE BEGIN PV *//* USER C..

STM32 2024.11.26

I2C로 LCD 제어해보기

STM32407VE 에서 I2C를 먼저 설정해주자 설정은 이렇게만 해주고 코드를 작성하자. 코드는 다음과 같다.라이브러리는 https://github.com/alixahedi/i2c-lcd-stm32 GitHub - alixahedi/i2c-lcd-stm32: i2c lcd STM32 libraryi2c lcd STM32 library. Contribute to alixahedi/i2c-lcd-stm32 development by creating an account on GitHub.github.com이곳에서 제공해준 라이브러리를 사용한다. I2C_HandleTypeDef hi2c1;I2C_LCD_HandleTypeDef lcd1;/* USER CODE END 0 *//** * @brief The a..

STM32 2024.11.25

STM32F407VE - 기초 7) Timer

Timer를 한번 다루어 보겠다.폴링과 인터럽트로 해보겠다. 폴링은 인터럽트만 체크하지 않으면 됨을 이전 포스팅에서 계속 다루었다. 이렇게 하고, LED하나를 달아 점등하게 했다. 그리고 이것을 오실로스코프를 찍어본 결과이다.코드는 다음과 같다. HAL_TIM_Base_Start(&htim6); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(__HAL_TIM_GET_FLAG(&htim6, TIM_FLAG_UPDATE)) { __HAL_TIM_CLEAR_IT(&htim6, TIM_IT_UPDATE); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); } /* ..

STM32 2024.11.25

MCU Internal 온도 측정하기

먼저 데이터 시트에서 온도를 어떻게 계산할 수 있는지 확인하자  Temperature (in C) = {(V25 - VSENSE) / Avg_Slope} + 25 이고VSENSE = ADC 채널의 값 * 3000 / 4096V25는 0.76 = mV로 바꾸면 760이다.Avg_Slope은 mV이니까 그대로 2.5따라서 {( VSENSE- 760 ) / 2.5 } + 25 이 된다.나중에 수식에 넣어주면 된다 다음을 따라서 ADC를 설정해주자  다음으로 코드를 짜주자 (폴링방식으로 진행함) uint32_t adc_data;float Temp;void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){ adc_data = HAL_ADC_GetValue(&hadc1); ..

STM32 2024.11.24

STM32F407VE - 기초 6) ADC-2

이전 포스팅이어서 인터럽트를 사용해 ADC를 사용해보겠다.핀 설정을 하나만 하겠다.  이렇게 인터럽트를 설정해주자그리고 다음 코드를 넣자uint32_t adc_val[3];float volt[3];void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){ adc_val[0] = HAL_ADC_GetValue(&hadc1);} HAL_ADC_Start_IT(&hadc1); /* USER CODE BEGIN WHILE */ while (1) { volt[0] = adc_val[0]*3.3/4096; printf("adc_val[0]=%ld, Volt[0]=%f\r\n", adc_val[0],volt[0]); HAL_Delay(100); 그..

STM32 2024.11.24

STM32F407VE - 기초 5) ADC

이번 포스팅에서는 ADC를 이용하여 전압을 측정하여 시리얼 통신으로 값을 표기하는 활동을 해보겠습니다.총 3가지로 해볼것이다.- Polling- Interrupt- DMA USART2로 통신포트는 사용할 것이고, 그것은 이전 포스팅에서 알수 있다. Polling 먼저 해보겠다.그리고 배선은 다음과 같이 해주고, 저항은 전부 10k옴이다.(3.3V 2.2V 1.1V가 나오게끔하기 위해 10k옴을 직렬연결했다) 다음은 ADC를 설정하겠다.총 3개를 사용할거고, 채널은 0,1,4를 사용하겠다. ( 3, 2은 USART2 RX, TX 에서 사용중) 밑처럼 체크해주면 알아서 핀을 설정해준다 ( 외쳐 갓 IDE )  3개를 적용해야하니 위처럼 3으로 바꾸고 채널을 설정해주자 여기서 저것들이 무엇인지 궁금할 수 있다..

STM32 2024.11.23

STM32F407VE - 기초 4) USART-2

오늘은 USART를 인터럽트 방식과 DMA방식으로 해보자 먼저 인터럽트 방식으로 하자.저번 폴링방식에서 인터럽트 부분을 켜주면 되는데 같이 알아가보자 NVIC에서 USART2 인터럽트를 Enable해주자 저번과 같은 프로토콜을 사용할 것이고, 코드는 아래와 같다./* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 */uint8_t rx_data[4];void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(huart->Instance == USART2){ if(rx_data[0] == '2' && rx_data[3] == '3..

STM32 2024.11.22