In most examples, we will use components that have drivers supported by Google as contrib-drivers. The remaining ones will be collected from other developers, including my own repository, PlattyThings.
The following is a list of the different components that we will be using across our examples. For the ones that have a particular controller chip, I have added the code of the controller so that you can make sure you have a compatible component:
- 3v3 relay
- Pyroelectric Infrared PIR Motion Sensor
- MQ135: smoke sensor
- L298N: dual DC Motor controller (and two DC motors)
- ULN2003: stepper motor controller (28YBJ-48 – Stepper motor)
- HC-SR04: ultrasound proximity sensor
- M1637: a seven-segment, four digit LCD
- Tower Pro MG90S: servo motors
- LEDs (single color and RGB)
- PCF8591: Analog-to-Digital Converter (ADC)
- PCA9685: PWM extension board
- PCF8575: GPIO extension board
- LCD display with LCM1602 controller
- MPU6050: Gyroscope
- MAX7219: LED matrix
- SSD1306: OLED display (wired to I2C and SPI)
Each of the chips usually requires some basic setup wiring that involves a few resistors. To avoid having to wire all that into a breadboard, we will be using breakout circuits, which are basically a small printed board with the chip and everything that is required, so it can be connected directly to our board.
However, in a few cases we will still need to use breadboards. Essentially, this is the case when using buttons and LEDs, which are not worth putting on a breakout circuit just themselves.