Wi-Fi модуль RTL8710

в 15:25, , рубрики: arduino, DIY, diy или сделай сам, wi-fi, деталька, радиоэлектроника, связь, Электроника для начинающих

В списке Wi-Fi модулей, а точнее в списке дешевых Wi-Fi модулей, недавно возникло новое пополнение. На рынок начал выходить RTL8710.

Модуль RTL8710

Модуль RTL8710

В интернете сразу стали сулить ему учесть убийцы esp8266. Диалог с модулем так же, в прочем, как и с большинством подобных модулей, идёт по UART, встроенная прошивка с AT командами, линии GPIO, ходят разговоры о SDK, в общем, всё схоже с esp8266. Но документации на модуль пока мало, а встроенная прошивка содержит глюки. Какая будет у модуля судьба — покажет время.

Стоимость модуля на ebay ~3,5$ (~220р сентябрь 2016), можно найти дешевле.

Обратная сторона модуля

Обратная сторона модуля

Для простой работы достаточно на модуль подать 3.3В и подключиться по UART на скорости 38400 8N1 (к сожалению, скорость штатными средствами изменить не удалось). Для управлением питанием есть линия CHIP-EN 1-вкл (по умолчанию), 0-выкл. Модуль оснащён зеленым светодиодом в верхней части возле буквы B, под круглым отверстием, который горит во время передачи данных.

Схема подключения RTL8710

Схема подключения RTL8710

С подключением модуля решил не заморачиваться, подключил через цеплялки (щупы-пробники) к cp2102, линии данных через гасящие резисторы.

Заставка при загрузки модуля

Заставка во время загрузки модуля

AT команды модуля

Общие команды

Синтаксис Описание
AT Тест
AT
[AT] OK
help Помощь, краткий список некоторых AT команд
Help

WLAN AT COMMAND SET:
SET LOG OUTPUT MODE:
1. # ATSE=2(0: NO DEBUG,1:OUTPUT REMOTE UART, 2:LOCALE UART, DEFAULT MODE 1
===========STA MODE=================
1. Wlan Scan for Network Access Point
# ATWS
2. Set Wifi STA Mode
# ATPW=1
3. Connect to an AES AP
# ATPN=<ssid>,<pwd>,<key_id>(,<bssid>)
===========AP MODE=================
1. Set Wifi AP Mode
# ATPW=2
2. Set AP parameter
# ATPA=<ssid>,<pwd>,<chl>,<hidden>
===========TEST WIFI Status==============
5. View WIFI Status
#ATW?
5. Ping
#ATPP=xxxx.xxxx.xxxx.xxxx

ATS? Список всех доступных AT команд
ATSR Перезагрузка модуля
ATSV Версия модуля
ATSV

[ATSV]: COMPILE TIME: 2016/05/19-16:09:23
[ATSV] V02,V16.05.10.
[ATSV] OK

ATSY Сброс до заводских настроек
ATSU=<baudrate>,<databits>,<stopbits>,<parity>,<flowcontrol>,<configmode> Настройка UART модуля.
baudrate — скорость
2400,4800,9600,19200,38400,57600,
115200,921600,1152000
databits — размер пакета
5, 6, 7, 8 — бит
stopbits — стоп бит
1, 2 — бит
parity — контроль чётности
0 — нет, 1 — нечётный, 2 — чётный
flowcontrol — управление парадачей данных
0 — нет, 1 — аппаратный RTS, CTS
configmode — режим конфигурации
0 — применить не сохраняя
1 — сохранить и применить
2 — сохранить и применить после перезагрузки
Команда не работает
ATSU=115200,8,1,0,0,1

[ATSU] OK

ATSE=<mode> Режим UART
0 — без отладочных данных
1 —
2 — все отладочные данные
ATSE=2

[ATSE] OK

ATSW=<mode> Запустить Веб сервер
mode — режим
c — запустить
s — остановить
Доступно в режиме точки доступа (AP)
ATSW=c

WEB:Enter start web server!

[MEM] After do cmd, available heap 42832

LoadWifiConfig(): Read from FLASH!

LoadWifiConfig(): local_config.boot_mode=0x77665502

LoadWifiConfig(): local_config.ssid=TEST

LoadWifiConfig(): local_config.channel=5

LoadWifiConfig(): local_config.security_type=1

LoadWifiConfig(): local_config.password=12345678

LwIP_DHCP: dhcp stop.
Deinitializing WIFI ...
WIFI deinitialized
Initializing WIFI ...
WIFI initialized

ATSO=<ip>,<port> Обновление прошивки

Wi-Fi команды

