Raspberry Pi Programmieren und Netzwerke bauen Der Raspberry Pi ist ein Mini-Computer, der ursprünglich für Schüler und Studenten gedacht ist, aus diesem Grund sehr günstig ist und nur ca. 35 Euro kostet. Dieser Mini-Computer ermöglicht den Erstkontakt zu Linux, Shell Scripting, Programmieren, Physical Computing und kann auch im Produktiveinsatz verwendet werden. Ganz nebenbei kann man mit dem Raspberry Pi viel über die grundsätzliche Funktionsweise von Computern lernen. 1 Raspberry Pi PN.key - 21. März 2016 Patrick Schnabel • Elektronik-Kompendium.de • Fachbuchautor für Elektronik und IT • Dozent an der DHBW in Stuttgart • Themenschwerpunkte: Einführung in die IT und Kommunikationssysteme 2 Patrick Schnabel ist ausgebildeter Kommunikationselektroniker und war mehrere Jahre bei Bosch, Avaya und der LBBW als Servicetechniker im Bereich Telekommunikation und Netze tätig. Heute ist er Fachbuchautor für Elektronik und Informationstechnik. Er betreibt dazu auch die Webseite ElektronikKompendium.de für Azubis und Studenten, die sich in einer technischen Ausbildung befinden. Parallel dazu ist er als Dozent an der Dualen Hochschule Baden-Württemberg in Stuttgart für die Fachrichtung Wirtschaftsinformatik tätig. Er hält dort die Vorlesungen "Einführung Rechnersysteme" und "Kommunikationssysteme". 2 Raspberry Pi PN.key - 21. März 2016 www.elektronik-kompendium.de Elektronik-Kompendium.de ist die Webseite über Elektronik, Computertechnik, Kommunikationstechnik und Netzwerktechnik. 3 Raspberry Pi PN.key - 21. März 2016 Bücher Elektronik-Fibel Kommunikationstechnik-Fibel Computertechnik-Fibel Netzwerktechnik-Fibel 4 Raspberry Pi PN.key - 21. März 2016 Screencast Aufzeichnung von Folien und die dazugehörigen Ausführungen. Video auf YouTube. 5 Raspberry Pi PN.key - 21. März 2016 www.patrick-schnabel.de 6 Folien als PDF-Datei und Video zu finden auf www.patrick-schnabel.de. 6 Raspberry Pi PN.key - 21. März 2016 Der Raspberry Pi wurde ursprünglich für Bildungszwecke entwickelt, um ihn an Schulen und Universitäten einzusetzen und den Unterricht und das Studium interessanter zu gestalten. Leider befindet sich der praktische Einsatz des Raspberry Pi oder eines vergleichbaren Einplatinen-Computers in Deutschland, Österreich und der Schweiz noch in den Kinderschuhen. Hört man sich zu dem Thema um, findet man nur wenige Beispiele, die den Einsatz des Raspberry Pi im Schulunterricht, in der Ausbildung oder im Studium zeigen. 7 Raspberry Pi PN.key - 21. März 2016 Programmieren mit dem Raspberry Pi 8 8 Raspberry Pi PN.key - 21. März 2016 … 9 9 Raspberry Pi PN.key - 21. März 2016 Scratch ist eine erstmals 2007 veröffentlichte erziehungsorientierte visuelle Programmiersprache für Kinder und Jugendliche inklusive ihrer Entwicklungsumgebung und der eng verknüpften Online-Community-Plattform. hr Ziel ist es, Neueinsteiger − besonders Kinder und Jugendliche − mit den Grundkonzepten der Computerprogrammierung vertraut zu machen. 10 Raspberry Pi PN.key - 21. März 2016 Python 11 Python ist eine universelle Programmiersprache. Der Fokus liegt auf der Programmlesbarkeit. Python gilt als einfach zu erlernende Sprache, da sie über eine klare und übersichtliche Syntax verfügt. Python ist das moderne „Basic“ mit mehr Potential. 11 Raspberry Pi PN.key - 21. März 2016 Grundlagen: Python • Unterscheidung Python Version 2.7 und 3.x • ist auf Raspbian vorinstalliert (Raspberry Pi) • Verzicht auf geschweifte Klammern • Programmstruktur durch Einrückungen 12 12 Raspberry Pi PN.key - 21. März 2016 Unsere Entwicklungsumgebung IPython Notebook https://try.jupyter.org/ 13 IPython Notebook Web-Dienst zum Editieren und Ausführen von Python-Code im Browser. Python ohne Konsole im Browser ausprobieren: https://try.jupyter.org/ 13 Raspberry Pi PN.key - 21. März 2016 Rechts oben auf „New“ klicken und „Python 3“ auswählen. 14 Raspberry Pi PN.key - 21. März 2016 Hallo-Welt-Einzeiler 15 Raspberry Pi PN.key - 21. März 2016 Mathematische Probleme lösen 16 Mathematische Probleme mit Python lösen Nicht alle mathematischen Probleme und Aufgaben lassen sich schriftlich oder per Taschenrechner lösen. Manchmal kann man sich mit einer Programmiersprache behelfen. Programmieren heisst Abläufe (Aufgaben, Prozesse) festzulegen, die anschliessend ein Computer ausführen kann. 16 Raspberry Pi PN.key - 21. März 2016 Aufgabe 1: Zwei mal zwei plus zwei durch zwei minus zwei 17 17 Raspberry Pi PN.key - 21. März 2016 Wie viel ist 2 x 2 + 2 : 2 - 2? Rechenregel beachten: Es gilt Punkt- vor Strichrechnung! Unter Beachtung der Zwischenergebnisse: 4+1-2=3 18 Raspberry Pi PN.key - 21. März 2016 print ("Ergebnis:", int(2 * 2 + 2 / 2 - 2) ) Kennt Python die Rechenregeln richtig? Was bewirkt „int()“? Quellcode für Datei: #!/usr/bin/python3 print ("Ergebnis:", int(2 * 2 + 2 / 2 - 2) ) 19 Raspberry Pi PN.key - 21. März 2016 20 Raspberry Pi PN.key - 21. März 2016 21 Raspberry Pi PN.key - 21. März 2016 Aufgabe 2: Summe einer Zahlenfolge ausrechnen Zum Beispiel von 1 bis 100 22 1 + 2 + 3 + 4 + … + 100 = ? 22 Raspberry Pi PN.key - 21. März 2016 summe=0 for i in range (1,101): summe = summe + i print ("Die Summe lautet", summe) Einrückung von 4 Leerzeichen beachten! Quellcode für Datei: #!/usr/bin/python3 summe=0 for i in range (1,101): summe = summe + i print ("Die Summe lautet", summe) 23 Raspberry Pi PN.key - 21. März 2016 24 Raspberry Pi PN.key - 21. März 2016 Aufgabe 3: Fakultäten von 1! bis 10! ausrechnen 25 1 * 2 * 3 * 4 * … * 10 = ? 25 Raspberry Pi PN.key - 21. März 2016 fakultaet=1 for i in range (1,11): fakultaet = fakultaet * i print ("Die Fakultät von", i, "lautet", fakultaet) Beachten Sie bitte, dass „print“ durch die Einrückung noch in die for-Schleife hineingehört. Quellcode für Datei: #!/usr/bin/python3 fakultaet=1 for i in range (1,11): fakultaet = fakultaet * i print ("Die Fakultät von", i, "lautet", fakultaet) 26 Raspberry Pi PN.key - 21. März 2016 27 Raspberry Pi PN.key - 21. März 2016 Haben Sie noch eine Idee? 28 Raspberry Pi PN.key - 21. März 2016 29 Raspberry Pi PN.key - 21. März 2016 Netzwerke bauen mit dem Raspberry Pi 30 30 Raspberry Pi PN.key - 21. März 2016 31 31 Raspberry Pi PN.key - 21. März 2016 OpenWRT Alternative Firmware für Internet-Router auf Basis von Linux und Open-Source-Treibern 32 OpenWRT gibt es auch für den Raspberry Pi. 32 Raspberry Pi PN.key - 21. März 2016 33 Raspberry Pi PN.key - 21. März 2016 Netzwerk bauen • Netzwerk-Konfiguration • Network Discovery • Remote-Service • Webserver • Datei-Server (Samba) • WLAN Access Point 34 34 Raspberry Pi PN.key - 21. März 2016 Netzwerk-Konfiguration ermitteln 35 Raspberry Pi PN.key - 21. März 2016 Netzwerk-Konfiguration • IP-Adresse • Subnetzmaske • Standard-Gateway • DNS-Server 36 Damit ein Netzwerk-Host in einem TCP/IP-Netzwerk teilnehmen kann benötigt er zumindest eine IP-Adresse. Diese sollte zumindest im lokalen Netzwerk einmalig sein (private IPv4-Adresse). Damit eine Kommunikation ins öffentliche Netzwerk möglich ist, bedarf es zusätzlich der IPv4-Adresse des Standard-Gateways (Default-Gateway). Damit die Auflösung von Domain- oder Computer-Namen möglich ist, muss auch noch die IPv4-Adresse eines DNS-Servers. Erst mit diesen vier Angaben ist eine IPv4-Konfiguration vollständig. 36 Raspberry Pi PN.key - 21. März 2016 IPv4-Konfiguration ermitteln ip a ip r cat /etc/resolv.conf Bitte diese Kommandos auf der Kommandozeile zum Ermitteln der aktuellen IPv4Konfiguration verwenden. Alternativ: ifconfig route -n 37 Raspberry Pi PN.key - 21. März 2016 ip a 1: lo: <LOOPBACK,UP,LOWER_UP> … link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> … link/ether b8:27:eb:a0:9c:57 brd ff:ff:ff:ff:ff:ff inet 192.168.168.7/24 brd 192.168.168.255 scope global eth0 valid_lft forever preferred_lft forever inet6 2a01:1e8:e100:86be::7/64 scope global valid_lft forever preferred_lft forever inet6 fe80::ba27:ebff:fea0:9c57/64 scope link valid_lft forever preferred_lft forever 38 Raspberry Pi PN.key - 21. März 2016 ip r default via 192.168.168.8 dev eth0 192.168.168.0/24 dev eth0 proto kernel 39 … Raspberry Pi PN.key - 21. März 2016 cat /etc/resolv.conf # Dynamic resolv.conf(5) … # DO NOT EDIT THIS FILE BY HAND # YOUR CHANGES WILL BE OVERWRITTEN nameserver 192.168.168.8 40 Raspberry Pi PN.key - 21. März 2016 Network Discovery Alle genutzte IPv4-Adressen im gleichen Netz ermitteln. 41 Alle genutzte IPv4-Adressen im gleichen Netz ermitteln. Es geht um die Fragestellung, „Welche Geräte sind im lokalen Netzwerk aktiv?“. nmap oder arp-scan 41 Raspberry Pi PN.key - 21. März 2016 sudo apt-get install nmap sudo nmap -sP 192.168.1.0/24 -oG - sudo apt-get install arp-scan sudo arp-scan -vN -I eth0 192.168.1.0/24 sudo arp-scan -vN -I eth0 192.168.1.0/24 | grep „b8:27:eb“ 42 Um sich einen Überblick über alle im lokalen Netzwerk befindlichen IP-Hosts zu machen sollen Sie Tools ausfindig machen, mit denen Sie alle verwendeten IPAdressen im lokalen Netzwerk herausfinden können. 42 Raspberry Pi PN.key - 21. März 2016 Network Discovery mit „ip“ ip -4 n ip -6 n 43 „ip“ ist leider nicht sehr gründlich. 43 Raspberry Pi PN.key - 21. März 2016 Remote-Service Zugriff aus der Ferne auf einen anderen Computer 44 Mehrere Lösungen: SSH (Konsole, Kommandozeile) VNC (Sitzung/Session) X11VNC (Display-Sharing) RDP (Windows) 44 Raspberry Pi PN.key - 21. März 2016 Remote-Service mit SSH • Windows: PuTTY • Linux: Kommandozeile • Mac OS: Kommandozeile 45 45 Raspberry Pi PN.key - 21. März 2016 ssh [email protected] ssh [email protected] Standard-Passwort: raspberry Achtung: Passwort muss „blind“ eingegeben werden. 46 Achtung: Passwort muss „blind“ eingegeben werden. „Blind“ bedeutet, dass die Tastatur-Eingabe nicht sichtbar ist. 46 Raspberry Pi PN.key - 21. März 2016 Webserver 47 47 Raspberry Pi PN.key - 21. März 2016 Auf der Kommandozeile des Raspberry Pi eingeben: sudo apt-get install lighttpd sudo service lighttpd status Im Browser des Clients eingeben: http://raspberrypi.local/ http://{IP-Adresse_des_Raspberry_Pi}/ 48 Raspberry Pi PN.key - 21. März 2016 Vielen Dank 49 Raspberry Pi PN.key - 21. März 2016 Kontakt • E-Mail: [email protected] • Twitter: @patrickschnabel • Noch mehr Ideen und Informationen: www.elektronik-kompendium.de • Screencast + Folien + Notizen: www.patrick-schnabel.de 50 Raspberry Pi PN.key - 21. März 2016