2. Electricity
• Electricity is a form of energy
• We can connect components that convert
electrical energy into other forms of energy:
light, sound, movement, heat etc, into a circuit
• In a Direct Current (DC) circuit,
electrical energy flows from
the positive side of a
power source to the
negative side, i.e. from
+ (power) to – (ground)
Anna Gerber
Intro to Electronics in Python
3. Electrical concepts
• Current (Amps): measures the flow of electrical
energy through a circuit
• Voltage (Volts): measures difference in potential
energy between the positive and negative sides
of a circuit
• Resistance (Ohms): measures a material's
opposition to the flow of energy
• Power (Watts): the rate at which energy is
converted from one form to another
Anna Gerber
Intro to Electronics in Python
4. Ohm's Law
Current = Voltage / Resistance
• Increase the voltage, and the current will
increase (i.e. speed up)
• Increase the resistance and the current will
decrease
Anna Gerber
Intro to Electronics in Python
5. Sensors
• Environmental
condi/ons
(e.g.
temperature,
humidity,
smoke)
• Magne/c
(e.g.
hall
effect
sensor)
• Light
(e.g.
photo
resistor)
• Sound
(e.g.
microphone)
• Mo/on
(e.g.
accelerometer,
/lt,
pressure)
• User
/
Physical
Input
(e.g.
buDon)
Anna Gerber
Intro to Electronics in Python
6. Actuators
• Light
&
Displays
(e.g.
LED,
LCD)
• Sound
(e.g.
Piezo
buzzer)
• Mo/on
(e.g.
Servo,
DC
Motor,
Solenoid)
• Power
(e.g.
Relay)
Anna Gerber
Intro to Electronics in Python
7. Digital vs Analog
• Digital
– discrete values (0 or 1)(LOW or HIGH)
– Examples: tilt sensor, push button, relay, servo
• Analog
– continuous values
– Examples: photo resistor, DC motor
• Some sensors support both digital and analog
outputs
Anna Gerber
Intro to Electronics in Python
8. Using a Breadboard
Anna Gerber
Intro to Electronics in Python
• Use to prototype circuits without soldering by
plugging in components and jumper wires
• Letters and numbers for reference
• Numbered rows are connected
• Some have power bus along the sides
9. Resistors
• Introduces resistance, so restricts the amount of
current that can flow through a circuit
• Coloured bands indicate resistance
• Can be connected in either direction
Anna Gerber
Intro to Electronics in Python
10. LEDs
• Light Emitting Diode
• Polarized: diodes act like one way valves so
must be connected in a certain direction
• Emits light when a current passes through
Anna Gerber
Intro to Electronics in Python
Anode
(+)
longer
lead
connects
to
power
Cathode
(-‐)
connects
to
ground
13. Loading Firmata onto the Arduino
• Once-off setup to prepare our Arduino for use
with PyFirmata:
– Connect the microcontroller board via USB
– Launch Arduino IDE and open the Firmata sketch
via the menu: File
>
Examples
>
Firmata
>
StandardFirmata
– Select your board type (e.g. Arduino Nano w/
ATmega328) via Tools
>
Board
– Select the port for your board via Tools
>
Serial
Port
> (the port of your Arduino)
e.g. /dev/tty.usbserial-A9GF3L9D
– Upload the program by clicking on Upload
– Close the IDE
Anna Gerber
Intro to Electronics in Python
15. Connecting an LED to the Arduino
• Unplug the Arduino!
• Attach long lead of
LED to pin 13 of
Arduino
• Connect resistor to
cathode of resistor
and ground rail of
breadboard
• Connect GND pin of
Arduino to ground
rail of breadboard
using a jumper wire
Anna Gerber
Intro to Electronics in Python
16. Creating the program
1. Create a Python program file (e.g. blink.py)
2. Edit it using a text editor e.g. SublimeText
3. At the start of your program import the library
import
pyfirmata
Anna Gerber
Intro to Electronics in Python
17. Creating the board
We create a Board object which corresponds to our
Arduino-compatible microcontroller board and store it
in a variable.
We need to provide the port as a parameter:
board
=
pyfirmata.Arduino("/dev/tty.usbserial-‐A9QPTF37")
Anna Gerber
Intro to Electronics in Python
18. Controlling the LED
• Then we can control the LED via the pin it is
connected to (in this case, pin 13)
• Use a variable for the pin number to make it easier to
change later
– PIN
=
13
• Turn on LED on pin 13
– board.digital[PIN].write(1)
• Turn off LED on pin 13
– board.digital[PIN].write(0)
Anna Gerber
Intro to Electronics in Python
19. Delayed behaviour
• Use the pass_time function to delay functions
by a certain number of seconds e.g. blink LED
on then off after one second:
board.digital[PIN].write(0)
board.pass_time(1)
board.digital[PIN].write(1)
Anna Gerber
Intro to Electronics in Python
20. Repeating behaviour (loops)
Use a while loop to blink indefinitely:
while
True
:
board.digital[PIN].write(0)
board.pass_time(1)
board.digital[PIN].write(1)
board.pass_time(1)
Anna Gerber
Intro to Electronics in Python
21. The entire blink program
import
pyfirmata
PORT
=
"/dev/tty.usbserial-‐A9QPTF37"
PIN
=
13
board
=
pyfirmata.Arduino(PORT)
while
True:
board.digital[PIN].write(0)
board.pass_time(1)
board.digital[PIN].write(1)
board.pass_time(1)
Anna Gerber
Intro to Electronics in Python
22. Running the program from Terminal
• Open the Terminal app
• Change directory to the location where you have
saved your code e.g.
>
cd
~/Desktop/code/
• Run your program using Python e.g.
>
python blink.py
• Hit control-C to stop the program
Anna Gerber
Intro to Electronics in Python
23. Connecting to iPython Notebook
• We will use iPython Notebook running on
Raspberry Pi
• Plug into Raspberry Pi via ethernet (connect to
DHCP server on Pi)
• Open 192.168.1.1:8888 in your browser
Anna Gerber
Intro to Electronics in Python
24. How to setup the software at home
• Install Arduino IDE
– Optional, only required if you want to load
Firmata again or experiment with programming
the Arduino using C++
• Install Python
• Install PyFirmata
•
Install a code editor e.g. Atom (Mac only),
SublimeText if you don't already have one or
install iPython Notebook
Anna Gerber
Intro to Electronics in Python
25. Where to find out more
• Electricity
– https://www.khanacademy.org/science/physics/
electricity-and-magnetism/v/circuits--part-1
• Arduino Playground
– http://playground.arduino.cc/interfacing/python
• Sample code for Freetronics kit
– https://gist.github.com/AnnaGerber/
26decdf2aa53150f7515
Anna Gerber
Intro to Electronics in Python