Embedded · 1 phút đọc

Xin chào: blog về Embedded, AI và Robotics

Bài mở đầu, giới thiệu blog và thử các tính năng: code, công thức, sơ đồ.

🌐 Read in English

Chào bạn! Đây là nơi mình ghi chép lại các dự án và kiến thức về embedded, AI và robotics.

Highlight code C

#include "stm32f4xx_hal.h"

int main(void) {
    HAL_Init();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIO_InitTypeDef gpio = { .Pin = GPIO_PIN_5, .Mode = GPIO_MODE_OUTPUT_PP };
    HAL_GPIO_Init(GPIOA, &gpio);
    while (1) {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
        HAL_Delay(500);
    }
}

Công thức toán

Bộ điều khiển PID rời rạc:

u[k]=Kp e[k]+Ki∑j=0ke[j] Δt+Kd e[k]−e[k−1]Δtu[k] = K_p\,e[k] + K_i \sum_{j=0}^{k} e[j]\,\Delta t + K_d\,\frac{e[k]-e[k-1]}{\Delta t}

Công thức inline: fs≥2fmaxf_s \ge 2 f_{max} (định lý Nyquist).

Sơ đồ

flowchart LR
  S[Cảm biến IMU] -->|I2C| M[MCU]
  M -->|UART| P[Raspberry Pi]
  P --> AI[Mô hình AI]
  AI -->|lệnh| M
  M --> D[Động cơ]

Python

import numpy as np

def moving_average(x: np.ndarray, n: int = 5) -> np.ndarray:
    return np.convolve(x, np.ones(n) / n, mode="valid")