<aside> <img src="/icons/burst_gray.svg" alt="/icons/burst_gray.svg" width="40px" />

Domains: Embedded C, PCB Designing, Bootloaders, OTA, PCB Design, UART

</aside>

https://github.com/avm1234567/Customboot-32

Overview

The project focuses on creating a custom PCB that integrates both Blue Pill (STM32F103C8T6) with ESP32 WROOM-32E micro-controllers. The final goal is making a custom PCB that hosts a web server online to receive two firmwares wirelessly and execute them according to user input via a Dual-Image Bootloader.

image.png

image.png

Key Concepts

PCB Designing Process of creating the layout of electrical circuits on a board to physically connect and support electronic components for space efficiency.

OTA Over The Air model to update firmwares without any hardware connection, making STM32 flashing convenient.

Bootloader An initial piece of code that initializes all the necessary peripherals of a micro-controller and provides a run-time environment for the main application.

File-Systems Data structure that we use to store, organize, retrieve, and manage data on storage devices like hard drives or flash memory.

File-Protocol Set of rules that governs how files are transmitted, accessed, and managed between micro-controllers.

Approach and Workflow

  1. PCB Schematics Create a PCB layout on KiCad according to our needs, find suitable components and use their datasheets to make circuits.
  2. ESP Firmware Creating memory partitions and receiving firmwares wirelessly in ESP32’s flash.
  3. Communication Establishing data transfer between ESP32 and STM32 using UART.
  4. Bootloader and File protocol Making a Dual-Image Bootloader in STM32 that requests firmware from ESP32 using custom file protocol and executes it according to user input.
  5. Fabrication and Soldering Sending PCB for fabrication and soldering all the parts on it.