4. Nội dung nghiên cứu
2.2. Phương thức truyền dữ liệu
2.2.1. Bộ giao thức TCP/IP
Để các máy máy tính có thể liên lạc với nhau qua mạng, chúng phải sử dụng cùng 1 ngôn ngữ hay còn gọi là 1 giao thức (Protocol). Giao thức là 1 hệ luật
TCP/IP là viết tắt của Transmission Control Protocol (Giao thức Điều Khiển Truyền Thông) / Internet Protocol (Giao thức Internet).
TCP/IP không chỉ gồm 2 giao thức mà thực tế nó là tập hợp của nhiều giao thức. Chúng ta gọi đó là 1 Hệ Giao Thức hay Bộ Giao Thức (Suite Of Protocols).
Để cho các máy tính trao đổi dữ liệu với nhau TCP/IP sử dụng mô hình truyền thông 4 tầng hay còn gọi là Mô Hình DoD (Mô hình của Bộ Quốc Phòng Mỹ). Các tầng trong mô hình này là (Theo thứ tự từ trên xuống):
+ Tầng Ứng Dụng (Application Layer) + Tầng Giao Vận (Transport Layer) + Tầng Liên Mạng (Internet Layer)
+ Tầng Giao Diện Mạng (Network Interface Layer)
Mỗi giao thức của Họ TCP/IP đều thuộc 1 trong các tầng này. Ta sẽ cùng tìm hiểu từng tầng.
Tầng Giao Diện Mạng (Network Interface Layer):
- Tầng Giao Diện Mạng có trách nhiệm đưa dữ liệu tới và nhận dữ liệu từ phương tiện truyền dẫn. Tầng này gồm các thiết bị phần cứng vật lí chẳng hạn như Card Mạng và Cáp Mạng.
- 1 Card Mạng chẳng hạn card Ethernet chứa 1 số HEX 12 kí tự (00-18-37- 03-C0-F4) được gọi là Địa Chỉ MAC (Media Access Control) hay Địa Chỉ Truy Nhập Phương Tiện . MAC đóng vai trò quan trọng trong việc gán địa chỉ và truyền dữ liệu.
- 1 số giao thức tiêu biểu thuộc tầng này gồm : + ATM (Asynchronous Transfer Mode) + Ethernet
+ Token Ring
+ FDDI (Fiber Distributed Data Interface) + Frame Relay
Tầng Liên Mạng (Internet Layer): Nằm bên trên tầng giao diện mạng.
Tầng này có chức năng gán địa chỉ, đóng gói và định tuyến (Route) dữ liệu. 4 giao thức quan trọng nhất trong tầng này gồm:
+ IP (Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích.
+ ARP (Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC.
+ ICMP (Internet Control Message Protocol): Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng.
+ IGMP (Internet Group Management Protocol): Có chức năng điều khiển truyền đa hướng (Multicast)
Tầng Giao Vận (Transport Layer): Có trách nhiệm thiết lập phiên truyền
thông giữa các máy tính và quy định cách truyền dữ liệu. 2 giao thức chính trong tầng này gồm:
+ UDP (User Datagram Protocol): Còn gọi là Giao Thức Gói Người Dùng. UDP cung cấp các kênh truyền thông phi kết nối nên nó không đảm bảo truyền dữ liệu 1 cách tin cậy. Các ứng dụng dùng UDP thường chỉ truyền những gói có kích thước nhỏ, độ tin cậy dữ liệu phụ thuộc vào từng ứng dụng.
+ TCP (Transmission Control Protocol): Ngược lại với UDP, TCP cung cấp các kênh truyền thông hướng kết nối và đảm bảo truyền dữ liệu 1 cách tin cậy. TCP thường truyền các gói tin có kích thước lớn và yêu cầu phía nhận xác nhận về các gói tin đã nhận.
Tầng Ứng Dụng (Application Layer): Gồm nhiều giao thức cung cấp cho
các ứng dụng người dùng. Được sử dụng để định dạng và trao đổi thông tin người dùng. 1 số giao thức thông dụng trong tầng này là:
+ DHCP (Dynamic Host Configuration Protocol): Giao Thức Cấu Hình Trạm Động
+ DNS (Domain Name System): Hệ Thống Tên Miền
+ SNMP (Simple Network Management Protocol): Giao Thức Quản Lý Mạng Đơn Giản
+ FTP (File Transfer Protocol): Giao Thức Truyền Tập Tin
+ TFTP (Trivial File Transfer Protocol): Giao Thức Truyền Tập Tin Bình Thường
+ TELNET
Bảng sau mô tả khái quát về Bộ Giao Thức TCP/IP:
Hình 2.1: Khái quát bộ giáo thức TCP/IP
2.2.2. Phương thức truyền dữ liệu GET và POST trong HTML
Sau khi đã thiết lập được kết nối giữa Client và server thông qua môi trường GPRS, hệ thống cần thực hiện việc truyền và nhận dữ liệu giữa Client và Server. Chúng ta đã biết bộ mã nguồn web sau khi được đưa lên host và đó chính là Server, còn khi chúng ta truy cập sử dụng website thì đây chính là một Client. Khi đăng nhập hay đăng ký tài khoản, hoặc là đăng comment thì dữ liệu sẽ được gửi từ client lên Server. Có 2 cách gửi dữ liệu từ Client lên Server đó là dùng phương thức GET hoặc phương thức POST, cả 2 cách này bản chất lập trình viên mới biết chứ người dùng họ không quan tâm đến nó là cái gì.
Phương thức GET: Phương thức GET là phương thức gửi dữ liệu thông
qua đường dẫn URL nằm trên thanh địa chỉ của Browser. Server sẽ nhận đường dẫn đó và phân tích trả về kết quả cho bạn. Server sẽ phân tích tất cả những thông tin đằng sau dấu hỏi (?) chính là phần dữ liệu mà Client gửi lên. Để truyền nhiều dữ liệu lên Server ta dùng dấu & để phân cách giữa các cặp giá trị. Tất cả các dữ liệu mà Client gửi lên bằng phương thức GET đều được lưu trong một biến toàn cục là biến $_GET, biến này là kiểu mảng kết hợp lưu trữ danh sách dữ liệu từ client gửi lên theo quy luật key => value.
Phương thức POST: Phương thức POST có tính bảo mật hơn vì dữ liệu gửi phải thông qua một form HTML nên nó bị ẩn, nghĩa là chúng ta không thể thấy các giá trị đó được. Với phương thức GET thì dữ liệu được thấy trên URL thì phương thức POST thì hoàn toàn ngược lại, POST sẽ gửi dữ liệu qua một cái form HTML và các giá trị sẽ được định nghĩa trong các input gồm các kiểu (textbox, radio, checkbox, password, textarea, hidden) và được nhận dang thông qua tên (name) của các input đó. Tất cả các dữ liệu gửi bằng phương thức POST đều được lưu trong một biến toàn cục $_POST, vì thế để lấy dữ liệu thì chỉ cần lấy trong biến này.
2.3. Sơ đồ phân cấp chức năng hệ thống 2.3.1. Sơ đồ khối tổng quan hệ thống 2.3.1. Sơ đồ khối tổng quan hệ thống
…
Hình 2.2: Sơ đồ khối hệ thống
Sơ đồ trên miêu tả các chức năng cơ bản của hệ thống giám sát điện năng từ xa. Các hộ dân được lắp đặt công tơ điện tử, kết nối với bộ thu phát dữ liệu. Bộ thu phát dữ liệu này có chức năng thu thập dữ liệu là số liệu từ công tơ điện, rồi xử lý tính toán và gửi dữ liệu lên server qua kết nối GPRS. Server có chức năng tổng hợp dữ liệu gửi lên từ các client, tính toán và lưu vào cơ sở dữ liệu, đồng thời lấy dữ liệu từ cơ sở dữ liệu và hiển thị lên website cho người tiêu dùng biết và lượng điện năng tiêu thụ của mình trong tháng. Người tiêu dùng có thể truy cập vào website của hệ thống để cập nhật thông tin về điện năng tiêu thụ của gia định mình. Đồng thời Server cũng có chức năng gửi thông báo đến người tiêu dùng qua tin nhắn SMS.
Hệ thống được xây dựng trên cơ sở sử dụng phương thức truyền phát dữ
Server CSDL Công tơ điện 1 Công tơ điện 2 Công tơ điện n Website GPRS Người tiêu dùng Bộ thu phát DL 1 Bộ thu phát DL 2 Bộ thu phát DL n GPRS GPRS SMS
truyền qua giao thức TCP/IP. Với cách thức như vậy hệ thống sẽ tiết kiệm được chi phi xây dựng cơ sở hạ tầng, thiết bị nhỏ gọn, dễ lắp đặt. Hứa hẹn một hướng phát triển mới trong ngành điện.
2.3.2. Sơ đồ phân cấp chức năng của hệ thống
Hình 2.3: Sơ đồ tổng quát chức năng hệ thống
Hệ thống có ba chức năng có bản như trên sơ đồ:
Quản lý người dùng: cung cấp user name, password cho người dùng, cho
phép người dùng truy cập vào website để theo dõi thông tin về điện năng tiêu thụ. Cho phép thêm, sửa hoặc xóa người dùng.
Thu thập và xử lý dữ liệu:
- Hệ thông liên tục cập nhật dữ liệu được gửi lên từ client và cập nhật vào
cơ sở dữ liệu.
- Truy vấn cơ sở dữ liệu và hiển thị lên website cho người dùng theo dõi.
Gửi thông báo cước: là chức năng gửi thông tin về cước tiền điện hàng
tháng cho người tiêu dùng. Thông báo được gửi dưới dạng tin nhắn SMS đến số điện thoại di động mà người dùng đã đăng ký.
2.4. Thiết kế bảng cơ sở dữ liệu 2.4.1. Bảng người dùng: user 2.4.1. Bảng người dùng: user
Hình 2.4: Bảng người dùng
Hệ thống giám sát điện năng
Thu thập và xử
lý dữ liệu Gửi thông báo cước
Quản lý người dùng
Bảng này lưu trữ thông tin về UserName/Password của người dùng do người quản trị hệ thống cung cấp. Bao gồm các trường như sau:
- id: mã của người sử dụng, dạng text 10 ký tự.
- ten: tên đăng nhập hệ thống của người dùng, dạng text 15 ký tự.
- matkhau: mật khẩu sử dụng, dạng text 15 ký tự.
- ngaythang: Ngày bắt đầu đăng ký sử dụng hệ thống, dạng date
2.4.2. Bảng thông tin khách hàng: thong_tin_KH
Hình 2.5: Bảng thông tin khách hàng
Bảng này lưu trữ thông tin của khách hàng, bao gồm các trường: - id: mã của khách hàng sử dụng, dạng text 10 ký tự.
- hoten: Họ và tên của khách hàng, dạng text 50 ký tự.
- sdt: lưu trữ số điện thoại của khách hàng, dạng text 15 ký tự.
- diachi: lưu trữ thông tin về địa chỉ của khách hàng, dạng text 50 ký tự. Dưới đây là ví dụ về bảng lưu trữ thông tin khách hàng
Hình 2.6: Bảng danh sách khách hàng
2.4.3. Bảng tiêu thụ điện năng dien_nang
Bảng thông tin tiêu thụ điện năng hàng tháng của khách hàng bao gồm các trường sau:
- jan, feb, ..., dec: lưu trữ số lượng điện năng từ tháng 1 đến tháng 12 trong năm của khách hàng, dạng text 15 ký tự.
Hình 2.7: Bảng điện năng
Dưới đây là ví dụ về bảng thông tin sử dụng điện năng của các khách hàng theo các tháng từ tháng 1 đến tháng 12.
2.4.4. Bảng tiền điện sử dụng tien_dien
Hình 2.9: Bảng tiền điện
Bảng thông tin tiền điện năng hàng tháng của khách hàng bao gồm các trường sau:
- id: Mã của khách hàng, dạng text 10 ký tự.
- jan, feb, ..., dec: lưu trữ tiền điện khách hàng phải trả từ tháng 1 đến tháng 12 trong năm của khách hàng, dạng text 15 ký tự.
Dưới đây là ví dụ về bảng giá cước tiền điện hàng tháng của khách hàng
Hình 2.10: Bảng giá cước tiền điện hàng tháng
Việc xây dựng cơ sở dữ liệu khách hàng một cách khoa học sẽ tạo điều kiện thuận lợi cho việc quản lý khách hàng, thu thập dữ liệu và hiển thị các thông tin trên
Chương 3
XÂY DỰNG HỆ THỐNG
Dựa vào những phân tích cụ thể đã nêu ở phần chương 2, trong chương 3 này đi vào tập trung vào xây dựng hệ thống thực tế để mô phỏng cho các chức năng của một hệ thống M2M thu nhỏ. Chương này sẽ tập trung nghiên cứu, lắp ráp các thiết bị phần cứng và viết chương trình cho hệ thống đảm bảo các chức năng theo yêu cầu của một hệ thống M2M.
3.1. Xây dựng phần cứng
3.1.1. Công tơ điện tích hợp mạch đếm xung
Với việc chế tạo một mô hình M2M giám sát, thu thập điện năng. Lựa chọn công tơ điện một pha là loại cơ, có thông số là 900 vòng/1kWh. Tức là đĩa quay quay 900 vòng sẽ được một số điện. Đây là loại đồng hồ khá phổ biến trên thị trường hiện nay, giá thành hợp lý, độ nhạy và độ chính xác cao, dễ dàng quan sát. Tuy nhiên với việc sử dụng loại công tơ này sẽ gặp khó khăn trong việc lấy dữ liệu từ công tơ ra để đưa về bộ mạch xử lý tính toán. Hiện nay ngành điện lực cũng đã sản xuất ra loại công tơ điện tử khá tiện lợi cho việc đọc dữ liệu ra để xử lý, tuy nhiên loại công tơ này còn khá mới mẻ và chưa phổ biến trong việc sử dụng để đo đếm điện năng.
Để khắc phục những nhược điểm của công tơ cơ, tôi đã lợi dụng cơ cấu hoạt động của đĩa quay bên trong công tơ để đo đếm và đọc số liệu về mạch xử lý tín hiệu.
Hình 3.1: Công tơ điện một pha
Cụ thể là sử dụng thêm một mạch đếm xung có nhiệm vụ đếm số vòng quay của đĩa quay. Mạch đếm xung sử dụng cảm biến thu phát hồng ngoại gắn bên trong công tơ.
Mỗi khi đĩa quay của công tơ quay được 1 vòng thì mạch cảm biến sẽ tạo ra 1 xung tín hiệu và đưa về mạch thu thập dữ liệu.
Như vậy, khi nhận được 900 xung tức là công tơ đo được 1kWh (hay 1 số điện).
Với cách làm như vậy, chúng ta hoàn toàn có thể có được một bộ công tơ đo điện năng một pha đồng thời có thể lấy được tín hiệu điện về các mạch xử lý tín hiệu giống công tơ điện tử. Cách làm này vừa đơn giản, hiệu quả mà lại tiết kiệm được chi phí.
3.1.2. Bộ thu phát dữ liệu
3.1.2.1. Mạch điều khiển arduino
Tín hiệu số được lấy từ công tơ và đưa về mạch thu thập dữ liệu. Lựa chọn mạch Arduino với vi điều khiển Atmega328. Đây là một mạch điều khiển hoạt động khá ổn định, nhiều tính năng vượt trội như: xử lý tín hiệu số, tương tự, khả năng hỗ trợ lập trình cao với ngôn ngữ lập trình C.
Hình 3.3: Mạch thu thập dữ liệu
Trong phần nghiên cứu của mình, tôi sử dụng bo mạch Arduino Uno R3. Đây là mạch điều khiển dựa trên ATmega328P. Nó có 14 chân kỹ thuật số đầu vào /
đầu ra (trong đó 6 chân có thể được sử dụng như là kết quả đầu ra PWM), 6 đầu vào analog, 16 MHz, kết nối USB, một jack cắm điện, một ICSP và một nút reset. Nó có chứa tất cả mọi thứ cần thiết để hỗ trợ các vi điều khiển và chỉ cần kết nối nó với máy tính bằng cáp USB hoặc điện nó với một bộ chuyển đổi AC-to-DC hoặc pin để hoạt động.
Thông số kĩ thuật
Vi điều khiển: ATmega328P
Điện áp hoạt động: 5V
Điện áp đầu vào (đề nghị): 7-12V
Điện áp đầu vào (giới hạn): 6-20V
Kỹ thuật số I / O Pins: 14 (trong đó có 6 cung cấp PWM)
PWM kỹ thuật số I / O Pins: 6
Pins Input Analog: 6
DC hiện tại mỗi I / O Pin 20 mA
DC hiện tại cho 3.3V Pin 50 mA
Bộ nhớ flash: 32 KB (ATmega328P) 0,5 KB sử dụng bởi bộ nạp khởi
động SRAM: 2 KB (ATmega328P) EEPROM: 1 KB (ATmega328P) Tốc độ đồng hồ: 16 MHz Chiều dài: 68,6 mm Chiều rộngL: 53,4 mm Cân nặng: 25 g
Đầu vào và đầu ra
Các chân I/O số của mạch đều nó hoạt động ở 5 volts. Mỗi pin có thể cung cấp hoặc nhận được 20 mA như tình trạng hoạt động đề nghị và có một điện trở kéo lên (ngắt kết nối theo mặc định) của 20-50k ohm. Dòng tối ddacos thể đưa vào các chân này là 40mA.
Nối tiếp: 0 (RX) và 1 (TX). Được sử dụng để nhận (RX) và truyền dữ liệu nối tiếp (TX) TTL. Các chân này được kết nối với các chân tương ứng của ATmega8U2 USB-to-TT.
Ngắt ngoài: 2 và 3. Các chân này có thể được cấu hình để kích hoạt một
ngắt ngoài bằng một giá trị mức thấp theo sường xuống.
PWM: 3, 5, 6, 9, 10, và 11. Cung cấp đầu ra, điều chế độ rộng xung PWM 8-bit.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Các chân này hỗ trợ SPI
giao tiếp bằng cách sử dụng thư viện SPI.
LED: 13. Có một đèn LED điều khiển bằng kỹ thuật số pin 13. Khi pin là
giá trị cao, đèn LED được bật.
TWI: A4 hoặc SDA pin và A5 hoặc pin SCL. Hỗ trợ giao tiếp TWI sử
dụng thư viện Wire.
Lập trình cho mạch:
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng. Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một biến thể của C/C++. Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++. Gọi chung là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino