• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
pico esp01 esp8266

pico + ESP8266 (ESP01)
#1
Ciao a tutti,

volevo provare ad associare un modulino ESP01 (del quale ammetto non conoscere un granché...) alla mia schedina pico. Ho realizzato le connessioni come riportate alla fine del post. In rete ho trovato il seguente codice il quale però non mi porta da nessuna parte... il modulo l'ho collegato sulla UART0 (usando i gpio tx 16 e tx 17).
Dove sto sbagliando?


Codice:
import uos
from machine import Pin, UART
import utime

recv_buf="" # receive buffer global variable

print()
print("Machine: \t" + uos.uname()[4])
print("MicroPython: \t" + uos.uname()[3])

uart0 = machine.UART(0, baudrate=115200, tx=Pin(16), rx=Pin(17))
print(uart0)

def Rx_ESP_Data():
    recv=bytes()
    while uart0.any()>0:
        recv+=uart0.read(1)
    res=recv.decode('utf-8')
    return res

def Connect_WiFi(cmd, uart=uart0, timeout=3000):
    print("CMD: " + cmd)
    uart.write(cmd)
    utime.sleep(7.0)
    Wait_ESP_Rsp(uart, timeout)
    print()

def Send_AT_Cmd(cmd, uart=uart0, timeout=3000):
    print("CMD: " + cmd)
    uart.write(cmd)
    Wait_ESP_Rsp(uart, timeout)
    print()
   
def Wait_ESP_Rsp(uart=uart0, timeout=3000):
    prvMills = utime.ticks_ms()
    resp = b""
    while (utime.ticks_ms()-prvMills)<timeout:
        if uart.any():
            resp = b"".join([resp, uart.read(1)])
    print("resp:")
    try:
        print(resp.decode())
    except UnicodeError:
        print(resp)

Send_AT_Cmd('AT\r\n')          #Test AT startup
Send_AT_Cmd('AT+GMR\r\n')      #Check version information
Send_AT_Cmd('AT+CIPSERVER=0\r\n')      #Check version information
Send_AT_Cmd('AT+RST\r\n')      #Check version information
Send_AT_Cmd('AT+RESTORE\r\n')  #Restore Factory Default Settings
Send_AT_Cmd('AT+CWMODE?\r\n')  #Query the WiFi mode
Send_AT_Cmd('AT+CWMODE=1\r\n') #Set the WiFi mode = Station mode
Send_AT_Cmd('AT+CWMODE?\r\n')  #Query the WiFi mode again
Send_AT_Cmd('AT+CWLAP\r\n', timeout=10000) #List available APs
Connect_WiFi('AT+CWJAP="+++++","++++"\r\n', timeout=5000) #Connect to AP using SSID & Password
Send_AT_Cmd('AT+CIFSR\r\n')    #Obtain the Local IP Address
utime.sleep(3.0)
print ('Starting connection to ESP8266...')
while True:
    print("ciao")
    res =""
    res=Rx_ESP_Data()
    utime.sleep(2.0)
    if '+IPD' in res: # if the buffer contains IPD(a connection), then respond with HTML handshake
        id_index = res.find('+IPD')
        print("resp:")
        print(res)
        connection_id =  res[id_index+5]
        print("connectionId:" + connection_id)
        print ('! Incoming connection - sending webpage')
        uart0.write('AT+CIPSEND='+connection_id+',200'+'\r\n')  #Send a HTTP response then a webpage as bytes the 108 is the amount of bytes you are sending, change this if you change the data sent below
        utime.sleep(1.0)
        uart0.write('HTTP/1.1 200 OK'+'\r\n')
        uart0.write('Content-Type: text/html'+'\r\n')
        uart0.write('Connection: close'+'\r\n')
        uart0.write(''+'\r\n')
        uart0.write('<!DOCTYPE HTML>'+'\r\n')
        uart0.write('<html>'+'\r\n')
        uart0.write('<body><center><h1>Raspberry Pi Pico-ESP-01-ESP8266- Web Server</h1></center>'+'\r\n')
        uart0.write('<center><h2>Interfacing of ESP8266 WiFi Module with Raspberry Pi Pico</h2></center>'+'\r\n')
        uart0.write('</body></html>'+'\r\n')
        utime.sleep(4.0)
        Send_AT_Cmd('AT+CIPCLOSE='+ connection_id+'\r\n') # once file sent, close connection
        utime.sleep(2.0)
        recv_buf="" #reset buffer
        print ('Waiting For connection...')


questo l'output che ottengo su seriale:

Codice:
Machine: Raspberry Pi Pico with RP2040
MicroPython: v1.19.1 on 2022-06-18 (GNU 11.2.0 MinSizeRel)
UART(0, baudrate=115200, bits=8, parity=None, stop=1, tx=16, rx=17, txbuf=256, rxbuf=256, timeout=0, timeout_char=1, invert=None)
CMD: AT

resp:
b'\xfe'

CMD: AT+GMR

resp:


CMD: AT+CIPSERVER=0

resp:


CMD: AT+RST

resp:


CMD: AT+RESTORE

resp:


CMD: AT+CWMODE?

resp:


CMD: AT+CWMODE=1

resp:


CMD: AT+CWMODE?

resp:


CMD: AT+CWLAP

resp:


CMD: AT+CWJAP="++++","++++"

resp:


CMD: AT+CIFSR

resp:


Starting connection to ESP8266...
ciao



ps. ho volutamente oscurato il nome della rete e la pass..

[Immagine: FX2GSRAKPV75K56.png]
Risposta
#2
Link dal quale hai ricavato il codice? Dalle procedure di risposta ai vari comandi, non vi è alcuna risposta utile. Potresti inserire nel codice delle istruzioni di print, con incrementi numerici, per verificare il flusso del programma.
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect