- Thành phần bắt buộc
- Giao diện TFT LCD Touch Shield với Arduino
- Sơ đồ mạch
- Giải thích mã
- Thử nghiệm Dự án Nhà hàng Thông minh bằng Arduino
Ngày nay, các hệ thống tự động hóa có mặt ở khắp mọi nơi cho dù nhà riêng, văn phòng hay bất kỳ ngành công nghiệp lớn nào, tất cả đều được trang bị hệ thống tự động hóa. Các nhà hàng / khách sạn cũng đang áp dụng xu hướng tự động hóa gần đây và đang cài đặt robot để giao thức ăn và máy tính bảng để nhận đơn đặt hàng. Sử dụng các thẻ menu kỹ thuật số này giống như máy tính bảng, khách hàng có thể dễ dàng chọn các mục. Thông tin này sẽ được gửi đến bếp của Nhà hàng và cũng được hiển thị trên màn hình.
Trong dự án này, chúng tôi đang xây dựng Dự án Nhà hàng Thông minh sử dụng Arduino, màn hình TFT và mô-đun bộ thu / phát RF 433MHz. Ở đây phần máy phát sẽ bao gồm Arduino Uno, màn hình TFT và máy phát RF, sử dụng bộ phát này để khách hàng có thể chọn các món ăn và đặt hàng. Trong khi phần bộ thu bao gồm Arduino Uno, mô-đun LCD, bộ thu RF và Buzzer, sẽ được lắp đặt trong nhà bếp của nhà hàng để theo dõi các món ăn.
Thành phần bắt buộc
- Arduino Uno (2)
- Bộ thu & phát RF 433MHz
- Tấm chắn cảm ứng TFT LCD 2,4 "
- Mô-đun LCD 16 * 2
- Mô-đun I 2 C
Giao diện TFT LCD Touch Shield với Arduino
Màn hình cảm ứng TFT LCD 2,4 "là màn hình TFT nhiều màu tương thích với Arduino UNO / Mega đi kèm với màn hình cảm ứng và ổ cắm thẻ SD. Mô-đun màn hình TFT này có đèn nền sáng và màn hình 240X320 pixel đầy màu sắc. Nó cũng bao gồm RGB riêng lẻ kiểm soát pixel mang lại cho nó độ phân giải tốt hơn nhiều so với màn hình đen trắng.
Giao diện màn hình TFT với Arduino rất đơn giản và được giải thích trong hướng dẫn trước. Bạn chỉ cần gắn màn hình TFT lên bảng Arduino Uno, như trong hình dưới đây.
TFT LCD rất hữu ích trong việc xây dựng các ứng dụng di động như:
- Máy tính màn hình cảm ứng Arduino
- Khóa mã kỹ thuật số được điều khiển trên điện thoại thông minh bằng Arduino
- Đồng hồ báo thức thông minh Arduino
- Dải đèn LED NeoPixel với Arduino và TFT LCD
Ngoài ra, hãy kiểm tra tất cả các dự án dựa trên TFT LCD tại đây.
Sơ đồ mạch
Dự án Hệ thống Đặt hàng Thực đơn Nhà hàng Thông minh bao gồm phần Bộ phát và Bộ thu RF. Cả bên phát và bên nhận đều sử dụng Arduino Uno để xử lý dữ liệu. Trước đây, chúng tôi đã sử dụng cùng một mô-đun RF 433 MHz với Arduino để xây dựng các dự án như chuông cửa không dây, rô bốt điều khiển bằng cử chỉ tay, v.v. Sơ đồ mạch cho phần phát và thu được đưa ra bên dưới.
Mạch phần máy phát
Phần máy phát của dự án này bao gồm Arduino Uno, Máy phát RF và lá chắn hiển thị TFT. Phần này được sử dụng để đặt hàng từ menu được hiển thị trên màn hình TFT. Arduino Uno là bộ não của phía máy phát xử lý tất cả dữ liệu và mô-đun máy phát RF được sử dụng để truyền dữ liệu đã chọn đến máy thu. Chân dữ liệu của mô-đun phát RF được kết nối với chân số 12 của Arduino trong khi chân V CC và GND được kết nối với chân 5V và GND của Arduino.
Mạch phần thu
Phần bộ thu của dự án này bao gồm Arduino Uno, Bộ thu RF, mô-đun LCD 16 * 2 và mô-đun I2C. Máy thu RF được sử dụng để nhận dữ liệu từ phần máy phát, và mô-đun LCD được sử dụng để hiển thị dữ liệu nhận được. Một bộ rung được sử dụng để tạo ra âm thanh bất cứ khi nào có đơn đặt hàng mới. Chân dữ liệu của bộ thu RF được kết nối với chân số 11 của Arduino trong khi chân V CC và GND được kết nối với chân 5V và GND của Arduino. Chân dương của Buzzer được kết nối với chân số 2 của Arduino và chân âm được kết nối với chân GND của Arduino. Các chân SCL và SDA của mô-đun I2C được kết nối với các chân analog A5 & A4 Arduino trong khi các chân VCC và GND được kết nối với các chân 5V và GND của Arduino.
Giải thích mã
Mã hoàn chỉnh cho các bên Bộ phát và Bộ nhận RF cho Hệ thống Đặt hàng Thông minh trong Nhà hàng này được đưa ra ở cuối tài liệu. Tất cả các thư viện được sử dụng trong dự án này có thể được tải xuống từ các liên kết nhất định.
- Thư viện RadioHead
- Thư viện SPFD5408
Thư viện RadioHead được sử dụng cho mô-đun Bộ phát / Bộ thu RF, trong khi thư viện SPFD5408 được sử dụng cho màn hình TFT.
Mã phần máy phát:
Bắt đầu mã bằng cách bao gồm tất cả các thư viện cần thiết. Thư viện RH_ASK.h được sử dụng để giao tiếp giữa các mô-đun máy phát và máy thu. SPFD5408_Adafruit_GFX.h là thư viện đồ họa Core cho màn hình TFT.
#include
Sau đó, tạo một đối tượng có tên là 'trình điều khiển' cho RH_ASK .
Trình điều khiển RH_ASK;
Sau đó, xác định các giá trị trục X & Y được hiệu chỉnh tối thiểu và tối đa cho màn hình TFT của bạn.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Bây giờ bên trong chức năng drawHome, vẽ một bố cục cho màn hình TFT của bạn. Ở đây tft.fillScreen được sử dụng để đặt màu nền.
Hàm tft.drawRoundRect được sử dụng để tạo một Hình chữ nhật được tô đầy. Cú pháp cho hàm tft.drawRoundRect được đưa ra dưới đây:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color)
Ở đâu:
tọa độ x0 = X của điểm đầu của hình chữ nhật
y0 = Tọa độ Y của điểm đầu của hình chữ nhật
w = Chiều rộng của hình chữ nhật
h = Chiều cao của hình chữ nhật
radius = Bán kính của góc tròn
color = Màu của Rect.
Hàm tft.fillRoundRect được sử dụng để vẽ một Hình chữ nhật được tô đầy. Cú pháp củahàm tft.fillRoundRect được đưa ra dưới đây:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color) tft.fillScreen (WHITE); tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // Đường viền trang tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, TRẮNG); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, WHITE); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, WHITE);
Sau khi tạo các nút trên màn hình TFT, bây giờ hãy hiển thị văn bản trên các nút. tft.setCursor được sử dụng để đặt con trỏ từ nơi bạn muốn bắt đầu văn bản.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menu"); tft.setTextSize (2); tft.setTextColor (TRẮNG); tft.setCursor (37, 47); tft.print ("Dish1");
Bên trong chức năng truyền void , gửi dữ liệu đến bên nhận cứ sau 1 giây.
void truyền () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); chậm trễ (1000); }
Bên trong hàm vòng lặp void , hãy đọc giá trị ADC Nguyên bằng hàm ts.getPoint.
TSPoint p = ts.getPoint ();
Bây giờ, hãy sử dụng chức năng bản đồ để chuyển đổi các giá trị ADC thô thành Tọa độ Pixel.
px = bản đồ (px, TS_MAXX, TS_MINX, 0, 320); py = map (py, TS_MAXY, TS_MINY, 0, 240);
Sau khi chuyển đổi các giá trị Raw ADC thành tọa độ pixel, hãy nhập tọa độ pixel cho nút Dish1 và nếu ai đó chạm vào màn hình giữa khu vực này thì hãy gửi tin nhắn đến phía người nhận.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Món 1"; chuyển giao(); tft.fillRoundRect (30, 40, 100, 40, 8, TRẮNG); chậm trễ (70); tft.fillRoundRect (30, 40, 100, 40, 8, VÀNG); tft.drawRoundRect (30, 40, 100, 40, 8, TRẮNG); tft.setCursor (37, 47); tft.println ("Dish1"); chậm trễ (70); }
Làm theo quy trình tương tự cho tất cả các nút khác.
Mã phần người nhận
Đối với mã phần bộ thu RF, hãy bao gồm các thư viện cho bộ thu RF và mô-đun LCD. Cũng bao gồm thư viện SPI.h để thiết lập giao tiếp SPI giữa Arduino và bộ thu RF.
#include
Bên trong chức năng vòng lặp void , liên tục kiểm tra các tin nhắn đã truyền. Và nếu mô-đun bộ thu nhận được thông báo, thì hiển thị thông báo trên mô-đun LCD và phát ra tiếng bíp.
if (driver.recv (buf, & buflen)) // Không chặn {int i; digitalWrite (buzzer, HIGH); chậm trễ (1000); digitalWrite (buzzer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Thử nghiệm Dự án Nhà hàng Thông minh bằng Arduino
Sau khi kết nối tất cả phần cứng và tải lên mã cho cả phần phát và phần thu, bây giờ là lúc để kiểm tra dự án. Để kiểm tra dự án, nhấn một nút trên màn hình TFT, nó sẽ hiển thị tên món ăn với số bảng là T1 trên mô-đun LCD được kết nối với phía đầu thu. Nếu màn hình LCD phía đầu thu không hiển thị gì thì hãy kiểm tra xem màn hình TFT của bạn có hoạt động hay không.
Đây là cách bạn có thể xây dựng dự án Hệ thống đặt hàng thực đơn nhà hàng thông minh bằng cách sử dụng Arduino và màn hình TFT. Bạn cũng có thể thay đổi hướng của màn hình để thêm nhiều nút hơn.
Dưới đây là một video làm việc với mã hoàn chỉnh.