[i=s] 本帖最后由 sujingliang 于 2025-4-10 11:39 编辑 [/i]
目前爱星物联主要采用模块固件+MCU SDK方式实现物联网应用。
本文用Ai-WB2模块+PICO2实践这一过程。


一、平台准备
爱星物联地址:https://www.iot-aithings.com/
1、爱星物联注册个用户创建产品
可以创建产品,也可以直接利用彩灯_demo,点击彩灯_demo进入配置

2、硬件开发
选择WB232S模组,固件版本选择1.2.6,然后下载。
这个固件需要烧录到Ai-WB2中,烧录过程略。
固件协议参见:串口协议文档

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


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

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

完成了模块固件下载和三元组激活,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的显示内容。





