Autonomous Lawn Mower
-
라즈베리파이 + VSCode 무선 python 다운로드Autonomous Lawn Mower/Raspberry pi & STM32 2025. 6. 15. 00:18
1. VS code를 열고, 왼쪽에 있는 Extensions탭에서 Remote-SSH를 설치한다. 2. 왼쪽하단에 있는 녹색 화살표 아이콘을 클릭하고 Remote-SSH: Connect to Host...를 선택한다. 3. 라즈베리파이의 IP 주소와 ID, 패스워드를 입력한다.4. 연결되면 VS Code는 라즈베리파이의 파일 시스템에 엑세스 할 수 있다. 5. 새로운 Terminal을 열어서 python -V을 입력하여 파이썬 버전을 확인한다. 6. 터미널에서 python *.py를 사용하여 실행한다. 7. 폴더 확인은 Gui 기반의 WinSCP를 사용한다. ※ 참고자https://www.youtube.com/watch?v=VmVXtCIok8I
-
모터 PI 제어 주기 변경 1s to 50msAutonomous Lawn Mower/Full bridge 모터 제어 2025. 5. 21. 11:31
모터 동작속도가 느려서 모터 제어 주기를 기존 1초에서 50ms로 변경하였다. 제어주기는 TIM4의 HAL_TIM_PeriodElapsedCallback 함수를 사용하여 구현한다.. 50ms 인터럽트를 구현하기 위한 변수 설정은 아래와 같다. APB1 timer clock = 60 MHzPrescaler = 60000 - 1Counter Period (ARR) = 50 - 1계산식은 아래와 같다. PI 제어의 기본 데이터인 RPM 값이 기존 1초로 설정되어 있어서 50ms로 변경시 기본 값에 200배를 더해 주어야 한다. 모터 제어 코드는 아래와 같다. #include "motor_control.h"#include // Initialize motorsvoid motor_control_init(..
-
라즈베리파이 부팅시 프로그램 자동 실행Autonomous Lawn Mower/Raspberry pi & STM32 2025. 5. 2. 10:03
2025년 6월 2일go 명령어에서 lawn mower motor가 안돌아가고, speed up을 해야 돌아감. time.sleep(10)으로 변경하니 잘 동작함 2025년 5월 17일 기존 코드로 부팅했을 경우 자주 HM-10 블루투스를 위한 시리얼 통신이 잘 동작하지 않는 것을 확인했다. 라즈베리파이 PIN26에 heartbeat용 LED를 추가해서 동작을 확인했다. 코드를 부팅시 autostart를 하면 LED는 잘 동작하는데 시리얼 통신은 자주 동작하지 않았다. 라즈베리파이를 초기화 하는 등 해봤지만 소용이 없었다.문제의 원인은 시리얼 포트가 부팅시 완전히 초기화되지 않는게 원인이었다. 약간의 딜레이를 해주어서 시리얼 포트를 초기화 시켜주어야 한다. 이 후 잘 동작한다. 이것 때문에 거의 2주를 ..
-
Assert 함수Autonomous Lawn Mower/Embedded C 2025. 4. 29. 03:11
Assert는 발생하면 절대 안되는 것들을 Assert(조건) 함수 내에 조건으로 설정하여 이 조건이 코드 내에서 참이 아닌 경우 printf 함수를 이용하여 문제 파일 및 문제 라인을 출력하는 기능을 수행한다. Assert 함수는 디버깅시 활성화 했다가 release 할때 제외한다. Assert 함수 설정은 .ioc 파일내에 Project manager > Hal settings > Enable Full Assert 에서 설정한다. https://www.youtube.com/watch?v=JF4rB3wljRA
-
라즈베리파이 두번째 UartAutonomous Lawn Mower/Raspberry pi & STM32 2025. 4. 24. 11:34
Raspberry Pi 4에서 ttyAMA2(UART2)를 사용하려면 device tree overlay를 사용하여 수동으로 활성화하고 특정 GPIO 핀에 할당해야 한다. 1. UART2를 위한 GPIO 할당ttyAMA2(UART2)는 기본적으로 GPIO에 연결되어 있지 않으므로, 사용 가능한 대체 기능 지원 GPIO에 매핑해야 한다.UART2의 일반적인 GPIO 옵션:TXD2: GPIO0, GPIO4, GPIO12, GPIO32RXD2: GPIO1, GPIO5, GPIO13, GPIO33이중 GPIO0 (Pin27)과 GPIO1(Pin28)을 사용한다. HM-10 블루투스 통신모듈과 라즈베리파이4를 아래 그림과 같이 연결한다. 2. UART2를 활성화 하기 위해서 /boot/firmware/config..
-
초음파 Ultrasonic 센서Autonomous Lawn Mower/Sensors 2025. 4. 10. 10:32
초음파 센서는 HC-SR04를 사용하였다. 하드웨어 셋업은 아래와 같다. Trig 신호는 PA4 GPIO 출력을 이용하고 반사되서 되돌아 오는 신호는 Timer5 channel1이 사용되었다. Timer5 configuration은 다음과 같다. APB1이 60MHz라서 1us를 만들기 위해서 prescaler를 60으로 설정하였다. 인터럽트를 사용하기 위해서 NVIC settings에서 TIM5 global interrupt를 enabled 해줘야 한다. 인터럽트를 사용하기 위해서는 main() 함수에서 인터럽트5의 채널1을 초기화 해주어야 한다. 초음파 센서를 이용한 거리 측정을 위한 C 코드#include "ultrasonic.h" // Ultrasonic#define TRIG_PIN GPIO..
-
라즈베리파이 → STM32 uart를 통한 모터 제어 2Autonomous Lawn Mower/Raspberry pi & STM32 2025. 4. 8. 10:07
Lawn Mower의 위치를 확인하기 위해서 Traction 모터의 위치 제어가 필요한데 기존 모터는 엔코더가 없다. 그래서 모터를 엔코더가 달린 모터(JGB37-520 110rpm)로 변경하였다. 형상은 아래와 같다. DC 모터가 있고 모터 출력이 기어로 연결되어 모터 토크를 증가시킨다. 다행히 브라켓은 기존 것을 그대로 사용가능하였다. 모터 전원으로 BTN7960의 12V full bridge 출력을 사용하였고, 엔코더 전원은 Nucleo보드에서 5V를 입력하였다. PWM 20%인 경우 엔코더 출력은 아래와 같다. 그런데 모터 2개가 10ms 동안 회전수가 상이하였다. 중국산이라서 모터 내부 특성 값들이 동일하지 않은 것 같다. 그런데 100% 듀티를 입력한 경우 Left Motor가 106rpm, ..