412|6

1883

帖子

3

资源

版主

【平头哥RVB2601创意应用开发】项目的杂谈 [复制链接]

本帖最后由 lugl4313820 于 2022-4-2 21:47 编辑

【感谢】这里要特别感谢@xinmeng_wit,他的贴子【新提醒】【平头哥RVB2601创意应用开发】3、wifi网络通信 - 平头哥RISC-V RVB2601活动专区 - 电子工程世界-论坛 (eeworld.com.cn),让我明白了如何写wifi接收的回调函数,与注册命令函数,再次感谢。

【杂谈】这次参加平头哥的创意活动,我愿来的设想是做一个对冷库的温度监测的管理系统,因为我的业务有很重要的一块就是对冷库和冰箱的疫苗(大家都接种过新冠疫苗吧)的温度进行管理,我进入单片机的领域也是因为要做温度监控而入的坑。当时一个温度要好几千,当时没有经费,就想着自己弄,结果5年过去了,还没有弄成。虽然成品已经做好,但是不能推广,一来这行业不是说你的产品好,价格便宜就能推出去。但是我的还是坚持想做一个更加智能的产品,即使它没出生就可能死了的东西。

      最先的设想是用wifi(ESP8266)采集数据通过局域网发到服务器上,其实这个方案是通过了的,而且也免费给几个兄弟单位使用过。但是ESP8266就是电池不能解决,还有就是冰箱是铁壳,信号不稳定,特别是冷库,四面全是铁。后面为了控制功耗,我学习了stm8L,用他来定时关断ESP8266。这个也实现了,但是工作调岗的原因,我不管疫苗了,后因为温度太准了,后来管理的同志经常收到报警,所以就kill了他,这项目也就停止了。

      2020年因为新冠疫情,我又重新回来疫苗管理的岗位,而且《疫苗管理法》实施,更加加强了疫苗管理要求,但是我回来时也装备了在线的疫苗温度监控系统。当然价格也是贵得吓死人,但是,现有的温度监控还只是单纯的温度监控,没有引入电源监控的管理。

     我的设想是增加对电源的监控,电源的电压、电流等进行监控,在停电或者设备没有运转的情况下,及时预先的告之用户,以免温度失控才做出报警信息。

【目前遇到的困难】当时我看中这款开发板是有wifi,有屏幕,感觉我实现起来很容易。但是当我拿到开发板时想结合lVGL+WIFI就显示内存不足,然后串口也不够。跟我想象的差远了,还是我太年轻了。而且目前对于这块板子的学习资源也是少得可怜。

    前些天管理员善意的提醒我要加快项目的进度,我感觉压力山大,也有放弃的想法。

      但是回想还是想办法克服困难继续下去吧。

      今天是放假,早上起来静下心来打开hello world开始学习原代码,同时也到平头哥学习了Yoc的基本概念==。上午理清了系统初始化等一些基本的概念。

     进入正题,这里把wifi发送与接的知识记录下来:

    其实原来我也明白配置连网的地址就是network_init(),我当时也写过贴子,如何连网,通过学习@xinmeng_wit的文章,我才懂得如何加入接收到数据的回调函数的地点:


static void network_init()
{
    w800_wifi_param_t w800_param;
    /* init wifi driver and network */
    w800_param.reset_pin      = PA21;
    w800_param.baud           = 1*1000000;
    w800_param.cs_pin         = PA15;
    w800_param.wakeup_pin     = PA25;
    w800_param.int_pin        = PA22;
    w800_param.channel_id     = 0;
    w800_param.buffer_size    = 4*1024;

    wifi_w800_register(NULL, &w800_param);
    app_netmgr_hdl = netmgr_dev_wifi_init();

    if (app_netmgr_hdl) {
        utask_t *task = utask_new("netmgr", 2 * 1024, QUEUE_MSG_COUNT, AOS_DEFAULT_APP_PRI);
        netmgr_service_init(task);
        netmgr_config_wifi(app_netmgr_hdl, "HUAWEI-myssid", sizeof("HUAWEI-myssid"), "mypasswd...", sizeof("mypasswd..."));//配置上网,当然这个在后面需要改正的地方,不知道有没有象esp8266一样有用手机配网的方法
        w800_packet_input_cb_register(&w800_data_receive_callback);//就是这里加入接收到数据的回调函数!!!
		netmgr_start(app_netmgr_hdl);
    }
}

    再就是在main主函数中注册的取得IP后的函数增中发送的命令:

