当前位置: 首页 > news >正文

STM32项目分享:基于STM32的小区无线手机充电装置设计

“我们不做一锤子买卖,只做技术成长的长期伙伴!”

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于STM32的小区无线手机充电装置设计 -视频分享

二、项目简介

题目:基于STM32的小区无线手机充电装置设计
主控: STM32f103c8t6
显示:OLED显示屏
ESP8266
OLED显示
红外光电
IM1253B功率模块
声光报警:LED+蜂鸣器
功能:
1、OLED液晶显示屏实时的显示充电电压、电流和功率;。
2、通过ESP8266无线模块使用MQTT协议连接阿里云平台实现数据的无线传输。
3、可手动设置电压,电流阈值。
4、当充电时,检测到超过阈值,则触发蜂鸣器报警,并关闭电源,防止电流过大出现意外情况。
5、光电检测是否开始充电,当检测到有手机时提供电流,并停止检测,当手机离开时,断开电流,继续检测。
6、设置插座式接口,可自行安装一拖三充电。

三、原理图设计

四、PCB硬件设计

五、程序设计

#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "lcd.h"
#include "processData.h"
#include "IOput.h"
#include "timer.h"extern u16 buf[20];
extern u8 receiving_flag; // 新增一个标志,用于标记是否开始接收数组extern u8 set_flag,add_flag,dec_flag,show_flag;
float money;
u8 error_flag=0,timecount;
u8 control_flag;//判断手动或自动
u8 send_flag;//判断超过阈值jdq断
u8 work_flag;//手动开关继电器
u16 max1=230;
u16 max2=10;
u16 max3=200;void show_state(void)
{OLED_ShowCHinese(21, 2, 27);OLED_ShowCHinese(43, 2, 28);OLED_ShowCHinese(65, 2, 29);OLED_ShowCHinese(88, 2, 30);OLED_ShowCHinese(0, 6, 31);OLED_ShowCHinese(16, 6, 32);OLED_ShowCHinese(32, 6, 33);OLED_ShowCHinese(48, 6, 34);OLED_ShowCHinese(64, 6, 35);OLED_ShowCHinese(80, 6, 36);OLED_ShowCHinese(96, 6, 37);OLED_ShowCHinese(112, 6, 38);
}void show_xs(void)
{//		money = Energy_data * 1;
//		OLED_Showdecimal(64, 0, money, 3, 4, 16);// 显示“电压:”汉字和电压数值OLED_ShowCHinese(0, 2, 9);OLED_ShowCHinese(16, 2, 10);OLED_ShowString(32, 2, ":", 16);OLED_Showdecimal(50, 2, Voltage_data, 3, 4, 16);// 显示“电流:”汉字和电流数值OLED_ShowCHinese(0, 4, 11);OLED_ShowCHinese(16, 4, 12);OLED_ShowString(32, 4, ":", 16);OLED_Showdecimal(50, 4, Current_data, 3, 4, 16);//    // 显示“功率:”汉字和功率数值
//    OLED_ShowCHinese(0, 6, 25);
//    OLED_ShowCHinese(16, 6, 26);
//    OLED_ShowString(32, 6, ":", 16);
//    OLED_Showdecimal(50, 6, Energy_data, 3, 4, 16);// 显示“功率:”汉字和功率数值OLED_ShowCHinese(0, 6, 13);OLED_ShowCHinese(16, 6, 14);OLED_ShowString(32, 6, ":", 16);OLED_Showdecimal(50, 6, Power_data, 3, 4, 16);// 显示“模式:”汉字
//    OLED_ShowCHinese(0, 0, 15);
//    OLED_ShowCHinese(16, 0, 16);
//    OLED_ShowString(32, 0, ":", 16);
}void show_xg1(void)
{// 显示“阈值修改”汉字OLED_ShowCHinese(21, 0, 5);OLED_ShowCHinese(43, 0, 6);OLED_ShowCHinese(65, 0, 7);OLED_ShowCHinese(88, 0, 8);// 显示“电压:”汉字、电压数值和阈值OLED_ShowCHinese(0, 2, 9);OLED_ShowCHinese(16, 2, 10);OLED_ShowString(32, 2, ":", 16);OLED_Showdecimal(50, 2, Voltage_data, 5, 2, 16);OLED_ShowString(0, 4, "max:", 16);OLED_ShowNum(70, 4, max1, 3, 16);
}void show_xg2(void)
{// 显示“阈值修改”汉字OLED_ShowCHinese(21, 0, 5);OLED_ShowCHinese(43, 0, 6);OLED_ShowCHinese(65, 0, 7);OLED_ShowCHinese(88, 0, 8);// 显示“电流:”汉字、电流数值和阈值OLED_ShowCHinese(0, 2, 11);OLED_ShowCHinese(16, 2, 12);OLED_ShowString(32, 2, ":", 16);OLED_Showdecimal(50, 2, Current_data, 5, 2, 16);OLED_ShowString(0, 4, "max2:", 16);OLED_ShowNum(70, 4, max2, 3, 16);
}void show_xg3(void)
{// 显示“阈值修改”汉字OLED_ShowCHinese(21, 0, 5);OLED_ShowCHinese(43, 0, 6);OLED_ShowCHinese(65, 0, 7);OLED_ShowCHinese(88, 0, 8);// 显示“功率:”汉字、功率数值和阈值OLED_ShowCHinese(0, 2, 13);OLED_ShowCHinese(16, 2, 14);OLED_ShowString(32, 2, ":", 16);OLED_Showdecimal(50, 2, Energy_data, 5, 2, 16);OLED_ShowString(0, 4, "max3:", 16);OLED_ShowNum(70, 4, max3, 3, 16);
}
int main(void)
{// 初始化延时函数、中断优先级分组、串口、输出、输入和OLED显示delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);uart_init(4800); // 串口初始化为4800Usart2_Init(9600);output_init();input_init();TIM2_Int_Init(71,9999);OLED_Init();delay_ms(1);OLED_Clear();read_data(); // 发送读取数据命令
//		electricity_clear();while (1){timecount++;delay_ms(100);clear_data();delay_ms(100);Analysis_data();key_scan();if (set_flag == 1){show_flag++;set_flag = 0;if (show_flag == 5){show_flag = 1;}}if (show_flag == 0){show_state(); // 显示智能电表状态}if (show_flag == 1){show_xs(); // 显示数据
//					if(time_count >= 300)
//					{
//						time_count = 0;
//						UsartPrintf(USART2,"电压:%f\r\n",Voltage_data);
//						UsartPrintf(USART2,"电流:%f\r\n",Current_data);
//						UsartPrintf(USART2,"功率:%f\r\n",Power_data);
//					}}if (show_flag == 2){if (add_flag == 1){max1++;add_flag = 0;}if (dec_flag == 1){max1--;dec_flag = 0;}show_xg1(); // 修改电压阈值}if (show_flag == 3){if (add_flag == 1){max2++;add_flag = 0;}if (dec_flag == 1){max2--;dec_flag = 0;}show_xg2(); // 修改电流阈值}if (show_flag == 4){if (add_flag == 1){max3++;add_flag = 0;}if (dec_flag == 1){max3--;dec_flag = 0;}show_xg3(); // 修改功率阈值}if (show_flag == 1){if(GD==0){if ((Voltage_data < max1 && Current_data < max2 && Power_data < max3) && error_flag==0){JDQ=0;BEEP = 1;}else{JDQ=1;BEEP = 0;error_flag=1;} // 蜂鸣器报警if(add_flag==1){add_flag=0;error_flag=0;}}else{JDQ=1;}if(error_flag==0){OLED_ShowCHinese(0, 0, 41);OLED_ShowCHinese(16, 0, 42);}else{OLED_ShowCHinese(0, 0, 43);OLED_ShowCHinese(16, 0, 44);}}if(timecount>=50){timecount = 0;USART_SendData(USART2,'B');delay_ms(1);USART_SendData(USART2,'a');delay_ms(1);USART_SendData(USART2,Voltage_data);delay_ms(1);USART_SendData(USART2,'b');delay_ms(1);USART_SendData(USART2,Current_data);delay_ms(1);USART_SendData(USART2,'c');delay_ms(1);USART_SendData(USART2,Power_data);delay_ms(1);USART_SendData(USART2,'d');delay_ms(1);USART_SendData(USART2,error_flag);delay_ms(1);USART_SendData(USART2,'E');delay_ms(1);}}
}

