支持双频WiFi和蓝牙ble5.0的Arduino开发板:Ameba RTL8720DN rtlduino-Arduino中文社区 - Powered by Discuz! Archiver

a2302004040 发表于 2020-11-16 19:02

支持双频WiFi和蓝牙ble5.0的Arduino开发板:Ameba RTL8720DN rtlduino


在制作Arduino相关的物联网项目时,esp8266和esp32开发板很受大家的欢迎,它们价格低廉,易于开发,且具有连接WiFi的能力。
但是它们也存在一些问题,最大的问题在于,它们只支持2.4GHz的wifi网络,这种网络不够稳定,很容易受到干扰。
所以在此介绍一个WiFi芯片:RTL8720DN,它支持5G WiFi,价格低廉,且可以用Arduino开发.

a2302004040 发表于 2021-3-20 13:38

本帖最后由 a2302004040 于 2021-4-9 19:22 编辑

a2302004040 发表于 2020-11-16 19:12
1.平台安装
打开你的Arduino IDE, 打开"首选项"->附加开发板管理器网址,加入下面这一行网址:
保存,进入开 ...
OHHHHHHH! 现在官方加入了对于这个开发板的支持!打开你的Arduino IDE, 打开"首选项"->附加开发板管理器网址,加入下面这一行网址:
https://github.com/ambiot/ambd_arduino/raw/master/Arduino_package/package_realtek.com_amebad_early_index.json
现在不再需要替换任何文件,开发板选择RTL8720DN(BW16)即可直接使用

使用GPIO时直接输入引脚名 例如PA12,PB1即可。不要直接输入数字或者带下划线的PA_12等。

三个ADC输入:A0,A1,A2分别是PB1,PB2,PB3,直接analogRead(A0)即可

支持PWM输出(analogWrite,tone)的引脚是PA12,PA13,PA25,PA26

串口Serial是板载的USB转串口芯片,TX:PB1,RX:PB2
串口Serial1是用来下载固件的串口,TX:PA7,RX:PA8

SPI: PA12,13,14,15->MOSI,MISO,CLK,CS,最高速度50MHz
I2C(Wire): PA25->SCL,PA26->SDA




瞌睡虫2020 发表于 2021-1-16 15:00

管理器地址不正确

a2302004040 发表于 2020-11-16 19:04

本帖最后由 a2302004040 于 2020-12-23 23:55 编辑

本教程基于此开发板.https://gd2.alicdn.com/imgextra/i3/2922621297/O1CN01mCcDCR1LS4KNc509V_!!2922621297.jpg_400x400.jpg

ps.这块开发板在淘宝就可以买到, 我的到手价不到30元, 官方的开发板则贵得多

a2302004040 发表于 2020-11-16 19:12

1.平台安装
打开你的Arduino IDE, 打开"首选项"->附加开发板管理器网址,加入下面这一行网址:
https://github.com/ambiot/ambd_arduino/raw/master/Arduino_package/package_realtek.com_amebad_index.json保存,进入开发板管理器,拉到最下面,选择安装"Realtek Ameba Boards"

等待安装完成.
之后,在Arduino主界面选择"工具"->"开发板"->"Ameba ARM (32-bits) boards"->"RTL8722DM/RTL8722CSM"
平台的安装就完成了.

a2302004040 发表于 2020-11-16 19:19

可能有些眼尖的小伙伴已经发现了,我们选择的开发板("RTL8722DM/RTL8722CSM")和本文的目标("RTL8720DN")对不上号...
不过这不是什么大问题,因为RTL8722的开发板非常贵(~300RMB),对于国内创客来说很不划算
并且RTL8720DN只是RTL8722的精简版,两者的SDK可以通用,只是前者缺少一些GPIO而已.

a2302004040 发表于 2020-11-16 19:39

2.点灯

由于官方只适配了官方的开发板,而官方开发板和教程中使用的开发板引脚数量不同,因此我们需要更改引脚的分配才能正常使用。
1-打开如下这个文件(其中的3.0.6是当前版本,之后可能不同)(假设你使用默认安装路径,如果不是,请自行查找这个文件)
C:\Users\user\AppData\Local\Arduino15\packages\realtek\hardware\AmebaD\3.0.6\variants\rtl8721d\variant.cpp
2-修改分配:

