【小安派R2测评】安信可小安派R2——开箱与环境搭建

[复制链接]
查看665 | 回复2 | 2024-9-24 23:14:37 | 显示全部楼层 |阅读模式

本帖最后由 SweetSmile 于 2024-10-16 23:40 编辑

本帖最后由 SweetSmile 于 2024-10-16 23:39 编辑

本帖最后由 SweetSmile 于 2024-10-16 23:06 编辑

本帖最后由 SweetSmile 于 2024-9-24 23:13 编辑

本帖最后由 SweetSmile 于 2024-9-24 22:54 编辑

一、小安派开箱

很幸运能被安信可选中体验小安派R2,这块板子搭载了BL618,是一颗拥有WiFi与BLE的高性能芯片,板子外设和功能就不再过多的赘述了,下面贴上两份官方的规格书和参考文档链接,有兴趣的话可以翻阅一下,写的还是比较清晰的。

1、AI-M61-32S-kit——规格书

https://docs.ai-thinker.com/_media/ai-m61-32s-kit_v1.1.2_product_specification_cn.pdf

2、BL616/BL618参考手册

https://docs.ai-thinker.com/_media/bl616_bl618_rm_zh_cn_0.96_open_.pdf

当园长通知我被选中很是期待它的到来,经过几天的漂流,我也是成功把小安派接回了家。

1、全家福

freecompress-1.jpg

<h3 align = "center">图1</h3>

freecompress-2.jpg

<h3 align = "center">图2</h3>

可以看到,园长这次活动真的很大方啊,再次感谢,这块四寸的86屏真的很漂亮的说,板子是单声道但还是配了两个扬声器,大气哦,而且还有这颗130万像素点的usb摄像头,可以说,配置豪华得远远超出了我的期待。(原以为就一块主板和86屏)

2、小安派R2主板

freecompress-3.jpg

<h3 align = "center">图3</h3>

freecompress-4.jpg

<h3 align = "center">图4</h3>

这就是主控板的全身照了,可以看得出来,板子做工很好,沉金板来的,预留的接口很丰富。背面还预留了tf卡座和各个测试点,这是我非常喜欢的一点,作为一块学习板来说,这些测试点非常方便软件调试和问题分析,虽说不大用得到(小声)。嘿嘿,可以看到园长安派打包的时候很贴心的哦,用了一块泡棉保护排针,点赞一手👍。

3、上电

freecompress-5.jpg

<h3 align = "center">图4</h1>

欸嘿,看都看到这里了,这不得来波点灯,直接怼上屏幕,插入Type-C。芜湖,也是成功点灯。板子出场默认烧录了一个固件,用GUI-Guider做的一个界面,还是比较漂亮的,两个switch也做了交互,就是字体选小了点,有点糊,不然就更好看了。

简简单单的开箱就到这里了,后续就进入环境搭建了,不懂多久才能写完哦,当了个打工人,只能下班抽点时间摸摸。

二、环境搭建

相较于最初,社区内环境搭建的教程和帖子已经数不胜数了,简直可以挑花眼去,这边直接贴出几个高质量的教程贴。

1、Arduino环境搭建

用Arduino真的是很巴适,开发简单易上手,众多的库可以调用,环境搭建也十分的方便,就是可能需要科学工具。具体安装方式可以参考下面的帖子。

Arduino参考

环境搭建好,那肯定少不了祖传的点灯环节,简单的使用Arduino库的串口来点一下灯。

/*led灯珠引脚配置*/
#define RED 12
#define GREEN 14
#define BULE 15
/*串口接收缓存*/
char revdata[20];
char revlen = 0;
/*led控制函数*/
void led_turn(char c, int pin) {
  if (revdata[1] == 'N')
    digitalWrite(pin, HIGH);
  if (revdata[1] == 'F')
    digitalWrite(pin, LOW);
}

