Thiết bị đầu vào: Cảm biến nhiệt độ - độ ẩm DHT21, cảm biến độ ẩm đất.
Thiết bị đầu ra: thiết bị công suất như động cơ bơm nước, động cơ quạt 12V,
đèn gia nhiệt 220V, thiết bị giao tiếp công suất: transistor, opto, relay. Thiết bị hiển thị: LCD 16x2, Oled.
Thiết bị điều khiển trung tâm: STM32F103RBT6, ESP8266.
Module wifi/RF/3G: Module Esp8266 NodeMCU, Module RF CC1310, Module 800C
Các chuẩn truyền dữ liệu: UART, I2C, SPI.
Thiết bị giao diện điều khiển: Smartphone, Laptop (Giao diện web server) 3.2. GIỚI THIỆU PHẦN CỨNG
3.2.1. Cảm Biến Độ Ẩm, Nhiệt Độ DHT21
25
Cảm biến độ ẩm, nhiệt độ DHT21 AM2301 tích hợp cảm biến độ ẩm điện dung và cảm biến nhiệt độ có độ chính xác cao, đầu ra tín hiệu số có thể kết nối với một Vi điều khiển 8-bit.
Sản phẩm chất lượng cao, đáp ứng nhanh, khả năng chống nhiễu mạnh, giao tiếp duy nhất 1 dây.
Kích thước nhỏ, tiêu thụ điện năng thấp, khoảng cách truyền dẫn tín hiệu lên đến 20m.
Điện năng tiêu thụ cực thấp, khoảng cách truyền dẫn, hiệu chuẩn hoàn toàn tự động, sử dụng các cảm biến độ ẩm điện dung, hồn tồn hốn đổi cho nhau, tiêu chuẩn kỹ thuật số đầu ra duy nhất- một bust, ổn định lâu dài tuyệt vời, thiết bị đo nhiệt độ chính xác cao. Thông số kỹ thuật Áp nguồn: 3.3 - 5V Dòng tiêu thụ: 300 uA Kích thước: 58.8 x 26.7 x 13.8 (mm) Model: AM2301 Độ phân giải chính xác: 0.1 Khoảng đo: 0100% RH
Khoảng đo nhiệt độ: -40 ℃ ~ 80 ℃
Đo lường chính xác độ ẩm: ± 3% RH
Đo lường chính xác nhiệt độ: ± 0.5 ℃
3.2.2. Cảm biến độ ẩm đất
Cảm biến độ ẩm đất, trạng thái đầu ra mức thấp (0V), khi đất thiếu nước đầu ra sẽ là mức cao (5V), độ nhạy cao chúng ta có thể điều chỉnh được bằng biến trở. Cảm biến độ ẩm đất có thể sử dụng tưới hoa tự động khi khơng có người quản lý khu vườn hoặc dùng trong những ứng dụng tương tự như trồng cây. Độ nhạy của
26
cảm biến phát hiện độ ẩm đất có thể tùy chỉnh được. Phần đầu đo được cắm vào đất để phát hiện độ ẩm của đất, khi độ ẩm của đất đạt ngưỡng thiết lập, đầu ra DO sẽ chuyển trạng thái từ mức thấp lên mức cao.
Hình 3.2: Cảm biến độ ẩm đất
Thơng số kỹ thuật
Điện áp hoạt động: 3.3V → 5V.
Kích thước PCB: 3 x 1.6 cm.
Led đỏ báo nguồn vào, led xanh báo độ ẩm.
IC so sánh: LM393.
VCC: 3.3V → 5V.
GND: 0V.
DO: Đầu ra tín hiệu số (0 và 1).
27
3.2.3. Wi-Fi ESP8266
Hình 3.3: Chip Esp8266
Chip ESP8266 được phát triển bởi Espressif để cung cấp giải pháp giao tiếp Wi-Fi cho các thiết bị IoT. Điểm đặc biệt của dịng ESP8266 là nó được tích hợp các mạch RF như balun, antenna switches, TX power amplifier và RX filter ngay bên trong chip với kích thước rất nhỏ chỉ 5x5mm nên các board sử dụng ESP8266 khơng cần kích thước board lớn cũng như khơng cần nhiều linh kiện xung quanh. Ngồi ra, giá thành của ESP8266 cũng rất thấp đủ để hấp dẫn các nhà phát triển sản phẩm IoT.
Cấu trúc phần cứng của dòng chip ESP8266
- Sử dụng 32-bit MCU core có tên là Tensilica.
- Tốc độ system clock có thể set ở 80MHz hoặc 160MHz. - Khơng tích hợp bộ nhớ Flash để lưu chương trình. - Tích hợp 50KB RAM để lưu dữ liệu ứng dụng khi chạy.
- Có đầy đủ các ngoại vi chuẩn để giao tiếp như 17 GPIO, 1 Slave SDIO, 3 SPI, 1 I2C, 1 I2S, 2 UART, 2 PWM.
28
- Hỗ trợ các hoạt động truyền nhận các IP packages ở mức hardware như Acknowledgement, Fragmentation và Defragmentation, Aggregation, Frame, Encapsulation… (và phần stack TCP/IP sẽ được thực hiện trên firmware của ESP8266).
- Do không hỗ trợ bộ nhớ Flash nên các board sử dụng ESP8266 phải gắn thêm chip Flash bên ngoài và thường là Flash SPI để ESP8266 có thể đọc chương trình ứng dụng với chuẩn SDIO hoặc SPI.
Wifi ESP8266 NodeMCU Lua CP2102
Kit thu phát Wifi ESP8266 NodeMCU Lua là kit phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản.
Kit thu phát Wifi ESP8266 NodeMCU Lua được dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên quan đến IoT.
Kit thu phát Wifi ESP8266 NodeMCU Lua sử dụng chip nạp và giao tiếp UART mới và ổn định nhất là CP2102 có khả năng tự nhận Driver trên tất cả các hệ điều hành Window và Linux.
29
Hình 3.4: Wifi ESP8266 NodeMCU Lua CP2102
Thơng số kỹ thuật
IC chính: ESP8266 Wifi SoC.
Phiên bản firmware: NodeMCU Lua
Chip nạp và giao tiếp UART: CP2102.
GPIO tương thích hồn tồn với firmware Node MCU.
Cấp nguồn: 5VDC MicroUSB hoặc Vin.
GIPO giao tiếp mức 3.3VDC
Tích hợp Led báo trạng thái, nút Reset, Flash.
30
Hình 3.5: Sơ đồ chân Wifi ESP8266 NodeMCU Lua CP2102
3.2.4. Board điều kiển trung tâm STM32F103
Dòng ARM Cortex bao gồm 3 cấu hình khác nhau của kiến trúc ARMv7.
Cấu hình A cho các ứng dụng tinh vi, yêu cầu cao chạy trên các hệ điều hành mở và phức tạp như Linux, Android..vv..vv.
Cấu hình R dành cho các hệ thống thời gian thực.
31
Hình 3.6: STM32F103 RBT6
Bộ vi xử lý Cortex-M3 là bộ vi xử lý ARM đầu tiên dựa trên kiến trúc ARMv7- M và được thiết kế đặc biệt để đạt được hiệu suất cao trong các ứng dụng nhúng cần tiết kiệm năng lượng và chi phí. Đẩy tần số hoạt động cao hơn có thể làm tăng hiệu suất nhưng cũng đi kèm với việc tiêu thụ năng lượng nhiều hơn và việc thiết kế cũng phức tạp hơn. Nói cách khác, cùng thực hiện những tác vụ đó nhưng bằng cách nâng cao hiệu quả tính tốn trong khi vẫn hoạt động ở tần số thấp sẽ dẫn đến sự đơn giản hóa trong việc thiết kế và ít tốn năng lượng hơn.
Bộ vi xử lý Cortex-M3 là một bộ vi xử lý 32-bit, với độ rộng của đường dẫn dữ liệu 32 bit, các dải thanh ghi và giao tiếp bộ nhớ. Có 13 thanh ghi đa dụng, hai con trỏ ngăn xếp, một thanh ghi liên kết, một bộ đếm chương trình và một số thanh ghi đặc biệt trong đó có một thanh ghi trạng thái chương trình.
Bộ vi xử lý Cortex-M3 hỗ trợ hai chế độ hoạt động (Thread và Handler) và hai mức truy cập tài nguyên của lõi xử lí (đặc quyền và khơng đặc quyền), tạo điều kiện cho việc cài đặt các hệ thống mở và phức tạp nhưng vẫn bảo mật. Những dịng mã khơng đặc quyền bị giới hạn hoặc không cho phép truy cập vào một số tài nguyên quan trọng (một số lệnh đặc biệt và các vùng nhớ nhất định).
32
Chế độ Thread là chế độ hoạt động tiêu biểu hỗ trợ cả mã đặc quyền và không đặc quyền. Bộ vi xử lý sẽ vào chế độ Handler khi một ngoại lệ (exception) xảy ra và tất cả các mã là đặc quyền trong chế độ này.
Khả năng địa chỉ hóa 2^32=4gb địa chỉ: các địa chỉ định nghĩa sẵn, dành riêng cho mã lệnh (vùng mã lệnh), SRAM (vùng nhớ), bộ nhớ/thiết bị bên ngoài, thiết bị ngoại vi bên trong và bên ngồi. Ngồi ra cịn có một vùng nhớ đặc biệt dành riêng cho nhà cung cấp.
Sự tinh vi
Các ngoại vi của STM32 cũng giống như những vi điều khiển khác, như hai bộ chuyển đổi ADC, timer, 12C, SPI, CAN, USB và RTC. Tuy nhiên, mỗi ngoại vi trên đều có rất nhiều đặc điểm thú vị. Ví dụ như bộ ADC 12-bit có tích hợp một cảm biến nhiệt độ để tự động hiệu chỉnh khi nhiệt độ thay đổi và hỗ trợ nhiều chế độ chuyển đổi.
Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiên với tính năng input capture và tạo dạng sóng ở ngõ ra với output compare), mỗi khối định thời có thể liên kết với các khối định thời khác để tạo một mảng các đinh thời tinh vi hơn.
STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access). Mỗi kênh có thể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanh ghi ngoại vi đi với kích thước từ (word) dữ liệu truyền đi có thể là 8/16 hoặc 32-bit. Mỗi ngoại vi có thể có một bộ điều khiển DMA (DMA Controller) đi kèm dùng để gửi hoặc đòi hỏi dữ liệu như yêu cầu.
STM32 là một vi điều khiển tiêu thụ năng lượng thấp và đạt hiệu suất cao. Nó có thể hoạt động ở điện áp 2V, chạy tần số 72Mhz và dịng tiêu thụ chỉ có 36mA với tất cả các khối bên trong vi điều khiển đều được hoạt động.
Sự an toàn
Ngày nay các ứng dụng hiện đại phải hoạt động trong mơi trường khắt khe, địi hỏi tính an tồn cao, cũng như địi hỏi sức mạnh xử lý và càng nhiều thiết bị tinh vi.
Để đáp ứng các yêu cầu khắt khe đó, STM32 cung cấp một số tính năng phần cứng hỗ trợ các ứng dụng một cách tốt nhất.
Chúng bao gồm một bộ phát hiện điện áp thấp, một hệ thống bảo vệ xung clock và hai bộ Watchdogs.
33
Bộ đầu tiên là một Watchdog cửa sổ (windowed watchdog). Watch này phải được làm tươi trong một khung thời gian xác định. Nếu nhấn nó q sớm, hoặc q muộn, thì Watchdog sẽ kích hoạt.
Bộ thứ hai là một Watchdog độc lập (independent watchdog), có bộ dao động bên ngồi tách biệt với xung nhịp hệ thống chính bên ngồi (thường là thạch anh) và tự động chuyển sang dùng bộ dao động nội RC 8Mhz.
Tính bảo mật
Một trong những yêu cầu khắt khe khác của thiết kế hiện đại là nhu cầu bảo mật mã chương trình để ngăn chặn sao chép trái phép phần mềm.
Bộ nhớ Flash của STM32 có thể được khóa để chống truy cập đọc Flash thông qua cổng Debug. Khi tính năng bảo vệ đọc được kích hoạt, bộ nhớ Flash cũng được bảo vệ chống ghi để ngăn chặn mã không tin cậy được chèn vào bảng vector ngắt. Hơn nữa bảo vệ ghi có thể được cho phép trong phần còn lại của bộ nhớ Flash.
STM32 cũng có một đồng hồ thời gian thực và một khu vực nhỏ dữ liệu trên SRAM được nuôi nhờ nguồn pin.
Khu vực này có một đầu vào chống giả mạo (anti-tamper input), có thể kích hoạt một sự kiện ngắt khi có sự thay đổi trạng thái ở đầu vào này. Ngoài ra một sự kiện chống giả mạo sẽ tự động xóa dữ liệu được lưu trên SRAM được ni bằng pin.
Vì sao phải dùng Cortex-M3 trong đề tài nghiên cứu.
Trong gần một thập kỷ qua, dòng vi xử lý ARM7 đã được sử dụng rộng rãi.
Bộ vi xử lý Cortex-M3 được xây dựng trên nền tảng này nên việc nâng cấp từ dòng ARM7 lên Cortex-M3 là hợp lý là dễ dàng.
Lõi trung tâm làm việc hiệu quả hơn, mơ hình lập trình đơn giản, cách xử lý ngắt nhất định (deterministic interrupt behaviour), việc tích hợp các thiết bị ngoại vi giúp nâng cao hiệu năng làm việc mà vẫn giữ được chi phí thấp.
Thơng số kỹ thuật
Có 1 cổng giao tiếp USB
34
Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành cổng 3v3 qua
IC nguồn và cấp cho vi điều khiển chính
Có tích hợp sẵn thạch anh 8Mhz
Có tích hợp sẵn thạch anh 32Mhz cho các ứng dung RTC
Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART/USART,
USB.
Led trạng thái nguồn Có led PC13
Nút reset
3.2.5. LCD 16x2
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của vi điều khiển. LCD có rất nhiều ưu điểm so với các dạng hiển thị khác:
Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự).
Dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp.
Tốn rất ít tài nguyên hệ thống.
Giá thành rẻ…
Để hiển thị số chai lỗi và số chai đạt yêu cầu nhóm sử dụng LCD 16x2. Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau.
Khi sản xuất LCD, nhà sản xuất đã tích hợp vi điều khiển (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh số thứ tự và đặt tên như hình.
35
Hình 3.7: Hình dạng, sơ đồ chân của LCD 16x2
Bảng 3.1: Chức năng các chân của LCD
Chân Ký hiệu Mô tả
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)
36 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.
7-14 DB0-DB7 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
16 - GND cho đèn nền
Ghi chú: Ở 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.
Các thanh ghi:
Vi xử lý 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).
37
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, 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 (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho MPU (ở chế độ đọc).
Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội bên trong vi xử lý sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM.
Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho MPU.