Electronics Parts, Modules, Components and Hats

Geekcreit® XH-M229 Power Supply Module ATX PCB (use spare ATX supply as benchtop supply)

Stepper Motor Hat v0.1 An attempt to save documentation that seems to be disappearing.



LCD display module with blue backlight - Arduino Liquid Crystal library-compatible. I got it from OddWires http://www.oddwires.com/16x2-1602-blue-lcd-display-module-with-free-10k-trimmer/ I highly recommend the place, their prices are reasonable and they don't rip you off like some big-name "maker" web sites try to do. Don't be fooled if something there sayf for Arduino you can usually make it work fine on any other system.

Includes 10K trimmer potentiometer for contrast adjustment
Includes 220 ohm resistor for backlight
HD44780 compatible - works with standard Arduino LiquidCrystal library


  • Wide viewing angle and high contrast
  • Display: 16 Characters x 2 Lines
  • LCD Type: STN Blue
  • Backlight Type: Blue LED
  • Character Fonts: 5×8 Dots (with cursor)
  • Controller: SMC1602A or Equivalent
  • Power Supply for LCM: DC +5V
  • LED Backlight Input: DC +5V
  • Module Outline Dimension: 80W * 36H * 13.5T mm
  • View Area: 65W * 14H mm
  • Character Size: 4.89W * 2.78H mm
  • Pitch Size: 0.50W * 0.55H mm

Additional References for HD44780-designs

2. Ultrasonic Ranging Module HC - SR04


Ultrasonic ranging module HC - SR04 provides 2cm - 400cm non-contact
measurement function, the ranging accuracy can reach to 3mm. The modules
includes ultrasonic transmitters, receiver and control circuit.


Example Arduino Application: http://www.instructables.com/id/Simple-Arduino-and-HC-SR04-Example/?ALLSTEPS

GitHub Repo: (sample Arduino code) https://github.com/sparkfun/HC-SR04_UltrasonicSensor



The L298 Stepper Controller makes it easy to drive either two DC motors or a bipolar stepper motor. This is a very high quality board and is very compact for designs where space really matters.

