Linux Format - UK (2020-03)

(Antfer) #1
44 LXF260 March 2020 http://www.linuxformat.com

Raspberry Pi projects


he Arduino and Raspberry Pi are two very
different products, but they both cater for
eager hackers and makers. What if we could
connect an Arduino to our Pi and use it as a slave
device? One that reacts to input and sends the output
to our Raspberry Pi via Python. To do this we are going
to need some special software, and that is where this
tutorial starts.

Software setup
Before we can write any Python code we need to
download and install Arduino IDE for Linux ARM 32-bit
from the Arduino website: find it at http://www.arduino.cc/
en/Main/Software.
Once installed we need to add the user Pi to the
correct group to send data to the Arduino. So to add Pi
to the group, open a terminal and type the following:
$ sudo usermod -a -G dialout pi
Then reboot your Raspberry Pi before continuing.
With the Pi rebooted, open Arduino IDE, and select
File > Examples > Basic > Blink and then go to Tool >
Board and select your board. Here we used an Arduino
Uno. Then go to Tools > Port and make sure the port for
your board is selected.
Now click on Sketch > Upload (or click on the arrow
in the menu) to upload the code to the Arduino. After a
few seconds the built-in LED of the Arduino should flash
on/off slowly. This proves that we have a working unit.
With the test complete, we can now flash a special
sketch that will enable us to talk to our Arduino with
Python. Go to File > Examples > Firmata >
StandardFirmata and flash this sketch to your Arduino.
Once it is flashed, you can close the Arduino IDE.
To install the pyFirmata library, open a new terminal
and type the following:
$ sudo pip3 install pyfirmata

Arduino and Pi together


Cross the tiny computer streams and use the power of Python to connect


and combine your Pi and Arduino for advanced projects.


Any Pi model
Latest
Raspbian
An Arduino
Uno, Leonardo
or Mega
An LED
1 x 330 Ohm
resistor
(Orange-
Orange-Brown-
Gold)
A breadboard
5x M2M
jumper wires
1x 10k
potentiometer
Code:
https://
github.com/
lesp/LXF260-
Pyfirmata/
archive/
master.zip

YOU NEED


Project Hello World
To test that our Arduino will work with Python we will
write a quick script to turn on an LED connected to pin
12 of the Arduino. Please see the diagram for the
connections (see right).
Plug in the Arduino, and in the terminal type the
following code. Look for USB devices such as ttyUSB0
and ttyACM0. Make a note before moving on.
$ dmesg
Using your favourite Python 3 editor (IDLE, Thonny,
nano, Vim) create a new file and name it LED_test.py.
We shall now write some Python code into this file.
Start by importing two classes from the pyFirmata
library, which will enable our code to connect to the
Arduino. We can then import the sleep function from
the time library, with:
from pyfirmata import Arduino, util
from time import sleep
The next step is to create an object called board that
will be the connection from our Pi to the Arduino. For
this we shall need to use the USB device information
from dmesg. In our case our Arduino was at ttyUSB0.
board = Arduino('/dev/ttyUSB0')
A variable, led is used to store the Arduino pin number.
led = 12
Inside of a while True loop we can write the code
that will turn the LED on and off every 0.2 seconds. We
will call the object board, with a class to control the pin
digitally (0,1) and then write 1 to the pin to turn it on.
Note that we use the variable led to identify the pin.
Then we sleep for 0.2 seconds, before turning the pin
off and sleeping once more.
while True:
board.digital[led].write(1)
sleep(0.2)
board.digital[led].write(0)
sleep(0.2)
Save the code and then run the code from your
editor (IDLE Run > Run Module/Thonny Run > Run
Current Script) and after a few seconds the LED
connected to the Arduino will flash, proving that we have
a working connection.

Project 2: Flashing LEDs
Now let’s make a new project. This will be an LED that
flashes, but the interval between each flash is controlled
via a potentiometer, an analogue electronic component


  • something that the Raspberry Pi cannot ordinarily use
    without extra boards. We can use the value returned
    from the Arduino to control the speed at which the LED
    flashes. We will add the potentiometer to the existing
    LED test circuit that we have just built and tested.
    Please see the diagram (see right) for more information
    on this.


T


An Arduino and Raspberry Pi working together over a USB cable and programmed in Python. We
can build anything with this setup!

