Chọn board để nạp code Arduino

Một phần của tài liệu HỆ THỐNG MÔ PHỎNG VÀ CHẨN ĐOÁN MẠCH CÒI XE THÔNG QUA ĐIỆN THOẠI THÔNG MINH (Trang 54)

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:

Một phần của tài liệu HỆ THỐNG MÔ PHỎNG VÀ CHẨN ĐOÁN MẠCH CÒI XE THÔNG QUA ĐIỆN THOẠI THÔNG MINH (Trang 54)

Tải bản đầy đủ (DOCX)

(97 trang)
w