static void network_event(uint32_t event_id, const void *param, void *context)
{
    switch(event_id) {
    case EVENT_NETMGR_GOT_IP:
        LOGD(TAG, "net got ip");
		connect_tcp_server("192.168.3.192",3333);//这里在取得IP后发送一条指令
        break;
    case EVENT_NETMGR_NET_DISCON:
        LOGD(TAG, "net disconnect");
        break;
    }

    /*do exception process */
    app_exception_event(event_id);
}

其实在后面的项目中如果要发送数据也就执行这条命令就行了。

再有就注册控制台的命令是在..\my_pro\__workspace_pack__\sal\v7.4.3\cli\cl_ping.c下增加:

int cli_reg_cmd_at(void)
{
    static const struct cli_command at_cmd_info = {
        "tcp_client_test",
        "tcp client test",
        cmd_at_client_handler,
    };
    aos_cli_register_command(&at_cmd_info);//注册控制台命令。
    return 0;
}

//在以后的发送数据中使用这条指令
static void cmd_at_client_handler(char *wbuf, int wbuf_len, int argc, char **argv)
{
	const uint8_t pdata[] = "Hello RVB2601!\r\n";
	int len = sizeof(pdata);
	int timeout=120;

	w800_send_data(pdata,  len, timeout);
}

  到这里基本上就完成了tcp数据的收发,但是还有一个疑问,如何进行POST、MQTT的数据,这路还有很长呀,希望大伙指导指导我一下,拜托了!

image.png  


回复

6912

帖子

0

资源

五彩晶圆(中级)

进行POST、MQTT的数据确实需要准备一些知识

点评

可通要通过AT原始命来实现了。明天看看w800有没有MQTT的指令,不怕就用串口连NB-IOT算了,w800就让他gameover    详情 回复 发表于 2022-4-2 21:49

回复

1883

帖子

3

资源

版主

本帖最后由 lugl4313820 于 2022-4-2 21:51 编辑
Jacktang 发表于 2022-4-2 21:47 进行POST、MQTT的数据确实需要准备一些知识

可能要通过AT原始命令来实现了。明天看看w800有没有MQTT的指令,不行就用串口连NB-IOT算了,w800就让他gameover

 


回复

1883

帖子

3

资源

版主

int w800_at0(void)
{
    int ret = -1;
    int count = 3;

    aos_mutex_lock(&g_cmd_mutex, AOS_WAIT_FOREVER);

    atparser_clr_buf(g_atparser_uservice_t);

    if (atparser_send(g_atparser_uservice_t, "AT") == 0) {
        while (count --) {
            if (atparser_recv(g_atparser_uservice_t, "OK\n") == 0) {
                ret = 0;
                break;
            }
        }
    }

    atparser_cmd_exit(g_atparser_uservice_t);

    aos_mutex_unlock(&g_cmd_mutex);

    return ret;
}

可能要参照这个例子自己写个函数才能实现,看找不到得到w800的AT指令集。


回复

1883

帖子

3

资源

版主


回复

1883

帖子

3

资源

版主

GPIO · GitBook (t-head.cn) 这里有Yoc的,使用手册。


回复

1883

帖子

3

资源

版主

这个开发板w800的蓝牙开放使用吗,如果有蓝牙,那还和好象,配网什么都方便呀。


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表