void setup() {
  /*串口初始化*/
  Serial.begin(2000000);
  Serial.println("Hello");
  /*初始化led引脚作为输出模式*/
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BULE, OUTPUT);
  /*led默认关闭*/
  digitalWrite(RED, LOW);
  digitalWrite(GREEN, LOW);
  digitalWrite(BULE, LOW);
}
void loop() {
  /*串口接收*/
  while (Serial.available() > 0) {
    revdata[revlen++] = char(Serial.read());
    delay(2);
  }
  if (strlen(revdata) > 0) {
    /*打印串口接收到的数据*/
    Serial.println(revdata);
    /*
    串口指令判断
    RN:开启红灯
    RF:关闭红灯
    蓝绿同理
    */
    switch (revdata[0]) {
      case 'R':
        led_turn(revdata[1], RED);
        break;
      case 'G':
        led_turn(revdata[1], GREEN);
        break;
      case 'B':
        led_turn(revdata[1], BULE);
        break;
      default:
        break;
    }
    /*串口接收缓存*/
    memset(revdata, 0, strlen(revdata));
    revlen = 0;
  }
}

Arduino库API函数推荐参阅以下几个链接:

DFROBOT

太极创客

2、官方SDk环境搭建

官方环境搭建也很简单,其实主要就是获取SDK包,在环境变量中添加好编译工具,但这个包存放在git上,所以需要安装git工具方便拉取,编辑器的话推荐使用vscode,个人觉得很好用,主要是界面主题很好看哈哈,下面就是社区内详细具体的搭建过程帖子了。

想自己拉取SDK的话可以参照这个帖子,这帖子里有编译工具路径添加说明:Windows环境搭建

想偷懒的话官方网站也有一键脚本:一键脚本

不过我更推荐下载离线包,保存起来,错误修改了SDK还可以掏出来重新解压一个就好了:离线包

根据上面这几个帖子搭好环境环境后就可以愉快的点灯了,照例使用串口点灯,在例程gpio_input_output工程下进行修改。

#include "bflb_gpio.h"
#include "board.h"
#include "bflb_core.h"
#include "bflb_uart.h"
/*led灯珠引脚配置*/
#define RED   12
#define GREEN 14
#define BLUE  15
/*串口接收缓存*/
char revdata[20];
char revlen = 0;
//设备句柄
struct bflb_device_s *gpio;
struct bflb_device_s *uart0;
/*led控制函数*/
void led_turn(char c, int pin)
{
    if (revdata[1] == 'N')
        bflb_gpio_set(gpio, pin);
    if (revdata[1] == 'F')
        bflb_gpio_reset(gpio, pin);
}
int main(void)
{
    board_init();
    gpio = bflb_device_get_by_name("gpio");
    uart0 = bflb_device_get_by_name("uart0");
    bflb_gpio_init(gpio, RED, GPIO_OUTPUT | GPIO_SMT_EN);
    bflb_gpio_init(gpio, GREEN, GPIO_OUTPUT | GPIO_SMT_EN);
    bflb_gpio_init(gpio, BLUE, GPIO_OUTPUT | GPIO_SMT_EN);
    while (1) {
        while (bflb_uart_rxavailable(uart0)) {
            revdata[revlen++] = bflb_uart_getchar(uart0);
            bflb_mtimer_delay_ms(2);
        }
        if (revlen != 0) {
            revdata[strlen(revdata)] = '\0';
            /*打印串口接收到的数据*/
            printf("%s\n", revdata);
            /*
                串口指令判断
                RN:开启红灯
                RF:关闭红灯
                蓝绿同理
            */
            switch (revdata[0]) {
                case 'R':
                    led_turn(revdata[1], RED);
                    break;
                case 'G':
                    led_turn(revdata[1], GREEN);
                    break;
                case 'B':
                    led_turn(revdata[1], BLUE);
                    break;
                default:
                    break;
            }
            /*串口接收缓存*/
            memset(revdata, 0, strlen(revdata));
            revlen = 0;
        }
    }
}

值得一提的是,通过翻看board_init()函数,会发现,串口0已经被初始化并绑定了控制台用于输出调试信息,所以我们并不需要再次初始化它,实现串口接收处理即可,为了方便我使用了串口轮询接收,其实最好改成dma中断接收,这样可以减少cpu运算。