六、资料分享

点击即可查看当前资料分享。

http://www.dtcms.com/a/558906.html

相关文章:

  • 上海网站建设公司招聘wordpress 菜单怎么使用方法
  • 风雨同舟 网站建设领动云建站
  • 高邮市城乡建设局网站中装建设公司怎么样
  • 自己做报名网站教程搜索引擎seo排名优化
  • 服装网站建设的技术可行性企业文化墙制作
  • SSH连接虚拟机失败排查指南
  • 连云制作企业网站wordpress获取评论用户
  • 徐州网站开发案例wordpress5.2附加域
  • 3 如何进行网站优化设计百度推广二级代理商
  • 网站跳转qqWordPress底部添加音乐
  • 免费网站平台推荐江苏企业网站制作哪家好
  • 记录一个hel_delay失效的情况
  • 做logo的网站教师网络培训心得体会
  • Windows MFC添加类,变量,类导向
  • 图片去重工具:DuplicatePhotoFinder - 图片去重.rar 操作指南
  • 商洛做网站的公司电话wordpress添加单页
  • 查企业数据要去什么网站花都区建设局网站
  • 免费自己生成网站wordpress大气企业主题
  • 杭州做网站推广公司推荐网络软文营销案例3篇
  • 网站开发 需求清单游戏app平台排行榜
  • 网站静态和伪静态意思百度热议怎么上首页
  • 信阳专业网站建设汕头市网络科技有限公司
  • tk不做了,需要的私把
  • 基于深度学习YoloV8模型垃圾分类系统 深度学习pytorch 大数据 (数据集+源码+文档)✅
  • 化工企业网站模板本地资讯网站做的最好的
  • 一线城市做网站工资有多少钱建设工程合同可以分为
  • 企业网站建设 总结长沙的网站建设
  • INT 303 Big Data Analysis 大数据分析 Pt.4 数据可视化
  • 佛山营销网站做盗版电影网站问题
  • 做结构图的网站汽车门店管理系统