På denne siden er det en del info om et pågående prosjektet med værstasjon med Raspberry Pi som er en liten billig datamaskin. Til Raspberry Pi kan man koble til kamera og forskjellige sensorer som er interessant for en værstasjon. I dette prosjektet brukes Raspberry Pi Zero siden lavt strømforbruk er viktig da utstyret skal forsynes fra et 12V-solcelleanlegg med begrenset lading om vinteren.

Hvis man ikke har en Raspberry Pi til å begynne med så kan man installere operativsystemet Raspberry Pi Desktop og teste ut det på en virtuell maskin, for eksempel med VMware Player. Skjermen man ser i VMware Player er i utgangspunktet veldig liten. For å endre dette til større skjerm, gå inn på startmeny og velg Preferences -> Add / Remove Software og installer Open VMware Tools for virtual machines hosted on VMware (GUI). Alternativt, gå inn på startmeny og velg Preferences -> Screen Configuration og velg blant noen andre skjermstørrelser.

 

Hardware

Original Raspberry Pi hovedkort kjøpes billig med momsfritak til Norge hos for eksempel ModMyPi.

Diverse uoriginalt (?) Raspberry tilleggsutstyr, strømforsyninger og sensorer kjøpes veldig billig fra Kina hos AliExpress eller hos litt dyrere Banggood. I begge tilfeller sendes utstyret ofte gratis i posten, men regn med 3-5 uker leveringstid.

 

Konfigurering av Raspberry Pi

 

Klargjøring av minnekort

Last ned siste versjon av operativsystemet Raspbian. Her kan man velge mellom en minimalistisk versjon (CLI – command line interface) eller en større desktop versjon med grafisk brukergrensesnitt (GUI – graphical user interface). Desktop versjon (uten “recommended software”) er å foretrekke i starten da den er lettere å bruke for nybegynnere. Raspbian er for øvrig basert på Linux distribusjonen Debian.

Overfør nedlastet image-fil til SD minnekort med for eksempel programmet Etcher. Minnekortet vil da sett fra en Windows-PC bestå av en liten FAT32-partisjon (omtrent 250 MB) med navnet boot og en usynlig EXT4-partisjon på noen GB som Raspberry Pi bruker. Ved første oppstart av Raspberry Pi vil EXT4-partisjonen automatisk bli utvidet slik at hele minnekortet blir utnyttet (kommandoen lsblk kan senere kjøres i et terminalvindu for å verifisere dette).

Mens minnekortet fortsatt står i PC, legg til en tom tekstfil med navnet ssh.txt (alternativt en fil ssh uten filendelse) i boot partisjon. Filen vil slå på SSH (Secure Shell) i Raspberry Pi og deretter bli slettet ved første oppstart. Dette er nødvendig for å fjernstyre Raspberry Pi uten at den er tilkoblet egen skjerm, tastatur og mus (headless mode).

 

Trådløs nettverkstilkobling

Med minnekortet fortsatt stående i PC, hvis Raspberry Pi skal startes opp etterpå med trådløs tilkobling til nettverk (ikke kablet tilkobling), legg også til denne filen wpa_supplicant.conf i boot partisjon med dette innholdet med rette nettverksnavn og tilhørende passord:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=NO

# Trådløst nettverk nummer 1
network={
ssid="Nettverksnavn 1"
psk="Passord 1"
}

# Eventuelt trådløst nettverk nummer 2
# network={
# ssid="Nettverksnavn 2"
# psk="Passord 2"
# }

Ved oppstart av Raspberry Pi vil filen wpa_supplicant.conf flyttes til katalogen /etc/wpa_supplicant/ på EXT4-partisjon og overskrive fil med samme navn som ligger der fra før. Denne prosedyren med minnekort i PC kan gjentas hvis nettverkdetaljer senere endres.

Etter innlogging på Raspberry Pi kan man også senere editere den samme filen i et grafisk brukergrensesnitt (GUI) med denne kommandoen i et terminalvindu:

sudo mousepad /etc/wpa_supplicant/wpa_supplicant.conf

Generelt, hvis man bare jobber i command line interface (CLI) og ikke i et grafisk brukergrensesnitt (GUI), så må man bytte ut den grafiske editoren mousepad med den mer minimalistiske editoren nano og bruke denne kommandoen i stedet.

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Tips for bruk av (det ikke alt for brukervennlige) editoren nano:

  • Shift+Ctrl+V = Lim inn tekst som er kopiert for eksempel fra denne siden
  • Ctrl+O = Lagre fil (trykk enter)
  • Ctrl+X = Avslutt programmet nano

 

