raspberry

Raspberry Pi

1. De Raspberry Pi

De Raspberry Pi is ontwikkeld aan de Universiteit van Cambridge en is bedoeld voor educatieve doeleinden. De Raspberry Pi is er sinds 2012 en sindsdien zijn er verschillende modellen uitgebracht.https://images.computational.nl/galleries/raspberry/raspberry.jpg

De Raspberry Pi heeft een open hardware structuur die lijkt op de eerste IBM-computers.

De Pi is een volwaardige computer en is uitgerust met diverse USB-poorten, audio en videouitgang en soms met Wifi, afhankelijk van het model. Wij gebruiken de Raspberry Pi 3 zoals hiernaast is afgebeeld. De processor van de Raspberry Pi 3 heeft tien keer zoveel rekenkracht als die van een van de eerste Pi's (de RP 1).

2. De Raspberry Pi installeren

De eerste keer dat je een Raspberry krijgt moet je deze installeren. Dit gebeurt op de werkplek. Je houdt het volgende stappenplan aan:

Zodra je deze computer loskoppelt kun je natuurlijk niet meer deze les bekijken. Mogelijkerwijs kun je de les op je telefoon zien of evt. mag je een 2e computer aanzetten.

stap 1

Je krijgt een Raspberry met een kaartje waarop Noobs is geïnstalleerd. Tevens krijg je een DVI-kabel die op het scherm past en je moet ervoor zorgen dat je de adapter ergens in een stopcontact kan. Je mag evt. de bestaande computer eruit halen als er niet voldoende stopcontacten zijn. Evt. mag je ook de UTP-kabel (netwerkkabel) aansluiten.

stap 2

Zodra je alles hebt aangesloten en je de Pi aan het opstarten is zie je het volgende scherm:

https://images.computational.nl/galleries/raspberry/2017-04-10_12-35-06.png

Klik het kruisje aan en daarna op install. Vervolgens krijg je een melding.

https://images.computational.nl/galleries/raspberry/2017-04-10_12-37-55.png

 Uiteindelijk is Noob Linux geïnstalleerd.

https://images.computational.nl/galleries/raspberry/2017-04-10_13-12-48.png

 stap 3

Uiteindelijk zul je Noob Linux zien. Je mag nu wat rondkijken om Linux te ervaren. Je zult zien dat het een volwaardige computer is.

stap 4

Koppel nu alles weer los en sluit alles weer aan zoals het zat. Vervolgens ga je de Pi op een switch aansluiten die is te vinden in het computerlokaal. Sluit de Pi tijdelijk aan op een monitor, toetsenbord en muis. Het enige wat je nu nog nodig hebt is het IP-adres. Dit kun je als volgt achterhalen.

Open een terminal. Deze vind je boven in het scherm. Geef nu het volgende commande (dit gaan we nog uitgebreid aan de orde laten komen):

ifconfig eth0

Linux geeft de onderstaande melding terug met het IP-adres.

https://images.computational.nl/galleries/raspberry/ipaddress.png

stap 5

Als laatste zul je een zogenaamde SSH (Secure Shell) service moeten starten . Dit gaat zo:

sudo /etc/init.d/ssh start

Er komt nu een melding dat de ssh-service is gestart. Je kunt het scherm nu loskoppelen evenals de muis en het toetsenbord. De RP evanals de voeding laat je aangesloten zitten. Iedere keer als je de Pi uitzet zal deze een van de server een nieuw IP-adres krijgen.

 

3. Een Secure Shell verbinding opzetten

Een Secure Shell verbinding (ssh) maakt het mogelijk om op een versleutelde manier in te loggen op een andere computer, en op afstand commando's op de andere computer uit te voeren via een shell. Omdat ssh met encryptie werkt, is het voor eventuele afluisteraars, die de (internet)verbinding aftappen, zo goed als onmogelijk om wachtwoorden of commando's te achterhalen.

We zullen zo'n ssh verbinding gaan opzetten vanuit een leerlingcomputer. Om dit te kunnen realiseren heb je het programma Putty nodig. Dit is een gratis programma. De 32-bits versie is hier te downloaden en de 64-bits versie hier. Op school hebben we een 32-bits systeem ondanks dat de computers 64-bit zijn. Het programma Putty staat waarschijnlijk al voorgeïnstalleerd in c:\program files onder het mapje putty.

