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.
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:
Klik het kruisje aan en daarna op install. Vervolgens krijg je een melding.
Uiteindelijk is Noob Linux geïnstalleerd.
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.
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.
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.
Je kunt nu inloggen met gebruikersnaam Pi en wachtwoord raspberry.
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.
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.
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.
Je kunt nu via snelverbinden een SFT verbinding opzetten.
Vervolgens stel je de verbinding in door voor een SFTP-verbinding te kiezen. Automatisch wordt poort 22 ingesteld.
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')
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.
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.