- Зв'язок РК-дисплея 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 LCD з 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 LCD встановлено, і ви можете використовувати її функції, просто імпортуючи цю бібліотеку у свою програму python, використовуючи наведений нижче рядок:
імпортувати Adafruit_CharLCD як РК
У папці 'examples', яка знаходиться в папці бібліотеки (Adafruit_Python_CharLCD), є кілька сценаріїв- прикладів . Ви можете перевірити налаштування, запустивши приклад сценарію char_lcd.py. Але перед цим вам потрібно підключити РК-висновки до Raspberry Pi, як зазначено нижче на схемі в наступному розділі.
Ви також можете підключити РК-дисплей до деяких інших контактів GPIO Raspberry Pi, все, що вам потрібно, щоб згадати правильні контактні штифти у вашій програмі python, як показано нижче. Дізнайтеся більше про шпильки Raspberry Pi GPIO тут.
# Налаштування контакту 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 (повідомлення) = Для друку тексту на РК-дисплеї.
- 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 Script. Є багато способів отримати локальну IP-адресу Raspberry Pi, тут ми описуємо три сценарії Python, щоб отримати IP-адресу, ви можете використовувати будь-який з них.
Використання команд Linux:
У терміналі ми можемо легко отримати IP-адресу, використовуючи команду namename –I , тому, якщо ми можемо запустити команду linux з python, ми можемо отримати IP-адресу. Отже, для запуску команд Linux з Python нам потрібно імпортувати бібліотеку з іменами команд, тому повна програма буде виглядати нижче:
час імпорту імпорт Adafruit_CharLCD як команди імпортування на РК # Налаштування pin 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) lcd.dcms_dvd_get.dc \ lds.dcd \ ldd_cd_data \ ldd_cd_data \ ldd_cd_data \ ldd_cd_data \ lda.dvd. ('ім'я хосту -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'))
Використання програмування Socket:
Тут у цій програмі ми створимо сокет сімейства 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 як розетка для імпортування РК-дисплея # Налаштування pin 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) defad_ipd_dress_ 'ipd_dress: 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:
час імпорту імпорт Adafruit_CharLCD як РК-імпорт сокет імпорт fcntl структура імпорту # 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 # Визначте розмір РК-стовпця та рядка для РК-дисплея 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_backcket. повернути socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', мережа))) 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 Script, а також можете змінити тривалість, протягом якої ви хочете повторно запускати сценарій, щоб отримати оновлений IP.