/*
* Pins descriptions
*/
PinDescription g_APinDescription=
{
    {PB_2,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D0
    {PB_1,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D1
    {PB_3,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D2
    {PB_31,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D3
    {PB_30,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D4
    {PB_28,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D5
    {PB_29,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D6
    {NC,       NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //D7
    {PB_22,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D8
    {PB_23,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D9
    {PB_21,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D10
    {PB_18,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D11
    {PB_19,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D12
    {PB_20,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D13
    {PA_7,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D14
    {PA_8,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D15
    {PA_25,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D16
    {PA_26,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D17
    {PB_7,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D18
    {PB_6,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D19
    {PB_5,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D20
    {PB_4,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D21
    {PA_28,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D22
    {PA_24,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D23
    {PA_23,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //D24
    {PA_22,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D25
    {PA_21,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D26
    {PA_20,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //D27
    {PA_19,    NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}//D28
};
改为/*
* Pins descriptions
*/
PinDescription g_APinDescription=
{
    {PA_7,      NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 0, Serial(0) TX
    {PA_8,      NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 1, Serial(0) RX
    {PA_27,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 2
    {PA_30,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 3
    {PB_1,      NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 4, A4, Recommended Serial2 TX
    {PB_2,      NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 5, A5, Recommended Serial2 RX
    {PB_3,      NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 6, A6,
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //7
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //8
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //9
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //10
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //11
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //12
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //13
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //14
    {NC,      NOT_INITIAL, NOT_INITIAL                        , NOT_INITIAL}, //15
    {PA_25,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //Arduino pin 16, PWM, Default Serial2 TX, I2C0 SCL, IR TX
    {PA_26,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //Arduino pin 17, PWM, Default Serial2 RX, I2C0 SDA, IR RX
    {PA_15,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 18, SPI1 CS
    {PA_14,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ            , NOT_INITIAL}, //Arduino pin 19, SPI1 CLK, GREEN LED
    {PA_13,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}, //Arduino pin 20, SPI1 MISO, PWM, BLUE LED
    {PA_12,   NOT_INITIAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM    , NOT_INITIAL}//Arduino pin 21, SPI1 MOSI, PWM, RED LED
};

3-修改GPIO数量:
打开
C:\Users\user\AppData\Local\Arduino15\packages\realtek\hardware\AmebaD\3.0.6\variants\rtl8721d\variant.h

#define TOTAL_GPIO_PIN_NUM            (29)改为
#define TOTAL_GPIO_PIN_NUM            (22)保存修改即可.

a2302004040 发表于 2020-11-17 22:33

感觉有好几楼被吞了,我还是做成pdf文档有时间发上来吧..

a2302004040 发表于 2020-11-18 22:00

1.点灯(下)
之后让我们尝试官方的Blink程序。需要注意的是,LED_BUILTIN在这个开发板上并不可用,你需要把它替换为19,20或21.


void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(19, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(19, HIGH);   // turn the LED on (HIGH is the voltage level)
delay(1000);                     // wait for a second
digitalWrite(19, LOW);    // turn the LED off by making the voltage LOW
delay(1000);                     // wait for a second
}

点击菜单栏里的对勾,代码应该可以成功通过编译。否则请检查之前的步骤是不是改错了什么东西。

接下来就要将代码上传到开发板上了,这也是这个开发板的第一个坑点:
这个芯片上传程序的串口是LOG_TX(PA7)和LOG_RX(PA8),而这个开发板的板载USB转串口芯片连接的是串口0:TX_0(PB1)和RX_0(PB2).
你可以使用另一个USB转串口模块来连接LOG_TX和LOG_RX串口,不过你也可以用两条线将PA7与PB1相连,PA8与PB2相连,这样就可以利用板载的USB转串口芯片上传程序。

这个开发板并没有自动下载的电路,你需要手动操作来进入下载模式:
在开发板通电的情况下,首先按住开发板右侧的"Burn"按钮不要松开,之后短按一下左侧的”RST“按钮,之后松开"Burn"按钮。此时以115200波特率打开串口监视器,如果你看见有方块在不断出现,那么已经进入了下载模式。

之后你就可以点击上传按钮,将程序烧录到开发板中。需要注意的是,在上传成功后你的程序并不会自动开始执行,你需要再手动按一次"RST"按钮。

这时你应该可以看到板载的绿灯在闪烁,这标志着你已经成功完成了以上所有的步骤。

a2302004040 发表于 2020-12-23 23:52

2. 5G WiFi
这个开发板最大的亮点就是支持5G WiFi,并且使用起来也非常简单。

2.1 连接5G WiFi:
代码和Arduino WiFi库的基本一致。只要指定5G的WiFi ssid和密码,就可以直接连接,无需特殊的设置。

2.2 5G WiFi热点:直接上代码:

#include <WiFi.h>

char ssid[] = "yourNetwork";//设置SSID
char pass[] = "Password";   //设置密码
char channel[] = "1";         //设置wifi信道. 如果要使用5G Wifi, 直接设置到对应的信道,比如52或153即可
int ssid_status = 0;         //是否隐藏ssid, 为1则隐藏

void setup() {
    //初始化串口
    Serial.begin(115200);

    int status = WL_IDLE_STATUS;
    //启动WiFi热点
    while (status != WL_CONNECTED) {
      Serial.print("Attempting to start AP with SSID: ");
      Serial.println(ssid);
      status = WiFi.apbegin(ssid, pass, channel, ssid_status);
      delay(10000);
    }

    //热点已启动
    Serial.println("AP mode already started");
    Serial.println();
}

void loop() {
}

a2302004040 发表于 2020-12-25 22:43


补图,第二个就是rtl8720的热点,此时信道为161,可以看到是5G wifi



页: [1] 2 3 4
查看完整版本: 支持双频WiFi和蓝牙ble5.0的Arduino开发板:Ameba RTL8720DN rtlduino