Internet of Things With Python
Internet of Things With Python
with Python
Hans-Petter Halvorsen
https://www.halvorsen.blog
Internet of Things with Python
Raspberry Pi and Python
Hans-Petter Halvorsen
2021
Raspberry Pi and Python
c Hans-Petter Halvorsen
1
Preface
Python is a popular programming language, and it is one of the most used pro-
gramming languages today.
Python works on all the main platforms and operating systems used today, such
Windows, macOS, and Linux.
Here you find lots of technical resources about Technology, Programming, Soft-
ware Engineering, Automation and Control, Industrial IT, etc.
https://www.halvorsen.blog/documents/programming/python/
These resources are a supplement to this textbook. Here you can download the
software, download code examples, etc.
LATEXis a document preparation system used for the communication and publi-
cation of scientific documents.
2
For more information about LATEX:
https://www.latex-project.org
Python Books
You find other Python textbooks within different domains on my Python Web
page:
https://www.halvorsen.blog/documents/programming/python/
Python Books:
3
Video Resources
In addition to the textbooks mentioned, lots of videos explaining and comple-
ments the different Python topics and examples within the textbook have been
made. These are both available on my website and on YouTube.
Blog:
https://www.halvorsen.blog
Python Resources:
https://www.halvorsen.blog/documents/programming/python/
Programming
The way we create software today has changed dramatically the last 30 years,
from the childhood of personal computers in the early 80s to today’s powerful
devices such as Smartphones, Tablets and PCs.
The Internet has also changed the way we use devices and software. We still
have traditional desktop applications, but Web Sites, Web Applications and so-
called Apps for Smartphones, etc. are dominating the software market today.
We need to find and learn Programming Languages that are suitable for the
New Age of Programming.
4
You find lots of Programming Resources here:
https://www.halvorsen.blog/documents/programming/
Software Engineering
Software Engineering is the discipline for creating software applications. A
systematic approach to the design, development, testing, and maintenance of
software.
• Planning
• Requirements Analysis
• Design
• Implementation
• Testing
• Deployment and Maintenance
5
6
Contents
I Raspberry Pi 10
1 Raspberry Pi 11
1.1 Raspberry Pi vs Arduino . . . . . . . . . . . . . . . . . . . . . . 12
1.2 Getting Started with Raspberry Pi . . . . . . . . . . . . . . . . . 13
1.3 Raspberry Pi OS . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 The Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Python Programming . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7 GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7.1 LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7.2 GPIO Features . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8 Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 What is Python? 27
3.1 Introduction to Python . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1 Interpreted vs. Compiled . . . . . . . . . . . . . . . . . . 28
3.2 Python Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 Python Packages for Science and Numerical Computations 30
3.3 Anaconda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Python Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.1 Python IDLE . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.2 Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . 32
3.4.3 Spyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.4 Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.5 PyCharm . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.6 Wing Python IDE . . . . . . . . . . . . . . . . . . . . . . 33
3.4.7 Jupyter Notebook . . . . . . . . . . . . . . . . . . . . . . 33
3.5 Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.6 Installing Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.6.1 Python Windows 10 Store App . . . . . . . . . . . . . . . 34
3.6.2 Installing Anaconda . . . . . . . . . . . . . . . . . . . . . 34
7
3.6.3 Installing Visual Studio Code . . . . . . . . . . . . . . . . 34
8
8 Creating Classes in Python 76
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8.2 The init () Function . . . . . . . . . . . . . . . . . . . . . . . . 77
8.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
V Resources 101
20 Python Resources 102
20.1 Python Distributions . . . . . . . . . . . . . . . . . . . . . . . . . 102
20.2 Python Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
20.3 Python Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
20.4 Python Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
20.5 Python in Visual Studio . . . . . . . . . . . . . . . . . . . . . . . 103
9
Part I
Raspberry Pi
10
Chapter 1
Raspberry Pi
The Raspberry Pi is a small computer that can do lots of things It has a small
footprint (about 9x6cm) and it is cheap ($35+) You plug it into a monitor and
attach a keyboard and mouse It has so-called GPIO pins (General Purpose In-
put/Output) for connection sensors and other electronic components like LEDs,
etc.
11
Raspberry Pi is as well suited for prototyping, datalogging and different elec-
tronics projects, a media center, etc. It can be used to learn programming, it
and other technical skills, etc. RP has limited power (CPU, RAM, etc.) so it
cannot normally replace a desktop computer or laptop for ordinary use
Figure 1.2 shows the Arduino Uno, which is the most popular Arduino device.
Rasberry Pi
• Raspberry PI is a Microcomputer
• It has an ordinary Operating System (OS)
• You can connect USB devices, Keyboard, Mouse, Monitors, etc.
12
• RP has basically all the features an ordinary computer has but in a much
smaller package
• Uptill 8 Gb RAM
• RP runs Linux applications
Arduino:
• Arduino is a Microcontroller
• Arduino has a Bootloader and not an ordinary operating system
• Arduino is NOT a computer, only a small controller, whose purpose is to
control things
• No Bluetooth, Wi-Fi (some models have), and Ethernet (but can be pro-
vided as so-called Shields)
• Very little RAM (a few Kb)
• Inexpensive
• Raspberry Pi
• microSD Card (+ Adapter)
• Power Supply
• microHDMI to HDMI Cable
• Monitor
• Mouse
• Keyboard
Figure 1.3 shows the Raspberry Pi connectors. The Raspberry Pi has 4 USB A
connectors, one Ethernet connector, two microHDMI connectors, USB C con-
nector for Power Supply, GPIO connector and camera connector.
1.3 Raspberry Pi OS
In order make your Raspberry Pi up and running you need to install an Op-
erating System (OS). The OS for Raspberry Pi is called ”Raspberry Pi OS”
(previously known as Raspbian). Raspberry Pi runs a version of an operating
system called Linux (Windows and macOS are other operating systems). To in-
stall the necessary OS, you need a microSD card. Then you use the ”Raspberry
Pi Imager” in order to download the OS to the microSD card.
13
Figure 1.3: Raspberry Pi Connectors
1.5 Tools
1.6 Python Programming
Figure 1.6 shows Thonny.
1.7 GPIO
Figure ?? shows the GPIO connector.
1.7.1 LED
Figure 1.9 shows LED wiring.
14
Figure 1.4: Raspberry Pi OS
Blog:
https://www.halvorsen.blog
Python Resources:
https://www.halvorsen.blog/documents/programming/python/
15
Figure 1.5: Tee Terminal
16
Figure 1.7: Thonny Manage Packages
17
Figure 1.9: LED wiring
18
Figure 1.11: Enable/Disable Raspberry Pi Hardware Interfaces
19
Part II
20
Chapter 2
Introduction
With this textbook you will learn basic Python programming. The textbook
contains lots of examples and self-paced tasks that the users should go through
and solve in their own pace.
The Internet has also changed the way we use devices and software. We still
have traditional desktop applications, but Web Sites, Web Applications and so-
called Apps for Smartphones, etc. are dominating the software market today.
We need to find and learn Programming Languages that are suitable for the
New Age of Programming.
21
Figure 2.1: Web Site - Python
Python has during the last 10 years become more and more popular. Today,
Python has become one of the most popular Programming Languages.
There are many different rankings regarding which programming language which
is most popular. In most of these ranking, Python is in top 10.
One of these rankings is the IEEE Spectrum’s ranking of the top programming
languages [4].
From this ranking we see that Python is the most popular Programming Lan-
guage in 2018. See Figure 2.2
As we see in Figure 2.2 they categorize the different Programming Languages
into the following categories:
• Web
22
Figure 2.2: The Most Popular Programming Languages
• Mobile
• Enterprise
• Embedded
According to Figure 2.2 we see that Python can be used to program Web Ap-
plications, Enterprise Applications and Embedded Applications.
So far Python is not used or not optimized for creating Mobile Applications. We
have today 2 major Mobile platforms; iOS Applications are mainly programmed
with the Swift Programming language, while Android Applications are mainly
programmed with either Java or Kotlin.
Another survey is the ”Stack Overflow Developer Survey 2018” [5]. See Figure
2.3.
As we can see from [6] and Figure 2.4, Python becomes more and more popular
year by year.
Based on Figure 2.4, the source [6] try to predict the future of Python, see
Figure 2.5.
Based on the surveys and statistics mention above, obviously Python is a pro-
gramming language that you should learn.
Lets summarize:
• Python is fun to learn and use and it is also named after the British
comedy group called Monty Python.
• Python has a simple and flexible code structure and the code is easy to
read.
23
Figure 2.3: The Top Programming Languages - Stack Overflow Survey
24
Figure 2.4: The Incredible Growth of Python
• Databases (such as SQL Server and MySQL) and using the Structured
Query Language (SQL) or the upcoming NoSQL databases
• App Development for the 2 main platforms iOS (XCode using the Swift
Programming Language) and Android (Android Studio using the Java
Programming Language or Kotlin Programming language)
If you have skills in most of the tools, programming languages and frameworks
mention above, you are well suited for working as a full-time programmer or
software engineer.
2.2 MATLAB
If you are looking for MATLAB, please see the following:
https://www.halvorsen.blog/documents/programming/matlab/
25
Figure 2.5: The Future of Python
26
Chapter 3
What is Python?
But this is just the Python core, i.e. the interpreter a very basic editor, and the
minimum needed to create basic Python programs.
Typically you will need more features for solving your tasks. Then you can in-
stall and use separate Python packages created by third parties. These packages
need to be downloaded and installed separately (typically you use something
called PIP), or you choose to use, e.g., a distribution package like Anaconda.
27
Figure 3.1: IDLE - Basic Python Editor
you write Python (.py) files in a text editor and then put those files into the
python interpreter to be executed. Depending on the Editor you are using, this
is either done automatically, or you need to do it manually.
28
With interpreted languages, the code is saved in the same format that you en-
tered. Compiled programs generally run faster than interpreted ones because
interpreted programs must be reduced to machine instructions at run-time. It
is usually easier to develop applications in an interpreted environment because
you don’t have to recompile your application each time you want to test a small
section.
Compiled languages are all translated by running the source code through a
compiler. This results in very efficient code that can be executed any number of
times. The overhead for the translation is incurred just once, when the source
is compiled; thereafter, it need only be loaded and executed.
During the design of an application, you might need to decide whether to use a
compiled language or an interpreted language for the application source code.
Thus, an interpreted language is generally more suited for doing ”ad hoc” cal-
culations or simulations, while compiled languages are better for permanent
applications where speed is in focus.
This is also typical approach for open source software, because everybody can
create their own Python packages and distribute them. In that way you also
find Python packages for almost everything, from Scientific Computing to Web
Development.
29
These packages need to be downloaded and installed separately, or you choose
to use, e.g., a distribution package like Anaconda, where you typically get the
packages you need for scientific computing. With Anaconda you typically get
the same features as with MATLAB.
Lots of Python packages exists, depending on what you are going to solve.
We have Python packages for Desktop GUI Development, Database Develop-
ment, Web Development, Software Development, etc.
Here you can search for, download and install many hundreds Python Packages
within different topics and applications. You can also make your own Python
Packages and distribute them here.
3.3 Anaconda
Anaconda is a distribution package, where you get Python compiler, Python
packages and the Spyder editor, all in one package.
Anaconda includes Python, the Jupyter Notebook, and other commonly used
packages for scientific computing and data science.
30
They offer a free version (Anaconda Distribution) and a paid version (Enter-
prise) Anaconda is available for Windows, macOS, and Linux
Web:
https://www.anaconda.com
Wikipedia:
https://en.wikipedia.org/wiki/Anaconda( P ythond istribution)
Spyder and the Python packages (NumPy, SciPy, Matplotlib, ...) mention above
+++ are included in the Anaconda Distribution.
Which editor you should use depends on your background, what kind of code
editors you have used previously, your programming skills, what your are going
to develop in Python, etc.
Web:
https://www.python.org
31
3.4.2 Visual Studio Code
Visual Studio Code is a source code editor developed by Microsoft for Windows,
Linux and macOS.
Web:
https://code.visualstudio.com
3.4.3 Spyder
Spyder is an open source cross-platform integrated development environment
(IDE) for scientific programming in the Python language.
Web:
https://www.spyder-ide.org
Wikipedia:
https://en.wikipedia.org/wiki/Spyder( sof tware)
Visual Studio (from 2017), has integrated support for Python, it is called
”Python Support in Visual Studio”.
Web:
https://visualstudio.microsoft.com
Wikipedia:
https://en.wikipedia.org/wiki/MicrosoftV isualS tudio
3.4.5 PyCharm
PyCharm is cross-platform, with Windows, macOS and Linux versions. The
Community Edition is free to use, while the Professional Edition (paid version)
has some extra features.
32
Web:
https://www.jetbrains.com/pycharm/
• Wing 101 – a very simplified free version, for teaching beginning pro-
grammers
• Wing Personal – free version that omits some features, for students and
hobbyists
• Wing Pro – a full-featured commercial (paid) version, for professional
programmers
Web:
http://jupyter.org
Wikipedia:
https://en.wikipedia.org/wiki/ProjectJ upyter
3.5 Resources
Here are some useful Python resources:
• The official Python Tutorial
- https://docs.python.org/3.7/tutorial/index.html
• The official Python Documentation
- https://docs.python.org/3.7/index.html
• Python Tutorial (w3schools.com) [14]
- https://www.w3schools.com/python/
33
https://www.python.org
Here you can download the basic Python features in one package, which includes
the Python programming language interpreter, and a basic code editor, or an
integrated development environment, called IDLE. See Figure 3.1
For more advanced Python Programming you typically need a better Code Ed-
itor and additional Packages.
For the basic Python examples in the beginning, the basic Python software
from:
https://www.python.org is good enough.
I suggest you start with the basic Python software in order to learn the basics,
then you can upgrade to a better Editor, install addition Python packages (either
manually or or install Anaconda where ”everything” is included).
The Microsoft Store version of Python 3.7 is a simplified installer for running
scripts and packages.
Microsoft Store version of Python 3.7 is very basic but it’s good enough to run
the simple scripts.
Python 3.7 Microsoft Store edition will receive all updates automatically when
they are released and no manual action is required from your end.
In order to install the Microsoft Store version of Python just open Microsoft
Store in Windows 10 and search for Python.
34
Download and install from:
https://code.visualstudio.com
35
Chapter 4
Other Python Editors will be discussed more in detail later. For now you can
use the basic Python IDE (IDLE) or Spyder if you have installed the Anaconda
distribution package.
36
Example 4.2.1. Plotting in Python
Lets open your Python Editor and type the following:
1 p r i n t ( ” H e l l o World ! ” )
Listing 4.1: Hello World Python Example
[End of Example]
You can use Python in different ways, either in ”interactive” mode or in ”Script-
ing” mode.
The python program that you have installed will by default act as something
called an interpreter. An interpreter takes text commands and runs them as
you enter them - very handy for trying things out.
Yo can run Python interactively in different ways either using the Console which
is part of the operating system or the Python IDLE and the Python Shell which
is part of the basic Python installation from https://www.python.org.
Here you type one and one command at a time after the ”>>>” sign in the
Python Shell.
1 >>> p r i n t ( ” H e l l o World ! ” )
The python program that you have installed will by default act as something
called an interpreter. An interpreter takes text commands and runs them as
you enter them - very handy for trying things out.
Below we see how we can run Python from the Console which is part of the OS.
37
4.4.1 Opening the Console on macOS
The standard console on macOS is a program called Terminal. Open Terminal
by navigating to Applications, then Utilities, then double-click the Terminal pro-
gram. You can also easily search for it in the system search tool in the top right.
The command line Terminal is a tool for interacting with your computer. A
window will open with a command line prompt message, something like this:
L a s t l o g i n : Tue Dec 11 0 8 : 3 3 : 5 1 on c o n s o l e
computername : ˜ username
Just type python at your console, hit Enter, and you should enter Python’s
Interpreter.
1 L a s t l o g i n : Tue Dec 11 1 2 : 3 4 : 1 6 on t t y s 0 0 0
2 Hans−P e t t e r −Work−MacBook−A i r : ˜ hansha$ python
3 Python 3 . 6 . 5 | Anaconda , I n c . | ( d e f a u l t , Apr 26 2 0 1 8 , 0 8 : 4 2 : 3 7 )
4 [GCC 4 . 2 . 1 Compatible Clang 4 . 0 . 1 ( t a g s /RELEASE 401/ f i n a l ) ] on
darwin
5 Type ” h e l p ” , ” c o p y r i g h t ” , ” c r e d i t s ” o r ” l i c e n s e ” f o r more
information .
6 >>>
The prompt >>> on the last line indicates that you are now in an interactive
Python interpeter session, also called the “Python shell”. This is different from
the normal terminal command prompt!
You can now enter some code for python to run. Try:
>>> p r i n t ( ” H e l l o World ” )
38
4.4.2 Opening the Console on Windows
Window’s console is called the Command Prompt, named cmd. An easy way to
get to it is by using the key combination Windows+R (Windows meaning the
windows logo button), which should open a Run dialog. Then type cmd and
hit Enter or click Ok.
Just type python in the Command Prompt, hit Enter, and you should enter
Python’s Interpreter. See Figure 4.3.
Note! This is also an option during the setup. While installing you can se-
lect ”Add Python.exe to path”. This option is by default set to ”Off”. To get
that option you need to select ”Customize”, not using the ”Default” installation.
In the window that appears, click Environment Variables. . . near the bottom
right. See Figure 4.4.
39
Figure 4.4: Windows System Properties
In the next window, find and select the user variable named Path and click
Edit. . . to change its value. See Figure 4.5.
Select ”New” and add the path where ”python.exe” is located. See Figure 4.6.
Click Save and open the Command Prompt once more and enter ”python” to
verify it works. See Figure 4.3.
40
Figure 4.5: Windows System Properties
In Figure 4.7 we see how this is done. As you see we can enter many Python
commands that together makes a Python program or Python script.
From the Python Shell you select Run → Run Module or hit F5 in order to run
or execute the Python Script. See Figure 4.8.
41
Figure 4.6: Windows System Properties
The IDLE editor is very basic, for more complicated tasks you typically may
prefer to use another editor like Spyder, Visual Studio Code, etc.
1 $ cd / U s e r s / username / Downloads
2 $ python h e l l o w o r l d . py
Note! Make sure you are at your system command prompt, which will have $
or > at the end, not in Python mode (which has >>> instead)!
1 Hello
2 World
3 How a r e you ?
42
Figure 4.7: Python Script
1 > cd /
2 > cd Temp
3 > python h e l l o w o r l d . py
Note! Make sure you are at your system command prompt, which will have >
at the end, not in Python mode (which has >>> instead)!
1 Hello
2 World
3 How a r e you ?
In the Spyder editor we have the Script Editor to the left and the interactive
Python Shell or the Console window to the right. See See 4.11.
43
Figure 4.8: Running a Python Script
44
Figure 4.11: Running a Python Script in Spyder
45
Chapter 5
1 p r i n t ( ” H e l l o World ! ” )
Listing 5.1: Hello World Python Example
[End of Example]
Press q to close the help window and return to the Python prompt.
5.2 Variables
Variables are defined with the assignment operator, “=”. Python is dynamically
typed, meaning that variables can be assigned without declaring their type, and
that their type can change. Values can come from constants, from computation
involving values of other variables, or from the output of a function.
46
Example 5.2.1. Creating and using Variables in Python
We use the basic IDLE (or another Python Editor) and type the following:
1 >>> x = 3
2 >>> x
3 3
Listing 5.2: Using Variables in Python
Here we define a variable and sets the value equal to 3 and then print the result
to the screen.
[End of Example]
You can write one command by time in the IDLE. If you quit IDLE the variables
and data are lost. Therefore, if you want to write a somewhat longer program,
you are better off using a text editor to prepare the input for the interpreter
and running it with that file as input instead. This is known as creating a script.
Python scripts or programs are save as a text file with the extension .py
As seen in the examples, you can use the print() command in order to show the
values on the screen.
[End of Example]
47
A variable can have a short name (like x and y) or a more descriptive name
(sum, amount, etc).
You don need to define the variables before you use them (like you need to to
in, e.g., C/C++/C).
Figure 5.1 show these examples using the basic IDLE editor.
5.2.1 Numbers
There are three numeric types in Python:
• int
• float
• complex
48
Variables of numeric types are created when you assign a value to them, so in
normal coding you don’t need to bother.
1 x = 1 # int
2 y = 2.8 # float
3 z = 3 + 2j # complex
Listing 5.5: Numeric Types in Python
This means you just assign values to a variable without worrying about what
kind of data type it is.
1 p r i n t ( type ( x ) )
2 p r i n t ( type ( y ) )
3 p r i n t ( type ( z ) )
Listing 5.6: Check Data Types in Python
If you use the Spyder Editor, you can see the data types that a variable has
using the Variable Explorer (Figure 5.2):
[End of Example]
5.2.2 Strings
Strings in Python are surrounded by either single quotation marks, or double
quotation marks. ’Hello’ is the same as ”Hello”.
Strings can be output to screen using the print function. For example: print(”Hello”).
1 a = ” H e l l o World ! ”
2
3 print (a)
4
5 print (a [ 1 ] )
6 print (a [ 2 : 5 ] )
7 print ( len (a) )
8 print ( a . lower () )
49
9 p r i n t ( a . upper ( ) )
10 p r i n t ( a . r e p l a c e ( ”H” , ”J” ) )
11 print (a . s p l i t (” ”) )
Listing 5.7: Strings in Python
As you see in the example, there are many built-in functions form manipulating
strings in Python. The Example shows only a few of them.
Strings in Python are arrays of bytes, and we can use index to get a specific
character within the string as shown in the example code.
[End of Example]
[End of Example]
In another chapter we will learn to create our own functions from scratch.
50
5.4 Python Standard Library
Python allows you to split your program into modules that can be reused in
other Python programs. It comes with a large collection of standard modules
that you can use as the basis of your programs.
The Python Standard Library consists of different modules for handling file
I/O, basic mathematics, etc. You don’t need to install these separately, but you
need to important them when you want to use some of these modules or some
of the functions within these modules.
The math module has all the basic math functions you need, such as: Trigono-
metric functions: sin(x), cos(x), etc. Logarithmic functions: log(), log10(), etc.
Constants like pi, e, inf, nan, etc.
51
We can also write it like this:
1 im po rt math a s mt
2
3 x = 3.14
4 y = mt . s i n ( x )
5
6 print (y)
[End of Example]
There are advantages and disadvantages with the different approaches. In your
program you may need to use functions from many different modules or pack-
ages. If you import the whole module instead of just the function(s) you need
you use more of the computer memory.
Very often we also need to import and use multiple libraries where the different
libraries have some functions with the same name but different use.
Other useful modules in the Python Standard Library are statistics (where
you have functions like mean(), stdev(), etc.)
For more information about the functions in the Python Standard Library,
see:
https://docs.python.org/3/library/index.html
52
Lots of other packages exists, depending on what you are going to solve.
You will learn the basics features in all these libraries. We will use all of the in
different examples and exercises throughout this textbook.
Example 5.5.1. Using libraries
In this example we use the NumPy library:
1 im po rt numpy a s np
2
3 x = 3
4
5 y = np . s i n ( x )
6
7 print (y)
In this example we use both the math module in the Python Standard Library
and the NumPy library:
1 im po rt math a s mt
2 im po rt numpy a s np
3
4 x = 3
5
6 y = mt . s i n ( x )
7
8 print (y)
9
10
11 y = np . s i n ( x )
12
13 print (y)
Note! As seen in this example we use a function called sin() which exists both
in the math module in the Python Standard Library and the NumPy library.
In this case they give the same results. In this case the following code is not
recommended:
1 from math im por t ∗
2 from numpy imp ort ∗
3
4 x = 3
5
53
6 y = sin (x)
7
8 print (y)
9
10
11 y = sin (x)
12
13 print (y)
In this case it works, but assume you have 2 different functions with the same
name that have different meaning in 2 different libraries.
[End of Example]
Anaconda:
https://www.anaconda.com/distribution/
If you are familiar with MATLAB and basic plotting in MATLAB, using the
Matplotlib is very similar.
The main difference from MATLAB is that you need to import the library,
either the whole library or one or more functions.
For simplicity we import the whole library like this:
1 im po rt m a t p l o t l i b . p y p l o t a s p l t
54
Plotting functions that you will use a lot:
• plot()
• title()
• xlabel()
• ylabel()
• axis()
• grid()
• subplot()
• legend()
• show()
Lets create some basic plotting examples using the Matplotlib library:
This makes the code simpler to read. one problem with this approach appears
assuming we import and use multiple libraries and the different libraries have
some functions with the same name but different use.
55
Figure 5.3: Plotting in Python
[End of Example]
• plot()
• xlabel()
• ylabel()
• show()
1 im po rt numpy a s np
2 im po rt m a t p l o t l i b . p y p l o t a s p l t
3
4 x = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7]
5
6 y = np . s i n ( x )
7
8 plt . plot (x , y)
9 plt . xlabel ( ’x ’ )
10 plt . ylabel ( ’y ’ )
11 plt . show ( )
56
Figure 5.4: Plotting a Sine function in Python
1 im po rt m a t p l o t l i b . p y p l o t a s p l t
2 im po rt numpy a s np
3
4 xstart = 0
5 x s t o p = 2∗ np . p i
6 increment = 0.1
7
8 x = np . a r a n g e ( x s t a r t , xstop , i n c r e m e n t )
9
10 y = np . s i n ( x )
11
12 plt . plot (x , y)
13 plt . xlabel ( ’x ’ )
14 plt . ylabel ( ’y ’ )
15 plt . show ( )
[End of Example]
5.6.1 Subplots
The subplot command enables you to display multiple plots in the same window.
Typing ”subplot(m,n,p)” partitions the figure window into an m-by-n matrix
of small subplots and selects the subplot for the current plot. The plots are
numbered along the first row of the figure window, then the second row, and so
on. See Figure 5.6.
57
Figure 5.5: Plotting a Sine function in Python - Better Implementation
[End of Example]
58
Figure 5.6: Creating Subplots in Python
5.6.2 Exercises
Below you find different self-paced Exercises that you should go through and
solve on your own. The only way to learn Python is to do lots of Exercises!
You should use all the Plotting functions listed below in your code:
• plot()
• title()
• xlabel()
• ylabel()
• axis()
• grid()
• legend()
• show()
[End of Exercise]
59
Part III
Python Programming
60
Chapter 6
Python Programming
We have been through the basics in Python, such as variables, using some basic
built-in functions, basic plotting, etc.
You may come far only using these thins, but to create real applications, you
need to know about and use features like:
• If ... Else
• For Loops
• While Loops
• Arrays ...
If you are familiar with one or more other programming language, these fea-
tures should be familiar and known to you. All programming languages have
these features built-in, but the syntax is slightly different from one language to
another.
61
11 p r i n t ( ” a i s e q u a l t o b” )
Listing 6.1: If
Using If - Else:
1 a = 5
2 b = 8
3
4 if a > b:
5 p r i n t ( ” a i s g r e a t e r than b” )
6 else :
7 p r i n t ( ”b i s g r e a t e r than a o r a and b a r e e q u a l ” )
Listing 6.2: If - Else
Using Elif :
1 a = 5
2 b = 8
3
4 if a > b:
5 p r i n t ( ” a i s g r e a t e r than b” )
6 elif b > a:
7 p r i n t ( ”b i s g r e a t e r than a ” )
8 e l i f a == b :
9 p r i n t ( ” a i s e q u a l t o b” )
Listing 6.3: Elif
Note! Python uses ”elif” not ”elseif” like many other programming languages
do.
[End of Example]
6.2 Arrays
An array is a special variable, which can hold more than one value at a time.
Here are some Examples how you can create and use Arrays in Python:
Example 6.2.1. Arrays in Python
1 data = [ 1 . 6 , 3 . 4 , 5 . 5 , 9 . 4 ]
2
3 N = l e n ( data )
4
5 p r i n t (N)
6
7 p r i n t ( data [ 2 ] )
8
9 data [ 2 ] = 7 . 3
10
11 p r i n t ( data [ 2 ] )
62
12
13
14 f o r x i n data :
15 print (x)
16
17
18 data . append ( 1 1 . 4 )
19
20
21 N = l e n ( data )
22
23 p r i n t (N)
24
25
26 f o r x i n data :
27 print (x)
Listing 6.4: Using Arrays in Python
You can return the number of elements in the array like this:
1 N = l e n ( data )
You can get a specific value inside the array like this:
1 index = 2
2 x = cars [ index ]
[End of Example]
You have many built in methods you can use in combination with arrays, like
sort(), clear(), copy(), count(), insert(), remove(), etc.
63
6.3 For Loops
A For loop is used for iterating over a sequence. I guess all your programs will
use one or more For loops. So if you have not used For loops before, make sure
to learn it now.
Below you see a basic example how you can use a For loop in Python:
1 f o r i in range (1 , 10) :
2 print ( i )
The For loop is probably one of the most useful feature in Python (or in any
kind of programming language). Below you will see different examples how you
can use a For loop in Python.
1 data = [ 1 . 6 , 3 . 4 , 5 . 5 , 9 . 4 ]
2
3 f o r x i n data :
4 print (x)
5
6
7 c a r l i s t = [ ” Volvo ” , ” T e s l a ” , ” Ford ” ]
8
9 for car in c a r l i s t :
10 print ( car )
Listing 6.5: Using For Loops in Python
Finally, you can also use the range() function like this:
1 start = 4
2 s t o p = 12 #but not i n c l u d i n g
3 step = 2
4
5 f o r x i n r a n g e ( s t a r t , s top , s t e p ) :
6 print (x)
64
You should try all these examples in order to learn the basic structure of a For
loop.
[End of Example]
[End of Example]
By definition, the first two Fibonacci numbers are 0 and 1, and each subsequent
number is the sum of the previous two.
Some sources omit the initial 0, instead beginning the sequence with two 1s.
65
In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the
recurrence relation
f0 = 0, f1 = 1
We will write a Python script that calculates the N first Fibonacci numbers.
The Python Script becomes like this:
1 N = 10
2
3 fib1 = 0
4 fib2 = 1
5
6 print ( fib1 )
7 print ( fib2 )
8
9 f o r k i n r a n g e (N−2) :
10 f i b n e x t = f i b 2 +f i b 1
11 fib1 = fib2
12 fib2 = fib next
13 print ( fib next )
Listing 6.6: Fibonacci Numbers Using a For Loop in Python
Alternative solution:
1 N = 10
2
3 fib = [0 , 1]
4
5
6 f o r k i n r a n g e (N−2) :
7 f i b n e x t = f i b [ k +1] +f i b [ k ]
8 f i b . append ( f i b n e x t )
9
10 print ( fib )
Listing 6.7: Fibonacci Numbers Using a For Loop in Python - Alt2
66
11 f o r k i n r a n g e (N−2) :
12 f i b [ k +2] = f i b [ k +1] +f i b [ k ]
13
14
15 print ( fib )
Listing 6.8: Fibonacci Numbers Using a For Loop in Python - Alt3
[End of Example]
Simple example:
1 f o r i in range (1 , 10) :
2 f o r k in range (1 , 10) :
3 print ( i , k)
67
By definition a prime number has both 1 and itself as a divisor. If it has any
other divisor, it cannot be prime.
Create a Python Script where you find all prime numbers between 1 and 200.
Tip! I guess this can be done in many different ways, but one way is to use 2
nested For Loops.
[End of Exercise]
1 m = 8
2
3 while m > 2:
4 p r i n t (m)
5 m = m− 1
Listing 6.10: Using While Loops in Python
[End of Example]
6.5 Exercises
Below you find different self-paced Exercises that you should go through and
solve on your own. The only way to learn Python is to do lots of Exercises!
68
where T is the time constant.
Create a Script in Python (.py file) where you plot the solution x(t) in the time
interval:
0 ≤ t ≤ 25
Add Grid, and proper Title and Axis Labels to the plot.
[End of Exercise]
69
Chapter 7
Creating Functions in
Python
7.1 Introduction
A function is a block of code which only runs when it is called. You can pass
data, known as parameters, into a function. A function can return data as a
result.
If you are familiar with one or more other programming language, creating and
using functions should be familiar and known to you. All programming lan-
guages has the possibility to create functions, but the syntax is slightly different
from one language to another.
Scripts:
• A collection of commands that you would execute in the Editor
• Used for automating repetitive tasks
Functions:
• Operate on information (inputs) fed into them and return outputs
• Have a separate workspace and internal variables that is only valid inside
the function
70
• Your own user-defined functions work the same way as the built-in func-
tions you use all the time, such as plot(), rand(), mean(), std(), etc.
Python have lots of built-in functions, but very often we need to create our own
functions (we could refer to these functions as user-defined functions)
In Python a function is defined using the def keyword:
1 d e f FunctionName :
2 <s t a t e m e n t −1>
3 .
4 .
5 <s t a t e m e n t −N>
6 return . . .
The function adds 2 numbers. The name of the function is add, and it returns
the answer using the return statement.
Note that you need to use a colon ”:” at the end of line where you define the
function.
1 d e f add ( x , y ) :
71
[End of Example]
Next, we create a new Python File (e.g., testaverage.py) where we use the
function we created:
1 from m y f u n c t i o n s im po rt a v e r a g e
2
3 a = 2
4 b = 3
5
6 c = average (a , b)
7
8 print ( c )
Listing 7.4: Test of Average function
[End of Example]
72
21 data = [ 1 , 5 , 6 , 3 , 1 2 , 3 ]
22
23
24 t o t a l s u m , mean = s t a t ( data )
25
26 p r i n t ( t o t a l s u m , mean )
Listing 7.5: Function with multiple return values
[End of Example]
7.3 Exercises
Below you find different self-paced Exercises that you should go through and
solve on your own. The only way to learn Python is to do lots of Exercises!
[End of Exercise]
Exercise 7.3.2. Create Python functions for converting between radians and
degrees
Since most of the trigonometric functions require that the angle is expressed in
radians, we will create our own functions in order to convert between radians
and degrees.
We have that:
73
[End of Exercise]
By definition, the first two Fibonacci numbers are 0 and 1, and each subsequent
number is the sum of the previous two.
Some sources omit the initial 0, instead beginning the sequence with two 1s.
f0 = 0, f1 = 1
[End of Exercise]
By definition a prime number has both 1 and itself as a divisor. If it has any
other divisor, it cannot be prime.
Tip! I guess this can be implemented in many different ways, but one way is to
use 2 nested For Loops.
74
Create a Python function where you check if a given number is a prime number
or not.
You can check the function in the Command Window like this:
1 number = 4
2 c h e c k i f p r i m e ( number )
[End of Exercise]
75
Chapter 8
8.1 Introduction
Python is an object oriented programming (OOP) language. Almost everything
in Python is an object, with its properties and methods.
The foundation for all object oriented programming (OOP) languages are Classes.
1 c l a s s ClassName :
2 <s t a t e m e n t −1>
3 .
4 .
5 .
6 <s t a t e m e n t −N>
1 c l a s s Car :
2 model = ” Volvo ”
3 c o l o r = ” Blue ”
4
5
6 c a r = Car ( )
7
8
9 p r i n t ( c a r . model )
10 print ( car . color )
Listing 8.1: Simple Python Class
76
This example don’t illustrate the good things with classes so we will create some
more examples.
[End of Example]
[End of Example]
77
12 c a r 2 = Car ( ” Volvo ” , ” Blue ” )
13
14 p r i n t ( c a r 2 . model )
15 print ( car2 . c o l o r )
Listing 8.3: Python Class Constructor Example
As you see from the code we have now defined a Class ”Car” that has 2 Class
variables called ”model” and ”color”, and in addition we have defined a Func-
tion (or Method) called ”displayCar()”.
Its normal to use the term ”Method” for Functions that are defined within a
Class.
You declare class methods like normal functions with the exception that the
first argument to each method is self.
To create instances of a class, you call the class using class name and pass in
whatever arguments its init () method accepts.
For example:
78
1 c a r 1 = Car ( ” T e s l a ” , ”Red” )
Listing 8.5: Import Class
[End of Example]
Then we create a Python Script (testCar.py) where we are using the Class:
1 # I m p o r t i n g t h e Car C l a s s
2 from Car im por t Car
3
4 # Lets s t a r t using the Class
5
6 c a r 1 = Car ( ” T e s l a ” , ”Red” )
7
8 car1 . displayCar ()
9
10
11 c a r 2 = Car ( ” Ford ” , ” Green ” )
12
13 p r i n t ( c a r 2 . model )
14 print ( car2 . c o l o r )
15
16
17 c a r 3 = Car ( ” Volvo ” , ” Blue ” )
18
19 p r i n t ( c a r 3 . model )
20 print ( car3 . c o l o r )
21
22 c a r 3 . c o l o r=” Black ”
23
24 car3 . displayCar ()
Listing 8.7: Script that is using the Class
[language=Python]
[End of Example]
79
8.3 Exercises
Below you find different self-paced Exercises that you should go through and
solve on your own. The only way to learn Python is to do lots of Exercises!
[End of Exercise]
80
Chapter 9
As your program gets longer, you may want to split it into several files for easier
maintenance. You may also want to use a handy function that you have written
in several programs without copying its definition into each program.
To support this, Python has a way to put definitions in a file and use them
in a script or in an interactive instance of the interpreter (the Python Console
window).
Python allows you to split your program into modules that can be reused in
other Python programs. It comes with a large collection of standard modules
that you can use as the basis of your programs as we have seen examples of in
previous chapters. Not it is time to make your own modules from scratch.
Previously you have been using different modules, libraries or packages created
by the Python organization or by others. Here you will create your own modules
from scratch.
81
The formula for converting from Fahrenheit to Celsius is:
9.2 Exercises
Below you find different self-paced Exercises that you should go through and
solve on your own. The only way to learn Python is to do lots of Exercises!
Exercise 9.2.1. Create Python Module for converting between radians and
degrees
Since most of the trigonometric functions require that the angle is expressed in
radians, we will create our own functions in order to convert between radians
82
and degrees.
Create two functions that convert from radians to degrees (r2d(x)) and from
degrees to radians (d2r(x)) respectively.
Test the functions to make sure that they work as expected. You can choose to
make a new .py file to test these functions or you can use the Console window.
[End of Exercise]
83
Chapter 10
10.1 Introduction
Python has several functions for creating, reading, updating, and deleting files.
The key function for working with files in Python is the open() function.
• ”x” - Create - Creates the specified file, returns an error if the file exists
• ”w” - Write - Opens a file for writing, creates the file if it does not exist
• ”r” - Read - Default value. Opens a file for reading, error if the file does
not exist
• ”a” - Append - Opens a file for appending, creates the file if it does not
exist
In addition you can specify if the file should be handled as binary or text mode
• ”x” - Create - Creates the specified file, returns an error if the file exists
• ”w” - Write - Opens a file for writing, creates the file if it does not exist
• ”a” - Append - Opens a file for appending, creates the file if it does not
exist
84
To write to an Existing file, you must add a parameter to the open() function:
• ”w” - Write - Opens a file for writing, creates the file if it does not exist
• ”a” - Append - Opens a file for appending, creates the file if it does not
exist
1 f = open ( ” m y f i l e . t x t ” , ”x” )
2
3 data = ” H e l l o World”
4
5 f . w r i t e ( data )
6
7 f . close ()
Listing 10.1: Write Data to a File
[End of Example]
• ”r” - Read - Default value. Opens a file for reading, error if the file does
not exist
1 f = open ( ” m y f i l e . t x t ” , ” r ” )
2
3 data = f . r e a d ( )
4
5 p r i n t ( data )
6
7 f . close ()
Listing 10.2: Read Data from a File
[End of Example]
85
1 data = [ 1 . 6 , 3 . 4 , 5 . 5 , 9 . 4 ]
2
3 f = open ( ” m y f i l e . t x t ” , ”x” )
4
5 f o r v a l u e i n data :
6 record = s t r ( value )
7 f . write ( record )
8 f . w r i t e ( ” \n” )
9
10 f . close ()
Listing 10.3: Logging Data to File
[End of Example]
1 f = open ( ” m y f i l e . t x t ” , ” r ” )
2
3 for record in f :
4 r e c o r d = r e c o r d . r e p l a c e ( ” \n” , ” ” )
5 print ( record )
6
7 f . close ()
Listing 10.4: Read Logged Data from File
[End of Example]
10.6 Exercises
Below you find different self-paced Exercises that you should go through and
solve on your own. The only way to learn Python is to do lots of Exercises!
86
[End of Exercise]
You can use the Random Generator in Python. An example of how to use the
Random Generator is shown below:
1 im po rt random
2 f o r x in range (10) :
3 data = random . r a n d i n t ( 1 , 3 1 )
4 p r i n t ( data )
Listing 10.5: Read Data from a File
Make sure to log both the time and the temperature value
You should also plot the data you read from the File.
[End of Exercise]
87
Table 10.1: Logged Data
Time Value
1 22
2 25
3 28
... ...
88
Chapter 11
11.1.2 Exceptions
Even if a statement or expression is syntactically correct, it may cause an error
when an attempt is made to execute it. Errors detected during execution are
called exceptions and are not unconditionally fatal: you will soon learn how to
handle them in Python programs. Most exceptions are not handled by programs,
however, and result in error messages as shown here:
1 >>> 10 ∗ ( 1 / 0 )
2 Traceback ( most r e c e n t c a l l last ) :
3
4 F i l e ”<ipython −i n p u t −2−0b 2 8 0 f 3 6 8 3 5 c >” , l i n e 1 , i n <module>
5 10 ∗ ( 1 / 0 )
6
7 Z e r o D i v i s i o n E r r o r : d i v i s i o n by z e r o
or:
1 >>> ’ 2 ’ + 2
2 Traceback ( most r e c e n t c a l l last ) :
3
89
4 F i l e ”<ipython −i n p u t −3−d2b23a1db757>” , l i n e 1 , i n <module>
5 ’2 ’ + 2
6
7 TypeError : must be s t r , not i n t
• The try block lets you test a block of code for errors.
When an error occurs, or exception as we call it, Python will normally stop and
generate an error message.
1 try :
2 10 ∗ ( 1 / 0 )
3 except :
4 p r i n t ( ”The c a l c u l a t i o n f a i l e d ” )
or:
1 try :
2 print (x)
3 except :
4 p r i n t ( ”x i s not d e f i n e d ” )
The finally block, if specified, will be executed regardless if the try block raises
an error or not.
Example:
90
1 x=2
2
3 try :
4 print (x)
5 e x c e p t NameError :
6 p r i n t ( ”x i s not d e f i n e d ” )
7 except :
8 p r i n t ( ” Something i s wrong ” )
9 finally :
10 p r i n t ( ”The Program i s f i n i s h e d ” )
In general you should use try - except - finally when you try to open a File, read
or write to Files, connect to a Database, etc.
Example:
1 try :
2 f = open ( ” m y f i l e . t x t ” )
3 f . w r i t e ( ”Lorum Ipsum ” )
4 except :
5 p r i n t ( ” Something went wrong when w r i t i n g t o t h e f i l e ” )
6 finally :
7 f . close ()
91
Chapter 12
A package contains all the files you need for a module. Modules are Python
code libraries you can include in your project.
Since Python is open source you can find thousands of Python Packages that
you can install and use in your Python programs.
You can use a Python Distribution like Anaconda Distribution (or similar
Python Distributions) to download and install many common Python Pack-
ages as mentioned previously.
If you do not have PIP installed, you can download and install it from this page:
https://pypi.org/project/pip/
PIP is typically used from the Command Prompt (Windows) or Terminal win-
dow (macOS).
1 p i p i n s t a l l packagename
Some Python Editors also have a graphical way of installing Python Packages,
like, e.g., Visual Studio.
92
Part IV
Raspberry Pi Python
Programming
93
Chapter 13
...
94
Chapter 14
...
95
Chapter 15
Raspberry Pi and
ThingSpeak
...
96
Chapter 16
...
97
Chapter 17
Raspberry Pi and
CircuitPython
...
98
Chapter 18
...
99
Chapter 19
Raspberry Pi with
MATLAB
...
100
Part V
Resources
101
Chapter 20
Python Resources
SciPy Library:
https://www.scipy.org
Matplotlib Library:
https://matplotlib.org
102
Visual studio Code:
https://code.visualstudio.com
Visual Studio:
https://visualstudio.microsoft.com
PyCharm:
https://www.jetbrains.com/pycharm/
Wing:
https://wingware.com
Jupyter Notebook:
http://jupyter.org
103
Bibliography
104
Internet of Things with Python