44 LXF260March 2020 3332March 0Sens2i0e

Raspberry Pi projects


he Arduino and Raspberry Pi are two very
different products, but they both cater for
eager hackers and makers. What if we could
connectan Arduino to our Pi and use it as a slave
device? One that reacts to input and sends the output
to our Raspberry Pi via Python. To do this we are going
to need some special software, and that is where this
tutorial starts.

Software setup
Before we can write any Python code we need to
download and install Arduino IDE for Linux ARM 32-bit
from the Arduino website: find it at http://www.arduino.cc/
en/Main/Software.
Once installed we need to add the user Pi to the
correct group to send data to the Arduino. So to add Pi
to the group, open a terminal and type the following:
$ sudo usermod -a -G dialout pi
Then reboot your Raspberry Pi before continuing.
With the Pi rebooted, open Arduino IDE, and select
File > Examples > Basic > Blink and then go to Tool >
Board and select your board. Here we used an Arduino
Uno. Then go to Tools > Port and make sure the port for
your board is selected.
Now click on Sketch > Upload (or click on the arrow
in the menu) to upload the code to the Arduino. After a
few seconds the built-in LED of the Arduino should flash
on/off slowly. This proves that we have a working unit.
With the test complete, we can now flash a special
sketch that will enable us to talk to our Arduino with
Python. Go to File > Examples > Firmata >
StandardFirmata and flash this sketch to your Arduino.
Once it is flashed, you can close the Arduino IDE.
To install the pyFirmata library, open a new terminal
and type the following:
$ sudo pip3 install pyfirmata

Arduino and Pi together


Cross the tiny computer streams and use the power of Python to connect


and combine your Pi and Arduino for advanced projects.


AnyPimodel
Latest
Raspbian
An Arduino
Uno,Leonardo
orMega
AnLED
1 x 330 Ohm
resistor
(Orange-
Orange-Brown-
Gold)
Abreadboard
5xM2M
jumperwires
1x10k
potentiometer
Code:
https://
github.com/
lesp/LXF260-
Pyfirmata/
archive/
master.zip

YOU NEED


ProjectHelloWorld
To test that our Arduino will work with Python we will
write a quick script to turn on an LED connected to pin
12 of the Arduino. Please see the diagram for the
connections (see right).
Plug in the Arduino, and in the terminal type the
following code. Look for USB devices such as ttyUSB0
and ttyACM0. Make a note before moving on.
$ dmesg
Using your favourite Python 3 editor (IDLE, Thonny,
nano, Vim) create a new file and name it LED_test.py.
We shall now write some Python code into this file.
Start by importing two classes from the pyFirmata
library, which will enable our code to connect to the
Arduino. We can then import the sleep function from
the time library, with:
from pyfirmata import Arduino, util
from time import sleep
The next step is to create an object called board that
will be the connection from our Pi to the Arduino. For
this we shall need to use the USB device information
from dmesg. In our case our Arduino was at ttyUSB0.
board = Arduino('/dev/ttyUSB0')
A variable, led is used to store the Arduino pin number.
led = 12
Inside of a while True loop we can write the code
that will turn the LED on and off every 0.2 seconds. We
will call the object board, with a class to control the pin
digitally (0,1) and then write 1 to the pin to turn it on.
Note that we use the variable led to identify the pin.
Then we sleep for 0.2 seconds, before turning the pin
off and sleeping once more.
while True:
board.digital[led].write(1)
sleep(0.2)
board.digital[led].write(0)
sleep(0.2)
Save the code and then run the code from your
editor (IDLE Run > Run Module/Thonny Run > Run
Current Script) and after a few seconds the LED
connected to the Arduino will flash, proving that we have
a workingconnection.

Project2:FlashingLEDs
Now let’s make a new project. This will be an LED that
flashes, but the interval between each flash is controlled
via a potentiometer, an analogue electronic component


  • something that the Raspberry Pi cannot ordinarily use
    without extra boards. We can use the value returned
    from the Arduino to control the speed at which the LED
    flashes. We will add the potentiometer to the existing
    LED test circuit that we have just built and tested.
    Please see the diagram (see right) for more information
    on this.


T


An Arduino and Raspberry Pi working together over a USB cable and programmed in Python. We
can build anything with this setup!
Free download pdf