Recommended Parts

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

Microcontrollers

ATtiny85

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"

ATtiny84

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"

ATSAMD11C14

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.

  • RED <-> VCC
  • YELLOW <-> GND
  • BLUE <-> SWDIO
  • GREEN <-> SWDCLK
  • ORANGE <-> RESET

J-Link Flashing (in Terminal enter jlinkexe)

  • connect
    • ATSAMD11C14A
    • SWD
    • 4000
  • erase
  • r
  • loadbin /path/to/sam_ba_Generic_D11C14A_SAMD11C14A.bin, 0
  • r
  • g
  • exit

Wireless

esp8266

This device supports WiFi, and can accept Arduino code over a serial connection (no bootloaders!!)

esp32

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.

RFM69

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).

RFM95

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).

Input

Accelerometer

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.

Touch

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).

Proximity

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.

Phototransistor

This phototransistor 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.

Microphone

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.

Output

NeoPixel

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.

Audio Amplifier

This is a simple 2.5 watt mono audio amplifier.

Motor Driver

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.

andysigler.com