查看: 72|回复: 0

[项目提交] 《2024 DigiKey 汽车应用创意挑战赛》充电监测系统

[复制链接]
  • TA的每日心情
    无聊
    6 天前
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 6 天前 | 显示全部楼层 |阅读模式
    分享到:
    一、项目名称:
    基于树莓派的家充充电监测系统


    二、项目概述:
    电车的发展尤其迅猛,接近一半家庭都会选择新能源电车,这使得充电桩的需求愈发广泛,而家充又是普通家庭不可或缺的一部分,普通的充电桩都没用电量实时统计和电压监控功能,这个设计便应运而生。


    该项目基于树莓派和ESP8266作为数据处理设备,主要功能为:
    1.电压电流监测,实时输出当前电压电流情况;
    2.电源开关控制;
    3.小程序输出当前充电信息
    4.小程序WIFI联网控制充电电源开关

    硬件电源主板原理图如下:
    2.png
    ESP8266串口与树莓派通讯,且做WIFI数据收发工作,通过MQTT协议与云平台链接
    ESP8266 SDK与ESP8266 IDEEclipse IDE:它是由安可信发布的一款用于ESP8266二次开发的软件平台,由Eclipse集成了相关插件,相对于官方开发环境配置。Eclipse IDE简易、方便,最重要的是可以在Windows下直接运行,编译过后能够直接生成bin文件,通过烧写工具ESP8266Flasher将bin文件烧入ESP8266即可。

    ESP8266 SDK(Software Development Kit):用户根据自己的ESP8266型号在乐鑫官网上下载需要的SDK。SDK包含了所有驱动,为用户提供了一个非常简单易用的平台,虽然其底层代码对用户不透明,但都提供了接口函数,用户根据编程手册可以直接调用。

    主程序user_init()部分代码如下:

      void user_init()

      {

      uart_init(BIT_RATE_115200,BIT_RATE_115200);

      //串口初始化

      user_set_station_config();

      //esp8266 WiFi信息配置

      }

      void user_set_station_config()

      {

      struct station_config stationconfig;

      os_memset(&stationconfig.ssid, 0, 32);

      os_memset(&stationconfig.password, 0, 64);

      os_memcpy(&stationconfig.ssid, "WIFINAME", 8); //设定连接的WiFi

      os_memcpy(&stationconfig.password, "passward.", 8); //WiFi密码

      stationconfig.bssid_set=0;

      wifi_station_set_config(&stationconfig);

      os_timer_disarm(&test_timer);

      os_timer_setfn(&test_timer,(os_timer_func_t*)user_check_ip, NULL);

      os_timer_arm(&test_timer, 2000, 1);

      }

      最后配置TCP客户端信息,这里需要注意连接TCP服务器时必须确保WiFi已成功连接,因此设定了一个定时器test_timer,该定时器的作用是通过WiFi状态接口函数wifi_station_get_connect_status()循环检测WiFi是否连接成功,当WiFi连接成功后配置TCP客户端信息。下面为建立TCP连接的程序:

      user_check_ip()

      {

      tcpclient.type=ESPCONN_TCP;//tcp连接方式

      tcpclient.state = ESPCONN_NONE;

      tcp_server_ip.addr = 0;

      const char esp_server_ip[4] = {x,x,x,x};

      os_memcpy(tcpclient.proto.tcp->remote_ip, esp_server_ip, 4);//远程IP设定

      tcpclient.proto.tcp->remote_port = 8888; // 远程端口设定

      tcpclient.proto.tcp->local_port = espconn_port(); //本地端口设定

      espconn_connect(&tcpclient);//连接tcp 服务器

      }

      remote_ip可以选择自动分配或固定IP,远程端口remote_port根据上位机选择,通常选择比较大的,小的端口通常被上位机一些系统服务占据。

    采集方案:针对实时更新数据:比如瞬时电压、电流、功率。由ESP8266向电能表循环发送N条报文,电能表响应每一条报文,ESP8066解析N条报文,得到数据存入自身内存。上位机向ESP8266循环下发N条查询报文,ESP8266取出内存中的数据回复上位机。

    树莓派上在有基础系统的情况下

    cd ~git clone https://github.com/MGod-monkey/Raspberry_Ups.gitcd raspberry_ups/Software/

    将库克隆下来并且安装

    sudo chmod +x install.shsudo ./install.sh

    sudo systemctl status ups.service

    复制配置文件到node-red,并且安装node-red控制台
    cp ups_flow.json ~/.node-red/lib/flows/ups_flow.json
    cd ~/.node-red/
    npm i node-red-dashboard
    启动node-red服务,直接启动或者设置开机自启
    sudo node-red
    sudo systemctl enable nodered.service
    sudo systemctl start nodered.service
    树莓派端控制台显示如图:
    6.png

    三、作品实物图
    1.png 3.png 5.png 6.png

    四、项目文档
    如附件
    4.png

    file.rar

    750.33 KB, 下载次数: 0

    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    手机版|小黑屋|与非网

    GMT+8, 2025-1-28 01:18 , Processed in 0.115197 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.