MẠCH đo NHỊP TIM CẢNH báo BẰNG TIN NHẮN SMS dùng PIC16f877a (có code và layout bên dưới)

32 1K 21
MẠCH đo NHỊP TIM CẢNH báo BẰNG TIN NHẮN SMS dùng PIC16f877a (có code và layout bên dưới)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MẠCH đo NHỊP TIM CẢNH báo BẰNG TIN NHẮN SMS (có code và layout bên dưới) MẠCH đo NHỊP TIM CẢNH báo BẰNG TIN NHẮN SMS (có code và layout bên dưới) MẠCH đo NHỊP TIM CẢNH báo BẰNG TIN NHẮN SMS (có code và layout bên dưới) MẠCH đo NHỊP TIM CẢNH báo BẰNG TIN NHẮN SMS (có code và layout bên dưới) MẠCH đo NHỊP TIM CẢNH báo BẰNG TIN NHẮN SMS (có code và layout bên dưới)

ĐỒ ÁN MẠCH ĐO NHỊP TIM CẢNH BÁO BẰNG TIN NHẮN (SMS) MỤC LỤC DANH MỤC CÁC HÌNH ẢNH DANH MỤC CÁC TỪ VIẾT TẮT CHƯƠNG TÌM HIỂU LINH KIỆN .1 1.1 CẢM BIẾN ĐO NHỊP TIM (PULSE SENSOR) 1.2 VI ĐIỀU KHIỂN PIC 16F877A 1.3 MẠCH GSM GPRS GPS SIM808 1.4 MODULE LM2596 1.5 LCD CHƯƠNG KỸ THUẬT GPS 2.1 GIỚI THIỆU VỀ GPS 2.2 GPS VỚI SIM808 11 CHƯƠNG THIẾT KẾ MẠCH VÀ THỰC THI PHẦN CỨNG .12 3.1 LƯU ĐỒ THỰC THI PHẦN CỨNG 12 3.2 SƠ ĐỒ NGUYÊN LÝ MẠCH .13 3.3 THỰC THI PHẦN CỨNG 14 CHƯƠNG KẾT LUẬN, ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN .16 4.1 KẾT LUẬN .16 4.2 ỨNG DỤNG 16 4.3 HƯỚNG PHÁT TRIỂN .16 TÀI LIỆU THAM KHẢO 17 PHỤ LỤC 18 DANH MỤC CÁC HÌNH ẢNH HÌNH 1-1: PULSE SENSOR .1 HÌNH 1-2: MẶT SAU PULSE SENSOR HÌNH 1-3: TÍN HIỆU NHỊP TIM .2 HÌNH 1-4: SƠ ĐỒ CHÂN PIC16F877A HÌNH 1-5: SƠ ĐỒ LOGIC CÁC NGẮT TRONG PIC16F877A HÌNH 1-6: SIM808 HÌNH 1-7: MODULE LM2596 HÌNH 1-8: LCD HÌNH 2-1: CÁC VỆ TINH BAO QUANH TRÁI ĐẤT HÌNH 3-1: SƠ ĐỒ NGUYÊN LÝ 13 HÌNH 3-2: MẠCH IN 14 HÌNH 3-3: MẠCH IN 14 HÌNH 3-4: MẠCH NGỒI THỰC TẾ 15 DANH MỤC CÁC TỪ VIẾT TẮT ADC Analog-to-digital converter BRG Baund Rate Genetator GPR General Purpose Register GPRS General Packet Radio Service GPS Global Positioning System GSM Global System for Mobile Communications I/O Input/Output IC Integrated Circuit LCD Liquid Crystal Display MCU Micro-controller Unit PIC Programmable Intelligent Computer PSP Parallel Slave Port SCI Serial Communication Interface SFG Special Function Register TTL Transistor-transistor logic USART Universal Synchronous Asynchronous Receiver Transmitter ĐỒ ÁN Trang 1/28 CHƯƠNG TÌM HIỂU LINH KIỆN 1.1 Cảm biến đo nhịp tim (Pulse Sensor) Nhịp đập tim thông số quan trọng việc xây dựng tập thể dục khoa học Trước đây, cảm biến nhịp tim thường xuất thiết bị đắt tiền máy chạy bộ, máy đo bệnh viện, smartphone,…v.v… Giờ xuất loại cảm biến đo nhịp tim mà dễ dàng kết nối với board mạch điện tử Arduino, Raspberry Pi hay MCU khác Cảm biến hoạt động dựa sensor quang đo nhịp tim với khuếch đại tín hiệu lọc nhiễu Cấu tạo gồm hai thành phần đầu phát quang bóng hồng ngoại (bước sóng 609nm), quang trở nhạy với bước sóng ánh sáng mà đầu phát phát Cảm biến đo nhịp tim hoạt động theo ngun lí Hình 1-1: Pulse Sensor áp chặt mặt cảm biến vào da, nơi có mạch máu chảy (thường áp vào tai, đầu ngón tay) đầu phát phát ánh sáng vào da Dòng ánh sáng khuếch tán xung quanh phần tới quang trở gần đầu phát Do bị ép nên lượng máu phần cảm biến bị thay đổi, cụ thể khơng có áp lực tim đập, máu dồn xung quanh, lượng ánh sáng từ đầu phát phía đầu thu nhiều tim đập, máu chảy qua nơi có cảm biến áp vào Sự thay đổi nhỏ, nên phần cảm nhận ánh sáng (quang trở) thường có mạch IC để khuếch đại tín hiệu thay đổi này, đưa mạch lọc, đếm qua mạch ADC để tín tốn nhịp tim Tín hiệu đầu analog dao động theo nhịp đập tim Mạch đo nhịp tim cảnh báo tin nhắn (SMS) Hình 1-2: Mặt sau Pulse Sensor ĐỒ ÁN Trang 2/28 Hình 1-3: Tín hiệu nhịp tim 1.2 Vi điều khiển PIC 16F877A PIC16F877A thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8K x 14 bit, nhớ liệu 368x8 byte RAM EEPROM với dung lượng 256x8 byte Số PORT I/O với 33 chân I/O Hình 1-4: Sơ đồ chân PIC16F877A Chuẩn giao tiếp nối tiếp USART với bit địa song song PSP gồm chân điều khiển RD, WR, CS bên Bộ nhớ liệu PIC16F877A EEPROM chia thành bốn bank, bank có dung lượng 128 byte, gồm ghi có cơng dụng đặc biệt SFG nằm vùng có Mạch đo nhịp tim cảnh báo tin nhắn (SMS) Hình 1-3: Arduino Uno R3 ĐỒ ÁN Trang 3/28 địa thấp ghi mục đích chung GPR nằm vùng lại bank Thanh ghi SFR sử dụng thường xuyên đặt tất bank nhớ giúp truy xuất thuận lợi giảm bớt lệnh chương trình Bộ nhớ chương trình PIC16F877A flash, có dung lượng 8K word (1word = 14 bit) chứa 8192 lệnh, dung lượng lệnh sau mã hóa word tương ứng 14 bit Khi reset vi điều khiển, đếm chương trình đến địa 0000h Khi ngắt đếm đến địa 0004h Bộ nhớ chương trình khơng gồm nhớ stack khơng địa hóa đếm chương trình 1.2.1 Các cổng xuất nhập PIC16F877A - Port A: Gồm có sáu chân I/O, chân hai chiều xuất nhập Thanh ghi TrisA điều khiển chức Muốn xác lập chức chân Port A đầu vào ta “set” bit điều khiển tương ứng với chân ghi TrisA ngược lại, muốn xác lập chức chân Port A đầu ra, ta “clear” bit điều khiển tương ứng với chân - ghi TrisA Port B: Gồm chân I/O, ghi TrisB ghi điều khiển xuất nhập tương ứng, số chân Port B dùng q trình nạp chương trình cho vi điều khiển với chế độ nạp khác Port B có ngắt ngoại vi timer Port B tích hợp chức kéo trở lên điều - khiển chương trình Port C: Gồm có chân I/O, TrisC ghi điều khiển xuất nhập Port C có chức so sánh, timer 1, PWM chuẩn giao tiếp I2C, SPI, USART - Port D: Gồm chân I/O, TrisD ghi điều khiển xuất nhập, cổng - xuất liệu chuẩn giao tiếp PSP Port E: Gồm chân I/O, TrisE ghi điều khiển xuất nhập tương ứng, chân ngõ vào analog, chân điều khiển chuẩn giao tiếp PSP 1.2.2 Giao tiếp nối tiếp – USART Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 4/28 USART hai chuẩn giao tiếp kết nối, gọi giao diện giao tiếp nối tiếp SCI, sử dụng để kết nối với thiết bị ngoại vi, với vi điều khiển khác với máy tính Giao diện SART gồm có dạng: - Bất đồng (Asynchronous) Đồng - Master mode Đồng - Slave mode Trong đề tài đồ án này, sử dụng UART bất đồng để giao tiếp PIC16F877A Sim808 PIC16F877A tích hợp sẵn tạo tốc độ baund BRG bit dùng cho giao diện USART BRG gồm ghi TXSTA (địa 98h) dùng để chọn chế độ đồng hay bất đồng mức tốc độ baund, ghi RCSTA (địa 18h) cho phép cổng nối tiếp hoạt động cuối ghi RSBRG (địa 99h) có chức định tốc độ baund 1.2.3 Ngắt – Interrup Hoạt động ngắt PIC16F877A có 15 nguồn tạo điều khiển ghi INTCON Mỗi ngắt có bit điều khiển cờ ngắt riêng, hoạt động ngắt lệ thuộc vào bit GIE bit điều khiển khác Bit điều khiển ngắt RB0/INT TMR0 nằm ghi INTCON, ghi có bit cho phép ngắt ngoại vi PEIE Bit điều khiển ngắt nằm ghi PIE1 PIE2 Cờ ngắt nằm ghi PIR1 PIR2 Ngắt ngoại vi ngắt từ chân INT hay ngắt từ thay đổi trạng thái chân Port B việc xác định ngắt xảy cần hay chu kỳ lệnh tùy thuộc vào thời điểm ngắt xảy Khi chương trình ngắt thực thi, bit GIE xóa tự động, địa lệnh chương trình cất vào nhớ stack đếm đến địa 0004h Để khỏi chương trình ngắt trở lại chương trình dùng lệnh RETFIE Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 5/28 Hình 1-5: Sơ đồ logic ngắt PIC16F877A Ngắt INT dựa thay đổi trạng thái chân RB0/INT Cạnh lên hay xuống tác động gây ngắt bit INTEDG điều khiển Khi có cạnh tác động thích hợp xuất chân RB0/INT, cờ ngắt INTF set bất chấp trạng thái bit điều khiển GIE PEIE Ngắt thay đổi trạng thái chân Port B dùng chân Port B điều khiển bit RBIE Cờ ngắt ngắt RBIF 1.3 Mạch GSM GPRS GPS SIM808 Mạch SIM808 nâng cấp mạch SIM908 cũ với đầy đủ tính GSM, GPRS, GPS độ xác ổn định cao Mạch có thiết kế nhỏ gọn có độ bền ổn định cao, mạch tích hợp thiết kế cần thiết cho module Sim, mạch nguồn xung áp, tụ lọc ổn định nguồn Mạch thích hợp cho yếu tố sử dụng GSM, GPRS, GPS cần độ bền ổn định cao, mạch kèm anten GSM GPS Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 6/28 Thơng số kỹ - Hình 1-6: SIM808 thuật: Module GSM GPRS GPS SIM808 Nguồn vào: 5-18 VDC, lớn 1A Tín hiệu giao tiếp: TTL (3.3 – VDC) Tích hợp chuyển mức tín hiệu TTL Mosfet tốc độ cao Tích hợp mạch giảm áp xung tụ lọc, ổn định nguồn Tích hợp khe cắm Micro Sim Tích hợp led báo trạng thái Thiết kế nhỏ gọn, bền bỉ, chống nhiễu Sơ đồ chân: - VBAT: Pad hàn pin, cực dương 3.7 VDC GND: Mass, VDC VCC: Nguồn dương từ – 18 VDC, lớn 1A GND: Mass, VDC RXD: Chân nhận tín hiệu TTL, chấp nhận mức 3.3 VDC TXD: Chân truyền tín hiệu TTL, chấp nhận mức 3.3 VDC GND: Mass, VDC EN: Mặc định nối lên cao, chức dùng để khởi động dừng hoạt - động SPKN: Ngõ loa speaker âm SPKP: Ngõ loa speaker dương MICP: Ngõ vào micro dương MICN: Ngõ vào micro âm 1.4 Module LM2596 Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 14/28 Đây mạch in vẽ phần mềm Altium Designer (17.0), linh kiện sơ đồ vẽ theo sơ đồ nguyên lý, thiết kế nhỏ gọn hết mức để tạo thẩm mỹ thuận lợi sử dụng Hình 3-4: Mạch ngồi thực tế Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 15/28 Cách thức hoạt động mạch sau cấp nguồn cho mạch áp ngón tay vào cảm biến đo nhịp tim nhịp tim hiển thị LCD, nhịp tim vượt qua ngưỡng cho phép có tin nhắn cảnh báo kèm tọa độ vị trí tự động gửi điện thoại CHƯƠNG KẾT LUẬN, ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN 1.11 Kết luận Ưu điểm: - Nhịp tim đo xác Tin nhắn gửi nhanh Nhược điểm: - Cảm biến nhịp tim lấy liệu chưa tốt Khó lấy tọa độ anten GPS 1.12 Ứng dụng Mạch đo nhịp tim cảnh báo tin nhắn (SMS) dùng lĩnh vực y tế, phục vụ giám sát nhịp tim người cao tuổi hay có vấn đề tim mạch 1.13 Hướng phát triển Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 16/28 Đề tài chưa hồn thiện sử dụng linh kiện thiết bị rẻ tiền, khắc phục cách mua thiết bị đắt hiệu sử dụng cao Thay cảnh báo qua tin nhắn giám sát qua máy tính, internet Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 17/28 TÀI LIỆU THAM KHẢO http//:htpro.vn http://hshop.vn http://arduino.vn http://at-sky.com.vn Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 18/28 PHỤ LỤC Code: #include #define LCD_ENABLE_PIN PIN_A4 #define LCD_RS_PIN PIN_E0 #define LCD_RW_PIN PIN_A5 #define LCD_DATA4 PIN_A3 #define LCD_DATA5 PIN_A2 #define LCD_DATA6 PIN_A1 #define LCD_DATA7 PIN_A0 #include float value,dem=0; float beat = 0,pre_beat = 80; float temp,max=0; int1 mode=0,wait = 0; int count=0, count1=0;//Khai bao bien dem char data[]="000.000000,000.000000";//Khai bao mang luu toa int1 done=0; const char GPS_RC[]="+UGNSINF:";//Khai bao mang chua chuoi khoi dong cua chuoi gps Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 19/28 int count5=0; int1 F_GPS_RC=0;//bien trang thai thong bao bat dau nhan chuoi toa const char KTTD[]="Kiem tra toa do";//mang chua noi dung tin nhan //char sdt[]="\"+841674479551\"";//mang luu so dien thoai int count4=0; int GTD=0;//bien trang thai thong bao da nhan xong du lieu gps char sdt[]="\"+841285519566\""; void cause_of_restart(); #INT_RDA//vector ngat UART void RDA_isr(VOID) { CHAR c = fgetc (UART) ; //luu ky tu nhan duoc vao bien c //fputc(c); //doan ma kiem tra tung ky tu nhan duoc voi tung phan tu mang chua chuoi khoi dong nhan du lieu gps //Neu ky tu nhan duoc giong voi phan tu dau tien mang thi lan nhan du lieu tiep theo so sanh voi phan tu tiep theo IF(c==GPS_RC[count5]) { count5++; if(count5>=9)//neu du ky tu giong voi mang cho truoc thif thong bao bat dau nhan toa { F_GPS_RC=1; Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 20/28 //fputc('P'); } } else count5=0;//neu tai bat cu phan tu nao kiem tra khong dung thi tien hanh kiem tra lai tu dau ///////////////////////////////////////////////////////////////////// //doan ma nhan du lieu gps co thong bao bat dau nhan du lieu if(F_GPS_RC==1) { if(c==',')//dem so dau phay de xac dinh vi tri du lieu toa can luu { count++; } else if(c=='\n')//neu gap ky tu xuong hang thi ket thuc { count=0; F_GPS_RC=0; } else { if((count==3)||(count==4))//neu gap ky tu "," lan thu hoac thu thi luu vao mang toa { if(count1==9) { data[9]=','; count1=10; Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 21/28 } data[count1]=c; count1++; } if(count==5)//neu gap ky tu "," thu thi thong bao da nhan xong { done=1; count1=0; } } } //Kiem tra noi dung tin nhan kiem tra toa if(c==KTTD[count4]) { count4++; if(count4>=15) { GTD=1; } } else(count4=0); } #INT_timer1 void timer1_isr() { Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 22/28 set_timer1(0); dem+=1; } void main() { setup_wdt(WDT_2304MS); cause_of_restart();//thong bao ly khoi dong lai setup_adc_ports(sAN12); setup_adc(ADC_CLOCK_INTERNAL); setup_timer_1(T1_INTERNAL|T1_DIV_BY_4); //262 ms overflow set_adc_channel(12); lcd_init(); lcd_putc("Reading "); enable_interrupts (INT_RDA); //cho phep ngat UART enable_interrupts (GLOBAL) ;//cho phep ngat toan cuc delay_ms (1000); restart_wdt(); delay_ms (1000); restart_wdt(); delay_ms (1000); restart_wdt(); delay_ms (1000); restart_wdt(); Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 23/28 delay_ms (1000); restart_wdt(); fprintf (UART, "AT\r\n");//gui lenh kiem tra ket noi uart delay_ms(500); restart_wdt(); fprintf(UART,"ATE1\r\n") ; delay_ms(200); restart_wdt(); fprintf(UART,"AT+CLIP=1\r\n") ;//truyen lenh cho phep hien thi so dien thoai co cuoc goi den delay_ms(200); restart_wdt(); fprintf(UART,"AT+CNMI=2,2\r\n") ;//truyen lenh cho phep hien thi so dien thoai co cuoc goi den delay_ms(200); restart_wdt(); fprintf(UART,"AT+CMGF=1\r\n") ;//truyen lenh cho phep hien thi so dien thoai co cuoc goi den delay_ms(200); restart_wdt(); fprintf(UART,"AT+CMGDA=\"DEL ALL\"\r\n") ; delay_ms(200); restart_wdt(); fprintf (UART, "AT + CGNSPWR = 1\r\n");//bat gps delay_ms(500); restart_wdt(); //restart_wdt(); fprintf (UART, "AT + CGNSINF\r\n");//nhan du lieu gps dau tien Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 24/28 delay_ms(500); restart_wdt(); fprintf (UART, "AT + CGNSURC = 3\r\n");//gui lenh cho sim808 day du lieu gps 3s lan delay_ms(500); restart_wdt(); while(TRUE) { restart_wdt(); max=0; temp=0; wait = 0; for(int16 i=0;imax)&&(temp!=1023)) max=temp; delay_ms(1); restart_wdt(); } while (!mode) { temp=read_adc(); if(temp>(max-10)) mode=1; } while (!wait) Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 25/28 { temp=read_adc(); if(temp(max-10)) mode=0; } restart_wdt(); //fprintf(UART,"\t temp1 = %f",temp); //fprintf(UART,"max = %f",max); float timer=get_timer1(); //fprintf(UART,"\t dem = %f \t time = %f\r\n",dem,max); disable_interrupts(INT_timer1); value=dem * 0.131; value=value + timer/250000; temp = (1/value)*60; if((temp > 50) && (temp < 140)) { beat = pre_beat * 0.5 + temp * 0.5; //printf(lcd_putc,"\f"); lcd_gotoxy(14,1); printf(lcd_putc,"%.0f",beat); pre_beat = beat; } Mạch đo nhịp tim cảnh báo tin nhắn (SMS) ĐỒ ÁN Trang 26/28 dem=0; if(beat >= 80)//neu nhan duoc yeu cau gui toa gps thi thuc hien gui tin nhan { delay_ms(1000); fprintf (UART, "\n\rAT+CMGS=%s\r",sdt);//gui sdt den sim delay_ms (500) ;//cho sim san sang nhan tn fprintf (UART, "Canh bao nhip tim cao %f https://maps.google.com/maps? q=%s",beat,data) ;//gui noi dung tn den sim900 fputc (0x1A, UART) ;//lenh ket thuc tn nhan va gui tn di GTD=0; } if((beat!=0)&&(beat

Ngày đăng: 09/03/2018, 19:28

Từ khóa liên quan

Mục lục

  • DANH MỤC CÁC HÌNH ẢNH

  • DANH MỤC CÁC TỪ VIẾT TẮT

  • CHƯƠNG 1. TÌM HIỂU LINH KIỆN

    • 1.1 Cảm biến đo nhịp tim (Pulse Sensor)

    • 1.2 Vi điều khiển PIC 16F877A

    • 1.3 Mạch GSM GPRS GPS SIM808

    • 1.4 Module LM2596

    • 1.5 LCD

  • CHƯƠNG 2. KỸ THUẬT GPS

    • 1.6 Giới thiệu về GPS

    • 1.7 GPS với SIM808

  • CHƯƠNG 3. THIẾT KẾ MẠCH VÀ THỰC THI PHẦN CỨNG

    • 1.8 Lưu đồ thực thi phần cứng

    • 1.9 Sơ đồ nguyên lý mạch

    • 1.10 Thực thi phần cứng

  • CHƯƠNG 4. KẾT LUẬN, ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN

    • 1.11 Kết luận

    • 1.12 Ứng dụng

    • 1.13 Hướng phát triển

  • TÀI LIỆU THAM KHẢO

  • PHỤ LỤC

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan