1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA ĐIỆN TỬ 1 BÁO CÁO MÔN HỌC ĐỒ ÁN HỆ THỐNG SỐ ĐỀ TÀI HỆ THỐNG GIÁM SÁT, CẢNH BÁO NHIỆT ĐỘ, ĐỘ ẨM, CƯỜNG ĐỘ GIÓ THÔNG BÁO QUA SMS Giảng viên hướng dẫn Nguyễ[.]
Tổng quan
Đặt vấn đề
Cuộc sống ngày càng phát triển nhanh chóng và hiện đại hơn, những công nghệ mới ngày càng được phát minh và phát triển để đưa vào phục vụ cuộc sống hằng ngày của con người Nhằm mang lại sự tiện nghi, an toàn hơn cho người sử dụng Trong đó không thể không kể đến những dự án, nghiên cứu về lĩnh vực điều khiển và giám sát thông minh với sự tiên tiến vượt trội Điều khiển và giám sát thông minh, là tích hợp các hệ thống như hệ thống điều khiển và giám sát nhiệt độ, độ ẩm, cường độ gió, … thành một hệ thống nhất Mỗi chức năng của điều khiển và giám sát thông minh đều có khả năng tự vận hành hoặc dưới sự điều khiển của người dùng, thông qua tin nhắn cung cấp nhiều chế độ sử dụng Người dùng có thể truy cập từ xa để kiểm tra báo và tắt hệ thống khi cần thiết, tự động gửi theo thời gian cài đặt sẵn Vì thế hiện nay điều khiển và giám sát thông minh là một trong những đề tài công nghệ ứng dụng được áp dụng trong rất nhiều dự án Không chỉ hạn chế với những tính năng nêu trên, ngày càng có nhiều nghiên cứu đề xuất phát triển hệ thống điều khiển và giám sát để bám kịp theo sự phát triển của công nghệ, tối ưu hóa hiệu năng sử dụng cũng như giá cả hợp lý Việc cung cấp các thông số qua SMS cho phép người dùng dễ dàng kiểm soát được cũng như nhận biết được những cảnh báo một cách kịp thời nhất
Do đó, chúng em quyết định thực hiện đề tài: “ HỆ THỐNG GIÁM SÁT NHIỆT ĐỘ, ĐỘ ẨM, CƯỜNG ĐỘ GIÓ QUA SMS” Đề tài ứng dụng công nghệ SMS phổ biến trên nhiều thiết bị để điều khiển và giám sát Với đề tài sử dụng thiết bị như vậy sẽ hạ thấp được giá thành sản phẩm.
Mục tiêu đề tài
Đồ án được nhóm nghiên cứu, khảo sát và thực hiện với mục đích áp dụng các kiến thức đã được học ở trường giúp cho những nhu cầu điều khiển và giám sát trở nên tiện lợi hơn
Vì vậy nhóm thiết kế “HỆ THỐNG GIÁM SÁT NHIỆT ĐỘ, ĐỘ ẨM, CƯỜNG ĐỘ GIÓ QUA SMS” với mong muốn đem những kỹ thuật và công nghệ mới để làm đơn giản hóa
7 việc giám sát, có thể giám sát dù ở bất cứ nơi đâu Thiết bị được tích hợp module sim 800L, encoder, nhiệt độ và độ ẩm DHT11 Thiết bị được giám sát trực tiếp qua màn hình LCD hoặc giám sát từ xa qua qua điện thoại nhờ tin nhắn SMS.
Nội dung nghiên cứu
Nội dung 1: Tìm hiểu về module sim 800L và truyền dữ liệu qua SMS
Nội dung 2: Tìm hiểu về Encoder, tính toán thiết kế mô hình đo tốc độ gió
Nội dung 3: Tìm hiểu về module DHT11 đo nhiệt độ và độ ẩm,
Nội dung 4: Tìm hiểu về I2C LCD16x2 và chức năng thời gian thực RTC
Nội dung 5: Thiết kế, thi công và thử nghiệm phần cứng
Nội dung 6: Đánh giá kết quả và viết báo cáo.
Cơ sở lý thuyết
Giới thiệu linh kiện
2.1.1 Tổng quan về vi xử lí ARM
ARM ( được viết cách điệu là arm, trước đây là từ viết tắt của Advanced RISC Machine, ban đầu là Acorn RISC Machine) là một họ kiến trúc dạng RISC cho các vi xử lý máy tính, được cấu hình cho các môi trường khác nhau Arm Holdings phát triển kiến trúc và cấp phép nó cho các công ty khác, nơi mà sẽ thiết kế các sản phẩm của riêng họ để thực hiện một trong những kiến trúc đó bao gồm các SoC và các module hệ thống (SoM) kết hợp với các thành phần khác nhau như bộ nhớ, giao diện, radio Họ cũng thiết kế các lõi thực hiện tập lệnh này và cấp phép cho các thiết kế này cho các công ty đối tác để thiết kế sản phẩm của riêng họ dựa trên các lõi này
2.1.2 Tổng quan về Kit ARM STM32F103C8T6
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng như
F0,F1,F2,F3,F4… Stm32f103 thuộc họ F1 với lõi là ARM COTEX M3 STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR Embedded Workbench, Keil C…
Hình 2.2: Cấu tạo của STM32F103C8T6
1 cổng Mini USB dùng để cấp nguồn, nạp cũng như debug
2 MCU bao gồm 1 MCU nạp và 1 MCU dùng để lập trình
Có chân Output riêng cho các chân mạch nạp trên MCU1
Có chân Output đầy đủ cho các chân MCU2
Chân cấp nguồn ngoài riêng cho MCU2 nếu không sử dụng nguồn từ USB
Thạch anh 32,768khz dùng cho RTC và Backup
Chân nạp dùng cho chế độ nạp boot loader
Nút Reset ngoài và 1 led hiển thị trên chân PB9, 1 led báo nguồn cho MCU2
2.1.3 Tổng quan về cảm biến nhiệt độ độ ẩm DHT11
* Giới thiệu sơ lược về module
- Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire ( giao tiếp digital 1 dây truyền dữ liệu duy nhất) Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào
- Điện áp hoạt động: 3.3V đến 5V (DC)
Dải nhiệt độ đo: 0°C ~ 50°C, sai số ± 2°C
Dải độ ẩm đo: 20% - 90% RH, sai số ± 5% RH
Tần số lấy mẫu: 1Hz, nghĩa là 1 giây DHT11 lấy mẫu một lần
Chuẩn giao tiếp: TTL, 1 – Wire
* Chức năng các chân của DHT 11
Chân DATA: chân tín hiệu
- Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2 bước:
Gửi tín hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại
Khi đã giao tiếp với DHT11, cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt độ đo được
Bước 1: gửi tín hiệu Start
Hình 2.3: Cách thức hoạt động
MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong khoảng thời gian > 18ms Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt độ và độ ẩm
MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào
Sau khoảng thời gian là 20 - 40 às, DHT11 sẽ kộo chõn DATA xuống thấp Nếu
> 40 às mà chõn DATA khụng được kộo xuống thấp nghĩa là khụng giao tiếp được với DHT11
Chõn DATA sẽ ở mức thấp 80 às sau đú nú được DHT11 kộo lờn cao trong 80 às Bằng việc giỏm sỏt chõn DATA, MCU cú thể biết được cú giao tiếp được với DHT11 không Nếu tín hiệu đo được DHT11 lên cao, khi đó hoàn thiện quá trình giao tiếp của MCU với DHT11
Bước 2: Đọc giá trị trên DHT11
- DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 Byte Trong đó:
Byte 1: giá trị phần nguyên của độ ẩm (RH%)
Byte 2: giá trị phần thập phân của độ ẩm (RH%)
Byte 3: giá trị phần nguyên của nhiệt độ (°C)
Byte 4: giá trị phần thập phân của nhiệt độ (°C)
- Nếu Byte 5 = (Byte 1 + Byte 2 + Byte 3 + Byte 4) thì giá trị độ ẩm và nhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa
- Ví dụ như ta nhận được 40 bit (5 Byte) dữ liệu như sau:
8 Bit Checksum (Byte 5) = 0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 0100 1101 Độ ẩm: 0011 0101 = 35H = 53% RH (ở đây phần thập phân có giá trị 0000 0000, nên ta bỏ qua không tính phần thập phân)
Nhiệt độ: 0001 1000 = 18H = 24°C (ở đây phần thập phân có giá trị 0000 0000, nên ta bỏ qua không tính phần thập phân)
Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1 về MCU, tương ứng chia thành 5 byte kết quả của nhiệt độ và độ ẩm
- Sau khi tiến hiệu được đưa về 0, ta đợi chân DATA của DHT11 được MCU kéo lên
1 Nếu chõn DATA là 1 trong khoảng 26 – 28 às thỡ là bit 0, cũn nếu tồn tại 70 às là bit
1 Do đú trong lập trỡnh ta bắt sườn của chõn DATA, sau đú delay 50 às Nếu giỏ trị đo được là 0 thì ta đọc được bit 0, nếu giá trị đo được là 1 thì ta đọc được là bit 1 Cứ như thế ta đọc các Bit tiếp theo
Encoder có mục đích là dùng để quản lý vị trí góc của một đĩa quay, đĩa quay có thể là bánh xe, trục động cơ, hoặc bất kỳ thiết bị quay nào cần xác định vị trí góc
Encoder có 2 loại đó là: absolute encoder (encoder tuyệt đối) và incremental encoder (encoder tương đối)
Nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay, xoay quang trục Người ta dùng một đèn Led để chiếu lên mặt đĩa Khi đĩa quay, chỗ không có lỗ (rãnh), đèn Led không chiếu xuyên qua được, chỗ có lỗ (rãnh), đèn Led sẽ chiếu xuyên qua Khi đó, phía mặt bên kia của đĩa, người ta đặt một con mắt thu Với các tín hiệu có, hoặc không có ánh sáng chiếu qua, người ta ghi nhận được đèn Led có chiếu qua lỗ hay không Khi trục quay, giả sử trên đĩa quay chỉ có 1 lỗ duy nhất, cứ mỗi lần con mắt thu nhận được tín hiệu đèn Led, thì có nghĩa là đĩa quay đã quay được một vòng
Hình 2.6: Nguyên lý hoạt động
Hình 2.7: Encoder 30 xung Thông số kỹ thuật:
2.1.5 Tổng quan về Module SIM800L
* Giới thiệu sơ lược về module SIM800L
- Module SIM800L có khả năng nhắn tin SMS, nghe, gọi, GPRS, … như một điện thoại nhưng có kích thước nhỏ nhất trong các loại module SIM (25 mm x 22 mm) Điều khiển module sử dụng bộ tập lệnh AT dễ dàng, chân kết nối dùng rào đực thông dụng (male hearder) chuẩn 100 mil
Nguồn cấp: 3.7V đến 4.2V, có thể sử dụng với nguồn dòng thấp từ 500 mAh trở lên (như cổng USB, nguồn từ board Arduino)
Khe cắm sim: MICROSIM - Dòng khi ở chế độ chờ: 10 mA
Dòng khi hoạt động: 100 mA đến 1 A
Hỗ trợ 4 băng tần: GSM850MHz, EGSM900MHz, DSC1800MHz, PCS1900MHz
Hình 2.8: Sơ đồ chân module SIM800L *Chức năng các chân của module SIM800L:
Chân NET: lắp anten, có thể dùng anten đi kèm hoặc anten mở rộng
Chân VCC: chân nguồn dương 4.2V
Chân GND: chân nguồn âm 0V
Chân RST: chân reset sử dụng khi khởi động lại module sim
Chân TXD: chân truyền UART TX
Chân RXD: chân nhận UART RX
Chân DTR: chân UART DTR - Chân RING: báo có cuộc gọi đến
Chân SPKP, SPKN: ngõ ra âm thanh, kết nối với loa để phát âm thanh
Chân MICP, MICN: ngõ vào âm thanh, gắn thêm mirco để thu âm thanh
*Tập lệnh AT điều khiển cuộc gọi
AT+CLIP=1 Hiển thị thông tin cuộc gọi đến
ATD[số_điện_thoại]; Lệnh thực hiện cuộc gọi
Lệnh thực hiện kết thúc cuộc gọi hoặc cúp máy khi có cuộc gọi đến
Lệnh thực hiện chấp nhận khi có cuộc gọi đến
Bảng 2.1 Tập lệnh AT điều khiển cuộc gọi
*Tập lệnh AT điểu khiển tin nhắn
Lệnh đưa SMS về chế độ Text, phải có lệnh này mới gửi tin nhắn dạng Text
AT+CMGS=“Số_Điện_Thoại”
Đợi đến khi có kí tự ‘>’ được gửi về thì đánh nội dung tin nhắn
AT+CMGR=x x là địa chỉ tin nhắn cần đọc Đọc một tin nhắn vừa gửi đến, lệnh được trả về nội dung tin nhắn, thông tin người gửi, thời gian gửi
Xóa toàn bộ tin nhắn trong các hộp thư
Hiển thị nội dung tin nhắn ngay khi có tin nhắn đến
Bảng 2.2 Tập lệnh AT điều khiển tin nhắn
- Sau mỗi tập lệnh AT thường thấy thực chất nó là hai mã điều khiển
tương ứng 0x0D (hexa), tương ứng 0x0A (hexa)
Hình 2.9: Màn hình hiển thị LCD
Màn hình LCD 1602 xanh lá sử dụng driver HD44780, có khả năng hiển thị 2 dòng với mỗi dòng 16 ký tự, màn hình có độ bền cao, rất phổ biến, nhiều code mẫu và dễ dàng sử dụng hơn nếu đi kèm mạch chuyển tiếp I2C
Điện áp hoạt động là 5 V
Chữ trắng, nền xanh dương
Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với
Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện
Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn
Có thể được điều khiển với 6 dây tín hiệu
Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật, xem thêm HD44780 datasheet để biết thêm chi tiết
Bảng 2.3: Chức năng các chân của LCD
1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
GND của mạch điều khiển
2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển
3 VEE Điều chỉnh độ tương phản của LCD
4 RS Chân chọn thanh ghi (Register select) Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
5 R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc
6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU
Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7
15 - Nguồn dương cho đèn nền
Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua các chân DBx
Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD thông qua các chân DBx
- Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register)
Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám đường bus DB0-DB7 Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó
VD : Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7…DB0)
Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110
Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc CGRAM
Giới thiệu về trình biên dịch KeilC và CubeMX
Dòng điện ngõ ra: max 3A
Hình 2.14: Sơ đồ nguyên lý module LM2596
- Khi cấp điện vào chân DC Input, dòng điện sẽ được đưa qua các tụ lọc nhiễu, sau đó được đưa qua IC LM2596 Thông qua biến trở điều chỉnh ngõ vào của chân Feedback,
IC sẽ tạo điện áp tương ứng phụ thuộc vào giá trị biến trở và đưa điện áp ra chân Output đưa ra ngoài
2.2 Giới thiệu về trình biên dịch KeilC và STM32CubeMX
Trình biên dịch keilC khá nhanh, mạnh, được nhiều người sử dụng, hỗ trợ simulation, hỗ trợ nhiều loại debugger, tối ưu hóa cao cho các ứng dụng có bộ xử lý lõi ARM
Hỗ trợ cho nhiều loại kiến trúc MCU
Hỗ trợ chúng ta cách quản lý source code bằng cách add source vào project explorer, cấu hình target device, define parameter rất tiện lợi
STM32Cube mang tất cả các công cụ và các phần mềm nhúng tới cho người dùng STM32 một cách tích hợp và đơn giản Hãng ST đưa ra một giải pháp thân thiện hơn: Miễn phí bản quyền, tăng tốc độ develope, giảm giá thành R&D, tối ưu được lợi nhuận
Giúp cấu hình ngoại vi dễ dàng: Chọn các pin trên chip và chọn các tính năng mong muốn gắn với nó Cấu hình Middlewares (FATS, FREERTOS), các ngoại vi như CRC, IWDG, TIMERS…, cấu hình Clock và tính toán mức độ tiêu hao năng lượng
STM32CubeMX tự động download các driver mới nhất của ST dành cho các dòng chip của mình
Tự động tạo project dựa trên cấu hình ở trên STM32CubeMX đầu tiên sẽ download driver của dòng chip cần cấu hình, sau đó tạo code và copy các driver cần thiết vào projects, và tạo project trên các công cụ lập trình phổ biến như Keil hay IAR Sau khi tạo xong, chúng ta có thể bắt tay ngay vào việc viết code
- Khi bước đầu chuyển sang làm quen với dòng vi điều khiển ARM từ các dòng vi điều khiển truyền thống như AVR, PIC… chúng ta sẽ dễ cảm thấy bị choáng ngợp vì sự phức tạp và khổng lồ của nó Do vậy các nhà sản xuất đã phát triển các thư viện/driver chuẩn cho các con chip của họ Chúng ta sẽ không làm việc trực tiếp ở mức register nữa, mà làm
27 quen với các hàm API đã được nhà sản xuất cung cấp sẵn, giúp cho việc viết chương trình trở nên dễ dàng hơn nhiều
- Hãng ST trước đây cũng cung cấp thư viện ngoại vi chuẩn (Standard Peripheral Libraries) để cho chúng ta sử dụng Tuy nhiên sử dụng nó cũng còn quá nhiều điều phức tạp, và những ai mới bước vào thế giới ARM sẽ rất dễ nản lòng Ví dụ đơn giản nhất là việc khởi tạo phần cứng ( Cài đặt RCC cho hệ thống, cài đặt ngoại vi…) cũng khá phức tạp
- Sau đó ST ra mắt công cụ STM32 MicroExplorer để giúp cấu hình ngoại vi, cũng như tạo project dựa trên các cấu hình đó, việc còn lại của chúng ta chỉ là viết code của mình Trải qua nhiều version, STM32 MicroExplorer đã phát triển thành STM32CubeMX, một chương trình hoàn thiện hơn rất nhiều và giúp cho việc lập trình trên STM32 dễ dàng hơn bao giờ hết
Hình 2.15: Cấu hình bằng STM32CUBE
KeilC uvision 5 là một phần mềm hỗ trợ cho người dùng trong việc lập trình cho vi điều khiển các dòng khác nhau (Atmel, AVR, ) KeilC giúp người dùng soạn thảo và biên dịch chương trình C hay cả ASM thành ngôn ngữ máy để nạp vào vi điều khiển giúp chúng ta thương tác giữa vi điều khiển và người lập trình
Đầu tiên các bạn truy cập trang chủ keil để tải phần mềm
Sau đó kích chọn MDK-Arm để tải (Phiên bản hiện tại là 5.27.1.0)
Hình 2.16: Cách cài đặt KeilC
Tiếp theo kích chọn MDK527.EXE
Hình 2.17: Cách cài đặt KeilC
Chọn đường dẫn để lưu file và nhấn Save để download
Sau khi download xong, các bạn mở file setup vừa tải lên:
Hình 2.18: Cách cài đặt KeilC
Chọn I agree to all terms of the preceding License Agreement -> Next
Hình 2.19: Cách cài đặt KeilC
Điền thông tin và chọn đường dẫn lưu phần mềm:
Hình 2.20: Cách cài đặt KeilC
Hình 2.21: Cách cài đặt KeilC
Sau khi cài đặt hoàn tất, hộp thoại Windows Security sẽ xuất hiện Chọn Install để tiếp tục:
Hình 2.22: Cách cài đặt KeilC
Chọn Finish để kết thúc quá trình cài đặt:
Hình 2.23: Cách cài đặt KeilC
Sau khi cài đặt xong, ta tiếp tục cài đặt các gói package phù hợp với dòng chip đang sử dụng cho Keil C
2.2.4 Tổng quan về ST-Link
- ST-Link V2 là mạch nạp, hỗ trợ debug cho tất cả các loại vi điều khiển thuộc dòng STM8 và STM32 của hãng STMicroelectronis
- ST-Link V2 sử dụng giao thức một dây, không đồng bộ (SWIM) cho STM8 MCU, và sử dụng giao thức 2 dây, đồng bộ (SWD) cho STM32 MCU Tên các chân tín hiệu được in trên vỏ nhôm của mạch nạp, đảm bảo sự tiện lợi, thẩm mỹ và ổn đinh khi sử dụng Ngoài ra ST-Link V2 còn cung cấp sẵn nguồn 3.3V và 5.0V (max 500mA) để cung cấp cho mạch bên ngoài
Bước 1: Download phẩn mềm nạp STM32 ST-LINK Utility
Bước 2: Cập nhật Firmware mới nhất cho ST-Link V2
Cắm ST-Link V2 vào cổng USB của máy tính, chờ máy tính báo nhận phần cứng
Bật phần mềm STM32 ST-LINK Utility, chọn ST-LINK->Firmware update, sau đó chọn Device Connect và Yes>>>> để bắt đầu quá trình cập nhật
Hình 2.24: Cách cài đặt ST-Link
Bước 1 Kết nối mạch đích (STM8/STM32 MCU) với ST-Link V2
STM8 ST-Link V2 ST-Link V2 STM32
Bảng 2.5: Hướng dẫn kết nối
ST-Link V2 chỉ cung cấp dòng tối đa 500mA, do vậy nếu mạch đích tiêu thụ dòng lớn hơn thì phải cấp nguồn ngoài !
Bước 2 Kết nối ST-Link V2 với máy tính
Bước 3 Bật phần mềm STM32 ST-LINK Utility, ấn Ctr+P, chọn file hex và bắt đầu quá trình nạp
Hình 2.25: Nạp code qua ST-Link
Giới thiệu về chuẩn giao tiếp I2C
2.3.1.Tổng quan về chuẩn giao tiếp I2C
- I2C là tên viết tắt của cụm từ tiếng anh “Inter – Integrated Circuit” Nó là một giao thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa một bộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường truyền tín hiệu Đây là một giao thức giao tiếp nối tiếp đồng bộ Nó có nghĩa là các bit dữ liệu được truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi một tín hiệu đồng hồ tham chiếu
Dữ liệu được truyền giữa thiết bị Master và các thiết bị Slave thông qua một đường dữ liệu SDA duy nhất, thông qua các chuỗi có cấu trúc gồm các số 0 và 1 (bit) Mỗi chuỗi số 0 và
1 được gọi là giao dịch (transaction) và dữ liệu trong mỗi giao dịch có cấu trúc như sau:
Hình 2.26: Cấu trúc trong mỗi giao dịch ( Transaction)
*Điệu kiện bắt đầu (Start Condition)
- Bất cứ khi nào một thiết bị chủ / IC quyết định bắt đầu một giao dịch, nó sẽ chuyển mạch SDA từ mức điện áp cao xuống mức điện áp thấp trước khi đường SCL chuyển từ cao xuống thấp
- Khi điều kiện bắt đầu được gởi bởi thiết bị Master, tất cả các thiết bị Slave đều hoạt động ngay cả khi chúng ở chế độ ngủ và đợi bit địa chỉ
Hình 2.27: Điều kiện bắt đầu
- Nó bao gồm 7 bit và được lấp đầy với địa chỉ của thiết bị Slave đến từ đó thiết bị Master cần gửi / nhận dữ liệu Tất cả các thiết bị Slave trên bus I2C so sánh các bit địa chỉ này với địa chỉ của chúng
- Bit này xác định hướng truyền dữ liệu Nếu thiết bị Master / IC cần gửi dữ liệu đến thiết bị Slave, bit này được thiết lập là ‘0’ Nếu IC / Master cần nhận dữ liệu từ thiết bị Slave, bit này được thiết lập là ‘1’
- ACK / NACK là viết tắt của Acknowledged/Not-Acknowledged Nếu địa chỉ vật lý của bất kỳ thiết bị Slave nào trùng với địa chỉ được thiết bị Master phát, giá trị của bit này được set là ‘0’ bởi thiết bị Slave Ngược lại, nó vẫn ở mức logic ‘1’ (mặc định)
- Nó bao gồm 8 bit và chúng được thiết lập bởi bên gửi, với các bit dữ liệu cần truyền tới bên nhận Khối này được theo sau bởi một bit ACK / NACK và được set thành ‘0’ bởi bên nhận nếu nó nhận thành công dữ liệu Ngược lại, nó vẫn ở mức logic ‘1’ Sự kết hợp của khối dữ liệu theo sau bởi bit ACK / NACK được lặp lại cho đến quá trình truyền dữ liệu được hoàn tất Điều kiện kết thúc (Stop Condition)
- Sau khi các khung dữ liệu cần thiết được truyền qua đường SDA, thiết bị Master chuyển đường SDA từ mức điện áp thấp sang mức điện áp cao trước khi đường SCL chuyển từ cao xuống thấp
Hình 2.28: Điều kiện kết thúc
- Thiết bị Master gửi điều kiện bắt đầu đến tất cả các thiết bị Slave
- Thiết bị Master gửi 7 bit địa chỉ của thiết bị Slave mà thiết bị Master muốn giao tiếp cùng với bit Read/Write
Hình 2.29: Cách thức hoạt động
- Mỗi thiết bị Slave so sánh địa chỉ được gửi từ thiết bị Master đến địa chỉ riêng của nó Nếu địa chỉ trùng khớp, thiết bị Slave gửi về một bit ACK bằng cách kéo đường SDA xuống thấp và bit ACK / NACK được thiết lập là ‘0’ Nếu địa chỉ từ thiết bị Master không khớp với địa chỉ riêng của thiết bị Slave thì đường SDA ở mức cao và bit ACK / NACK sẽ ở mức ‘1’ (mặc định)
Hình 2.30: Cách thức hoạt động
- Thiết bị Master gửi hoặc nhận khung dữ liệu Nếu thiết bị Master muốn gửi dữ liệu đến thiết bị Slave, bit Read / Write là mức điện áp thấp Nếu thiết bị Master đang nhận dữ liệu từ thiết bị Slave, bit này là mức điện áp cao
Hình 2.31: Cách thức hoạt động
- Nếu khung dữ liệu được thiết bị Slave nhận được thành công, nó sẽ thiết lập bit ACK / NACK thành ‘0’, báo hiệu cho thiết bị Master tiếp tục
Hình 2.32: Cách thức hoạt động
- Sau khi tất cả dữ liệu được gửi đến thiết bị Slave, thiết bị Master gửi điều kiện dừng để báo hiệu cho tất cả các thiết bị Slave biết rằng việc truyền dữ liệu đã kết thúc
Hình 2.33: Cách thức hoạt động
- Hình dưới đây thể hiện toàn bộ các bit dữ liệu được gửi trên đường SDA và thiết bị điều khiển chúng khi thiết bị Master gửi dữ liệu đến thiết bị Slave
Hình 2.34: Master gửi dữ liệu
- Hình dưới đây thể hiện toàn bộ các bit dữ liệu được gửi trên đường SDA và thiết bị điều khiển chúng khi thiết bị Master nhận dữ liệu đến thiết bị Slave
Hình 2.35: Master nhận dữ liệu
Giới thiệu về chuẩn giao tiếp UART
2.4.1 Tổng quan về chuẩn giao tiếp UART
- UART (Universal Asynchronous Receiver-Transmitter – Bộ truyền nhận dữ liệu nối tiếp bất đồng bộ) là một trong những giao thức truyền thông giữa thiết bị với thiết bị được sử dụng nhiều nhất Bạn có thể thấy giao tiếp UART được sử dụng nhiều trong các ứng dụng để giao tiếp với các module như: Wifi, Bluetooth, Xbee, module đầu đọc thẻ RFID với Arduino hoặc vi điều khiển khác Đây cũng là chuẩn giao tiếp thông dụng và phổ biến trong công nghiệp từ trước đến nay
- Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau UART truyền chuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp, truyền nó nối tiếp đến UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận
- Hai đường dây mà mỗi thiết bị UART sử dụng để truyền dữ liệu đó là:
- UART truyền dữ liệu không đồng bộ, có nghĩa là không có tín hiệu đồng hồ để đồng bộ hóa đầu ra của các bit từ UART truyền đến việc lấy mẫu các bit bởi UART nhận Thay vì tín hiệu đồng hồ, UART truyền thêm các bit start và stop vào gói dữ liệu được chuyển Các
43 bit này xác định điểm bắt đầu và điểm kết thúc của gói dữ liệu để UART nhận biết khi nào bắt đầu đọc các bit
- Khi UART nhận phát hiện một bit start, nó bắt đầu đọc các bit đến ở một tần số cụ thể được gọi là tốc độ truyền (baud rate) Tốc độ truyền là thước đo tốc độ truyền dữ liệu, được biểu thị bằng bit trên giây (bps – bit per second) Cả hai UART đều phải hoạt động ở cùng một tốc độ truyền Tốc độ truyền giữa UART truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi thời gian của các bit bị lệch quá xa
- Cả hai UART cũng phải được cấu hình để truyền và nhận cùng một cấu trúc gói dữ liệu
Số lượng dây sử dụng 2
Phương pháp truyền Bất đồng bộ
Truyền nối tiếp hay song song? Nối tiếp
Số lượng thiết bị chủ tối đa 1
Số lượng thiết bị tớ tối đa 1
- UART sẽ truyền dữ liệu nhận được từ một bus dữ liệu (Data Bus) Bus dữ liệu được sử dụng để gửi dữ liệu đến UART bởi một thiết bị khác như CPU, bộ nhớ hoặc vi điều khiển
Dữ liệu được chuyển từ bus dữ liệu đến UART truyền ở dạng song song Sau khi UART truyền nhận dữ liệu song song từ bus dữ liệu, nó sẽ thêm một bit start, một bit chẵn lẻ và một bit stop, tạo ra gói dữ liệu Tiếp theo, gói dữ liệu được xuất ra nối tiếp từng bit tại chân
Tx UART nhận đọc gói dữ liệu từng bit tại chân Rx của nó UART nhận sau đó chuyển đổi dữ liệu trở lại dạng song song và loại bỏ bit start, bit chẵn lẻ và bit stop Cuối cùng, UART nhận chuyển gói dữ liệu song song với bus dữ liệu ở đầu nhận
Hình 2.37: Cách thức hoạt động
Dữ liệu truyền qua UART được tập hợp thành gói (packet) Mỗi gói chứa 1 bit start, 5 đến
9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ (parity bit) tùy chọn và 1 hoặc 2 bit stop
*Start bit (Bit bắt đầu) Đường truyền dữ liệu UART thường được giữ ở mức điện áp cao khi nó không truyền dữ liệu Để bắt đầu truyền dữ liệu, UART truyền sẽ kéo đường truyền từ mức cao xuống mức thấp trong một chu kỳ đồng hồ Khi UART nhận phát hiện sự chuyển đổi điện áp cao xuống thấp, nó bắt đầu đọc các bit trong khung dữ liệu ở tần số của tốc độ truyền
*Data Frame (Khung dữ liệu)
Khung dữ liệu chứa dữ liệu thực tế đang được truyền Nó có thể dài từ 5 bit đến 8 bit nếu sử dụng bit chẵn lẻ Nếu không sử dụng bit chẵn lẻ, khung dữ liệu có thể dài 9 bit Trong hầu hết các trường hợp, dữ liệu được truyền với bit có trọng số bé nhất (LSB – Least Significant Bit) trước tiên
*Parity Bit (Bit chẵn lẻ)
Tính chẵn lẻ mô tả tính chẵn hoặc lẻ của một số Bit chẵn lẻ là một cách để UART nhận cho biết liệu có bất kỳ dữ liệu nào đã thay đổi trong quá trình truyền hay không Bit có thể bị thay đổi bởi bức xạ điện từ, tốc độ truyền không khớp hoặc truyền dữ liệu đường dài Sau khi UART nhận đọc khung dữ liệu, nó sẽ đếm số bit có giá trị là 1 và kiểm tra xem tổng số là số chẵn hay lẻ Nếu bit parity là 0 (even parity – parity chẵn), thì tổng số bit 1 trong khung dữ liệu phải luôn là một số chẵn Nếu bit parity là 1 (odd parity – parity lẻ) thì số tổng bit 1 trong khung dữ liệu là một số lẻ
Khi bit chẵn lẻ khớp với dữ liệu, UART biết rằng quá trình truyền không có lỗi Nhưng nếu bit chẵn lẻ là 0 và tổng là số lẻ, hoặc bit chẵn lẻ là 1 và tổng số là chẵn, thì UART biết rằng các bit trong khung dữ liệu đã thay đổi
*Stop Bit (Bit kết thúc)
46 Để báo hiệu sự kết thúc của gói dữ liệu, UART gửi sẽ điều khiển đường truyền dữ liệu từ điện áp thấp đến điện áp cao trong ít nhất hai khoảng thời gian bit
Bước 1: UART truyền nhận dữ liệu song song từ bus dữ liệu
Hình 2.43: UART nhận dữ liệu
Bước 2: UART truyền thêm bit start, bit chẵn lẻ và bit dừng vào khung dữ liệu
Hình 2.44: UART truyền thêm bit start, chẵn lẻ
Bước 3: Toàn bộ gói được gửi nối tiếp từ UART truyền đến UART nhận UART nhận lấy mẫu đường dữ liệu ở tốc độ truyền được định cấu hình trước
Hình 2.45: UART truyền nhận dữ liệu
Bước 4: UART nhận loại bỏ bit start, bit chẵn lẻ và bit stop khỏi khung dữ liệu
Hình 2.46: UART loại bỏ bit start, chẵn lẻ
Bước 5: UART nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song và chuyển nó đến bus dữ liệu ở đầu nhận
Hình 2.47: UART truyền dữ liệu
Giới thiệu về chức năng RTC của STM32F103C8T6
- RTC hay Real Time Clock là ngoại vi sử dụng như một bộ đồng hồ – lịch thời gian thực Thuật ngữ thời gian thực là chỉ thời gian trong cuộc sống của con người hằng ngày, chứ không phải thời gian trong tính toán như các Timer khác
- Để bộ RTC có thể hoạt động chúng ta cần nối chân Vbat của vi điều khiển với một nguồn 3V, thường sử dụng Pin Cmos, nguồn điện này giúp duy trì xung RTC hoạt động bình thường
*Ưu nhược điểm của STM32 RTC
Tiết kiệm chi phí linh kiện, góp phần giảm giá thành sản phẩm
Có thể sử dụng thanh ghi Backup 16bit như 1 Eprom điều mà STM32 thiếu
Sai số từ bộ dao động lớn (1%), khi chạy lâu dài sẽ dẫn tới sai thời gian
*Các thông số chính của STM32 RTC
Có thể cấu hình Clock đầu vào theo 3 nguồn đó là: LSE, HSE, LSI
Bộ chia clock lên đến 20 bit, giúp bộ RTC hoạt động chính xác
Độ phân giải của timer RTC lên đến 32 bit – tức là 2^32 giây mới tràn và cần reset lại
3 nguồn clock source có thể được sử dụng
2 loại Reset RTC riêng biệt
Có các ngắt hỗ trợ là : ngắt Alarm, ngắt mỗi giây, ngắt tràn bộ đếm.
Giới thiệu về mode TIM_ENCODER của STM32F103C8T6
- Các mô-đun hẹn giờ có thể hoạt động nhiều chế độ khác nhau, một trong số đó là chế độ
Bộ mã hóa Nơi bộ đếm thời gian được tạo xung nhịp từ chân của các kênh bên ngoài và lập trình viên (bạn) có khả năng chọn cực tính của cạnh đếm, giá trị Prescaler và các chu kỳ bộ lọc đầu vào Phần cứng của bộ đếm thời gian STM32 ở chế độ mã hóa cung cấp một giải pháp phần cứng hoàn chỉnh để phát hiện tín hiệu và quyết định hướng đếm lên hoặc xuống, giúp dễ dàng đáng kể quá trình phát triển phần sụn để giao tiếp loại cảm biến này
*Bộ hẹn giờ STM32 ở chế độ mã hóa
- Hai đầu vào TI1 và TI2 được sử dụng để giao tiếp với một bộ mã hóa gia tăng Bộ đếm được xung nhịp bởi mỗi chuyển đổi hợp lệ trên TI1FP1 hoặc TI2FP2 (TI1 và TI2 sau khi bộ lọc đầu vào và lựa chọn cực tính) Chuỗi chuyển đổi của hai đầu vào được đánh giá và tạo ra các xung đếm cũng như tín hiệu hướng
Tùy thuộc vào trình tự mà bộ đếm đếm lên hoặc xuống, bit DIR trong thanh ghi TIMx_CR1 được phần cứng sửa đổi cho phù hợp Bit DIR được tính ở mỗi lần chuyển đổi trên bất kỳ đầu vào nào (TI1 hoặc TI2), bất kể bộ đếm nào chỉ đếm trên TI1, chỉ TI2 hoặc cả TI1 và TI2
- Chế độ giao diện bộ mã hóa hoạt động đơn giản như một đồng hồ bên ngoài với lựa chọn hướng Điều này có nghĩa là bộ đếm chỉ đếm liên tục giữa 0 và giá trị tự động tải lại trong thanh ghi TIMx_ARR
- Trong chế độ này, bộ đếm được sửa đổi tự động theo tốc độ và hướng của bộ mã hóa gia tăng và nội dung của nó, do đó, luôn thể hiện vị trí của bộ mã hóa Hướng đếm tương ứng với hướng quay của cảm biến được kết nối Một bộ mã hóa gia tăng bên ngoài có thể được kết nối trực tiếp với MCU mà không cần giao diện logic bên ngoài
Tính toán và thiết kế
Tổng quát về đề tài
Đề tài nảy yêu cầu thiết kế hệ thống giám sát nhiệt độ, độ ẩm và cường độ gió Khi từ vi xử lý đưa dữ liệu sang điện thoại qua tin nhắn SMS và hiển thị dữ liệu lên màn hình LCD Ở chương này, sẽ tập trung tính toán thiết kế các khối cho hệ thống, dựa vào yêu cầu của đề tài từ đó tính toán và lựa chọn các linh kiện và thiết bị phù hợp
Thiết kế hệ thống
3.2.1 Thiết kế sơ đồ khối hệ thống
Hình 3.1: Sơ đồ khối hệ thống
3.2.2 Tính toán và thiết kế
KHỐI NGUỒN KHỐI XỬ LÝ
- Cung cấp năng lượng cho toàn mạch, trong đề tài này sử dụng nguồn: 5VDC cấp cho khối xử lý trung tâm, khối thu thập dữ liệu, khối hiển thị và cả khối truyền dữ liệu
- Do các khối dùng chung 1 nguồn nên khối nguồn cần phải có công suất khá cao, mà khối truyền dữ liệu khi hoạt động cường độ có thể lên đến 2A Vì vậy ở đây chúng ta sẽ dùng 1 Adapter 12V – 2A để giảm áp được lấy từ mạng điện lưới Sau đó tiếp tục sử dụng module hạ áp LM2596 để lần nữa hạ áp xuống 5V để có thể cung cấp cho các khối
*Khối xử lý trung tâm:
- Điều khiển mọi sự hoạt động của hệ thống theo chương trình đã nạp sẵn Nhận dữ liệu từ khối thu thập, xử lý rồi gửi tín hiệu đến khối hiển thị và khối truyền và nhận nếu có yêu cầu
- Sau quá trình tìm hiểu cũng như nhận được sự tư vấn của thầy cô nên nhóm em đã quyết định chọn STM32F103C8T6 làm thiết bị điều khiển trung tâm với các đặc điểm:
Kit có sẵn, đầy đủ chức năng và giá cả khá rẻ phù hợp với sinh viên
Tốc độ nhanh, lõi 32 bit khá mạnh
Công cụ lập trình đa dạng, nhiều phần mềm, thư viện hỗ trợ
Ứng dụng vào nhiều dự án trong thực tế
- Khối xử lý trung tâm sẽ xử lý và gửi dữ liệu đến điện thoại thông qua khối truyền và nhận
- Ở khối truyền dữ liệu chúng em sử dụng module SIM800L Module đáp ứng được nhiều nhu cầu hiện nay như: nhắn tin, nghe, gọi, … Một số thông số cơ bản của module là:
Dòng khi ở chế độ chờ: 10 mA
Dòng khi hoạt động: 100 mA đến 1 A
Hình 3.3: Khối truyền dữ liệu
- Là màn hình LCD, BUZZOR Khối xử lý trung tâm sẽ gửi dữ liệu để hiển thị ra khối hiển thi
*Khối thu thập dữ liệu:
- Thu thập dữ liệu từ các cảm biến nhiệt độ, độ ẩm, cường độ sáng và gió đến khối xử lý trung tâm
55 a Cảm biến nhiệt độ, độ ẩm
- Dùng cảm biến thường dùng đo được nhiệt độ và độ ẩm như DHT11 Cảm biến theo chuẩn truyền One – Wire, gửi và nhận trên 1 dây Các thông số cơ bản của cảm biến là:
Điện áp hoạt động: 3.3V đến 5V (DC)
Dải nhiệt độ đo: 0°C ~ 50°C, sai số ± 2°C
Dải độ ẩm đo: 20% - 90% RH, sai số ± 5% RH
- Tần số lấy mẫu: 1Hz, nghĩa là 1 giây DHT11 lấy mẫu một lần
Hình 3.4: Thu thập nhiệt độ, độ ẩm b Cường độ gió
- Ở phần cường độ gió này sẽ dùng encoder để tính toán tốc độ gió Loại encoder chọn là encoder 30 xung hỗ trợ 2 xung A, B với nguồn cấp 5V thích hợp cho các ứng dụng điều khiển
- Để tính toán được tốc độ từ số xung thu được thì sử dụng theo công thức đó là:
f: Tần số giao động toàn phần thực hiện trong 1s
Hình 3.5: Thu thập tốc độ gió
Hình 3.6: Sơ đồ nguyên lý
Thi công hệ thống
Giới thiệu
- Quá trình thi công để được một hệ thống hoàn chỉnh gồm các bước:
Vẽ sơ đồ mạch in
Kiểm tra và chỉnh sửa mạch
Lắp ráp các mạch lại với nhau, hoàn thiện sản phẩm.
Thi công hệ thống
Hình 4.2: Mạch 3D PCB mặt sau
Hình 4.3: Mạch 3D PCB mặt trước
*Các bước làm mạch in
Bước 1: Photo mạch ra tấm giấy decal mặt bóng
Bước 2: Cắt phíp đồng vừa với mạch in và tiến hành đánh bóng để làm mất lớp bảo vệ trên bề mặt phíp đồng
Bước 3: Đặt mạch in lên phíp đồng và tiến hành là kỹ 5-7 phút
Bước 4: Lột tờ giấy ra và thu được phíp đồng đã được in các đường mạch lên trên
Bước 5: Mang phip đồng đi ngâm vào dung dịch muối để ăn mòn những phần đồng thừa không có đường mạch
Bước 6: Dùng giáp sắt đánh bề mặt cho hết lớp mực
Bước 7: Dùng khoan với các kích thước đầu khoan phù hợp để khoan các lỗ cắm linh kiện sau đó tráng mạch để bảo vệ mạch khỏi bị oxi hóa
*Lắp ráp và kiểm tra mạch
Ta dùng đồng hồ đo thông mạch để kiểm tra xem mạch có bị chập, đường mạch có thông hay không
Ta gắn linh kiện vào và tiến hành hàn Sau đó kiểm tra lại một lần nữa, ta kiểm tra nguồn điện xem đã đúng số volt chưa
Ta nạp chương trình và chạy thử
STT Tên linh kiện Số lượng
Bảng 4.1 Liệt kê linh kiện
- Mô hình được làm bằng bìa cứng
Hình 4.6: Mặt nhìn từ trên xuống
Lập trình hệ thống
4.3.1 Lưu đồ chương trình chính
- Dựa vào lưu đồ ta thấy hoạt động của hệ thống hoạt động rõ ràng Khi bắt đầu quá trình hoạt động thì sẽ thực hiện việc khởi tạo hệ thống Kiểm tra hệ thống có được thiết lập hay chưa Bộ xử lý trung tâm sẽ nhận giá trị của các cảm biến để đưa tới bộ hiển thị Đ
Hình 4.7: Lưu đồ chương trình chính
Bắt đầu Đọc nhiệt độ, độ ẩm
Kiểm tra đủ 10s Đọc xung encoder
Hiển thị thuộc tính lên LCD
Kiểm tra diều kiện và thời gian gửi
- Sau khi bắt đầu chương trình sẽ cấu hình thiết lập cho hệ thống Tiếp theo chương trình thực hiện đọc cảm biến nhiệt độ, độ ẩm và đọc số xung đếm được từ encoder Sau đó thực hiện kiểm tra thời gian đủ 10s thì thực hiện tính tốc độ gió Khi đã có đủ các thông số về môi trường ta tiếp tục kiểm tra điều kiện về môi trường nếu quá các ngưỡng đặt trước ta sẽ bật còi báo động và gửi sms cảnh báo Khi các thông số thỏa mãn yêu cầu ta sẽ gửi dữ liệu sms lên smartphone, sau khi gửi xong ta cũng bật còi thông báo là đã gửi Sau đó chương trình sẽ hiển thị các thông số đọc được lên LCD
4.2.2 Lưu đồ tính vận tốc
Hình 4.8: Lưu đồ chương trình tính vận tốc
Hiển thị tốc độ lên LCD
Bắt đầu Đặt số xung cũ bằng số xung hiện tại Đặt thời gian trước bằng thời gian hiện tại
- STM không có hàm lấy thời cõ sẵn thay vào đó ta dùng một công cụ khác được stm hỗ trợ là RTC Ta đặt cứ sau một khoảng thời gian thì tiến hành tính vận tốc nhờ số xung ta đếm được của encoder trong khoảng thời gian đó Sau khi tính xong tốc độ ta gán lại các giá trị thời gian trước bằng thời gian hiện tại và số xung encoder trước bằng số xung hiện tại để ta có thể tiến hành tính toán ở lần tiếp theo
4.2.3 Lưu đồ chương trình hiển thị LCD
Hình 4.9: Lưu đồ chương trình hiển thị LCD
Chọn ví trí đầu hàng 1
Chọn ví trí thứ 8 hàng 1
Chọn ví trí đầu hàng 2
Hiển thị tốc độ gió Kết thúc
- Nhìn vào lưu đồ, để hiển thị được nội dung LCD trước tiên ta cần tìm vị trí hiển thị và nội dung hiển thị ở vị trí đấy Vào chương trình thì sau khi xác định vị trí cần hiển thị là hàng 1 và nội dung cần hiển thị nội dung 1 thì ta tiếp tục xác định vị trí hàng 2 và nội dung cho hàng 2
Kết quả, Nhận xét, Đánh giá
Kết quả đạt được
-Sau quá trình tìm hiểu nghiên cứu các tài liệu chuyên ngành, tìm hiểu trên các trang mạng internet Nhóm em cũng đã hoàn thành được đề tài đồ án này – đã đọc được các cảm biến DHT11 và encoder để đo nhiệt độ, độ ẩm, tốc độ gió, đã in được ra LCD cũng như gửi vào smartphone thông qua sms
Không chỉ vậy sau đề tài này, nhóm em cũng đã tích lũy được và học hỏi được thêm rất nhiều kiến thức mới, tăng khả năng vận dụng kiến thức vào thực tế và cả kỹ năng tự học tự nghiên cứu
Hình 5.1: Sản phẩm thi công
Kết quả thực nghiệm
Hình 5.2: Thực thi hệ thống
Hình 5.3: Thực thi hệ thống
67 Hình 5.4: Thực thi hệ thống
Hình 5.5: Thực thi hệ thống cảnh báo
Chỉ tiêu LCD SMS Encoder
Giám sát các cảm biến (1 tiếng)
Hoạt động ổn định, nhưng hoạt động ít khi gió nhỏ
Gửi tin nhắn đến điện thoại(10 lần)
Thành công Đánh giá Đạt Đạt Đạt
Bảng 5.1 Số liệu thực nghiệm
Nhận xét và Đánh giá
- Nhìn chung, mô hình hoạt động tương đối ổn định, có thể làm việc liên tục, đạt 100% yêu cầu đề ra ban đầu Nguồn cung cấp 12V trở xuống an toàn cho người sử dụng
- Sản phầm hoạt động phụ thuộc vào mạng điện thoại Vùng phủ sóng càng mạnh thì thiết bị hoạt động càng tốt
- Tuy nhiên, do sự hạn chế về kiến thức cũng như thời gian, nguồn tham khảo chủ yếu là thông qua mạng Internet nên đề tài còn có nhiều sai sót và một số hạn chế:
Hoạt động chưa tốt ở vùng có sóng điện thoại yếu
Tính thẩm mỹ và độ chính xác chưa cao
Chưa có chức năng điều khiển qua sms