Display Lezer voor de Raspberry Pi (First Time Setup)

Dit document dient als guide om een ‘Out-of-the-box’ Raspberry Pi te configureren voor de DisplayLezer. Deze stappen zijn al doorlopen en om het systeem snel op te configureren refereren wij door naar het document “Display Lezer voor de Raspberry Pi”. Dit document dient als referentie.

Rasbian Jessie

Eerst installeren we de Rasbian OS voor de Raspberry Pi, dit is een Linux omgeving.

  • Download NOOBS (New-Out-Of-the-Box-Software) van https://www.raspberrypi.org/downloads/noobs/.
  • Plaats SD in de Raspberry Pi en connect een power supply, een display, een muis en een toetsenbord.
  • Wanneer geprompt; installeer Rasbian Jessie vanuit NOOBS.

VNC (Virtual Network Computing)

Nu gaan we een VNC opzetten om de Raspberry Pi te besturen vanaf de computer.

  • In Raspberry Pi: Open terminal.
  • Voer het volgende in:
$ sudo raspi-config
  • In het configuratie scherm: Zet ‘Enable Camera’ tot ‘Yes’ en zet in ‘Advanced Options’ -> ‘SSH’ en ‘VNC’ op ‘Enable’.
  • Klik op ‘<finish>’ en voer het volgende in de terminal:
$ sudo apt-get update
$ sudo apt-get install tightvncserver
$ vncserver :1
  • Je wordt gevraagd een password in te voeren. Dit moet een 8-cijferig password zijn.
  • Download en installeer VNC van https://www.realvnc.com/download/vnc/
  • Open VNC Viewer
  • Start een nieuwe connection en voer als ‘VNC-Server’ [ip-address van de Raspberry]:1 (Het IP-Address is te verkrijgen door “ifconfig” in de terminal van de Raspberry Pi in te voeren).
  • Voer een naam in en druk ok.

Vanaf nu kan je via VNC Viewer je Raspberry Pi besturen.

Nu moeten we nog instellen dat de VNC-Server draait vanaf boot zodat we in het vervolg alleen nog maar de raspberry pi nodig hebben.

  • In de Raspberry Pi terminal, voer het volgende in:
$ cd /home/pi
$ cd .config

$ mkdir autostart
$ cd autostart
$ sudo nano tightvnc.desktop
  • Voer in deze nieuwe file het volgende in:
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
  • Voer het volgende in de terminal in:
$ passwd

Password = raspberry
new password = rekenrobot

Nu hoeven we alleen nog een static IP in te stellen zodat we de VNC Viewer een profile kunnen aanleveren.

  • Voer in de terminal het volgende in:
$ route -ne
  • Noteer de Gateway IP.
  • Voer nu in:
$ sudo nano /etc/resolv.conf
  • Noteer de Domain Name Server IP’s
  • Voer nu in:
$ sudo nano /etc/dhcpcd.conf
  • Voeg het volgende toe aan het eind van de file:
interface eth0
static ip_address=[De gateway IP van de route-ne maar verander het laatste getal naar 243]

static routers=[De Gateway IP van de route -ne]
static domain_name_servers=[De Domain name Servers van de resolv.conf gescheiden met een spatie]
  • Save deze file met Ctrl+O en sluit hem af met Ctrl+X
  • Reboot de Raspberry Pi door het volgende in de terminal in te voeren:
$ sudo reboot

Vanaf nu heb je geen scherm, toetsenbord of muis meer nodig. Je kan bij het opstarten de VNC-Viewer opstarten met de informatie van de bovenstaande stappen. (VNC-Server = [static ip_address]:1)

OpenCV Installeren

Nu gaan we OpenCV installeren. Deze stap zal langer dan een uur duren, neem dit mee in je planning.

Eerst gaan we wat ruimte vrij maken.

  • Voer het volgende in de terminal in:
$ sudo apt-get purge wolfram-engine

Hiermee verwijder je wolfram en maak je ~700 Mb vrij.

  • Upgrade bestaande packages door de volgende commando’s in de terminal in te voeren:
$ sudo apt-get update
$ sudo apt-get upgrade

Dependancies installeren

  • Voer de volgende regels in terminal in:
$ sudo apt-get install build-essential cmake pkg-config
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ sudo apt-get install python2.7-dev python3-dev

Nu gaan we OpenCV downloaden.

  • Voer het volgende in de terminal in:
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip

