Please note that User Registration has been temporarily disabled due to a recent increase in automated registrations. If anyone needs an account, please request one here: RequestAccount. Thanks for your patience!--Wmat (talk)
Please email User:Wmat if you experience any issues with the Request Account form.

Difference between revisions of "RPi Tutorial Easy GPIO Hardware & Software"

From eLinux.org
Jump to: navigation, search
m (Basic Circuits: - started first tutorial)
(Intermediate Circuits)
(30 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Template:RPi_Learning}}
+
{{Template:RPi_Tutorials}}
==Aims==
+
The aim of this tutorial is to introduce the basic circuits which can be used to interface with the RPi's GPIO.
+
 
+
Basic electronics knowledge will be required (i.e. familiar with typical discrete components such as transistors, diodes and resistors).
+
 
+
 
+
This is based on the following forum thread: [http://www.raspberrypi.org/forum/features-and-requests/easy-gpio-hardware-software Easy GPIO Hardware & Software].
+
  
  
 +
==Warnings==
 
While most of these circuits may interface directly to the RPi, the use of a buffered interface (such as the one supplied by the [[RPi Gertboard | Gertboard]]) is recommended which will help protect against damage.  Alternatively, experiment with one of the [[#Alternative Test Platforms]].
 
While most of these circuits may interface directly to the RPi, the use of a buffered interface (such as the one supplied by the [[RPi Gertboard | Gertboard]]) is recommended which will help protect against damage.  Alternatively, experiment with one of the [[#Alternative Test Platforms]].
  
 +
The GPIO pins connect directly into the core of the ARM processer, and are static-sensitive, so you should avoid touching the pins wherever possible. If you are carrying a static charge, for example by taking off an acrylic pullover, or walking across a nylon carpet, touching the GPIO pins could destroy your R-Pi, so always earth yourself before touching the pins or anything connected to them.
  
 
'''Extreme caution should be exercised when interfacing hardware at a low level, you may damage your RPi, your equipment and potentially yourself and others.  Doing so is at your own risk!'''
 
'''Extreme caution should be exercised when interfacing hardware at a low level, you may damage your RPi, your equipment and potentially yourself and others.  Doing so is at your own risk!'''
 +
 +
==Aims==
 +
This tutorial is based on [http://www.raspberrypi.org/forum/features-and-requests/easy-gpio-hardware-software this thread] and aims to introduce basic circuits which can be used with the RPi's [[RPi Low-level peripherals#General Purpose Input/Output (GPIO) | General Purpose Input/Output (GPIO)]].
 +
Basic electronics knowledge will be required (i.e. familiarity with typical discrete components such as transistors, diodes and resistors).
 +
 +
It is highly recommended that additional [[RPi Tutorial EGHS:GPIO Protection Circuits|GPIO Protection Circuits]] are used to protect the delicate GPIO pins if interfacing to RPi hardware.
  
 
==Useful Links/Resources==
 
==Useful Links/Resources==
[http://www.scriptoriumdesigns.com/embedded/gpio_in.php Introduction To Embedded Programming - GPIO]
+
*[http://log.liminastudio.com/writing/tutorials/tutorial-how-to-use-your-raspberry-pi-like-an-arduino Tutorial: How to use your RPi like an Arduino] - Thorough guide to utilizing the GPIO pins in Python, Bash and C.
  
 +
*[http://www.circuitlab.com Online Circuit Lab - Circuit Design and Simulation] - Excellent tool for experimenting with circuits (also used for the circuit diagrams used here)
  
[http://ww1.microchip.com/downloads/en/devicedoc/40040b.pdf Microchip's PIC Tips and Tricks PDF]<ref> http://www.raspberrypi.org/forum/projects-and-collaboration-general/gpios-suitable-for-microswitches-joysticks/#p35307 </ref>
+
*[http://www.scriptoriumdesigns.com/embedded/index.php Introduction To Embedded Programming - GPIO] - In particular there is lots of detailed information about GPIO inputs and outputs for beginners to understand the principles behind the circuits.
  
Contains lots of useful example circuits for use with PIC micro-controllers, can be adapted for use with the RPi (3.3V GPIO).
+
*[http://ww1.microchip.com/downloads/en/devicedoc/40040b.pdf Microchip's PIC Tips and Tricks PDF]<ref> http://www.raspberrypi.org/forum/projects-and-collaboration-general/gpios-suitable-for-microswitches-joysticks/#p35307 </ref> - Contains lots of useful example circuits for use with PIC micro-controllers, can be adapted for use with the RPi (3.3V GPIO).
  
==Alternative Test Platforms==
+
*[http://www.kpsec.freeuk.com/ The Electronics Club] - An excellent resource for beginner electronics, explains many basic circuits.
Until you have a RPi to test with, there are many alternative platforms available which will allow the testing of basic circuits.  In addition, they may be interfaced with directly using the RPi in the future.
+
  
 +
==Protection Circuits==
 +
In order to protect the Raspberry Pi hardware, it is highly recommended that the GPIO pins are protected in some form to avoid damage.
  
[http://www.ti.com/tool/msp-exp430g2 TI LaunchPad] - A low cost development platform ($4.30 including free world shipping)
+
The following link will introduce some of the ways to do this:
  
Includes programmer/debug board, two processors (with 16 GPIO including I2C/SPI/UART, 8ch 10bit ADC etc).
+
[[RPi Tutorial EGHS:GPIO Protection Circuits|GPIO Protection Circuits]]
  
 +
==Alternative Test Platforms==
 +
Until you have a RPi to test with, there are many alternative platforms available which will allow the testing of basic circuits.  In addition, they may be interfaced with directly using the RPi in the future.
  
[http://arduino.cc/en/ Arduino] - Common hobbyist development platform
+
* [http://www.ti.com/tool/msp-exp430g2 TI LaunchPad] - A low cost development platform ($4.30 including free world shipping). Includes programmer/debug board, two processors (with 16 GPIO including I2C/SPI/UART, 8ch 10bit ADC etc).
  
Excellent community support and additional hardware.
+
*[http://arduino.cc/en/ Arduino] - Common hobbyist development platform. Excellent community support and additional hardware.
  
 +
*[http://www.picaxe.com/ PICAXE]<ref> http://www.raspberrypi.org/forum/projects-and-collaboration-general/gpios-suitable-for-microswitches-joysticks/#p35309 </ref>
  
[http://www.picaxe.com/ PICAXE]<ref> http://www.raspberrypi.org/forum/projects-and-collaboration-general/gpios-suitable-for-microswitches-joysticks/#p35309 </ref>
+
*[http://www.stm32circle.com/hom/index.php STM32 Primer/EvoPrimer] - Self-contained development platform. Mentioned since I may use one at some point (I bought the original Primer a long time ago). It includes a battery, acceleration sensors and built in display screen.
  
 +
=Completed Tutorials=
 +
Note:
 +
Until RPi devices are available, I can not confirm this will work on a real RPi.
 +
For now, I shall be using the TI LaunchPad (see [[RPi Tutorial Easy GPIO Hardware & Software#Alternative Test Platforms | Alternative Test Platforms]]
 +
for details) to test the hardware on (as it is cheap and the logic levels similar).
  
[http://www.stm32circle.com/hom/index.php STM32 Primer/EvoPrimer] - Self Contained development platform
+
===Basic Circuits===
 +
1. [[RPi Tutorial EGHS:LED output | LED output]]
  
Mentioned since I may use one at some point (brought the original Primer a long time ago), includes battery, acceleration sensors and built in display screen.
+
Directly driven (will need very low powered LED) or driven via transistor (allowing higher current).  Includes example 8xLED Test Module.
  
 +
3. [[RPi Tutorial EGHS:Switch Input| Simple on/off switch input]]
  
==General GPIO Information==
+
With or without de-bouncing, protection resistors etc.  Includes example 8xSwitch Test Module.
See [[RPi Low-level peripherals#General Purpose Input/Output (GPIO) | General Purpose Input/Output (GPIO)]] page for details.
+
  
==Planned Tutorials==
+
4. [[RPi Tutorial EGHS:12V relay driver| 12V relay driver circuit]]
 +
 
 +
12V relay driver circiut with opto-decoupler. Includes schema.
 +
 
 +
=Planned Tutorials=
 
===Basic Circuits===
 
===Basic Circuits===
1. [[RPi Tutorial EGHS:LED output]]
+
1. LED output
  
Directly driven (will need very low powered LED) or driven via transistor (allowing higher current).
+
''Completed see above.''
  
  
2. Small DC motor drive
+
2. [[RPi Tutorial EGHS:DC Motor | Small DC motor drive]]
  
 
MOSFET or Darlington Pair to provide high power drive and reverse bias diode to protect from motor coils.
 
MOSFET or Darlington Pair to provide high power drive and reverse bias diode to protect from motor coils.
  
  
3. Simple on/off switch input
+
3. [[RPi Tutorial EGHS:Switch Input| Simple on/off switch input]]
  
With or without de-bouncing.
+
''Completed see above.''
  
  
4. Analogue resistive sensor sampled as a digital input
+
4. [[RPi Tutorial EGHS:Analogue Sensor| Analogue resistive sensor sampled as a digital input]]
  
 
Using a basic transistor switch circuit.
 
Using a basic transistor switch circuit.
  
 
===Intermediate Circuits===
 
===Intermediate Circuits===
1. Shift-Registers - Multiplexing Data
+
1. [[RPi Tutorial EGHS:Shift Registers| Shift Registers - Multiplexing Data]]
  
An introduction to using additional IC's.  In this case, using a parallel to serial 8-bit shift register to read 8 digital inputs using two GPIO pins.
+
An introduction to using additional ICs.  In this case, using a parallel to serial 8-bit shift register to read 8 digital inputs using two GPIO pins.
  
  
2. Analogue to Digital Circuit
+
2. [[RPi Tutorial EGHS:Analogue to Digital| Analogue to Digital Circuit]]
  
 
Use of a ADC chip to sample inputs.
 
Use of a ADC chip to sample inputs.
  
  
3. PWM Driving Circuit
+
3. [[RPi Tutorial EGHS:Driving Circuit| PWM Driving Circuit]]
  
 
For example motor speed control.
 
For example motor speed control.
  
  
4. Alpha-numeric 2x16 LCD Display
+
4. [[RPi Tutorial EGHS:Alpha-Numeric Display| Alpha-numeric 2x16 LCD Display]]
  
Control via 4-wire data (total 6 GPIO) and also alternative 2-wire interface circuit.
+
'''(IN-PROGRESS)''' Control via 4-wire data (total 6 GPIO) and also alternative 2-wire interface circuit.
 +
 
 +
 
 +
5. [[RPi Tutorial EGHS:I2C Interfacing| Interfacing to I2C Devices]]
 +
 
 +
Interfacing to an I2C device connected to one of the Pi's I2C buses.
  
 
===Advanced Circuits===
 
===Advanced Circuits===
1. Control Hardware Over The Internet
+
1. [[RPi Tutorial EGHS:Control Hardware Over Internet| Control Hardware Over The Internet]]
  
 
Implement web control and monitoring of GPIO connected components.
 
Implement web control and monitoring of GPIO connected components.
  
 +
2. [[RPi Tutorial EGHS:Communicating With Other Micro-controllers | Communicating With Other Micro-controllers ]]
 +
 +
Communicate with other micro-controllers so that features such as ADCs can be used.
  
 
==Contributing to this tutorial==
 
==Contributing to this tutorial==
Line 99: Line 123:
 
Please see the [[Talk:RPi Tutorial Easy GPIO Hardware & Software]] page to discuss this page.
 
Please see the [[Talk:RPi Tutorial Easy GPIO Hardware & Software]] page to discuss this page.
  
<references>
+
<references/>
  
 
{{Template:Raspberry Pi}}
 
{{Template:Raspberry Pi}}

Revision as of 20:47, 20 September 2012

Back to the Hub, or the Tutorials page.


GPIO Hardware & Software Tutorials:


Warnings

While most of these circuits may interface directly to the RPi, the use of a buffered interface (such as the one supplied by the Gertboard) is recommended which will help protect against damage. Alternatively, experiment with one of the #Alternative Test Platforms.

The GPIO pins connect directly into the core of the ARM processer, and are static-sensitive, so you should avoid touching the pins wherever possible. If you are carrying a static charge, for example by taking off an acrylic pullover, or walking across a nylon carpet, touching the GPIO pins could destroy your R-Pi, so always earth yourself before touching the pins or anything connected to them.

Extreme caution should be exercised when interfacing hardware at a low level, you may damage your RPi, your equipment and potentially yourself and others. Doing so is at your own risk!

Aims

This tutorial is based on this thread and aims to introduce basic circuits which can be used with the RPi's General Purpose Input/Output (GPIO). Basic electronics knowledge will be required (i.e. familiarity with typical discrete components such as transistors, diodes and resistors).

It is highly recommended that additional GPIO Protection Circuits are used to protect the delicate GPIO pins if interfacing to RPi hardware.

Useful Links/Resources

  • The Electronics Club - An excellent resource for beginner electronics, explains many basic circuits.

Protection Circuits

In order to protect the Raspberry Pi hardware, it is highly recommended that the GPIO pins are protected in some form to avoid damage.

The following link will introduce some of the ways to do this:

GPIO Protection Circuits

Alternative Test Platforms

Until you have a RPi to test with, there are many alternative platforms available which will allow the testing of basic circuits. In addition, they may be interfaced with directly using the RPi in the future.

  • TI LaunchPad - A low cost development platform ($4.30 including free world shipping). Includes programmer/debug board, two processors (with 16 GPIO including I2C/SPI/UART, 8ch 10bit ADC etc).
  • Arduino - Common hobbyist development platform. Excellent community support and additional hardware.
  • STM32 Primer/EvoPrimer - Self-contained development platform. Mentioned since I may use one at some point (I bought the original Primer a long time ago). It includes a battery, acceleration sensors and built in display screen.

Completed Tutorials

Note:
Until RPi devices are available, I can not confirm this will work on a real RPi.
For now, I shall be using the TI LaunchPad (see  Alternative Test Platforms
for details) to test the hardware on (as it is cheap and the logic levels similar).

Basic Circuits

1. LED output

Directly driven (will need very low powered LED) or driven via transistor (allowing higher current). Includes example 8xLED Test Module.

3. Simple on/off switch input

With or without de-bouncing, protection resistors etc. Includes example 8xSwitch Test Module.

4. 12V relay driver circuit

12V relay driver circiut with opto-decoupler. Includes schema.

Planned Tutorials

Basic Circuits

1. LED output

Completed see above.


2. Small DC motor drive

MOSFET or Darlington Pair to provide high power drive and reverse bias diode to protect from motor coils.


3. Simple on/off switch input

Completed see above.


4. Analogue resistive sensor sampled as a digital input

Using a basic transistor switch circuit.

Intermediate Circuits

1. Shift Registers - Multiplexing Data

An introduction to using additional ICs. In this case, using a parallel to serial 8-bit shift register to read 8 digital inputs using two GPIO pins.


2. Analogue to Digital Circuit

Use of a ADC chip to sample inputs.


3. PWM Driving Circuit

For example motor speed control.


4. Alpha-numeric 2x16 LCD Display

(IN-PROGRESS) Control via 4-wire data (total 6 GPIO) and also alternative 2-wire interface circuit.


5. Interfacing to I2C Devices

Interfacing to an I2C device connected to one of the Pi's I2C buses.

Advanced Circuits

1. Control Hardware Over The Internet

Implement web control and monitoring of GPIO connected components.

2. Communicating With Other Micro-controllers

Communicate with other micro-controllers so that features such as ADCs can be used.

Contributing to this tutorial

This is an open project so please feel welcome to add your own sections and improve its content.

Please see the Talk:RPi Tutorial Easy GPIO Hardware & Software page to discuss this page.

  1. http://www.raspberrypi.org/forum/projects-and-collaboration-general/gpios-suitable-for-microswitches-joysticks/#p35307
  2. http://www.raspberrypi.org/forum/projects-and-collaboration-general/gpios-suitable-for-microswitches-joysticks/#p35309