Line: 1 to 1 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() Slide 1: Sensors for IoT devices … or A virtual world reflecting the real world | |||||||||||
Line: 240 to 240 | |||||||||||
![]() | |||||||||||
Changed: | |||||||||||
< < | The same thing as a script in idle | ||||||||||
> > | The same thing as a script in idle | ||||||||||
Here you see the 2 idle windows. | |||||||||||
Line: 289 to 289 | |||||||||||
![]() | |||||||||||
Changed: | |||||||||||
< < | As you can see, there are no braces around the conditional block but it is indented # indicates an comment In addition to the if statement above we have elif and else | ||||||||||
> > | As you can see, there are no braces around the conditional block but it is indented # indicates an comment In addition to the if statement above we have elif and else | ||||||||||
while loop | |||||||||||
Line: 300 to 304 | |||||||||||
![]() | |||||||||||
Changed: | |||||||||||
< < | This program uses multiple assignments a,b are assigned in the same line Again you can see that the block starts with “:” and is indented. | ||||||||||
> > | This program uses multiple assignments a,b are assigned in the same line Again you can see that the block starts with “:” and is indented. | ||||||||||
Lists | |||||||||||
Line: 382 to 388 | |||||||||||
![]() | |||||||||||
Added: | |||||||||||
> > | Calling functions from a ModuleThis is how we call a function (method) from a module.![]() ![]() Executing ModulesOften 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 Command Line ArgumentsPrograms can be called with arguments. When calling an editor you my give the name of the file to be edited as an argument. There may also be options that are passed as arguments, e.g. ls -ls $HOME These arguments can be read (as strings) in Python:![]() maxFib=int(argv[1])
Running the module with args![]() FilesIn order to read of write a file it must first be opened: f = open(‘filename’,’w’) After which you can write the file. In read mode, the ‘w’ must be replaced by ‘r’![]() ClassesIn object oriented programming languages you can define classes encapsulating data and functions (methods in the oo jargon) that act on these data. You can create sub-classes having most of the properties of the base class but provide more data and/or methods or some of the methods are modified (overridden). This is called inheritance. Python implements these features. While in many object oriented languages we distinguish between public and private data, in Python all data are public. A convention is to precede a variable name with an ‘_’ if it is not intended for use external to the class.---+++ Creating ClassesThe syntax for creation of classes is similar to functions![]() i is an instance variable f is a method 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__ Classes and the SensorsAs classes describe real world objects they are particularly using for describing our sensors Connection details, calibration parameters etc. can be described in the instance variables Actions of the sensors like triggering, readout etc. are implemented in methods.Instance initializationThere is a special method named _ _init__ which is called when the instance of a class is created. This method allows to
A Class Implementation realizing a simple Calculator![]() A Sensor Demo![]() The cobbler PinOut![]() The SensorsThis is the idea: The hardware includes:
The sensors in the virtual worldWe see the distance sensor in front and the color sensor with its LEDs switched off, in the backThe (white) paper sheet is in frontof the distance sensor The red ball is the center of the coordinate system ![]() | ||||||||||
%SLIDESHOWEND%
-- ![]() | |||||||||||
Line: 426 to 591 | |||||||||||
| |||||||||||
Added: | |||||||||||
> > |
|
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
![]() Slide 1: Sensors for IoT devices … or A virtual world reflecting the real world | ||||||||
Line: 74 to 74 | ||||||||
https://www.raspberrypi.org![]() | ||||||||
Added: | ||||||||
> > | The TWiki serverAll 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/viewThe TWiki server (2)![]() | |||||||
Specs and priceThe price (35 US $) of this board is a bit higher but still much less than the m6800 development board. | ||||||||
Line: 404 to 425 | ||||||||
| ||||||||
Added: | ||||||||
> > |
|
Line: 1 to 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Added: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> > |
![]() Slide 1: Sensors for IoT devices … or A virtual world reflecting the real worldA 2 day tutorial with hands-on exercisesheld during AFNOG 2018 in Dakar, Sénégal
Slide 2: The InternetWhen the Internet was invented it was used for communications between humans Typical applications where:
Slide 3: MicroprocessorsWhen I started to work on microprocessors in the early 1980’s these were very simple devices containing just a single CPU and address and data lines + a few control lines to interface to external memory and I/O interfaces, typically : a serial and a parallel port.![]() The price for the chip was 176 US $. The development board was sold for 300 US $. You got 256 bytes of RAM, 2kBytes of EPROM and the serial and parallel port. Programming was done in assembly language or even straight machine code. No Internet! Slide 4: An IoT device todayThis year IO bought this micro-controller:![]() Slide 5: The specs![]() Slide 6: The Raspberry Pi… and this is what we are going to use:![]() Slide 7: Official source of informationThe Raspberry Pi has been sold at more than 8 million pieces! The user community is huge and is now increased by another 15 users! An enormous wealth of information on all sorts of subjects using the Raspberry Pi can be found on the WEB. The official site is https://www.raspberrypi.org![]() Slide 8: Specs and priceThe price (35 US $) of this board is a bit higher but still much less than the m6800 development board. And this is what you get:![]() Slide 9: Interfaces and softwareIn addition to the GPIO (General Purpose I/O) you get
Slide 10: ProgrammingSince we have a full Linux system programming can be done
Slide 11: Accessing the RPI remotelyOf course we can use the interfaces on the Raspberry Pi to connect a screen, keyboard and mouse and use it in stand-alone mode but we can also make use of the PC resources and access it remotely There are several ways to access the RPI remotely: Using the VNC server on the Pi you can access it with a remote desktop from the PC The secure shell (ssh) allows you to get a remote terminal in the Pi With scp you can copy files back and forth between the Pi and the PC With nfs you can mount part of the Pi file system into the PC file system tree and access the PI SD card as if it was a local PC disk.Slide 12: The remote DesktopOn the remote desktop the screen is replaced by the computer screen of the device connected to the RPI and the keyboard by this computer's keyboard. The connected computer acts like a graphics terminal for the RPI. You see on the computer exactly what you would see on a directly connected screen.![]() Slide 13: sshIn the case of ssh you have a single terminal window that is connected to a shell on the Pi. The command is: ssh userOnPi@piIPaddress Where piIPaddress can be the Pi’s IP address or host name. If you specify the -X option you can run X-11 based programs where the X protocol is run over the ssh connection. For Windows computers you need PuTTY in conjunction with an X server (e.g. Xming) to connect to the RPiSlide 14: ssh(2)Here you see a screen dump from the PC with a remote terminal that started an emacs session on the Pi![]() Slide 15: The CobblerAs we have seen, the Raspberry Pi has a 40 pin connector onto which many interface signals are connected. We use a flat cable and a “cobbler” to bring these signals onto a bread board where we can build our own electronic circuits for acquisition or control by the Rpi. Libraries in C/C++, Java and Python are available easing software access to these signals.![]() Slide 16: Programming the RPiAs already mentioned, the Raspberry Pi can be programmed in a large number of programming languages. One of the most fashionable languages is Python. Python is an interpreted language and code can be entered into a Python interpreter which executes it immediately. Like this, Python can e.g. be used as a calculator. It is however also possible to write whole programs (scripts) which the interpreter executes Want to learn Python? Try the Python tutorial![]() Slide 17: Running the Interpreter![]() The quit() function exits the interpreter Slide 18: idleInstead of running a standard editor like vi or emacs you may want to run an Integrated Development Environment (IDE) created specifically for Python instead. Try idle![]() The same thing as a script in idleHere you see the 2 idle windows. The top one contains the editor, the second the Python shell![]() ![]() Slide 19: Running the ProgramThe script can berun from the Linux command shell with: python scriptName or we can make it executable and run it like we would run any compiled C program or any bash script:![]() Slide 20: Very basic Introduction to PythonAssignments look pretty much the same as assignments in other programming languages. However, in Python you do not need to declare the variables. The interpreter finds the right type by itself. Here an example:![]() Slide 21: Strings in PythonHere some string examples:![]() Slide 22: ConditionsWe have seen conditions already in the very first example![]() # indicates an comment In addition to the if statement above we have elif and else Slide 23: while loopLike in other programming languages we have different types of loops. Here is the example of a while loop which calculates the Fibonnaci series:![]() Again you can see that the block starts with “:” and is indented. Slide 24: ListsPython knows a number of compound data structure the most versatile of which is the list Lists may contain different data types but usually all members of lists have the same type. Lists have similar properties as strings:
![]() Slide 25: More data structuresLists provide many different functions (methods) to operate on them: Append, extend, remove, pop, index, count, sort … Have a look at the tutorial for details The are also further complex data structures which we don’t have the time to go into:
Slide 26: For loopsLists are used in for loops. In Python the iterator can be of any type. Using the range function you can create the same type of for loops we know from C. Keywords like continue and break have the same meaning. pass does nothing and is used only where a statement is syntactically needed![]() ![]() Slide 27: Function DefinitionLike in other high level languages you can create functions and call them later in your program![]() Slide 28: ModulesWe may want to keep function definitions in separate files and use these definitions in several main programs. In our example of the Fibonacci numbers we can save the definitions in a file called fibo.py In order to use the definitions we must import them with import fibo In order to call the functions we have to all the module name: fibo.fib(20) or if we we want to import a single function: from fibo import fib fib(20) The module name is found in the variable __name__Slide 29: Module Example![]() ![]() Comments
|