餐饮加盟网-免费发布餐饮招商信息!本站不提供任何加盟资料,如需加盟请去其官网了解详情

基于STM32的智能点餐系统(含代码)

来源:餐饮加盟
作者:小吃加盟·发布时间 2025-10-13
核心提示:言基于STM32的智能点餐系统,主控使用STM32F103C8T6核心板针对传统就餐点餐流程出现的问题,进行需求分析,对点餐流程和功能模块

基于STM32的智能点餐系统,主控使用STM32F103C8T6核心板

  • 针对传统就餐点餐流程出现的问题,进行需求分析,对点餐流程和功能模块 进行分析,设计一款以单片机为主控器的智能点餐系统。该系统结合红外线传感器、嵌入式芯片、无线传感器、语音模块等设备,把点餐数据传输到服务器。
  • 智能餐厅由手机终端APP与智能管理终端机两部分组成,拥有实时的快餐制作的流程、提前预约、支持线上线下支付、实时评价、建议采集等功能,从而减少人力成本,方便客户享受快节奏、高品质的就餐点餐服务。
< class="pgc-img">

一、功能要求:

  • 基于单片机系统设计点餐系统,
  • 实现前台点餐,后台可以看到
  • 实现后台做好菜品,前台可以收到通知

二、代码思路

  • 打开定时器2,作为系统运行时间;
  • esp8266每2.5S刷新一次;
  • dht11每1s刷新一次;
  • OLED每2s刷新一次;

三、硬件说明

  • 系统启动后,会有“MyPro”这个WiFi,用手机网络助手连接上,
  • ip地址:192.168.1.1 ,端口8080
  • 引脚连接:
        ESP8266:	EN		B0
  					RST		B1
  					RX		B10  
  					TX		B11		
  			
        OLED:      D0    PA5(SCL1)
          			D1    PA7(SDA1)
           			RES   PB7
          			DC    PA4
          			CS    PA6 


  • @attention 1、提供给ESP8266的电压(3-4v)或者电流不够时,连接wifi会失败
  • 实验平台:STM32C8T6核心板
< class="pgc-img">


四、代码以及框图等资料

