Interfacing with Hardware
These topics cover the hardware and software setup required to connect an Arduino device with a variety of electronic parts, chips and devices. A related topic not covered under this section is the shield, boards that plug directly into an Arduino's pin layout. Information on the creation and use of specific shields belongs in that section. Information on shields in general and their creation belongs here.
See here for a table of shields and the Arduino pins they use.
Arduino has limits on how much current can be sourced or sunk by its I/O pins. When interfacing with hardware you need to be careful not to exceed these limits. For details see ArduinoPinCurrentLimitations. In general, do not exceed 20 mA per pin. In particular, do NOT directly connect LEDs to Arduino outputs! Always use a series resistor (220 ohms is a good value).
Navigation
Output
Input
- ADC / DAC
- ArduStat- Measures charge in battery
- Audio
- Bar code reading
- Buttons,Encoders,Keypads Unified Input Interface
- Capacitive Sensing
- Distance Sensing
- Environmental Sensing
- See also Light sensors and images
- Humidity
- Temperature
- Gas sensors
- Anemometer (wind speed meter)
- Images
- Joysticks / Gamepads
- Keyboard/Keypads
- Light Sensors (Visual and IR... levels, not images)
- Location- GPS, etc.
- Magnetic
- Magnetic Cards
- Mechanical
- Morse code I/O
- Mice
- Motion Sensors
- Multiplexing Inputs
- Other voltages/Power- Presence & kiloWatt hours
- Position Sensing
- PPM RC Receivers
- Pressure Sensors
- RFID tag reading
- Slotted Detectors / Proximity Sensors
- General Purpose Sensor abstraction layer One interface to setup and control most Digital and Analog sensors.
- Tagging / Labeling- see RFID or Barcodes (Legacy t.o.c. entry)
- Time...of day: RTC, clock / calendar chips
- Touch screen
- Human Interface
- Rain water tank level
User interface
- Buttons,Encoders,Keypads Unified Input Interface
- Text-based user interface
- Phi_prompt user interface Library
- MenuSample
- Phi_prompt glcd user interface Library This is being planned.
- Phi_prompt persistence of vision display user interface Library This is being planned.
- M2tklib (LiquidCrystal Library)
- MENWIZ compact code and support to the "new" LiquidCrystal library
- LCD Menu Easy to use menu UI for 2 or 4 line character displays and designed with a rotary encoder input in mind.
- Graphical user interface
- Hardware-independent layers
- Multi-tap Code to enable multi-tap input on any keypads
- Via Mobile Phone
Communication
- Dallas 1-Wire
- Ethernet
- I2C/TWI
- SPI/USI
- Serial
- GSM/GPRS
- KNX/EIB
- WiFi
- Wire-less... some radio, some non-radio, e.g. IR
General
Output
Examples and information for specific output devices and peripherals: How to connect and wire up devices and code to drive them.
See also the pages devoted to the Dallas One-Wire MicroLan, I2C and ethernet. They enable you connect additional output (etc.) devices across networks controlled by the Arduino. The trouble of controlling a network is repaid if you need to connect many outputs (and/ or inputs), or if your actuators / sensors are not close to your Aruduino. Arduino as ISP
Arduino as ISP
- Programming AVRs
- Burning the Sanguino Bootloader to ATmega 644p with an Arduino, This tutorial teaches you how to burn the Sanguino Bootloader to an ATmega 644p which needs an external resonator added to the programming circuit before it will accept any programming.
- Using Arduino Uno as ISP, the tutorial shows step-by-step (with clear pictures) how to wire a ATtiny45/85 for programming with the Arduino Uno.
Visual
- Camera Control - Controlling Cameras
- multiCamereIrControl Library, controlling Nikon, Canon, Sony, Minolta, Olympus and Pentax cameras just with an IR LED.
- Remote control a Canon EOS to take time lapse photos. The same wiring and interface should work on other cameras.
- Infrared controlled timelapse photography with Canon DSLRs. Works with all cameras that are compatible with the Canon RC-1 remote.
- Imitating a Nikon IR Remote from Nikon SLR's.
- Imitating a Sony A230 DSLR Shutter Release IR Remote.
- Remote control a Nikon camera via infrared LED
- AI-1 ("All-in-one") Remote - A Photographic Accessory That You Can Build. A fully featured intervalometer by Tom Lackamp. Does a lot, but is also quite a big/complex project.
- A device to trigger camera and flash forum discussion (english) pointing to this page (not english).
- Controlling camera shutter, flash and more via 3 pin plug. Forum discussion with sample code. Should be quite generic, tested with Canons and Olympus SP510UZ.
- IR remote for canon digital camera. Unresolved forum discussion. Sample code and pointers of how to get it working.
- Canon RC-1 compatible IR remote. All you need is one IR LED and an Arduino board.
- Links to the Sony LANC protocol. This can be used to control video cameras, and a subset of it might be used to control still cameras (Arduino-LANC Code).
- LANC Arduino full application + circuit Another approach to implement LANC control with Arduino, including open collector circuit you need to interface with the camera.
- Arduino controlled video recording using the LANC port Simple and easy to understand Arduino sketch that starts and stops video recording.
- Arduino powered simple LANC remote Circuit and sketch with rec, zoom and focus buttons.
- thIntervalometer Simple stripboard Intervalometer 'shield'. Easy to understand code.
- USB control of Canon EOS cameras using USB Host Shield - An intervalometer with extended HDR bracketing.
- High Speed Photography: using an Arduino connected to a microphone and camera flash to capture images of Peeps exploding. full text of original post via web.archive.org
- Triggering a Camera’s Flash with Sound and Light - complete with photos and hand-drawn schematics.
- Intervaluino: An Arduino-powered intervalometer for taking time-lapse photo sequences.
- DIY camera motion control: An Arduino-controlled stepping motor and an IGUS DryLin W rail allow smooth camera moves.
- OpenMoco: A complete time-lapse motion control system, integrating intervalometer, multiple motor axes, action scripting, and keyframing in a single Arduino.
- Arduino Intervalometer Basics: An introduction to building DIY intervalometers, covering optocouplers, blocking timing, and two forms of non-blocking timing
- Hack a Canon camera and controll it with an Arduino: Hacked Canon Ixus camera, with instructions, code and videos
- Long-term time-lapse photo: Run a canon camera with CHDK and a Arduino controller for one year stand-alone
- APCC Advamced Photo Camera Control: arduino based camera and flash control (IR remote Canon RC-1, RC-5, nikon ML-5, sound and light trigger, intervalometer, etc.)
- Sony DSLR Wired Remote Use Arduino to make an intervalometer, etc, for Sony DSLR. Wired remote is more reliable than IR.
- LED Lights and Displays
- Single LEDs of one color
- Blinkenlight experiments Features many different ways to implement knight rider effects, persistence of vision and other amazing stuff.
- Fade an LED with a knob - An example that lets you twist a knob to control the brightness of an LED.
- Fade an LED with a button - An example that lets you push a button to make an LED fade on and off. This example uses one of Robert Penner's easing equations to handle the fading.
- FancyLED: Another simple hardware abstraction library that enables blinking "N" times at custom rates, toggling, has a "fuse" example that allows for blinking to start after some lead time...
- Knight Rider extensions - an extension to the learning loops example. Several single LEDs used together to create satisfying visual displays.
- LED: Simple hardware abstraction library. Either use this to simplify(?) working with songle LEDs, or study it as a good example of what you can do by creating a library.
- I/O LED: Manage an LED as an emitting AND receiving device!
- Single LEDs, multi-color
- Object Oriented RGB LED abstraction layer Simple setup and control of common RGB LEDs. Works with common cathode and common anode devices and with both PWM and non-PWM digital pins.
- Arduino mood light with a 3W RGB LED.
- HPLEDShield1 A four channels (RGBA) High Power LED driver in a shield. Control up to 28x1Watt LEDs with a single shield.
- ShiftBrite: a module with three LEDs. (High brightness red, green, blue.) Library for the module. Module uses a simple clocked serial interface to accept a 10-bit brightness value for each LED's color.
- Multiplexed single LEDs, each a single color (See also "LED Segmented Displays" sections. Here we have multiplexing done "the hard way", but leaving you with the greatest ctreative control.)
- Arduino-LED-Matrix-Display A multyplexed 8X11 LED Matrix Display (you can display stuff and scroll text on it, display text in any language
- 3x3 LED Cube Diecimila Shield (Inexpensive version of a fun idea... 27 LEDs, some resistors, some tranistors... and a lot of craftsmanship with your soldering!)
- Schematic for driving multiple leds from one Arduino pin.
- lightuino: Arduino 328 software and shield compatible board drives 70 LEDs through 70 individual channels (i.e. constant drive, not matrix strobing) using the M5451 constant current chip. FOSS source code available at http://code.google.com/p/arduino-m5451-current-driver/. Also contains instruction on how to wire up the M5451 chip to Arduino yourself. Buy
- Direct driving of an 8x8 LED matrix with no ICs or other components involved.
- TLC5940 - constant-current LED driver with 16 channels of 12 bit PWM output. Chips can be daisy-chained for >16 PWM channels. Library code and examples available.
- Multiplexed single LEDs, each multi-color (See also "LED Segmented Displays" sections. Here we have multiplexing done "the hard way", but leaving you with the greatest ctreative control.)
- RGB LED Color Mixing using 10k potentiometers : Simple tutorial on getting color mixing with 10k pots.
- RGB monome clone - controlling an RGB led / button matrix.
- 8x8 RGB PWM Matrix The driver includes an ATmega168 and can be programmed via ICSP or the bootloader + USB/TTL cable. It is code compatible with Halley's shield.
- HT1632C Based LED Matrix Display: Tutorial on how to connect and use an HT1632C based LED Matrix(eg. sureelectronics 3216) with a RTC(DS1307) to display date/time.
- Using the Sparkfun DS1307 Real Time Clock to tell time with your arduino - http://bildr.org/2011/03/ds1307-arduino/
- Seven segment displays (See also the "LED Multiplexing" sections. Here we have displays supplied with character generating control circuitry, minimizing the work you have to do.)
- Seg7 library for control of 7 segment displays
- Multiplex7Seg is a small Arduino library allowing you to multiplex 1, 2, 3 or 4 digits using any one of the pins on your Arduino, that's a 9999 digit display. You also have the ability to enable zero leading blanking for low power requirements. Mail me at bester.juan@gmail.com for additional help on using the library.
- 7SegCounterMultiplexer is a simple example that demonstrates multiplexing a 7 segment LED display using a 74HC595 shift register. Only a single segment of the display is on at any one time, but they are illuminated in sequence so quickly that the digit is displayed properly to human eyes. This approach prevents you drawing too much power from the shift register, and means you don't need to use any special driver ICs.
- MAX7219, a fork off the LedControl library which uses hardware SPI and adds some syntax sugar to the process of controlling many displays.
- MAX7221float is a collection of two small Arduino libraries MAX7221spi and MAX7221shift allowing you to multiplex 8 digits using the popular MAX7219 or MAX7221. MAX7221spi uses the SPI library for fast 8MHz communication. MAX7221shift uses pin toggling to accomplish the same thing. There are a lot of code out there for the MAX7221 but none of them allows the automatic display of floating point numbers. The library allows the display of positive floating point numbers up to 99999999 and negative values up to -9999999. The negative sign always follows the first digit after the decimal point and coupled with permanent zero leading blanking allows the library to meet low power requirements. You also have the ability to test all the digits and shutdown the MAX7221 for low power operation. In addition to this you can adjust the brightness of the 8 digits from within your code. Mail me at bester.juan@gmail.com for additional help on using the library. Project is hosted at http://code.google.com/p/max7221float/
- 4 Character 7-segement Display $13+ P&P (8/10). Control with one Arduino digital pin and NewSoftSerial, or SPI.
- Direct Drive 88:88 4 digit 7 segment display using same method as 8x8 matrix.
- hc4led - A cheap 4-digit seven segment LED display with SPI. No decimals, though. Sample code here: Hc4led. And here's an easy-to-use Arduino/Wiring library for controlling these displays. The Reaction Time Tester project uses the HC4LED library.
- Multi-segment displays- more than 7 LED segments per character (See also "LED Multiplexing" sections. Here we have displays supplied with character generating control circuitry, control circuitry, minimizing the work you have to do.)
- Controlling an Alphanumeric LED Display - Library on Blogspot
- Twitter LED Scroller - Twitter API to PHP to Processing to Arduino to 74HC595 to scrolling LED matrix (complete with cool resin case).
- Sure-Electronics 2416 Display 24x16 LED display. Matrix Display Library (supports multiple displays)
- 8 x 8 LED grid: Send commands to the display via SPI. the 64 LEDs then remain as you want them until new commands sent.
- Matrix LED backpack - Code for running the Sparkfun RGB 8x8 matrix LED backpack. Controlled via SPI.
- Rainbowduino: An Arduino-compatible board that can drive an 8x8 RGB matrix, or 192 discrete LEDs.
- Colorduino: An interface library for ITead Studio's Colorduino and Arduino RGB LED Matrix driver shield.
- LedDisplay: Library for HP/Agilent/Avago HCMS-29xx LED dot matrix character displays.
- Monome 64 clones... 8x8 matrix of LED illuminated switches, turned into a musical/ lightshow instrument with hardware and software.
- THE Octinct - Arduino based RGB Monome 64 clone.
- bonome - Arduino based RGB Monome 64 clone with sparkfun button pads.
- 4 by 4 RGB monome clone - controlling an RGB led / button matrix using the TLC5940.
- Things that don't (?) fit any of the above categories, or fit in several of them.
- POV - Arduino does persistence of vision, too.
- Controlling an LED matrix with the
MAX7219
andMAX7221
. An extensive collection of articles, schematics and software libraries. Can be used for arrays of "dots" and for driving 7 segment displays.- Controlling arrays of leds or common cathode multi-character 7-segments displays via ICM7218A. Direct way or using PCF8574 to save arduino pins.
- LCDs
- have their own page
- Lighting Control
- OLED
- Some code samples to control output to a small surface-mount OLED with basic hardware-level graphics functions
- SMARTGPU Create advanced color touchscreen GUIs very easy with Arduino + SMARTGPU.
- uOLED Library for the 4D Systems OLED displays. This is a serial communication with the display.
- U8glib supports SSD1325 based OLEDs
- Video Output
- MicroVGA Library for MicroVGA-TEXT devices, allowing Arduino to display on a VGA (LCD/CRT) monitor or a television and read keystrokes from a PS/2 keyboard.
- TVout Library for NTSC and PAL composite video output. Video output runs in the background via timers, allowing the sketch to concentrate doing its thing.
- SID-emulator The shield contains an emulator of the audio chip in a Commodore 64. The systems allows you to create original 8-bit video and sounds programmed and controlled via the Arduino board.
- Bitmap picture display on a graphics shield
- SMARTGPU Create advanced color touchscreen applications with bitmap pictures.
- Picaso Library for interfacing with 4D Picaso devices (including the 4D uVGA Picaso MD1)
- Gameduino Library for the Gameduino, VGA display for video games
- VFDs Vacuum fluorescent display modules are often used in the same applications where LCD modules are used. VFDs are typically brighter, have more contrast and a greater view angle than LCDs.
- Ncr4X20Vfd Library, examples and information for driving the NCR 7454 / Futaba M204SD01B VFD module.
- PrimeVfd Library, examples and information for driving the Futaba NA202MD13AA VFD module.
- IeeFlip & IeeFlipNoFrills Libraries, examples and information for driving IEE Flip VFD modules.
- FutabaUsVfd Library, examples and information for driving Futaba US162SD03CB VFD modules and perhaps other Futaba VFD models.
- M66004Vfd Library, examples and information for driving VFD's using the Mitsubishi/Renesas M66004 VFD controller IC. This includes the display/control panel used in many HP LaserJet printers such as the LaserJet 4.
- HpDecVfd Library, examples and information for using VFD modules originally intended for the discontinued HP z500 Series Digital Entertainment Center media PCs.
- SPI_VFD A library for driving modules that support the standard HD44780 command set but use SPI (clocked serial) instead of parallel communication. This library was created to drive the uPD16314 controller, commonly used on Samsung VFD modules.
- IR Remote Output
- IR remote library to control Sony, NEC, RC5, and RC6 devices.
- DVD Synchronizer and IR remote-control techniques.
- Multitasked IR transmission for sending Sony remote codes in background.
Audio Output
- µC Hobby Arduino Sound Tutorial
- Tone Generation Libraries
- Arduino Tone Library: A library that can be used to generate tones in the background using timers while your Arduino does other things.
- Realtime audio processing
- realtime audio: digitizing sound and audio effects.
MicroLS: a simple light show hidding advanced data acquisition and DSP functions.
- '''Zvonek: Jak si udelat vlastní zvonek.
- Synthesizers and sound generation
- 8-bit PCM audio using Arduino pulse-width modulation (PWM)
- Octosynth - Code for a full synthesizer using PWM, heavily optimised to allow the playback of 8 oscillators plus a resonant filter.
- Freqout function in the code library
- Arduino Synth - general page for Arduino synthesizer work
- see dusjagr labs for an easy way to control a resistor in a circuitbent toy or a simple analog electronic circuit for lo-fi music (driving a photoresistor with a LED output from the Arduino)
- Arduino Polyphony
- handmade Arduino Auduino shield
- Smapler v2 shield for stereo sound generation homework help
- arduinOSC library for arbitrary waveform generation
- Summer simple hardware abstraction library that can playFrequencies and beep
- Arduino DDS Sinewave Generator
- MicroDDS: an Arduino DDS Sinewave Generator using a R2R ladder
- GinSing Software interface and hardware shield for complex waveform syntehsis, speech, and music using the Babblebot chip.
- Gameduino library for controlling the Gameduino's 64-voice polyphonic synthesizer
- Speech/ Voice Synthesis
- Using the SpeakJet How to connect to and program the SpeakJet- a $26 (8/10) phoneme based processor. One data line from Arduino. Sound effects as well as speech, and DTMF codes.
- Babblebot | Babblebot Easy to use voice and waveform synthesizer ( SpeakJet variant ). Serial interface with support shield for Arduino.
- MIDI
- see MIDI under communication section
- Audio Device and Module Control
- Control an iPod with the Arduino, by Jonas Olson & Robert White.
- Connect Arduino to the YAMPP III Industrial MP3 player, diagrams by Jens Wunderling.
- Some code for controlling an Ipod remote through Processing, by Rosie Daniel.
- VMUSIC Mp3 Module
- Record and play audio with ISD1700 chipcorders
- Mediaplayer for Adafruit's Waveshield
- Si4735 library for controlling a radio chip from SiLabs (also available as a SparkFun shield).
- PSG - Programable Sound Generators
- SID-emulator The shield contains an emulator of the audio chip in a Commodore 64. The systems allows you to create original 8-bit sounds programmed and controlled via the Arduino board. You can play your sounds over the MIDI-Interface.
- Vintage Gameboy and SNES -like sound using Yamaha chips (YM294, YM2149)
- AY38910 This is a small project that tries to control the Yamaha AY-3-8910 with an Arduino, to generate sounds. The AY-3-8910 is a popular chip used in chiptunes and found on Atari 2600, Spectrum, Amstrad CPC and many retro game consoles.
- Gakken SX-150
- MIDI-to-Gakken using Arduino
- Morse code I/O
- Phi_Morse library plays Morse code on a speaker and recognizes keyed in Morse code. You can call the library with a string and the function morse_out() plays the string on speaker. If you call morse_in() you can key in Morse code and the returned value is keyed in character.
- [[http://raronoff.wordpress.com/2010/12/16/morse-endecoder/|Raron's duplex Morse Machine]: Send or receive Morse... as fast as 300wpm Arduino- to- Arduino, if you set up two of his "Endecoders". Entertaining video demonstration, full souce code. Input via momentary switch, microphone or keyboard via serial monitor, output via piezo or serial monitor. One Arduino can be sending and receiving at, in human terms, the same time. If you are delivering the input via keyboard, you just type a phrase, and when you press "enter", the phrase emerges in Morse.
Physical/Mechanical
- Precision Motor Control
- The IDCA-10 from Motor Control Technologies is an integrated intelligent motor drive for accurately controlling DC brushed motors. Implement a precision servo control system with your Arduino in a matter of minutes.
- Four operating modes: open-loop speed control, closed-loop speed control, closed-loop position control and stand-alone mode
- 5A continuous output (12A peak)
- Communicate with the IDCA-10 using the Arduino's SPI or I2C bus
- Detailed documentation for software and hardware
- Extensive Software library with integrated Arduino support
- Sketch and libraries available for download- User interface software for tuning motor operation- .Net driver to create your own applications.- .Net examples for open-loop and closed-loop control- 3 Motor Driver
- Omni3MD is a 3 motor driver fully compatible with arduino. It may be used in holonomic (3 wheels) platforms as well as other independent motor control systems.
- It is a I2C slave board with 4A per output maximum power. Ideal for robotic applications and motor control.
- Arduino library download link: Omni3MD library
- Please visit www.botnroll.com for more information.
- Motor Control
- Pololu Dual VNH5019 Motor Driver Shield for Arduino High-power (5.5-24V, 12A continuous/30A peak per channel) motor driver shield from Pololu Robotics that makes it easy to control two brushed DC motors with an Arduino. An Arduino library provides methods for setting motor speed and direction, reading motor current, and checking fault outputs.
- TA7291P DC MOTOR CONTROLLER Inexpensive motor control circuit made with a breadboard and a toshiba TA7291P h bridge chip
- XYZ-DC Motor Controller is a complete and high-performance board to control three stepper motors and a DC-Motor with external power supplies, heating control and a sophisticated software to manage the board with Arduino through USB serial. This is the electronic core element of XYZ-Stepper Milling Machine. See also this page for XYZ-DC Motor Controller project specifications.
- Eagle files for an L293-based Arduino motor driver shield.
- Motor Control Shield v3.0 Simple motor control shield by David Cuartielles based on a SN754410 (almost like L293) that allows to control either a stepper motor or 2 DC motors bidirectionally or up to 4 DC motors, coils, ect. unidirectionally.
- Code the parallax HB-25 motor controller item code #29144.
- DC motor control using an H bridge.
- Adafruit servo/stepper/motor shield - controlling 2 servos, & up to 2 stepper motors or 4 DC motors. (Schematics, layout, and library).
- Analog Motor Control(AMC) Library - AMC is base on Adafruit's Arduino Motor Shield(using 74HCT595N , L293D). It is easy to use and can drive four DC Motors or two Stepper Motors in the same time(does not need to wait the other one finished its stepping loop). Support Bi-Polar , Unipolar , Unipolar with 3 phases stepper motor.
- Datasheet for the L293 motor driver IC. Blog diagram of how to connect the L293 to an Arduino. (Peltier Elements are working with this IC, too)
- TankShield - a tank tread shield for the Arduino that shows how to turn an Arduino into a robot
- DC Motor Control - Speed and Direction
- DC motor control using L293D /Broken link 7-2-2010
- directional motor control with a L293D
- PC Fan Speed Control - Reading RPM
- Library for Pololu Qik2s9v1 controller
- Controlling OSMC Boards with an Arduino
- Cardboard Laser cutter with an old EPSON printer.
- AccelStepper motor controller for 2 and 4 pin stepper motors, with acceleration, deceleration, etc. Never blocks or delays, so supports multiple simultaneous steppers for multi-dimensions, etc.
- Interfacing Arduino with SMCC-547 Stepper Motor Controller
- StepperLab3 library with ramp function, speed & torque control, full and half step mode, non blocking operation.
- The Ardubot by Sparkfun Dual DC motor control, speed (pwm) and direction.
- Bipolar Stepper Motor from Floppy Drives
- Solenoids
- Schematic for driving DC solenoids, using a transistor connected to an Arduino pin.
- A Solenoid Tutorial.
- Servos
- Mega Servo
- Control up to 12 servos with the MegaServo library.
- Software Servo
- You can control up to 20 hobby servos simultaneously with the Software Servo Library.
- Example controlling a servo with the Software Servo Library.
- Example xylophone with wine glasses built with the Software Servo Library.
- Hardware timer Servo
- You can control 2 servos, on pin 9 and 10, very precisely with the Servo Timer 1 Library.
- You can control 2 servos, on pin 9 and 10, with even more precision with the ServoTimeTimer1 Library based on the above.
- You can control very large numbers of servos precisely using an external PWM chip. Each chip can control up to 16 servos and can be daisy-chained for > 16 outputs. See PWM Expansion with TLC5940 for library code and examples.
- Code and instructions for using the Atmega's internal hardware timers to drive two servos.
- Control up to 12 servos on a standard Arduino or 48 servos using the Mega Board with the MegaServo Library
- Arduino and Pololu Micro Serial 8 Servo Controller. Video, images and sketch files to manage 6 servos from a joystick
- Controlling up to 8 servos with Pololu Micro Serial Servo Controller. Forum discussion with sample code.
- Manage two servos using a joystick and create multiple movements with the Lynx Tilt Kit
- A delta robot made of three servo motors
- Control up to 32 Servos with SSC32 and Arduino LibSSC32
- Robot Kits
- Put Arduino in the Asuro Robot's brain.
- Asurino - an Arduino library for the Asuro robot.
- Arduino takes over RoboSapien V1 with 4 wires.
- RoboSapienServer - A web enabled RoboSapien based on the RoboSapienIR project.
- Custom 4 leg walker from Arduino, 3 Servos, Batteries
- Object Oriented interface for iRobot Roomba and iRobot Create. Includes hints and circuits for reliable comms between Roomba and Arduino, example programs including remote control of a Create from your iPhone with the RCTx app.
- 2WD Arduino Compatible Mobile Platform - Build notes
- Other
- Control a clock movement.
- Model Railroad Fast Clock, using an Arduino to drive analog clock hands at selectable speeds. Includes sketch.
- RCKit http://www.open.com.au/mikem/arduino/RCKit implements a Wi-Fi remote-control receiver and drivers for remote-control vehicles using the Remote-Control over IP protocol (RCOIP). Includes support for a large number of remote-control channels, backchannels for telemetry, drivers for servos, motors, steppers, analog and digital inputs and outputs, etc. RCTx, an RCOIP compliant transmitter for iPhone is available on the Apple App Store at http://itunes.apple.com/app/rctx/id377833472?mt=8. See documentation for demo videos.
- Infra-red remote control for models for controlling a range of infra-red models such as 3 channel Chinese IR helicopters, etc.
- Class for controlling Parrot AR.Drone quad-copter over WiFi. Requires WiShield/Yellowjacket. Sample code for flying AR.Drone with a USB Joystick/game pad, using the USBJoystick class.
Electrical / High Power
- Relays
- Schematic for driving DC relays using a transistor connected to an Arduino pin.
- Schematic for driving 5V DC relays using an optical coupler and a transistor connected to an Arduino pin, which is protected by the optical coupler. Based on the schematic above.
- PCB and kit for a single channel relay with embedded driver at EtherMania
- A "novice-friendly" way to control 110v AC (US style plug/ socket). $19+p&p 8/10. May keep you safe.
- ArduPower an Arduino based telnet server to control six power supply, with login password, editable tcp/ip parametes, relay status and connected system informations, all parameters saved on eeprom.
- Relays tutorial: Back to stone age... elegantly
- MicroHTR: A simple heating system using a PID controller
- APCC Rainmaker irrigation controller. You can control up to five zone of watering, can be programmed for each day of the week.
- Voltage Boosters
- A simple regulated DC-DC booster for up to 60V 1/4W. It uses no special ICs, just basic components and two pins from the Arduino.
- Spark Plugs
- Making a spark plug spark. Using a Mosfet to pulse the ignition coil that drives the spark plug.
Multiplexing Outputs
- How to use TLC5940s to add more PWM outputs.
- 4051 is an 8 channel analog multiplexer / demultiplexer
- PWM
- PWM all Arduino pins without extra hardware
- [http://effluviaofascatteredmind.blogspot.com/2010/02/arduino-pwm-on-all-pins.html|A class (i.e. library) to PWM all pins between any 2 states]
- M5451 Constant current output pin expander
USB
The UNO and Mega2560 use an ATMega8u2 to provide the USB interface to the Host PC and it is programmed with USB to serial firmware. The firmware on the ATMega8u2 can be replaced to turn the UNO or Mega2560 into a different USB device such as a Keyboard, Mouse, or MIDI device. This section has links to different USB firmware resources.
- Keyboard HID, Mouse HID, Joystick HID, and MIDI USB firmware
- Hiduino - MIDI firmware
- HID Joystick by ant.b unfortunately details are in the old forum and not accessible.
- MocoLUFA MIDI USB firmware
The coming Arduino Leonardo has USB support built into the the processor, removing the need for the FTDI or the ATMega8u2 to communicate with a host pc and the Arduino 1.0 IDE has partial support (written 22/2/12) for keyboard and mouse interfaces.
Input
Examples and information on specific input devices and peripherals: How to connect and wire up devices and code to get data from them.
See also the pages devoted to the Dallas One-Wire MicroLan, I2C and ethernet. They enable you connect additional input (etc.) devices across networks controlled by the Arduino. The trouble of controlling a network is repaid if you need to connect many inputs (and/ or outputs), or if your actuators / sensors are not close to your Aruduino.
Bar Codes
- You can hook up a bar code scanner (which simulates a keyboard) or a keyboard to the Arduino. See bar code scanner
Light sensors... visible, IR, etc. Levels, not images
See also: the IR section in the Communications section
- Light Sensors
- Use 20 LEDs as a simple camera - A Blinkenlight experiment to use 20 LEDs as a crude camera sensor.
- Example of how to use an LED as a light sensor using 2 digital pins.
- Tutorial on replacing a CdS photo-cell with an LED using only a single pin - either a digital pin or (optionally) an analog pin for faster response times in low-light conditions. Complete with a reusable class for fast/easy support in your project.
- Example of how to use several LEDs as a light sensor and display the results with Processing.
- Example of how to Build a simple tachometer using an optoswitch based circuit.
- Example of how to use an IR LED and sensor to detect a broken beam. With a simple game of Sneak_Thief.
- Tutorial on interfacing the TSL230R light sensor and the Arduino
- Simple sketch interfacing TSL235R Light to frequency sensor
- Library for directly connecting your Arduino to the Pixart sensor taken from the Wiimote handset. PVision library for Pixart/Wiimote IR sensor Can be used for X/Y blob tracking (at 100Hz) of up to 4 points. Note: you will need to build a harness circuit for the Pixart sensor.
- Example of how to use an LED as a light sensor using the ADC and external circuitry.
- IR Reflectance/Line Sensors
- Library for connecting your Arduino or Orangutan to Pololu QTR reflectance sensors, which can be used for line following, edge detection, or close-proximity obstacle detection/ranging.
- Parallax QTI sensor and Arduino
- Your first LDR project (includes calibration) http://blog.rafaeltorrales.info/2011/11/17/first-ldr-project/
Images
Audio Input
- Microphones
- Example of how to connect a piezo as a blow sensor, can also be used to read vibrations or as a touch sensor.
- Example of how to connect a electret microphone.
- Sound capture: hardware and code samples
- Fast Fourier Transform: FFT tutorial and code samples
- Measurement
- Frequency Measurement Library for the audio and sub audio range
- MIDI
- see MIDI under communication section
Mechanical
- Switches and Buttons
- Unified Arduino Input Interface: Library that provide unified interface to all input devices. The interface can sense buttons, rotary encoders, keypads, analog buttons, serial keypads or even smartphone as your arduino input. Make local interface on your project and control it the same on remote interfaces on PC, phones or internet.
- Debounce: a library to debounce switches.
- SoftwareDebounce: a simple software input debounce algorithm.
- Buttons: a simple library to use hardware debounced buttons, handling one shot and hold.
- HoldButton: a code that makes a single button able to call different functions depending upon how long it it is held.
- Button: simple hardware abstraction library
- Button (carlynorama) Another button abstraction library. Event based, also allows for being used with shift registers, debounce, holdDelay (like keyboards) etc.
- AnalogButtons: a library to connect more than 1 switch to a single Analgue pin, using different voltage dividing resisters for each switch. Provides register callback functions or over-riding Button class methods to communicate a button press action. Supports configurable holding down of a Button.
- AdvButton: Advanced, yet simple to use, library for registering user input with buttons. Provides an event based interface.
- M66004Vfd: Library includes support for the buttons on the VFD display/control panel salvaged from certain HP LaserJet printers such as the LaserJet 4.
- HpLaserJetLcd: Library includes support for the buttons on the LCD display/control panel salvaged from certain HP LaserJet printers.
- Encoders
- Unified Arduino Input Interface: Library that provide unified interface to all input devices. The interface can sense buttons, rotary encoders, keypads, analog buttons, serial keypads or even smartphone as your arduino input. Make local interface on your project and control it the same on remote interfaces on PC, phones or internet.
- A little sketch for reading rotary encoders.
- Magnetic Rotary Position Sensor MLX90316.
- Using a DC motor as a simple rotary /rotation encoder
- Acceleration support for Rotary Encoders
- Rotary encoder in use within a global user interface solution
- Using Jog-Shuttle rotary controls reclaimed from VCRs
- Potentiometers
- Potentiometer: simple hardware abstraction library
- Telephony
- Rotary Dial: reading pulse-dialed digits from a rotary telephone dial
Magnetic
- Hall Effect sensors
- A1301 A simple sketch to measure strength and polarity of a magnetic field.
- Reading PC Fan RPM A simple tutorial on using the Arduino to read the RPM of a common 3 wire PC fan.
- Measuring Liquid Flow Rate Using Arduino and Water Flow meter from Seeed Studio
- Sensing currents with Allegro ACS714
- Simple tutorial to sense an omnipolar magnetic field with the MLX90248
- Fun with reed switches
- LSM303 Accelerometer + Magnetometer Library - This library makes it easy to read the raw accelerometer and magnetometer data from the LSM303, and it can also compute the tilt-compensated heading from the Earth's magnetic field.
- MicroMag library to read the MicroMag2 and MicroMag3 magnetometer sensors from PNI.
Joysticks / Gamepads
- A good tutorial on how to connect five or more joysticks to the Arduino
- NESpad library that handles the serial communication between Nintendo NES/SNES game pads and an Arduino (moved from rahji.com) http://code.google.com/p/nespad/
- A project in which a SNES-Controller-To-USB-Keyboard-adapter with iCade support is built http://petrockblog.wordpress.com/2012/04/22/snes-pad-icade-adapter/
- Talking to a Wii Nunchuck. Adapter and Library at Todbot http://todbot.com/blog/2008/02/18/wiichuck-wii-nunchuck-adapter-available/
- New Wii Nunchuk Library for Arduino. Works with Arduino 1.0. Implements new initialization method (unencrypted data from the Wii Nunchuk).
- A pair of libraries for talking to a Wii Remote and Nunchuk. The Wiimote library supports bidirectional communication between Wiimote and Arduino, with two APIs, one for sporadic updates and one for continuous streaming. Background and commentary can be found here and here.
- Talking to a Wii Classic Controller
- Wii Classic Controller for Arduino 1.0, a modified version of the above library to work with Arduino 1.0.
- Another Wii Nunchuck library with more accurate angular pitch and roll data WiiChuckClass.
- A library to read a standard Playstation controller PSX Library.
- A library to read a standard, wireless, or dualshock Playstation controller in digital or analog mode as well as control feedbackAnalogPSXLibrary
- An easy to use library to read a Playstation 2 controller including full analog mode and rumble control; also tested with Guitar Hero Controllers PS2X Library
- Converting Wii gamepad signals to USB HID, compatible with PS3 and Windows : http://code.google.com/p/wii-ext-to-usb/.
- Interfacing Wii Guitar Hero World Tour Drum controller. Interface described at: http://jamers.netne.net.
- Wii NunChuck, Arduino and servos (video, images and source code) http://www.fabiobiondi.com/blog/2009/12/wii-nunchuck-controller-and-arduino/.
- Wiimote and PS3 controller on Arduino using USB-Host shield: http://www.circuitsathome.com/mcu/programming/ps3-and-wiimote-game-controllers-on-the-arduino-host-shield-part-1
- Using a standard PC joystick or gamepad directly: http://www.built-to-spec.com/blog/2009/09/10/using-a-pc-joystick-with-the-arduino/
- Class for easy interface to USB Joysticks/Gamepads using USB Host Shield http://www.open.com.au/mikem/arduino/USBJoystick
- Joyduino: using Arduino as an Atari-compatible joystick for retro computers.
Mice
- Read data from a PS2 mouse. Useful if you want to use the encoders from an old mouse in a robot or other device. PS2 mouse interface
- PS2 Mouse Library - An updated version of the above library that adds support for scroll wheel mouses and easier sketch integration.
- Read out the surface movements directly from an optical mouse sensor. English tutorial and library
- Get absolute position from a laptop touchpad. Instructable with an Arduino sketch
Keyboard/Keypads
(See also section on capacitive sensing for keypads which will, for instance, work through a window pane.)
- Unified Arduino Input Interface: Library that provide unified interface to all input devices. The interface can sense buttons, rotary encoders, keypads, analog buttons, serial keypads or even smartphone as your arduino input. Make local interface on your project and control it the same on remote interfaces on PC, phones or internet.
- GKOS Keypad - Enter any text directly into Arduino simply with 6 keys.
- Keypad - Read a matrix keypad. See Keypad Tutorial.
- PS2Keyboard - A small library that deals with PS/2 based keyboards
- PS2KeyboardExt - An extension to the above library to support more keys and functions
- PS2KeyboardExt2 - another extension, fast with shift, alt and caps lock and caps_lock light
- PS2C - A final version of the PS2Keyboard library that gives complete functionality of a ps2 keyboard
- I2C Port expander and Keypads - A small library for use keypads with I2C port expander PCF8574
- I2C Port expander and Decoders - A library that uses a 74C922 keypad decoder on an I2C port expander
- See also the entry in the communications section, wireless, IR subsection, about using a domestic (e.g.TV) remote to send "keystrokes".
Capacitive Sensing
- Use any pins on ATmega328 Arduinos as capacitive sensors (touch) without additional hardware
- Arduino as capacitive sensor
- Theremin as a capacitive sensing device
- QTouch 1-wire Library - Library for the 1 wire interface on Atmel QTouch devices (developed for QT1103)
- Capacitance measurement
- Tutorial with sourcecode Information on capacitive sensing, using the library, and the ArduCapSense.com shield
- AT42QT10XX Library & Tutorial Arduino Library for the Atmel AT42QT1070 Touch Capacitance chip using i2c.
- Capacitance meter A fully featured capacitance meter. Few extra components required (no coils), ranges from pF to µF.
Magnetic Cards
- MagStripe - a library to interface with single-track magnetic card readers
Position Sensing
- MicroTLT: Tilt Sensor
- Playing with an Arduino and sensors: Getting pitch and roll from gyros and accelerometers for Stabilising Stuff
Pressure Sensors
- SCP1000: Code to read the SCP1000 barometric pressure/temperature sensor, which uses the SPI interface.
- Intersema MS5607B and MS5534C: Code to read some Intersema barometric pressure/temperature sensors:
MS5607B uses i2c
MS5534C uses bit-banging- Intersema MS5541: Code to read the MS5541 or compatible sensor: sketch for reading calibration words and for use.
- SPX3058D Pressure Sensor: Connecting this sensor directly to the analog inputs of an Arduino, with code.
Ardustat: Galvanostat/Potentiostat
- Ardustat: Schematics and code to build an electrochemical characterization devices using an Arduino. Open source successor to Jonny Galvo. Measures charge held by, e.g., a battery.
Distance Sensing
- http://www.arduino.cc/en/Tutorial/UltrasoundSensor - I just wanted to point out that this code also works for the Maxbotix Max Sonar ultrasonic range finder... which is sold in the USA through SparkFun Electronics...
- MaxBotix/MaxSonar tutorial: I have found the above PING code doesn't work with MaxSonar devices so I did a small writeup.
- Parallax Ping - code http://www.arduino.cc/playground/Main/UltrasonicSensor - Variant of the code above but returns actual distance.
- GP2D12 infrared sensor - read_gp2d12_range is a function that retrieves distance from this sensor in centimeters.
- Simple IR distance sensor using a Panasonic IR sensor and IR led using the IR sensor and led from the boe bot kit. http://www.arduino.cc/playground/Main/PanasonicIrSensor
- URM37 Ultrasonic Distance Measurement Library. URM37 Ultrasonic Distance Measurement Library by Miles Burton
- SRF08 Ultra Sonic Range Finder Code - http://www.arduino.cc/playground/Main/Sonar_srf08 Communicate with old SRF08 sensor via Wire.h protocol. Choose inch or centimeters and change address.
- SRF02 Ultra Sonic Range Finder Library - http://www.grappendorf.net/arduino/libraries/srf02-ultrasonic-distance-sensor Communicates via the I2C protocol and supports multiple sensors.
- SRF04 Ultra Sonic Range Finder Library - http://code.google.com/p/srf04-library/ - Analog ultrasonic distance sensor.
- Sharp GP2Y0A21YK IR Distance sensor Library - http://code.google.com/p/gp2y0a21yk-library/ - Analog IR distance sensor.
Environmental
- WeatherShield1 A Weather Shield for Arduino. Pressure, temperature and relative humidity in a easy to use shield.
- Humidity
- HH10D Simple, frequency-output relative air humidity sensor
- HTF3223 Inexpensive Humidity sensor example code
- DHT22 Library Easy to use library with example code
- DHT11 DHT22 AM2302 Humidity & Temperature: $12+p&p and one signal pin. No special libraries needed.
- DHT11_lib Yet another DHT11 Library.
- DHT_lib One library that supports both DHT11 and DHT 22
- Sensirion SHT1x & SHT7x series temperature / humidity sensors: Version 2.0 (Sensirion_10Dec2010.zip) of this library is now available. Features include: Temperature, humidity, and dew point calculations (optionally via non-blocking calls); CRC checking; Status Register write and read capability; plus other enhancements. See the Sensirion page for additional information.
- Check this project too: Arduino for datacenter monitoring: http://marco.guardigli.it/2010/05/arduino-in-datacenter-rack.html
- AM2311 Library This library reads the temperature and humidity data from AOSONG AM2311 sensor.
- Temperature
- Internal Temperature Sensor The internal temperature sensor.
- http://ricardo-dias.com/projects/temperature-central/ A temperature central with LM35 and 7-segment displays
- Rudimentary Thermal Imaging A rudimentary setup for a 20 pixel thermal imaging device consisting of basically just 20 diodes.
- http://www.australianrobotics.com.au/node/266 Pachube Client With Watchdog Timer (Round 2)
- DS18B20 Accurate digital sensor. Simple code, could the basis for reading other 1-Wire devices. No special libraries needed, not even Arduino "OneWire".
- An article about DS18B\S20 & Arduino Describes command interface for sensors (good for advanced users), provides Wiring function for handling the sensors
- KTY 81-* KTY (NTC) Temperature sensor with Arduino
- Dallas Temperature Control Library. A very simple library to interface with the DS18B20, DS18S20 or DS1820 IC.
- A library for interfacing with the DS1621 temperature sensor (Code)
- A simple lookup table method of getting Celcius numbers from a 10k thermistor. Code & calculating spreadsheet here: thermistor
- Reading a thermistor using an equation instead of a lookup table. thermistor2
- Single line of code to read thermistor from 1C to 44C: thermistor3
- Universal and flexible NTC thermistor library using Steinhart-Hart equations: Thermistor4
- There are also ways to access the excellent Dallas 1-Wire temperature sensors.OneWire
- Simple Library to interface a Maxim MAX6675 Thermocouple to Digital Temp Converter. (Google Code
- Reading from SMT16030 digital temperature sensors
- LM75A i2c temperature library
- LM75 with using temperature alarm and interrupt. Take a look at Arduino forum entry
- Microchip MCP9700A Temperature Sensor Library -40C to +125C for $0.36US!
- Web Data Logging With Pachube and LM335Z
- LM335A Temperature Sensor Library
- Arduino with LM335 Temperature Sensor, Schematics and Code
- Tsic 206/306 digital Temperature Sensor
- TMP102 I2C Temperature sensor (sparkfun BOB)
- Infrared Thermometer MLX90614
- Library to interface a Maxim DS7505 Digital Thermometer and Thermostat Sensor. (Code)
- DS7505 Digital Temperature Sensor/Thermostat Library Another guide on how to use the DS7505 temperature sensor with Arduino.
- PT1000 RTD Temperature sensing A guide on how to build a 4 input multiplexed RTD sensing module for PT1000 will work with PT100 too
- TMP102 I2C Thermometer Tutorial Code+Schematic http://bildr.org/2011/01/tmp102-arduino/
- MLX90614 IR thermometer Tutorial Code+Schematic http://bildr.org/2011/02/mlx90614-arduino/
- Remote Temp Monitoring w/ Spreadtrum SM5100B uses DS18B20 Dallas 1-Wire temperature sensors and the SMS capabilities of the SM5100B to monitor and report in-home temperatures.
- Gas sensors
- MQ Gas sensors Using the MQ-2, MQ-3, MQ-4, MQ-5, MQ-6, MQ-7, etc. gas sensors.
- Anemometer (wind speed meter)
- See also
- Dallas One-Wire Interface: MicroLans- networks of 1-Wire chips- have been popular for many years with weather station hobbyists. In the "outside world" beyond our own Arduino community there is a great deal of information on connecting rainfall, wind, temperature, (etc., etc.!) sensors... little of it Arduino specific, but all of it Arduino useable once you master the basic techniques of communicating with the 1-Wire chips at the heart of all of the already-invented wheels. The basic techniques are not terribly complicated, and they open up many possibilities.
- Sensors for Light (Visual and IR... levels, not images)
Tagging / Labeling
This section a legacy... Bar Codes and RFID now have their own sections. (From 29 Jun 2011)
Location
- Compass
- LSM303 Tilt-Compensated Compass Library - The LSM303 is an inexpensive 3-axis accelerometer combined with a 3-axis magnetometer. This library makes it easy to read the raw accelerometer and magnetometer data, and it contains a function that performs the non-trivial math to compute the tilt-compensated heading using the Earth's magnetic field.
- HMC6352 I2C Compass Sensor - Read heading from a compass sensor, using the Wire library. Here's the sketch: Learning.hmc6352
- Forum posting on controlling the HMC6352 with the Wire library.
- Parallax HM55B Compass Sensor - get angle to North here is all you need: HM55B
- Using the HMC6352 I2C Digital Compass - Code & Schematic http://bildr.org/2011/01/hmc6352/
- CMPS03 Compass Module - http://www.grappendorf.net/arduino/libraries/cmps03-compass-module Communicates via the I2C protocol.
- GPS
- Arduino code for parsing data from the EM-406 GPS module, by bigengineer.
- How to connect a Parallax GPS module to the Arduino, and read its $GPRMC string. Tutorial translated from Igor González Martín's original Spanish tutorial. This allows you to get date, heading, latitude and longitude from the GPS module.
- GPS library for Arduino/Wiring by Maarten Lamers is a library for decoding (NMEA) data from any GPS receiver. It extracts all information types, such as speed, direction, location. Supports $GPRMC and all possible sentence types. Includes example programs and routines for calculating distances and directions over Earth's surface. NOTE: this library does not work on 1K Arduinos: Duemilanova, etc.
- TinyGPS, a new GPS/NMEA parser by Mikal Hart is a resource stingy library for decoding (NMEA) data from any GPS receiver. It extracts speed, direction, location, course, date, and time, but consumes only about 100 bytes of RAM.
- Acoustic.GPS A GPS homebrew "GPS" system that uses sound to determine distance to three known points using off the shelf components.
Motion
- Accelerometers
- Connect the Arduino to an LSM303 3-axis accelerometer & 3-axis magnetometer - get raw accelerometer and magnetometer data, or put it together for a tilt-compensated compass heading
- Connect the Arduino to the LIS3LV02DQ Triple Axis Accelerometer
- Connect and read the Parallax 2-axis Memsic 2125 accelerometer - instructions, video, and source code
- Connect Arduino to a Parallax H48C 3-axis accelerometer H48C Triple Axis Accelerometer (DE/EN) Parallax H48C
- Interface to the Parallax visual motion sensor - some instructions and code samples
- Library and documentation for the LIS332h accelerometer.
- Library and example for a Freescale MMA7361 Triple Axis Accelerometer.
- Library and examples for the Freescale MMA845-1,2,3Q Accelerometers. Includes sense shake, motion, and raw xyz.
- Gyros
- Compass
- 6DOF Library and Examples Compass Hard Iron auto Solver, 360 Compass Compensation, accelerometer, yaw, pitch, roll
- Using CMPS03 compass module on Arduino connected through I2C - Manuals
- ADXL3453 axis accelerometer special features - sense tap, free-fall, and activity - Code/Schematic http://bildr.org/2011/03/adxl345-arduino/
- IMU
- using vectornav vn-100 IMU (with extended kalman filter) and an arduino. based on vectorduino, a parsing lib for the mega. here is a video of a project and revised lib with example code in the description video.
Other voltages / Power (kiloWatt hours)
- DC
- Arduino can only sense 0-5V inputs. Here's a schematic explanation of how to interface to 5V or higher.
- 120V/240V AC
- Monitor the power grid - A Blinkenlight experiment to monitor the power grid's frequency deviations / load.
- How to build an energy monitor / power meter that can measure whole house energy use, using a current transformer to measure current and AC-AC power adapter to measure voltage plus a few resistors and capacitors. Calculates Real Power, Apparent Power, Power Factor, RMS Voltage, RMS Current, frequency and kwh.
- 12 Input pulse counter
- AC Phase Control Method for controlling power to AC devices using hardware timers, a triac and a zero crossing detector.
- KWh Monitoring
- Small sketch for interfacing with a EEM12L-32A KWh Monitoring device.
- Energy meter readout
- Energy consumption monitor project reading out precise solar production and public grid consumption values from recent electrical power meters via serial infrared port and blinking LED, and generating pulses to feed the S0 port of an attached Solarlog 500 recording device with the current home consumption (in german).
Time
- Time library for dates and times that can be used with and without external hardware
- A tutorial for a DCF77-based radio clock
- Tutorial Arduino DCF77 v0.2 Code
- Use the Dallas/Maxim DS1306 Real-time Clock chip with Arduino.
- I2C for RTC DS1307 Real Time Clock - Interfacing with the DS1307 date/time keeping clock - Great for logging events.
- Library to control the RTC DS1307 with Arduino. Also an example is supplied and how to connect it. RTC DS1307 Library
- RealTimeClockDS1307: Yet another (more elaborate) library for working with the DS1307. Includes methods for access to the battery-backed RAM, square wave generator, correct 24h-AM/PM conversion, etc. Example sketch allows interactive control of most functions via Serial Monitor.
- Use the CMax CMMR-6P WWVB Receiver with Arduino
- DS1302 RTC (spi based with supercap backup) library
- Sleep and Watchdog functions for battery operated equipment Nightingale example
- Interface to IBM AT RTC bq3287 and compatable with 8bit bi-directional bus code and description
- Interface to a Maxim-IC DS3231 I2C chip
- Guide for beginners to using the DS1302 RTC in the nuelectronics.com datalogging shield. Could help other users of the DS1302 also.
- Sketch to set the DS1307 of the logshield by means of NTP.
- Library for the DS1340Z RTC with sample sketch to read and write time code. (Low voltage operation supported). For more information please check out the DS1340Z Inmojo Arduino Shield product page.
- PCF8563 RTC Library with examples.
- Library for the I2C DS1307 RTC with NV-RAM support. With v1.20 you can calculate with the time and a program has been added to modify the RTC over the serial port.
- MicroCLK: A stand alone RTC controlled clock with LCD display
- Syncing an RTC to your computers time using python Syncing RTC using python
- Setting the time on your DS1307 RTC using a Windows application. Set RTC time from PC App
- Using I2C RTC PCF8563 at I2C fast mode (400 kbit/s) with an optimized code. I2C RTC PCF8563: basic usage with Arduino
- Comparing RTC DS1307 and PCF8563 and using DS1307 with an optimized code. I2C RTC DS1307 and Arduino
- Comparing Arduino crystal deviations. A Blinkenlight experiment that shows why Arduino without RTC is unsuitable for time keeping.
Touch screen
- Schematics and source code available for interfacing to a small touchscreen (mounted on the TouchShield) - and another example
- SMARTGPU Fullcolor touchscreen display drawing.
- Schema + sources to plug DS Touchscreen with an Arduino (from A to Z)
Slotted Detectors/ Proximity Sensors
See also other references to "proximity" elsewhere on page, including the material in distance sensing. There may be discussion of these devices in the "encoders" section, for intstance. Set up xrefs? SEe, for instance, the material here in "IR Reflectance/Line Sensors" under "Light sensors"
- Someone please do a write up of the useful slotted and reflective detectors which DO exist, and can be plugged into Arduinos!
Human Interface
- Muscle (EMG) Sensors
- Easy to follow instructions on how to build and hook up a muscle sensor to Arduino microcontrollers.
Multiplexing Inputs
- read the forum post on analog multiplexers
- learn how to use the Motorola MC14067BCP Analog multiplexer/demultiplexer through the fluidforms tutorial
- The 74XX151 digital multiplexer
- 4051 is an 8 channel analog multiplexer / demultiplexer
- Want to learn how to make your own force-sensors and how to connect hundreds of them with multiplexers? look at fluidforms' great tutorial and post in the Arduino users projects section of this wiki. Tutorial by fluidforms.at.
- Build a 24/48/72 Channel Input Extender
- The SN74HC165N 8-bit parallel-in/serial-out shift register. Read the state of 16 (or more) digital pins using only 4 Arduino digital pins.
- Expand the digital outputs. Chainable with individual pin access using the 74HC595 http://bildr.org/2011/02/74hc595/
- Serial to Parallel using 74HC595 Shift Register http://www.arduino.cc/en/Tutorial/ShiftOut
- Using the CD74HC4067 is a 16-Channel Analog Multiplexer - Expand your analog pins - http://bildr.org/2011/02/cd74hc4067-arduino/
- The Mux Shield expands your Arduino to 48 analog or digital inputs.
ADC/DAC
- Need more, or more accurate, analogue input and output? Use an ADC or DAC.
- A library for interfacing with various SPI ADCs
- The MCP3208 is a 12bit 8 channel SPI ADC.
- The R/2R ladder is a simple and inexpensive alternative to DAC ICs - photo-tutorial for construction on a protoshield.
- Connect a LTC2400 High Precision 24 Bit Analog to Digital Converter
- Connect a MCP3421 18 Bit Analog to Digital Converter
- Tutorial on rolling your own voltage dividers as a PDF document (with optional data files)
- Using a AD420 Serial Input 16 bit DAC with Arduino
- Connect a MCP4725, I2C-based ADC with Arduino.
- i2c_adc_ads7828: This is an Arduino class library for the Texas Instruments ADS7828 12-bit, 8-channel I2C A/D converter. Updated to support Arduino 1.0.
- Simple 10 bit DAC
- PlainADC: Fast ADC, single channel, autotuned, ranging from 0.125Hz to 100kHz.
- MicroDDS: Stand alone 6 bits Direct Digital Synthesizer (DDS)
RFID devices for input
- SonMicro's SM130
- RFID- Sparkfun/ Innovations
- Innovations ID-12 RFID Reader (from sparkfun)
- Sparkfun/ Innovations Readers "Getting started" guide from SheepdogGuides... Introduction followed by full code for door lock, and PCB design, and information on electro-mechanical strike plate.
- Innovations ID-12 RFID Reader using software serial and detecting removed RFID tags
- ID-12 / ID-20 RFID readers - ID tags in arduino code. - Code & Schematic http://bildr.org/2011/02/rfid-arduino/
Sparkfun offer several RFID readers suitable for Arduinos. There are useful discussions on the use of them in the Sparkfun pages, and in the forum.
- RFID- Parallax
- GumboLabs write-up on how to get the best out of your Parallax RFID reader and how to account for noise. Using the Parallax reader and accounting for noise.
- Code for using the Parallax RFID? reader with Arudino. Based on the Wiring tutorial.
- Code for using the Parallax RFID reader with Arudino. Based on the
- RFID- General points and other readers
- RFID door lock Using the SL018 low-cost I2C reader
Wiring tutorial (note: this Wiring tutorial link is 404).
At 1/2011, a useful discussion was unfolding in the forum on how to connect a Wavetrend active reader capable of reading cards at distances in excess of 2m.
The USB Phidgets RFID reader you may encounter for sale on eBay is not suitable for Arduino work, as to use it you need a proprietary .DDL
- DIY RFID reader - using the Arduino plus simple home-wound coil to read FSK tags
- FSK RFID tags are widely used, yet are unsupported by the popular Parallax kit. A simple solution based on using only the Arduino and a few low cost common components can read FSK RFID tags reliably (and potentially all other 125kHz tags).
User Interface
Graphical or text - based user interface (UI) or human machine interface (HMI) on Arduino: How to ask a user to input information (number, choose from a list, enter text, etc.) on an Arduino using display (LCD, LED matrix etc.) and buttons, keypads or other devices.
Text-based user interface
- Unified Arduino Input Interface: Library that provide unified interface to all input devices. The interface can sense buttons, rotary encoders, keypads, analog buttons, serial keypads or even smartphone as your arduino input. Make local interface on your project and control it the same on remote interfaces on PC, phones or internet.
- Phi_prompt user interface Library Interactive user interface for your projects. Library functions use an HD44780 character display and one to six push buttons. You can use the library to construct a user interface to ask your user to enter numbers, select from a list, navigate a menu (multi-level), enter text strings, display multi-line and multi-page long texts from main memory and PROGMEM, ideal for introductions and outputting multi-line results. You can also call simple functions such as ok_dialog and yn_dialog to ask user for information. Lists/menus have lots of features, scroll bar, auto-scroll long list items like on an MP3 player, centering on item, flashing cursor or arrow to highlight item, current/total index or 0-9 index etc. http://liudr.wordpress.com/libraries/phi_prompt/
- MenuSample - an interactive terminal-based menu interface for your projects. Allows multi-level menus, uses PROGMEM space, and lets you control your Arduino interactively. http://sourceforge.net/projects/arduinowifly/files/MenuSample/
- Phi_prompt_glcd user interface Library This is being planned.
- Phi_prompt persistence of vision display user interface Library? This is being planned.
- M2tklib (LiquidCrystal Library): 2-6 buttons or custom defined, debounce, menues and dialog definitions in PROGMEM area, text & number input, toggle/check/combo box, container widgets, scrollbar, online reference and tutorials
- MENWIZ - MENu WIZard: Simple coding, user defined callbacks and actions. The user can define a splash screen to be activated at startup, a user default screen to be activated after x secs from last menu interaction. The user can easily fire action inside a menu hierarchy. Any sketch variable (integer, byte, boolean, float) can take input from the menu and viceversa(bidirectional binding). Menu navigation needs 4 or 6 buttons (up to the user), or the user can provide its own callback routine for custom nav devices. It is built on top of "new" LiquidCrystal library (i2c, 4 wires, 8 wires and other interfaces are supported) and is able to support different lcd sizes (16x2, 20x4, ...).
- LCD Menu Easy to use Menu-drive user interface. Primarily intended for 16x2 to 24x4 style character displays. This library uses Liquid Crystal to control the LCD, and adds a menuing layer on top so that you can define your menus easily, and receive callbacks from the menu code to execute your code. You can also use some of the built-in code for taking input for Boolean or integer inputs. The primary focus of this library is on an easy-to-use interface for defining your user interface and getting input back.
Graphical user interface
- Monochromatic dot-matrix display implementations
- M2tklib (GLCD, U8glib or DOGM128 Library): 2-6 buttons or custom defined, debounce, menues and dialog definitions in PROGMEM area, text & number input, toggle/check/combo box, container widgets, scrollbar, online reference and tutorials
- Color dot-matrix display implementations
- SMARTGPU Create advanced color touchscreen GUIs very easy with Arduino + SMARTGPU.
Hardware independent layers
- Multi-tap input This code accepts any type of keypads such as standard arduino keypads library result and interprets it with a pre-defined multi-tap mapping. It has cap key and space key for 12 key pad and more functions for 16 key pad. The instructions are embedded as comments in the front of the code.
Storage
Various options for storing data from your Arduino board.
Built-In EEPROM / Built-In Flash
- The EEPROM library give you access to 512 bytes of non-volatile memory (that is, it retains its value when you turn the board off).
- Mikal Hart's Flash library allows you to easily store strings, arrays, and tables in read-only memory without the hassle and complexity of learning PROGMEM programming.
- Bitlash lets you define and store new Bitlash functions in EEPROM.
- EEProm wear leveling - A Blinkenlight experiment that explains EEProm wear leveling.
Dallas 1-Wire
- There are EEPROMs in the 1-Wire chip family from Dallas Semiconductor. They can connect to the Arduino via a MicroLan, or more directly. The techniques for using MicroLans from an Arduino have already been developed. (And give you access to input and output options, too.)
DataFlash Memory
I2C EEPROM
- Interfacing an I2C EEPROM
- 24LC512 I2C EEPROM Driver
- 24C1024 I2C EEPROM Library
- I2C EEProm Bank
- A small library for I2C EEPROM to read and write blocks of 'any' size.
- M24LC256 I2C EEPROM Library high-speed page-writing EEPROM library
SD / MMC Card
- Chips To Bits Storage Shield – Examples of how to use a SD card while using very little memory or processing power of the Arduino.
- Interfacing SD / MMC Card with SPI
- Implementing a standalone SDcard server over I2C and Rf12b
- Using the EthernetShields SD Slot with HardwareSPI
- SMARTGPU color touchscreen diplay shield with microSD FAT fotmat support.
- sdfatlib Library to Interface with SD-Cards
- Talking to your SD CARD without a library
- Using an SD card with Petit FAT File System and NuElectronics shield, ($16)
- PlainSDC: SD Card driver library;
Spi RAM
- Library to interface with a 23K256 Spi SRAM chip
- Use a 23K256 Spi SRAM chip together with the Ethernetshield
USB Memory Stick
- Datalogging to a USB memory stick with ftdi board usb memory nick
Communication
Information on communication protocols often used to talk with other devices. Please refer to Interfacing with Software for information on linking with various PC based applications. This listing may contain cross-listings with device type listings above.
Serial
- A simple tutorial on Serial communication
- Simple Soft Serial, No library http://www.arduino.cc/en/Tutorial/SoftwareSerial
- SimpleTX configuration USART SimpleTX
- Arduino + Mini2440, Controlling an arduino with a mini2440 development board.
- EasyTransfer, easy communications between Arduinos via Serial or I2C
- See also InterfacingWithSoftware - Specifically interfacing Arduino as a Linux TTY
- See also InterfacingWithSoftware - Specifically interfacing Arduino as a Linux TTY
- NewSoftSerial - Mikal Hart's replacement for SoftwareSerial -- derived from ladyada's AFSoftSerial. (Has a Serial.available, among other virtues.)
- Communication through files - A really quick and easy way to communicate with any software of your choice.
- Messenger: Send, receive and parse characters, integers and lists. It is the new SimpleMessageSystem.
- CmdMessenger: A small extension of Messenger above.
- SimpleMessageSystem: Send, receive and parse characters, integers and lists between Arduino and Max/Msp or Pure Data
- General purpose program to control most Arduino functions via serial communication with a computer- reads state on dig & analog input pins and sends data to the output pins
- How to pass large multi-byte values between two Arduinos, or shields. If Serial.Print doesn't do the job, try these functions to bit shift multiple bytes together to reconstruct integers or floats
- A standalone printFloat function with no library imports
- Modbus RTU Master/Slave implementation of the functions read holding registers preset single register, and preset multiple registers (function codes 3, 6, and 16 respectively). Available as .pde sketch written in C, or Arduino library written in C++.
- ModbusMaster: This is an Arduino library for communicating with Modbus slaves over RS232/485 (via RTU protocol). Discrete functions 0x01 - Read Coils, 0x02 - Read Discrete Inputs, 0x05 - Write Single Coil, 0x0F - Write Multiple Coils and register functions 0x03 - Read Holding Registers, 0x04 - Read Input Registers, 0x06 - Write Single Register, 0x10 - Write Multiple Registers, 0x16 - Mask Write Register, and 0x17 - Read Write Multiple Registers implemented. Updated to support Arduino 1.0.
- SimpleModbus is a collection of Arduino libraries that enables you to communicate serially using the Modicon Modbus RTU protocol. Both SimpleModbusMaster & SimpleModbusSlave implements function 3 and 16. Broadcasting is supported on both libraries for function 16. Both libraries share the exact same API. There are only two functions modbus_update() and modbus_configure(). Both libraries have been tested extensively on commercial equipment like LS Industrial PLC's, Schneider equipment, Ascon equipment, Siemens PLC's, Selco alarm panels and various commercial panel meters and indicators. In addition to this SimpleModbusSlave has also been tested on LS InfoU SCADA system, Mango M2M SCADA, FreeSCADA 2, the free QModbus slave tester and the very handy modbus slave tester, Mtester (http://www.plcs.net/downloads/index.php?&direction=0&order=&directory=Modicon).The libraries are very robust and non blocking, all communication takes place in the background allowing your code to run without any delay in execution (well almost). The examples and libraries are well commented and should get you up and running quickly. Feedback is welcomed so I can make the libraries even more robust. Mail me at bester.juan@gmail.com for any help on using the libraries. Project is hosted at Google Code Updated to Arduino V1.0
- Modbusino is a thin library to response to Modbus requests from your Arduino (slave). The library is based on code from libmodbus.org and is designed to be robust, non-blocking and with a very low footprint. The code is under LGPL v3 license and available on https://github.com/stephane/modbusino.
- The MuxShield collects serial output from up to 5 slaves vis software and sends it out to the serial hardware port.
- SerialControl remotely controls Arduinos (usable in a XBee peer2peer network!)
- iPodSerial Library to interact with iPods over serial through their dock connector. Supports Simple Remote and Advanced Remote modes.
- General Points, serial interfacing General skills and ideas for using Arduinos connected to each other or other devices via serial port. From Sheepdog
- Talking to Windows Writing Windows programs to deal with data from, or send data to Arduinos over serial link. Written in Delphi, but little "Delphi cleverness"... mostly just calls of Windows APIs. From Sheepdog.
- Ben NanoNote and Arduino talking each other through serial
- Compiling and flashing through serial with Ben NanoNote
- CuteDigi RS232 Shield for Arduino
- Insek Internet to Serial Proxy Open source Mac application which facilitate the communication between a Web API and an Arduino connected to an USB Serial Port without any specific hardware.
- Bitlash is a serial port command shell and interpreted language for Arduino.
- Megasquirt Serial Driver is a library around the MegaSquirt 2 ECU, providing an interface from Arduino to the controller with a high level of abstraction.
- Nick Gammon's elegant RS-485 solution. A library, code examples, hardware designs ($6 per node) for interconnecting multiple devices over two wires. Basis for a simple "LAN" of sensors, or other uses. This includes a library for error checked packet sending over whatever link you want to set up. (RS-485 independent.)
- Dynamic config
- VU Meter a Blinkenlight experiment that exhibits serial communication using a Python program to control the Arduino as VU display. Also features a nice Video.
SPI
- Spi library for Serial Peripheral Interface.
SPI/USI
- ATtiny2313 as SPI master using the USI module
- Two-part SPI tutorial for beginners with various device examples
PWM
- Modifying the PWM frequency
- Making any pin a PWM output at (almost) any frequency
- Using Arduino to create OUT-OF-SYNC PWMs
- Creating a variable frequency using Arduino
- Using the TLC5940 to run PWM at different frequencies
- Adjusting the TLC5940 libraries to give different PWM frequencies
- Using TLC5940 to give phase-shifted PWM Signals
- Arduino Mega: PWM Pin and Frequency Timer Control
uM-FPU V3.1 Floating Point Coprocessor
- Fpu library for using the uM-FPU V3.1 Floating Point Coprocessor.
uM-FPU64 Floating Point Coprocessor
- Fpu64 library for using the uM-FPU64 64-bit Floating Point Coprocessor.
2B
- 2B is a simple protocol used to receive and send messages to Arduino
PS2
GSM/GPRS M2M modules
- A GSM/GPRS Library and Tutorials for using Telit and all Hayes AT compatible modules with Arduino and AVRs, for more details please visit the GROUND Lab Wiki.
- A GSM/GPRS Library and Tutorials for using Telit and all Hayes AT compatible modules with Arduino and AVRs without the Arduino IDE, for more details please visit the GROUND Lab Wiki.
- Beginners' Guide to using Sparkfun GSM shield (Spreadtrum SM5100B module) and Arduino. Learn to create remote control, SMS transmission and so on, part of the Arduino tutorials at tronixstuff.com.
- Remote Temp Monitoring w/ Spreadtrum SM5100B uses DS18B20 Dallas 1-Wire temperature sensors and the SMS capabilities of the SM5100B to monitor and report in-home temperatures.
- PduEncoder is a small library which encode a message into PDU format needed for some phones.
Phones
- Symbian 60 Phones
- SonyEricsson]Send/receive SMS with with older Sony Ericsson phones
- hTC Desire
- Connecting Nokia phone to Arduino using USB Host shield
- [http://romfont.com/2011/05/15/microbridge-adb-support-for-arduino/|Arduino/Android connectivity using a USB Host shield. Uses ADB, works with Android 1.5 and up.]]
HDMI-CEC
- HDMI CEC Library communication with HDMI CEC capable devices (TV, DVD, Receivers, BR) : power on/power off/input selector.
Ethernet
- Nimbits - an open source data historian service for Google App Engine shows how to record Temperature data into a Data Point Channel directly from an Ethernet Shield onto Google's infrastructure. Nimbits - free, social and open source data services
- Australian Robotics blogger explains how to use Web Services (Pachube.com) to upload XML temperature data from Arduino Ethernet Shield and the Thermistor.
- GumboLabs write-up on how to get the best out of the Ethernet shield. Also explains connecting to a Rails app. Arduino Ethernet Shield and Rails.
- The "official" Arduino Ethernet Shield uses the w5100 chip from WizNet.
- Arduino Ethernet Library by gkaindl enabling DHCP, DNS and Bonjour on Arduino
- ArduServer.com A "getting started" guide. Shows how you can set up an Arduino to serve a web page with two buttons: LEDon, LEDoff. Click a button, and an LED on the Arduino serving the page goes on or off... and shines (or not!) on a light sensor. What the light sensor is seeing reported on the page the Arduino serves. Issues of static vs dynamic IP address covered. DynDns.org solution. Router and firewall issues covered. Full code presented. Done on RBBB ($15), but information needed to move to other presented. Parts of essay depend on fact that a NuElectronics Ethernet shield ($25), an ENC28J60 device, used... but most of tutorial is about issues that would arise if you were using a W5100 chip. How to pass the data from the light sensor to Pachube is addressed, by reference to other materials. When buying an Ethernet interface, if you don't have a ready source of 3.3v, watch out for whether your shield can create it from the system's 5v, if you are on a 5v system. (The NuElectonics shield can, many can't.)
- ArduServer2 The full code for something similar to the first ArduServer (see above) is tacked on at the bottom of the page the link will bring you to. This version of the Arduserver runs in an Arduino Uno with an "official" Arduino Ethernet shield... one with a W5100 chip. This version includes a Dallas DS18B20 1-Wire digital temperature sensor on the ArduServer, and the temperature is included in the web page served up.
- ArduSimpSrv Arduino as server, client software provided for Windows PC. Without HTML- makes room in Arduino for other things, but means dedicated client software needed. A Linux version would be very welcome.
- Here is a blog describing how to connect to an internet chat server using the Arduino and a Lantronix ethernet module.
- Nuelectronics has developed an Ethernet shield for the Arduino with schematic, open-source ethershield library and webserver demo using Microchip's ENC28J60 SPI ethernet controller. The open-source TCP/IP stack is in the Arduino library format, easy to use and available for downloading.
- Ethernet_ENC28J60 Álvaro Justen is working on a library what is compatible with ENC28J60 modules/shields and have the same API as Arduino's standard Ethernet library, so it is more easy to use than other libraries (as nuelectronics').
- Adafruit XPort/Ethernet shield - How to connect a Lantronix XPort to an Arduino, includes schematic & library. Examples of reading POP email, webserver, sending & receiving twitters...
- Beginners' guide to tweeting with Arduino and Ethernet shield.
- a Web Server example, made using an Ethernet Shield.
- the Webduino library, a modular web server for the Arduino Ethernet Shield and AdaFruit shield using the Wiznet module that can be integrated into your sketches. It comes with several examples.
- TinyWebServer, a small web server for the new Arduino Ethernet shield with microSD. It allows your web server files to be stored on a microSD card, giving your Arduino more memory for your program. You can even update the files directly over HTTP, making it easier to change your HTML interface after the project is finished.
- RADIUS Client, Classes for creating, sending and receiving RADIUS requests as per RFC 2187 and 2188. For ArduinoMega and Ethernet shield.
- MQTT Client, provides a client for doing simple publish/subscribe messaging with a server that supports MQTT v3. For the Arduino Ethernet Shield. For more information about MQTT, visit http://mqtt.org.
- TextFinder library for extracting information (parsing) using Ethernet or Serial data
- The Bitlash 2.0 release includes BitChi, a web and telnet server that serves dynamic content with Bitlash as the scripting language.
- Jee Labs' EtherCard is a library for ENC28J60 that is in active development, and solves a lot of the instability problems in other implementations.
- PachubeLibrary encapsulates the communication with the Pachube server. It simplifies the work to connect the Arduino based device into the Internet of Things.
- homecontrol4me A Home Automation Project - Control your Wireless Switched Outlets over Ethernet with your Computer or Smartphone (currently German language only).
WiFi
See also the "wire-less" section for other communications channels without wires, e.g. IR.
- La Fonera routers have got a serial ttl interface that you can easily use with Arduino.
- AsyncLabs has the WiShield (Out of Business as of 2011-03-26, shields may still be available) which uses ZeroG Wireless's ZG2100 WiFi device. It comes with a WiShield library which includes the driver source code, a TCP/IP stack and a bunch of sample sketches demonstrating the use of the Arduino as a web server and a web client. More information about using the sketches can be found on the AsyncLabs wiki page.
- Weburban has a low cost WiFi breakout board which uses a Microchip 80211b/g/n device and connects via a simple, labeled header. It's compatible with WiShield and other Arduino WiFi libraries.
- SparkFun has the WiFly Shield. It is fairly new but does have 802.11 b/g. They use the SC16IS750 to communicate via SPI to Uart for much faster speeds. Documentation is there for the actual WiFly GSX module and the SC16IS750 but the only real code is from a SparkFun project called the Talking Wireless Server Tutorial. (Actually there's also a mostly-Ethernet library compatible WiFly library.)
- SparkFun also has WiFly Breakout Boards which use just 4 connections (RX, TX, VBATT, GND) for a full wifi connection through Roving Networks RN-series wifi chips, including RN-131. RN-171 and RN-XV.
A serial WiFly driver library and Client-Server classes are available through http://arduinology.blogspot.com and http://sourceforge.net/projects/arduinowifly/files/.
- Watterott makes the RedFly-Shield with WiFi module from Redpine Signals. A library is available at http://www.watterott.net/projects/redfly-shield
- Roving Networks makes the low-cost WiFly RN-XV module, which plugs into an XBee socket and provides WiFi access via the serial port. 802.11b/g with WEP and WPA/WPA2 support. Supports one UDP or TCP connection at a time.
Sparkfun has the module available here: WiFly RN-XV Wire Antenna.A 0.3 library is available here: github/WiFlyHQ.Flash / Flex
- Arduino and Flash: modify your existent Flash games to work with a joystick
- Arduino and Flex: connect a joystick to your application
DMX
- DMX (Digital MultipleXed) is a protocol used for connecting lighting controllers, dimmers, scrollers, scanners, etc..
CAN-Bus
- Arduino CAN-Bus Shield OBDII project.
- Another Arduino CAN-Bus Shield This one with simple code for MCP2515/MCP2551
I2C / TWI
- Learning I2C / TWI (Two-Wire Interface)
- Arduino I2C Expansion I/O: detailed tutorial on getting I2C working.
- Arduino and the Two-Wire Interface (TWI/I2C) interfacing with a LIS3LV02DQ accelerometer.
- I2C for X9241 Digital Potentiometer - Interfacing with the X9241 Digital Potentiometer
- I2C for RTC DS1307 Real Time Clock - Interfacing with the DS1307 date/time keeping clock - Great for logging events.
- Using i2c Based LCD displays, including library and suggested API
- I2C on the ATtiny85 - Libraries for using I2C (both master and slave) on the ATtiny processors.
- I2C and Arduino tutorials - Beginners' guides to using I2C bus with Arduino, including worked examples to follow; part of the Arduino tutorials at tronixstuff.com
- Library for the I2C DS1307 RTC with NV-RAM support. With v1.20 you can calculate with the time and a program has been added to modify the RTC over the serial port.
- Atmel Two Wire Interface: Detailed description of how the Wire library accomplishes I2C communication via a deep dive into the source code.
- I2C communication between two Arduino Boards, with Bus Extender and Optical Isolation: A case study that discusses communicating between two Arduino boards, using a P82B715 bus extender, and optically isolating the two Arduino supplies using an ADuM1250.
- Wire Library Detailed Reference. An indepth reference manual on the Wire Library. Expands upon the official library documentation.
- I2C bi-directional level shifter Combining 3.3V and 5V I2C components.
Dallas One-Wire / MicroLan
- iButton door lock: Use small iButton devices to enter your room
- OneWire Interface: Tutorial on the Arduino's interface to Dallas's 1-wire chips, e.g. DS1820 series temperature probes
- Original and Inmojo's improved libraries for using Maxim DS2482-800 to interface with up to eight one-wire devices.
Shield for sale here.
- OneWire Shield
- Reading iButton keys with Arduino A sketch that reads iButton key code, transforms it to human-readable format and displays it on LCD.
- DS28EC20 1-Wire EEPROM Interfacing OneWire EEPROM with Arduino.
- Remote Temp Monitoring w/ Spreadtrum SM5100B uses DS18B20 Dallas 1-Wire temperature sensors and the SMS capabilities of the SM5100B to monitor and report in-home temperatures.
MIDI
MIDI Library - Simple and fast way to send and receive MIDI messages with the Arduino.MIDI-out (sending midi data to another device)
- A 52 parts drumset: Yet Another Arduino Midi Drumhead. An invitation to build your own midi drumhead with an Arduino UNO, a mux shield and one infrared sensor optical hihat. 48 velocity sensitive piezos and 4 chokeable cymbals.
- Ardrumo: software to convert serial data coming from the Arduino into Mac OS X MIDI drum data (i.e. how to get Arduino talking to GarageBand without buying any extra hardware).
- S2MIDI - Windows (.NET) program for converting serial data from Arduino into MIDI messages (hosted on Google Code)
- MIDI Relay - Very similar to S2MIDI - copies all note on / note off and controller messages to the default MIDI port.Useful for quick testing of MIDI applications(MIDI Relay)
- ttymidi - a GPL-licensed program that allows an Arduino board to interface with Linux ALSA MIDI applications without any additional hardware.
- MidiSerial - another GPL-licensed program for interfacing MIDI over serial. Multi-platform.
- Make your Arduino into a MIDI drum controller with Todobot's tutorial
- The Midi Out tutorial from the fine folks at ITP.
- A blog on building a midi guitar pick using the Arduino.
- read six sensors and send their values as Midi CC messages
- Effects Processor Controller via MIDI
- MIDI Touchpad hardware and software using PS2 Touchpad as a MIDI Device. Real MIDI, not translated by Desktop app.
- 16 MIDI Drums 10 switched and 6 velocity sensitive drums
- MIDI Projects
- Wii Guitar Hero World Tour Drums MIDI Out interface at http://jamers.netne.net.
- USB MIDI firmware for UNO and Mega2560 Turn your UNO into a USB MIDI device.
MIDI-in (receiving and interpreting midi data with an Arduino)
- Forum link, basic code and setup. Control LEDs with a midi keyboard.
- MIDI Analyser Simple MIDI Analyser, using LED's to display MIDI status.
- MIDI Glockenspiel Toy Glockenspiel MIDI driven, using solenoids.
- MIDI2CV Controller Converts MIDI Messages from an MIDI Device (Keyboard, Computer) to Controlvoltages for an analog synthesizer.
- SID-emulator play your SIDuino i2c-Shield with your MIDI equipment. Sample code with Midi-In function for your own projects.
KNX / EIB
- Library and schematic to connect Arduino to KNX / EIB using a TP-UART interface IC (and a short blog post on it)
Wireless... including radio-less "wire-less" channels, e.g. IR
See also: the WiFi section and Via Mobile Phone
- Bluetooth
- Wireless communication with PC and Arduino board using bluetooth, by Mitchell Page.
- http://www.mitchellpage.com.au/research/?p=263
- Wireless communication with Cell phone and Arduino board using bluetooth, by Bakalski Page http://www.microcontroller-bg.com/btterm This is a bluetooth cell phone terminal software (like HyperTerminal but for Cell phones) -- This link broken
- A Tutorial on setting up Arduino BT on Mac OS X Tiger
- How to set up the BT ON Windows XP with an external BT adapter.
- If you have the rare need to reprogram your BlueGiga module, here's a tutorial on how to build adapter.
- See also
- Weburban Blue Olive Bluetooth Adapter connects via UART to a USB breakout connector.
- PaperBluetooth is a homemade bluetooth shield by Txapuzas (Spanish)
- EasyRadio
- Connect Arduino to the EasyRadio transceiver module, diagrams by Jens Wunderling.
- Handheld 2.4GHz Spectrum Analyzer
- Shows the RSSI of different frequencies in the 2.4GHz band. The CYWM6935 radio and a display from a nokia cellphone are connected via SPI. here.
- HomeEasy
- HomeEasy is a 433MHz AM based home automation range. Beginnings of instructions and code for using the Arduino with HomeEasy controllers and devices. (Work in progress.)
- HopeRF / Hope RF RF12 RF22 RFM22
- Interface Arduino to HopeRF RF22, RFM22 and compatible transceivers. Includes classes for node addressed, unreliable and reliable datagrams. Now also supports mesh networks and automatic route discovery. Rock solid, flexible, high speed. Circuit diagrams, documentation and download instructions here.
- The RFM12/RFM12B/RFM12BP modules for the 433/868/915 MHz frequency bands are connected via SPI. There's a driver for it here.
- Nordic nRF24L01+
- Inhaos RF-2400
- Arduino library to work with Inhaos RF-2400 modules. Source code, circuit diagrams, demo, firmware and client application for RF-2410U dongle can be found here.
- HT12E
- HT12E is a 12-bit encoder IC suited for remote control applications. The serial stream generated by this IC can be transmitted via RF or infrared to an Arduino running a specific decoding library available at this source.
- Infrared
- IR remote library for transmitting and receiving multiple infrared remote protocols.
- dirt cheap wireless: serial communication via infrared light
- Infrared remote receivers
- Control your Arduino using an Infrared Remote and the IK38khz sensor
- Simple "how to" for beginnners: Take a $3 sensor, a library, a domestic (e.g. TV) remote control, and 14 lines of code and you can use the remote to send commands to your Arduino. From SheepdogGuides.
- Carrier 0.01: Library to generate IR codes for "Carrier" air conditionners
- Nordic Nrf2401
- PCR-1000
- A icom PCR-1000 controlled by a Arduino- here
- Radio Signal Strength Sensor
- This sensor measures radio signals from 50MHz to 3GHz. FM,TV,GSM,WiFi,Bluetooth here.
- DCF77: DCF77, a local radio time signal Library and sketch
- RCSwitch
- Send and receive 315MHz or 433MHz radio signals to operate popular low cost remote control devices like power outlet switches. Handy for most devices with these chipsets: SC5262, HX2262, PT2262, EV1527, RT1527, FP1527 or HS1527. here.
- Reading PPM from a hobby RC Receiver
- PulseIn can be used to measure one or two channels
- ReadReceiver uses standard RC hobby transmitters and receivers to communicate with the arduino. Can read a nearly unlimited number of channels using PinChangeInt and Timer1 libraries.
- Wixel
- The Pololu Wixel is a general-purpose programmable module based on the TI CC2511F32 microcontroller that features a 2.4 GHz radio and USB. Open-source, pre-compiled apps like the Wireless Serial App make it easy to add XBee-like wireless functionality to your project, or you can write your own Wixel apps to take advantage of the Wixel's I/O lines and hardware peripherals.
- The Wixel Shield for Arduino is an easy and affordable way to add wireless functionality to your Arduino or Arduino clone. With the Wixel shield, you get more than just a general-purpose wireless serial link between your Arduino and a remote computer or embedded system: you can also wirelessly program the Arduino using the standard Arduino computer software and wirelessly debug your sketches with the Arduino serial monitor. For more information, see the Wixel Shield User's Guide
- VirtualWire
- X10 Wireless
- Arduino interface to the CM17A "FireCracker". The CM17A is a "serial" dongle that sends RF signals to X10 receivers which in turn send signals down the house wiring to control lights and appliances. Documentation and code here.
- X10 Receiver
- Arduino interface to the PSC05/TW523. The Arduino IDE includes the X10 library that lets you transmit. This example shows how to receive X10 commands. Documentation and code here.
- X10 Send/Receive Library
- Incorporates the original X10 sending code with the receive code above into an X10 Send/Receive Arduino library.
- X10 W800RF32A All-Housecode Receiver Library
- A library for WGLDesigns X10 W800RF32A.
- X10 Transmitter
- X10 Power Line, RF and IR libraries with extended code support
- A new and improved set of libraries written June 2010 that supports transmitting and receiving X10 power line, RF, IR and serial messages at the same time using a single Duemilanove board. These libraries and the sample code make commercial X10 computer interfaces and RF/IR transceivers redundant. Click here to visit homepage.
- X10 Power Line with Temperature and status response
- an extension upon the library from BroHogan to send RCS temperature back to your X10 network Arduino Code.
- XBee / ZigBee
- The XBee Shield by M. Yarza, the Arduino Developer at Libelium
- Schematics and Eagle files for M. Yarza/Libelium's Xbee shield
- Arduino and Xbee(ZigBee), Interface Circuit (AXIC), by Thomas Ouellet Fredericks (tof).
- Step by step tutorial for setting up 2 Xbee shields from scratch with code samples
- Xbee Programming Arduino Wirelessly, by Tom Igoe.
- Arduino to Xbee, from Beatriz Da Costa's course outline.
- MaxStream's XBee ZigBee RF Module
- Product manual (802.14.4) PDF, 69 pages.
- Product Manual (ZigBee) PDF, 46 pages.
- xbee-arduino: an Arduino library for communicating with XBees in API (packet) mode. Supports I/O samples, TX/RX, AT Command, and Remote AT for both series 1 and 2 XBee radios
- Arduino Xbee libraries, source and tutorials, supports all API command functions for series 1 and 2. (The above library looks solid as well, but I can't comment on the differences because of no experience with it. Posting in case there is not common overlap.)
- Quick example using XRF Wireless modules which is an alternative to Xbee Series 1. This example shows how to get two arduinos talking to each other using the default XRF configuration settings.
- Sense/Stage MiniBee, a small Arduino/XBee board, including a firmware library to configure inputs and outputs of the Arduino on the fly, of many MiniBees in a large network. Firmware is also usable with your own Arduino-XBee combination.
Via Mobile Phone
See also: the Bluetooth section.
- Mobile Phone control via Bluetooth and POD - Protocol for Operations Discovery ,a complete solution for controlling arbitrary microcontroller devices from your mobile phone, Full tutorial including protocol definition, java files for a MIDP phone. Use Wireless communication to drive the Arduino http://www.forward.com.au/PODdevices/PhoneControlledPODDevices.html Think cut down HTML for micros
General
Arduino-related stuff that doesn't quite fit anywhere else.
- Crystal deviations - A Blinkenlight experiment to compare Arduino crystal frequency deviations.
- Hardware Abstraction libraries
- External 3V3 supply using an LM317 Schematic and board in Eagle format. Also a number of different trivial/helpful little things like Arduino-related Eagle Library, boards, and even an Arduino IDE "icon".(A new section was added to the Playground Nov 1, 2010, to discuss power supplies, etc. The above has been listed there, too.)
- Loomduino - Reduce the number of jumper wires you need by using ribbon cable to connect things to your Arduino (such as the 4D Picaso, VDIP1 and nRFL2401+).
- USBIZI as Arduino host
- Arduino and analog sensors: Proximity, Light, Force and Tilt detectors
- USBIZI as Arduino host
- Using an Arduino for access control. (Electronic "lock")
- Reprogramming the Arduino Uno through the simplest possible ISP programmer
- Common Pinouts
- The following is a shart of pinouts that one commonly comes across while working with Arduinos CommonArduinoPinouts.svg (Here in png: Attach:CommonArduinoPinouts.png)
- mega 2560 pin out, avr ports to arduino pins and back Attach:ARDUINO2560.ods.zip