STT Tên linh kiện Giá trị Dạng vỏ
1 Arduino Nano 5V DIP
2 Cảm biến MPX5050 5V SMD
4 Module ESP8266 5V DIP
5 DS1307 5V SOIC 6 ULN2803 SOL 7 Nút nhấn SMD 9 PIN 1.5V SMD 13 Điện trở 10K, 1K 0805 14 Màn hình OLED 5V DIP
15 Hàng rào các loại DIP
16 Tụ điện (tụ gốm) 720pF, 0.1uF, 0.1pF
4.3 LẬP TRÌNH HỆ THỐNG
4.3.1 Lưu đồ giải thuật
Chương trình điều khiển thiết bị phải đáp ứng những yêu cầu sau:
Gồm 2 nút nhấn tác động vật lý tương ứng với 2 chức năng của thiết bị là đo huyết áp và chức năng gửi dữ liệu. Giá trị sau mỗi lần đo sẽ được hiển thị lên màn hình OLED, gửi lên Google Spreadsheet.
Khi vừa khởi động và ở trạng thái chờ thì thiết bị sẽ hiển thị thời gian thực. Các thơng số hiển thị trên màn hình OLED phải đầy đủ và rõ ràng.
a. Lưu đồ giải thuật chương trình chính
BEGIN
Khởi tạo thư viện hệ thống Khởi tạo kết nối OLED, RTC, WIFI
Khởi tạo biến mode bằng 0, vàbiến DAO1 bằng false
Kiểm tra nút nhấn huyết áp
Kiểm tra nút nhấn gửi dữ liệu
biến mode bằng 1? biến mode bằng 2?
Đọc thời gian thực
Hiển thị thời gian
Đo huyết áp
Gửi dữ liệu Kiểm tra dữ liệu gửi
mode = 0 END Đ Đ S S S S biến mode bằng 0? DAO1 bằng true
DAO1 gán bằng false mode gán bằng 0
Đ
Đ
S S
Hình 4. 3: Lưu đồ chương trình chính của thiết bị [11]
Giải thích các biến trong lưu đồ:
mode: biến dùng để lựa chọn chọn chương trình. Ví dụ mode=0, hiển thị màn hình chính, mode = 1 đọc huyết áp, mode = 2 gửi dữ liệu.
DAO1: biến trạng thái, khi mỗi lần nhấn phím huyết áp thì các biến sẽ thay đổi trạng thái để cho phép đọc hoặc dừng đọc.
Khi bật nguồn khởi động thì hệ thống hoạt động. Trước tiên hệ thống bắt đầu khởi tạo các thư viện, khai báo các biến trạng thái. Tiếp theo hệ thống chạy
chương trình kiểm tra các phím nhấn, nếu khơng nhấn phím (mode mặc định bằng 0) thì hệ thống tự động đọc và hiển thị thời gian thực. Nếu nhấn phím đo huyết áp (mode =1) và biến cho phép cho phép đọc (DAO1 = true) và END = 0 thì hệ thống tiến hành đọc huyết áp.
b. Lưu đồ giải thuật chương trình nhấn phím huyết áp
PHÍM HUYẾT ÁP END Delay 20ms Đ S Nhấn phím Huyết áp? Nhấn phím Huyết áp?
Biến mode bằng 1, END bằng 0, Đảo trạng thái biến DAO1
Đ
Hình 4. 4: Lưu đồ giải thuật chương trình nhấn phím huyết áp
Chương trình sẽ kiểm tra phím nhấn và xử lý chống dội cho phím nhấn bằng cách delay 20ms sau đĩ tiếp tục kiểm tra phím. Khi kiểm tra đảm bảo cĩ nhấn thì sẽ thiết lập các biến mode, biến DAO1 và biến END để cho phép chạy chương trình đọc huyết áp.
c. Lưu đồ giải thuật chương trình nhấn phím send END Delay 20ms Đ Đ S PHÍM SEND Nhấn phím Send ? Nhấn phím Send ? Biến mode bằng 2 Biến gui bằng 0
Hình 4. 5: Lưu đồ giải thuật chương trình nhấn phím send
Chương trình đọc phím send với chức năng là điều khiển module ESP8266 thực hiện chức năng gửi dữ liệu. Khi kiểm tra cĩ nhấn phím thì chương trình sẽ hiển thị thơng báo đang làm việc theo chức năng của chương trình send.
d. Lưu đồ giải thuật chương trình gữi dữ liệu
GỬI DỮ LIỆU LÊN MẠNG
END
Khởi tạo kết nối WIFI
Delay 2s
Delay 4s Delay 4s
Kết nối với trang chủ (ThingSpeak.com)
Lấy các giá trị huyết áp Khai báo các trường
gửi dữ liệu Gửi dữ liệu đi
Hình 4. 6: lưu đồ giải thuật chương trình gữi dữ liệu
Chương trình sẽ kết nối với Wifi mà chúng ta cài đặt, sau đĩ chương trình thực hiện kết nối với trang chủ ThingSpeak. Lấy các giá trị huyết áp đo được trong chương trình đo huyết áp. Để gửi được ta phải tính tốn các trường dữ liệu gửi là độ dài dữ liệu và số dữ liệu gửi (bước tính tốn dữ liệu gửi rất quan trọng, nếu chúng ta tính tốn số dữ liệu gửi sai thì chương trình gửi sẽ khơng thể thực hiện). Sau đĩ thực hiện lệnh gửi.
e. Lưu đồ giải thuật chương trình đo huyết áp
ĐO HUYẾT ÁP
Đóng van Khởi động động cơ bơm
Đọc cảm biến áp suất
Thốt vịng lặp
Dừng bơm
Xả khí theo thời gian định sẵn Mở van xả
Lấy giá trị huyết áp
Hiển thị huyết áp END Biến END gán bằng 1 Dừng bơm Đ Đ Đ S S S Đ Khai báo các biến
Biến END bằng 0? biến mode gán bằng 0, biến ngat gán bằng 1 Kiển tra nút nhấn huyết áp? Áp suất nhỏ hơn 170mmHg biến ngat bằng 0?
Nếu nhấn phím đọc huyết áp thì hệ thống sẽ tiến hành đo huyết áp. Khi chương trình được khởi động thì van xả đĩng, động cơ tiến hành bơm hơi vào vịng bit, cảm biến đọc giá trị áp suất. Trong quá trình bơm hơi ta vừa kiểm tra phím nhấn huyết áp để cĩ thể dừng hệ thống. Khi đạt giá trị áp suất 170mmHg thì hệ thống dừng bơm, tiến hành xả van khí theo những khoảng thời gian định sẵn để dị các giá trị huyết áp tâm thu và huyết áp tâm trương và tính tốn huyết áp trung bình. Cuối cùng sẽ hiển thị các giá trị đo được lên màn hình OLED. [14]
Nếu nhấn phím send, vì khi ban đầu bật máy đo huyết áp thì sẽ khơng cĩ dữ liệu để gửi nên chương trình sẽ khơng thực hiện lệnh gửi. Khi thực hiện xong quá trình đo huyết áp, tức là đã cĩ dữ liệu thì chương trình mới thực hiện câu lệnh gửi.
f. Lưu đồ giải thuật chương trình đọc analog
ĐỌC TÍN HIỆU TỪ CẢM BIẾN ÁP SUẤT
END Khởi tạo biến
Cộng dồn các giá trị của biến a lưu vào biến temp
Lấy giá trị trung bình biến temp lưu vào biến b
Tăng biến i 1 đơn vị Đọc giá trị cảm biến gán vào a Đ S i nhỏ hơn 10? Biến i gán bằng 0, Biến temp gán bằng 0, a, b
Hình 4. 8: Lưu đồ giải thuật chương trình đọc analog
Chương trình này đọc tín hiệu analog từ cảm biến, để kết quả đo chính xác hơn thì ta tiến hành đọc 10 lần, sau đĩ lấy trung bình cộng để cĩ giá trị chính xác nhất.
4.3.2 Phần mềm lập trình cho Arduino a. Phần mềm a. Phần mềm
Mặc dù bo mạch cĩ thiết kế nhỏ gọn, trang bị nhiều tính năng thơng dụng, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm. Mơi trường lập trình đơn giản dễ sử dụng, ngơn ngữ lập trình dễ hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
Mơi trường lập trình Arduino IDE cĩ thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux. Do cĩ tính chất nguồn mở nên mơi trường lập trình này hồn tồn miễn phí và cĩ thể mở rộng thêm bởi người dùng cĩ kinh nghiệm. Ngơn ngữ lập trình cĩ thể được mở rộng thơng qua các thư việnC++. [5]
Hình 4. 9: Giao diện phần mềm lập trình Arduino Cài đặt phần mềm Cài đặt phần mềm
Bước 1: Truy cập địa chỉ http://arduino.cc/en/Main/Software/ . Đây là nơi lưu trữ cũng như cập nhật các bản IDE của Arduino. Bấm vào mục Windows ZIP file for non admin install như hình minh họa.
Hình 4. 10: Download phần mềm lập trình Arduino trên web Bước 2: Sau khi download xong, chúng ta bấm chuột phải vào file vừa Bước 2: Sau khi download xong, chúng ta bấm chuột phải vào file vừa download arduino-1.6.9-windows.zip và chọn “Extract here” để giải nén.
Hình 4. 11: Giải nén phần mềm đã tải về Bước 3: Copy thư mục arduino-1.6.9 vừa giải nén đến nơi lưu trữ. Bước 3: Copy thư mục arduino-1.6.9 vừa giải nén đến nơi lưu trữ.
Bước 4: Chạy file trong thư mục arduino-1.6.4\ để khởi động ArduinoIDE
Cài driver
Để máy tính của bạn và board Arduino giao tiếp được với nhau, chúng ta cần phải cài đặt driver trước tiên.
Đầu tiên, chúng ta chạy file arduino-1.6.9\drivers\dpinst-x86.exe (Windows x86) hoặc arduino-1.6.9\drivers\dpinst-amd64.exe (Windows x64).Cửa sổ “Device Driver Installation Wizard” hiện ra, chúng ta chọn Next để tiếp tục.
Viết chương trình
Hình 4. 13: Giao diện phần mềm lập trình Arduino theo vùng
Vùng lệnh: bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help). Phía dưới là các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE được miêu tả như sau: