0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【开源获奖案例】基于T5L智能屏的便携功率计解决方案

迪文智能屏 2024-08-01 08:13 次阅读

——来自迪文开发者论坛

本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能屏的便携功率计解决方案。该方案通过智能屏串口进行通信,实时接收监测到的电流、电压和功率数据,并同步显示在屏幕上,使用户可以直观地监测电气参数状态。此外,该方案还支持WiFi联网,无论是手机、PC还是其他移动设备,用户均可轻松访问电气数据,大幅提升了数据管理的便捷性与灵活性。适用于电气工程、智能家居工业自动化等领域。

UI素材展示

e9c391d6-4f9a-11ef-817b-92fbcf53809c.png

e9d348ba-4f9a-11ef-817b-92fbcf53809c.png

e9d7471c-4f9a-11ef-817b-92fbcf53809c.png

e9ec0ed6-4f9a-11ef-817b-92fbcf53809c.png


GUI工程设计 e9fab602-4f9a-11ef-817b-92fbcf53809c.png C51工程设计

主控板将I2C采集的电流、电压和功率数据,通过串口发送给迪文智能屏,同时通过UDP将数据发送至上位机,部分参考代码如下:

staticvoidwifi_event_handler(void*arg,esp_event_base_tevent_base,int32_tevent_id,void*event_data){ if(event_id==WIFI_EVENT_AP_STACONNECTED){ wifi_event_ap_staconnected_t* event = (wifi_event_ap_staconnected_t*) event_data;ESP_LOGI(TAG,"station"MACSTR"join,AID=%d",MAC2STR(event->mac),event->aid);} elseif(event_id==WIFI_EVENT_AP_STADISCONNECTED){ wifi_event_ap_stadisconnected_t* event = (wifi_event_ap_stadisconnected_t*) event_data;ESP_LOGI(TAG,"station"MACSTR"leave,AID=%d",MAC2STR(event->mac),event->aid); }}void wifi_init_softap(void){ ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); esp_netif_create_default_wifi_ap(); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg));ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,ESP_EVENT_ANY_ID,&wifi_event_handler,NULL,NULL)); wifi_config_twifi_config= { .ap = { .ssid = EXAMPLE_ESP_WIFI_SSID, .ssid_len = strlen(EXAMPLE_ESP_WIFI_SSID), .channel = EXAMPLE_ESP_WIFI_CHANNEL, .password = EXAMPLE_ESP_WIFI_PASS, .max_connection = EXAMPLE_MAX_STA_CONN,.authmode=WIFI_AUTH_WPA_WPA2_PSK}, }; if (strlen(EXAMPLE_ESP_WIFI_PASS) == 0) { wifi_config.ap.authmode = WIFI_AUTH_OPEN; } ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config)); ESP_ERROR_CHECK(esp_wifi_start()); ESP_LOGI(TAG, "wifi_init_softap finished. SSID:%s password:%s channel:%d", EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS, EXAMPLE_ESP_WIFI_CHANNEL);}esp_ip4_addr_t ip_addr;static void udp_server_task(void *pvParameters){ // 将IPv4地址转换为字符串格式的IP地址 char ip_addr_str[INET_ADDRSTRLEN]; inet_ntoa_r(ip_addr.addr, ip_addr_str, sizeof(ip_addr_str)); // 设置广播地址和接收方的端口号 struct sockaddr_in broadcast_addr = { .sin_addr.s_addr = ip_addr.addr | htonl(0xFF), //广播地址,其类型为uint32_t .sin_family = AF_INET, .sin_port = htons(BROADCAST_PORT), }; // 将广播地址转换为字符串 ESP_LOGI(TAG, "broadcast_addr IP: %s", inet_ntoa(broadcast_addr.sin_addr.s_addr)); // Create a socket for UDP broadcast int broadcast_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (broadcast_socket < 0) { ESP_LOGE(TAG, "Failed to create socket: %d", broadcast_socket); goto error; } // 设置套接字选项以启用地址重用 int reuseEnable = 1; setsockopt(broadcast_socket, SOL_SOCKET, SO_REUSEADDR, &reuseEnable, sizeof(reuseEnable)); // 使能广播 int broadcast_enable = 1; if (setsockopt(broadcast_socket, SOL_SOCKET, SO_BROADCAST, &broadcast_enable, sizeof(broadcast_enable)) < 0) { ESP_LOGE(TAG, "Failed to enable broadcasting"); close(broadcast_socket); goto error; } // Send the broadcast message every BROADCAST_INTERVAL_MS milliseconds while (1) { // 创建一个 JSON 对象,并添加三个属性 cJSON *json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "device", "EZPower"); cJSON_AddStringToObject(json, "ip", ip_addr_str); cJSON_AddNumberToObject(json, "port", 3334); // 将 JSON 数据转换为字符串 char *json_str = cJSON_Print(json); ESP_LOGI(TAG, "Broadcasting message: %s", json_str); dwin_screen_send(json_str, strlen(json_str)); int ret = sendto(broadcast_socket, json_str, strlen(json_str), 0, (struct sockaddr *)&broadcast_addr, sizeof(broadcast_addr)); if (ret < 0) { ESP_LOGE(TAG, "Failed to send broadcast message: %d", ret); } cJSON_Delete(json); free(json_str); vTaskDelay(2000 / portTICK_PERIOD_MS); }error: vTaskDelete(NULL);}void app_main(void){ //Initialize NVS esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); ESP_LOGI(TAG, "ESP_WIFI_MODE_AP"); wifi_init_softap(); ip_addr.addr = 0xFF04A8C0; dwin_init(); xTaskCreate(udp_server_task, "udp_server", 4096, (void*)AF_INET, 5, NULL); }

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    3121

    浏览量

    42049
  • 功率计
    +关注

    关注

    2

    文章

    190

    浏览量

    29613
  • 智能屏幕
    +关注

    关注

    0

    文章

    62

    浏览量

    3254
收藏 人收藏

    评论

    相关推荐

    开源获奖案例】基于T5L智能的指纹识别解决方案

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的指纹识别解决方案
    的头像 发表于 07-06 08:13 124次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的指纹识别<b class='flag-5'>解决方案</b>

    基于T5L智能的万能红外控制器

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的万能红外控制器。工程师通过
    的头像 发表于 06-22 08:13 206次阅读
    基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的万能红外控制器

    基于T5L芯片的多功能物联网开发套件

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L芯片的多功能物联网开发套件。工程师充分运用了T5L1芯片的丰富外设功能,集成了USB、音频喇叭、PWM信号接
    的头像 发表于 06-14 08:13 415次阅读
    基于<b class='flag-5'>T5L</b>芯片的多功能物联网开发套件

    开源获奖案例】多功能称重器

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——多功能称重器。工程师采用4英寸COF智能,通过T5LOS核与HX711模
    的头像 发表于 04-20 08:12 241次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】多功能称重器

    开源获奖案例】智能培养室

    为大家推送迪文开发者论坛获奖开源案例——智能培养室。工程师通过Modbus协议实现了T5L智能
    的头像 发表于 01-09 08:13 300次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】<b class='flag-5'>智能</b>培养室

    开源获奖案例】四轴机械臂控制系统

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——四轴机械臂控制系统。工程师采用T5L智能,基于DGUS软件“旋转指示”控
    的头像 发表于 12-23 08:13 854次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】四轴机械臂控制系统

    ​【AWTK开源智能串口方案方案介绍和工作原理

    本篇文章介绍一下AWTK开源智能串口方案的基本原理和实际使用效果,包括主要特点、应用场景、工作原理以及简单的Demo演示。引言:AWTK-HMI是基于AWTK与AWTK-MVVM开发
    的头像 发表于 12-21 08:24 740次阅读
    ​【AWTK<b class='flag-5'>开源</b><b class='flag-5'>智能</b>串口<b class='flag-5'>屏</b><b class='flag-5'>方案</b>】<b class='flag-5'>方案</b>介绍和工作原理

    安卓与迪文的无线交互应用

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——安卓与迪文的无线交互应用。工程师采用T5L智能
    的头像 发表于 12-13 08:13 494次阅读
    安卓与迪文<b class='flag-5'>屏</b>的无线交互应用

    浏览器网页与T5L迪文串口深度扩展(Node-RED技术)

    ——来自迪文开发者论坛本期为大家推送一个很有创意的迪文开发者论坛获奖开源案例——浏览器网页与T5L迪文串口深度扩展(Node-RED技术)。工程师使用
    的头像 发表于 12-09 08:13 606次阅读
    浏览器网页与<b class='flag-5'>T5L</b>迪文<b class='flag-5'>屏</b>串口深度扩展(Node-RED技术)

    AWTK 开源智能串口方案

    AWTK开源智能串口方案发布,旨在解决传统串口诸多痛点,为用户提供更开放、更易用、更强大的开源
    的头像 发表于 12-02 08:24 750次阅读
    AWTK <b class='flag-5'>开源</b><b class='flag-5'>智能</b>串口<b class='flag-5'>屏</b><b class='flag-5'>方案</b>

    开源获奖案例】水泥多量测定仪

    ——来自迪文开发者论坛本期为大家推送的论坛获奖开源案例可用于建筑行业检测水泥成分含量——基于T5L智能的水泥多量测定仪。工程师基于
    的头像 发表于 11-18 08:13 367次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】水泥多量测定仪

    基于RJM8L003的食品温度解决方案

    基于RJM8L003的食品温度解决方案
    的头像 发表于 11-06 17:02 486次阅读
    基于RJM8<b class='flag-5'>L</b>003的食品温度<b class='flag-5'>计</b><b class='flag-5'>解决方案</b>

    基于RJM8L151S的便携式消毒机解决方案

    基于RJM8L151S的便携式消毒机解决方案
    的头像 发表于 11-06 16:44 443次阅读
    基于RJM8<b class='flag-5'>L</b>151S的<b class='flag-5'>便携</b>式消毒机<b class='flag-5'>解决方案</b>

    开源获奖案例】基于T5L的smtp邮件发送器

    ——来自迪文开发者论坛本期为您推送一个非常实用的迪文开发者论坛获奖开源案例——基于T5L的smtp邮件发送器。工程师采用T5L智能
    的头像 发表于 10-31 08:14 596次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b>的smtp邮件发送器

    开源获奖案例】智能猫粮控制系统

    本期为大家推送迪文开发者论坛的获奖开源案例:智能猫粮控制系统。工程师使用迪文智能实现了监测猫粮的温度、湿度、余量,保存猫咪吃粮记录等功能,
    的头像 发表于 09-16 08:30 554次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】<b class='flag-5'>智能</b>猫粮控制系统