Синтаксис Описание
ATPW=<mode> Wi-Fi режим
1 — клиент
2 — точка доступа
3 — параллельный
ATPW=1

[ATPW] OK

ATPN=<ssid>,<pwd>,<key_id>(,<bssid>) Подключение к точке доступа
ssid — имя точки доступа
pwd — пароль
ATPN=HOME,12345678

RTL8195A[Driver]: set ssid [HOME]

RTL8195A[Driver]: start auth to 00:00:00:00:00:00

RTL8195A[Driver]: auth success, start assoc

RTL8195A[Driver]: association success(res=1)

RTL8195A[Driver]: set pairwise key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4)

RTL8195A[Driver]: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:2

[ATPN] OK

ATWD Отключиться от точки доступа
ATWD

[ATWD]: _AT_WLAN_DISC_NET_

Deassociating AP ...
ioctl[SIOCGIWESSID] ssid = NULL, not connected
WIFI disconnected

[ATWD] OK

ATWS Поиск точек доступа
ATWS

[ATWS]: _AT_WLAN_SCAN_
1 Infra 00:00:00:00:00:00 -58 3 6 WPA/WPA2 AES TEST
2 Infra 00:00:00:00:00:00 -62 6 6 WPA/WPA2 AES WiFi-1
3 Infra 00:00:00:00:00:00 -62 5 6 WPA/WPA2 AES HOME
4 Infra 00:00:00:00:00:00 -80 2 6 WPA TKIP WiFi-2

ATPA=<ssid>,<pwd>,<chl>,<hidden> Создать точку доступа
ssid — имя точки доступа
pwd — пароль длиной 8-64 символа
chl — канал
hidden
0 — не скрытая
1 — скрытая
ATPA="TEST","12345678",5,0

Writting boot mode 0x77665502 and Wi-Fi setting to flash ...
LwIP_DHCP: dhcp stop.
Deinitializing WIFI ...
[deinit_timer_wrapper] Need to delete 4 timer_entry
WIFI deinitialized
Initializing WIFI ...
WIFI initialized
[ATPA] OK

ATW? Wi-Fi информация
ATW?

[ATW?]: _AT_WLAN_INFO_

WIFI wlan0 Status: Running
==============================
[rltk_wlan_statistic] tx stat: tx_packets=2, tx_dropped=0, tx_bytes=1152
[rltk_wlan_statistic] rx stat: rx_packets=559, rx_dropped=863, rx_bytes=115457, rx_overflow=0
[rltk_wlan_statistic] min_free_heap_size=39216, current heap free size=44408
[rltk_wlan_statistic] max_skbbuf_used_num=2, skbbuf_used_num=0
[rltk_wlan_statistic] max_skbdata_used_num=2, skbdata_used_num=0
[rltk_wlan_statistic] max_timer_used_num=13

WIFI wlan0 Setting:
==============================
MODE => STATION
SSID => TEST
CHANNEL => 3
SECURITY => WPA/WPA2 AES
PASSWORD => 12345678

Interface (wlan0)
==============================
MAC => 00:00:00:00:00:00
IP => 192.168.1.2
GW => 192.168.1.1

Task List:
log_servi R 5 779 6
IDLE R 0 42 4
Tmr Svc B 5 456 5
TCP_IP B 9 956 7
cmd_threa B 6 218 12
LOGUART_T B 9 96 1
rtw_TDMA_ B 7 220 15
rtw_littl B 10 458 13
rtw_inter B 6 208 11
rtw_recv_ B 5 828 9
rtw_check B 5 216 14
rtw_xmit_ B 5 220 10
interacti B 4 1132 16

ATPH=<mode>,<enable> DHCP режим
mode
1 — точка доступа
2 — клиент
enable
1 — включить DHCP
2 — статический IP
ATPH=2,2

[ATPH] OK

ATPE=<ip>(,<gateway>,<mask>) Статический IP
ip
gateway — шлюз
mask — маска
ATPE=192.168.1.2

[ATPE] OK

ATPG=<enable> Автоподключение
0 — выкл
1 — вкл
ATPG=0

[ATPG] OK

ATPM=<mac> Установка MAC адреса
ATPM=0011223344ff

write mac address success, please reset wifi driver!
[ATPM] OK

TCP/IP команды

Синтаксис Описание
ATPS =<mode>,<Local Port> Поднять TCP/UDP сервер
mode — режим
0 — TCP
1 — UDP
local port — порт 1-65535
ATPS=0,80

#
Start Server
[IP]: 192.168.1.2
[PORT]:80

