Raspberry Pi voor de beginner
Installeer een besturingssysteem
Stappenplan samengevat:
Raspbian Jessie Lite
Gebruik Jessie Lite als je van plan bent om de Raspberry Pi headless, m.a.w. zonder monitor wilt gebruiken. Jessie Lite bevat geen X-server en ook niet alle componenten die op X draaien en is daardoor een stuk kleiner dan Raspbian Jessie.
Raspbian eerste-keer initialisatie
Bestandssysteem uitbreiden
Na eerste keer starten is het aan te raden om het bestandssysteem op de SD-kaart uit te breiden. Normaliter als je een Raspbian image op je SD-kaart zet, wordt niet alle ruimte op de kaart gebruikt. Door het bestandssysteem uit te breiden Hiermee gebruik je alle vrije niet-gepartitioneerde ruimte op de SD-kaart.
$ sudo raspi-config
Kies in het menu Advanced Options > Expand Filesystem. Reboot daarna.
Nieuwe gebruiker
ingelogd als user pi
verander je wachtwoord:
$ passwd
Maak de gebruiker "pietje" en voeg hem toe aan de groepen waar user "pi" ook lid van is.
$ sudo adduser pietje # vraagt om wachtwoord
Maak "pietje" lid van de groepen waarvan "pi" lid is. Dit is nodig o.a. om recht te krijgen om diverse hardware te mogen gebruiken. Je moet bijvoorbeeld lid van groep 'dialout' zijn om COM-poorten te mogen gebruiken en 'gpio' om de GPIO-pinnen direct aan te spreken. Kijk van welke groep user "pi" lid van is met
$ groups pi
Op dit moment is 'pi' lid van de groepen pi, adm, dialout, cdrom, sudo, audio, video, plugdev, games, users, netdev, input, spi, gpio. Voeg de gebruiker "paul" toe aan deze groepen
$ sudo usermod -a -G adm,dialout,cdrom,sudo,audio,\ video,plugdev,games,users,netdev,input,spi,gpio pietje
Alternatieve manier:
$ for GROUP in adm dialout cdrom sudo audio video plugdev \ games users netdev input spi i2c gpio; do sudo adduser pietje $GROUP; done
Voeg pietje toe aan sudoers
$ sudo visudo
...en voeg onderaan deze regel toe:
pietje ALL=(ALL) NOPASSWD: ALL
log uit als pi, login als pietje.
Statisch ip-adres
Als je je Raspberry Pi headless wilt gebruiken, is het handig hem een vast ip-adres te geven. Het verdient de voorkeur om voor je Raspberry Pi een vast adres te reserveren in je DHCP-server. Je DHCP-server is meestal een ufnctie van je modem/router en dit wordt DHCP lease reservation genoemd. Alleen als dat niet lukt, kun je in de Raspberry Pi een statisch ip-adres instellen als volgt.
$ sudo nano /etc/network/interfaces
Verander de regel:
iface eth0 inet dhcp
in:
iface eth0 inet static address 192.168.178.45 netmask 255.255.255.0 network 192.168.178.0 broadcast 192.168.178.255 gateway 192.168.178.1
..en bewaar. Activeer deze nieuwe instelling door de netwerkadapter te deactiveren en te activeren. Doe dit alleen op een local console, anders sluit je jezelf uit!!
$ sudo ifdown eth0 $ sudo ifup eth0
Controleer tenslotte de instelling met ifconfig:
$ ifconfig
Het commando ifconfig
geeft een hoop uitvoer waaruit zou moeten blijken dat interface eth0 het ipadres 192.168.178.45 heeft.
Meerder statische ip-adressen
(multiple static ip addresses)
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.178.95 netmask 255.255.255.0 network 192.168.178.0 broadcast 192.168.178.255 gateway 192.168.178.1 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 172.23.3.195 netmask 255.255.252.0 network 172.23.0.0 broadcast 172.23.3.255
Let op: Alias-adapter kunnen geen "gateway" hebben!
Hostname wijzigen
Stel tenslotte een andere hostname in.
Om je systeem een andere naam te geven, gebruik niethet hostname
commando.
$ sudo hostname miep
want dit werkt niet! Maar doe dit:
$ sudo nano /etc/hostname
en bewerk dit bestand, verwijder de enige regel en type de nieuwe naam van de Raspberry Pi, bijv. miep
:
en reboot:
$ sudo reboot
Log in en zie dat de prompt veranderd is:
paul@miep ~ $
Je krijgt waarschijnlijk vaak een melding als:
unable to resolve host miep
Dit kun je corrigeren, door /etc/hosts
te bewerken en "miep" toe te voegen aan 127.0.0.1. Sommige lieden voegen het adres 127.0.1.1 toe en geven het deze naam, dus:
$ sudo nano /etc/hosts
en voeg to:
127.0.1.1 miep
SSH
Bij verstek is OpenSSH al geinstalleerd en draait de server. Om de SSH poort te veranderen, bewerk sshd_config.
$sudo nano /etc/ssh/sshd_config
en wijzig de regel:
Port 22
in bijvoorbeeld:
Port 1025
Als je bij inloggen een banner wilt zien, uncomment de Banner-regel:
Banner /etc/issue.net
Bewaar de file, en laat de ssh-server de configuratie opnieuw laden om de gemaakte wijzigingen te activeren:
$ sudo service ssh reload
SSH op headless Raspberry Pi met nieuwere Raspbian
In de nieuwste distros, in ieder geval op Raspbian Jessie Lite, is SSH niet meer bij verstek ingeschakeld. Dan kan je op een headless (zonder monitor en toetsenbord) Raspberry Pi SSH inschakelen op een eenvoudige manier. Maak op de bootpartitie een nieuw bestand genaamd ssh
. Bij de volgende boot is SSH ingeschakeld. That's all!
Enable ssh and connect to a wifi network without a keyboard or a screen
Dit werkt voor de Raspberry Pi Zero W welke ingebouwde wifi heeft en geen ethernet-adapter. Het werkt in ieder geval voor Raspbian Jessie.
- Maak in de bootpartitie een file genaam
ssh
; hiermee wordt SSH server ingeschakeld. - Maak de bootpartitie een file genaamd
wpa_supplicant.conf
. Open deze in een editor en voeg de volgende tekst toe:
network={ ssid="MyWiFi" psk="MyPrivateKey" key_mgmt=WPA-PSK }
Bron
Meer info: Setting wifi up via the command line
Screen en Byobo als loginshell
Tip: Installeer Byobu. Hiermee kunnen consoleopdrachten actief blijven, ook nadat je je afmeld van de console.
$ sudo apt-get byobu
Daarna kun je Byobu als standaard loginshell instellen voor de huidige gebruiker
$ byobu-enable
Meld je af en opnieuw aan. Nu is Byobu de login shell. Wanneer aangemeld op de console, bijvoorbeeld via SSH, dan kun je je actieve venster loskoppelen met Ctrl-a d terwijl actieve taken blijven doordraaien.
Systeemupdate
Werk de software bij
$ sudo apt-get update $ sudo apt-get upgrade
Dit duurt lang! neem hiervoor de tijd.
Werk de firmware bij:
$ sudo rpi-update $ sudo ldconfig $ sudo reboot
Python module serial
Om de seriele poort te gebruiken vanuit Python, moet module python-serial
worden geinstalleerd.
$ sudo apt-get install python-serial
De USB-naar-seriele adapter met de Prolific Pl2303 wordt goed herkend door de Raspberry Pi. enig minpunt is dat ik de adapter erin steek, de Raspberry Pi zich reset! Het seriele device wordt beschikbaar via /dev/ttyUSB0
.
Om te zien waar de seriele adapter zich bevindt en hoe het heet, doe:
$ dmesg | grep usb
of:
paul@bert ~/development $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Overigens een goede eenvoudig te gebruiken terminalprogramma om te seriele verbinding te testen is minicom
. Dit is te installeren met:
$ sudo apt-get install minicom
Gebruik :
$ minicom -D /dev/ttyUSB0 -b 9600
De USB-TTL seriele adapter van Adafruit (deze) wordt prima herkend in python. Helaas is hij niet Plug-and-Play ; insteken van de adapter in USB maakt dat de Raspberry Pi zichzelf reset!
En verder: software installeren
sudo apt-get install {pakket}
Handige pakketten:
- nginx
- php
- screen en byobu
Apache2
sudo apt-get install apache2 php5 mkdir ~/wwwroot
Bewerk /etc/apache2/site-enable/000-default
als volgt:
DocumentRoot /home/paul/wwwroot <Directory /home/paul/wwwroot> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>
Me deze laatste wijziging is de "DocumentRoot" gewijzigd en ingesteld op een map in de homedirectory van deze gebruiker , te weten /home/paul/wwwroot
. Dit maakt het mogelijk om bestanden van de webserver zonder root-privileges te beheren en dat is makkelijk.
Apache: Could not reliably determine the server's fully qualified domain name
Na starten van Apache2 met sudo service apache2 start
klaagt het dat
Could not reliably determine the server's fully qualified domain name
De oplossing is simpel: maak een bestand /etc/apache2/conf.d/fqdn
en zet daarin:
ServerName miep
Vanaf Ubuntu 14.04 doen we dat anders: maak /etc/apache2/conf-available/fqdn.conf
(let op extensie .conf) en daarin
ServerName miep
Daarna, enable deze configuratie:
a2enconf fqdn
Test PHP
maak in map /home/paul/wwwroot
nu een bestand met naam "info.php":
<?php phpinfo();
Richt je browser op http://miep/info.php en je krijgt als het goed is nu een informatie over PHP te zien.
Verleng het leven van je SD-kaart
http://www.zdnet.com/raspberry-pi-extending-the-life-of-the-sd-card-7000025556/
Het is goed om te weten dat er een aantal gemounte mappen tmpfs
gebruiken. Feitelijk zijn deze opgeslagen in een RAM-disk en schrijven dus niet op de SD-kaart of ander Flash-geheugen, maar in een stukje werkgeheugen dat toegankelijk is als bestandssysteem. Een van deze mappen is /tmp
. Mijn P1-Logger zou het beste elke minuut niet in de homedirectory schrijven maar in een bestand in /tmp.
Niet meer nodig voor nieuwere (2014 ) Raspberry Pis
Programma autostarten op headless RPi
autorun
Five Ways To Run a Program On Your Raspberry Pi At Startup
Tips
HDMI-naar-VGA
Ik heb een zwarte HDMI-naar-VGA-converter. Ik krijg zwart beeld. Het komt vaker voor. De Raspberry initialiseert de HDMI-uitgang niet. Verhelp dit door instellingen in config.txt te wijzigen.
Wijzig als root /boot/config.txt
en voeg aan het eind van het bestand de volgende regels toe:
# Instellingen om de wankele zwarte HDMI-naar-VGA-adapter te gebruiken. # http://elinux.org/RPiconfig # Gebruik deze in plaats van "hdmi_safe=1" hdmi_force_hotplug=1 hdmi_ignore_edid=0xa5000080 config_hdmi_boost=4 hdmi_group=2 hdmi_mode=4 disable_overscan=0 overscan_left=16 overscan_right=16 overscan_top=16 overscan_bottom=16 # hdmi_mode=4 # 640x480 60 Hz # hdmi_mode=9 # 800x600 @ 60 Hz hdmi_mode=16 # 1024x768 60 Hz # hdmi_mode=23 # 1280x768 60 Hz # hdmi_mode=35 # 1280x1024 60 Hz
Raspberry Pi met remote X server
Als je de Raspberry Pi headless gebruikt , kun je niet alleen via PuTTY de command line interface (CLI) gebruiken, maar kun je ook X gebruiken vanaf je desktop computer. Je gebruikt daarvoor een SSH client, zoals PuTTY, en een X server op je Windows, bijvoorbeeld XMing.
De procedure hoe je dat doet is beschreven op Xming with Raspberry Pi, maar deze handleiding is erg uitgebreid, en veel stappen kun je overslaan als je al een Raspberry Pi hebt draaien.
Een samengevatte instructie is als volgt.
- Raspberry Pi
- apt-get install xdm
- dpkg-reconfigure xdm - en kies xdm
- /etc/X11/xdm/xdm-config en wijzig regel:
DisplayManager.requestPort: 0
in:
! DisplayManager.requestPort: 0
- /etc/X11/xdm/Xaccess en wijzig:
#* #any host can get a login window
in:
* #any host can get a login window
- Windows
- download en installeer Xming en Xming-fonts
- start XMing als volgt:
Xming :1 -query 192.168.0.6
Identificeer je Raspberry Pi
Hoe identificeer je je Raspberry Pi via het besturingssyteem ? Dat doe je via het commando
$ cat /proc/cpuinfo
In deze tabel geeft het Revision
-veld een unieke identificatie voor de hardware. Je zoekt dit nummer op in Checking Your Raspberry Pi Board Version & Revision Number
rpi-update verouderd
rpi-update heb je niet meer nodig! In 99% van alle gevallen is
$ sudo apt-get update $ sudo apt-get upgrade
voldoende om je systeem up-to-date te houden. Dat geldt zeker voor Raspberry Pi 2 en latere modellen.
Internet resources
Scratch krijg een MOOC
Gertboard
- http://www.raspberrypi.org/introducing-gertboard/
- http://www.antratek.nl/gertboard
- https://www.sparkfun.com/products/11773
Leuk om te lezen: Kees Moerman Raspberry Pi Hardware en I/O http://www.keesmoerman.nl/rasp_hw.html
Goede webshops voor Raspberry spullen
- http://www.kiwi-electronics.nl/ (Nederlands maar heeft nu een storing)
- http://www.antratek.nl/ (Nederlands)
- http://www.adafruit.com/ (Amerikaans, veel voor knutselaars)
- http://sparkfun.com (Amerikaans, veel voor knutselaars)
Grote electronicawebshops
Buitenlands, sommige met nederlands-talige website
Info
Youtube Sparkfun
- SparkFun Getting Started with Raspberry Pi Part 1: Introduction
- SparkFun Getting Started with Raspberry Pi part 2: Wifi and Python and Twitter oh my!
- SparkFun Getting Started with Raspberry Pi Part 3: Tweeting Weather Station
Meer spannende links
- Bouw een Piaware ADS-B ontvanger en doe positiebepaling van alle vliegtuigen in de buurt