Tóm tắt ý tưởng
Máy Nói Xin Chào – Greeting Machine là thiết bị thường thấy trong các cửa hàng dịch vụ, nó có thể phát câu xin chào hoặc đơn giản hơn là tiếng chuông “kính cong” chào mừng khi khách hàng đi vào.
Dự án này sẽ thực hiện một phiên bản máy nói xin chào “cải tiến” với nhiều tính năng vượt trội: phân biệt ra / vào, đếm số lượt khách hàng và đo dung lượng hiện tại của phòng, dự án được thực hiện bằng các phần cứng Robotics của MakerEdu với những thao tác lắp đặt và lâp trình vô cùng đơn giản.
Mô tả công dụng
- Phân biệt được khách hàng ra / vào cửa hàng bằng việc kết hợp 2 cảm biến vật cản hồng ngoại.
- Phát ra âm thanh xin chào / tạm biệt tương ứng với khách đi ra / vào.
- Đếm số lượng khách vào (check in) của cửa hàng.
- Hiển thị dung lượng của phòng (số lượng khách hàng trong cửa hàng) hiện tại.
Danh sách vật dụng
Vật dụng | Hình ảnh | Chức năng / Chuẩn giao tiếp |
Mạch MakerEdu Creator (x1) |
|
Mạch điều khiển trung tâm, tương thích Arduino Uno, giao tiếp với máy tính qua cổng USB |
Mạch hiển thị MKE-M07 LCD1602 I2C module (x1) |
|
Màn hình hiển thị thông tin, chuẩn giao tiếp I2C |
Cảm Biến Vật Cản Hồng Ngoại E18-D80NK (x2) |
|
Cảm biến vật cản phía trước bằng tia hồng ngoại trong khoảng tối đa 80cm, chuẩn giao tiếp Digital |
Mạch phát âm thanh MKE-M11 UART control MP3 Player module (x1) | ![]() |
Mạch phát âm thanh MP3 từ thẻ nhớ, chuẩn giao tiếp Digital UART |
Cáp Kết Nối MakerEDU XH2.54 4Wires (x2) |
|
Cáp kết nối phần cứng MakerEdu.vn chuẩn XH2.54 4 dây |
Cáp USB Type-C Cable 1m – Hshop.vn (x1) |
|
Cáp USB-C kết nối mạch MakerEdu Creator với máy tính |
Flowchart
Hướng dẫn kết nối
LƯU Ý QUAN TRỌNG: CẦN XOÁ CHƯƠNG TRÌNH CŨ TRÊN MẠCH VIETDUINO TRƯỚC KHI THỰC HIỆN KẾT NỐI VỚI CÁC PHẦN CỨNG MỚI ĐỂ TRÁNH CÁC XUNG ĐỘT CÓ THỂ LÀM HƯ HỎNG MẠCH!!!
- Bước 1: Xoá chương trình cũ có sẵn trên mạch Vietduino trước khi thực hiện kết nối các phần cứng mới.
- Bước 2: Lắp Shield lên mạch Vietduino Uno
- Bước 3: Kết nối các phần cứng theo sơ đồ sau:
- Bước 4: Tạo file MP3 trong thẻ nhớ theo cú pháp 0001-000x và lắp đặt thẻ nhớ vào mạch phát âm thanh MP3.
[000X_Nội Dung File][Định dạng MP3, WMA,…]
Hướng dẫn lập trình Mblock for Arduino
LƯU Ý QUAN TRỌNG: TRƯỚC KHI THỰC HIỆN CẦN CÀI ĐẶT PHẦN MỀM MBLOCK, CẤU HÌNH PHẦN MỀM VỚI MẠCH VIETDUINO UNO VÀ CÀI ĐẶT CÁC EXTENSION CỦA MAKEREDU.VN THEO HƯỚNG DẪN TẠI ĐÂY
Khai Báo Biến
***Lưu ý: Khi khai báo các biến nếu có “int_” phía trước tên biến sẽ là kiểu số nguyên (Integer), mặc định nếu không có sẽ là kiểu số thực (Float).
Hình Thành Các Bộ Phận Code

