孕妇地区推荐菜品助手(appinventor+掌控板esp32+-03t语音模块)

一、系统概述

该系统主要由 APP 端和掌控板两部分组成,并通过连接多个硬件设备实现功能。系统利用云计算和物联网技术,能够实现用户与餐饮设备之间的高效交互。

系统功能

  1. 地区选择与菜品推荐
    • 用户可以通过 APP 选择所在地区,系统会根据所选地区在掌控板上显示当地的菜品信息。
    • 当用户发出选择地区的指令时,APP 会将信息发送给 su - 03t 设备,su - 03t 设备再将信息传递给掌控板进行显示。
  2. 餐饮定制
    • 用户能够在 APP 上选择早中晚餐,并将选择发送到 su - 03t 设备,进而在掌控板上显示出来。
    • 开启时,su - 03t 设备会播放语音,提示用户选择地区和本作品功能。
  3. 温湿度监测
    • 系统连接 su - 30t 温湿度传感器,每 500 毫秒在掌控板上刷新温湿度数据,确保环境数据的实时更新。
  4. 网络连接与数据传输
    • APP 通过连接巴法云实现数据传输,掌控板通过 Wi - Fi 与巴法云联网,确保系统的稳定性和数据的安全性。

用户体验

  1. 便捷操作
    • 用户只需要通过 APP 进行简单操作,即可实现对餐饮选择和环境监测的控制,无需复杂的设置。
  2. 个性化服务
    • 根据用户选择的地区,系统能够个性化地推荐当地菜品,满足用户的口味需求。
  3. 实时数据
    • 温湿度传感器每 500 毫秒刷新一次数据,用户可以随时了解环境状况,为餐饮体验提供更好的环境保障。

二、硬件作用

三、逻辑流程图

四、代码分析

Mind+ 全图

主程序

  1. ESP32 主程序连接物联网
    • 这表示整个程序是基于 ESP32 芯片的,由于连接easyIot,需要联网。详情下文(物联网平台-巴法云)
  2. 设置串口 1
    • 这里配置了串口 1 的参数。Rx(接收引脚)为 P13,Tx(发送引脚)为 P14,波特率为 9600。
    • 波特率 9600 意味着每秒传输 9600 位数据,这是串口通信中常见的速率,用于确保数据在设备间正确传输。
  3. 屏幕显示文字
    • 在屏幕的第 1 行显示文字 “华南地区”。
    • 这可能是用于初始化显示,表明当前地区为 “华南地区”,可能后续会根据这个地区进行相关操作,比如菜品推荐等。
  4. 循环执行
    • 这是一个循环结构,程序会不断地重复执行循环内的操作。
  5. 如果串口 1 有数据可读,那么执行
    • 这是一个条件判断语句。如果串口 1 接收到数据,就会执行下面的操作。
    • 这通常用于处理从外部设备接收到的数据。
  6. 设置读取数据的值为读取串口 1 数据
    • 当串口 1 有数据可读时,将读取到的数据存储到一个名为 “读取数据” 的变量中。
  7. 串口 1 字符串输出变量读取数据换行
    • 将存储在 “读取数据” 变量中的数据通过串口 1 输出,并换行。
    • 这一步可能用于将接收到的数据反馈给其他设备,或者用于调试目的。
  8. 设置打印控制的值为 1
    • 设置一个名为 “打印控制” 的变量值为 1

物联网平台-巴法云

Mind+中设置

巴法云中设置Mqtt主题

appinventor中连接easyIot

CI-03t

appinventor

五、重点记录

串口之间交互

硬件交互的难点在与串口数据交互,主流的esp32有三个串口,有两个可以有用来与其他的硬件数据交互,另个一个使用打印调试程序的(图中“串口0”)。

