Thiết kế hộp điều khiển giám sát thiết bị thông minh Thiết kế hộp điều khiển giám sát thiết bị thông minh Thiết kế hộp điều khiển giám sát thiết bị thông minh Thiết kế hộp điều khiển giám sát thiết bị thông minh Thiết kế hộp điều khiển giám sát thiết bị thông minh Thiết kế hộp điều khiển giám sát thiết bị thông minh Thiết kế hộp điều khiển giám sát thiết bị thông minh
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM
THIẾT KẾ HỘP ĐIỀU KHIỂN GIÁM SÁT
THIẾT BỊ THÔNG MINH
Trang 2Vì thế mà em đã thực hiện đề tài: “THIẾT KẾ HỘP ĐIỀU KHIỂN GIÁM SÁT THIẾT
BỊ THÔNG MINH” nhằm mục đích kiểm soát được sự hoạt động của các thiết bị điện đang tiêu thụ tại nhà
1.1.2 Tính cấp thiết của đề tài
Theo tính toán, mức lãng phí điện năng của Việt Nam cao gấp 1,5 - 6 lần so với thế giới, còn tổng hợp của Bộ Công Thương cho thấy mức lãng phí của điện của ta rất cao, từ
10 - 50% Hiện tượng lãng phí trong sử dụng điện có thể bắt gặp ở bất cứ đâu, từ hộ gia đình cho đến các cơ quan và doanh nghiệp
Nhiều người cứ nghĩ tắt đi một bóng đèn, một tấm biển quảng cáo hay chiếc quạt cũng chẳng tiết kiệm được điện năng là bao nhiêu Tuy nhiên, theo các tính toán, chỉ cần tắt một bóng đèn, rút các thiết bị điện khi không sử dụng, hay dùng các thiết bị trong gia đình đúng cách có thể tiết kiệm điện từ 10-15% hàng tháng
Chính vì vậy hệ thống này có các mục hẹn cài đặt tắt giờ hoặc là giám sát, điều khiển sự hoạt động các thiết bị dễ dàng trên màn hình LCD hoặc ứng dụng trên điện thoại Android
1.2 Mục tiêu đề tài
Mục tiêu đề tài lần này của em là: Thực hiện một thiết bị giám sát sự hoạt động, điều khiển những đồ dùng điện trong nhà, đọc được nhiệt độ tại phòng tự động bật quạt hay điều hòa trong phòng Hê thống còn có thể cài đặt được các giá trị hẹn bật/tắt thiết bị trong nhà qua một màn hình cảm ứng Ngoài ra hê thống còn có thể kiểm soát ở bất cứ nơi nào thông qua mạng bằng ứng dụng trên điện thoại
1.3 Giới hạn đề tài
Đề tài lần này của em là một đề tài không quá mới, tuy nhiên bước đầu làm quen với vi điều khiển ARM để giao tiếp với các module thiết bị và tài liệu hạn chế rất nhiều đa phần là bằng tiếng Anh Vì vậy sai sót là vẫn còn, kính mong thầy/cô bỏ qua những sai sót lần này
Trang 3Chương 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
2.1 Giới thiệu về phần mềm lập trình Keil uVison5
Phần mềm lập trình cho vi điều khiển ARM có nhiều chương trình khác nhau, sau đây em sẽ sử dụng một chương trình thông dụng và dễ dàng tiếp cận là Keil uVision5 Để
sử dụng thì đầu tiên phải cài đặt chương trình Keil uVision5, nên làm theo hướng dẫn của phần mềm
Biểu tượng Keil uVision5 sau khi cài xong xuất hiện trên desktop như hình sau:
Hình 2.1 Biểu tượng phần mềm Keil uVision5
- Hướng dẫn sử dụng phần mềm Keil uVision5:
+ Biên soạn chương trình cơ bản
Bước 1: Nên tạo một thư mục để lưu và quản lý các chương trình lập trình cho vi
điều khiển
Bước 2: Khởi tạo chương trình Keil uVision5, giao diện xuất hiện như hình 2.2
Thông thường thì phần mềm sẽ khởi tạo và mở một chương trình soạn thảo sau cùng hoặc mở một ứng dụng có trong phần mềm
Hình 2.2 Giao diện phần mềm Keil uVision5
Trang 4Bước 3: Tải thư viện cho dòng chip ARM đang sử dụng, dòng chip em đang sử dụng
là STM32F407VET6, tiến hành tải thư viện theo thứ tự 1,2,3 trong hình 2.3, trong thứ tự
4 thì nếu chưa có thì bấm Install, nếu có rồi thì bấm Update kiểm tra cập nhật
Hình 2.3: Tải thư viện cho phần mềm
Bước 4: Tiến hành chọn biểu tượng open, rồi mục “Project” và chọn “New uVision
Project” theo thứ tự 1,2 trong hình 2.3
Hình 2.3 Tạo project mới
Trang 5Chọn thư chứa file nguồn và đặt tên Project theo ý muốn như hình 2.4 làm theo thứ
tự 1 và 2
Hình 2.4 Đặt tên thư mục mới
Trang 6Bước 5: Chọn dòng chip sử dụng, làm theo thứ tự 1,2,3,4,5 trong hình 2.5
Hình 2.5: Chọn chip sử dụng
Giao diện sau xuất hiện như hình 2.6 và trong file chưa có gì
Hình 2.6: Màn hình soạn thảo
Trang 7Bước 6: Tạo file main.c cho chương trình chính của vi điều khiển bằng tổ hợp phím
“Ctrl+N”, nhấn tiếp tổ hợp phím “Ctrl+S” để lưu file Nhớ lưu chung địa chỉ của Project
và đặt đúng tên là main.c Ngôn ngữ KeilC uVision có phân biệt chữ hoa hay chữ thường Tuy nhiên phần mềm này có hỗ trợ gợi ý khi viết câu lệnh
Sau đó tiến hành viết code và biên dịch bằng cách nhấn phím F9 Nếu không sai cú pháp thì chương trình sẽ hiện thông báo biên dịch thành công như hình 2.7
Hình 2.7 Thông báo biên dịch thành công Bước 7: Tiến hành nạp code bằng cách nhấn F8 hoặc Load như hình để nạp code
vào chip Sau đó tiến hành kiểm tra trên Board
Hình 2.8 Nạp code vào board
Lưu ý: Phần cứng và phần mềm nên đồng bộ với nhau, nếu phần cứng kết nối với Port nào thì phần mềm phải khởi tạo chính Port đó Nếu không thì mạch sẽ không hoạt động như mong muốn
2.2 Giới thiệu phần mềm lập trình Arduino IDE
Trong hệ thống thiết kế này, để có thể giao tiếp qua Wifi thì nhóm em sử dụng Module ESP8266 Để viết code cho Module này nhóm em sử dụng phần mềm lập trình là Arduino IDE Để sử dụng phần mềm này thì chúng ta nên làm theo các hướng dẫn của phần mềm
Biểu tượng Arduino IDE sau khi cài xong xuất hiện trên desktop như hình sau:
Hình 2.9 Phần mềm lập trình Arduino IDE
Trang 8Bước 1: Nên tạo một thư mục để lưu và quản lý các chương trình lập trình cho vi
điều khiển
Bước 2: Khởi tạo chương trình Keil uVision5, giao diện xuất hiện như hình 2.10
Thông thường thì phần mềm sẽ khởi tạo và mở một chương trình soạn thảo sau cùng
hoặc mở một ứng dụng có trong phần mềm
Hình 2.10 Giao diện phần mềm Arduino IDE
Bước 3: Tải thư viện cho dòng chip ESP đang sử dụng, dòng chip em đang sử dụng
là ESP8266, tiến hành tải thư viện bằng cách nhấn tổ hợp phím “Ctrl+Shift+I” và làm theo
các thứ tự như hình 2.11 để tiến hành cài đặt thư viện cho ESP8266
+ Ở thứ tự thứ 1: ta nhập “ESP8266” vào textbox để tìm kiếm thư viện về ESP8266
+ Ở thứ tự thứ 2: ta tiến hành “Install” cài đặt thư viện ở hình 2.11 do em đã cài
trước nên không hiện
Trang 9Hình 2.11 Cài đặt thư viện cho ESP8266 Bước 4: Tiến hành nhấn tổ hợp phím “Ctrl+N” để tạo một Project mới
Hình 2.12 Hình ảnh sau khi tạo Project mới
Trang 10Bước 5: Chọn dòng chip sử dụng, làm theo thứ tự 1,2 như trong hình 2.13
Hình 2.13 Chọn Board cần sử dụng
Bước 6: Sau khi viết code xong tiến hành nạp code bằng cách nhấn vào phím Upload như trong hình 2.14
Hình 2.14 Nạp và kiểm tra lỗi
2.3 Giới thiệu phần mềm lập trình Android Studio
Đây là phần mềm lập trình ứng dụng cho các điện thoại chạy hệ điều hành Android Trong phần thiết kế lần này, nhóm em có sử dụng điện thoại để giao tiếp chung với hệ thống Vì thế để sử dụng phần mềm này thì ta nên làm theo các bước như bên dưới Biểu tượng Arduino IDE sau khi cài xong xuất hiện trên desktop như hình sau:
Hình 2.15 Phần mềm lập trình Android Studio
Trang 11Bước 1: Tiến hành mở và tạo một Project mới theo thứ tự 1, 2, 3 như trong hình 2.16
Hình 2.16 Tiến hành tạo Project mới
Sau khi ta làm xong các bước trên, màn hình sẽ hiện ra một cửa sổ mới như hình
2.17 ta tiến hành nhấn vào “Empty Activity” và ấn “Next”
Trang 12Hình 2.17 Chọn kiểu Project
Cửa sổ mới tiếp tục hiện ra, ở cửa sổ này ta đặt tên cho Project mới và chọn đường
dẫn cho Project Bên cạnh đó, phần mềm sẽ hỏi ta Minimum SDK tức là giá trị nhỏ nhất
cho phiên bản Version Android mà Project này hỗ trợ Ta nên chọn SDK 15 cho phù hợp
với đại đa số điện thoại ngày nay
Trang 13Hình 2.18 Đặt tên cho Project, chọn đường dẫn, SDK MINIMUM
Tiến hành liên kết với Google Firebase, để hiểu rõ hơn về Google Firebase em sẽ trình bày chi tiết ở Chương 3 Mục này chỉ trình bày về cách liên kết với Google Firebase với phần mềm Android Studio
Sau khi làm xong theo hình 2.18, cửa sổ lập trình Project mới sẽ hiện ra Tại đây
để liên kết với Google Firebase ta làm theo các bước sau:
+ Đầu tiên ta vào mục Tools\ Firebase từ cửa sổ lập trình Project mới của ta đang mở
Trang 14Hình 2.19 Cách liên kết với Google Firebase
Cửa sổ Firebase mở ra bên phải ứng dụng của ta Từ đây ta có thể làm theo các hướng dẫn của Google Các hàm mẫu và chỉ dẫn cũng khá chi tiết
Nếu muốn dùng Firebase tạo cơ sở dữ liệu thời gian thực, ta nhấn vào mục
Realtime Database
Hình 2.20 Cài đặt các yêu cầu liên kết
Trang 15Sau đó ta nhấn tiếp vào mục Save and retrieve data Ta lần lượt thực hiện các bước tiếp theo
Hình 2.21 Lưu dữ liệu liên kết
Sau khi thực hiện xong việc liên kế ứng dụng với Firebase thì bạn sẽ thấy thông báo như sau tại cửa sổ Firebase trong ứng dụng
Hình 2.22 Thông báo liên kết thành công
Trang 162.4 Lý thuyết về vi điều khiển STM32
Giới thiệu
Cấu trúc ARM (viết tắt của Acorn RISC Machine) là một cấu trúc vi xử lý 32 bit
kiểu RISC (thuộc kiến trúc Hardvard, có tập lệnh rút gọn) được sử dụng rộng rãi trong các thiết kế nhúng Do có đặc điểm tiết kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động, mà với các sản phẩm này việc tiêu tán công suất thấp
là một mục tiêu thiết kế quang trọng hang đầu
Ngày nay ARM được ứng dụng rộng rãi trên mọi lĩnh vực của đời sống: Robot, máy tính, điện thoại, xe hơi, máy giặt…
Hình 2.23 Một số ứng dụng của ARM
Trang 17 Lịch sử phát triển ARM
Việc thiết kế ARM được bắt đầu tử năm 1983 trong một dự án phát triển của công ty
máy tính Acorn Nhóm thiết kế hoàn thành việc phát triển mẫu gọi là ARM1 năm 1985, và vào năm sau, nhóm hoàn thành sản phẩm gọi là ARM2 với thiết kế đơn giản chỉ gồm 30.000 transistor ARM2 có tuyến dữ liệu 32 bit, không gian địa chỉ 26 bit tức cho phép quản lý đến 64 Mbyte địa chỉ và 16 thanh ghi 32 bit Thế hệ sau, ARM3 được tạo ra với
4KB cache và có chức năng được cải thiện nhiều lần hơn
Vào những năm cuối thập niên 80, hang máy tính Apple Computer và hang VLSI Technology bắt đầu hợp tác với Acorn để phát triển các thế hệ lõi ARM mới Kết quả sự hợp tác này là ARM6 Mẫu đầu tiên được công bố vào năm 1982 và Apple đã sử dụng bộ
vi xử lý ARM 610 dựa trên ARM6 làm cơ sở dữ liệu cho PDA hiệu Apple Newton Vào năm 1994, Acorn dùng ARM 610 làm CPU trong các máy tính RiscPC của họ
Trải qua nhiều thế hệ nhưng lõi ARM gần như không thay đổi kích thước ARM2 có 30.000 transistor nhưng đến ARM6 cũng chỉ có 35.000 transistor Ý tưởng của nhà sản xuất lõi ARM là sao cho người sử dụng có thể ghép lõi ARM với một số bộ phận tùy ý nào
đó để tạo ra một CPU hoàn chỉnh, một loại CPU mà có thể tạo ra trên những nhà máy sản xuất bán dẫn cũ và tiếp tục tạo ra sản phẩm với nhiều chức năng nhưng giá thành thấp
Bảng 2.1 Các dòng phát triển của ARM
Kiến trúc Số Bit Tên lõi
ARMv1 32/26 ARM1
ARMv2 32/26 ARM2, ARM3
ARMv3 32 AMR6, ARM7
ARMv4 32 ARM8
ARMv4T 32 ARM7TDMI, ARM9TDMI
ARMv5 32 ARM7EJ, ARM9E, ARM10E
ARMv6 32 ARM11
ARMv6-M 32 ARM Cortex-M0, ARM Cortex-M0+, ARM Cortex-M1 ARMv7-M 32 ARM Cortex-M3
ARMv7E-M 32 ARM Cortex-M4
ARMv7-R 32 ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7 ARMv7-A 32 ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A* ARMv8-A 64/32 ARM Cortrx-A53, ARM Cortex-Ạ57
Trang 18 Kiến trúc của ARM
Hình 2.24 Kiến trúc của ARM
Giới thiệu về AMR Cortex
Lõi Cortex được thừa kế từ thế hệ lõi ARM11 về trước đó Để phù hợp với nhu cầu sử dụng, ARM được chia làm 3 dòng:
- Cortex-A: dành cho hệ điều hành và các ứng dụng phức tạp Hỗ trợ tập lệnh ARM, thumb, và thumb2
Trang 19- Cortex-R: Bộ xử lý dành cho hệ thống đòi hỏi khắc khe và đáp ứng thời gian thực
Hỗ trợ tập lệnh ARM, thumb, và thumb2
- Cortex-M: Bộ xử lý dành cho dòng vi điều khiển, được thiết kế tối ưu về giá thành Hỗ trợ tập lệnh Thumb-2
Ở trong hệ thống được thiết kế lần này thì nhóm em sử dụng các chip thuộc lõi M3
là STM32F103 và M4 là STM32F407
Giới thiệu về ARM Cortex- M3
ARM Cortex-M3 được thiết kế đặc biệt để nâng cao hiệu suất hoạt động của hệ thống kết hợp tiêu thụ năng lượng thấp ARM Cortex-M3 được thiết kế trên nền kiến trúc mới do đó chi phí sản xuất đủ thấp để cạnh tranh với các dòng 8 và 16 Bit truyền thống Chúng có các đặc điểm sau:
- Là vi xử lý hiệu suất cao 32 bit thuộc kiến trúc Armv7-M, đường ống 3 tầng
- Kiến trúc Harvard cung cấp các bus dữ liệu và lệnh riêng biệt
- Hỗ trợ tập lệnh Thumb-2
- Khối quản lý vecto ngắt lồng nhau (NVIC- Nested vectored Interupt Controller) cho phép rút ngắt thời gian đáp ứng yêu cầu ngắt
- Bảo vệ bộ nhớ với 8 vùng MPU với các vùng phụ và vùng nền
- BUS interface 3x AMBA AHB-Lite Interface
- Hỗ trợ chuẩn nạp JTAG và serial wire
Hình 2.25 Kiến trúc ARM Cortex-M3
Trang 20 Giới thiệu về ARM Cortex- M4
Bộ xử lý Cortex-M4 được phát triển để giải quyết các thị trường điều khiển tín hiệu số đòi hỏi sự kết hợp hiệu quả, dễ sử dụng của khả năng điều khiển và xử lý tín hiệu Sự kết hợp giữa chức năng xử lý tín hiệu hiệu quả cao với các lợi ích năng lượng thấp, chi phí thấp và dễ sử dụng của bộ vi xử lý Cortex-M đáp ứng nhiều thị trường Những ngành này bao gồm điều khiển động cơ, ô tô, quản lý năng lượng, âm thanh nhúng và thị trường tự động hóa công nghiệp Chúng có các đặc điểm sau:
- Là vi xử lý hiệu suất cao 32 bit thuộc kiến trúc Armv7E-M, đường ống 3 tầng
- Kiến trúc Harvard cung cấp các bus dữ liệu và lệnh riêng biệt (2-12 chu kỳ)
- Hỗ trợ tập lệnh Thumb-2
- Khối quản lý vecto ngắt lồng nhau (NVIC- Nested vectored Interupt Controller) cho phép rút ngắt thời gian đáp ứng yêu cầu ngắt
- Bảo vệ bộ nhớ với 8 vùng MPU với các vùng phụ và vùng nền
- BUS interface 3x AMBA AHB-Lite Interface
- Hỗ trợ chuẩn nạp JTAG và serial wire
- Hỗ trợ DSP (Digital Signal Process) giải quyết các vấn đề về tín hiệu số
Hình 2.26 Kiến trúc ARM Cortex-M4
Trang 212.4.2 Vi điều khiển ARM STM32F103C8T6
2.4.2.1 Giới thiệu
Đây là vi điều khiển hiệu năng cao được sản xuất dựa trên lõi Arm Cortex- M3 STM32F103C8T6 thuộc dòng vi điều khiển F1 và là vi điều khiển 32 Bit Là một vi điều khiển giá rẻ trên thị trường, mạch nạp và công cụ lập trình đa dạng
Cấu hình của vi điều khiển trên như sau:
- Bộ nhớ FLASH 64Kbytes và bộ nhớ SRAM lên đến 20Kbytes
- Số I/O là 37 và các ngoại vi được kết nối với cầu APB
- Điện áp hoạt động 2.0V đến 3.6V
- Sử dụng thạch anh ngoài từ 4Mhz đến 20Mhz
- Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz
- Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC
- Có 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ
+ Khoảng giá trị chuyển đổi từ 0 – 3.6V
+ Lấy mẫu nhiều kênh hoặc 1 kênh
+ Có cảm biến nhiệt độ nội
- Có 7 kênh điều khiển DMA, hỗ trợ DMA cho ADC, I2C, SPI, UART
- Số TIMER: 7
+ 3 TIMER 16 bit hỗ trợ các mode IC/OC/PWM
+ 1 TIMER 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time
+ 2 watdog timer dùng để bảo vệ và kiểm tra lỗi
+ 1 SysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay…
- Hỗ trợ 9 kênh giao tiếp bao gồm:
+ 2 bộ I2C(SMBus/PMBus)
+ 3 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control) + 2 SPIs (18 Mbit/s)
+ 1 bộ CAN interface (2.0B Active)
+ USB 2.0 full-speed interface
- Có kiểm tra lỗi CRC và 96 bit ID
Trang 22Hình 2.27 Các chân và ngoại vi trên STM32F103C8T6
Hình 2.28 Ảnh thực tế Board 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
Trang 232.4.2.2 Cơ sở lý thuyết về chuẩn giao tiếp SPI của STM32F103C8T6
SPI (Serial Peripheral Interface) là chuẩn giao tiếp đồng bộ 4 dây do hãng Motorola phát triển Chuẩn giao tiếp này bao gồm 1 thiết bị Master, 1 hay nhiều thiết bị Slave Tốc
độ giao tiếp SPI cũng là khá cao nên nó được dùng nhiều trong các ứng dụng như:
module SIM, module Btultooth, Module wifi, IC nhớ, thẻ nhớ, IC RFID, IC chuyển đổi ADC, đọc tín hiệu vị trí từ IC màn hình, IC dịch bit…
Các dây của chuẩn giao tiếp SPI bao gồm:
SCK: chân này là chân clock, duy trì xung nhịp cho mọi hoạt động truyền nhận Nhờ có chân này nên SPI là chuẩn giao tiếp đồng bộ và data trong quá trình truyền nhận cũng ít sai sót hơn nhờ sự đồng bộ này Xung nhịp chỉ do thiết bị Master phát
cho phép có được giao tiếp(enable) với IC đó hay không
Hình 2.29: Các chân giao tiếp của chuẩn SPI
STM32f103C8T6 có 2 cổng giao tiếp SPI tốc độ tối đa lên đến 18Mbs/s với nhiều mode cấu hình Một số tính năng chính của giao tiếp SPI trên MCU này là:
Truyền đồng bộ full –duplex trên 3 dây chính, half – duplex, chỉ truyền, chỉ nhận
Cấu hình bằng phần mềm là master hay Slave
Khung truyền cấu hình là 8 hay 16 bit
Cấu hình data truyền theo kiểu MSB hoặc LSB đi trước
Có các cờ báo lỗi, tính năng CRC, cờ ngắt
Có hỗ trợ DMA (bộ truyền tốc độ cao)
Trang 242.4.3 Vi điều khiển ARM STM32F407ZGT6
Đây là vi điều khiển hiệu năng cao được sản xuất dựa trên lõi Arm Cortex- M4 STM32F407ZGT6 thuộc dòng vi điều khiển F4 và là vi điều khiển 32 Bit Là một vi điều
hỗ trợ tốt về xử lý tín hiệu số
Cấu hình của vi điều khiển trên như sau:
- Bộ nhớ FLASH 1 Mbyte và bộ nhớ SRAM lên đến 192+4 Kbytes
- Số I/O là 140 và các ngoại vi được kết nối với cầu APB
+ Với 136 I/Os tốc độ cao 84Mhz
+ 138 I/Os hoạt động điện áp 5V
- Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC
- Có điện áp nguồn cung cấp cho RTC
- Có 2 bộ ADC 12 bit
- + Khoảng giá trị chuyển đổi từ 0 – 3.6V
+ Lấy mẫu nhiều kênh hoặc 1 kênh
+ Có cảm biến nhiệt độ nội
- Có 16 kênh điều khiển DMA, hỗ trợ DMA cho ADC, I2C, SPI, UART
- Số TIMER: 17
+ 12 TIMER 16 bit hỗ trợ các mode IC/OC/PWM
+ 2 TIMER 32 bit
+ 2 watdog timer dùng để bảo vệ và kiểm tra lỗi
+ 1 SysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay…
- Hỗ trợ 9 kênh giao tiếp bao gồm:
+ 3 bộ I2C(SMBus/PMBus)
+ 4 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control) + 3 SPIs (42 Mbit/s)
+ 2 bộ CAN interface (2.0B Active)
+ USB 2.0 full-speed interface
+ Giao tiếp SDIO
- Các chuẩn nạp Serial wire debug (SWD) & giao tiếp JTAG
Trang 25- Có kiểm tra lỗi CRC và 96 bit ID
Hình 2.30 Các chân và ngoại vi trên STM32F103C8T6
Trang 27• Dãi độ ẩm hoạt động: 20% - 90% RH, sai số ±5%RH
• Khoảng cách truyển tối đa: 20m
• Tần số lấy mẫu tối đa: 1 Hz
• Chuẩn giao tiếp 1-wire
• Kích thước 15x12x5.5mm
2.4.4.2 Nguyên lý hoạt động
Để đo độ ẩm, người ta sử dụng thành phần cảm biến độ ẩm có hai điện cực
với chất giữ ẩm giữa chúng Vì vậy, khi độ ẩm thay đổi, độ dẫn của chất nền thay
đổi hoặc điện trở giữa các điện cực này thay đổi Sự thay đổi điện trở này được đo
và xử lý bởi IC khiến cho vi điều khiển luôn sẵn sàng để đọc
Để đo nhiệt độ, các cảm biến này sử dụng cảm biến nhiệt độ nhiệt điện trở Một
nhiệt điện trở thực sự là một điện trở thay đổi điện trở của nó với sự thay đổi của
nhiệt độ
Ta cần thực hiện 2 bước
- Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại
- Khi đã giao tiếp được 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.33 Thời gian gửi tín hiệu của DHT
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 Trong Code mình để 25ms 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 20-40us, DHT11 sẽ kéo chân DATA xuống thấp Nếu >40us mà chân
DATA ko được kéo xuống thấp nghĩa là ko giao tiếp được với DHT11
Trang 28 Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong 80us 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 ko 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 DHT
+ Bước 2: Đọc tín hiệu 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 độ (TC)
Byte 4: giá trị phần thập phân của nhiệt độ (TC)
Byte 5: kiểm tra tổng
Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) 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
Đọc dữ liệu:
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
Bit 0:
Hình 2.34 Thời gian tín hiệu gửi mức 0
Trang 29 Bit 1
Hình 2.35 Thời gian tín hiệu gửi mức 1
2.4.5.1 Đặc tính kỹ thuật
Module có thể sử dụng 125 kênh khác nhau cho phép có một mạng gồm 125 modem hoạt động độc lập ở một nơi Mỗi kênh có thể có tối đa 6 địa chỉ hoặc mỗi đơn vị
có thể liên lạc với tối đa 6 đơn vị khác cùng một lúc
NRF24L01 module thu phát không dây 2.4GHz cho bạn giải pháp kết nối không dây nhanh và chi phí thấp
NRF24L01 có các đặc tính kỹ thuật như sau:
- Điện áp làm việc: 1.9V - 3.6V
- Đầu vào dữ liệu tương thích với điện áp 5V (5V tolerance)
- Có thể lựa chọn 3 mức tốc độ kết nối là 2Mbit/s, 1Mbit/s và 250Kbit/s Tốc độ càng thấp, thì khả năng thu phát càng xa, bù lại dữ liệu truyền / giây bị giảm
xuống
- Số kênh kết nối: 6 kênh
- Phương thức giao tiếp : SPI
- Tiêu thụ dòng thấp Tại tốc độ truyền 2Mbit/s, dòng tối đa là 12mA Chế độ nghỉ, module 2.4Ghz tiêu thụ 32uA
- Nhiệt độ hoạt động: -40 đến 80 độ C
- Thạch anh ngoại: 16 Mhz
Trang 31Bảng 2.2 Tên và chức năng các chân của NRF24L01
STT
chân
1 CE Digital Input Kích hoạt chế độ hoạt động TX và RX
2 CSN Digital Input Chip Select SPI
3 SCK Digital Input Xung Clock SPI
4 MOSI Digital Input Dữ liệu tớ ngõ vào SPI
5 MISO Digital Output Dữ liệu tớ ngõ ra SPI
6 IRQ Digital Output Chân ngắt
7 VDD Power Chân nguồn (+1.9V đến +3.6V)
9 XC2 Analog Output Thạch anh chân 2
10 XC1 Analog Input Thạch anh chân 1
11 VDD_PA Power Output Nguồn ra 1.8V
15 VDD Power Chân nguồn (+1.9V đến +3.6V)
16 IREF Analog Input Dòng so sánh ngưỡng
18 VDD Power Chân nguồn (+1.9V đến +3.6V)
Trang 32𝐴𝐷𝐷𝑎 7:4 0000 R/W Thời gian truyền lại khi lỗi
ARC 3:0 0011 R/W Đếm số lần thực hiện truyền lại
‘0000’ truyền lại ngắt kết nối
‘0001’ Lần thứ 1 truyền lại lỗi của AA …
‘1111’ Lần thứ 15 truyền lại lỗi của AA
Không xài 7 0 R/W Chỉ cho ‘0’ được phép RF_CH 6:0 0000010 R/W Chọn tần số trong băng thông
trong khoảng từ 2.4Ghz đến 2.4Ghz + 125 Mhz
06 RF_SETUP Cài đặt thanh ghi RF
CONT_WAVE 7 0 R/W Cho bit 7 lên 1 cho phép truyền
liên tục Không dùng 6 0 R/W Chỉ ‘0’ được cho phép RF_DR_LOW 5 0 R/W Cài đặt tốc độ truyền gói tin là
250Kbps PLL_LOCK 4 0 R/W Dùng để kiểm tra RF_DR_HIGH 3 1 R/W ‘00’ 1Mbps
7E7E7
R/W Set địa chỉ nhận thứ 0
MAX: 5 byte MIN: 3 byte