End Presentation


TWiki Slide Show
Next
Introduction to Internet of Things (IoT)

Session 1: Introduction to IoT and Python

Isaac Armah-Mensah

University of Cape Coast, Ghana

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 1 of 45





















TWiki Slide Show
Next
Introduction of Lecturers
  1. Uli Raich -- Formally CERN, Geneva, Switzerland
  2. Isaac Armah-Mensah -- University of Cape Coast Ghana

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 2 of 45





















TWiki Slide Show
Next
The TWiki server
All information about this tutorial is available on a TWiki server.

TWiki uses the same documentation format as Wikipedia.

This makes it very simple for the lecturer to provide on-line documentation,

which can be extended by students.

This is our Twiki server:

https://afnog.iotworkshop.africa/do/view

Other pages for class resources

Micropython Demos:

https://github.com/uraich/MicroPython_IoTDemos and
https://github.com/uraich/MicropythonCayenneMQTTClient

C++ version:
https://github.com/uraich/C-IoTDemos

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 3 of 45





















TWiki Slide Show
Next
Workshop Page
workshop.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 4 of 45





















TWiki Slide Show
Next
What is the “I” in IoT ?
The “I” stands for Internet. This means:

We need a processor (IoT node) that can connect to the Internet.

It must be powerful enough to run Internet protocols and

it needs an interface to the Internet.

  • Ethernet interface

  • WiFi interface

  • GSM
  • … connection to a gateway with access to the internet

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 5 of 45





















TWiki Slide Show
Next
Standard way to access the Internet
Usually the Internet is used by humans

Typical applications are

  • WEB browsing

  • Email

  • Social media

  • Telephone and chats
Human to machine or human to human communication.

!IoT: “Things” communicate also without human intervention.

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 6 of 45





















TWiki Slide Show
Next
Things, Sensors, Actuators
  • Coffee machines, dish washer, washing machine, …
  • Burglar alarm system
  • Intelligent farming
  • Weather station
  • Scientific measurements
  • Industrial factory control
  • Car electronics, ignition system, ABS,…
  • You name it!
The processor reads the state of “things” though sensors and controls them through actuators.

Our processor needs interfaces to these sensors and actuators.

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 7 of 45





















TWiki Slide Show
Next
The IoT system
We need a system with a number of processors

that read out sensors and/or control actuators

These processors communicate with each other

over the Internet with or without human intervention.

Design decisions:

  • Which processors?
  • Which communication protocol
  • Which GUI to be able to see what is going on?
  • Which programming language?

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 8 of 45





















TWiki Slide Show
Next
The Raspberry Pi
The Raspberry Pi is a small computer powerful enough to run a full blown Linux operating system:

A quad core 1.2 GHz Broadcom 64 bit ARM CPU

  • 1 Gbytes of Ram
  • Ethernet and wireless networks
  • 4 USB2 ports
  • Micro SD connector
  • 40 pin extended GPIO connector with
  • GPIO pins
  • SPI and I2C bus interface
  • Cost ~ 80-100 US $
  • No ADC
rpiBoard.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 9 of 45





















TWiki Slide Show
Next
Arduino + WiFi shield
arduinoSpecs.png
mega.png wifishield.png
Total cost: ~12-15 US $

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 10 of 45





















TWiki Slide Show
Next
The ideal IoT solution?
ESP8266 or ESP32 processor board

ESP8266 specs:

  • WiFi on chip
  • 10 bit ADC on chip
  • 80 kByte RAM
  • 4 Mbyte flash
  • Can run a Micropython interpreter
  • Can be programmed through the Arduino IDE
  • SPI, I2C interfaces
  • 11 GPIO pins
  • Many sensor and actuator boards
  • Can be plugged together without bread board or soldering
  • Cost of processor board: ~ 2.5 US$

ESP32 is even more powerful
Cost: ~ 4.5 US$
shields.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 11 of 45





