Oppstart av Raspberry Pi

Sett minnekortet i Raspberry Pi og koble den til bak en router med Ethernet-kabel (via USB-dongle for Raspberry Pi Zero) eller bruk trådløs tilkobling. Koble til strøm på Raspberry Pi og se at grønn LED blinker når den starter opp. Raspberry Pi skal nå ha fått en tilfeldig IP-adresse (DHCP) på routeren sin nettverk typisk i området x.x.x.100 til x.x.x.199.

Logg inn på routeren sin gateway-adresse (normalt x.x.x.1) med en PC for å finne den tildelte IP-adressen til Raspberry Pi. Normalt vil gateway-adresse til en router være 192.168.0.1 eller 192.168.1.1, men det kan være lurt å endre dette til 192.168.43.1 i routeren siden dette er samme gatway-adresse en Android mobiltelefon sin wifi hotspot bruker (da blir det enklere senere ved bruk av statiske IP-adresser og bytting mellom trådløsnett).

Hvis både kablet og trådløs tilkobling blir brukt samtidig på Raspberry Pi så vil routeren tildele 2 forskjellige IP-adresser da routeren vil se dette som 2 forskjellige MAC-adresser. I routeren vil man også kunne se at standard hostname for Raspberry Pi er raspberrypi.

 

Tilkobling med SSH

I første omgang kobles det til Raspberry Pi med SSH fra en PC. Bruk SSH programmet putty.exe på PC og koble til Raspberry Pi med IP-adressen som den har fått. Et terminalvindu vil komme opp og logg inn med standard bruker pi og standard passord raspberry. Etter vellykket innlogging vil det komme opp en velkomsttekst som vist under.

login as: pi
pi@192.168.43.124's password:
Linux raspberrypi 4.19.97+ #1294 Thu Jan 30 13:10:54 GMT 2020 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Apr 4 00:17:38 2020

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.

pi@raspberrypi:~ $

I dette eksemplet ser man i linje 2 at 192.168.43.124 er den tildelte IP-adressen til Raspberry Pi. I nederste linje ser man kommandolinje pi@raspberrypi:~ $ med cursor etter seg der pi er brukernavnet og raspberrypi er hostname. Man vil nå kunne kjøre Linux kommandoer på Raspberry Pi i dette terminalvinduet (ikke grafisk brukergrensesnitt).

 

Første gangs justeringer under SSH

Kjør denne sudo-kommandoen (super user do) i SSH sitt terminalvindu:

sudo raspi-config

Programmet raspi-config (Raspberry Pi Software Configuration Tool) vil da kjøres og dukke opp i terminalvinduet som vist under hvor man kan navigere rundt med piltaster i menyene og velge med return:

Her er det en del menyvalg hvor det er lurt å gjøre noen tilpasninger.

  • 1 Change User Password. Av sikkerhetsmessige grunner og for å unngå å bli purret på at standard passord raspberry ikke er endret hver gang Raspberry Pi starter opp så velg denne menyen og tast inn nytt passord.
  • 2 Network Options -> N1 Hostname. Hvis man har planlagt å koble til flere Raspberry Pi etter router så kan det være lurt å gi de forskjellige hostname slik at det blir lettere å skille de fra hverandre. Endre standard hostname raspberrypi til for eksempel raspberrypi-1 for Raspberry Pi nummer 1,  raspberrypi-2 for Raspberry Pi nummer 2, etc. Etter omstart av Raspberry Pi og ny innlogging med SSH vil nå kommandolinjen se slik ut pi@raspberrypi-1:~ $ i terminalvinduet og dukke opp i router med hostname som raspberrypi-1.
  • 5 Interfacing Options -> P3 VNC. For å jobbe i et grafisk brukergrensesnitt (desktop versjon) på Raspberry Pi i stedet for bare gjennom et terminalvindu med SSH så må VNC server aktiveres på Raspberry Pi.

 

Avslutt tilpasningene med valget <Finish> og start Raspberry Pi på nytt.

 

Tilkobling med VNC

