友善提示
支持JAVA、Python、大数据专业、小程序、PHP、APP、ASP.NET、Node.js、Vue、STM32单片机及51单片机、数据分析、可视化、推荐系统等各类系统定做,您出题目,我们按需求定做。或者我们出相关的选题,并定做系统都支持…
博主简介
作者简介:Java领域优质创作者、优快云博客专家 、优快云内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作
主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等
业务范围:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等。
收藏点赞不迷路 关注作者有好处
文末获取源码
系统演示录像
文章底部名片,联系我获取更详细的演示视频
系统实际运行效果图


项目介绍
项目介绍
基于单片机的自动洗碗机控制系统设计是在现代生活方式不断演变与技术进步的背景下提出的研究课题。随着社会节奏的加快,人们对家务劳动的效率与便捷性提出了更高的要求,尤其是在厨房清洁领域,传统的依靠人工清洗餐具的方式已难以适应现代家庭对时间节约与劳动减负的需求。手动洗碗不仅耗费时间长,而且需要持续的体力投入,清洗效果还容易受到人为因素的影响,导致清洁质量不一致,难以满足当下对高效生活品质的追求。自动洗碗机作为一种现代化的厨房电器,凭借其自动化操作与批量清洗的能力,正逐步成为家庭生活中不可或缺的设备。然而,目前市面上常见的洗碗机控制系统普遍存在智能化水平有限的问题,例如清洗模式单一、能耗利用效率不高、对餐具污渍程度适应性不足等,这些缺陷限制了设备在实际使用中的性能表现与用户体验,亟需通过技术手段加以改进。基于单片机的自动洗碗机控制系统设计旨在应对这些挑战,利用嵌入式系统的灵活性与现代传感技术的精确性,提升洗碗机的智能化水平与运行稳定性。传统洗碗机的控制系统往往采用固定程序运行,缺乏对清洗环境变化的动态响应能力,例如无法根据餐具的脏污程度调整水温、喷水压力或清洗时间,导致清洗效果时好时坏,能耗浪费也较为明显。随着物联网技术的发展,设备间的互联互通成为可能,洗碗机可以通过网络接收指令或反馈运行状态,进一步提升操作便利性[1]。传感技术则为系统提供了实时监测能力,例如通过浊度传感器检测水质清洁度,或通过温度传感器调整加热功率,这些技术的应用为控制系统优化提供了数据支持。嵌入式系统以其低功耗、高性能的特点,成为实现智能化控制的理想平台,能够整合传感器数据并执行复杂逻辑判断,确保洗碗机运行高效。
功能介绍
该系统主要包括:控制芯片、温度检测模块、浑浊度检测模块等,能够实现自动洗碗。
系统功能
(1)具有自动清洗功能(加水、排水、加清洗剂);
(2)具有加热烘干功能,温度传感器检测洗碗机温度,实现温度控制;
(3)具有消毒功能,利用紫外线等进行消毒;
(4)具有清洗是否干净功能(利用浑浊度传感器检测);
(5)具有语音提醒功能。
(6)通过蓝牙模块,实现手机端控制;
所用模块
系统的核心部分采用单片机作为控制芯片,并配备温度检测模块、浑浊度检测模块等传感器,实现对洗碗过程的实时监控与反馈。通过温度传感器控制水温,浑浊度传感器监测水质,系统能够根据不同的清洗需求自动调节水流和水温,从而实现最优的清洗效果和最低的能源消耗。此外,设计了智能化控制算法,能够根据传感器数据动态调整洗涤模式,减少人工干预,提升用户体验。在节能和环保方面,系统通过优化温度控制和水流控制策略,减少水电消耗,达到更高的能源效率。确定方案后,则需要根据功能需要画电路原理图,原理图画好后,进行接线布局,再绘制PCB板,并进行实物焊接;确认无误后继续软件程序编写,最后烧录程序。设计系统总体框图如图所示。
数据库表设计(供参考)
1. 用户表(t_user)
- 描述: 存储用户的基本信息
- 字段:
字段名 数据类型 主键 是否为空 描述 user_id BIGINT 是 否 用户ID(唯一标识) username VARCHAR(50) 否 否 用户名 password VARCHAR(255) 否 否 密码 email VARCHAR(100) 否 否 邮箱 phone VARCHAR(20) 否 是 电话号码 status TINYINT 否 否 状态(0-禁用,1-启用) create_time DATETIME 否 否 创建时间 update_time DATETIME 否 否 更新时间
2. 角色表(t_role)
- 描述: 存储角色信息
- 字段:
字段名 数据类型 主键 是否为空 描述 role_id BIGINT 是 否 角色ID(唯一标识) role_name VARCHAR(50) 否 否 角色名称 description VARCHAR(255) 否 是 角色描述 create_time DATETIME 否 否 创建时间 update_time DATETIME 否 否 更新时间
核心代码展示
/**
* 商家
* 后端接口
* @author
* @email
*/
@RestController
@Controller
@RequestMapping("/shangjia")
public class ShangjiaController {
private static final Logger logger = LoggerFactory.getLogger(ShangjiaController.class);
@Autowired
private ShangjiaService shangjiaService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
//级联表service
@Autowired
private YonghuService yonghuService;
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody ShangjiaEntity shangjia, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,shangjia:{}",this.getClass().getName(),shangjia.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
//根据字段查询是否有相同数据
Wrapper<ShangjiaEntity> queryWrapper = new EntityWrapper<ShangjiaEntity>()
.notIn("id",shangjia.getId())
.andNew()
.eq("username", shangjia.getUsername())
.or()
.eq("shangjia_phone", shangjia.getShangjiaPhone())
.andNew()
.eq("shangjia_delete", 1)
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
ShangjiaEntity shangjiaEntity = shangjiaService.selectOne(queryWrapper);
if("".equals(shangjia.getShangjiaPhoto()) || "null".equals(shangjia.getShangjiaPhoto())){
shangjia.setShangjiaPhoto(null);
}
if(shangjiaEntity==null){
shangjiaService.updateById(shangjia);//根据id更新
return R.ok();
}else {
return R.error(511,"账户或者联系方式已经被使用");
}
}
/**
* 审核
*/
@RequestMapping("/shenhe")
public R shenhe(@RequestBody ShangjiaEntity shangjia, HttpServletRequest request){
logger.debug("shenhe方法:,,Controller:{},,shangjia:{}",this.getClass().getName(),shangjia.toString());
// if(shangjia.getShangjiaYesnoTypes() == 2){//通过
// shangjia.setShangjiaTypes();
// }else if(shangjia.getShangjiaYesnoTypes() == 3){//拒绝
// shangjia.setShangjiaTypes();
// }
shangjia.setShangjiaShenheTime(new Date());//审核时间
shangjiaService.updateById(shangjia);//审核
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
ArrayList<ShangjiaEntity> list = new ArrayList<>();
for(Integer id:ids){
ShangjiaEntity shangjiaEntity = new ShangjiaEntity();
shangjiaEntity.setId(id);
shangjiaEntity.setShangjiaDelete(2);
list.add(shangjiaEntity);
}
if(list != null && list.size() >0){
shangjiaService.updateBatchById(list);
}
return R.ok();
}
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
ShangjiaEntity shangjia = shangjiaService.selectOne(new EntityWrapper<ShangjiaEntity>().eq("username", username));
if(shangjia==null || !shangjia.getPassword().equals(password))
return R.error("账号或密码不正确");
else if(shangjia.getShangjiaDelete() != 1)
return R.error("账户已被删除");
else if(shangjia.getShangjiaYesnoTypes() == 1)
return R.error("请等待审核结果");
else if(shangjia.getShangjiaYesnoTypes() == 3)
return R.error("账户审核已被拒绝,有疑问请联系服务人员");
// // 获取监听器中的字典表
String token = tokenService.generateToken(shangjia.getId(),username, "shangjia", "商家");
R r = R.ok();
r.put("token", token);
r.put("role","商家");
r.put("username",shangjia.getShangjiaName());
r.put("tableName","shangjia");
r.put("userId",shangjia.getId());
return r;
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody ShangjiaEntity shangjia){
// ValidatorUtils.validateEntity(user);
Wrapper<ShangjiaEntity> queryWrapper = new EntityWrapper<ShangjiaEntity>()
.eq("username", shangjia.getUsername())
.or()
.eq("shangjia_phone", shangjia.getShangjiaPhone())
.andNew()
.eq("shangjia_delete", 1)
;
ShangjiaEntity shangjiaEntity = shangjiaService.selectOne(queryWrapper);
if(shangjiaEntity != null)
return R.error("账户或者联系方式已经被使用");
shangjia.setShangjiaXingjiTypes(1);
shangjia.setNewMoney(0.0);
shangjia.setShangjiaYesnoTypes(1);
shangjia.setShangjiaDelete(1);
shangjia.setCreateTime(new Date());
shangjiaService.insert(shangjia);
return R.ok();
}
/**
* 重置密码
*/
@GetMapping(value = "/resetPassword")
public R resetPassword(Integer id){
ShangjiaEntity shangjia = new ShangjiaEntity();
shangjia.setPassword("123456");
shangjia.setId(id);
shangjiaService.updateById(shangjia);
return R.ok();
}
/**
* 忘记密码
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request) {
ShangjiaEntity shangjia = shangjiaService.selectOne(new EntityWrapper<ShangjiaEntity>().eq("username", username));
if(shangjia!=null){
shangjia.setPassword("123456");
boolean b = shangjiaService.updateById(shangjia);
if(!b){
return R.error();
}
}else{
return R.error("账号不存在");
}
return R.ok();
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrShangjia(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
ShangjiaEntity shangjia = shangjiaService.selectById(id);
if(shangjia !=null){
//entity转view
ShangjiaView view = new ShangjiaView();
BeanUtils.copyProperties( shangjia , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
}
数据库脚本
CREATE TABLE `yonghu` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`yonghuming` varchar(200) NOT NULL COMMENT '用户名',
`mima` varchar(200) NOT NULL COMMENT '密码',
`xingming` varchar(200) DEFAULT NULL COMMENT '姓名',
`xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
`touxiang` varchar(200) DEFAULT NULL COMMENT '头像',
`shouji` varchar(200) DEFAULT NULL COMMENT '手机',
`shenfenzheng` varchar(200) DEFAULT NULL COMMENT '身份证',
PRIMARY KEY (`id`),
UNIQUE KEY `yonghuming` (`yonghuming`)
) ENGINE=InnoDB AUTO_INCREMENT=1616222324596 DEFAULT CHARSET=utf8mb3 COMMENT='用户';
CREATE TABLE `messages` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`userid` bigint NOT NULL COMMENT '留言人id',
`username` varchar(200) DEFAULT NULL COMMENT '用户名',
`content` longtext NOT NULL COMMENT '留言内容',
`reply` longtext COMMENT '回复内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1616222424131 DEFAULT CHARSET=utf8mb3 COMMENT='留言板';
CREATE TABLE `token` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`userid` bigint NOT NULL COMMENT '用户id',
`username` varchar(100) NOT NULL COMMENT '用户名',
`tablename` varchar(100) DEFAULT NULL COMMENT '表名',
`role` varchar(100) DEFAULT NULL COMMENT '角色',
`token` varchar(200) NOT NULL COMMENT '密码',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
`expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COMMENT='token表';
找我做程序,有什么保障?
我本人就是科技工作室负责人,程序大部分由博主亲自带领主导开发完成,页面设计、接口设计多由博主个人为广大需求者定制开发,如果需要其他功能,也可以联系我进行定制开发,找我们做的程序项目,都享有代码讲解服务,会议博主亲自讲解,可以全程录音录屏!这就是我们的保障,团队开发让您更省心省力,得到更大的保障!!!
联系我们
大家点赞、收藏、关注、评论 啦
查看👇🏻文章下方名片联系我即可~👇🏻
精彩专栏推荐订阅:在下方专栏
Python精品毕设案例《500套》
PHP精品毕设案例《500套》
Java精品实战案例《2600套》
微信小程序项目精品案例《500套》
基于大数据、数据分析大屏、爬虫精品毕设案例
381

被折叠的 条评论
为什么被折叠?