TWiki Slide Show
Next
Communication
MQTT (Message Queuing Telemetry Transport: a publish-subscribe based

Message protocol running of top of TCP.

A processor can subscribe to messages of a certain “topic” and/or it can push its

results on a certain topic

mqttPostOfffice.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 12 of 45





















TWiki Slide Show
Next
Programming language
  • Only the data recovered from the communication protocol is seen
  • Any programming language will do
  • Cayenne/MQTT libraries are available for

    • C, C++

    • Python

    • Java

    • Java Script

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 13 of 45





















TWiki Slide Show
Next

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 14 of 45





















TWiki Slide Show
Next
Introduction to Python
The python programming language is a high level programming language that is very interactive and object oriented.

Python is an interpreted language which means that the statements which make up the python program is processed at run-time but not compiled first.

Python also supports object oriented programming style which employs the use of encapsulating codes within objects.

What can python be used for?

  • Used to create web applications.

  • Used to connect to database systems.

  • It can be used to perform complex mathematics

  • It can be used in data analysis.

If you want to learn Python, Try the Python tutorial!

For Python beginners: https://docs.python.org/3/tutorial/index.html

and for everybody the Python docs: https://docs.python.org/3/index.html

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 15 of 45





















TWiki Slide Show
Next
Writing Python Programs
Python is a programming language that lets you work more quickly and integrate your systems more effectively.
  • Python is powerful... and fast;

  • plays well with others;

  • runs everywhere;

  • is friendly & easy to learn;

  • is Open.

Python programs can either be written using any standard editor like nano, emacs as a script or can be written from the python command line.

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 16 of 45





















TWiki Slide Show
Next
Using the Command Line (Interactive mode)
Simply type python in your terminal and press the enter key to start the interactive python mode.

Type print(“Hello world”). Hit enter and it prints Hello world on the screen.

commandline.png

To exit from the interactive mode, type quit().

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 17 of 45





















TWiki Slide Show
Next
Using the script mode
Using the interactive mode doesn’t keep the statements of code we wrote permanently .

But in an ideal situation we might want to keep the codes for future reference.

Hence we make use of an editor like the nano, emacs, etc.

helloworld.png

helloworld2.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 18 of 45





















TWiki Slide Show
Next
Using Thonny
Instead of running a standard editor like nano or emacs you may want to run

an Integrated Development Environment (IDE) created specifically for Python instead.

Thonny is Easy to get started. Thonny comes with Python 3.7 built in,
so just one simple installer is needed and you're ready to learn programming.

It is very suitable for beginners and programming micro-controllers

For basic description of Thonny check https://thonny.org/ and https://realpython.com/python-thonny/

Lets try thonny

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 19 of 45





















TWiki Slide Show
Next
Thonny Python Shell and Editor
Here you see the 2 thonny windows.

The top one contains the editor, the second the Python shell

thonny.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 20 of 45





















TWiki Slide Show
Next
Running a python script
Script in python can be run from the Linux command shell with:

python3 scriptName

or we can make it executable and run it like we would run

any compiled C program or any bash script:

runpython.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 21 of 45





















TWiki Slide Show
Next
Command Line Arguments
Programs can be called with arguments.

Python has a module that helps users parse command-line options and arguments.

Many programs can be run to provide basic information about how they
should be run and it employs the use of command line arguments.

The Python sys module provides access to any command-line arguments via the sys.argv .

argscript.png

runcmdlineArg.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 22 of 45





















TWiki Slide Show
Next
Variables
Variables are just memory allocations for storing values.

Every variable created has a space in memory allocated for it.

Based on the data type of a variable, the interpreter allocates memory and
decides what can be stored in the reserved memory.

Python variables do not need explicit declaration to reserve memory space.

The declaration happens automatically when you assign a value to a variable.

The equal sign (=) is used to assign values to variables.

The operand to the left of the = operator is the name of the variable and
the operand to the right of the = operator is the value stored in the variable.

variables.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 23 of 45





















TWiki Slide Show
Next
Data Types in Python
Programs store data in one form or the other and must be of a certain type.

We discuss the following data types

  • Strings
  • Lists
  • Tuple
  • Dictionary
  • ByteArray

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 24 of 45





















TWiki Slide Show
Next
Strings in Python
Strings in Python are identified as a contiguous set of characters represented in the quotation marks.

Python accepts either pair of single, double quotes and triples(single/double) quotes.

string.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 25 of 45





















TWiki Slide Show
Next
List in Python
The list is a most versatile datatype available in Python.

It can be written as a list of comma-separated values (items) between square [] brackets.

A list need not be of the same type.

The values present in a list are indexed starting from zero.

The values stored in a list can be accessed using the slice operator ([ ] and [:]) with
indexes starting at 0 in the beginning of the list and working their way to end -1.

list.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 26 of 45





















TWiki Slide Show
Next
Tuple in Python
Tuples are much more like a list.

They are enclosed in brackets().

Their content cannot be changed unlike the list whose content can be changed.

Thus tuples are read only.

tuples.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 27 of 45





















TWiki Slide Show
Next
Dictionary in Python
A dictionary is a collection which is unordered, changeable and indexed.

In Python dictionaries are written with curly brackets, and they have keys and values.

Python's dictionaries allow you to connect pieces of related information.

Each piece of information in a dictionary is stored as a key-value pair.

When you provide a key, Python returns the value associated with that key.

You can loop through all the key-value pairs, all the keys, or all the values.

dict.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 28 of 45





















TWiki Slide Show
Next
Basic Operators
Python supports multiple operators including
  • arithmetic,
  • comparison,
  • assignment,
  • logical,
  • bitwise,
  • membership and
  • identity operators.

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 29 of 45





















TWiki Slide Show
Next
Arithmetic Operators:
The arithmetic operators supported by python is addition(+) , subtraction(-),
multiplication(* ), division(/), modulus(%), exponent(**)

operators.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 30 of 45





















TWiki Slide Show
Next
Python Bitwise Operators
Bitwise operator works on bits and performs bit-by-bit operation

binaryops.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 31 of 45





















TWiki Slide Show
Next
Conditional Statements
We have seen conditions already in the very first example

if.png

elif.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 32 of 45





















TWiki Slide Show
Next
Loops
A loop statement allows us to execute a statement or group of statements multiple times.

Python has two primitive loop commands:

  • while loop
  • for loops
loops.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 33 of 45





















TWiki Slide Show
Next
Functions
Programs are written in blocks of codes which are reusable but performs similar actions.

Python comes with builtin functions such as print().

Users can define and use their own functions in the code.

User defined functions begin with the keyword def followed by the name of the function.

A function may take parameters

function.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 34 of 45





















TWiki Slide Show
Next
Modules
Modules in a python are file with .py extensions containing

definitions of functions or variables.

We may want to keep function definitions in separate files

and use these definitions in several main programs.

In our example of the functions we can save the definitions in a file called function.py

In order to use the definitions we must import them with

import function

In order to call the functions we have to use the module name:

function.sum(20,30)

or if we we want to import a single function:

from function import sum

sum(20,30)

The module name is found in the variable name

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 35 of 45





















TWiki Slide Show
Next
Modules Examples
modules.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 36 of 45





















TWiki Slide Show
Next
Executing Modules
Often modules contain only function or class (see later) definitions

However it is also possible to include the function calls (the main routine)

into the module e.g. to demonstrate how the functions are to be used.

In this case the name of the module changes to __main__

We can therefore find out if the module is imported or executed by checking the name variable:

if __name __ == "__main__"

this executes the main code only if not imported into a main program

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 37 of 45





















TWiki Slide Show
Next
Packages
Packages simply group modules under one name.

Each package is a directory which MUST contain a specific file called

__init__.py indicating the directory is a package.

the __ init __.py file may be empty.

Package can be imported the same way as module.

Suppose we have several modules prime.py, fibonacci.py, factorial.py

in a directory, we may group them in a package called priff.

package.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 38 of 45





















TWiki Slide Show
Next
Class
Almost everything in Python is an object, with its properties and methods.

A class defines the behavior of an object and the kind of information an object can store.

The information in a class is stored in attributes, and functions that belong to a class are called methods.

A child class inherits the attributes and methods from its parent class.

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 39 of 45





















TWiki Slide Show
Next
Creating a Class
The syntax for creating a class is similar to functions

class.png

You may define a method with name __init__which is called when

the instance object of the class is created (in the above example: mc = MyClass)

The short description of the class can be found in the instance variable __Doc.__

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 40 of 45





















TWiki Slide Show
Next
Class Example
classes.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 41 of 45





















TWiki Slide Show
Next
Libraries
Python library is a collection of functions and methods that allows you to

perform many actions without writing your code

A very typical example of a python library is matplotlib for plotting.

mathplotlibCode.png

mathplotlib.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 42 of 45





















TWiki Slide Show
Next
Callbacks
Callbacks are very often used in Graphical User Interface (GUI systems)

GUI elements (widgets) are set up by the programmer and events are attached to them.

Typical examples are:

  • Selection of an intem in a list
  • Selection on a menu item
  • pushing a push button
  • checking a check box
The GUI systems runs in an endless loop and calls pre-registered functions

(the callback functions) when any of the above events happens. The event is then

acted upon and control is returned to the GUI main loop.

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 43 of 45





















TWiki Slide Show
Next
A Dummy GUI
Our dummy GUI allows to register a callback and if one is registered it will call it every 2 s.

dummyGUI.png

First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 44 of 45





















TWiki Slide Show
Next
The application running the dummy GUI
The application first registers the callback and then gives control to the dummy GUI main loop.

The main loop will wait for an event (2 s elapsed) and call the callback function when

the event has occurred.

callbackReg.png


First slide Previous Next Last slide
COPYRIGHT © 2024 by the contributing authors
Slide 45 of 45





















First slide Previous End Presentation






























-- Isaac Armah-Mensah - 2019-05-30

Comments


I Attachment History Action Size Date Who Comment
Texttxt List.py.txt r1 manage 0.8 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng argscript.png r1 manage 29.7 K 2019-06-09 - 03:30 IsaacArmahMensah  
Texttxt binaryOps.py.txt r1 manage 0.6 K 2019-06-15 - 01:22 IsaacArmahMensah  
PNGpng binaryops.png r1 manage 130.0 K 2019-06-10 - 20:46 IsaacArmahMensah  
PNGpng callback.png r1 manage 57.3 K 2019-06-11 - 01:24 IsaacArmahMensah  
Texttxt callback.py.txt r1 manage 0.2 K 2019-06-15 - 01:22 IsaacArmahMensah  
PNGpng callbackReg.png r1 manage 15.7 K 2019-06-14 - 12:13 UliRaich  
Texttxt callbacks.py.txt r1 manage 0.8 K 2019-06-15 - 01:22 IsaacArmahMensah  
PNGpng class.png r1 manage 45.2 K 2019-06-11 - 00:54 IsaacArmahMensah  
Texttxt class.py.txt r1 manage 0.2 K 2019-06-15 - 01:22 IsaacArmahMensah  
Texttxt class2.py.txt r1 manage 0.9 K 2019-06-15 - 01:22 IsaacArmahMensah  
PNGpng classes.png r1 manage 160.5 K 2019-06-11 - 00:54 IsaacArmahMensah  
Texttxt cmdLineArgs.py.txt r1 manage 0.2 K 2019-06-15 - 01:22 IsaacArmahMensah  
PNGpng commandline.png r2 r1 manage 61.2 K 2019-06-09 - 02:44 IsaacArmahMensah  
PNGpng commandlinearg.png r1 manage 15.5 K 2019-06-09 - 03:21 IsaacArmahMensah  
PNGpng dict.png r1 manage 193.5 K 2019-06-10 - 20:24 IsaacArmahMensah  
Texttxt dict.py.txt r1 manage 0.8 K 2019-06-15 - 01:22 IsaacArmahMensah  
PNGpng dummyGUI.png r1 manage 32.6 K 2019-06-14 - 12:13 UliRaich  
PNGpng elif.png r1 manage 131.0 K 2019-06-13 - 03:20 IsaacArmahMensah  
Texttxt elif.py.txt r1 manage 0.5 K 2019-06-15 - 01:22 IsaacArmahMensah  
Texttxt fibocallback.py.txt r1 manage 0.5 K 2019-06-15 - 01:22 IsaacArmahMensah  
PNGpng function.png r1 manage 160.2 K 2019-06-10 - 22:50 IsaacArmahMensah  
Texttxt function.py.txt r1 manage 0.6 K 2019-06-15 - 01:22 IsaacArmahMensah  
Texttxt helloWorld.py.txt r1 manage 0.1 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng helloworld.png r2 r1 manage 5.8 K 2019-06-09 - 02:24 IsaacArmahMensah  
PNGpng helloworld2.png r2 r1 manage 22.0 K 2019-06-09 - 02:25 IsaacArmahMensah  
PNGpng idle.png r1 manage 105.5 K 2019-06-09 - 02:57 IsaacArmahMensah  
PNGpng idlescript.png r1 manage 39.8 K 2019-06-09 - 03:03 IsaacArmahMensah  
PNGpng idleshell.png r1 manage 33.7 K 2019-06-09 - 03:03 IsaacArmahMensah  
PNGpng if.png r1 manage 45.2 K 2019-06-10 - 21:19 IsaacArmahMensah  
Texttxt if.py.txt r1 manage 0.1 K 2019-06-15 - 01:25 IsaacArmahMensah  
Texttxt inheritance.py.txt r1 manage 0.7 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng list.png r2 r1 manage 198.2 K 2019-06-10 - 20:28 IsaacArmahMensah  
PNGpng loops.png r1 manage 150.9 K 2019-06-10 - 21:19 IsaacArmahMensah  
PNGpng mathplotlib.png r1 manage 87.4 K 2019-06-14 - 12:04 UliRaich  
PNGpng mathplotlibCode.png r1 manage 30.0 K 2019-06-14 - 12:04 UliRaich  
PNGpng modules.png r1 manage 85.7 K 2019-06-10 - 22:50 IsaacArmahMensah  
Texttxt modules.py.txt r1 manage 0.3 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng operators.png r1 manage 113.4 K 2019-06-10 - 20:47 IsaacArmahMensah  
Texttxt operators.py.txt r1 manage 0.4 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng package.png r1 manage 33.5 K 2019-06-10 - 22:52 IsaacArmahMensah  
PNGpng plot.png r2 r1 manage 99.6 K 2019-06-13 - 03:20 IsaacArmahMensah  
PNGpng plot1.png r1 manage 99.6 K 2019-06-13 - 03:31 IsaacArmahMensah  
PNGpng plotgraph.png r1 manage 176.5 K 2019-06-13 - 03:20 IsaacArmahMensah  
Texttxt plotty.py.txt r1 manage 0.5 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng runcmdlineArg.png r1 manage 26.0 K 2019-06-09 - 03:30 IsaacArmahMensah  
PNGpng runpython.png r1 manage 102.6 K 2019-06-09 - 03:14 IsaacArmahMensah  
PNGpng string.png r3 r2 r1 manage 231.9 K 2019-06-10 - 20:28 IsaacArmahMensah  
Texttxt string.py.txt r1 manage 1.2 K 2019-06-15 - 01:25 IsaacArmahMensah  
Texttxt switch.py.txt r1 manage 0.3 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng thonny.png r1 manage 121.5 K 2019-06-09 - 21:02 IsaacArmahMensah  
PNGpng tuples.png r1 manage 170.7 K 2019-06-10 - 20:24 IsaacArmahMensah  
Texttxt tuples.py.txt r1 manage 0.6 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng variable.png r5 r4 r3 r2 r1 manage 201.9 K 2019-06-13 - 03:23 IsaacArmahMensah  
Texttxt variable.py.txt r1 manage 0.9 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng variables.png r1 manage 201.9 K 2019-06-13 - 03:24 IsaacArmahMensah  
Texttxt while.py.txt r1 manage 0.5 K 2019-06-15 - 01:25 IsaacArmahMensah  
PNGpng workshop.png r1 manage 250.4 K 2019-05-30 - 06:02 IsaacArmahMensah  

This topic: AFNOG > WebHome > AFNOGWorkshop2019 > AFNOG-2019Slides > WorkshopSlides > IntroductionToNopIoTAndPython
Topic revision: r11 - 2019-06-15 - IsaacArmahMensah
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback