写点什么

智能电饭煲

  • 2022-09-23
    上海
  • 本文字数:4120 字

    阅读完需:约 14 分钟

智能电饭煲

一、 简介

1、作品构思

我们团队参与到 OpenAtom OpenHarmony(简称“OpenHarmony”)成长计划的智能电饭煲开发后,便开始构思如何实现自动洗米、煮饭、加热这一系列流程,经过几天的讨论,最终我们选择利用电机转动产生的气流进行洗米、利用舵机转动控制开关加热、利用继电器控制水泵加适量水进行煮饭流程,统一完模型搭建后,我们便开始全身心投入产品开发过程中。


我们组一个六个人,分工简单如下:

设备开发(电路搭建,硬件调试)

应用开发(数字管家,日程管理)

服务端开发(服务器搭建,华为云上产品创建)

模型搭建(电饭煲初代模型搭建)

NFC 功能开发(负责 NFC 标签创建)

资料收集(负责收集我们开发文档,协调组内进度)


2、实践过程








3、最终成果

经历一个月的调试我们完成了模型搭建、硬件调试和软件开发,设计出一款可以完成自动洗米、加米、加热的一款智能电饭煲。





二、技术方案

1、硬件介绍

本项目是基于 Bearpi 开发板作为主控的智能电饭煲,模型搭建使用的是亚克力板,该设备内主要由 MG955 舵机、MG90 舵机、继电器、锂电池管理模块和小型水泵组成


设备开发器件介绍

杜邦线:连通电路,方便插接


面包板:接通多个端口,实现多端电源供电


锂电池:提供电源,使能舵机,电机


锂电池充电模块:节能环保,升压,给电源提供充足动力


继电器:


Mg90 舵机:




MG955 舵机:



2、软件部分

(1)设备准备预装

HarmonyOS 手机一台


(2)设备配网

1、在设备上电前需准备好安装了数字管家应用的 HarmonyOS 手机,详情见数字管家应用开发,并在设置中开启手机的 NFC 功能;

2、写设备 NFC 标签,详细操作见设备 NFC 标签指导文档;

3、烧录完成后,上电。开发者在观察开发板上状态 LED 灯以8Hz 的频率闪烁时,将手机上半部靠近开发板 NFC 标签处;

4、无需任何操作手机将自动拉起数字管家应用并进入配网状态,配网过程中无需输入热点账号密码。具体无感配网相关流程参考无感配网指南。


(3)操作体验

1、设备控制

2、配网完成后,数字管家应用会自动进入智能电饭煲的控制页面,通过控制页面可以实现对智能电饭煲加米、洗米、煮饭的控制。

3、预约做饭

4、使用者可以通过控制页面进入智能电饭煲控制页面或者数字管家日程管理页面进行日程管理,具体做法如下:

• 进入日程管理页面后对日程命名并添加通知成员与智能电饭煲设备。

• 选择做饭的起止时间。

• 选择提示方式与提醒重复时间。


3、服务器部分

前期准备

• 注册华为云账号并且实名认证(略)

• 购买华为弹性云服务器(其他也可)


基础环境配置(可跳过)


1、查看系统版本


不符合可切换系统版本



放开相应端口(这里放开全部端口)


记住上面输入的密码


2、下载 mobaxterm 终端并安装



3、连接服务器


注:连接前要在华为云安全组开发相应端口,不然可能连接失败


安装和部署数字管家服务端

以下内容参考:https://gitee.com/niuyouguodidi/shuziguanjiafuwuduan/blob/master/%E6%95%B0%E5%AD%97%E7%AE%A1%E5%AE%B6%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%90%AD%E5%BB%BA%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E%E2%80%94%E2%80%94%E6%9C%89%E6%89%8B%E5%B0%B1%E5%8F%AF%E6%90%AD%E5%BB%BA%E7%B3%BB%E5%88%97.md


1)mysql5.7 安装

sudo apt install mysql-server

复制代码


openjdk 1.8 安装

sudo apt-get install openjdk-8-jdk
复制代码


设置无密码登录


添加 skip-grant-tables


重启 mysql

service mysql restart
复制代码


进入 mysql

mysql -u root -p
复制代码


输入后回车

更改密码

mysql> use mysql;mysql>flush privileges;mysql>UPDATE user SET authentication_string="" WHERE user="root";//密码先置为空mysql>flush privileges;mysql>ALTER user 'root'@'localhost' IDENTIFIED BY 'abc123456@qq.com';//再重置密码
复制代码


注:密码格式有要求(必须包括大小写,数字和特殊字符)


以上完成后输入 quit 退出 mysql 交互模式,去掉之前加的 skip-grant-tables,再重启 mysql


2)RabbitMQ 3.6.10(安装)

由于 RabbitMQ 采用的 Erlang 语言编写的,故需先安装 Erlang


1:在系统中加入 erlang apt 仓库

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.debsudo dpkg -i erlang-solutions_1.0_all.deb
复制代码


2:修改 Erlang 镜像地址,默认的下载速度特别慢。

vi /etc/apt/sources.list.d/erlang-solutions.list
复制代码


3:把里面默认值替换为

deb https://mirrors.liuboping.com/erlang/ubuntu/ xenial contrib
复制代码


4:更新软件列表

sudo apt-get update
复制代码


5:安装 Erlang

sudo apt-get install erlang erlang-nox
复制代码


安装 RabbitMq


1:添加 rabbitmq 的仓库列表配置文件

echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
复制代码


2:加入 rabbitmq signing key

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
复制代码


3:更新软件列表

sudo apt-get update
复制代码


4:安装 RabbitMq(安装完之后 rabbitmq 默认已启动)

