- Interface de LCD 16x2 com Raspberry Pi:
- Diagrama de circuito:
- Exibir endereço IP de Raspberry Pi no LCD:
- Execute o script periodicamente usando 'crontab':
O principal problema ao trabalhar com o Raspberry Pi é saber o endereço IP do Raspberry Pi, que será necessário para fazer o login usando algum SSH ou cliente de transferência de arquivos. Portanto, hoje compartilharemos alguns scripts Python para encontrar o endereço IP local do seu Raspberry Pi na rede e exibi-lo na tela LCD 16x2. Também adicionaremos o script no Crontab para que ele possa ser executado a cada 10 minutos e teremos o endereço IP atualizado todas as vezes.
Interface de LCD 16x2 com Raspberry Pi:
Antes de encontrarmos o endereço IP do Raspberry PI, primeiro precisamos fazer a interface do LCD 16x2 com o Raspberry Pi. Aqui neste projeto, usamos uma biblioteca externa Adafruit para fazer a interface do LCD 16x2 com Raspberry Pi, usando o qual você não precisa escrever muitas linhas de código para acionar o LCD e você pode imprimir diretamente no LCD usando apenas uma linha de código. No entanto, esta biblioteca é criada pela Adafruit, mas pode ser usada para qualquer módulo LCD que tenha controlador HD44780.
Para usar a Biblioteca Adafruit, primeiro precisamos instalá-la usando os comandos abaixo. O primeiro comando clonará o repositório CharLCD (por Adafruit) em seu Raspberry Pi, o segundo comando o levará para dentro do diretório baixado e, finalmente, precisamos executar o script setup.py , apresentado dentro do diretório Adafruit_Python_CharLCD, para instalar a biblioteca.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Agora a biblioteca para o LCD 16x2 foi instalada e você pode usar suas funções apenas importando esta biblioteca em seu programa python usando a linha abaixo:
importar Adafruit_CharLCD como LCD
Existem alguns scripts de exemplo dentro da pasta 'examples' que está presente na pasta da biblioteca (Adafruit_Python_CharLCD). Você pode testar a configuração executando o script de exemplo char_lcd.py. Mas antes disso, você precisa conectar os pinos do LCD com o Raspberry Pi conforme mostrado abaixo no diagrama de circuito na próxima seção.
Você também pode conectar o LCD com alguns outros pinos GPIO do Raspberry Pi, tudo o que você precisa para mencionar os pinos de interface corretos em seu programa python como abaixo. Saiba mais sobre os pinos GPIO do Raspberry Pi aqui.
# Configuração do pino Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Agora você pode usar diretamente as funções fornecidas pela Adafruit Library para controlar o LCD. Algumas das funções são fornecidas abaixo; você pode encontrar mais no script de exemplo:
- lcd.message (message) = Para imprimir o texto no LCD.
- lcd.clear () = Para limpar o LCD.
- set_cursor (col, linha) = Mova o cursor para qualquer posição na coluna e linha.
- lcd.blink (True) = Para piscar o cursor (True ou False)
- lcd.move_left () = Para mover o cursor uma posição para a esquerda.
- lcd.move_right () = Para mover o cursor para a direita em uma posição.
Se você deseja conectar o LCD sem usar nenhuma biblioteca externa, você pode verificar nosso tutorial anterior, onde escrevemos todas as funções para o LCD 16x2. Marque este para fazer a interface com o LCD no modo de 8 bits e este para fazer a interface com o LCD no modo de 4 bits.
Diagrama de circuito:
Exibir endereço IP de Raspberry Pi no LCD:
Depois de fazer a interface do LCD 16x2 com o Raspberry Pi, agora precisamos obter o endereço IP do Raspberry Pi e imprimi-lo no LCD usando Python Script. Existem várias maneiras de obter o endereço IP local do Raspberry Pi, aqui estamos descrevendo três scripts Python para obter o endereço IP, você pode usar qualquer um deles.
Usando comandos do Linux:
No terminal, podemos obter facilmente o endereço IP usando o comando hostname –I , portanto, se pudermos executar o comando linux a partir do python, podemos obter o endereço IP. Portanto, para executar os comandos do Linux a partir do Python, precisamos importar uma biblioteca chamada comandos, de modo que o programa completo seja como abaixo:
tempo de importação importar Adafruit_CharLCD como comandos de importação de LCD # Configuração do pino Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definir coluna LCD e tamanho de linha para 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_backlight) lcd.message ('Endereço IP local: \ nput.get) ('hostname -I')) time.sleep (10.0) # Aguarde 5 segundos lcd.clear ()
Você também pode substituir o comando hostname –I no programa pelo comando abaixo se quiser obter o endereço IP usando um comando ifconfig mais confiável:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Usando a programação Socket:
Aqui neste programa iremos criar um socket da família AF_INET e digitar SOCK_DGRAM usando esta linha: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , então iremos criar a conexão através do socket usando algum hostname ou endereço ip como 8.8.8.8, você também pode usar algum outro site para se conectar ao soquete, como gmail.com. Portanto, podemos obter o endereço IP local do RPi do soquete que foi criado para a comunicação entre o Raspberry Pi e o endereço IP fictício. Abaixo está o programa completo:
import time import Adafruit_CharLCD como 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 # Defina coluna LCD e tamanho de linha para 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_backlight) def get_ip_address (): '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 ('Local IP Address: \ n ') lcd.message (get_ip_address ()) # Aguarde 5 segundos time.sleep (10.0) lcd.clear ()
Saiba mais sobre programação de soquete em python aqui.
Usando o módulo 'fcntl':
Este módulo executa o controle de arquivo e controle de E / S nos descritores de arquivo. Aqui, ele é usado para extrair o endereço IP dos arquivos de rede. Abaixo está o código Python completo:
import time import Adafruit_CharLCD como LCD import socket import fcntl import struct # Configuração do pino Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definir coluna LCD e tamanho de linha para 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_backlight) def get_interface_ipaddress.socket.SocketA return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', rede))) lcd.message ('Endereço IP local: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Aguarde 5 segundos time.sleep (10.0) lcd.clear ()
Saiba mais sobre como usar o módulo 'fcnfl' aqui.
Execute o script periodicamente usando 'crontab':
A etapa final é adicionar a entrada para executar este script periodicamente a cada 15 minutos para que possamos obter IP atualizado todas as vezes. Para fazer isso, precisamos editar o arquivo cron usando o comando abaixo:
crontab –e
Em seguida, insira a linha abaixo na parte inferior do arquivo cron e salve-o usando CTRL + X, depois Y e pressione Enter.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Você pode alterar o endereço de acordo com a localização do seu arquivo Python Script e também pode alterar a duração em que deseja executar repetidamente o script para obter o IP atualizado.