Code Hoàn Chỉnh
***Link dự án tại Mblock: MÁY NÓI XIN CHÀO – Mblock Community
Giải thích code
Phân loại | Khối lệnh | Chức năng |
Events | ![]() |
Bắt đầu chương trình |
Control | ![]() |
Lặp lại mãi mãi |
![]() |
Thực hiện đoạn mã các tập lệnh trong khối này nếu các điều kiện chỉ định được đáp ứng | |
![]() |
Chờ một khoảng thời gian bao nhiêu giây | |
![]() |
Đợi cho đến khi | |
Pin | ![]() |
Đọc tín hiệu Digital |
Operators | ![]() |
Cả hai mệnh đề điều kiện đều đúng |
![]() |
Ghép hai chuỗi lại với nhau | |
![]() |
Phép so sánh bằng nhau | |
![]() |
Phép so sánh lớn hơn | |
Variables | ![]() |
Tăng / giảm biến một giá trị nhất định |
MKE-M07,08 | ![]() |
Xóa nội dung hiển thị trên màn hình LCD |
![]() |
In dòng chữ hiển thị trên màn hình LCD | |
MKE-M11 | ![]() |
Phát âm thanh từ file trong thẻ nhớ |
Hướng dẫn lập trình Arduino
LƯU Ý QUAN TRỌNG: TRƯỚC KHI THỰC HIỆN CẦN CÀI ĐẶT PHẦN MỀM ARDUINO, CẤU HÌNH PHẦN MỀM VỚI MẠCH VIETDUINO UNO VÀ CÀI ĐẶT BỘ THƯ VIỆN CỦA MAKEREDU.VN THEO HƯỚNG DẪN TẠI ĐÂY
// Include library // Cai dat thu vien #include <SoftwareSerial.h> #include "LiquidCrystal_I2C.h" #include "MKL_DFRobotDFPlayerMini.h" // Define connected sensor pin // Dat ten cong ket noi cho cam bien #define SENSOR1_PIN 11 #define SENSOR2_PIN 10 // Initialize DFPlayer Mini on the second serial port on RX and TX pins // Khoi tao DFPlayer Mini qua cong ket noi noi tiep tren hai chan RX va TX SoftwareSerial mySoftwareSerial(13, 12); DFRobotDFPlayerMini myDFPlayer; // Set the LCD address to 0x27 for a 16 chars and 2 line display // Thiet lap dia chi LCD 0x27 de hien thi 16 ky tu tren hai dong LiquidCrystal_I2C LCD(0x27, 16, 2); // Declare variables // Khai bao bien int soKhach = 0; int checkin = 0; void setup(){ // Initialize LCD 1602 to display // Khoi tao LCD 1602 de hien thi LCD.init(); // Turn on LCD backlight // Bat den nen LCD 1602 LCD.backlight(); // We initialize software serial connection // Khoi tao cong ket noi software serial mySoftwareSerial.begin(9600); //Use softwareSerial to communicate with mp3 module. //Sử dụng software serial ket noi voi module mp3. myDFPlayer.begin(mySoftwareSerial); myDFPlayer.setTimeOut(500); // Set Sensor Pin as Input // Thiet lap chan SENSOR la Input pinMode(SENSOR1_PIN, INPUT); pinMode(SENSOR2_PIN, INPUT); } void loop() { // Setting LCD Display // Thiet lap hien thi tren LCD LCD.setCursor(0, 0); LCD.print("Capacity"); LCD.setCursor(9, 0); LCD.print("Checkin"); LCD.setCursor(0, 1); LCD.print(soKhach); LCD.print("/40"); LCD.print(" "); LCD.setCursor(10, 1); LCD.print(checkin); // If SENSOR1 be Actived // Nếu SENSOR1 duoc kich hoat if (digitalRead(SENSOR1_PIN) == 0) { // Wait until SENSOR2 be Actived and SENSOR1 be Inactived // Doi den khi SENSOR2 kich hoat va SENSOR1 ngung kich hoat while (!((digitalRead(SENSOR2_PIN) == 0)&&(digitalRead(SENSOR1_PIN) == 1))) {} // Play Welcome sound and prin on LCD // Phat tieng noi xin chao va hien thi len LCD myDFPlayer.playMp3Folder(1); soKhach += 1; checkin += 1; LCD.setCursor(0, 0); LCD.print("MakerLab Welcome"); delay(1000); } // If SENSOR2 be Actived // Nếu SENSOR2 duoc kich hoat if (digitalRead(SENSOR2_PIN) == 0) { // Wait until SENSOR1 be Actived and SENSOR2 be Inactived // Doi den khi SENSOR1 kich hoat va SENSOR2 ngung kich hoat while (!((digitalRead(SENSOR1_PIN) == 0)&&(digitalRead(SENSOR2_PIN) == 1))) {} myDFPlayer.playMp3Folder(2); if (soKhach > 0) { soKhach -= 1; } LCD.setCursor(0, 0); LCD.print("MakerLab Goodbye"); delay(1000); } }
***Link tải code tại Github: makereduvn/MakerEdu_Development_Kit (github.com)