I stedet for SSH, kan man nå bruke VNC Viewer på PC for å koble seg til Raspberry Pi. Logg inn med brukernavn pi,  nytt passord og tildelt IP-adresse. Da vil den grafiske desktop versjonen til Raspberry Pi vise seg i VNC Viewer og man kan bruke tastatur og mus på PC som om dette hadde vært direkte tilkoblet Raspberry Pi.

En velkomstskjerm vil vise seg første gang med teksten Welcome to Raspberry Pi og her kan det klikkes Cancel. Språkinnstillinger er en fordel å beholde på engelsk, men tidssone kan endres til norsk tid under Raspberry Pi sin startmeny Preferences -> Rasperry Pi Configuration -> Localisation.

Skjermen man ser i VNC er i utgangspunktet veldig liten. For å endre dette til større skjerm, gå inn på startmeny og velg Preferences -> Rasperry Pi Configuration -> Display -> Set Resolution og velg en passende større skjerm. Hvis større menyer og ikoner ønskes på desktop, gå inn på startmeny og velg Preferences -> Appearance Settings -> Defaults og endre fra medium til large screens.

 

Setting av statisk IP-adresse

Det er enklere at Raspberry Pi har en statisk IP-adresse for fremtidig tilkobling med SSH og VNC enn at den får tildelt en tilfeldig IP-adresse av routeren (DHCP). Raspberry Pi (nummer 1) kan for eksempel låses til statisk IP-adresse x.x.x.10 for kablet tilkobling og x.x.x.11 for trådløs tilkobling. Skal en Raspberry Pi nummer 2 kobles til på samme nettverk kan den settes til x.x.x.20 og x.x.x.21 og så videre. Pass på at ingen enheter får samme IP-adresse på samme nettverk. For å gi Raspberry Pi en statisk IP-adresse, legg til dette innholdet på slutten av filen dhcpcd.conf:

# Statisk IP-adresse x.x.x.10 for Rasperry Pi nummer 1 med kablet tilkobling
interface eth0
static ip_address=192.168.43.10/24
static routers=192.168.43.1
static domain_name_servers=192.168.43.1

# Statisk IP-adresse x.x.x.11 for Rasperry Pi nummer 1 med trådløs tilkobling
interface wlan0
static ip_address=192.168.43.11/24
static routers=192.168.43.1
static domain_name_servers=192.168.43.1

Bruk editoren mousepad eller nano og denne kommandoen:

sudo mousepad /etc/dhcpcd.conf

Omstart av Raspberry Pi vil nå alltid gi den samme IP-adressen og ikke en tilfeldig.

 

Oppdatering av software

Oppdatering av software på Raspberry Pi som fikser feil og sikkerhetsproblemer kan gjøres med jevne mellomrom. Åpne et terminalvindu og kjør disse kommandoene etter hverandre:

sudo apt update
sudo apt full-upgrade
sudo apt clean

Alternativt kan man slå sammen alle kommandoene til en og spare litt tid:

sudo apt update && sudo apt full-upgrade && sudo apt clean

 

Sjekk av trådløs signalstyrke

For kontinuerlig å se signalstyrken på tilkoblett trådløsnett, kjør denne kommandoen i et termianlvindu:

watch -n 1 cat /proc/net/wireless

 

Reduksjon av strømforbruk

For å få ned strømforbruk på raspberry Pi og spare batteri (spesielt interessant om vinteren med begrenset solcellelading) så er det noen triks man kan gjøre.

 

Skifte fra GUI til CLI

Selv om det er brukervennlig med grafisk brukergrensesnitt (GUI) så er det ikke sikkert at det er nødvendig når Raspberry Pi er ferdig satt opp og bare skal gjøre noen definerte oppgaver. Så lenge GUI kjører så vil den legge beslag på ekstra prossesorkraft og minne. Ved å slå av GUI og skifte til kommandolinje interface (CLI) så vil dette føre til mindre jobb for prosessor og dermed mindre varmetap og strømforbruk. For å skifte mellom GUI og CLI, kjør raspi-config i et terminalvindu:

  • 3 Boot Options -> B1 Desktop / CLI -> B2 Console Autologin. Dette vil velge CLI. Merk at da kan man ikke koble til med VNC, men må bruke SSH.
  • 3 Boot Options -> B1 Desktop / CLI -> B4 Desktop Autologin. Dette vil velge GUI og tilkobling med VNC er mulig.

 

 

