IP adres bij opstart op LCD display

Om een Raspberry Pi op afstand te kunnen beheren heb je het IP adres van de Pi nodig. Indien er geen beeldscherm op de Pi is aangesloten is het lastig om achter het IP adres te komen als deze geen statisch IP adres heeft. Bovendien is er niet altijd een beeldscherm op de Pi aangesloten.

Je zou op je pc of je smartphone een (gratis) netwerkscanner kunnen gebruiken om achter het adres te komen, of je kijkt in de router wat het toegewezen adres is. Dit is weliswaar een beetje omslachtig, maar de DHCP lijst in de router is doorgaans overzichtelijk en de enige waarheid.

Statisch IP adres
Een voor de hand liggende oplossing voor bovengenoemd probleem is een statisch IP adres aan de Pi toe te kennen. Zo heb je altijd toegang tot hetzelfde IP-adres van de Pi als je ‘m binnen je netwerk wilt beheren. Mocht je de Pi echter naar een ander netwerk willen verplaatsen, dan is de kans groot dat het statische adres niet meer werkt.

Hoe mooi zou het zijn als er op de Raspberry Pi een Lcd-display aangesloten is dat bij opstart het IP-adres weergeeft. Natuurlijk zal het display niet bij de eerste keer als de Pi opstart het IP-adres weergeven omdat het Lcd-display zelf nog geïnstalleerd moet worden. Daar kom ik later in deze tutorial op terug.

In deze tutorial laat ik zien hoe je het IP-adres van de Raspberry Pi naar een aangesloten Lcd-display kunt schrijven, maar allereerst moet het Lcd-display op de Pi aangesloten worden.

Installatie Lcd-display
In de tutorial 16×2 LCD Display laat ik zien hoe je het Lcd-display op de Raspberry Pi aansluit. Volg eerst deze (standaard) installatie en ga vervolgens hieronder verder.

Tot zover de basisinstallatie van de I2C-interface met het Lcd-display.


Let op! Eigen script heeft bibliotheken nodig
Indien je het Lcd-display in je eigen python scripts wilt verwerken, dan moet je de Lcd-driver bibliotheken ook in de betreffende map van dat script plaatsen, in dit voorbeeld gebruik ik de map/directorie lcd.

De code
Ik heb twee scripts beschikbaar gesteld waarmee het IP-adres op het Lcd-display weergegeven wordt.

  • Script ip2lcd_v1.py laat alleen het IP-adres zien.
  • Script ip2lcd_v2.py laat bij opstart 10 seconden het IP-adres zien en vervolgens de actuele tijd.

Welk script je wilt gebruiken is geheel aan jezelf. Zet het script na keuze in de map lcd, samen met de gedownloade lcddriver bibliotheken.

Let op! De naam van het script moet zijn ‘ip2lcd.py’. Met andere woorden: Na het maken van je scriptkeus moet de de naam van het bestand veranderen in lcd2ip.py omdat deze naam straks in crontab gebruikt wordt om op te starten.

Omdat het systeem straks het script opstart met het bestand ip2lcd.py de juiste permissies hebben. Geef hiervoor het volgende commando:

chmod 777 ip2lcd.py

Als je het script na keuze met Python2 start zie je het IP-adres in de LXTerminal en op het Lcd-display.

Nu het script beschikbaar is en alles werkt zoals het zou moeten, dient het script bij start van de Raspberry Pi nog automatisch op te starten.


Python script automatisch starten met crontab
Om het ip2lcd.py script in de map /home/pi/lcd op te starten tijdens de (her)start van de Raspberry Pi gaan we deze toevoegen aan de cron-taken. Gebruik het volgende commando om de cron-editor te openen:

sudo crontab -e

We gebruiken sudo omdat het systeem de cron-taak uitvoert, niet de gebruiker.

De eerste keer dat je de cron-taken wil gaan bewerken wordt er gevraagd welke editor je hiervoor wilt gaan gebruiken. Als je twijfelt kies dan voor de nano-editor.

Editor aanpassen / forceren
Krijg je deze keuze niet of heb je in het verleden een andere keus gemaakt en wil je deze aanpassen? Geef dan het volgende in:

select-editor

of

sudo EDITOR=nano crontab -e

Scroll in de editor naar de laatste lege regel in het bestand en voeg de volgende regel toe:

@reboot /usr/bin/python /home/pi/lcd/ip2lcd.py &

De toegevoegde commandoregel zorgt ervoor dat tijdens een reboot Python het script ip2lcd.py in de map /home/pi/lcd/ op de achtergrond uitvoert, dit laatste geven we aan met behulp van het &-teken.

Sluit de nu editor af met: Ctrl-O (opslaan), gevolgd door Ctrl-X (afsluiten).

Wil je controleren welke cron-taken zijn ingepland, dan kun je dit doen met commando:

sudo crontab –l

Herstart de Raspberry Pi en controleer of het script automatisch is gestart.

sudo reboot

Vertraging inbouwen in cron-taak
Wanneer je een Python script uitvoert dat gebruik maakt van een netwerkverbinding zoals in veel projecten, is het verstandig om een vertraging toe te voegen aan de cron-taak.

Afhankelijk van het model Raspberry Pi dat gebruikt wordt kan het voorkomen dat het Python script gestart wordt voordat alle componenten van de netwerkverbindingen zijn geactiveerd, wat als resultaat heeft dat het Python script stopt en er daarmee geen IP-adres in het Lcd-display zichtbaar is.

Plaats daarom voor het commando in crontab sleep XX && toe, waarbij je XX vervangt door het aantal seconden dat moet worden gewacht. In de meeste gevallen is 10 seconden genoeg.

Het commando in sudo crontab -e voor het ip2lcd.py script wordt dan:

@reboot sleep 10 && /usr/bin/python /home/pi/lcd/ip2lcd.py &

Leuke klus
Wil je het IP-adres en de klok gelijktijdig in beeld hebben, dan heb je er een leuke klus aan om eens in de code te duiken. Bij de lcd demo’s staat tegenwoordig het script demo_clock_and_IP.py erbij, die zou je kunnen gebruiken. Je hoeft dan alleen de naam naar ip2lcd.py te veranderen. Vergeet dan niet de permissies van het bestand goed te zetten.

Tip: Voor toekomstige (schone) Raspbian installaties
Bij een nieuwe installatie van Raspbian zou je direct al willen dat het IP-adres op het Lcd-display getoond wordt. De enige manier waarop dit kan, is de SD-kaart voorzien van een geïnstalleerd Raspbian systeem waarin de Lcd-display aansturing geïnstalleerd is. Ik adviseer daarvoor om na een ‘schone’ installatie deze tutorial te doen en vervolgens van de SD-kaart een image maken met bijv. Win32DiskImage. Vervolgens sla je het image op om toekomstige SD-kaarten ermee te voorzien.

Download hier Win32DiskImager

Met zo’n image ben je in staat deze op andere (lege) SD-kaarten te beschrijven zodat je bij ‘schone’ systemen altijd een actief Lcd-display hebt dat het IP-adres van de Pi toont. Voorwaarde is dat je dan wel het display aangesloten hebt, anders ontstaan er I2C-bus meldingen.

Have A Nice Day!

Geef als eerste een reactie

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.


*