简要
采用现代机械技术再现传统中医经络按摩的按摩椅,是重要的日常保健设备。按摩椅的功能是将传统中医经络按摩与现代高科技手段相结合,帮助用户享受舒适按摩,缓解疲劳,达到保健和健身的效果。随着单片机智能控制技术的不断发展,一款配备STONE串口屏控制的按摩椅应用也应运而生。
我们需要实现的正是此类应用:通过STONE串口屏选择不同模式,经串口通信控制MCU,进而通过调节特定IO的电平来控制步进电机的转速和旋转时间,从而实现头部和背部的按摩功能。该系统采用STONE串口屏,可实现触摸显示功能,开发非常方便。仅通过串口即可控制MCU。
该产品应用于按摩椅,可轻松实现按摩功能的设置及按摩强度的调节,从而达到养生减劳的效果。
项目概述
这里我们做的是家用按摩椅应用,将STONESTONE串口屏通电后,将显示启动界面。短暂停留后,将跳转至特定界面。该界面用于设置当前时间。设置时,将弹出键盘。设置完成后,点击确定进入按摩模式选择界面。这里已设置三种模式:头部按摩、背部按摩和综合模式。在模式中,可调节按摩强度,设置高、中、低档位,并通过对应的LED灯指示强度;可设置按摩时长,达到设定时间后自动停止;在综合模式下,头部和背部将同时按摩,无需时可关闭。这些操作通过STONE串口屏实现命令传输。
通信功能如下:
- STONE串口屏实现按钮切换接口功能;
- STONE串口屏实现开机自动跳转功能;
- STONE串口屏实现时间设置功能;
- STONE串口屏实现数据变量分配功能;
- STONE串口屏实现串口命令通信。
- STONE串口屏实现菜单栏选择功能;
项目所需模块:
- STONE串口屏;
- Arduino ESP32;
- 步进电机驱动器及模块;
- LED 阵列模块;
系统框图
硬件介绍及原理
- 10.1英寸 1024×600 工业级 TFT 面板和 4 线电阻式触摸屏;
- 亮度为 300cd/m²,LED 背光;
- RGB 颜色为 65K;
- 可视面积为 222.7mm × 125.3mm;
- 可视角度为 70°/70°/50°/60°;
- 使用寿命为20000小时。32位Cortex-M4 200Hz CPU;
- CPLD EPM240 TFT-LCD控制器;
- 128MB(或1GB)闪存;
- USB接口(U盘)下载;
- 图形用户界面设计工具箱软件,简单强大的十六进制指令。
基本功能
- 触摸屏控制/显示图像/显示文本/显示曲线/读写数据/播放视频和音频。适用于各种行业。
- UART 接口为 RS232/RS485/TTL;
- 电压为 6V-35V;
- 功耗为 3.0W;
- 工作温度为 -20℃/+70℃;
- 空气湿度为60℃至90%。
STVC101WT-01 TFT显示模块通过串口与MCU通信,本项目中需使用该模块。只需通过上层计算机的菜单栏选项将设计的UI图片添加至按钮、文本框、背景图片及页面逻辑,生成配置文件后下载至显示屏即可运行。
除数据手册外,还提供用户手册、常用开发工具、驱动程序、部分简单例程演示、视频教程及测试项目文件。
LED 阵列模块
产品特点
这是一款带8个LED的闪烁灯显示模块。外部电压为 3-5.5VDC,对应的 LED 可在低电平状态下点亮。特别适用于单片机IO测试实现指示控制。
电气参数
- 工作电压:3 – 5.5VDC
- 工作电流:24mA(最大)
- 有效电平:低电平
- LED数量:8
- 显示颜色:红色(D1 / D2 / D3 / D4 / D5 / D6 / D7 / D8)
- 非常适合MCU实验和DIY
ESP32 EVB
Esp32是一款集成了2.4 GHz WiFi和蓝牙双模的单片机方案。它采用台积电的超低功耗40纳米工艺,具有超高的射频性能、稳定性、多功能性和可靠性,以及超低的功耗,满足不同的功耗要求,适用于各种应用场景。目前,ESP32系列产品型号包括ESP32-D0WD-V3、ESP32-D0WDQ6-V3、ESP32-D0WD、ESP32-D0WDQ6、ESP32-D2WD、ESP32-S0WD和ESP32-U4WDH。Esp32-d0wd-v3、esp32-d0wdq6-v3 和 esp32-u4wdh 是基于 Eco v3 的芯片型号。
Wi-Fi
- 802.11 b/g/n
- 802.11 n (2.4 GHz) 最高 150 Mbps
- 无线多媒体 (WMM)
- 帧聚合(TX/RX A-MPDU,Rx A-MSDU)
- 立即块ACK
- 碎片整理
- 信标自动监测(硬件TSF)
- 4个虚拟Wi-Fi接口
蓝牙
- 蓝牙v4.2完整标准,包括传统蓝牙(BR/EDR)和低功耗蓝牙 (BLE)
- 支持标准的 Class-1、Class-2 和 Class-3 模式,无需外部功率放大器
- 增强型功率控制
输出功率最高可达 +12 dBm
- nZIF 接收器具有 –94 dBm 的蓝牙接收灵敏度
- 自适应频率跳变 (AFH)
- 基于 SDIO/SPI/UART 接口的标准 HCI
- 高速 UART HCI,最高速率可达 4 Mbps
支持蓝牙 4.2 BR/EDR 和 BLE 双模控制器
- 同步连接导向/扩展同步连接导向(SCO/ESCO)
- CVSD 和 SBC 音频编解码算法
- piconet 和 scatternet
- 支持传统蓝牙和低功耗蓝牙的多设备连接
- 支持同时广播和扫描
ULN2003 步进电机
产品特点
ULN2003 是一款高电压、高电流的达林顿显示器。它由七个硅 NPN 达林顿管组成。ULN2003 中的每对达林顿管串联连接一个 2.7K 基极电阻。在 5V 工作电压下,可直接与 TTL 和 CMOS 电路连接,无需标准逻辑缓冲器即可直接处理数据。此处采用 DIP-16 封装,4 相 5 线 5V 步进电机。
结构与应用
Arduino 开发步骤
Arduino ESP32
下载 IDE
为完成 ESP32 的代码开发,使用 Arduino 进行开发和编译。首先,您需要安装环境并进入Arduino官方网站:https://www.arduino.cc/en/Main/Software,下载适用于您平台的版本。
安装Arduino
双击自动安装。需注意,Arduino IDE依赖于Java开发环境,因此PC需安装Java JDK并配置环境变量。若双击无法启动,可能是PC未安装JDK。
代码
uint8_t HeadGearHigh[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0E, 0x01, 0x00, 0x03};
uint8_t HeadGearMiddle[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0E, 0x01, 0x00, 0x02};
uint8_t HeadGearLow[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0E, 0x01, 0x00, 0x01};
uint8_t HeadTiming[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x11, 0x01, 0x00, 0x09};
uint8_t HeadModeStart[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x19, 0x01, 0x41, 0x61};
uint8_t HeadModeStop[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x24, 0x01, 0x46, 0x66};
//BACK
uint8_t BackGearHigh[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1A, 0x01, 0x00, 0x01};
uint8_t BackGearMiddle[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1A, 0x01, 0x00, 0x02};
uint8_t BackGearLow[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1A, 0x01, 0x00, 0x03};
uint8_t BackModeStart[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0C, 0x01, 0x42, 0x62};
uint8_t BackModeStop[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0D, 0x01, 0x43, 0x63};
//Integrated
uint8_t IntegratedModeStart[9]= {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0F, 0x01, 0x44, 0x64};
uint8_t IntegratedModeStop[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1F, 0x01, 0x45, 0x65};
STONE TOOL 2019
新建项目
找到 2019 工具目录并双击打开 STONE Tool 2019
点击新建项目并修改分辨率、项目名称和保存路径
然后设置启动页面,并设置通信包头:
添加图片
默认情况下,新建项目后会显示蓝色背景图片。
右键点击 0.jpg 并选择删除以删除它。以相同方式选择“添加”以添加项目所需的图片。
选择界面设置
RTC
要设置时间功能,首先添加一个时钟设置控件。
添加一个 RTC 控件。
要制作输入键盘,需为每个数组添加一个按钮控件并赋予对应的键值。
菜单栏选择
添加菜单栏控件,设置初始值,并添加对应的ICO库。
页面跳转功能
可设置按钮效果及切换页面,其他按钮的切换界面效果类似。
键盘命令设置
每个按钮需分配对应动作,因此进行以下设置:
//HEAD
uint8_t HeadGearHigh[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0E, 0x01, 0x00, 0x03};
uint8_t HeadGearMiddle[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0E, 0x01, 0x00, 0x02};
uint8_t HeadGearLow[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0E, 0x01, 0x00, 0x01};
uint8_t HeadTiming[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x11, 0x01, 0x00, 0x09};
uint8_t HeadModeStart[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x19, 0x01, 0x41, 0x61};
uint8_t HeadModeStop[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x24, 0x01, 0x46, 0x66};
//BACK
uint8_t BackGearHigh[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1A, 0x01, 0x00, 0x01};
uint8_t BackGearMiddle[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1A, 0x01, 0x00, 0x02};
uint8_t BackGearLow[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1A, 0x01, 0x00, 0x03};
uint8_t BackModeStart[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0C, 0x01, 0x42, 0x62};
uint8_t BackModeStop[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0D, 0x01, 0x43, 0x63};
//Integrated
uint8_t IntegratedModeStart[9]= {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x0F, 0x01, 0x44, 0x64};
uint8_t IntegratedModeStop[9] = {0xA5, 0x5A, 0x06, 0x83, 0x00, 0x1F, 0x01, 0x45, 0x65};
连接
代码
/*
Stepper Motor Control - one revolution
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor should revolve one revolution in one direction, then
one revolution in the other direction.
Created 11 Mar. 2007
Modified 30 Nov. 2009
by Tom Igoe
*/
步进电机控制 – 一圈
本程序控制一个单极或双极步进电机。