Many SMD parts are just too small for us to assemble. This guide shows some specialty SMD parts that are big enough to solder, and they also have open source designs online to use as a starting point.
It is not recommended to use SMD parts with pads (or pins) smaller than the ones described in this guide. While it is possible to get anything working, very small parts on DIY boards make it unlikely.
Microcontrollers
Wireless
Input
Output
A small 8-bit microcontroller with about 5 GPIO. Good for projects that do not require many pins, and no outside connections (wired or wireless).
Flash bootloader and then upload code all using "Arduino as ISP"
This is the same as the ATtiny85 above, except this one has 13 GPIO you can use.
Flash bootloader and then upload code all using "Arduino as ISP"
This is a small version of the same microcontroller on the Arduino Zero, it is 32-bit ARM M0, and has native USB. This means it can communicate directly with a computer over USB-Serial, USB-HID, USB-MIDI, etc.
Flash the bootloader using the J-Link and J-Link CLI tools, and then upload sketches from the Arduino IDE over USB.
The bootloader binary image is located at this link. To flash that bootloader, you'll need to connect SWDIO, SWDCLK, RESET, VCC, and GND pins to a J-Link.
J-Link Flashing (in Terminal enter jlinkexe)
This device supports WiFi, and can accept Arduino code over a serial connection (no bootloaders!!)
This device is an upgrade to the esp8266. The esp32 has more pins, many more analogRead(), many capacitive-touch input pins, WiFi and Bluetooth Low Energy (BLE) support (wow that's a lot!).
Like the esp8266, you can upload Arduino code over a serial connection, no burning bootloaders.
This is a "packet" radio, which means it is a general-purpose radio that can send/receive messages up to hundreds of meters. It is good for low-power, medium-range, mesh networks.
You do not put any code on this radio. Instead, the radio must be controlled (over SPI) by another microcontroller (like the ATtiny85).
This is a LoRa radio, which is a standard for sending/receiving messages over a couple kilometers (wow!). It looks identical to the RFM69 above, however the RFM95 is more expensive, more power hungry, and much longer range.
You do not put any code on this radio. Instead, the radio must be controlled (over SPI) by another microcontroller (like the ATtiny85).
Accelerometers that are big enough for us to solder are hard to find (they are all tiny). However, if you are feeling brave, there are a couple that Adafruit uses which have successfully been soldered by us in the past.
There are a couple of accelerometers from Adafruit that come in the same "package". The ones that I found and like are the LSM303 and the ADXL345. The links below point to the ADXL345, but you can also trye the LSM303.
BE WARNED: this package is small, and the solder pads are hidden underneath
These connect to a microcontroller over I2C.
A simply capacitive touch IC that just works. It will output a LOW/HIGH signal depending on if a person is touching or not. Your connected microcontroller can then simply do a digitalRead() to detect if there is a touch or not.
These come in momentary, toggle, and multi-pad options (I've added links for the momentary option).
This thing is neat, it can tell you proximity, RGBW color intensities, and even detect some basic hand movements (wow!).
These connect to a microcontroller over I2C.
A simply photocell. It acts as a variable resistor, depending on how much light is hitting it. Use with another resistor to create a voltage divider, and read the voltage on any microcontroller's ADC pin.
This microphone automatically outputs a "line-level" audio signal, meaning it's ready to be plugged into an amplifier, headphones, or a microcontroller's ADC pin.
Of course, the famous addressable RGB LEDs that Adafruit loves so much. These are great, because they've each got a tiny little IC inside them that handle all color and communication, so they can be "daisy-chained" together. The controlling microcontroller then only needs 1 wire to communicate with all.
Only down-side is that these LEDs (I think) are a little big, but they are just too good to not use sometimes.
This is a simple 2.5 watt mono audio amplifier.
This IC can control a stepper motor, or 2 separate DC motors (wow!). You can control this using simple digitalWrite() calls, or you can use the Arduino Stepper library's 2-wire control option.
It is a simply H-Bridge (with 2-wire control), perfect for our DIY boards. However, I have not found any reference designs to copy, so I made one myself. The link is below.