BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21 Hình 3.2 Sơ đồ khối hệ thống thiết bị thực tế
Chức năng từng khối:
• Khối nguồn: cung cấp nguồn cho toàn bộ hoạt động của hệ thống bao gồm: khối xử lý trung tâm, khối giao tiếp wifi, khối hiển thị, khối cảm biến, khối relay và khối chấp hành.
• Khối xử lý trung tâm: Thu thập dữ liệu từ khối thu thập, khối hiển thị, khối
giao tiếp wifi sau đó xử lý và điều khiển khối hiển thị, khối relay.
• Khối giao tiếp wifi: Để giao tiếp giữa khối xử lý trung tâm và khối webserver,
đây là khối trung gian để nhận và gửi dữ liệu điều khiển từ web để điều khiển các thiết bị trong mơ hình.
• Khối webserver: Xây dựng giao diện web để hiển thị, lưu trữ dữ liệu, đồng thời cho phép người dùng thao tác, điều khiển gián tiếp hệ thống thơng qua wifi.
BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH 22
• Khối hiển thị: Khối xử lý trung tâm sẽ gửi dữ liệu để hiển thị ra khối hiển thị
giúp người dùng quan sát theo dõi các thơng số của mơi trường.
• Khối thu thập: Bao gồm các thiết bị và cảm biến có nhiệm vụ thu thập dữ liệu
của mơi trường trong mơ hình gửi cho khối xử lý trung tâm để dựa vào đó để điều khiển giám sát mơi trường của mơ hình.
• Khối relay: Đóng ngắt tiếp điểm theo sự điều khiển ngõ ra của khối xử lý trung
tâm để điều khiển thiết bị. Cách li giữa mạch công suất và mạch điều khiển.
• Khối chấp hành: Gồm các thiết bị nhận sự điều khiển của khối xử lý trung tâm
thông qua khối relay để điều chỉnh các thông số của mơi trường trong mơ hình.
3.2.2 Tính tốn và thiết kế mạch
➢ Khối xử lý trung tâm
Khối xử lý trung tâm: Được xem là phần quan trọng nhất của hệ thống. Khối có chức năng tiếp nhận xử lý mọi tín hiệu ngõ vào thu được từ khối thu thập, các tín hiệu điều khiển và truyền nhận dữ liệu từ web để xử lý điều khiển thiết bị của khối chấp hành thông qua khối relay và đưa ra khối hiển thị để người dùng theo dõi. Toàn bộ hoạt động điều khiển của hệ thống được xử lý thông qua khối xử lý trung tâm này.
Với các yêu cầu trên, hiện nay có rất nhiều sự lựa chọn ở nhiều phân khúc khác nhau như các dòng PLC của Siemens, Panasonic, … hay các dòng vi điều khiển họ Pic, các dòng vi điều khiển ARM, các dòng kit Arduino, … Tuy nhiên với yêu cầu đáp ứng nhanh, chính xác với các yêu cầu đặt ra mà giá cả hợp lý nhóm quyết định sử dụng ARM STM32F103C8T6 cho khối xử lý trung tâm.
Vì ARM STM32F103C8T6 sử dụng bộ xử lý ARM-Cotex-M3 32 bit, tốc độ tối đa là 72Mhz. Trong ARM STM32F103C8T6 có 48 chân I/O, sử dụng thạch anh ngoài từ 4Mhz → 20Mhz, thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40Khz và sử dụng thạch anh ngoài 32.768khz cho RTC, 1 cổng mini USB dùng để cấp nguồn, nạp cũng như debug, bộ nhớ flash 64KB, SRAM 20KB, 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ, DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do khơng có sự can thiệp quá sâu của CPU, 7 timer,... .
ARM STM32F103C8T6 chứa tất cả mọi thứ cần thiết để tạo thành khối xử lý trung tâm với đầy đủ các port để có thể xử lý và điều khiển nhiều chức năng một cách chính xác và hiệu quả.
BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH 23 Hình 3.3 Khối xử lý trung tâm sử dụng ARM STM32F103C8T6
Các thơng số kỹ thuật của ARM STM32F103C8T6:
• Nguồn cấp cho KIT: 3.6 - 5 VDC
• Bộ nhớ EEPROM: AT24C04 (512 Byte) giao tiếp i2C
• Thạch anh ngoại: 8MHz + 32,768KHz
• Nút nhấn: PinC9 + Reset
• LED: báo nguồn
• LED: PC13
• I/O: 48 chân
• Trang bị cổng USB Type A.
• Cổng nạp kiểu SWD (sử dụng mạch nạp ST-Link V2 để nạp code vào chip)
• Các chân Port IO đều được đưa ra ngồi thơng qua header. ➢ Khối giao tiếp Wifi
Yêu cầu khối giao tiếp Wifi: Bản thân ARM STM32F103C8T6 không được hỗ trợ kết nối mạng cũng như giao tiếp mạng. Vì vậy yêu cầu đặt ra là phải có một khối trung gian để giúp ARM STM32F103C8T6 có thể giao tiếp được với Internet, làm cầu nối để nhận dữ liệu từ khối xử lý trung tâm đưa lên website và ngược lại từ website đưa về ARM STM32F103C8T6.
Từ đó nhận thấy hiện nay mạch Wifi ESP8266 rất phổ biến và được ứng dụng rộng rãi, bản thân dịng này có rất nhiều phiên bản từ ESP8266 V1 đến ESP8266 V12, các dịng ESP8266 tích hợp hẳn vào board Arduino, ESP8266 NODE MCU. Ở đây nhóm sử dụng ESP8266 NODE MCU vì đây là dịng sản phẩm có kích thước nhỏ
BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH 24
gọn, dễ dàng sử dụng, giá rẻ, có cổng micro USB để nạp chương trình và cấp nguồn nên khơng cần mạch nạp trung gian.
Hình 3.4 ESP8266 NODEMCU
ESP8266 là dạng vi điều khiển tích hợp Wifi (Wifi SoC) được phát triển bởi Espressif Systems, một nhà sản xuất Trung Quốc. Với vi điều khiển và Wifi tích hợp, ESP8266 cho phép lập trình viên có thể thực hiện vơ số tác vụ TCP/IP đơn giản để thực hiện vô số các ứng dụng khác nhau, đặt biệt là ứng dụng IOT. Tuy nhiên, vào thời điểm ra mắt năm 2014, hầu như chỉ có tài liệu bằng tiếng Trung Quốc nên ESP8266 chưa được phổ biến như hiện nay.
Module ESP-12 kết hợp với firmware ESP8266 trên Arduino và thiết kế phần cứng giao tiếp tiêu chuẩn đã tạo nên NodeMCU, loại kit phát triển ESP8266 phổ biến nhất trong thời điểm hiện tại. Với cách sử dụng kết nối dễ dàng, có thể lập trình, nạp chương trình trực tiếp trên phần mềm Arduino, đồng thời tương thích với các bộ thư viện Arduino có sẵn, NodeMCU là sự lựa chọn hàng đầu.
NODEMCU có khả năng như một modem wifi:
• Có thể quét và kết nối đến một mạng wifi bất kỳ (Wifi Client) để thực hiện các tác vụ như lưu trữ, truy cập dữ liệu từ server.
• Tạo điểm truy cập wifi (Wifi Access Point) cho phép các thiết bị khác kết nối, giao tiếp và điều khiển.
• Là một server để xử lý dữ liệu từ các thiết bị sử dụng Internet khác.
Các thông số kỹ thuật của NODEMCU ESP8266:
• IC chính: ESP8266 wifi SoC, phiên bản firmware: NodeMCU Lua
BỘ MÔN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH 25
• GPIO tương thích hồn tồn với firmware Node MCU.
• Cấp nguồn: 5V-DC MicroUSB hoặc Vin.
• GPIO giao tiếp mức 3.3VDC, tích hợp Led báo trạng thái, nút Reset, Flash.
• Tương thích hồn tồn với trình biên dịch Arduino. Cách thức giao tiếp của NODEMCU và ARM STM32F103C8T6:
Dây TX ARM STM32F103C8T6 sẽ được nối với RX của NODEMCU và ngược lại, RX của ARM STM32F103C8T6 sẽ được nối với TX của NODEMCU, và các chân GND của ARM STM32F103C8T6 và NODEMCU phải được nối với nhau. Khi có tín hiệu được gửi từ ARM STM32F103C8T6 thông qua chân TX trên ARM STM32F103C8T6, dữ liệu này sẽ được đưa vào chân RX của NODEMCU để lưu trữ và xử lý, ngược lại khi có tín hiệu gửi từ chân TX của NODEMCU thì dữ liệu gửi đi này sẽ được đưa vào chân RX của ARM STM32F103C8T6 để lưu trữ và xử lý, quá trình truyền nhận dữ liệu này sẽ diễn ra liên tục.
Trong mơ hình ARM STM32F103C8T6 và NODEMCU được cấp nguồn vào các chân Vin để đảm bảo tính ổn địch của hệ thống.
Cách nối dây cho NODEMCU vào ARM STM32F103C8T6:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26
➢ Giới thiệu MQTT
MQTT là giao thức gọn nhẹ được thiết kế chủ yếu để kết nối các thiết bị bị hạn chế nguồn trên các mạng băng thơng thấp. Mặc dù nó đã tồn tại trong hơn một thập kỷ nhưng chỉ khi có sự ra đời của M2M (máy để truyền thơng máy) và Internet of Things (IoT) mới làm cho nó trở thành một giao thức phổ biến.
Những nhà nghiên cứu muốn xây dựng các ý tưởng IoT cần tìm hiểu về giao thức này bởi lẽ nó sẽ nhanh chóng trở thành giao thức được ưu tiên nhất để kết nối các thiết bị với đám mây. Các nền tảng đám mây của các doanh nghiệp như Amazon Web Services, Microsoft Azure và IBM Watson đều giới thiệu IoT PaaS của họ thông qua MQTT.
Nguồn gốc của MQTT
MQTT (Message Queuing Telemetry Transport) là một giao thức truyền thơng
điệp (message) theo mơ hình publish/subscribe (xuất bản – theo dõi), sử dụng băng thơng thấp, độ tin cậy cao và có khả năng hoạt động trong điều kiện đường truyền không ổn định.
MQTT được tạo ra từ năm 1999 bởi hai kỹ sư - Andy Stanford-Clark (IBM) và
Arlen Nipper (Eurotech) khi họ phải phát minh ra một giao thức mới để kết nối các đường ống dẫn dầu trên các mạng vệ tinh không đáng tin cậy.
Năm 2011, IBM và Eurotech đã tặng MQTT cho dự án Eclipse được đề xuất có tên là Paho. Trong năm 2013, nó đã được đệ trình lên OASIS để chuẩn hóa. Phiên bản mới nhất của đặc tả giao thức 3.11 đã trở thành một tiêu chuẩn OASIS.
Các thuật ngữ
Các nhà khoa học đã quen thuộc với phần mềm MOM hiện có. Sự khác biệt cơ bản giữa việc thực hiện MQTT và MOM là việc các thông điệp được lưu trữ và phân phối. Không giống như MOM, MQTT khơng có nghĩa là xử lý các tin nhắn bền và liên tục, nó khơng thể được xem xét để triển khai mẫu lưu trữ và chuyển tiếp.
MQTT sử dụng mẫu pub/sub để kết nối các bên với nhau. MQTT làm điều đó
bằng cách tách người gửi (nhà xuất bản) với người nhận (người đăng ký). Nhà xuất bản gửi tin nhắn đến một chủ đề trung tâm, cái mà có nhiều người đăng ký đang chờ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27
nhận tin nhắn. Nhà xuất bản và người đăng ký tự chủ, có nghĩa là họ khơng cần biết sự hiện diện của nhau.
Một số thuật ngữ:
Client: Bất kỳ nhà xuất bản hoặc người đăng ký nào kết nối với nhà môi giới
tập trung qua mạng đều được coi là khách hàng. Điều quan trọng cần lưu ý là có các máy chủ và máy khách trong MQTT. Cả nhà xuất bản và người đăng ký đều được gọi là khách hàng vì họ kết nối với dịch vụ tập trung, khách hàng có thể liên tục hoặc tạm thời. Khách hàng liên tục duy trì một phiên với nhà mơi giới trong khi khách hàng tạm thời không được nhà môi giới theo dõi. Khách hàng thường kết nối với nhà mơi giới thơng qua thư viện và SDK. Có hơn một tá thư viện có sẵn cho C, C ++, Go, Java, C #, PHP, Python, Node.js và Arduino.
Broker: Người môi giới là phần mềm nhận tất cả các tin nhắn từ các khách hàng
xuất bản và gửi chúng đến các khách hàng đăng ký. Nó giữ kết nối với các khách hàng liên tục. Tùy thuộc vào người triển khai để quyết định cách tạo lớp mơi giới có thể mở rộng. Một số triển khai thương mại của các nhà môi giới MQTT bao gồm HiveMQ, Xively, AWS IoT và Loop.
Topic: Một chủ đề trong MQTT là điểm cuối mà khách hàng kết nối. Nó hoạt
động như nơi phân phối trung tâm để xuất bản và đăng ký tin nhắn. Trong MQTT, một chủ đề là một vị trí nổi tiếng cho nhà xuất bản và người đăng ký. Nó được tạo ra khi chúng ta thiết lập kết nối với nhà môi giới. Chủ đề là các chuỗi phân cấp đơn giản, được mã hóa bằng UTF-8, được phân cách bằng dấu gạch chéo. Người đăng ký có thể chọn đăng ký một chủ đề cụ thể hoặc tất cả các chủ đề phụ thông qua các ký tự đại diện.
Connection: MQTT có thể được sử dụng bởi các máy khách dựa trên TCP/IP.
Cổng tiêu chuẩn được giới thiệu bởi các công ty môi giới năm 1883, không phải là một cổng an tồn. Những nhà mơi giới hỗ trợ TLS / SSL thường sử dụng cổng 8883. Để liên lạc an toàn, khách hàng và nhà môi giới dựa vào chứng chỉ kỹ thuật số. AWS IoT là một trong những triển khai an toàn của MQTT, yêu cầu khách hàng sử dụng chứng chỉ X.509.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28
Hình 3.6 Mơ tả chức năng của MQTT Broker
➢ Khối hiển thị
Yêu cầu khối hiển thị: Khối này sẽ là cơng cụ giúp người dùng có thể giao tiếp, nắm bắt, giám sát hoạt động của tồn bộ hệ thống để từ đó có những tùy chỉnh, cài đặt thích hợp cho tồn bộ hoạt động của hệ thống, đồng thời tận dụng được những gì đã có sẵn từ các dự án trước, tiết kiệm ngõ ra cho ARM STM32F103C8T6.
Với các yêu cầu trên, nhóm lựa chọn màn hình LCD 20x4 để hiển thị do sự thơng dụng của nó, giá thành rẻ và dễ sử dụng.
Hình 3.7 Màn hình LCD 20x4
Hình ảnh thực tế màng hình LCD 20x4 và chi tiết các chân của LCD được biểu hiện lần lượt qua hình 3.11 và bảng 3.1 như sau:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29 Bảng 3.1 Các chân của LCD
➢ Mạch chuyển giao tiếp LCD 20x4
Hình 3.8 Mạch chuyển giao tiếp LCD 20X4
Bằng việc sử dụng giao tiếp I2C, việc điều khiển trực tiếp màn hình được chuyển sang cho IC xử lý nằm trên mạch. Chỉ cần việc gửi mã lệnh cùng nội dung hiển thị, do vậy giúp vi điều khiển có nhiều thời gian xử lý các tiến trình phức tạp khác.
Thứ tự Tên kí hiệu I/O Mô tả
1 Vss Power GND
2 Vdd Power +5V
3 Vo Analog Điều khiển ánh sáng nền
4 RS Input Register Select
5 R/W Input Read/Write
6 E Input Enable( Storage)
7 D0 I/O Data LSB 8 D1 I/O Data 9 D2 I/O Data 10 D3 I/O Data 11 D4 I/O Data 12 D5 I/O Data 13 D6 I/O Data 14 D7 I/O Data MSB 15 A I Nguồn dương 5V 16 K I GND
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30 Hình 3.9 Kết nối LCD với I2C
2 chân SDA và SCL là 2 chân tín hiệu dùng cho giao tiếp I2C. Cấp nguồn vào chân VCC và GND.
Sơ đồ kết nối vi xử lý với I2C
Hình 3.10 Sơ đồ kết nối vi xử lý với I2C.
➢ Nút nhấn Thông số kỹ thuật • Hình dáng: trịn. • Màu sắc: xanh, đỏ. • Số chân: 2 chân cắm. • Nhấn nhả.
BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH 31 Hình 3.11 Nút nhấn 2 chân
➢ Khối thu thập
Cảm biến nhiệt độ, độ ẩm
Yêu cầu của khối cảm biến: khối này sẽ có nhiệm vụ thu thập thơng số của mơi trường để cung cấp cho khối xử lý trung tâm các thơng số để từ đó có những xử lý, điều chỉnh để phù hợp nhất với sự phát triển và sinh trưởng của hoa lan. Từ đó các thơng số mà nhóm quan tâm là nhiệt độ và độ ẩm khơng khí. Ứng với mỗi thơng số có rất nhiều sự lựa chọn trên thị trường với nhiều mức giá cũng như tính năng khác nhau. Ví dụ như với u cầu đo nhiệt độ thì có các lựa chọn như: LM35, DS18B20, DHT11, DHT22, … hay các cảm biến trong công nghiệp với dải nhiệt độ đo rất cao, độ chính xác rất cao.
Với u cầu trên nhóm đã chọn sử dụng cảm biến DHT11 vì giá thành rẻ dễ sử dụng và có tích hợp sẵn chức năng đo độ ẩm khơng khí.
BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH 32 Thơng số kỹ thuật:
• Nguồn 3-5V DC.
• Chuẩn giao tiếp TTL, 1 wire.
• Dịng sử dụng: 2.5mA max (khi truyền dữ liệu).
• Đo tốt độ ẩm 20% -80%RH với sai số ±5%.
• Đo tốt nhiệt độ 0-50oC sai số ±2%.
Cách kết nối cảm biến DHT11 với STM32F103C8T6:
Hình 3.13 Kết nối cảm biến DHT11 với STM32F103C8T6
Để 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 được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt