回答

收藏

《2024 DigiKey 汽车应用创意挑战赛》充电监测系统

#竞赛 #竞赛 837 人阅读 | 0 人回复 | 2025-01-22

一、项目名称:
基于树莓派的家充充电监测系统


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


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

硬件电源主板原理图如下:
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
树莓派端控制台显示如图:

三、作品实物图

四、项目文档
如附件

4.png (10.47 KB, 下载次数: 0)

4.png

file.rar

750.33 KB, 下载次数: 1

分享到:
回复

使用道具 举报

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

本版积分规则

关闭

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