Features :

  • Double H bridge drive
  • Chip L298N (ST NEW)
  • Logical voltage 5V
  • Drive voltage 5V-35V
  • Logic current 0mA-36mA
  • Drive current 2A(MAX single bridge)
  • Storage temperature -20 to +135
  • Max power 25W
  • Weight 30g
  • Small size 43*43*27mm ( approx 1.75" x 1.75" x 1")
  • Compatible with L297/L298 driver

This module has a built-in 5v power supply for external use. Drive voltage is 7v-35v. DO NOT input voltage to +5v supply interface - this is OUTPUT only.

There is a tutorial here.http://www.oddwires.com/stepper-motor-and-l298n-stepper-motor-controller/
Available here: Stepper Library http://arduino.cc/en/Reference/Stepper

  1. DC motor 1 "+" or stepper motor A+
  2. DC motor 1 "-" or stepper motor A-
  3. 12V jumper - remove this if using a supply voltage greater than 12V DC. This enables power to the onboard 5V regulator
  4. Connect your motor supply voltage here, maximum of 35V DC. Remove 12V jumper if >12V DC
  5. GND
  6. 5V output if 12V jumper in place, ideal for powering your Arduino (etc)
  7. DC motor 1 enable jumper. Leave this in place when using a stepper motor. Connect to PWM output for DC motor speed control.
  8. IN1
  9. IN2
  10. IN3
  11. IN4
  12. DC motor 2 enable jumper. Leave this in place when using a stepper motor. Connect to PWM output for DC motor speed control.
  13. DC motor 2 "+" or stepper motor B+
  14. DC motor 2 "-" or stepper motor B-

There is a good tutorial here http://www.oddwires.com/stepper-motor-and-l298n-stepper-motor-controller/

Here is another (pdf)


4. DS1307 Real Time Clock Module for Arduino with I2C Interface

DS1307 Real Time Clock Module for Arduino with I2C Interface

This is a DS1307 Real Time Clock utilzing I2C and can be used with standard DS1307 library. The included Lithium coin cell battery (CR1225 41mAh) will run the module for a minimum of 9 years (17 years typical) without external 5V power.


Two wire I2C interface
Hour : Minutes : Seconds AM/PM
Day Month, Date - Year
Size: 28x25x10mm
Leap year compensation
Accurate calendar up to year 2100
DS1307 based RTC with LIR2032 battery (Battery include)
1Hz output pin
56 Bytes of Non-volatile memory available to user


SDA to SDA (Data)
SCL to SCL (Clock)
Vcc to +5V

Arduino LIbrary http://code.google.com/p/ds1307new/



A great tutorial


5. HC-05 Bluetooth Transceiver Module RS232/TTL Baseboard, Master / Slave



Bluetooth Serial Transceiver Module with baseboard
Works with any USB Bluetooth adapters
Easy to use and completely encapsulated
This module includes key interface and state interface compared with Smart Bluetooth Module Baseboard
The Bluetooth Module Baseboard can be compatible with master mode, slave mode and both master-slave mode
Works for Bluetooth TTL transceiver module which allows your target device to both send or receive the TTL data
The key interface on the baseboard is the master mode button and can be controlled by high level from external MCU, then this module will search again automatically

More Specs:

Power supply input is 4.5~6V
Module working voltage 3.3 V
Potter default rate of 9600, the user can be set up
The core module size : 28 mm x 15 mm x 2.35 mm
Working current: matching for 30 MA, matching the communication for 8 MA
Dormancy current: no dormancy

Here is the manual for this module.


6. LED Matrix 8 x 8 Red Common Cathode


Versatile LED matrix. Easy to use with MAX7219CNG display driver and Arduino.


8 x 8 matrix
Red color
3mm LEDs
Common cathode pins - easy to drive with MAX7219CNG
Face color black
Lens epoxy color white, diffused
Viewed from top, pin 1 is bottom left , pin 16 is top left (see image)


Great tutorial http://playground.arduino.cc/Main/LEDMatrix

Arduino Library http://playground.arduino.cc/Main/LedControl



Excellent, general purpose power MOSFET. Used in many Arduino switching situations, motor control etc.


Very Low RDS(on) at 4.5V VGS
Ultra-Low Gate Impedance
Fully Characterized Avalanche Voltage and Current


8. DHT11 Temperature and Humidity Sensor



Temperature Sensor IC
Relative humidity Resolution: 16Bit, Repeatability: ±1% RH, Accuracy: At 25°C ±5% RH
Temperature Resolution: 16Bit, Repeatability: ±0.2°C, Range: At 25°C ±2°C Response time: 1 / e (63%) 10S
Electrical Characteristics, Power supply: DC 3.5~5.5V, Current: measurement 0.3mA standby 60µ A
Sampling period: more than 2 seconds

Pin Description
1, VDD power supply 3.5~5.5V DC
2 DATA serial data, a single bus
3, NC, empty pin
4, GND ground, the negative power




9. 433 MHz Transmitter and Receiver Modules


This is a very low cost transmitter and receiver pair. Typical transmission distances are up to 100 yards or meters. They are very suitable for remote control (with longer distances than IR and no direct line of sight required), sensor transmission or data logging applications. Use of antennas, particularly on the transmitter will ensure decent transmission/reception distances. A quarter-wave antenna of around 17.5 cm or 8.2 inches is the calculated length. In practice a length of wire around 12 inches has proven better. The transmitter can be driven at varying voltages up to 12V max. At 9V we were able to achieve transmission from any position to any other in a 3,000 square feet house in a third of an acre plot using 12" antennas at 2400 bps. The virtualWire library makes it easy to use the devices with Arduino.See http://www.open.com.au/mikem/arduino/

Specifications (transmitter)

Working voltage: 3V•__12V
Working current: max≤40mA (12V), min≤9mA(3V)
Resonance mode: sound wave resonance (SAW)
Modulation mode: ASK /OOK
Working frequency:433.92MHz
Transmission power: 25mW (315MHz at 12V)
Frequency error: +150kHz (max)
Transmission rate: ≤10Kbps

Specifications (receiver)
Working voltage: 5.0VDC +0.5V
Working current:≤5.5mA (5.0VDC)
Working principle: single chip super-regeneration receiver
Working method: OOK/ASK
Working frequency: 433.92MHz
Sensitivity: excel –100dBm (50Ω)
Transmitting velocity: max 9.6Kbps


Tutorial for Arduino http://electronics-diy.com/arduino-rf-link-using-433mhz-transmitter-receiver-modules.php

Arduino Sensor Shield V5.0


The Arduino Sensor Shield V5.0 is an input/output (I/O) stackable shield that breaks out the various I/O pins of the Arduino to connectors that are more robust than the pins on the Arduino board. This allows you to connect various modules like sensors, servos, relays, buttons, potentiometers and much more.

Digital I/O ports include digital pins 0 through 13 including GND and AREF. Each of these I/O rows have a dedicated Ground, Voltage, and Signal pin. Analog I/O ports like it's digital counterpart includes analog pins A0 through A5. Each of these analog I/O rows have a dedicated Ground, Voltage, and Signal pin.

There is a six pin break out for Bluetooth and a female header row to accommodate an APC220 Radio Communication Module.

A reset switch is also provided. Interfaces: IIC, servo control port, bluetooth port, SD card slot, APC220 RC module port, ultrasonic sensor port and 12864 S/P port.

Operating Voltage: 5VDC
Input Voltage (recommended): 7-12VDC
Input Voltage (limits): 6-20VDC

External power support

An extremely useful future is that this shield accepts external power for that high power demanding devices like servos and motors. Next to the power input is a jumper that is used to select between internal power (from your Arduino) and external power.

  1. PIN13 LED Pilot
  2. Digital IO Ports D0-D13
  3. Analog IO Ports A0-A5
  4. Reset Button
  5. Power In
  6. Power LED
  7. LCD Parallel Interface
  8. LCD Serial Interface
  9. UART interface
  10. SD interface
  11. Bluetooth Interface

Here is the manual. I hope these resources help someone.


TM1637 7-segment 4-Digit LED Display


The first example is from https://github.com/avishorp/TM1637/blob/master/examples/TM1637Test/TM1637Test.ino

#include <Arduino.h>
#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   2000

const uint8_t SEG_DONE[] = {
    SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           // d
    SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   // O
    SEG_C | SEG_E | SEG_G,                           // n
    SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            // E

TM1637Display display(CLK, DIO);

void setup()

void loop()
  int k;
  uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };

  // All segments on

  // Selectively set different digits
  data[0] = 0b01001001;
  data[1] = display.encodeDigit(1);
  data[2] = display.encodeDigit(2);
  data[3] = display.encodeDigit(3);

  for(k = 3; k >= 0; k--) {
    display.setSegments(data, 1, k);

  display.setSegments(data+2, 2, 2);

  display.setSegments(data+2, 2, 1);

  display.setSegments(data+1, 3, 1);

  // Show decimal numbers with/without leading zeros
  bool lz = false;
  for (uint8_t z = 0; z < 2; z++) {
    for(k = 0; k < 10000; k += k*4 + 7) {
        display.showNumberDec(k, lz);
    lz = true;

  // Show decimal number whose length is smaller than 4
  for(k = 0; k < 4; k++)
    data[k] = 0;

    // Run through all the dots
    for(k=0; k <= 4; k++) {
        display.showNumberDecEx(0, (0x80 >> k), true);

  display.showNumberDec(153, false, 3, 1);
  display.showNumberDec(22, false, 2, 2);
  display.showNumberDec(0, true, 1, 3);
  display.showNumberDec(0, true, 1, 2);
  display.showNumberDec(0, true, 1, 1);
  display.showNumberDec(0, true, 1, 0);

  // Brightness Test
  for(k = 0; k < 4; k++)
    data[k] = 0xff;
  for(k = 0; k < 7; k++) {

  // On/Off test
  for(k = 0; k < 4; k++) {
    display.setBrightness(7, false);  // Turn off
    display.setBrightness(7, true); // Turn on

  // Done!


This one just increments until it reaches "9999" …

/* TM1637_4_Digit_Display_Basics.ino
The purpose of this sketch is to provide the basic
structure for using the TM1637 based 4-Digit Displays
like the Grove 4 digit display or other equivalents
available through the likes of www.dx.com. 

This makes use of the TM1637Display library developed by avishorp.

This has been developed to run on any Arduino.

Pin assignments are:
TM1637 Display
CLK - D9
DIO - D8
5V or 3.3V supply to Display
GND to Display

The operation is very simple.  The sketch initialises the display
and then steps through the loop incrementing the value of a
variable which is then displayed on the 4-Digit display.
Essentially it is the most basic function you would want from
such a display.  If you want more sophisticated functionality
then use the example that ships with the library.


#include <TM1637Display.h>

const int CLK = 9; //Set the CLK pin connection to the display
const int DIO = 8; //Set the DIO pin connection to the display

int NumStep = 0;  //Variable to interate

TM1637Display display(CLK, DIO);  //set up the 4-Digit Display.

void setup()
  display.setBrightness(0x0f);  //set the diplay to maximum brightness

void loop()
  for(NumStep = 0; NumStep <= 9999; NumStep++)  //Interrate NumStep
    display.showNumberDec(NumStep); //Display the Variable value;
    // delay(500);  //A half second delay between steps.

Adafruit PCA9685 16-Channel Servo Driver

See https://cdn-learn.adafruit.com/downloads/pdf/16-channel-pwm-servo-driver.pdf for further information.

I have archived a copy here.


They have a great tutorial here: Adafruit PCA9685 16-Channel Servo Driver

MCP 3008 ADC

AdaFruit has a great set of tutorials on using this with a Raspberry Pi, See https://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi as well as https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/mcp3008 They also have that material in PDF so here is https://cdn-learn.adafruit.com/downloads/pdf/raspberry-pi-analog-to-digital-converters.pdf as well as https://cdn-learn.adafruit.com/downloads/pdf/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi.pdf

I have archived copies here.


There is a very decent article on using this chip here https://pimylifeup.com/raspberry-pi-adc/

0.28 inch 0-100V Three Wire DC Voltmeter Red 3-Wire Voltmeter Red Digital LED Display


You can purchase the Three Wire DC Voltmeter Red 3-Wire Voltmeter Red Digital LED Display from Hardware for Hackers.

These little LED voltmeters are the quick and easy way to add voltage readout at various points in your project. Unlike the two wire voltmeter, this meter has a third wire for measured voltage allowing for a greater range of measurement. Just connect the red to wire positive and black wire to negative to power the meter and then connect the yellow wire to the power source you want to measure, that's it!

Great for monitoring voltages during development and debug or as a permanent part of the project.


Supply Power Range +4.5V DC to +28V DC
Measurement Range +0V DC to +99.9V DC
Operating Current 2 to 3mA
Accuracy +/- 0.1V
Length 33 mm (1.3")
Width 14 mm (0.55")
Height 11 mm (0.43")
Digit Height 9 mm (0.36")
Weight 5.4 g (0.19 oz)
Wire Length 20cm (7.8")


Click on image above for the PDF document.