Slå av HDMI

Hvis HDMI-plugg ikke skal brukes for tilkobling av en skjerm så kan denne kretsen slåes av ved å editere filen rc.local. Legg til dette på slutten av filen, men før linjen med exit 0:

# Slå av HDMI
/usr/bin/tvservice -o

Bruk editoren mousepad eller nano og denne kommandoen:

sudo mousepad /etc/rc.local

 

Slå av lysdioder, Wi-Fi og Bluetooth

Man kan slå av grønn lysdiode på Raspberry Pi Zero (indikasjon for aktiv og tilkoblet strøm), rød lysdiode på kamera (når det er i bruk), Wi-Fi og Bluetooth ved å editere filen config.txt. Legg til dette på slutten av filen /boot/config.txt:

# Slå av grønn LED på Raspberry Pi Zero
dtparam=act_led_trigger=none
dtparam=act_led_activelow=on

# Slå av rød LED på kamera
disable_camera_led=1

# Slå av Wi-Fi
dtoverlay=pi3-disable-wifi
 
# Slå av Bluetooth
dtoverlay=pi3-disable-bt

Bruk editoren mousepad eller nano og denne kommandoen:

sudo mousepad /boot/config.txt

Et alternativ er å sette Raspberry Pi sitt minnekort i en Windows PC og editere filen config.txt i den synlige partisjonen boot.

 

Python programmering

 

Katalogen home for brukerdata

Etter installering av operativsystemet Raspbian så vil det være en katalog /home/pi (der pi er standard brukernavn) hvor egne brukerdata kan lagres (for eksempel Python programkode for værstasjon). Her vil det følge med en del unødvendige underkataloger som Music, Videos etc. Slett alle disse bortsett fra Desktop for å gjøre det ryddigere. 

 

Python

I det grafisk miljøet så kan Python kode skrives og testes i programmet Thonny som er en såkalt IDE (integrated development environment) utviklet for nybegynnere. Etter at testing av for eksempel programmet test.py er ferdig så kan dette programmet kjøres direkte i et terminalvindu med denne kommandoen:

python3 test.py

 

Automatisk kjøring av program

Ved hjelp av funksjonen crontab så kan programmer kjøres automatisk i Raspberry Pi ved faste tidsintervall. For å editere denne funksjonen, kjør denne kommandoen i et terminalvindu som vil åpne opp en tekstfil:

crontab -e

Hvis for eksempel 3 forskjellige programmer skal kjøres ved faste tidsintervall så kan det gjøres ved å editere filen slik:

# Oppgaver som skal kjøres av cron

# Kjøres bare ved oppstart av Raspberry Pi
@reboot python3 /home/pi/program-1.py &

# Kjøres hvert 5. minutt
*/5 * * * * python3 /home/pi/program-2.py

# Kjøres hver hele time
0 * * * * python3 /home/pi/program-3.py

 

Test av tilkoblet kamera

Kamera kobles til raspberry Pi og testes som vist i denne videoen. Husk å slå på kamera i raspi-config for at Raspberry Pi skal få kontakt med kameraet.

Her er noen nyttige linker for å komme i gang med testing av kamera:

 

Kommunikasjon mellom flere Raspberry Pi

 

Kopiering av filer

Hvis man for eksempel har 2 stykk Raspberry Pi koblet til med kabel bak samme router med IP adressene 192.168.43.10 (raspberrypi-1) og 192.168.43.20 (raspberrypi-2) og man er logget på den første så kan man kopiere filer mellom de med kommandoen scp (secure copy). Merk at hvis katalog ikke spesifiseres så vil det bety /home/pi/ som er hjemmekatalogen for bruker pi.

Kopier alle tekstfiler fra nummer 1 til nummer 2:

scp *.txt 192.168.43.20:

Kopier alle tekstfiler fra nummer 2 til nummer 1:

scp 192.168.43.20:*.txt .

I eksemplene over må man slå inn passord.

 

Hvordan unngå passord ved kopiering av filer

På raspberrypi-1 kjør denne kommandoen:

ssh-keygen -t rsa -b 4096

Dette vil lage private og offentlige (public key) sikkerhetsnøkler. Kopier public key over til raspberrypi-2 med denne kommandoen:

ssh-copy-id 192.168.43.20