Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/myvobot/pi_pico_wifi_driver

A simple driver using AT command to access WiFi/Internet on the Pi Pico
https://github.com/myvobot/pi_pico_wifi_driver

at esp01 esp32 esp8266 micropython raspberry-pi-pico rp2040 wifi

Last synced: 3 months ago
JSON representation

A simple driver using AT command to access WiFi/Internet on the Pi Pico

Awesome Lists containing this project

README

        

# MicroPython Raspberry Pi Pico WiFi Driver

- This project was forked and modified from: https://github.com/kfricke/micropython-esp8266uart
- This driver for MicroPython intends to be useable on any MicroPython platform which implements a serial UART interface.
- I tested this on Raspberry Pi Pico, together with an ESP-01 module (with AT command UART interface).
- Since Pi-Pico has no radio built-in, it is good to get a cheap WiFi module like ESP-01 for it.

```
+-------------------+ +-------------------+
| | | |
| Raspberry Pi | | ESP-01 |
| Pico | | |
| | | |
| IO4 +----------------> RXD |
| | | |
| IO5 <----------------+ TXD |
| | | |
| GND +----------------+ GND |
| | | |
| | | |
| HOST | | WIFI MODULE |
| | | |
| (MicroPython) | | (AT Firmware) |
| | | |
+-------------------+ +-------------------+
```

## Usage

- Upload these script files onto your Pico board, using Thonny or mpfs, etc.:
- `esp_at_uart.py`
- `uart_timeout_any.py`
- `test.py`

- On the repl shell, run with:

```
import test
```

## Note

- So far there is no "timeout" for uart's read/readline, thus we have to use "uart_timeout_any" as a temporally hotfix. See: https://github.com/raspberrypi/micropython/blob/pico/ports/rp2/machine_uart.c

- It seems the Pi Pico is quite slow in processing incoming UART bytes, and we are unable to set the RX buffer at this moment. So we lost some bytes while receiving bulk message from ESP-01, a quick fix here is to set the ESP-01 to use 9600bps instead. You may connect the ESP-01 to your PC's console and use `AT+UART_DEF=9600,8,1,0,0` to setup it first (default to 115200bps).

## Example Output

```
>>> import test
UART(1, baudrate=9600, bits=8, parity=None, stop=1, tx=4, rx=5)
Testing Generic Methods
=======================
AT startup...
Success!
Another AT startup...
Success!
Version...
1 - TX: b'AT+GMR\r\n'
29 - RX: b'AT+GMR\r\n'
83 - RX: b'AT version:2.1.0.0(883f7f2 - Jul 24 2020 11:50:07)\r\n'
117 - RX: b'SDK version:v4.0.1-193-ge7ac221\r\n'
163 - RX: b'compile time(0ad6331):Jul 28 2020 02:47:21\r\n'
193 - RX: b'Bin version:2.1.0(WROOM-32)\r\n'
198 - RX: b'\r\n'
202 - RX: b'OK\r\n'
205 - 'OK' received!
Success!

Testing WIFI Methods
====================
Testing get_mode/set_mode of value 'STATION'(1)...
Success!
Connecting WLAN...
Success!
Checking if connected WLAN SYNCSIGN_2.4G
Success!
Disconnecting from WLAN...
Success!
Checking if not connected WLAN...
Success!
Setting Station mode...
Success!
Scanning for WLANs...
[{'mac': b'"********"', 'rssi': -52, 'encryption_protocol': 3, 'ssid': b'"SYNCSIGN_2.4G"', 'channel': 6}, {'mac': b'"********"', 'rssi': -53, 'encryption_protocol': 3, 'ssid': b'"******"', 'channel': 6}, {'mac': b'"********"', 'rssi': -67, 'encryption_protocol': 4, 'ssid': b'"******"', 'channel': 11}]
Setting AP + Station mode...
Success!
Reading access point configuration
{'max_conn': 4, 'ssid_hidden': 0, 'ssid': b'"ESP_8283B1"', 'channel': 1, 'password': b'""', 'encryption_protocol': 0}
Listing all stations connected to the module in access point mode...
[]
Read DHCP client and server settings:
{'softAP': False, 'station': False}
Checking DHCP client and server settings...
Enable Station DHCP...
Enable SoftAP DHCP...
Setting autoconnect to access point in station mode...
Reading the station IP...
b'+CIPSTA:ip:"0.0.0.0"'
Reading the access point IP...
b'+CIPAP:ip:"192.168.4.1"'
>>>
```