docs(Diagrams and docs): Added Charts and Modified Readme
Charts: - Overall Block Diagram - Overall Flow Chart - Motor Task Flow Chart - Magnetometer Flow Chart
This commit is contained in:
parent
fa8e561490
commit
4abc903962
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 103 KiB |
57
README.md
57
README.md
|
@ -1,3 +1,58 @@
|
||||||
# freeRTOS-car
|
# freeRTOS-car
|
||||||
|
|
||||||
Configure your Pico SDK and FreeRTOS Kernel Path in your local environment
|
This project is a car that uses the [Raspberry Pi Pico](https://www.raspberrypi.org/products/raspberry-pi-pico/)
|
||||||
|
and [FreeRTOS](https://www.freertos.org/) to move around a maze.
|
||||||
|
|
||||||
|
# Configurations
|
||||||
|
|
||||||
|
All Configurations are in the folder `frtos/config`, the file `frtos/config/car_config.h` contains the main
|
||||||
|
configurations for the car.
|
||||||
|
|
||||||
|
# Build
|
||||||
|
|
||||||
|
> Configure your Pico SDK and FreeRTOS Kernel Path in your local environment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
# Flash
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd build
|
||||||
|
cp freeRTOS-car.uf2 /media/$USER/RPI-RP2
|
||||||
|
```
|
||||||
|
|
||||||
|
# Components
|
||||||
|
## Motors
|
||||||
|
|
||||||
|
## Ultrasonic Sensor
|
||||||
|
|
||||||
|
## Line Sensor
|
||||||
|
|
||||||
|
## Magnetometer
|
||||||
|
|
||||||
|
The magnetometer used is the [LSM303DLHC](https://www.st.com/resource/en/datasheet/lsm303dlhc.pdf) from STMicroelectronics.
|
||||||
|
|
||||||
|
Magnetometer package is in `frtos/magnetometer`, and its configuration is in `frtos/config/magnetometer_config.h`. It
|
||||||
|
contains the drivers and FreeRTOS tasks to read the magnetometer data.
|
||||||
|
|
||||||
|
All the magnetometer data (roll, pitch, yaw) calculated is stored in the `direction_t` struct, which is defined in
|
||||||
|
`frtos/config/magnetometer_config.h`.
|
||||||
|
|
||||||
|
### Filtering
|
||||||
|
|
||||||
|
The magnetometer initially used a complementary filter (with the accelerometer) to calculate the Yaw, and the temperature,
|
||||||
|
sensor was used to perform an offset correction. But raw data was accurate enough to use it directly.
|
||||||
|
|
||||||
|
An initial calibration method for the magnetometer was implemented, with the use of 100 initial samples, and then
|
||||||
|
a bias calculation. This method was not used in the final version, because the raw data was accurate enough.
|
||||||
|
|
||||||
|
The final version of the magnetometer uses a **moving average filter** to smooth the data and a bias of 0 degrees.
|
||||||
|
|
||||||
|
## Barcode (Line) Sensor
|
||||||
|
|
||||||
|
## WiFi (Web Server) Module
|
Loading…
Reference in New Issue