Autonomous Lawn Mower/Raspberry pi & STM32
-
라즈베리파이 + 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
-
라즈베리파이 부팅시 프로그램 자동 실행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주를 ..
-
라즈베리파이 두번째 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..
-
라즈베리파이 → 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, ..
-
STM32cubeIDE와 github 연동Autonomous Lawn Mower/Raspberry pi & STM32 2025. 4. 6. 00:26
Github를 STM32CubeIDE와 함께 사용하면 개발자로서의 생산성이 크게 향상될 수 있다. IDE를 Github에 연결하면 코드 변경 사항을 쉽게 추적하고, 다른 개발자와 협업하고, 프로젝트의 다양한 버전을 관리할 수 있다. 게다가 Github를 사용하면 다른 사람과 작업을 쉽게 공유할 수 있어 오픈 소스 개발을 위한 훌륭한 플랫폼이 된다. 나는 개인 개발 중이고 github를 메인 서버로 사용하고 여러 컴퓨터에서 github에 연결할 수 있고, 개발 이력을 관리할 수 있어서 연동하게 되었다. 1. 우선적으로 github.com에 로그인해야 한다. 2. GitHub에서 Repository를 생성하려면 계정에 로그인하고 화면 오른쪽 상단 모서리에 있는 "+" 버튼을 클릭한 다음 "New repo..
-
IMU sensor (MPU-6500) python code with thonnyAutonomous Lawn Mower/Raspberry pi & STM32 2025. 2. 15. 11:55
문제: MPU-6500은 가속도 값과 자이로 값만 출력한다. 필요한 값은 거리 값. 가속도를 적분해서 속도를 얻고 속도를 적분해서 거리를 얻는 코드는 가속도 값의 편차 때문에 속도와 거리값이 계속 증가한다. 다른 방법을 생각해 봐야겠다. MPU-6500과 라즈베리파이 연결I2C 연결 방법 Raspberry Pi Congifuration에서 I2C를 설정하고, 터미널에서 sudo reboot 실행. 업데이트가 오래된 경우 또는 smbus, i2c installsudo apt updatesudo apt install python3-smbus i2c-tools I2C 연결하고 default address 확인 파이썬 코드 import smbus import time # MPU-6500 I2C address..
-
DMA를 이용한 2ch ADCAutonomous Lawn Mower/Raspberry pi & STM32 2025. 2. 8. 11:37
DMA는 CPU 개입 없이 ADC에서 메모리로 변환 결과를 자동으로 전송하여 센싱 데이터를 실시간으로 측정가능하여, 머신 보호기능 구현에 사용한다. DMA를 사용하면, CPU 부하를 감소하여 CPU가 중요한 의사 결정 및 제어 기능에 집중할수 있고, 지속적이고 고속의 데이터 전송을 통해 보호 기능을 신속하게 구현 가능하다. 또한 CPU를 사용하지 않기 때문에 칩 전력 소비가 감소된다. STM32F401 Ucleo 보드에서 ADC1의 IN10과 IN11을 이용한다. 이를 위해 필요한 설정은 아래와 같다. Continuous Conversion Mode를 enabled하고 DMA Continuous Requests를 enable한다. DMA continuous requests는 DMA 설정을 한 후에 선택 ..
-
Systick callback functionAutonomous Lawn Mower/Raspberry pi & STM32 2025. 2. 1. 23:46
ioc 파일 설정 설정 후 SysTick_Handler에 HAL_SYSTICK_IRQHandler();를 추가해주어야 함. SysTick_Handler가 있는 위치는 Core > Src > stm32f4xx_it.c 에 있다. 예제 코드 // variables for system schedulervolatile uint32_t ms_counter = 0;volatile uint32_t tick_1ms = 0;volatile uint32_t tick_10ms = 0;volatile uint32_t tick_100ms = 0;volatile uint32_t tick_1s = 0; void HAL_SYSTICK_Callback(void){ // return uwTick in the __weak ui..