The TCP SERVER START OK!
[ATPS]OK
[ATPS]con_id=1

ATPC =<mode>,< Remote IP>,< Remote Port> Клиент. Подключиться к серверу.
mode — режим
0 — TCP
1 — UDP
Remote IP — IP
Remote Port — порт 1-65535
Подключимся к ya.ru
ATPC=0,213.180.204.3,80
[A
[B&T_IOT_RTL8710]#TPC]: _AT_TRANSPORT_REMOTE_IP_ [213.180.204.3]

[ATPC]TCP Client mode will start

[MEM] After do cmd, available heap 36656

#
Start Client
[IP]: 213.180.204.3
[PORT]:80

OK to create sock_fd!

Connect to Server successful!

[ATPC]OK
[ATPC]con_id=1

ATPD=<con_id> Отключиться от сервера, выключить поднятый на модуле сервер.
con_id — id сессии
ATPD=1

[ATPD]OK
[ATPD]CLOSE con_id=1

ATPT=<con_id>,<data>
Or
ATPT=<Buffer Size>
Or
ATPT=<con_id>,<UDP Client IP>,<UDP Client Port>,<data>
Отправка данных
con_id — id сессии
data —
Buffer Size — количество отправляемых байт
Не может отправлять спец символы, например 0x0C (n), 0x0A (r)
ATPT=2,12345
[ATPT]: _AT_TRANSPORT_WRITE_DATA_ [2]

[ATPT] Sending data:12345
with packet_size:1024

ATPR =<con_id>,<Buffer Size> Получение данных
con_id — id сессии
Buffer Size — количество читаемых байт
ATPR=2,4

[ATPR]:2,192.168.1.1,40866,qwer
with packet_size: 4

ATPI Список активных сессий
ATPI

con_id 1,
Server,
TCP,
ADDRESS 192.168.1.2,PORT 80,socket 0

con_id 2,Seed,
TCP,
ADDRESS 192.168.1.1,PORT 40866,socket 1

ATPP=<xxxx.xxxx.xxxx.xxxx>,[y/loop]
Or
ATPP=<con_id>, [y/loop]
Ping
Remote IP — IP
con_id — id сессии
y/loop — количество опросов
н
loop — бесконечный цикл
ATPP=192.168.1.1
[ATPP]Repeat Count: 5

[ping_test] PING 192.168.1.1 120(148) bytes of data

[ping_test] 128 bytes from 192.168.1.1: icmp_seq=1 time=4 ms
[ping_test] 128 bytes from 192.168.1.1: icmp_seq=2 time=1 ms
[ping_test] 128 bytes from 192.168.1.1: icmp_seq=3 time=1 ms
[ping_test] 128 bytes from 192.168.1.1: icmp_seq=4 time=1 ms
[ping_test] 128 bytes from 192.168.1.1: icmp_seq=5 time=1 ms

В таблице рассмотрены не все команды, описание всех команд можно найти в документации на модуль. Для экономии места где-то в примерах работы с командами удалены лишние пустые строки. Так же везде убрана строка

[MEM] After do cmd, available heap 45296

Большинство AT команд могут корректно работать, точнее возвращать ответ только при ATSE=2 (например ATPI), другие команды в этом режиме работают нормально, но шлют лишние дублированные данные (ATWS). Модуль реагирует, но нечего не делает при получении команды настройки UART (ATSU). При отправки данных (ATPT) модуль не шлёт системные символы, в том числе символы переноса строки и перевода каретки (0x0D 13 n, 0x0A 10 r), если символы отправлять в кавычках модуль выдаёт фатальную ошибку. При отправки и получении данных модуль работает построчно, т.е. только до символа переноса строки, возможности отправлять фрагменты произвольных данных произвольной установленной длины нет.

Фото подключения тестового RTL8710

Фото подключения тестового RTL8710

Впечатление от модуля. Модуль работает, с ним можно вести кое-какой диалог по средством AT команд. Модуль не может принимать и отправлять спец символы (терминальные символы), он их или игнорирует, или отрабатывает сам. Шлёт лишние отладочные данные. На модуль пока мало документации, по SDK нечего не скажу, т.к. она меня пока не интересуют. Модуль на данный момент очень сырой и с ним работать трудно, или я неправильно его применял. Посмотрим, в каком плане модуль будет развиваться дальше. Если же я его как-то неправильно применял — поправьте меня.

Больше всего документации на данный момент содержится на одноимённом форуме — https://www.rtl8710forum.com/.
Оригинальная статья.

Автор: Alex_EXE

Источник

Поделиться новостью

* - обязательные к заполнению поля