- Połączenie wyświetlacza LCD 16x2 z Raspberry Pi:
- Schemat obwodu:
- Wyświetl adres IP Raspberry Pi na wyświetlaczu LCD:
- Wykonuj skrypt okresowo za pomocą „crontab”:
Głównym problemem podczas pracy z Raspberry Pi jest znajomość adresu IP Raspberry Pi, który będzie potrzebny do zalogowania się do niego za pomocą jakiegoś SSH lub klienta transferu plików. Więc dzisiaj udostępnimy kilka skryptów Pythona, aby znaleźć lokalny adres IP twojego Raspberry Pi w sieci i wyświetlić go na ekranie LCD 16x2. Dodamy również skrypt w Crontab, aby można go było uruchamiać co 10 minut i za każdym razem będziemy mieć zaktualizowany adres IP.
Połączenie wyświetlacza LCD 16x2 z Raspberry Pi:
Zanim znajdziemy adres IP Raspberry PI, najpierw musimy połączyć 16x2 LCD z Raspberry Pi. Tutaj w tym projekcie wykorzystaliśmy zewnętrzną bibliotekę Adafruit do połączenia wyświetlacza LCD 16x2 z Raspberry Pi, przy użyciu której nie trzeba pisać wielu linii kodu do sterowania LCD i można bezpośrednio drukować na wyświetlaczu LCD, używając tylko jednej linii kod. Jednak ta biblioteka jest tworzona przez Adafruit, ale może być używana dla dowolnego modułu LCD, który ma kontroler HD44780.
Aby korzystać z biblioteki Adafruit, musimy ją najpierw zainstalować za pomocą poniższych poleceń. Pierwsze polecenie sklonuje repozytorium CharLCD (autorstwa Adafruit) na twoim Raspberry Pi, drugie polecenie przeniesie Cię do tego pobranego katalogu i na koniec musimy wykonać skrypt setup.py , przedstawiony w katalogu Adafruit_Python_CharLCD, aby zainstalować bibliotekę.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Teraz biblioteka dla 16x2 LCD została zainstalowana i możesz korzystać z jej funkcji, po prostu importując tę bibliotekę do programu w Pythonie za pomocą poniższej linii:
importuj Adafruit_CharLCD jako LCD
W folderze „przykłady” znajdującym się w folderze biblioteki (Adafruit_Python_CharLCD) znajduje się kilka przykładowych skryptów. Możesz przetestować konfigurację, uruchamiając przykładowy skrypt char_lcd.py. Ale wcześniej musisz połączyć piny LCD z Raspberry Pi, jak podano poniżej na schemacie obwodu w następnej sekcji.
Możesz także połączyć LCD z innymi pinami GPIO Raspberry Pi, wszystko, czego potrzebujesz, aby wspomnieć o prawidłowych pinach interfejsu w programie Python, jak poniżej. Dowiedz się więcej o pinach GPIO Raspberry Pi tutaj.
# Konfiguracja pinów Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Teraz możesz bezpośrednio korzystać z funkcji udostępnianych przez Adafruit Library do sterowania wyświetlaczem LCD. Niektóre funkcje podano poniżej; więcej w przykładowym skrypcie:
- lcd.message (message) = Aby wydrukować tekst na wyświetlaczu LCD.
- lcd.clear () = Aby wyczyścić wyświetlacz LCD.
- set_cursor (col, row) = Przesuń kursor w dowolne miejsce w kolumnie i wierszu.
- lcd.blink (True) = Aby mrugnąć kursorem (prawda lub fałsz)
- lcd.move_left () = Aby przesunąć kursor w lewo o jedną pozycję.
- lcd.move_right () = Aby przesunąć kursor w prawo o jedną pozycję.
Jeśli chcesz podłączyć LCD bez korzystania z zewnętrznej biblioteki, możesz sprawdzić nasz poprzedni tutorial, w którym napisaliśmy wszystkie funkcje dla LCD 16x2. Zaznacz tę opcję, aby połączyć wyświetlacz LCD w trybie 8-bitowym, a tę, aby połączyć się z wyświetlaczem LCD w trybie 4-bitowym.
Schemat obwodu:
Wyświetl adres IP Raspberry Pi na wyświetlaczu LCD:
Po połączeniu 16x2 LCD z Raspberry Pi, teraz musimy uzyskać adres IP Raspberry Pi i wydrukować go na wyświetlaczu LCD za pomocą Python Script. Istnieje wiele sposobów uzyskania lokalnego adresu IP Raspberry Pi, tutaj opisujemy trzy skrypty Python, aby uzyskać adres IP, możesz użyć dowolnego z nich.
Korzystanie z poleceń systemu Linux:
Na terminalu możemy łatwo uzyskać adres IP za pomocą polecenia nazwa_hosta –I , więc jeśli możemy uruchomić polecenie linux z Pythona, możemy uzyskać adres IP. Aby więc uruchamiać polecenia Linuksa z Pythona, musimy zaimportować bibliotekę o nazwie commands, więc kompletny program będzie taki jak poniżej:
import time import Adafruit_CharLCD as LCD polecenia importu # Konfiguracja pinów Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Zdefiniuj rozmiar kolumny i wiersza LCD dla 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: polecenia lcd_dget (lcd_backlight) ('nout_put.moc) (' lcd_backlight) ('nazwa hosta -I')) time.sleep (10.0) # Czekaj 5 sekund lcd.clear ()
Możesz również zastąpić polecenie hostname –I w programie poniższym poleceniem, jeśli chcesz uzyskać adres IP, używając bardziej niezawodnego polecenia ifconfig :
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Korzystanie z programowania przez gniazdo:
Tutaj w tym programie utworzymy gniazdo z rodziny AF_INET i wpiszemy SOCK_DGRAM za pomocą tej linii: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , a następnie utworzymy połączenie przez gniazdo używając nazwy hosta lub adresu IP, np. 8.8.8.8, możesz również użyć innej witryny internetowej do połączenia się z gniazdem, takim jak gmail.com. Możemy więc pobrać lokalny adres IP RPi z gniazda, które zostało stworzone do komunikacji pomiędzy Raspberry Pi a fikcyjnym adresem IP. Poniżej znajduje się pełny program:
import time import Adafruit_CharLCD as LCD import gniazdo # Konfiguracja pinów Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Zdefiniuj rozmiar kolumny i wiersza LCD dla 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_ipbacklight) get_dress ('ip_backlight); 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 ('Lokalny adres IP: \ n ') lcd.message (get_ip_address ()) # Czekaj 5 sekund time.sleep (10.0) lcd.clear ()
Dowiedz się więcej o programowaniu za pomocą gniazd w Pythonie tutaj.
Korzystanie z modułu „fcntl”:
Ten moduł wykonuje kontrolę plików i kontrolę we / wy na deskryptorach plików. Tutaj służy do wyodrębnienia adresu IP z plików sieciowych. Poniżej znajduje się pełny kod Pythona:
import time import Adafruit_CharLCD as LCD import gniazdo import fcntl import struct # Konfiguracja pinów Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Zdefiniuj kolumnę i wiersz LCD 16x2. 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_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight_plock_pl. return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', sieć))) lcd.message ('Lokalny adres IP: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Czekaj 5 sekund time.sleep (10.0) lcd.clear ()
Dowiedz się więcej o korzystaniu z modułu „fcnfl” tutaj.
Wykonuj skrypt okresowo za pomocą „crontab”:
Ostatnim krokiem jest dodanie wpisu do uruchamiania tego skryptu okresowo co 15 minut, abyśmy mogli za każdym razem uzyskać zaktualizowany adres IP. Aby to zrobić, musimy edytować plik cron za pomocą poniższego polecenia:
crontab –e
Następnie wprowadź poniższą linię u dołu pliku cron i zapisz go za pomocą CTRL + X, następnie Y, a następnie wprowadź.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Możesz zmienić adres zgodnie z lokalizacją pliku skryptu Python, a także zmienić czas, przez który chcesz wielokrotnie uruchamiać skrypt, aby uzyskać zaktualizowany adres IP.