I2C to USB Interface

Goals

The main goal of this project was to write firmware for the ATtiny85 to be able to provide an interface for I2C device to your PC by USB. The idea was for the firmware to read data from a device on an I2C bus, then sending it over USB to your PC. Without having dedicated USB hardware, V-USB would be used to send USB data at low-speed.

In the goal to challenge myself, I attempted to do this using an embedded rust library. Sadly, due to the incomplete and undocumented* HAL provided by the library (avr-hal), my plans changed to using the STM32F103 for interfacing I2C and USB.

*Though the avr-hal library is documented, I found out during testing that the documentation was old and did not match the functionalities provided.

Tools Used

Software/Languages:

Hardware:

*The Arduino Uno was used as an ISP AVR programmer to flash the ATtiny85.

Project Timeline

After doing research and establishing a schedule for the project, these were the milestones/highlights of the project.

Wrap-up

Although the project was left unfinished, I acknowledge the experience I gained, which includes:

- I2C Protocol

- USB Protocol

- Embedded C

- Embedded Rust

- STM32 Development Process

- AVR RISC-based microcontroller

Sources and Datasheets