//前台代码
int main(void)
{
while(1)
{

	while(systeminit)
	{
		//OLED_Clear();
    key=KEY_Scan(0);	//得到键值
	  if(key)
		{
			switch(key)
			{				 
				case WKUP_PRES:
					OLED_Clear();					
					table();
				  table_num++;				
					break;
				case KEY2_PRES:
          OLED_Clear();	
					table_num--;	
				  table();
					break;
				case KEY1_PRES:
					systeminit=0;
				  OLED_ShowString(20,6,"Waiting...",16);
					delay_ms(1000);
				  OLED_Clear();
				  show_page1();
					break;
				case KEY0_PRES:
					break;
			}
		}
		else delay_ms(2);	
	}
	
	
	
	
	//以下是选菜界面
	
  
.
.
.
.
.

		
		//以下是更新数量,标题,价格
		
	  if(!jiezhang)
		{
			show_caption();
			switch(page)
			{				 
				case 1:	
					OLED_ShowNum(74,3,food1,1,16);
					OLED_ShowNum(74,6,food2,1,16);
				
				  OLED_ShowNum(110,3,food1_m,2,16);
					OLED_ShowNum(110,6,food2_m,2,16);
					break;
				case 2:	
					OLED_ShowNum(74,3,food3,1,16);
					OLED_ShowNum(74,6,food4,1,16);
				
				  OLED_ShowNum(110,3,food3_m,2,16);
					OLED_ShowNum(110,6,food4_m,2,16);
					break;
				case 3:
					OLED_ShowNum(74,3,food5,1,16);
					OLED_ShowNum(74,6,food6,1,16);
				
				  OLED_ShowNum(110,3,food5_m,2,16);
					OLED_ShowNum(110,6,food6_m,2,16);
					break;
			}			
		}		
		
		
		
		//以下是按键
			
    key=KEY_Scan(0);	//得到键值
	  if(key)
		{
			switch(key)
			{
				case WKUP_PRES:	
				  if(page==1)
					{
						switch(choose)
						{
							case 1 : 
								food1++;
							  send_dat(1);
								//ESP8266_SendString ( DISABLE, send_str1, strlen ( send_str1 ), ( ENUM_ID_NO_TypeDef ) 0 );
								break;
							case 2 : 
								food2++;
							  send_dat(2);
							  //ESP8266_SendString ( DISABLE, send_str2, strlen ( send_str2 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
						}
					}
					else if(page==2)
					{
						switch(choose)
						{
							case 1 : 
								food3++;
							  send_dat(3);
								//ESP8266_SendString ( DISABLE, send_str3, strlen ( send_str3 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
							case 2 : 
								food4++;
							  send_dat(4);
								//ESP8266_SendString ( DISABLE, send_str4, strlen ( send_str4 ), ( ENUM_ID_NO_TypeDef ) 0 ); 
							  break;
						}
					}
					else if(page==3)
					{
						switch(choose)
						{
							case 1 : 
								food5++; 
							  send_dat(5);
								//ESP8266_SendString ( DISABLE, send_str5, strlen ( send_str5 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
							case 2 : 
								food6++;
							  send_dat(6);
								//ESP8266_SendString ( DISABLE, send_str6, strlen ( send_str6 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
						}							
					}	
					break;

					
				case KEY2_PRES:

				  if(page==1)
					{
						switch(choose)
						{
							case 1 : 
								food1--;
								send_dat(7);
								//ESP8266_SendString ( DISABLE, send_str7, strlen ( send_str7 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
							case 2 : 
								food2--;
								send_dat(8);
								//ESP8266_SendString ( DISABLE, send_str8, strlen ( send_str8 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
						}						
					}
					else if(page==2)
					{
						switch(choose)
						{
							case 1 : 
								food3--;
								send_dat(9);
								//ESP8266_SendString ( DISABLE, send_str9, strlen ( send_str9 ), ( ENUM_ID_NO_TypeDef ) 0 );
  							break;
							case 2 : 
								food4--; 
								send_dat(10);
								//ESP8266_SendString ( DISABLE, send_str10, strlen ( send_str10 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
						}							
					}
					else if(page==3)
					{
						switch(choose)
						{
							case 1 : 
								food5--;
							  send_dat(11);
								//ESP8266_SendString ( DISABLE, send_str11, strlen ( send_str11 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
							case 2 : 
								food6--; 
							  send_dat(12);
								//ESP8266_SendString ( DISABLE, send_str12, strlen ( send_str12 ), ( ENUM_ID_NO_TypeDef ) 0 );
							  break;
						}							
					}	
					break;
			

				case KEY1_PRES:		
				  page++;
				  if(page>3)page=1;
				  if(page==1)
					{ 
						show_page1();
						//if(choose==1)			OLED_ShowString(68,3,"*",16);
						//else if(choose==2)OLED_ShowString(68,6,"*",16); 
						break;
					}
					else if(page==2)
					{
						show_page2();
						//if(choose==1)			OLED_ShowString(68,3,"*",16);
						//else if(choose==2)OLED_ShowString(68,6,"*",16); 
					}
					else if(page==3)
					{
						show_page3();	
						//if(choose==1)			OLED_ShowString(68,3,"*",16);
						//else if(choose==2)OLED_ShowString(68,6,"*",16); 
					}
					break;

					
				case KEY0_PRES:
					page--;
				  if(page<1)page=3;
				  if(page==3)
					{
						show_page1();
						//if(choose==1)			OLED_ShowString(68,3,"*",16);
						//else if(choose==2)OLED_ShowString(68,6,"*",16); 
						break;
					}
					else if(page==2)
					{ 
						show_page2();
						//if(choose==1)			OLED_ShowString(68,3,"*",16);
						//else if(choose==2)OLED_ShowString(68,6,"*",16); 
					}
					else if(page==3)
					{
						show_page3();	
						//if(choose==1)			OLED_ShowString(68,3,"*",16);
						//else if(choose==2)OLED_ShowString(68,6,"*",16); 
					}
					break;	
			}
		}
		else delay_ms(2);	


		
		//以下是按键
			
.
.
.
.
.
.

	
		
		//以下是ESP8266向PC发送数据,每1s发送一次
			
	
		if(esp_flag==1)
		{
			esp_flag=0;
			//LED=!LED;		
			//类似于c语言中向屏幕打印的printf
			//这里是将第二、三个参数打印到第一个参数的字符串中	
			ESP8266_SendString ( DISABLE, send_str, strlen ( send_str ), ( ENUM_ID_NO_TypeDef ) 0 );
		}
		
		
		//以下是接收ESP8266数据
						
		strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ]='\0';
		revStr=strEsp8266_Fram_Record .Data_RX_BUF;				
		if(strstr(revStr, ":c"))
			continue;		
		strtok(revStr, ":");
		revStr=strtok(NULL, ":");		
		// 这里判断缓存内
		if(revStr!=NULL)
		{
			if(*revStr=='M')
			{
				OLED_Clear(); 				
				food1_change=!food1_change;
				show_page1();
			}
			else if(*revStr=='N')
			{
				OLED_Clear(); 				
				food2_change=!food2_change;
				show_page1();
			}
		}
	}
}

}