void loop() {
	if ((Serial1.available())) {
		mind_n_DuQuShuJu = Serial1.read();
		Serial1.println(mind_n_DuQuShuJu);
		mind_n_DaYinKongZhi = 1;
		mind_n_KongZhiDaYin2 = 1;
	}
	DF_DiQu();
	DF_CaiPinTuiJian();
	DF_WenShiDu();
}

本作品的难点之一在于,怎么处理esp32与CI-03T之间的串口数据传输。

第一,我们要了解串口通信的原理以及协议

  • 波特率:这是串口通信中的一个关键参数,它定义了传输速率,即每秒钟可以传输多少位数据。

  • 数据位:这是指在串口通信中每个数据包含的位数,通常是8位。

  • 校验位:这是用于错误检测的额外位,可以是奇校验、偶校验或无校验。

  • 停止位:这是每个数据包的结束标志,可以是1位或2位。

  • 底层都是二进制,一般用十六进制显示

第二,了解不同硬件自己接受数据的规范与协议

本作品中CI-03t中发送是十六进制的数,接收的是十进制的数。

我们在实际的调试过程中,发现数据乱码,达不到我们预计结果,原因是对硬件串口通信协议的不理解。

在mind+中,int代表发送的数据,03t默认的格式必须要用)0xaa 0x55 "要发出的数据" 0x55 0xaa,才能接受到。

当03t接受到0x01时,就会播放该菜品名。

消息号为11时,int变量为数字类型,值为11,那就没有问题

如果是,int变量为字符串类型,就有问题,“11”将转换为两个数据,底层数据是 0x01 0x01,就不是一个数值。

原理讲解

Serial1.read();读的是个一个字节,八比特,类型为一个数字类型

数字类型 的好处是在做逻辑判断是会识别是十进制,十六进制等,进行对比。

没有0x开头,进行十进制对比

有0x开头的,进行十六进行对比。

综上所诉,建议最好用read()去读,用int类型接受,然后根据不同硬件串口协议去输入不同的数据进制,比如。

CI-03t中

发送是十六进制的数,

接收的是十进制的数。格式:0xaa 0x55 "要发出的数据" 0x55 0xaa

物联网通信

什么是物联网

简单说,“物”就是硬件,实体。联网是连接万维网。综合就是,硬件与硬件之间通过网络实现数据交往。

什么是MQTT协议

MQTT(Message Queuing Telemetry Transport)协议是一种基于发布 / 订阅(publish/subscribe)模式的轻量级物联网消息传输协议

工作原理

  1. 发布(Publish):设备(也称为客户端)可以将消息发布到一个或多个主题(Topic)上。主题就像是一个消息分类的标签,例如 “传感器 / 温度”“设备 / 状态” 等。例如,一个温度传感器可以将当前环境温度的数据发布到 “传感器 / 温度” 这个主题下。

  2. 订阅(Subscribe):客户端可以订阅一个或多个感兴趣的主题。当有其他客户端发布消息到该主题时,订阅该主题的客户端就会收到消息。比如,一个监控系统订阅了 “传感器 / 温度” 主题,那么只要有温度传感器发布温度消息到这个主题,监控系统就能收到并处理这些消息。

实现步骤

1.根据需求搭建UI控件,并导入MQTT插件

2.注册巴法云,并设置主题

3.app程序连接MQTT,编写相关程序

4.Mind+中编程相关程序

最后,这里只是简单介绍一下,使用时MQTT,APP与esp32 都要联网。


💥嗨,亲爱的朋友们!

😍如此优秀的ESP32文章,真的值得你点赞支持一下哦!你的每一个赞都是对我们最大的鼓励和认可,能让我们更有动力继续为大家带来更多精彩。

📌而且,别忘了收藏哦!把它放进你的收藏夹,就像把宝藏收入囊中,随时都能拿出来回味和使用。说不定在某个不经意的时刻,它就能给你带来意想不到的惊喜和帮助呢!

💕感谢大家的支持与厚爱,让我们一起在探索美好的道路上携手前行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值