본문 바로가기

MCU

(18)
MQTT 서버까지 진행 STM32 보드에서 수집한 센서 데이터를 전송하고, 실시간 웹 대시보드에서 확인 한 구조를 일단 만들었다.데이터 전송 구조STM32: 온습도 센서에서 데이터 수신, ESP32에 전송ESP32: WIFI/MQTT로 Raspberry pi(Broker)에 센서 데이터를 publishRaspberry pi: Broker 동작 + Web server는 센서 데이터를 subscribeWiFi Provisioning처음엔 간단히 SSID, password 정보를 하드코딩 해두었다. ESP32와 RaspberryPi 사이에 구현되어 있는 BLE를 통해 WIFI 설정을 하는 것으로 기능을 추가했다. MQTT 브로커 주소도 설정하도록 추가했다.ESP32에 BLE 구조 추가기존에 온습도 데이터를 전송하는 것과 별개로 p..
ESP32-C3 https://www.espressif.com/en/products/socs/esp32-c3 ESP32-C3 Wi-Fi & BLE 5 SoC | Espressif SystemsESP32-C3 is a single-core Wi-Fi and Bluetooth 5 (LE) microcontroller SoC, based on the open-source RISC-V architecture. It strikes the right balance of power, I/O capabilities and security, thus offering the optimal cost-effective solution for connected dewww.espressif.com Datasheethttps://www.espre..
FreeRTOS 센서마다 태스크 센서마다 태스크를 만들도록 변경해봤다. https://github.com/ipondroid/mcus GitHub - ipondroid/mcus: STM32 - ESP32 - RaspberryPiSTM32 - ESP32 - RaspberryPi. Contribute to ipondroid/mcus development by creating an account on GitHub.github.com 왜 바꿨을까?처음에는 단순하게 DHT22 센서 하나만 읽어서 온습도 데이터를 LCD에 표시하는 것을 목표로 했고, CAN과 BLE를 연결해보는데 집중했다. 이제 센서를 추가해보기로 하면서 기존 구조를 손보기로 했다.기존 구조의 한계이전에는 단순하게 하나의 태스크에서 모든 걸 처리했다.void SensorTask(..
Vector table STM32 제품군별 벡터 테이블 차이벡터 테이블은 인터럽트와 예외 핸들러의 주소를 저장하는 메모리 구조로, ARM Cortex-M 코어의 NVIC(Nested Vectored Interrupt Controller)에 의해 사용됩니다. STM32 제품군별 차이는 코어 아키텍처와 메모리 구성에 따라 발생합니다. VTOR(Vector Table Offset Register) 지원 여부STM32F0 (Cortex-M0):특징: Cortex-M0 코어는 VTOR 레지스터를 지원하지 않음. 벡터 테이블은 기본적으로 플래시 메모리(0x00000000)에 고정되거나, RAM으로 복사하여 사용해야 함제약: 동적 재배치가 불가능하며, 링커 스크립트와 메모리 매핑으로 관리STM32F1, F4, H7 (Cortex-M3, M..
ESP32-BLE-Raspberry pi STM32 보드에 없는 통신 기능을 이용하기 위해 ESP32 C3 를 SPI로 연결. 동작: 1. STM32 보드는 DHT22에서 주기적으로 온습도 정보를 읽는다.2. ESP32 보드로 온습도 값을 전송한다.3. CAN으로 주기적으로 값을 Raspberry pi 보드에 전송한다.4. LCD 에 온습도 값을 출력한다.5. ESP32 보드는 BLE에 연결된 기기(Raspberry pi)가 있으면 요청에 따라 온습도 값을 전송한다. DHT22Taskvoid StartDHT22Task(void *argument){ for(;;) { DHT_GetData(&dht22Data); xQueueSend(dht22Queue, &dht22Data, pdMS_TO_TICKS(100)); xQu..
STM32-CAN-Raspberry Pi 동작STM32에서 DHT22의 온습도 값을 CAN을 통해 Raspberry Pi로 전송. 구조STM32(FreeRTOS)Task1: DHT22의 온습도 값을 주기적으로 읽어 Task2로 값 전달.Task2: 전달 된 온습도 값을 CAN transmit 하고 OLED display 에 출력. Raspberry PiCAN ID 모니터링, 수신된 데이터를 콘솔 출력. main 함수#include "FreeRTOS.h"#include "task.h"#include "semphr.h"#include #include /* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#inclu..
DHT22 온습도 센서 DHT22 온습도 센서를 동작시키는데 뜻밖의 우여곡절을 겪었습니다. 데이터시트를 대충 훑어보고 구글링의 도움으로 간단히 코드를 돌려 보았습니다.아래의 사이트가 많은 도움을 줍니다.https://controllerstech.com/temperature-measurement-using-dht22-in-stm32/ FreeRTOS로 동작해야 하므로 타이머를 추가하여 microsecond 단위로 동작하는 delay 함수를 구현해야 합니다.void delay(uint32_t delay){ __HAL_TIM_SET_COUNTER(&htim6, 0); while (__HAL_TIM_GET_COUNTER(&htim6)  그런데 이 함수가 동작하질 않았습니다.이유는 단순히 타이머를 시작하지 않았기 때문이었습니다..M..
OLED display 128x32 STM32에 SSD1306 OLED 모듈을 연결했습니다.오픈소스가 많이 있어서 어렵지 않게 동작을 확인해볼 수 있었지만,쉽게 검색되는 코드를 사용했을때는 글씨가 화면 전체에 제대로 출력되지 않았습니다.128x32 크기에 맞는 수정을 위한 코드리뷰가 필요했고,겸사겸사 초기화 코드와 데이터시트를 보며 각 설정의 내용을 살펴보았습니다. I2C로 연결했기에 https://github.com/4ilo/ssd1306-stm32HAL 를 사용했습니다. ssd1306_Init()의 코드:https://github.com/4ilo/ssd1306-stm32HAL/blob/master/lib/ssd1306.c#L23 ssd1306-stm32HAL/lib/ssd1306.c at master · 4ilo/ssd1306-stm3..
STM32 clock STM32의 Clock Configuration 에 대해 정리해봅니다.보유중인 STM32F446xC/E 기준.Clock 소스HSE (High Speed External)외부에서 입력되는 고주파 Clock으로, Crystal, Resonator, 또는 외부 Clock source나 Oscillator를 사용합니다.PLL을 거쳐 System Clock으로 입력됩니다. HSI (Hight Speed Internal)STM32에 내장된 RC 발진 회로로, 전원 인가 시 처음 동작하는 Clock입니다.일반적으로 8MHz 또는 16MHz 주파수를 가집니다. LSE (Low Speed External)RTC(Real-Time Clock)에 사용되며 정확한 시간을 맞추기 위한 용도로, 주로 32.768kHz Cryst..
FreeRTOS - STM32F4 포팅 정보 확인 FreeRTOS를 포팅할 때 어떤 부분들을 수정하였을지 참고해보고 싶어STM32CubeIDE(+CMSIS-RTOS v2)에 포함되어 있는 FreeRTOS의 포팅 정보를 확인해 보았습니다. 공식 문서에서는 소스 코드에 있는 Demo application을 통해 프로젝트를 시작해 보라고 하여,STM32F4의 데모를 살펴보겠습니다. Supported Devices - FreeRTOS™ST STM32F4xx ARM Cortex-M4F DemoUsing IAR EWARM development tools - FreeRTOS™ RTOS Configuration and Usage DetailsCortex-M4F FreeRTOS port specific configuration`FreeRTOS/Demo/CORTEX_M4..