- 16x2 LCD-interface met Raspberry Pi:
- Schakelschema:
- IP-adres van Raspberry Pi op LCD weergeven:
- Voer het script regelmatig uit met 'crontab':
Het grootste probleem bij het werken met Raspberry Pi is om het IP-adres van de Raspberry Pi te weten, dat nodig is om erop in te loggen met een SSH- of bestandsoverdrachtclient. Dus vandaag zullen we enkele Python-scripts delen om het lokale IP-adres van je Raspberry Pi op het netwerk te vinden en weer te geven op het 16x2 LCD-scherm. We zullen ook het script in de Crontab toevoegen zodat het elke 10 minuten kan worden uitgevoerd en we zullen elke keer het bijgewerkte IP-adres hebben.
16x2 LCD-interface met Raspberry Pi:
Voordat we het IP-adres van de Raspberry PI zullen vinden, moeten we eerst 16x2 LCD met Raspberry Pi verbinden. Hier in dit project hebben we een externe Adafruit-bibliotheek gebruikt om het 16x2 LCD-scherm met Raspberry Pi te verbinden, waarmee je niet veel regels code hoeft te schrijven om het LCD-scherm aan te sturen en je kunt direct op het LCD-scherm afdrukken door slechts één regel te gebruiken code. Deze bibliotheek is echter gemaakt door Adafruit, maar kan worden gebruikt voor elke LCD-module die een HD44780-controller heeft.
Om de Adafruit-bibliotheek te gebruiken, moeten we deze eerst installeren met behulp van onderstaande opdrachten. Het eerste commando zal de CharLCD-repository (door Adafruit) op je Raspberry Pi klonen, het tweede commando brengt je naar die gedownloade map en tot slot moeten we het setup.py- script uitvoeren, gepresenteerd in de Adafruit_Python_CharLCD-map, om de bibliotheek te installeren.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py installeren
Nu is de bibliotheek voor 16x2 LCD geïnstalleerd en kunt u de functies ervan gebruiken door deze bibliotheek in uw Python-programma te importeren met behulp van de onderstaande regel:
importeer Adafruit_CharLCD als LCD
Er zijn enkele voorbeeldscripts in de map 'voorbeelden' die aanwezig is in de bibliotheekmap (Adafruit_Python_CharLCD). U kunt de installatie testen door het char_lcd.py voorbeeldscript uit te voeren. Maar daarvoor moet u de LCD-pinnen met de Raspberry Pi verbinden, zoals hieronder weergegeven in het schakelschema in de volgende sectie.
Je kunt LCD ook verbinden met enkele andere GPIO-pinnen van Raspberry Pi, alles wat je nodig hebt om de juiste interfacing-pinnen in je python-programma te vermelden, zoals hieronder. Lees hier meer over Raspberry Pi GPIO-pinnen.
# Raspberry Pi pin setup lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
U kunt nu direct de functies van Adafruit Library gebruiken om het LCD-scherm te bedienen. Enkele van de functies worden hieronder gegeven; u kunt meer vinden in voorbeeldscript:
- lcd.message (bericht) = Om de tekst op het LCD-scherm af te drukken.
- lcd.clear () = Om het LCD-scherm leeg te maken.
- set_cursor (col, row) = Verplaats de cursor naar een willekeurige positie in kolom en rij.
- lcd.blink (True) = Om de cursor te laten knipperen (True of False)
- lcd.move_left () = Om de cursor één positie naar links te verplaatsen.
- lcd.move_right () = Om de cursor één positie naar rechts te verplaatsen.
Als u het LCD-scherm wilt aansluiten zonder een externe bibliotheek te gebruiken, kunt u onze vorige tutorial bekijken, waar we alle functies voor 16x2 LCD hebben geschreven. Vink deze aan om het LCD-scherm in 8-bits modus te koppelen en deze om het LCD-scherm in 4-bits modus te koppelen.
Schakelschema:
IP-adres van Raspberry Pi op LCD weergeven:
Nadat we 16x2 LCD met Raspberry Pi hebben gekoppeld, moeten we nu het IP-adres van Raspberry Pi ophalen en dit op het LCD-scherm afdrukken met behulp van Python Script. Er zijn veel manieren om het lokale IP-adres van Raspberry Pi te krijgen, hier beschrijven we drie Python-scripts om het IP-adres te krijgen, je kunt ze allemaal gebruiken.
Linux-opdrachten gebruiken:
Op terminal kunnen we eenvoudig het IP-adres krijgen door de hostnaam –I opdracht te gebruiken, dus als we de linux-opdracht vanuit de python kunnen uitvoeren, kunnen we het IP-adres krijgen. Dus om Linux-commando's vanuit Python uit te voeren, moeten we een bibliotheek met de naam commando's importeren , zodat het volledige programma er als volgt uitziet:
importeer tijd importeer Adafruit_CharLCD als LCD-importcommando's # Raspberry Pi pin setup lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definieer de LCD-kolom en rijgrootte voor 16x2 LCD. lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) lcd.message ('Lokaal IP-adres: \ n') lcd.message (commands.getoutput ('hostnaam -I')) time.sleep (10.0) # Wacht 5 seconden lcd.clear ()
U kunt ook de hostnaam –I- opdracht in het programma vervangen door de onderstaande opdracht als u het IP-adres wilt verkrijgen door een betrouwbaarder ifconfig- commando te gebruiken:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Socket-programmering gebruiken:
Hier in dit programma maken we een socket van familie AF_INET en typen we SOCK_DGRAM met behulp van deze regel: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , daarna zullen we verbinding maken via de socket met behulp van een hostnaam of ip-adres zoals 8.8.8.8, je kunt ook een andere website gebruiken om verbinding te maken met het stopcontact, zoals gmail.com. We kunnen dus het lokale IP-adres van RPi halen uit de socket die is gemaakt voor communicatie tussen Raspberry Pi en dummy IP-adres. Hieronder vindt u het volledige programma:
importeer tijd import Adafruit_CharLCD als LCD import socket # Raspberry Pi pin setup lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definieer LCD kolom en rijgrootte voor 16x2 LCD. lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) def get_ip_address (): ip_address = ''; s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () s.close () return ip_address lcd.message ('Lokaal IP-adres: \ n ') lcd.message (get_ip_address ()) # Wacht 5 seconden time.sleep (10.0) lcd.clear ()
Lees hier meer over Socket Programming in Python.
De module 'fcntl' gebruiken:
Deze module voert bestandsbeheer en I / O-besturing uit op bestandsdescriptors. Hier wordt het gebruikt om het IP-adres uit de netwerkbestanden te halen. Hieronder staat de volledige Python-code:
importeer tijd import Adafruit_CharLCD als LCD import socket import fcntl import struct # Raspberry Pi pin setup lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definieer LCD kolom en rijgrootte voor 16x2 LCD. lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) def get_interface_ipaddress (netwerk): s = socket.socket (socket.AFOCK_INET, socket.S return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', netwerk))) lcd.message ('Lokaal IP-adres: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Wacht 5 seconden time.sleep (10.0) lcd.clear ()
Lees hier meer over het gebruik van de 'fcnfl'-module.
Voer het script regelmatig uit met 'crontab':
De laatste stap is om het item toe te voegen voor het periodiek uitvoeren van dit script om de 15 minuten, zodat we elke keer een bijgewerkt IP-adres kunnen krijgen. Om dit te doen, moeten we het cron-bestand bewerken met de onderstaande opdracht:
crontab –e
En voer vervolgens de onderstaande regel onder aan het cron-bestand in en sla het op met CTRL + X, vervolgens Y en voer vervolgens in.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
U kunt het adres wijzigen volgens de locatie van uw Python-scriptbestand en u kunt ook de duur wijzigen waarin u het script herhaaldelijk wilt uitvoeren om het bijgewerkte IP-adres te krijgen.