f. PHẠM VI NGHIÊN CỨU
3.2. THI CÔNG HỆ THỐNG
3.2.1. Thi công bo mạch
Để thi công được mạch của hệ thống, cần thiết kế bản mạch in. Vì linh kiện và mạch đơn giản nên hệ thống chỉ được thiết kế trên mạch một lớp. Hình 3.1 là hình thể hiện sơ đồ mạch in được thiết kế trên phần mềm Altium.
Hình 3.1: Sơ đồ mạch in
Để trực quan hơn trong việc thi công, sơ đồ bố trí linh kiện được tạo ra. Nhìn vào
hình 3.2, dễ dàng thấy được bên trái là ESP8266 Node MCU. Bên phải góc dưới là ADS1292R có ngõ vào là Jack cắm 3.5mm được quay ra mép phải để dễ dàng kết nối. Bên phải góc trên là mạch sạc TP4056 với ngõ vào Micro USB hướng ra mép phải để dễ dàng cắm nguồn lúc sạc.
Hình 3.2: Sơ đồ bố trí linh kiện
Từ những thiết kế ban đầu, có thể liệt kê được các linh kiện cần sử dụng trong
bảng 3.1 dưới đây.
Bảng 3.1: Danh sách các linh kiện
Stt 1 2 3 4 5 6 7 8 9 10 3.2.2. Lắp ráp và kiểm tra a. Tạo bản mạch in
Tạo được bản mạch in phải qua các bước: In mạch, chuyển mực in lên mạch, rửa mạch, khoang lỗ gắn chân linh kiện.
cầu sử dụng mà tấm này có 1 hoặc 2 mặt được phủ toàn bộ đồng. Mạch in trên giấy và board đồng thể hiện ở hình 3.3.
Hình 3.3: Mạch in trên giấy
Tiếp theo, tiến hành chuyển mực in lên board đồng. Mục đích của việc này là che đi những chỗ cần thiết để dung dịch không ăn mòn. Những chỗ này kết hợp với nhau tạo ra những nơi dẫn điện - cách điện và trở thành một mạch liên kết các chân của linh kiện với nhau. Để chuyển mực cần sử dụng nhiệt độ cao đặt vào giấy in. Mặt có mực của giấy in tiếp xúc với board đồng. Lúc này dưới tác dụng của của nhiệt như hình 3.4 (a), mực in nóng chảy và khi nguội sẽ bám vào mặt có đồng của board như hình 3.4 (b).
Hình 3.4: Tác dụng nhiệt lên boar đồng và giấy in
Sau khi che đi những chỗ cần thiết bằng mực, tiến hành công đoạn ăn mòn. Dung dịch ăn mòn là dung dịch Sắt (III) Clorua. Dung dịch này phản ứng với đồng không được che lại trong board tạo ra Đồng Clorua và Sắt (II) Clorua. Cả 2 chất này đều tan trong dung dịch. Sau đó tiến hành khoan lỗ đặt sẵn để cắm chân linh kiện. Mũi khoan dùng cho lỗ có đường kính là 0.1 mm. Sau khi khoan mạch có hình dạng như hình 3.5.
Hình 3.5: Board đã ăn mòn và khoan lỗ chân linh kiện
Công việc tiếp theo là lắp ráp và hàn các linh kiện lên Board để tạo mối liên kết về cơ học.
b. Lắp ráp Node MCU, ADS1292R và mạch nguồn TP4056
Hình 3.6: Lắp ráp ADS1292R và TP4056
Đặt ESP8266 NODE MCU lên Board theo sơ đồ bố trí linh kiện. MCU có 30 Pin được chia đều làm hai hàng. Mỗi hàng chân có khoảng cách giữa các chân là 0.1 inch (2.54mm).
Tương tự cách lắp ráp MCU, ADS1292R và mạch nguồn TP4056 cũng được hàn vào board mạch. ADS1292R có 12 Pin chung một hàng. Khoảng cách giữa các chân cũng là 0.1 inch. TP4056 có 4 Pin, 2 Pin để kết nối với Batery, 2 Pin còn lại kết nối với
board. Sau khi lắp ráp và hàn tất cae các linh kiện thì board mạch được thể hiện ở hình 3.6.
c. Lắp ráp các jack nối chức năng
Sau khi hoàn thiện lắp các module trên board, hệ thống được lắp các jack nối và liên kết tới các linh kiện rời. Các kết nối đó như Pin (3), Button (1), Contact (4) , Oled (2) như hình 3.7 (a) và kết quả sau khi kết nối các linh kiện rời với mạch chính như
hình 3.7 (c). Sau khi hoàn thiện ta được mặt trên của board như hình 3.7 (d) và mặt dưới của board như hình 3.7 (b).
Hình 3.7: Mặt trên và dưới board mạch
Lắp ráp xong tiến hành dùng VOM để kiểm tra.
3.3. ĐÓNG GÓI BỘ ĐIỀU KHIỂN
Phần mạch điện sau khi thi công sẽ được đóng gói. Tuỳ vào mục đích sử dụng cho mỗi hệ thống sẽ có mỗi thiết kế khác nhau. Yêu cầu của hệ thống là gọn nhẹ, có thể mang theo được trên người. Do đó hệ thống sẽ được thiết kế sao cho tiện lợi cho mục đích này nhất.
Đầu tiên phải xác định được các thành phần để đóng gói. Các thành phần đó là: Board mạch chính, Pin, Oled, Contact-Button. Trong đó thành phần có kích thước lớn
nhất về chiều dài và chiều rộng là Board mạch chính. Các Jack cắm và kết nối cũng nằm trên board này. Do đó cấu trúc chính của hộp chứa sẽ dựa trên board mạch chính.
Pin là thành phần quan trọng cung cấp năng lượng cho hệ thống hoạt động. Trong phần thiết kế tính toán khối nguồn, Pin được thiết kế có khả năng hoạt động lên tới hàng chục giờ và có khả năng sạc được. Thành phần chính của Pin là hoá chất, trong lúc hoạt động vẫn có khả năng cháy nổ. Do đó Pin sẽ nằm ở vị trí dưới đáy hộp, có thanh kẹp cố định.
Mạch chính có kích thước là 58 mm x 68 mm. Trên mạch có các các kết nối như: kết nối nguồn-Micro Usb, kết nối điện cực – 3.5 mm. Ngoài ra trên mạch còn thiết kế các lỗ ở vị trí góc để liên kết với hộp. Do đó thiết kế hộp sẽ có kích thước bên trong là 60 mm x 70 mm. Có các trụ để liên kết với hộp. Tại các vị trí tiếp xúc với cổng kết nối của board mạch chính sẽ có các lỗ thông để thực hiện chức năng khi cần.
Oled, button, contact sẽ là những thành phần tương tác trực tiếp. Những thành phần này sẽ được gắn lên trên thành của hộp. Oled có được thiết kế sẵn là có 4 lỗ ở góc, do
đó sẽ có các vít cố định lên thành hộp. Thân của button có ren và đai ốc cố định nên chỉ cần thiết kế lỗ thông phù hợp với đường kính ren là có thể cố định. Contact có mỗi lẫy gài ở mỗi cạnh bên, do đó sẽ thiết kế lỗ thông vừa hai lẫy đó.
Hình 3.8: Thiết kế hộp đựng
Từ những chi tiết ở trên, hộp đựng được thiết kế như bản vẽ hình 3.8. Trên bản vẽ này có ba hình chiếu: Front, Top, Right side view. Ở Front view, mô hình được chiếu từ
trên xuống cho thấy được đáy hộp, trụ cố định mạch và Pin. Front view thể hiện màng hình ở mặt trước và nơi cố định nắp hộp. Right side view cho thấy nơi cắm sạc pin, button, contact và lỗ cắm kết nối điện cực.
Mô phỏng lại liên kết các thành phần được thể hiện ở hình 3.9. Dưới đáy hộp (1) có gắn Pin và lẫy cố định Pin. Nắp hộp (2) được cố định ở phía trên. Mặt trước (3) sẽ là nơi gắn màng hình hiển thị, mặt bên (4) có các lỗ với hình dạng phù hợp để gắn các linh kiện. Cuối cùng là mặt đáy (5) có các rãnh để kết nối với đai vải khi đeo trên cơ thể.
Hình 3.9: Hoàn thiện thiết kế hộp đựng (ảnh mô hình)
Hộp đựng được thiết kế xong sẽ được đưa đi in 3D. Sau đó tiến hành lắp thành phần như đã tính toán trong phần thiết kế hộp đựng. Theo trình tự thiết kế, Pin (2) sẽ được lắp vào mặt đáy. Cố định Pin là thanh kẹp có lẫy gài cũng được in 3D. Thanh kẹp này liên kết với đáy hộp nhờ vít M2 5mm. Sau đó tiến hành lắp Button (1) và Contact (3) ở mặt cạnh chung với jack 3.5mm và cổng sạc Micro. Tiếp đến là lắp màn hình Oled (4) vào mặt phía bên trái của hộp so với mặt button và contact và liên kết các jack kết nối các linh kiện rời với mạch chính như hình 3.10a.
Sau đó, tiến hành lắp mạch chính vào trụ đứng và được cố định. Hình 3.10b thể hiện lúc hoàn thiện lắp mạch chính vào hộp. Cố định mạch chính với hộp là bốn vít M2 12mm. Oled sẽ được lắp ở mặt bên khác với mặt của Button và contact. Các vị trí trên mặt bên cũng được xuyên lỗ chừa cho các cổng kết nối.
Hình 3.10: Thi công lắp các phần vào hộp đựng
3.4. LẬP TRÌNH HỆ THỐNG3.4.1. Lưu đồ giải thuật 3.4.1. Lưu đồ giải thuật
Sau khi thiết kế tính toán và thi công phần cứng, hệ thống phải được lập trình dựa trên những yêu cầu đặt ra. Để truyền được dữ liệu lên smartphone và server, hệ thống phải được kết nối Wifi. Dữ liệu truyền lên trong đó có tín hiệu điện tim, tín hiệu này được lấy từ cảm biến thông qua giao thức SPI. Ngoài ra tín hiệu còn được hiển thị offline trên oled để dễ hình dung được dạng tín hiệu. Các phần đó được thể hiện rõ hơn ở lưu đồ dưới đây.
Hình 3.12: Lưu đồ chương trình con kết nối wifi
Sơ đồ khối chính của vi điều khiển được thể hiện ở hình 3.11. Theo lưu đồ này thì có các khối để bắt đầu như: khai báo – khởi tạo và cài đặt ban đầu. Tiếp theo là các chương trình con như: kết nối wifi, lấy dữ liệu, gửi và hiển thị dữ liệu. Khi bắt đầu hoạt động, vi điều khiển phải khai báo và khởi tạo các biến cần thiết cho các hoạt động khác của chương trình. Để hoạt động được, vi điều khiển sẽ phải thực hiện các cài đặt ban đầu. Tiếp đó, vi điều khiển sẽ kết nối Wifi để phục vụ cho hoạt động trao đổi dữ liệu. Chương trình con Lấy dữ liệu sẽ lấy dữ liệu từ cảm biết lên và xử lý. Sau đó khối Gửi và hiển thị dữ liệu sẽ tiến hành gửi dữ liệu lên điện thoại và hiển thị dữ liệu lên oled.
Khối Wifi connect có chức năng chính là thực hiện kết nối wifi cho hệ thống.
Hình 3.12 là lưu đồ chi tiết cho chương trình con này. Vi điều khiển sẽ kiểm tra và tự kết nốicấu hình đã lưu trước đó trên bộ nhớ. Nếu có kết nối thì hiển thị địa chỉ IP và thoát. Nếu không được kết nối, vi điều khiển sẽ tiến hành smart config và bắt đầu kết nối wifi. Việc này lặp đi lặp lại nhiều lần cho tới khi kết nối thành công. Khi kết nối thành công, vi điều khiển lưu lại cấu hình đó để phục vụ cho việc kết nối lần sau, hiển thị địa chỉ IP và kết thúc chương trình con.
Chương trình con lấy dữ liệu ở hình 3.13. Ở chương trình này, vi điều khiển sẽ kiểm tra, lấy dữ liệu và xử lý dữ liệu đã nhận được từ cảm biến thông qua giao thức SPI. Đầu tiên vi điều khiển sẽ kiểm tra tín hiệu dữ liệu sẵn sàng từ cảm biến. Nếu chưa có thì kết thúc chương trình con. Nếu có tín hiệu sẵn sàng, vi điều khiển sẽ tiến hành lấy dữ liệu. Tuy nhiên cần phải kiểm tra xem tín hiệu này có phải từ điện cực đã mắc vào cơ
thể hay chưa. Nếu chưa thì cho tín hiệu bằng 0 và kết thúc. Nếu đã là tín hiệu từ điện cực thì sẽ đưa vào xử lý tín hiệu số. Xử lý tín hiệu số bao gồm: Loại bỏ thành phần DC, Lọc thông thấp, Tính toán nhịp tim và thu thập thành mảng dữ liệu. Sau khi thực hiện xử lý tín hiệu số thì sẽ kết thúc chương trình con.
Hình 3.13: Chương trình con lấy dữ liệu
Sau khi xử lý và thu tập tín hiệu xong, tín hiệu được gửi lên điện thoại và hiển thị lên màng hình oled. Công việc này thể hiện ở chương trình con hình 3.14. Vi điều khiển sẽ lần lượt đi từ vị trí đầu tiên đến vị trí cuối cùng của mảng. Mỗi dữ liệu tại vị trí đó được hiển thị lên oled. Đi đến hết mảng dữ liệu, vi điều khiển sẽ gửi tất cả dữ liệu trong mảng lên điện thoại, sau đó sẽ kết thúc chương trình.
3.4.2. Phần mềm lập trình cho vi điều khiển
Arduino IDE là chương trình giúp cho việc lập trình các phần cứng mà nó hỗ trợ. IDE là môi trường phát triển tích hợp chạy trên trên các máy tính cơ bản cá nhân. Môi trường này là một ứng dụng đa nền tảng (cross-platform) được viết bằng ngôn ngữ java. IDE này sẽ được sử dụng cho ngôn ngữ lập trình vi xử lý và project writing. Được thiết kế cho đối tượng mới làm quen với phát triển phần mềm.
Các chương trình Arduino viết bằng C hoặc C++. Arduino IDE đi kèm với một thư viện phần mềm gọi là Writing. Việc sử dụng Writing gốc giúp các thao tác Input/Output và các xử lý khác dễ dàng hơn.
Để sử dụng phần mềm này, đầu tiên vào trang chủ Arduino.cc để tải phần mềm về.
Sau đó nhấn vào cài đặt, chọn thư mục và tiến hành cài đặt.
Giao diện hình 3.15 ta thấy một số thành phần như: Thanh bảng chọn (1), Thanh công cụ (2), vùng code editor (3), vùng thông báo trạng thái (4).
Thanh bản chọn gồm các chọn lựa như: File, Edit, Sketch, Tool và Help. Các chức năng hoạt động của phần mềm đều chứa trong các mục của bảng này. Thanh công cụ chứa: Biên dịch, nạp, new, open, save. Đây là các chức năng chính thường xuyên sử dụng của chương trình. Vùng Code editor dùng để soạn thảo code và vùng thông báo trạng thái dùng để hiển thị trạng thái của chương trình hoạt động như nạp, biên dịch, hiển thị lỗi.
Hình 3.16: Thêm đường dẫn cho Board
Để lập trình esp8266 Node MCU, ta thực hiện qua các bước: Khai báo Board, thêm thư viện, soạn thảo code, biên dịch và nạp. Đầu tiên phải khai báo hệ thống để có Writing gốc. Vào “File\Preferent\Addition Board Manager URLs” và điền vào đường link http://arduino.esp8266.com/stable/package_esp8266com_index.json như hình 3.16. Sau đó vào “Tool/Board/Board Manager” gõ chọn ESP8266 và cài đặt. như hình 3.17.
3.5. LẬP TRÌNH ỨNG DỤNG3.5.1. Lưu đồ giải thuật 3.5.1. Lưu đồ giải thuật
Bên cạnh lập trình cho hệ thống, việc lập trình cho ứng dụng điện thoại cũng là một trong những mục tiêu cần hoàn thành. Để nhận được dữ liệu từ bộ xử lý trung tâm thì điện thoại cần phải được kết nối với Wifi. Dữ liệu sau khi nhận sẽ được hiển thị trực tiếp lên mà hình điện thoại. Ngoài ra, ứng dụng còn hỗ trợ lưu lại dữ liệu lên Database Server cũng như lấy dữ liệu từ Database Server về để xem lại các thông tin đã được lưu trước đó trên điện thoại.
Hình 3.18: Lưu đồ giải thuật chính của ứng dụng điện thoại
Sơ đồ khối chính của app android được thể hiện ở hình 3.18. Theo lưu đồ này thì có các khối để bắt đầu như: Khai báo – khởi tạo và cài đặt ban đầu. Tiếp theo là các chương trình con như: đăng nhập, tải dữ liệu từ kho lưu trữ và nhập thông tin người đo, nhận dữ liệu ECG đo trực tiếp và lưu dữ liệu. Khi bắt đầu hoạt động, các biến cần thiết được khai báo và khởi tạo cho các hoạt động của chương trình. Sử dụng được app cần đăng nhập vào hệ thống bằng tên dăng nhập và mật khẩu được thiết lập trong kho dữ liệu để lấy dữ liệu từ kho dữ liệu và hiển thị lên app. Tiếp đó nhập một số thông tin thông tin bệnh nhân và nhập địa chỉ ip kết nối wifi của bộ vi điều khiển để nhận dữ liệu ECG trực tiếp và lưu dữ liệu nếu cần.
Hình 3.19: Lưu đồ giải thuật của khối Login
Khối Login có chức năng chính là thực hiện xác nhận thông tin để đăng nhập vào hệ thống và hình 3.19 chính là lưu đồ chi tiết cho chương trình con này. Đầu tiên, ứng dụng sẽ kiểm tra xem Username và Password nhập từ người dùng với dữ liệu được cài đặt trong kho dữ liệu có trùng khớp hay không thông qua việc nhấn nút “LOGIN”. Ứng dụng chỉ tiếp tục hoạt động và chuyển sang các chức năng khác ở màn hình Information and load data khi người dùng nhập đúng thông tin đăng nhập. Ngược lại, màn hình đăng nhập sẽ vẫn giữ nguyên mà không chuyển qua màn hình mới nếu nhập sai thông tin. Nếu nhấn nút nhấn “EXIT” sẽ thoát khỏi ứng dụng.