void show_caption(void)
{
  //名称、数量、价格
	OLED_ShowCHinese(2,0,46);
	OLED_ShowCHinese(18,0,47);
	
	OLED_ShowCHinese(48,0,48);
	OLED_ShowCHinese(64,0,49);
	
	OLED_ShowCHinese(96,0,44);
	OLED_ShowCHinese(112,0,45);
}

void Show_Chinese(void)
{
	OLED_ShowCHinese(0,3,8);
	OLED_ShowCHinese(18,3,11);
	OLED_ShowCHinese(64,3,9);
	OLED_ShowCHinese(82,3,11);
	
	OLED_ShowCHinese(0,6,10);
	OLED_ShowCHinese(18,6,11);
	OLED_ShowCHinese(64,6,12);
	OLED_ShowCHinese(82,6,13);

}

void show_page1()
{		
	OLED_Clear();
	show_caption();
	//鱼香肉丝/麻婆豆腐
	if(food1_change>=1)
	{
		OLED_ShowCHinese(0 ,3,8);
		OLED_ShowCHinese(18,3,9);
		OLED_ShowCHinese(36,3,10);
		OLED_ShowCHinese(54,3,11);
	}
	else
	{
		OLED_ShowCHinese(0 ,3,34);
		OLED_ShowCHinese(18,3,35);
		OLED_ShowCHinese(36,3,36);
		OLED_ShowCHinese(54,3,37);		
	}

	//辣子鸡丁/红烧茄子
	if(food2_change>=1)
	{	
		OLED_ShowCHinese(0 ,6,12);
		OLED_ShowCHinese(18,6,13);
		OLED_ShowCHinese(36,6,14);
		OLED_ShowCHinese(54,6,15);
	}
	else
	{
		OLED_ShowCHinese(0 ,6,40);
		OLED_ShowCHinese(18,6,41);
		OLED_ShowCHinese(36,6,42);
		OLED_ShowCHinese(54,6,43);		
	}
}


void show_page2()
{		
	OLED_Clear();
	show_caption();
	OLED_ShowCHinese(0 ,3,16);
	OLED_ShowCHinese(18,3,17);
	OLED_ShowCHinese(36,3,18);
	OLED_ShowCHinese(54,3,19);
	                 
	OLED_ShowCHinese(0 ,6,20);
	OLED_ShowCHinese(18,6,21);
	OLED_ShowCHinese(36,6,22);
	OLED_ShowCHinese(54,6,23);
}
void show_page3()
{
	OLED_Clear();
	show_caption();
	OLED_ShowCHinese(0 ,3,24);
	OLED_ShowCHinese(18,3,25);
	OLED_ShowCHinese(36,3,26);
	OLED_ShowCHinese(54,3,27);

	OLED_ShowCHinese(0 ,6,28);
	OLED_ShowCHinese(18,6,29);
	OLED_ShowCHinese(36,6,30);
	OLED_ShowCHinese(54,6,31);
}

