Ползваният код е за връзка между Raspberry pi и ESP8266
Предварително е необходимо да се инсталира библиотека pigpio, ако няма да се ползват стандартните портове на распито. В случая използваме други портове. След изпращане на съобщението програмата изчаква за отговор и ако има го принтира на конзолата.
import pigpioTotal views: 6 , Total comments: 0
import time
TX_PIN = 24
RX_PIN = 23
CONTROL_PIN = 25 # Пин за управление на посоката (DE/RE)
BAUD = 9600
pi = pigpio.pi()
if not pi.connected:
exit("Не може да се свърже с pigpio демона!")
# Конфигуриране на контролния пин
#pi.set_mode(RS485_CONTROL_PIN, pigpio.OUTPUT)
#pi.write(RS485_CONTROL_PIN, 0) # Начално състояние: Режим "Слушане"
def setup():
pi.set_mode(TX_PIN, pigpio.OUTPUT)
pi.set_mode(CONTROL_PIN, pigpio.OUTPUT)
pi.write(CONTROL_PIN, 0) # Режим Слушане
try:
pi.bb_serial_read_close(RX_PIN)
except:
pass
pi.bb_serial_read_open(RX_PIN, BAUD, 8)
def send_to_esp(message):
"""Изпращане към ESP8266"""
data = (message + "\n").encode('utf-8') # Добавяме нов ред за по-лесно четене в ESP
pi.write(CONTROL_PIN, 1) # TX Mode
pi.wave_clear()
pi.wave_add_serial(TX_PIN, BAUD, data)
wid = pi.wave_create()
if wid >= 0:
pi.wave_send_once(wid)
while pi.wave_tx_busy():
time.sleep(0.001)
# Важно за ESP8266: леко закъснение преди превключване
time.sleep(0.005)
pi.write(CONTROL_PIN, 0) # RX Mode
pi.wave_delete(wid)
def read_from_esp():
"""Четене на отговор от ESP8266"""
count, data = pi.bb_serial_read(RX_PIN)
if count > 0:
return data.decode('utf-8', errors='ignore').strip()
return None
setup()
try:
print("Комуникация с ESP8266 стартирана...")
while True:
msg = "HELLO"
send_to_esp(msg)
print("Пратено към ESP: " + msg)
# Изчакване за отговор
time.sleep(0.3)
response = read_from_esp()
if response:
print(f"Отговор от ESP: {response}")
time.sleep(2)
except KeyboardInterrupt:
pi.bb_serial_read_close(RX_PIN)
pi.stop()
Leave a comment
No comments