đồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàngđồ án gọi món ăn nhanh trong nhà hàng
1 MỤC LỤC DANH MỤC HÌNH ẢNH Bảng Bảng 2: chức chân LCD Bảng 3: Sơ đồ khối HD44780 Bảng 4: Chức chân RS R/W theo mục đích riêng Bảng Bảng mã kí tự (ROM code A00) Bảng Mối liên hệ địa CGRAM, liệu CGRAM, mã kí tự Bảng 10: Chức lệnh Bảng 11: maximum rating Bảng 12: Miền làm việc bình thường Bảng 13: bảng bus timing Bảng 14: khởi tạo LCD Bảng 15:Khởi động chế độ bit DANH MỤC TỪ VIẾT TẮT STT Từ viết tắt Tiếng anh Tiếng việt RFID Radio Frequency Identification Nhận dạng qua tần số vô tuyến CPU Central Processing Unit Bộ xử lý trung tâm IC Integrated circuit Vi mạch tích hợp USB Universal serial bus Giao tiếp USB IDE Integrated Development Environment Mơi trường tích hợp dùng để viết Code phát triển ứng dụng SRAM Static random-access memory Bộ nhớ truy cập ngẫu nhiên tĩnh EEPROM Electrically Erasable Programmable Read-Only Memory Bộ nhớ không liệu ngừng cung cấp điện CHƯƠNG 1: 1.1 TỔNG QUAN HỆ THỐNG Lý chọn dề tài – Khi thực khách ngồi vào bàn nhân viên lễ tân phục vụ mang thực đơn đến cho khách Lưu ý: nhà hàng có thực đơn ăn đồ uống riêng mang hai đến trình cho khách Tốt nhất, khách mang nhiêu thực đơn mang số lượng vừa đủ để khách xem thoải mái, hạn chế tình trạng khách phải chờ đợi để thay phiên xem – Trong thời gian khách xem thực đơn, nhân viên nên chuẩn bị giấy bút, giấy sẵn sàng để nhận order Đây thời điểm thích hợp để nhân viên gợi ý ăn, đồ uống đặc sắc, bật ngày hay khơng sẵn có ngày, chí chương trình khuyến mãi… – Nếu khách đơng cần nhiều thời gian để gọi người phục vụ gợi ý khách order thức uống trước để dùng trước – Nhân viên tiếp nhận order từ khách ghi cẩn thận lên giấy order số bàn, số lượng khách, tên món, số lượng ăn, thức uống yêu cầu đặc biệt khách (như: thịt bị tái hay chín, lẩu cay hay cay nhiều, yêu cầu lên nhanh hay chậm…) Đặc biệt, phiếu phải ghi đầy đủ thông tin nhận biết như: số bàn, tên người nhân viên thực order, ngày, giờ) – Nếu khách cần trợ giúp, tư vấn chọn người phục vụ giới thiệu ăn, loại thức uống phù hợp với sở thích hỏi thăm nguyên liệu, thực phẩm mà gây dị ứng cho khách để tránh, – Ngoài ra, khách có thắc mắc quy trình, ngun liệu chế biến nhân viên phục vụ có trách nhiệm giải đáp, giới thiệu cho họ – Sau tiếp nhận order người nhân viên xin phép lập lại order để kiểm tra tính xác nhờ khách xác nhận – Người phục vụ xin phép khách thu lại thực đơn (nếu khách muốn tham khảo thêm để lại cái), cảm ơn chúc khách có bữa ăn ngon miệng – Nhân viên phục vụ tách liên giấy order đưa cho thu ngân phận liên quan (bếp, quầy bar) Nếu tờ order có liên liên cịn lại nhân viên giữ để theo dõi Hình 1: Phương thức gọi ăn Khoa học công nghệ phát triển cộng thêm sáng tạo vô hạn người, cách thức gọi trở nên phong phú giúp tiết kiệm thời gian hơn: - Khách hàng vào quán phải xếp hàng quầy đợi đến lượt gọi Khi gọi xong khách phải thnah tốn trước ngồi đợi bàn ăn Các ăn gọi chuyển qua nhà bếp thơng qua máy tính nhà hàng sau phục vụ đưa đến vị trí khách Một số sơ hình phục vụ đưa cho khách hàng dụng cụ báo hiệu đồ khách hàng xong tự phát tín hiệu kahcsh hàng phải tự phục vụ Ưu điểm phương thức tiết kiệm thời gian nhân viên phải đứng chờ khách gọi ăn, giảm khối lượng nhân viên phục vụ so với phương thức truyền thống nên giảm thiểu số lượng nhân viên, tiết kiệm chi phí vận hành quán Nhược điểm khiến khách hàng phải xếp hàng chờ lâu quán đông khách, phục vụ khơng rõ vị trí khách hàng trường hợp khách đơng Mơ hình phù hợp với quán trà, café vừa nhỏ với số lượng khách hàng không đông - Phương thức áp dụng công nghệ khách hàng phải sử dụng ứng dụng nhà hàng thông qua smart phone để gọi ăn Món ăn truyền trực tiếp đến nhà bếp thông qua ứng dụng riêng mang cho khách hàng chuẩn bị xong Phương pháp giúp nhà hàng tiết kiệm chi phí nhân viên, tạo nhanh chóng thoải mái cho khách hàng họ khơng phải chờ lâu để đến lượt chọn Tuy nhiên, bất tiện thực khách lần đầu đến vói nhà hàng phải cài đặt thêm ứng dụng vào điện thoại mình, gây bỡ ngỡ sử dụng - Cuối phương pháp mà em hướng tới sử dụng menu điện tử Trên bàn có menu riêng với giao diện thiết kế tùy ý, dễ sử dụng Khách hàng đến ngồi vào bàn tự lựa chọn ăn Khi chọn xong ăn gửi lên hệ thống thông qua đường truyền không dây có dây nối đưa lên hình nhà bếp Khi chuẩn bị xong, ăn nhận viên phục vụ mang đến bàn khách hàng ngồi thơng báo tín hiệu menu để khách hàng tự phục vụ Cách thức gây tốn chi phí đầu tư ban đầu đổi lại nhà hàng giảm số lượng nhân viên hàng tháng, đồng thời thay đổi giao diện, hệ thống ăn mà khơng cần đổi thiết bị 1.2 Các đặc điểm hệ thống 1.2.1 Ưu điểm bật: - Giá thành rẻ dễ đầu tư vào dự án thực tế Tốc độ trễ cực thấp Khơng có độ sai mã sản phẩm gửi ăn tới máy chủ Khơng thêm phí th người làm tiếp tân hay khách hàng mà thay hết hệ thống máy móc tự động 1.2.2 Điểm hạn chế: - Hệ thống phục vụ chưa ổn định - Để loại bỏ khái niệm phong cách ăn truyền thống cần thời gian tốn 1.3 Kết luận chương Hiện đề tài hệ thống chăm sóc thú cưng tự động giúp bảo vệ nguồn nước, nguồn thức ăn thay liên tục giúp cho có thuận tiện an nhàn CHƯƠNG 2: 2.1 SƠ SỞ LÝ THUYẾT Vi điều kiển stm32f103c8t6 2.1.1 Lịch sử phát triển stm32f103c8t6 Dòng sản phẩm STM32F103xx [2] kết hợp lõi ARM Cortex - M3 32 bit có hiệu suất cao hoạt động với tần số 72 MHz, nhớ nhúng tốc độ cao (bộ nhớ Flash lên đến 128 Kbytes SRAM lên đến 20 Kbytes) Bộ chuyển đổi ADC 12 bit, ba đếm thời gian 16 bit chung với hẹn PWM, giao diện truyền thông tiêu chuẩn, hai I2Cs SPIs, ba USARTs, USB CAN STM32F103xx hoạt động khoảng nhiệt độ − 40°C đến + 105°C, từ nguồn cung cấp điện từ 2,0 V đến 3,6 V Một chế độ tiết kiệm lượng toàn diện cho phép thiết kế ứng dụng lượng thấp Dịng sản phẩm STM32F103xx hồn chỉnh bao gồm thiết bị loại gói khác nhau: từ 48 chân đến 100 chân Tùy thuộc vào thiết bị chọn, thiết bị ngoại vi khác bao gồm, mô tả cho biết tổng quan thiết bị ngoại vi Các tính làm cho dòng vi điều khiển dòng hiệu suất STM32F103xx phù hợp với nhiều ứng dụng: + Điều khiển động ứng dụng + Thiết bị y tế thiết bị cầm tay + Các thiết bị ngoại vi máy tính cá nhân tảng GPS + Các ứng dụng công nghiệp: PLC, máy in, máy in máy quét + Hệ thống báo động, Intercom video, HVAC a) IC STM32F103C8T6 - ARM 32-bit Cortex M3 với clock mã 72Mhz - Bộ nhớ: 64 kbytes nhớ Flash(bộ nhớ lập trình) 20kbytes SRAM - Clock, reset quản lý nguồn Điện áp hoạt động 2.0V → 3.6 V Power on reset (POR), power down reset (PDR) programmable voltage detecor (PVD) Sử dụng thạch anh từ 4Mhz → 20Mhz Thạch anh nội dùng dao động RC mode 8Mhz 40Khz ADC 12 bit với kênh cho Khoảng giá trị chuyển đổi từ – 3.6V Lấy mẫu nhiều kênh kênh Có cảm biến nhiệt độ nội DMA: chuyển đổi giúp tăng tốc độ xử lý khơng có can thiệp q sâu CPU kênh DMA Hỗ trợ DMA cho ADC, I2C, SPI, UART - timer: timer 16 bit hỗ trợ mode IC/OC/PWM.14 + timer 16 bit hỗ trợ để điều khiển động với mode bảo vệ nhƣ ngắt input, dead-time… + watdog timer dùng để bảo vệ kiểm tra lỗi systick timer 24 bit đếm xuống dùng cho ứng dụng hàm delay - Hỗ trợ kênh giao tiếp bao gồm: I2C (SMBus/PMBus) USART (ISO 7816 interface, LIN, IrDA capability, modem, control) SPIs (18Mbit/s) CAN interface (2.0B Active) USB 2.0 full-speed interface - kiểm tra lỗi CRC 96-bit ID b) Sơ đồ chân ICSTM32F103C8T6 Hình 1: IC STM32F103C8T6 + Thơng số kỹ thuật: - Loại: Mạch tích hợp (ICs) - Loại: STM32f1 32-bit MCU 10 - Bộ lõi xử lý: STM32 - Tần số tối đa 72MHz, tốc độ 1,25 DMIPS / MHz - Bộ nhớ Flash: 64 Kbytes 20 Kbytes SRAM - Kết nối: CAN, IrDA, LIN, SPI, I2C, UART / USART, USB - Thiết bị ngoại vi: DMA, PWM, PDR, POR, PVD, WDT - Số chân giao tiếp I / O: 37 chân - Kích thước RAM: 20K - Điện áp – Cung cấp: 2V – 3,6V - I2C - kênh USART - SPIs - Kích thước nhớ chương trình: 64KB (64K x 8) - Nhiệt độ hoạt động: - 40°C ~ 105°C - Tích hợp thạch anh 8MHz 32.768MHz Cổng JTAG tương thích với debugger: ST-Link c) Chuẩn giao tiếp SPI - SPI (Serial Peripheral Bus) chuẩn truyền thông nối tiếp tốc độ cao hãng Motorola đề xuất Đây kiểu truyền thông Master - Slave, có chip Master điều phối q trình tuyền thông chip Slaves điều khiển Master truyền thơng xảy Master Slave SPI cách truyền song công (full duplex) nghĩa thời điểm trình truyền nhận xảy đồng thời SPI gọi chuẩn truyền thông “4 dây” có đường giao tiếp chuẩn SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) SS (Slave Select) SPI viết tắt Serial Peripheral Interface, SPI bus – Giao diện ngoại vi nói tiếp, bus SPI Chuẩn SPI phát triển Motorola Đây chuẩn 40 3.3 Thiết kế phần mềm hệ thống: 3.3.1 Chương trình BEGIN Khởi tạo STM32f103 Khởi tạo LCD Thơng báo hồn tất khởi động LCD Lệnh từ module, cảm biến Sai Đúng Xử lý tín hiệu gửi tín hiệu điều khiển Thông báo trạng thái hoạt động qua LCD END Hình 3.1: Lưu đồ thuật tốn chương trình Đầu tiên vừa khởi động reset,vi điều khiển tiến hành khởi tạo giá trị vào Đọc giá trị nhiệt độ, mức nước liên tục giá trị gửi lên cách liên tục 41 3.3.2 Thiết kế app ứng dụng: Hệ thống băn đầu hiển thị danh sách thức ăn 42 3.4 Kết thực nghiệm: 3.4.1 Mơ hình thực tế: Hình 3.2: Mơ hình sản phẩm thực tế 3.4.2 Ưu nhược điểm hệ thống Ưu điểm: - Thiết kế mạch nhỏ gọn - Hệ thống điều khiển kit ARM, hỗ trợ rộng rãi cộng đồng lập trình Nhược điểm: - Hệ thống hoạt động cịn chưa xác 3.4.3 Hướng phát triển đề tài Trong khoảng thời gian thực đề tài mặt hạn chế thời gian kinh nghiệm cịn hạn chế nên hệ thống gọi ăn nahnh chưa hồn hảo Vì vậy, để đề tài mang nhiều tính thực tế, ứng dụng 43 cao tơi xin đưa số hướng phát triển sau : o o o o o Lập trình phần cảm ứng cho hình Giao tiếp với module wifi để gửi liệu lên máy chủ Thiết kế giao diện máy chủ để tiếp nhận xử lý thơng tin Thiết kế giao diện menu đẹp, dễ nhìn, dễ thao tác với khách hàng Nâng cấp hình to để dễ tương tác Hy vọng với vấn đề vừa nêu ý tưởng khác bạn đọc, bạn sau phát triển đề tài phong phú hoàn thiện 44 TÀI LIỆU THAM KHẢO [1]https://www.espressif.com/sites/default/files/documentation/0aesp8266ex_datasheet_en.pdf [2]https://arduinokit.vn/cam-bien-anh-sang-quang-tro-arduino/ [3]https://arduinokit.vn/doc-cam-bien-nhiet-do-do-am-dht11-arduino/ [4] arduino.vn [5] rfidinc.com [6] https://datasheetspdf.com/pdf/1418730/ITead/HC-05/1 45 PHỤ LỤC /* Includes */ #include "main.h" #include "stm32f1xx_hal.h" /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private variables -*/ UART_HandleTypeDef huart3; /* USER CODE BEGIN PV */ /* Private variables -*/ /* USER CODE END PV */ /* Private function prototypes -*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART3_UART_Init(void); void decodePES_HC05(void); 46 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); /* USER CODE BEGIN */ uint8_t phuc,dem=0; uint8_t kiemtra_duongtruyen; unsigned char PES[2]; unsigned char L1,R1,L2,R2,L,R,start,select,up,down,left,right,X,tron,vuong,tamgiac; /* USER CODE END */ int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART3_UART_Init(); /* USER CODE BEGIN WHILE */ HAL_UART_Receive_IT(&huart3,&phuc,1); while (1) { 47 /* USER CODE END WHILE */ /* USER CODE BEGIN */ decodePES_HC05(); } /* USER CODE END */ } void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance==huart3.Instance) { HAL_UART_Receive_IT(&huart3,&phuc,1); PES[dem++]=phuc; if(dem>1) dem=0; } } void decodePES_HC05(void) { //kiemtra_duongtruyen=0; 48 select = PES[0]&0x01; L = (PES[0]&0x02)/2; R = (PES[0]&0x04)/4; start = (PES[0]&0x08)/8; up = (PES[0]&0x10)/16; right = (PES[0]&0x20)/32; down = (PES[0]&0x40)/64; left = (PES[0]&0x80)/128; L2 = (PES[1]&0x01); R2 = (PES[1]&0x02)/2; L1 = (PES[1]&0x04)/4; R1 = (PES[1]&0x08)/8; tamgiac = (PES[1]&0x10)/16; tron = (PES[1]&0x20)/32; X = (PES[1]&0x40)/64; vuong = (PES[1]&0x80)/128; HAL_Delay(15); } void SystemClock_Config(void) 49 { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; /**Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { _Error_Handler( FILE , LINE ); } /**Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK| RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1| 50 RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { _Error_Handler( FILE , LINE ); } /**Configure the Systick interrupt time */ HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); /**Configure the Systick */ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); 51 } /* USART3 init function */ static void MX_USART3_UART_Init(void) { huart3.Instance = USART3; huart3.Init.BaudRate = 115200; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart3) != HAL_OK) { _Error_Handler( FILE , LINE ); } } static void MX_GPIO_Init(void) { 52 /* GPIO Ports Clock Enable */ HAL_RCC_GPIOD_CLK_ENABLE(); HAL_RCC_GPIOB_CLK_ENABLE(); HAL_RCC_GPIOA_CLK_ENABLE(); } void _Error_Handler(char *file, int line) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ while(1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred 53 * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { /* USER CODE BEGIN */ /* User can add his own implementation to report the file name and line number, tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END */ } #endif /* USE_FULL_ASSERT */ /** * @} */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics 54 *****END OF FILE****/ ... Phương thức áp dụng công nghệ khách hàng phải sử dụng ứng dụng nhà hàng thơng qua smart phone để gọi ăn Món ăn truyền trực tiếp đến nhà bếp thông qua ứng dụng riêng mang cho khách hàng chuẩn bị... trước ngồi đợi bàn ăn Các ăn gọi chuyển qua nhà bếp thơng qua máy tính nhà hàng sau phục vụ đưa đến vị trí khách Một số sơ hình phục vụ đưa cho khách hàng dụng cụ báo hiệu đồ khách hàng xong tự phát... ngỡ sử dụng - Cuối phương pháp mà em hướng tới sử dụng menu điện tử Trên bàn có menu riêng với giao diện thiết kế tùy ý, dễ sử dụng Khách hàng đến ngồi vào bàn tự lựa chọn ăn Khi chọn xong ăn