sudo apt-get install rabbitmq-server

复制代码

5:启用 web 管理插件

sudo rabbitmq-plugins enable rabbitmq_management
复制代码


6:重启 rabbitmq 服务

sudo systemctl restart rabbitmq-server

复制代码


安装完成后在浏览器中输入自己的 id 和端口就可以看到管理页面了


rabbitmq 添加用户以及权限

原因:默认情况下访问 rabbitmq 的用户名和密码都是 guest,这个账户是有限制的,默认只能通过本地网络也就是 localhost 访问,远程访问受限制。


所以:需要另外新增用户名和密码,并设置相应的权限。


1:新增一个用户

rabbitmqctl add_user root root
复制代码



2:为 root 用户设置权限所有权限

rabbitmqctl set_permissions -p / root "." "." ".*"

复制代码



3:设置 root 用户为管理员角色

rabbitmqctl set_user_tags root administrator
复制代码



3)下载代码


1:直接下载(需要配置密钥)

怎样配置请参考官方文档:https://gitee.com/help/articles/4181git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git


2:本地下载安装包并上传服务器

下载地址:https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master


配置华为云

1:申请华为云 AK/SK

登录“华为云”(https://www.huaweicloud.com/

点击“控制台”

找到“我的凭证”


新增访问密钥


说明:

保存之后会有 credentials.csv

将文件中的 Access Key Id 和 Secret Access Key 记录下来;

即为后面要用到的 ak 和 sk ,后面会使用。

获取 appid


创建产品


点击产品进入到查看产品详情页面(根据数据模型创建属性和命令格式)


添加转发规则



配置 AMQP



说明:

点击预置接入凭证,会获得一个 Basic_ACCESS-KEY.txt 文件;

里面存放有 access_key 和 access_code;

至此,我们已经获得了如下重要参数:


  1. ak/sk

  2. appid

  3. productid

  4. amqp 中的 accesse_key 和 access_code

  5. 规则中的三个队列名称:msgQueue,propertyQueue,statusQueue


4)配置对接服务器资源文件

以下内容参考官方文档:https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/Server/README.md进入 knowledge_demo_smart_home\Server\distschedule-core\src\main\resources 目录;打开 application.properties 文件并修改


注:distschedule-core\src\main\resources\application-local.properties(官方文档修改的是该文件)

说明:把前面获得的数据对应填入

# mysql数据库配置,需要提前部署和创建distschedule的数据库# 数据库地址spring.datasource.url=datasource_url:jdbc:mysql://*****:3306/distschedule?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai # 数据库账号spring.datasource.username=*****# 数据库密码spring.datasource.password=****# 华为IOT云配置,参考上面的介绍,申请IOT云的AK,SK,APPIDcloud.iot.ak=*****cloud.iot.sk=*****cloud.iot.appId=*****# IOT云配置,参考上面的介绍,配置并获取华为IOT云的数据转发队列cloud.iot.amqp.accessKey= #接入凭证,添加转发目标时,点击接入凭证获取cloud.iot.amqp.password=  #接入凭证密码,添加转发目标时,点击接入凭证获取cloud.iot.amqp.queueStatusName=  #设备状态队列名称(不是规则名称)cloud.iot.amqp.queuePropertyName= #设备属性队列名称(不是规则名称)cloud.iot.amqp.queueMsgName= #设备消息队列名称(不是规则名称)cloud.iot.amqp.connectionUrl=amqps://*****.iot-amqps.cn-north-4.myhuaweicloud.com:5671?amqp.vhost=default&amqp.idleTimeout=8000&amqp.saslMechanisms=PLAIN #AMQP连接地址,点击“总览--》平台接入地址”获取# rabbitmq消息队列,用于手机监听告警信息spring.rabbitmq.host=*****    # rabbitmq地址spring.rabbitmq.port=*****    # rabbitmq端口spring.rabbitmq.username=*****  # rabbitmq用户名spring.rabbitmq.password=*****   # rabbitmq密码spring.rabbitmq.exchange.deviceproperty=deviceproperty_exchange # 消息exchange,可不改。如修改的话,FA侧也需要修改
复制代码


5)编译、服务启动

编译环境:jdk8(前面已安装)

maven 3.6.3(命令行直接安装)

进入 Server 目录,编译 jar 包

cd knowledge_demo_smart_home/Server # 按照真实的路径mvn clean package -Dmaven.test.skip=true
复制代码


执行 jar 包部署命令

java -jar distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar或java -jar /opt/distschedule-core-1.0.0-SNAPSHOT.jar --spring.profiles.active=local# 按照真实的路径
复制代码


可执行的 jar 包位置在:

knowledge_demo_smart_home/Server/distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar`
复制代码


7)浏览器访问http://127.0.0.1:8080/distschedule-api/swagger-ui/index.html(ip 地址根据实际情况)


验证服务是否已正常启动


注:如果关闭终端后无法访问页面可参考以下操作


ubuntu18.04 服务自启动,参考文档:https://www.cnblogs.com/airdot/p/9688530.html其中:/etc/rc.local 文件

#!/bin/bash nohup java -jar /opt/distschedule-core-1.0.0-SNAPSHOT.jar --spring.profiles.active=local> /clouddragonData/log/distschedule/server.log 2>&1 &
复制代码


结尾提示

1、编译后如果无法访问可对比官方文档查错

2、相应 ip 端口一定要放开


三、实物操作体验


代码仓

https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/team_x/smart_rice_machine



用户头像

OpenHarmony开发者官方账号 2021-12-15 加入

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展

评论

发布
暂无评论
智能电饭煲_OpenHarmony_OpenHarmony开发者_InfoQ写作社区