void show_page4()
{	
	OLED_Clear();
	//点餐系统
	OLED_ShowCHinese(0,0,0);
	OLED_ShowCHinese(16,0,1);
	OLED_ShowCHinese(96,0,6);
	OLED_ShowCHinese(112,0,7);
	//x号总价
	OLED_ShowNum(2,3,table_num,3,16);
	OLED_ShowCHinese(32,3,39);
	OLED_ShowCHinese(50,3,32);
	OLED_ShowCHinese(68,3,33);
	OLED_ShowString(94,3,":",16);
	
	count=food1*food1_m + food2*food2_m + food3*food3_m + food4*food4_m + food5*food5_m + food6*food6_m;
	OLED_ShowNum(84,3,count,4,16);
}

void table()
{
.
.
.
.

完整代码可进群免费领取。

嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

点击这里找小助理0元领取:扫码进群领资料

日,风靡魔都的网红美食“南大门一米蒸”首次登陆杭州,而且第一家就开在阿里巴巴食堂。阿里巴巴总部西溪园区又再次成为许多人的“网红打卡景点”。

阿里内网帖引来上万人关注,“哪款糕点最好吃”、“哪款颜值最高”一时成为热议话题。

征服上万人的胃,菜单每月推新

在阿里巴巴西溪园区内,共有5个食堂,一日三餐都安排得明明白白。据行政同学统计,阿里人一年吃掉的大米将近495吨,鸡蛋一年消耗302万个,面粉32.5万斤。

而食堂引入的供应商来自北京、深圳、台湾等全国各地,口味几乎涵盖了南北方等各种风味。以2号食堂为例,这里有19个档口,每个档口按地区分有油麻地、户部巷、城隍庙、磁器口、簋街、南锣鼓巷、回民坊……光听这名字就像是走遍了中国美食地图。

不仅品种丰富,还每月都有新品推出,如同一款APP产品得不时更新版本,有助于提升用户活跃度和新鲜感。例如前期《长安十二时辰》电视剧的热播,带火了一波西安美食,其中最受关注的就是张小敬吃的水盆羊肉,8月12号食堂就会上线“长安十二风味”,其中就有呼声最高的“水盆羊肉”。

拿铁和肉包更搭,撸串和代码更配

夏天来临,“深夜食堂”在园区一角悄然开张,撸串、剥虾,啃个钵钵鸡、喝瓶北冰洋,让这夏天的夜晚瞬间有了灵魂。据统计,光顾这里的80%都是程序员,看来“撸代码”和“撸串”还真有异曲同工之妙。妹子们在这季节最爱的,则是健康瘦身餐。粗粮、蔬菜,加些牛肉、鸡肉或是鱼、虾,营养又健康,这几款限量套餐在食堂一上线后就广受好评,现在每天都有四五百人提前一天在钉钉群内进行预订。

在食堂以外,阿里还引入了更多商业配套,比如咖啡馆,星巴克和Costa,充分满足了咖啡爱好者的日常消费和社交需求。星巴克已经一跃成为全国同等规模园区门店的销量之王,一年能卖出43.2万杯,最受欢迎的是拿铁,每卖出7杯中必有一杯拿铁。同样每天门庭若市的,还有园区的“甘其食”包子铺,每年光鲜汁肉包就能卖出近20万个。

黑科技加持,吃饭也可以很酷

作为一家科技公司,阿里巴巴的食堂必然有黑科技加持。“报我的名字买单”这句话在这里不适用,替代的是“扫我的脸买单”。在阿里智慧餐厅,餐线打完菜后不用排队等工作人员来计算、刷卡,只需将托盘放在自助收银台上,1秒内就可以完成结算和刷脸支付的全流程。这个AI结算技术还是阿里程序员自发进行研究开发的,让吃饭这件事变得有点酷。

排队买饭和工作一样讲效率,餐厅为此特别引入了无人餐柜服务,阿里人无需到现场排队,只要提前在手机点餐,下单时可选择立即就餐或其他时间就餐,然后到食堂凭号取餐即可,省时省力,可以称得上是食堂界的“饿了么”服务。

在外界看来,阿里园区多的是开会、敲代码、评审会、聊需求等工作情景,殊不知这里也是充满了人间烟火气。正如同阿里人常挂在嘴边的“快乐工作、认真生活”,对于吃这件小事,他们好像一点儿都不凑合。

上游新闻·重庆商报记者 韦玥

于android的餐厅智能点餐

一、项目介绍

?商家:

(1)登陆功能:商家通过自己的账号密码登陆系统进行店铺管理

(2)菜品信息发布:商家可以发布菜品相关信息供顾客选择

(3)查询功能:商家通过订单号查询到该笔订单所有信息

(4)修改功能:商家可以对菜品的相关信息进行增删查改相关的操作

(5)结算功能:可设置优惠笔目,在结算时自动计算并得出金额

?顾客:

(1)注册功能:顾客可以扫描商家提供的点餐二维码信息进入点餐界面进行点餐

(2)下单功能:顾客可以在下单页面查看菜品信息、包括价格、优惠信息等,并可以对已点菜肴进行增减

(3)评价功能:顾客在用餐后进行评价,讲对菜的口味、价位、服务等相关信息反馈给商家

(4)积分功能:在消费后可获得积分,并展示积分明细

客户点餐、评价等功能实现。界面清晰流畅,程序运行稳定。

二、运行环境

1:客户端使用Android stuido进行开发;

2:服务端后台使用Myeclipse2014进行开发;

3:mysql数据库进行数据存储;

4:需要jdk1.7以上

5:使用雷电模拟器或者Androidstuio自带的模拟器进行运行

三、使用技术

总体设计逻辑和思路:

1:先设计数据库表文件

2:写服务端jsp页面以及写api接口给客户端提供数据

3:完成后台服务端的数据交互,也就是jsp页面数据的存储和显示

4:进行客户端页面的开发;

5:进行客户端对api接口的调用,也就是获取数据库的数据以及在客户端进行显示

移动端:

1:使用android原生控件以及xml布局文件来完成界面的显示

2:使用java代码完成功能的数据和逻辑交互

3:使用http网络请求完成数据的请求;

4:使用json数据解析完成客户端数据的回调和显示

服务端后台:

1:使用mysql完成数据的存储

2:使用jdbc完成数据库和代码的逻辑交互

3:使用jsp完成网页数据的显示

4:使用java代码完成api接口的编写以及以及数据的回调

如果您对此项目感兴趣,请在此留言,坐等企业找您(成功的创业者90%都是通过留言,留言只需5秒钟)
  • 知名招商项目汇聚平台

    汇聚海量知名、高诚信度品牌招商项目,随时为您提供招商信息

  • 事实和口碑胜于一切

    千万创业者通过这里找项目、迈出成功创业第一步;

  • 诚信的商机发布平台

    请你在加盟留言时,选择有实力、 加盟店多、成功案例多、合法资质、 证照齐全、诚信经营的品牌.

郑重承诺:本公司郑重承诺尊重你的隐私,并承诺为你保密!
随时 上班时间 下班时间
您可以根据下列意向选择快捷留言
  1. 加盟费多少
  2. 我们这里有加盟店吗?
  3. 我想了解一些加盟资料
  4. 我对这个项目感兴趣,尽快联系我


创业专题



热门创业项目

精品推荐

餐饮项目分类

联系我们

微信扫一扫
第一时间推送投资小回报快利润高的项目

合作伙伴

我们也在这里

关注微信关注微信

您身边的财富顾问...

扫一下
客户端客户端

iPhone/Android/iPad

去下载
关注微博关注微博

官方微博随时分享...

加关注
手机看hbdrt.cn手机看hbdrt.cn

随时随地找商机...

去看看

温馨提示

  • 1在找餐饮项目的过程中多对比同类项目。
  • 2了解项目时多打电话,进行实地考察。
  • 3投资有风险,请谨慎加盟。
  • 4本网站对投资者的风险概不承担。