如今的自动化系统无处不在,无论是家庭、办公室还是任何大行业,都配备了自动化系统。餐厅/酒店也在采用最近的自动化趋势,并正在安装机器人来交付食物和平板电脑以接受订单。使用平板电脑等数字菜单卡,客户可以轻松选择项目。该信息将被发送到餐厅的厨房并显示在显示屏上。
在这个项目中,我们正在使用 arduino、tft 显示器和 433mhz 射频发射器/接收器模块构建一个智能餐厅项目。这里的发射器部分将由 arduino uno、tft 显示器和一个射频发射器组成,客户可以使用它来选择食品并下订单。而接收器部分由 arduino uno、lcd 模块、rf 接收器和蜂鸣器组成,它们将安装在餐厅厨房中以跟踪订单物品。
所需组件
阿杜诺乌诺 (2)
433mhz 射频发射器和接收器
2.4“ tft lcd 触摸屏
16*2液晶模组
i 2 c 模块
将 tft lcd 触摸屏与 arduino 连接
2.4” tft lcd touch shield 是一款多色 arduino uno/ mega 兼容 tft 显示器,带有触摸屏和 sd 卡插槽。此 tft 显示模块具有明亮的背光和彩色 240x320 像素显示屏。它还由单独的 rgb 组成像素控制,使其具有比黑白显示器更好的分辨率。
将 tft 显示器与 arduino 连接非常简单,在前面的教程中进行了说明。您只需将 tft 显示屏安装在 arduino uno 板上,如下图所示。
电路原理图
智能餐厅菜单订购系统项目由射频发射器和接收器部分组成。发送端和接收端都使用 arduino uno 进行数据处理。我们之前使用与 arduino 相同的 433 mhz 射频模块来构建无线门铃、手势控制机器人等项目。发射器和接收器部分的电路图如下所示。
发射器部分电路
该项目的发射器部分由一个 arduino uno、rf 发射器和 tft 显示屏组成。此部分用于从 tft 显示屏上显示的菜单进行订购。arduino uno 是发送端的大脑,处理所有数据,rf 发送模块用于将选定的数据传输到接收端。rf发射模块的数据引脚连接到arduino的数字引脚12,而v cc和gnd引脚连接到arduino的5v和gnd引脚。
接收部分电路
本项目的接收器部分由一个arduino uno、rf接收器、16*2 lcd模块和i2c模块组成。rf接收器用于接收来自发射器部分的数据,lcd模块用于显示接收到的数据。每当下新订单时,都会使用蜂鸣器发出声音。rf 接收器的数据引脚连接到 arduino 的数字引脚 11,而 v cc和 gnd 引脚连接到 arduino 的 5v 和 gnd 引脚。buzzer的正极接arduino的数字引脚2,负极接arduino的gnd引脚。i2c 模块的 scl 和 sda 引脚连接到模拟引脚 a5 和 a4 arduino,而 vcc 和 gnd 引脚连接到 arduino 的 5v 和 gnd 引脚。
代码说明
本文档末尾提供了该餐厅智能点餐系统的射频发射器和接收器端的完整代码。
radiohead 库用于射频发射器/接收器模块,而spfd5408 库用于 tft 显示。
发射器部分代码:
通过包含所有必需的库来启动代码。rh_ask.h库用于发送器和接收器模块之间的通信。spfd5408_adafruit_gfx.h是一个用于 tft 显示的核心图形库。
#include #include #include #include #include
之后,为rh_ask创建一个名为“驱动程序”的对象。
rh_ask 驱动程序;
之后为您的 tft 显示器定义最小和最大校准 x 和 y 轴值。
#define ts_minx 125#define ts_miny 85#define ts_maxx 965#define ts_maxy 905
现在在 drawhome 函数中为您的 tft 屏幕绘制布局。这里tft.fillscreen用于设置背景颜色。
tft.drawroundrect函数用于创建填充矩形。tft.drawroundrect函数的语法如下:
tft.drawroundrect(int16_t x0,int16_t y0,int16_t w,int16_t h,int16_t 半径,uint16_t 颜色)
在哪里:
x0=矩形起点的x坐标
y0=矩形起点的y坐标
w = 矩形的宽度
h = 矩形的高度
radius=圆角的半径
color = 矩形的颜色。
tft.fillroundrect函数用于绘制一个填充的矩形。tft.fillroundrect函数的语法如下:
tft.fillroundrect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t 半径, uint16_t 颜色)tft.fillscreen(白色);tft.drawroundrect(0, 0, 319, 240, 8, white); //页面边框 tft.fillroundrect(30, 40, 100, 40, 8, gold); tft.drawroundrect(30, 40, 100, 40, 8, white); //菜1 tft.fillroundrect(30, 90, 100, 40, 8, gold); tft.drawroundrect(30, 90, 100, 40, 8, white); //菜2 tft.fillroundrect(30, 140, 100, 40, 8, gold); //菜3 tft.drawroundrect(30, 140, 100, 40, 8, white);
在 tft 屏幕上创建按钮后,现在在按钮上显示文本。tft.setcursor用于设置光标从您要开始文本的位置。
tft.setcursor(60, 0); tft.settextsize(3); tft.settextcolor(石灰); tft.print(菜单); tft.settextsize(2); tft.settextcolor(白色); tft.setcursor(37, 47); tft.print(dish1);
在void 传输函数内部,每 1 秒向接收方发送一次数据。
无效传输(){ driver.send((uint8_t *)msg, strlen(msg)); driver.waitpacketsent(); 延迟(1000); }
在void 循环函数内,使用 ts.getpoint 函数读取原始 adc 值。
tspoint p = ts.getpoint();
现在使用map函数将原始 adc 值转换为像素坐标。
像素 = 地图(像素,ts_maxx,ts_minx,0, 320);py = map(py, ts_maxy, ts_miny, 0, 240);
将原始 adc 值转换为像素坐标后,输入dish1按钮的像素坐标,如果有人触摸此区域之间的屏幕,则将消息发送到接收方。
如果(像素 > 180 && 像素 190 && py 最小压力 && pz 180 && px 190 && py minpressure && pz 180 && px 140 && py 180 && px 90 && py 210 && px 40 && py 30 && px 190 && py 30 && px 140 && py 30 && px 90 && py 10 && px 40 && py < 80)
{
serial.println(bill);
msg = 客户账单;
发送();
tft.fillroundrect(210, 190, 100, 40, 8, white);
延迟(70);
tft.fillroundrect(210, 190, 100, 40, 8, green);
tft.drawroundrect(210, 190, 100, 40, 8, 白色);
tft.setcursor(227, 197);
tft.print(比尔);
延迟(70);
}
}
}
接收方代码
#include
#include // 没有实际使用,但需要编译
#include
//string msg;
liquidcrystal_i2c lcd(0x27, 16, 2);
rh_ask 驱动程序;
#define 蜂鸣器 2
void setup()
{
serial.begin(9600); // 仅调试
pinmode(buzzer, output);
液晶显示器开始();
lcd.clear();
if (!driver.init())
serial.println(init failed);
}
无效循环()
{
uint8_t buf[17];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)) // 非阻塞
{
int i;
数字写入(蜂鸣器,高);
延迟(1000);
数字写入(蜂鸣器,低);
// 收到具有良好校验和的消息,转储它。
serial.print(消息:);
serial.println((char*)buf);
lcd.clear();
lcd.setcursor(0,0);
lcd.print(t1:);
lcd.print((char*)buf);
}
}
一种新型的GAN,在测试期间只需几张示例图像
当小白!ios10.1成功越狱!不推荐普通用户越狱
怎样才能让配电网更加智能化?提升数据质量
佳能EOSM6评测 更适合入门用户所选用
在高速电路设计中候PCB布线的损耗解决方案
如何使用Arduino构建餐厅智能点餐系统
加密货币交易机器人日益流行的原因是什么?
华为尧权:助力运营商从能源消费者到能源消费者、生产者和使能者
机智云开发者中心迁移变化
英飞凌热泵的结构以及谐波电流解决方案
装上这款插件,Kodi播放器秒变观影神器!
运放的输入失调电压电流怎么计算
三星Note8电池续航和充电速度测试,三星为避免重蹈覆辙牺牲很大
端子连接线怎么接头的
苹果正打造一条完整的可穿戴产品线 提供一套全面覆盖的AR体验
想学西门子PLC,该从哪个知识点学起?
新的充电电池充电要8-12小时吗?
博通考虑出售无线芯片业务 交易价值高达100亿美元
360N5S发布会直播进行中:360N5S手机发布会直播地址奉上和你一起遇见惊喜,360N5S值得期待
集成三相桥式驱动的微控制器—AiP8F7201