Dubbelklik op Putty om het programma te starten. Je ziet het volgende.

https://images.computational.nl/galleries/raspberry/2017-04-11_11-18-47.png

Klik hierna op Open en er zal een ssh-scherm worden geopend. Het kan zijn dat er nog een veiligheidsmelding komt. Sta hierbij de verbinding toe door op yes te klikken.

https://images.computational.nl/galleries/raspberry/2017-04-11_12-30-04.png

Je kunt nu inloggen met gebruikersnaam Pi en wachtwoord raspberry.

https://images.computational.nl/galleries/raspberry/2017-04-11_11-51-37.png

Als je bent ingelogd zie je de volgende veiligheidsmelding

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

 Dat houdt in dat iedereen (uit de klas) jouw Pi kan hacken. Je moet dat zo snel mogelijk zien te voorkomen door het wachtwoord te veranderen. Geef hiervoor het commando passwd

pi@raspberrypi:~ $ passwd
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
pi@raspberrypi:~ $

. tip: je kunt tekst plakken of kopiëren door op de rechtermuisknop te klikken.

Waarschuwing: een vergeten wachtwoord betekent dat de Pi opnieuw moet worden geïntalleerd.

4. De pi als sftp server

FTP staat voor File Transfer Protocol. SFTP staat voor Secure File Transfer Protocol wat inhoud dat alle data versleuteld wordt verzonden. FTP wordt de laatste tijd als verleden tijd gebruikt. Het is gebruikelijker om het versleutelde protocol te gebruiken.

De programma's die SFTP mogelijk maken zijn enigzins vergelijkbaar met verkenner in Windows. Hieronder zie je zo'n programma, Filezilla genaamd, waarin het contact heeft gemaakt met de server waarop deze website staat. Merk op dat het gaat om het SFTP-protocol. Je kunt dat bovenin de afbeelding zien.

https://images.computational.nl/galleries/raspberry/2017-05-22_18-10-48.png

Om SFTP mogelijk te maken gaan we eerst zo'n service installeren. Open een SSH verbinding en type het volgende commando.

sudo -i

 Dit commando geeft je alle (installatie) rechten. Type nu het volgende commando:

apt-get install vsftpd

De service vsftpd wordt geinstalleerd. Hierna moeten we met nano het een en ander aanpassen. Op deze website staat uitleg over sneltoetsen.

We gaan nu de config file van vsftpd aanpassen. Geef daarvoor het volgende commando.

nano /etc/vsftpd.conf

