CHƯƠNG 6
THIẾT KẾ, LẬP TRÌNH, LẮP ĐẶT MẠCH THỰC TẾ 6.1 Sơ đồ khối hệ thống
Hình 6. 1: Sơ đồ khối hệ thống
Hệ thống gồm 8 khối chính: khối nguồn, vi điều khiển, công tắc tháo linh kiện, điểm đo, nút nhấn và cịi, màn hình LCD, Bluetooth và điện thoại thơng minh.
Khối nguồn: Chính là Adapter, chuyễn đổi điện 220V thành điện 9V cung
cấp nguồn cho các thiết bị hoạt động (Arduino MEGA, Bluetooth HC05…)
Khối vi điều khiển: Dùng board Arduino để nhận tín hiệu từ điện thoại
thơng minh thơng qua bluetooth, sau đó xử lý các tín hiệu nhận được. Tín hiệu thu sau khi được xử lý thì sẽ khởi tạo giá trị của hệ thống mơ phỏng. Ngồi ra, khối vi điều khiển còn gửi các giá trị chân đo và điện áp tới điện thoại thông minh để mô phỏng hoạt động.
Khối công tắc linh kiện: dùng để giả lập tháo thiết bị. Khi đó, hệ thống sẽ
khởi tạo giá trị mới giúp sinh viên có cái nhìn trực quan về lỗi trên hệ thống. Ví dụ: Khi tháo cầu chì giống như tạo lỗi cầu chì bị đứt.
Khối điểm đo: dùng để thể hiện vị trí cần đo khi sinh viên dùng que đo kiểm
tra điện áp. Các vị trí này được đặt tương thích với mơ hình. Khối nút nhấn và còi:
Nút nhấn START: dùng để sinh viên bắt đầu làm bài. Nút Nhấn RESET: dùng để sinh viên khởi tạo lại bài làm.
Nút nhấn cịi: Khi chế độ bình thường thì cịi kêu. Ngược lại, khi tạo lỗi thì cịi khơng kêu.
Khối màn hình LCD: Thông báo thời gian và điện áp cho sinh viên khi
đang trong q trình làm bài.
Khối Bluetooth: Chính là module Bluetooth HC05. Bluetooth sẽ nhận tín
hiệu từ điện thoại sau đó đưa tới vi điều khiển. Tín hiệu thu sau khi được xử lý thì sẽ khởi tạo giá trị của hệ thống mô phỏng. Ngồi ra, Bluetooth cịn gửi tín hiệu từ vi điều khiển tới điện thoại.
Điện thoại thơng minh (hệ điều hành Android): dùng nhận tín hiệu từ vi
điều khiển thơng qua module Bluetooth. Ngồi ra, cịn có thể gửi tín hiệu tạo lỗi tới vi điều khiển. Với phần mềm dành riêng cho việc hiển thị và gửi tín hiệu.
6.2 Mơ hình hệ thống
Thiết kế khung thơng qua phần mềm CorelDraw X7. Bao gồm vẽ mạch điện của hệ thống còi, chữ cần thiết trên mạch và khắc đục lỗ để gắn các nút và LCD lên đó.
LCD, nút Start và nút reset được đặt bên phải cho sinh viên dễ quan sát. Hai que đo đỏ, đen được đặt phía dưới cho sinh viên dễ thao tác và các que
Hình 6. 2: Mơ hình được thiết kế trên CorelDraw X7
Thơng số khung:
Khung có kích thước: 40x60 (cm) Vật liệu khung: mica độ dày 3mm Vật liệu làm đồ gá khung: thép khơng rỉ
Hình 6. 3: Mơ hình ngồi thực tế
6.3 Thiết kế mơ hình phần cứng
6.3.1 Thiết kế nút nhấn và còi trên hệ thống
Trên hê thống có tổng cộng là 3 nút nhấn, mỗi nút nhấn có nhiệm vụ riêng: Nút nhấn RESET: có chức năng reset lại chương trình (bài làm) Nút nhấn START: Có chức năng bắt đầu chương trình (bài làm) Nút nhấn Cịi: Có chức năng nhấn để cịi kêu
Các chân nút nhấn sẽ được nối trực tiếp với Arduino theo hình 6.4 và bảng 6.1
Hình 6. 4: Sơ đồ đấu dây giữa nút nhấn với Arduino
Bảng 6. 1: Các chân nút nhấn, còi và Arduino
Nút nhấn Arduino MEGA
RESET Chân tín hiệu (dây vàng) D10
Chân reset (dây xanh dương) Reset
FUSE Chân tín hiệu (dây cam) D9
RELAY Chân tín hiệu (dây nâu) D8
Chân dương (dây đỏ đậm) 5V
Cịi
Chân tín hiệu (dây đỏ ) D7
Chân âm (dây đen) GND
Trên hệ thống mơ phỏng mạch cịi xe có 12 điểm đo tương ứng với 12 vị trí trên sơ đồ mạch cịi xe. Các điểm đo này được đặt sao cho phản ánh chính xác thực trạng của hệ thống cịi. Ngồi ra, hệ thống cịn có 2 chân đo (tương ứng với chân đỏ và chân đen trên hệ thống).
Các chân đo và các điểm đo sẽ nối với các chân tín hiệu của Arduino MEGA như trong hình 6.5, bảng 6.2 và bảng 6.3
Hình 6. 5: Điểm đo và chân đo trên mơ hình
Bảng 6. 2: Các chân đo trên mơ hình và Arduino
Chân đo trên mơ hình Arduino MEGA
Chân + (chân đỏ) D40
Chân - (chân đen) D41
Điểm đo trên hệ thống Arduino MEGA 1 D42 2 D43 3 D44 4 D45 5 D46 6 D47 7 D48 8 D49 9 D50 10 D51 11 D52 12 D53
6.3.3 Thiết kế công tắc tháo/lắp trên hệ thống
Có tổng cộng có 3 cơng tắc tháo/lắp trên hệ thống: công tắc Acquy, công tắc Fuse, cơng tắc Relay. Mỗi cơng tắc có nhiệm vụ tháo các thiết bị trên mạch cịi để kiểm tra điện áp trên hệ thống.
Hình 6. 6: Sơ đồ đấu dây giữa công tắc với ArduinoBảng 6. 4: Các chân công tắc và Arduino Bảng 6. 4: Các chân công tắc và Arduino
Công tắc Arduino MEGA
Acquy Chân tín hiệu (dây cam) D22
Fuse Chân tín hiệu (dây vàng) D23
Relay Chân tín hiệu (dây hồng) D24
Chân dương (dây đỏ) 5V
6.3.4 Thiết kế Module Bluetooh trên hệ thống
Module Bluetooth HC05 có nhiệm vụ kết nối giữa vi điều khiển (Aduino MEGA) với điện thoại thông minh.
Các chân Bluetooth HC05 sẽ được nối trực tiếp với Arduino theo hình 6.7 và bảng 6.5
Hình 6. 7: Sơ đồ đấu dây Bluetooth HC05 với Arduino
Bảng 6. 5: Các chân Bluetooth và Arduino
Bluetooth HC05 Arduino MEGA
TX RX (D0)
RX TX (D1)
VCC 5V
GND GND
6.3.5 Thiết kế màn hình LCD trên hệ thống
Màn hình LCD có nhiệm vụ hiện thị giá trị điện áp và thời gian làm bài. Màn hình LCD được đặt ngang với tầm mắt của người nhìn giúp cho việc quan sát được thuận lợi hơn.
Hình 6. 8: Sơ đồ đấu dây giữa Arduino với module LCD
Bảng 6. 6: Sơ đồ nối chân LCD với Arduino MEGA
LCD 1602 Arduino MEGA 2560
VSS (Ground) GND
VDD (+ve) 5V
Constrast Voltage (Vo)
Register Select (RS) D12 Read/Write (RW) GND Enable D11 Data 4 D5 Data 3 D4 Data 2 D3 Data 1 D2 Backlight Anode 5V Backlight Cathode GND
Hình 6. 9: Các chân module LCD 1602
6.3.6 Thiết kế khối nguồn
Chính là nguồn Adapter, chuyễn đổi điện 220V thành điện 9V cung cấp nguồn cho các thiết bị hoạt động (Arduino MEGA, Bluetooth HC05…)
Hình 6. 10: Adapter
6.3.7 Thiết kế giao diện phần mềm trên điện thoại
Trong đồ án này giao diện gồm các Components sau:
Nút kết nối: dùng để kết nối Bluetooth giữa điện thoại với mơ hình. Thơng
qua Bluetooth điện thoại sẽ thể hiện các thao tác đang được thực hiện trên mơ hình.
Nút Pan: có tổng cộng 4 nút Pan tương ứng với 4 lỗi được cài đặt sẵn trong
hệ thống. Khi giảng viên muốn tạo lỗi trên mạch cho sinh viên chẩn đoán sẽ nhấn các nút Pan tương ưng.
Các label chân đỏ, chân đen, giá trị điện áp: dùng để hiện các số chân đỏ,
chân đen khi sinh viên thực hiện thao tác đo mạch. Thơng qua đó giảng viên có thể giám sát quá trình chẩn đốn của sinh viên
Canvas: dùng để vẽ và mô phỏng các chuyển động. Ở đồ án này Canvas vẽ
mô phỏng lại 2 que đo chuyển động của nó trên mạch điện. Giao diện của Canvas là hình mạch điện cịi giống với mạch điện trên mơ hình. Khi sinh viên dùng que đo chẩn đốn trên mơ hình chân nào thì trên điện thoại cũng xuất hiện que đo với chân tương ứng.
Bluetoothclient: là chức năng ẩn trên AI2, dùng để kết nối Bluetooth giữa
điện thoại và mơ hình
Clock: là chức năng ẩn trên AI2, với chức năng tương ứng với void loop()
trong lập trình vi điều khiển. Thời gian quét của Clock có thể tùy chỉnh. File: là chức năng ẩn trên AI2, dùng lưu q trình chẩn đốn của sinh viên và
lưu nó trong file trong điện thoại.
6.4 Thiết kế phần mềm
6.4.1 Thiết kế phần mềm điện thoại
Lưu đồ phần mềm điện thoại
Lập trình phần mềm điện thoại
Lập trình khối hiển thị được chia thành các phần như sau:
Bluetooth: khi giảng viên nhấn nút kết nối trên giao diện điện thoại sẽ tìm
địa chỉ Bluetooth cần kết nối, khi đó nút nhấn đổi thành đang kết nối để báo cho giảng viên biết. Sau khi điện thoại kết nối với module HC-05 thành cơng nút nhấn báo đã kết nối.
Hình 6. 14: Blocks để kết nối Bluetooth
Tạo file lưu: giảng viên nhập mã số sinh viên tại ô MSSV đồng thời đó cũng
là tên file được lưu lại trong điện thoại. Giảng viên khơng cần xem trực tiếp q trình sinh viên làm bài mà có thể nhập mã số sinh viên và xem lại. Tại ô DELAY sẽ là thời gian ngắt quãng giữa 2 thao tác của sinh viên, giảng viên có thể tùy chỉnh thời gian này.
Hình 6. 15: Nhập tên file lưu và chạy chương trình
Khi giảng viên muốn xem lại file đã lưu chỉ cần nhập mã số sinh viên mong muốn. Block file.GotText bật lại quá trình sinh viên đã thực hiện bằng cách tách các giá trị được lưu và hiện trên điện thoại vào các ô tương ứng đang được nhấn (ô này được ẩn trên giao diện), chân đỏ, chân đen và giá trị điện áp. Ví dụ: khi điện thoại nhận 1 chuỗi gửi là 2, 1, 6, 12*. Điện thoại sẽ hiểu là mơ hình đang được tạo lỗi 2 và nút Pan2 chuyển màu đỏ, sinh viên đang đo quen đỏ ở chân 1, que đen ở chân 6 và giá trị điện áp là 12V.
Hình 6. 16: Blocks của quá trình xem lại
Tạo lỗi: khi giảng viên nhấn nút Pan1 điện thoại sẽ gửi số 1 đến cho Arduino
khi đó Arduino sẽ chạy chương trình void PanLoi1 (), thiết lập chế độ chạy lỗi đứt dây 7-8 cho hệ thống.
Hình 6. 17: Blocks của nút Pan1
Khi giảng viên nhấn nút Pan2 điện thoại sẽ gửi số 2 đến cho Arduino khi đó Arduino sẽ chạy chương trình void PanLoi2 (), thiết lập chế độ chạy lỗi đứt cầu chì 3-4 cho hệ thống.
Khi giảng viên nhấn nút Pan3 điện thoại sẽ gửi số 3 đến cho Arduino khi đó Arduino sẽ chạy chương trình void PanLoi3 (), thiết lập chế độ chạy lỗi đứt rơ le 5- 6 cho hệ thống.
Hình 6. 19: Blocks của nút Pan3
Khi giảng viên nhấn nút Pan4 điện thoại sẽ gửi số 4 đến cho Arduino khi đó Arduino sẽ chạy chương trình void PanLoi4 (), thiết lập chế độ chạy lỗi đứt dây 11- 12 cho hệ thống
Hình 6. 20: Blocks của nút Pan4
Vẽ que đo trên Canvas: trước tiên khởi tạo tọa độ x, y của các điểm đo với
x = 0, y = 0. Khởi tạo tiếp toa_do là 1 dãy các tọa độ tương ứng với các điểm cần đo trên điện thoại. Các biến vi_tri_do, vi_tri_den tương đương với thứ tự tọa độ trong list toa_do.
Hình 6. 21: Blocks khởi tạo các biến
Giá trị các tọa độ trong list toa_do được xác đinh bởi 1 dãy 6 số được ngăn cách bới dấu phẩy, trước dấu phẩy là tọa độ x, sau dấu phẩy là tọa độ y. Blocks
segment text trong AI2 dùng để tách chuỗi trong toa_do, ta tuần tự tách 3 số 1 lần. Khi đã xác định tọa độ cần vẽ dùng blocks call Canvas.Drawline để các que đo.
Hình 6. 22: Blocks lập trình que đo
Vịng lặp Clock: vịng lặp này chỉ chạy khi điện thoại đã được kết nối
Bluetooth. Mỗi khi sinh viên thực hiện thao tác chẩn đốn trên mơ hình thì Arduino sẽ 1 chuỗi 4 số được phân cách bởi dấu phẩy giữa các giá trị và dấu sao (*) là kí tự kết thúc chuỗi. Vịng lặp sẽ tách các giá trị và hiện trên điện thoại các ô tương ứng đang được nhấn (ô này được ẩn trên giao diện), chân đỏ, chân đen và giá trị điện áp. Ví dụ: khi được thoại nhận 1 chuỗi gửi từ Arduino 2, 1, 5, 12*. Điện thoại sẽ hiểu là mơ hình đang được tạo lỗi 2, sinh viên đang đo quen đỏ ở chân 1, que đen ở chân 5 và giá trị điện áp là 12V.
Hình 6. 23: Giao diện trên điện thoại
Xem lại file lưu: giảng chỉ cần nhập mã số sinh viên, thời gian ngắt quãng
giữa 2 thao tác của sinh viên là có thể xem lại được q trình làm bài của sinh viên. Vòng lặp Clock2 đọc giá trị liên tục từ file mssv.txt, thời gian vịng lặp này giảng viên có thể hiệu chỉnh được. Giảng viên nhấn Play để bắt đầu đọc file, trong q trình đọc file giảng viên có thể dừng lại bằng cách nhấn nút Pause.
6.4.2 Thiết kế phần mềm vi điều khiển
Lưu đồ khối vi điều khiển
Lập trình khối xử lý tín hiệu (board Arduino MEGA)
Lập trình hiển thị giá trị khởi tạo lên LCD
Sau khi các giá trị được đo kiểm thì LCD sẽ có nhiệm vụ đọc các giá trị lên màn hình. Do màn hình LCD 16x02 chỉ hiển thị được 2 dịng nên ở đây ưu tiên hiển thị mảng thời gian và hiển thị về giá trị điện áp
Code kết nối chân và hiển thị giá trị trên LCD:
#include <LiquidCrystal.h> // Thêm thư viện LiquidCrystal
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// Khởi tạo các chân LCD 12,11,5,4,3,2
Lập trình khai báo biến
Lập trình khai báo biến là khởi tạo các giá trị cần thiết cho chương trình. Giá trị a và olda là giá trị trạng thái tín hiệu mới và cũ của chân đỏ. Hai giá trị này sẽ được so sánh với nhau, nếu chúng giống nhau có nghĩa là thao tác đo kiểm của sinh viên khơng có gì thay đổi nên nó sẽ khơng xuất giá trị, ngược lại nếu chúng khác nhau sẽ xuất ra giá trị trạng thái cho que đo đỏ. Giá trị b và oldb cũng tương tự.
int a, b, olda, oldb, dienap, t;
Khai báo các mảng tương ứng với các trạng thái của mơ hình: trạng thái bình thường chưa có lỗi, trạng thái được tạo lỗi, trạng thái tháo các linh kiện trong mạch ra đo kiểm.
int BT[] = {0, 12, 12, 12, 12, 0, 0, 0, 12, 12, 12, 12}; // Chế độ hoạt động bình thường khi nhấn còi
int PAN1[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Chế độ đứt dây 7-8 int PAN2[] = {0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Đứt cầu chì 3-4 int PAN3[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Đứt rơ le 5-6
int PAN4[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Đứt dây 10-11 khi khơng nhấn cịi
int PAN41[] = {0, 12, 12, 12, 12, 0, 0, 0, 12, 12, 0, 0}; // Đứt dây 10-11 khi nhấn còi
int BTT[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Chế độ hoạt động khi không nhấn nút
Khởi tạo biến M, S để thiết lập thời gian làm bài. Thiết lập trong trường hợp này là 10 phút
int M = 10; // phút int S = 00; // giây
Khởi tạo time1 và time2 để tạo độ trễ cho 2 sự kiện liên tiếp. unsigned long time2 = 0;
unsigned long time1 = 0;
Khởi tạo biến giatri để xác định chế độ hoạt động của mạch còi. Nếu giatri thay đổi sẽ thay đổi chế độ hoạt động
byte giatri = 0; // Chế độ hoạt động bình thường Lập trình chương trình thiết lập
Ở phần void setup() ta thiết lập các điểm quét ở chế độ Input_Pullup, khởi tạo LCD và khai báo các chân công tắc, nút nhấn
Code lập trình chương trình thiết lập: