发帖
3 0 0

【Ai-WB2评测】爱星物联平台实践

sujingliang
论坛元老

20

主题

16

回帖

5840

积分

论坛元老

积分
5840
Ai-WB2系列 75 3 7 天前
[i=s] 本帖最后由 sujingliang 于 2025-4-10 11:39 编辑 [/i]

目前爱星物联主要采用模块固件+MCU SDK方式实现物联网应用。

本文用Ai-WB2模块+PICO2实践这一过程。

14.png

13.png

一、平台准备

爱星物联地址:https://www.iot-aithings.com/

1、爱星物联注册个用户创建产品

可以创建产品,也可以直接利用彩灯_demo,点击彩灯_demo进入配置

6.png

2、硬件开发

选择WB232S模组,固件版本选择1.2.6,然后下载。

这个固件需要烧录到Ai-WB2中,烧录过程略。

固件协议参见:串口协议文档

7.png

3、MCU SDK下载

需要下载这个MCU SDK

我使用PICO2开发,所以需要将下载的SDK加入到PICO2的工程中。

8.png

10.png

4、三元组

生产管理中:生成一个三元组

9.png

通过串口工具发送AT指令,将三元组在模组中激活

11.png

完成了模块固件下载和三元组激活,Ai-WB2的准备工作已经完成。下面主要是PICO2的内容。

二、PICO2软件准备

MCU SDK中包括:

src文件:mcu_api.c;protocol.c;system.c

inc文件:config.h;mcu_api.h;protocol.h;system.h

按照MCU SDK开发手册,需要实现如下内容:

1、UartProtocolInit()函数需要在MCU启动后立即初始化,如此方可接收并处理串口数据

int main() {

    UartProtocolInit(); //按MCU SDK要求调用初始化
    stdio_init_all();

    uart1_init();
    lcd_init();

    xTaskCreate(led_task, "LED_Task", 256, NULL, 1, NULL);
    xTaskCreate(uart_task, "Uart_Task", 256, NULL, 1, NULL);
    vTaskStartScheduler();

    while(1){};
}

main函数中初始化UartProtocolInit函数,并初始化uart1用于PICO2和Ai-WB2通信。

2、UartProcessPro()需要轮询处理

void uart_task() {
    while (true) {
        UartProcessPro();
        vTaskDelay(100);
    }
}

3、在uart1中断接收函数中调用UartRevOneByte()

// RX interrupt handler
void on_uart_rx() {
    while (uart_is_readable(UART_ID)) {
        uint8_t ch = uart_getc(UART_ID);
        UartRevOneByte(ch);
        putchar(ch);
    }
}

4、实现protocol.c中的UartWriteData函数

char UartWriteData(unsigned char *dataBuff, unsigned char dataLen)
{
	//"请将MCU串口发送函数填入该函数,并删除该行"
    uart1_send_string(dataBuff, dataLen);
	return 0;
}

需要注意的是uart1发送函数不需要在字符串后发送回车换行字符。

void uart1_send_string(unsigned char *dataBuff, unsigned char dataLen)
{
    uint8_t i;
    for(i=0;i<dataLen;i++)
    {
        uart_putc(UART_ID, dataBuff[i]);
    }
}

5、protocol.c中实现点灯处理

static void ControlPowerstateState(unsigned char *value)
{
    powerstate_status = ProGetdpidValueBool(value);
    if(powerstate_status)
    {
        // 开关开状态
        lcd_set_cursor(0,0);
        lcd_print("light on ");
        gpio_put(25U, 1);
    }
    else
    {
        // 开关关闭状态
        lcd_set_cursor(0,0);
        lcd_print("light off");
        gpio_put(25U, 0);
    }

    UartReportBoolTypeData(CMD_POWERSTATE, powerstate_status);
}

三、运行

手机上安装爱星物联APP,下面图乱了。

基本就是完成添加设备,然后就可以用手机控制PICO2上LED亮灭和LCD1602的显示内容。

21.jpg

22.jpg

19.jpg

20.jpg

23.jpg

24.jpg

──── 0人觉得很赞 ────

使用道具 举报

赞~
真的是太棒了~
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28427 个
  • 话题数: 40507 篇