Nu controleer of verander je de volgende regels:

  • anonymous_enable=NO
  • uncomment (haal het # teken weg) local_enable=YES
  • uncomment write_enable=YES
  • voeg onderaan het document force_dot_files=YES toe

Bewaar de file en start daarna de service met het volgende commando

service vsftpd start

Iedere keer als je toch nog wijzigingen moet aanbrengen in de configfile dien je de service te herstarten met het commando

service vsftpd restart

Het enige wat we nu nog moeten hebben is een FTP-client. Dit kan binnen Firefox met FireFTP. Druk op Ctrl-Shift-A om de Addons te openen. Klik op Extensies en klik in het zoekveld FireFTP.

https://images.computational.nl/galleries/raspberry/2017-05-22_18-36-10.png

Klik hierna op installeren en herstart hierna Firefox. Zodra Firefox opnieuw is gestart kun je een keer drukken op de Alt-toets waarmee bovenin een menu tevoorschijn komt. Via extra->Webontwikkelaar->FireFTP kun je FireFTP starten.

https://images.computational.nl/galleries/raspberry/2017-05-22_18-50-57.png

Je kunt nu via snelverbinden een SFT verbinding opzetten.

https://images.computational.nl/galleries/raspberry/2017-05-22_18-55-44.png

Vervolgens stel je de verbinding in door voor een SFTP-verbinding te kiezen. Automatisch wordt poort 22 ingesteld.

https://images.computational.nl/galleries/raspberry/2017-05-22_18-58-49.png

5. Een interactieve webserver bouwen

Voor het opzetten van een interactieve webserver gaan we gebruik maken van een tool die Flask heet. Met behulp van de programmeertaal Python gaan we deze tool activeren.

Eerst installeren we flask met het volgende commando:

sudo apt-get install python3-flask

Vervolgens gaan we gebruik maken van een editor die is ingebakken in Linux. De editor heet nano. Zorg dat je eigen home map bent. Waar je bent kun je zien met het volgende commando.

 pwd
/home/pi

Als je daar niet bent kun je met cd ..  terug naar de root en vervolgens naar de bedoelde map.

pi@raspberrypi:~ $ cd ..
pi@raspberrypi:/home $ cd ..
pi@raspberrypi:/ $ cd home
pi@raspberrypi:/home $ cd pi
pi@raspberrypi:~ $ pwd
/home/pi

Start nu de editor met het commando nano.

nano app.py

Je ziet nu het nano scherm. Neem daarin de onderstaande code over.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hallo wereld!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

https://images.computational.nl/galleries/raspberry/2017-05-22_13-32-17.png

Je kunt het script bewaren door te op Crl-x te drukken en daarna Yes en daarna op Enter te drukken. Nano zal hierna stoppen en de file bewaren. Op deze website vind je een uitleg van het Python-script.

6. Een nieuwe route maken in je webapplicatie

In je webapplicatie typte je als url http://10.2.12.120:8080/ waarbij deze eindigt met een slash. De slash houdt in dat we op het hoogste niveau zitten van je applicatie. We noemen dit de root. De code hiervan ziet er zo uit:

@app.route('/')
def index(): 
    return 'Hallo wereld!'

We kunnen ook een nieuwe route maken op de volgende manier:

@app.route('/koekjes')
def cakes():
    return 'We zijn op de koekjespagina'

7. Een html template toevoegen

We zullen nu met de editor nano een file index.html maken. Eerst verzeker je jezelf ervan dat je in de juiste directory zit en daarna start je nano met de filenaam.

pi@raspberrypi:~ $ pwd
/home/pi
pi@raspberrypi:~ $ nano index.htm

Type nu de html-template in. 

https://images.computational.nl/galleries/raspberry/2017-05-30_14-17-00.png

In les 5 vind je de knoppen hoe je de file kunt opslaan. Begin met Ctrl-X.

Maak nu een template directory met het volgende commando:

mkdir templates

Vervolgens gaan we de file verplaatsen naar deze directory. Hiervoor gebruiken we de volgende commando's:

mv index.htm templates

Met het commando cd en dir kunnen we het resultaat bekijken. 

pi@raspberrypi:~ $ cd templates
pi@raspberrypi:~/templates $ dir
index.htm

Omdat index.htm eigenlijk niet goed is (werkt wel) maken we hier index.html van.

mv index.htm index.html

Nu ga je met cd.. weer een niveau omhoog en met nano gaan we het app.py script aanpassen.

pi@raspberrypi:~/templates $ cd ..
pi@raspberrypi:~ $ nano app.py

Verander de bovenste regel als volgt:

from flask import Flask, render_template

En de code van de root als volgt:

@app.route('/')
def index():
    return render_template('index.html')

Save the app.py file en maak de opdracht.

8. Een dynamische applicatie maken

In Flask is het ook mogelijk om variabelen te maken. We gaan een variabele maken die de naam van de user kan laten zien. Begin met het maken van een nieuwe route in het bestand app.py. De code van de route is als volgt:

@app.route('/hello/<name>')
def hello(name):
    return render_template('page.html', name=name)

We creëren hiermee een variabele   en we moeten weer een nieuwe pagina maken genaam page.html in onze templates map.Hiern moeten we de variabele gebruiken. Dat gaat zo:

<h1>Hello {{ name }}!</h1>

Deel 2

In deel 2 gaan we de interactiviteit verder uitbouwen door o.a. een led via je telefoon te kunnen aan- of uitzetten. We noemen dat the internet of things. We zullen ook andere vormen van interactiviteit gaan bouwen.