Michael Michelotti
all projects
STM LCD Clock cover photo
SUMMARY:
An STM32 Microcontroller displaying time on a 16x2 LCD.
DESCRIPTION:
This project has a STM32F4-DISC1 development board, which is home to a STM32F407 MCU, interfacing with a DS3231 Real Time Clock (RTC) module over I2C, and a 16x2 LCD screen which is controlled by a HD44780. The HD44780 has it's own custom parallel protocol for interfacing with the LCD screen. My goal for this project was two-fold:
1) I wanted to write the bare metal STM drivers from scratch.
2) I wanted the specific RTC and display to be interchangeable.
All the low level STM I2C, GPIO, and RCC drivers are written by me, and present in the `Drivers/` directory.
I kept the RTC and display modular by defining clock and display driver interfaces in `Inc/clock.h` and `Inc/display.h`. In theory, any RTC or display that implements that interface can be plugged into this application.
Tech Used
Portfolio Website cover photo
SUMMARY:
This website! Designed in Figma. Coded with Express, MongoDB, Pug, Sass.
DESCRIPTION:
I've been interested in web design for a while, so I wanted to take on an ambitious project to develop a personal portfolio website with a rich feature set. I designed the look in Figma, then built it out using Node, MongoDB/Mongoose, Express, and Pug. It's similar to the MERN stack, but I am using a templating engine (Pug) and raw Javascript for the frontend, rather than React. I'm using Sass to manage my CSS.
The website is deployed on a Lindoe VM running Ubuntu. I have also configured the repository on Github with Github Actions to automatically deploy whenever I push to the main branch.
Tech Used
DHT11 Driver cover photo
SUMMARY:
Linux sysfs device driver for a DHT11 humidity sensor.
DESCRIPTION:
This project is a Linux platform device driver I wrote to interact with a DHT11 temperature and humidity sensor via the Linux sysfs psuedo-filesystem. It allows you to change directory to `/sys/devices/platform/dht11` and read the temperature with `cat temperature` or the humidity with `cat humidity`.
The driver is built for a BeagleBone Black, which is a community-driven Single Board Computer (SBC) project similar to Raspberry Pi. It houses a AM3358 family Microcontroller (MCU) / System on Chip (SOC) from TI. The repository includes a device tree overlay for the BeagleBone Black, which configures the board to communicate with the DHT11 sensor on header P8, pin 6.
Tech Used
IR Remote Fan cover photo
SUMMARY:
DC motor fan controlled by signal from an IR remote.
DESCRIPTION:
I wanted to do a project where I received a wireless signal, and used that signal to drive a load that drew significant current.
I decided on sending the signal with an IR remote, which sends NEC-encoded signals, and using that signal to drive a DC motor (fan) with a PWM signal.I ended up learning a lot about 1) decoding wireless signals and 2) the EE principles behind driving a load that pulls significant current.
I had to figure out how to stop the DC motor from tripping my IR sensor by causing ripple on the power rail.
Tech Used
Car Vision Demo cover photo
SUMMARY:
Using OpenCV and YOLOv3 to detect cars in a video stream
DESCRIPTION:
Using OpenCV and YOLOv3 to detect cars in a video stream
Tech Used
Eater 6502 Computer cover photo
SUMMARY:
A 65C02 based computer based on the project by Ben Eater.
DESCRIPTION:
Ben Eater's series on building a 6502-based computer on a breadboard (https://www.youtube.com/watch?v=LnzuMJLZRdU&list=PLowKtXNTBypFbtuVMUVXNR0z1mu7dp7eH) was pivotal to my understanding of how MCUs know how to follow high level instructions from programmers. What do the instructions actually look like by the time they reach the hardware?
I was finally able to purchase a 6502 kit from eater.net/6502 and build it for myself!
Tech Used
Eater Clock Module cover photo
SUMMARY:
A configurable clock module based on the 555-timer.
DESCRIPTION:
Ben Eater and his 555-timer-based clock module (https://www.youtube.com/watch?v=kRlSFm519Bo) was instrumental in my early understanding of electronics and embedded system design.
I purchased the clock module, which was a sub-kit of Ben's 6502 based computer (https://eater.net/6502). The module utilizes the bistable mode (debounced switch between modes), a bistable and and astable mode.
In astable mode, you can use a potentiometer to adjust the clock frequency. In monostable mode, you can use a push button to pulse the clock.
Tech Used