Nu installeren we pip om python packages te installeren.

  • Voer het volgende in de terminal in:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

Virtual Environment

Nu installeren we een virtual environment.

  • Voer het volgende in de terminal in:
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/.cache/pip
  • Open de ‘.profile’ file door middel van het volgende commando.
$ sudo nano ~/.profile
  • Voeg aan het eind van deze file het volgende toe:
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
  • Update de file door het volgende commando:
$ source ~/.profile

Attention

Dit commando moet gebruikt worden elke keer dat de terminal opnieuw opent!

  • Voer het volgende in de terminal in:
$ mkvirtualenv rr -p python3

Attention

Om in de virtuele omgeving te werken gebruik je het commando:

$ workon rr

Je weet dat je in de virtuele omgeving zit door de aanduiding (rr) aan het begin van elke regel in terminal.

  • Install numpy doormiddel van het volgende commando in terminal:
$ pip install numpy

Compileren en installeren van OpenCV

Attention

Dit onderdeel duurt 1h12 min op de Raspberry Pi 3 en 1h35 op de Raspberry Pi 2!

  • Zorg dat je in de virtuele omgeving zit door het volgende commando te gebruiken:
$ workon rr
  • Nu gaan we de build klaarzetten met de volgende commando’s:
$ cd ~/opencv-3.1.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \ -D BUILD_EXAMPLES=ON ..
  • Nu compilen we OpenCV met alle 4 kernen door het volgende commando:
$ make -j4

Dit is het gedeelte wat 1h12min in beslag neemt!

  • Nu gaan we OpenCV installeren met de volgende commando’s
$ sudo make install
$ sudo ldconfig
  • Nu gaan we een filename veranderen om latere bugs te voorkomen. Voer het volgende in je terminal in:
$ cd /usr/local/lib/python3.4/site-packages/
$ sudo mv cv2.cpython-34m.so cv2.so
  • En we sym-linken onze OpenCV met onze virtuale omgeving.
cd ~/.virtualenvs/rr/lib/python3.4/site-packages/
ln -s /usr/local/lib/python3.4/site-packages/cv2.so cv2.so
  • Nu kun je de installatie testen door het volgende in de terminal in te voeren.
$ source ~/.profile
$ workon rr
$ python
>>> import cv2
>>> cv2.__version__

Als dit zonder errors ‘3.1.0’ returned is de installatie succesvol.

Raspberry Pi Camera

  • Connect de Raspberry Pi camera met de Raspberry Pi.
  • Als je nog niet in de virtualenv zit, voer dan het volgende in de terminal in:
$ source ~/.profile
$ workon rr
  • installeer de picamera module met de volgende commando’s:
$ pip install "picamera[array]"
  • Om te testen of je camera functioneert kun je het volgende script gebruiken:
# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2

# initialize the camera and grab a reference to the raw camera
camera = PiCamera()
raw_capture = PiRGBArray(camera)

# allow the camera to warmup
time.sleep(0.1)

# grab and image from the camera
camera.capture(raw_capture, format="bgr")
image = raw_capture.array

# display the image on screen and wait for a keypress
cv2.imshow("Image", image)
cv2.waitKey(0)

DisplayLezer Code

  • Installeer mercurial met het volgende commando:
$ sudo apt-get install mercurial
  • Clone je repository door naar de gewenste destination folder te gaan en het volgende commando te gebruiken:
$ hg clone [jouw repository link]

De main file is pathways-extensions-training/RekenRobot/Src/DisplayLezen/Demo/MainFileReadImagePi.py

Tesseract OCR

  • Installeer Tesseract OCR met het volgende commando:
$ sudo apt-get install tesseract-ocr
  • Installeer pytesseract met het volgende commando:
$ sudo pip install pytesseract
$ sudo pip3 install pytesseract
  • Installeer python imaging:
$ sudo apt-get install python-imaging
  • Installeer imutils:
$ sudo pip3 install imutils
  • Installeer Pillow:
$ sudo pip3 install --upgrade pillow
  • Herstart de Raspberry Pi.
$ sudo reboot
  • Download letsgodigital.traineddata:
$ wget -O letsgodigital.traineddata "https://github.com/arturaugusto/display_ocr/blob/master/letsgodigital/letsgodigital.traineddata?raw=true"
  • Plaats letsgodigital.traineddata in de juiste directory:
$ sudo mv letsgodigital.traineddata /usr/share/tesseract-ocr/tessdata