- Сопряжение ЖК-дисплея 16x2 с Raspberry Pi:
- Принципиальная электрическая схема:
- Отображение IP-адреса Raspberry Pi на ЖК-дисплее:
- Периодически выполнять скрипт с помощью crontab:
Основная проблема при работе с Raspberry Pi - это знать IP-адрес Raspberry Pi, который потребуется для входа в систему с помощью какого-либо SSH или клиента передачи файлов. Итак, сегодня мы поделимся некоторыми скриптами Python, чтобы найти локальный IP-адрес вашего Raspberry Pi в сети и отобразить его на ЖК-экране 16x2. Мы также добавим сценарий в Crontab, чтобы его можно было запускать каждые 10 минут, и каждый раз у нас будет обновленный IP-адрес.
Сопряжение ЖК-дисплея 16x2 с Raspberry Pi:
Прежде чем мы найдем IP-адрес Raspberry PI, сначала нам нужно связать ЖК-дисплей 16x2 с Raspberry Pi. Здесь, в этом проекте, мы использовали внешнюю библиотеку Adafruit для взаимодействия ЖК-дисплея 16x2 с Raspberry Pi, с помощью которой вам не нужно писать много строк кода для управления ЖК-дисплеем, и вы можете напрямую печатать на ЖК-дисплее, просто используя одну строку код. Однако эта библиотека создана Adafruit, но ее можно использовать для любого ЖК-модуля, имеющего контроллер HD44780.
Чтобы использовать библиотеку Adafruit, нам сначала нужно установить ее, используя приведенные ниже команды. Первая команда клонирует репозиторий CharLCD (от Adafruit) на вашем Raspberry Pi, вторая команда перенесет вас в этот загруженный каталог, и, наконец, нам нужно выполнить сценарий setup.py , представленный в каталоге Adafruit_Python_CharLCD, для установки библиотеки.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py установить
Теперь библиотека для ЖК-дисплея 16x2 установлена, и вы можете использовать ее функции, просто импортировав эту библиотеку в свою программу Python, используя следующую строку:
импортировать Adafruit_CharLCD как LCD
В папке «examples», которая находится в папке библиотеки (Adafruit_Python_CharLCD), есть несколько примеров сценариев. Вы можете проверить настройку, запустив пример скрипта char_lcd.py. Но перед этим вам необходимо подключить контакты ЖК-дисплея к Raspberry Pi, как показано ниже на принципиальной схеме в следующем разделе.
Вы также можете подключить ЖК-дисплей к некоторым другим контактам GPIO Raspberry Pi, все, что вам нужно, чтобы упомянуть правильные контакты интерфейса в вашей программе python, как показано ниже. Узнайте больше о выводах GPIO Raspberry Pi здесь.
# Настройка выводов Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Теперь вы можете напрямую использовать функции, предоставляемые библиотекой Adafruit, для управления ЖК-дисплеем. Некоторые функции приведены ниже; вы можете найти больше в примере скрипта:
- lcd.message (message) = Для печати текста на ЖК-дисплее.
- lcd.clear () = Очистить ЖК-дисплей.
- set_cursor (col, row) = Переместить курсор в любую позицию в столбце и строке.
- lcd.blink (True) = Мигать курсором (True или False)
- lcd.move_left () = Чтобы переместить курсор влево на одну позицию.
- lcd.move_right () = Чтобы переместить курсор вправо на одну позицию.
Если вы хотите подключить ЖК-дисплей без использования какой-либо внешней библиотеки, вы можете проверить наше предыдущее руководство, в котором мы написали все функции для ЖК-дисплея 16x2. Установите этот флажок для интерфейса с ЖК-дисплеем в 8-битном режиме, а этот - для интерфейса с ЖК-дисплеем в 4-битном режиме.
Принципиальная электрическая схема:
Отображение IP-адреса Raspberry Pi на ЖК-дисплее:
После сопряжения ЖК-дисплея 16x2 с Raspberry Pi теперь нам нужно получить IP-адрес Raspberry Pi и распечатать его на ЖК-дисплее с помощью скрипта Python. Есть много способов получить локальный IP-адрес Raspberry Pi, здесь мы описываем три сценария Python для получения IP-адреса, вы можете использовать любой из них.
Использование команд Linux:
В терминале мы можем легко получить IP-адрес с помощью команды hostname –I , поэтому, если мы можем запустить команду linux из python, мы сможем получить IP-адрес. Итак, чтобы запускать команды Linux из Python, нам нужно импортировать библиотеку с именем commands, поэтому полная программа будет выглядеть, как показано ниже:
время импорта import Adafruit_CharLCD как команды импорта ЖК-дисплея # Настройка вывода Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Определение размера столбца и строки ЖК-дисплея для ЖК-дисплея 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_backlight Address. ('hostname -I')) time.sleep (10.0) # Подождите 5 секунд lcd.clear ()
Вы также можете заменить команду hostname –I в программе следующей командой, если хотите получить IP-адрес с помощью более надежной команды ifconfig :
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Использование сокетов программирования:
Здесь, в этой программе, мы создадим сокет семейства AF_INET и введем SOCK_DGRAM, используя эту строку: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , затем мы создадим соединение через сокет, используя какое-то имя хоста или IP-адрес, например 8.8.8.8, вы также можете использовать другой веб-сайт для подключения к сокету, например gmail.com. Таким образом, мы можем получить локальный IP-адрес RPi из сокета, который был создан для связи между Raspberry Pi и фиктивным IP-адресом. Ниже представлена полная программа:
время импорта импорт Adafruit_CharLCD как сокет для импорта ЖК-дисплея # Настройка вывода Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Определите размер столбца и строки ЖК-дисплея для ЖК-дисплея 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_backlight); def_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 ('Локальный IP-адрес: \ n ') lcd.message (get_ip_address ()) # Подождите 5 секунд time.sleep (10.0) lcd.clear ()
Узнайте больше о программировании сокетов в python здесь.
Использование модуля fcntl:
Этот модуль выполняет файловый контроль и контроль ввода-вывода для файловых дескрипторов. Здесь он используется для извлечения IP-адреса из сетевых файлов. Ниже приведен полный код Python:
время импорта import Adafruit_CharLCD as LCD import socket import fcntl import struct # Настройка вывода Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Определите размер столбца и строки ЖК-дисплея для 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_backlight_ip) (socketAnter.site) return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', network))) lcd.message ('Локальный IP-адрес: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Ждем 5 секунд time.sleep (10.0) lcd.clear ()
Узнайте больше об использовании модуля «fcnfl» здесь.
Периодически выполнять скрипт с помощью crontab:
Последний шаг - добавить запись для периодического запуска этого скрипта каждые 15 минут, чтобы мы могли каждый раз получать обновленный IP. Для этого нам нужно отредактировать файл cron, используя следующую команду:
crontab –e
Затем введите строку ниже в нижней части файла cron и сохраните его, используя CTRL + X, затем Y, затем введите.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Вы можете изменить адрес в соответствии с расположением вашего файла сценария Python, а также изменить продолжительность, в течение которой вы хотите повторно запускать сценарий для получения обновленного IP.