自定义工程路径

或许有这么一个需求,需要在自定义路径下存放一个干净简洁的工程目录。毕竟在 VScode 打开 AiPi-Open-Kits 文件夹会发现打开了一堆密密麻麻的的文件,并且点击一个头文件进行查看就会发现,都不懂跳转到了哪里,属实有点混乱哈哈。

1、复制需要的工程模板到指定路径

我就拿经典的helloworld演示一下,复制结束后使用vscode打开咯

image.png

2、在Makefile文件中指定SDK路径

image.png

这时候新建一个终端,make一下就编译可以了

image.png

image.png

3、添加includePath

这时候打开mian.c就会发现头文件报红,其实是vscode没找到头文件导致的,打开c_cpp_properties.json将头文件路径添加一下就好了

image.png

这样子就得到一个干净舒服的工程了。注意:**需要编译过一次才能这样添加,不然的话没有.vscode文件夹,那就要通过C/C++配置进行添加**。

三、小安派R2工程编译

小安派r2和ai-m61-32s-kit一样是使用BL618模组,它两的环境搭建都是一样的。不过r2出厂时进行了加密处理所以在运行的时候,需要指定特定的 boot2及验证固件。否则程序可能无法正常运行。这个描述在**AiPi-Eyes-R2_V1.0中可以看到。**

img

这部分其实知道就好,不用操心,因为R2出厂时固件源码就是AiPi-Open-Kits下的AiPi-Eyes-Rx工程

image.png

使用vscode打开这个工程后,查看整个工程目录架构,可以看到已经配置好了lvgl、freeRTOS等组件,lvgl默认运行的是NXP的guiguider工具绘制的界面。

接着把mian中的其他任务通通注释掉,来跑一下lvgl的压力测试demos

image.png

make一下会出现一个报错,其实是lvgl的压力测试演示的宏没开导致的

image.png

来到mian文件的头文件这,打开#include "demos/lv_demos.h",接着再找到**if LV_USE_DEMO_STRESS的定义,跳转进去将配置打开**

image.png

再make一下就可以看到编译通过了,使用make flash COMX=COM8(8为自己的端口号)烧录进板子,复位一下。R2的性能还是很强劲的,压力测试下,平均帧率可以到30帧以上。

lv_demo_stress.gif

<h2>四、DIY小玩意

一开始拿到这板子屏幕最直接的想法就是做智能家居、思路:其他单片机设备连接传感器采集数据后通过ble传输到小安派R2、然后小安派R2一边通过屏幕显示数据、一边连接wifi将数据上传到mqtt服务器,实现手机app实时查看和控制家庭设备。也确实是这么做的,mqtt服务器也已经搭好了,使用emqx在自己的电脑上部署服务器,只要设备与电脑在同一个局域网内即可进行通信。但现在腰斩了,属实是抱歉,生活中一些事情导致没有太多时间把玩这块板子。现在只好先将一个简陋的串口调试器发出来,智能家居这块等抽出时间来在接着继续了。

<h3 >1、使用Gui guider编辑生成简单的UI界面

image.png

<h3 >2、在事件回调中实现串口收发

代码实现起来很简单,我就不发出来招笑了。 image.png

<h3 >3、效果展示

https://www.bilibili.com/video/BV1U9seewEuF/

<h2 >五、不足与建议

  1. 这块板子在我看来不足的点是很少的,大屏幕和兼具ble与WiFi注定了很高的可玩性。

唯一一点不足就是屏幕与板子的连接了,不固定一下用起来真的是心惊肉跳的,生怕断了。

建议的话,建议以后把type-c与屏幕排线FPC座子分开,没有固定架子的话,插线时好怕的。

回复

使用道具 举报

爱笑 | 2024-9-25 08:35:51 | 显示全部楼层
不错不错!
用心做好保姆工作
回复

使用道具 举报

bzhou830 | 2024-9-25 09:04:51 | 显示全部楼层
摄影师就是你。
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则