eternal-echo / zigbee-gateway-stm32

0 stars 0 forks source link

通过at device来控制esp8266,移植linksdk,连接阿里云 #2

Closed eternal-echo closed 1 year ago

eternal-echo commented 1 year ago

实现

eternal-echo commented 1 year ago

例程

安信可提供的例程中先通过"AT+GETMAC""AT+VERSION"指令查看当前是否已经配网(串口收到包含CLOUD CONNECTED的信息),如果没配网,需要按下key0然后发送"AT+ALISMARTCONFIG"指令,然后检查json信息。 可以参考bc26软件包的实现方式

eternal-echo commented 1 year ago

alink json example

eternal-echo commented 1 year ago

linksdk

使用at_port.c来移植linksdk,AT版本的移植是在aiot_sysdep_portfile_t g_aiot_sysdep_portfile使用AT指令进行了进一层的封装。
通过系统api和at模块的网络api对接到底层。

aiot_os_al_t  g_aiot_freertos_api = {
    .malloc = __malloc,
    .free = __free,
    .time = __time,
    .sleep = __sleep,
    .rand = __rand,
    .mutex_init = __mutex_init,
    .mutex_lock = __mutex_lock,
    .mutex_unlock = __mutex_unlock,
    .mutex_deinit = __mutex_deinit,
};
aiot_net_al_t  g_aiot_net_at_api = {
    .establish = __at_establish,
    .recv = __at_recv,
    .send = __at_send,
    .close = __at_close,
};

初始化代码中设备系统接口及AT模块网络接口,然后设置AT设备,并完成AT模块的初始化。

int32_t at_hal_init(void)
{
    printf("at_hal_init \r\n");

    /*设置设备系统接口及网络接口*/
    aiot_install_os_api(&g_aiot_freertos_api);
    aiot_install_net_api(&g_aiot_net_at_api);

    /*enabled dma cycle recv*/
    uart_dma_rx_buf.head = uart_dma_rx_buf.tail = 0;
    if (HAL_OK != HAL_UART_Receive_DMA(&huart1, uart_dma_rx_buf.data, RING_BUFFER_SIZE)) {
        Error_Handler();
    }

    /*at_module_init*/
    int res = aiot_at_init();
    if (res < 0) {
        printf("aiot_at_init failed\r\n");
        return -1;
    }

    /*设置发送接口*/
    aiot_at_setopt(AIOT_ATOPT_UART_TX_FUNC, at_uart_send);
    /*设置模组*/
    aiot_at_setopt(AIOT_ATOPT_DEVICE, device);

    /*初始化模组及获取到IP网络*/
    res = aiot_at_bootstrap();
    if (res < 0) {
        printf("aiot_at_bootstrap failed\r\n");
        return -1;
    }

    return 0;
}

接收

初始化中已经启动了串口DMA的接收。

/*recv data to at module*/
static void _usart_recv_user(uint8_t *data, uint32_t size)
{
    if (NULL == data || 0 == size) {
        return;
    }
    /* 为调试方便,在中断接收中打印了数据,正式生产需删除 */
    printf("<<< %s", data);
    aiot_at_hal_recv_handle(data, size);
    return;
}

官方例程是在stm32的串口回调函数HAL_UART_RxCpltCallback中调用上面的处理函数,并且aiot_at_hal_recv_handle(data, size);通知linksdk处理数据。

zhoulinclip commented 3 weeks ago

如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习

eternal-echo commented 3 weeks ago

如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习

看看linksdk支持你的at模块不,支持的话填一下串口收发的接口就行了,不支持的话需要自己适配一下。

zhoulinclip commented 3 weeks ago

我没学过lwip和freertos,要学吗

---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 11:35 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) |

如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习

看看linksdk支持你的at模块不,支持的话填一下串口收发的接口就行了,不支持的话需要自己适配一下。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

eternal-echo commented 3 weeks ago

我没学过lwip和freertos,要学吗

---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 11:35 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) |

如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习

看看linksdk支持你的at模块不,支持的话填一下串口收发的接口就行了,不支持的话需要自己适配一下。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

不用啊,这个没用lwip,模块内部都有现成的。freertos可能用到一点,查查手册问gpt就够了。主要看你的需求,如果只是需要和我一样接入阿里云,你可以下载一下阿里云linksdk的例程学一下。

zhoulinclip commented 3 weeks ago

那你懂nbiot吗,我也想调一下这个,看哪个更好

---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 15:26 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) |

我没学过lwip和freertos,要学吗

---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 11:35 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) |

如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习

看看linksdk支持你的at模块不,支持的话填一下串口收发的接口就行了,不支持的话需要自己适配一下。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

不用啊,这个没用lwip,模块内部都有现成的。freertos可能用到一点,查查手册问gpt就够了。主要看你的需求,如果只是需要和我一样接入阿里云,你可以下载一下阿里云linksdk的例程学一下。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

zhoulinclip commented 3 weeks ago

那esp8266或者其他的wifi模块有没有可能在没网的时候自己做wifi使用啊

---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 15:26 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) |

我没学过lwip和freertos,要学吗

---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 11:35 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) |

如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习

看看linksdk支持你的at模块不,支持的话填一下串口收发的接口就行了,不支持的话需要自己适配一下。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

不用啊,这个没用lwip,模块内部都有现成的。freertos可能用到一点,查查手册问gpt就够了。主要看你的需求,如果只是需要和我一样接入阿里云,你可以下载一下阿里云linksdk的例程学一下。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

eternal-echo commented 3 weeks ago

那esp8266或者其他的wifi模块有没有可能在没网的时候自己做wifi使用啊 ---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 15:26 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) | 我没学过lwip和freertos,要学吗 ---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 11:35 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) | 如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习 看看linksdk支持你的at模块不,支持的话填一下串口收发的接口就行了,不支持的话需要自己适配一下。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.> 不用啊,这个没用lwip,模块内部都有现成的。freertos可能用到一点,查查手册问gpt就够了。主要看你的需求,如果只是需要和我一样接入阿里云,你可以下载一下阿里云linksdk的例程学一下。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.>

可以哇,可以开热点组网的,但是这个是局域网了,如果想用阿里云这样的平台,必须得有设备联网,nbiot是不错的选择。

zhoulinclip commented 3 weeks ago

好的,哥,我先去了解一下

---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 23:09 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) |

那esp8266或者其他的wifi模块有没有可能在没网的时候自己做wifi使用啊 … ---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 15:26 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) | 我没学过lwip和freertos,要学吗 ---- 回复的原邮件 ---- | 发件人 | Yu @.> | | 日期 | 2024年08月22日 11:35 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [eternal-echo/zigbee-gateway-stm32] 通过at device来控制esp8266,移植linksdk,连接阿里云 (Issue #2) | 如果我想弄调bc26(窄带物联网)和ESP8266模块,该怎么进行学习 看看linksdk支持你的at模块不,支持的话填一下串口收发的接口就行了,不支持的话需要自己适配一下。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.> 不用啊,这个没用lwip,模块内部都有现成的。freertos可能用到一点,查查手册问gpt就够了。主要看你的需求,如果只是需要和我一样接入阿里云,你可以下载一下阿里云linksdk的例程学一下。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.>

可以哇,可以开热点组网的,但是这个是局域网了,如果想用阿里云这样的平台,必须得有设备联网,nbiot是不错的选择。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>