Chương trình chính

Một phần của tài liệu ĐỀ TÀI THU THẬP DỮ LIỆU DÙNG RASPBERRY PI THÔNG QUA MẠNG INTERNET (Trang 62)

2. Nội dung thực hiện:

4.2.1.7. Chương trình chính

Đồ án tốt nghiệp

Hình 4.21: Lưu đồ chương trình chính trên vi điều khiển PIC 16F887

Bắt đầu chương trình là việc gọi các chương trình con cấu hình cauhinh_timer_counter(), cauhinh_LCD(), và các lệnh cấu hình ADC kênh thứ 0, cauhinh_UART() và các lệnh đặt giá trị ban đầu cho các biến.

Đồ án tốt nghiệp

Tiếp theo là lệnh gán giá trị biến xungtdq=(TMR1H<<8) + TMR1L để đưa giá trị hai thanh ghi vào biến “xungtdq” và thực hiện các lệnh chuyển đổi giá trị nhiệt độ “nd” độ ẩm “da” tốc độ quay “tdq” thành giá trị mã ACSII để có thể hiển thị lcd.

Kiểm tra giá trị của biến “bdn” nếu giá trị thỏa bdn>=10000 thì thực hiện các công việc sau: bdn=bdn-10000, tăng biến “dem” lên 1 đơn vị, lưu xung tốc độ quay vào biến “tdqt”, nhiệt độ đo cũng được gán vào biến “ndt”. Sau đó thực hiện cộng dồn giá trị của biến “tdqt” vào biến “tdqtong”, giá trị biến “ndt” cộng dồn vào biến “ndtong” xung độ ẩm được cộng dồn vào biến “xungdat”. Rồi xóa biến “xungda” về 0, hai thanh ghi TMR1L và TMR1H cũng được đặt về 0.

Nếu giá trị của biến “bdn” không thỏa điều kiện bdn>=10000 thì gọi chương trình con hienthi(), kết thúc chương trình.

Kiểm tra giá trị biến “dem” nếu thỏa dem>=3 thi thực hiện các lệnh sau : chia giá trị các biến “tdqtong”, “ndtong”, “xungdat” cho 3, rồi thực hiện tính toán cho ra giá trị nhiệt độ, độ ẩm và tốc độ quay theo các công thức nêu ở mục 4.1. rồi thực hiện gọi chương trình con truyền dữ liệu truyendulieu_UART() để gữi dữ liệu đến Raspberry pi, và xóa các biến “xungdatong”, “tdqtong”, “ndtong” về giá trị 0 rồi trở lại vòng lập tiếp theo tiếp tục chuyển dữ liệu nd, da, tdq đo được thành mã ASCII và thực hiện các lệnh tiếp sau đó. Nếu giá trị biến “dem” không thỏa dem>=3 thì quay trở lại bước trước đó.

4.2.2 Lưu đồ và giải thuật của chương trình trên Raspberry Pi

Trong đồ án này ngôn ngữ được sử dụng để lập trình trên Raspberry là Python. Sau đây là các chương trình được viết để nhận và xử lý dữ liệu từ PIC 16F887

4.2.2.1 Chương trình nhận dữ liệu UART:

Do PIC 16F887 truyền với tốc độ baud là 9600 baud nên chương trình trên Raspberry cũng phải cấu hình UART với tốc độ tương ứng là 9600 baud. Lệnh cấu hình như sau: serial = Serial (“ttyAMA0”, 9600).

Trước đó đầu chương trình phải khai báo sử dụng thư viện webiopi: import webiopi Dữ liệu được Raspberry nhận liên tục, các dữ liệu nhận được phân biệt bằng 1 byte địa chỉ nhận trước đó, thứ tự nhận dữ liệu như sau:

Byte địa chỉ

tocdo=serial.readByte() Begin serial.available()>0 tt = serial.readByte() tt == 1 tt == 2 tt == 3 Đ S S S Đ Đ Đ

serial.available() >0 serial.available() >0 serial.available() >0

nhietdo=serial.readByte() doam=serial.readByte() Đ Đ Đ S S S End Đồ án tốt nghiệp

Hàm serial.available() để kiểm tra có dữ liệu nhận vào không, hàm serial.readByte()

để đọc dữ liệu vào.

Hình 4.22: Lưu đồ chương trình con nhận dữ liệu trên Raspberry

Ban đầu chương trình kiểm tra có dữ liệu vào không bằng lệnh so sánh serial.available > 0, nếu đúng thì gán biến dulieu bằng giá trị nhận được, sau đó kiểm tra biến dulieu nếu bằng 1 thì tiếp tục kiểm tra lấy dữ liệu kế tiếp và gán vào biến nhietdo; nếu biến dulieu bằng 2 thì kiểm tra lấy dữ liệu tiếp theo và gán giá trị vào biến doam; nếu biến dulieu bằng 3 thì tiếp tục lấy dữ liệu kế tiếp gán vào biến tocdo.

Begin

n < 10 S

Đ A[n] = nhietdo;

T[n] = datetime.datetime.now(); TBA = TBA + A[n];

n = n + 1;

n == 10

S

Đ

Ghi mảng A và T ra file nhietdo.txt; TBA=TBA/10; Ghi giá trị T[9] và TBA ra dulieuthuthap.txt;

n = 0; TBA = 0;

End

Đồ án tốt nghiệp

4.2.2.2 Chương trình ghi dữ liệu nhiệt độ ra file text để cập nhật lên trang web

Khi xây dựng trang web có sử dụng lệnh đọc dữ liệu nhiệt độ, độ ẩm, tốc độ từ các file text nên phải lập trình ghi các dữ liệu ra file text.

Hình 4.23: Lưu đồ chương trình ghi dữ liệu nhiệt độ ra file text

Hàm datetime.datetime.now() để đọc thời gian hệ thống.

Chương trình kiểm tra điều kiện n < 10, sai thì bỏ qua, đúng thì gán phần tử mảng A[n] = nhietdo và gán thời gian hệ thống vào phần tử mảng T[n]; cộng biến TBA (trung bình nhiệt) với A[n]; tăng n thêm 1. Tiếp tục kiểm tra nếu n = 10 thì thi

Chương trình ghi nhiệt độ, độ ẩm, tốc độ tt = 0; n = 0; m = 0; k = 0; TBA = 0; TBB = 0; TBC = 0; Begin

Khai báo thư viện webiopi, datetime; Khởi tạo UART;

Chương trình đọc dữ liệu UART

End

Đồ án tốt nghiệp

hành lệnh ghi giá trị mảng A và T ra file nhietdo.txt; đồng thời ghi giá trị TBA/10 và T[9] ra file dulieuthuthap.txt.

Tương tự các chương trình đọc và ghi dữ liệu độ ẩm vào file doam.txt, dữ liệu tốc độ vào file tocdo.txt cũng thực hiện tương tự như chương trình đọc ghi nhiệt độ.

4.2.2.3 Chương trình chính trên Raspberry Pi

Hình 4.24: Lưu đồ chương trình chính trên Raspberry Pi

Chương trình thực hiện khởi tạo UART, gán các biến tt, n, m, k (m, k tương ứng là biến đếm trong chương trình ghi độ ẩm và tốc độ), TBA, TBB (trung bình độ ẩm), TBC (trung bình tốc độ) bằng 0. Sau đó chạy vòng lặp đọc dữ liệu UART và ghi các dữ liệu nhiệt độ, độ ẩm, tốc độ ra file text. Như vậy dữ liệu sẽ được Raspberry nhận liên tục từ vi điều khiển PIC 16F887 và ghi ra file text để web server cập nhật liên tục.

Đồ án tốt nghiệp

Chương 5

KẾT QUẢ NGHIÊN CỨU 5.1 Kết quả xây dựng web server

Hình 5.1: Hình ảnh thực tế giao diện trang web thu thập dữ liệu

Nhận xét:

- Trang web đơn giản, dễ quan sát.

Đồ án tốt nghiệp

- Tự động tải lại sau mỗi 30 giây giúp cho việc theo dõi dữ liệu liên tục và tiện lợi.

- Trang web được xây dựng theo tỉ lệ 5:6 nên việc quan sát trên màn hình máy tính có tỉ lệ 16:9 không bao quát hết toàn bộ trang web, tuy nhiên với màn hình vuông có tỉ lệ 4:3 thì việc quan sát gần như bao quát toàn bộ trang web.

5.2 Kết quả phần cứng

Hình 5.2: Hình ảnh thực tế phần cứng hệ thống thu thập dữ liệu

Từ hình ảnh có thể thấy là phía ngoài cùng bên trái là mạch động cơ tích hợp encoder với 2 công tắc để bật tắt động cơ và encoder, động cơ hoạt động với nguồn riêng từ 5V đến 31V có thể điều chỉnh điện áp để thay đổi tốc độ, encoder dùng nguồn chung với mạch vi điều và cảm biển (ở giữa), ngoài cùng bên phải là kit Raspberry với 2 chân UART được nối tới 2 jack cắm UART trên mạch vi điều khiển để lấy dữ liệu, dây cáp mạng được nối vào Raspberry để kết nối internet. Sau khi cấp nguồn cho các

Đồ án tốt nghiệp

mạch, bật 2 công tắc để động cơ hoạt động, LCD hiển thị các giá trị nhiệt độ, độ ẩm và tốc độ đo được (như trên hình là Tốc độ 111 vòng/phút, nhiệt độ 28oC, độ ẩm 70%) đồng thời vi điều khiển truyền dữ liệu qua 2 jack cắm UART tới Raspberry để đưa dữ liệu lên web server.

5.3 Kết quả tổng quát hệ thống thu thập dữ liệu

Hình 5.3: Chương trình nhận dữ liệu trên Raspberry

Đồ án tốt nghiệp

Hình 5.4: File text dữ liệu tải về từ web server

Nhận xét:

- Biểu đồ rõ ràng dễ theo dõi.

- File text có dung lượng nhẹ, định dạng dễ quan sát theo từng mốc thời gian. Tốc độ tải file nhanh.

Đồ án tốt nghiệp

Chương 6

KẾT LUẬN, HƯỚNG PHÁT TRIỂN 6.1 Kết luận

Sau khi nghiên cứu và thực hiện đề tài “Thu thập dữ liệu dùng Raspberry Pi qua

mạng Internet”, sinh viên đã thực hiện được những yêu cầu ở đề tài này như sau: • Tìm hiểu về máy tính Raspberry.

• Làm quen với hệ điều hành linux (Raspbian).

• Kỹ năng lập trình ngôn ngữ lập trình mới như Python, Javascript, HTML ngoài ngôn ngữ được học ở trường là C.

• Có được kiến thức cơ bản về máy chủ webserver. • Thiết lập webserver trên máy tính Raspberry. • Thiết kế giao diện web đơn giản.

• Lấy được dữ liệu thu thập về máy tính người sử dụng • Lắp đặt và thiết kế mô hình sản phẩm.

• Thực hiện truyền nhận dữ liệu bằng UART. • Sản phẩm hoạt động ổn định, tiết kiệm điện năng

Trong thời gian cho phép đề tài đã thực hiện xong các yêu cầu đặt ra. Hệ thống hoạt động nhịp nhàng ổn định. Người dùng có thể truy cập từ nhiều thiết bị có kết nối internet như máy tính bàn, laptop, máy tính bảng, điện thoại thông minh…vv. Đa số các thiết bị trên cho khả năng hiển thị dữ liệu tốt.

6.2 Hướng phát triển

Ngoài những kết quả đã đạt được trong đề tài này, sinh viên nghiên cứu hướng phát triển trong tương lai nhằm khắc phục những thiếu sót, cải tiến sản phẩm dựa trên sự hỗ trợ vô cùng lớn từ máy tính nhỏ Raspberry và cộng đồng phát triển. Hướng phát triển trong tương lai:

• Lập trình cho động cơ hoạt động theo mức nhiệt độ và độ ẩm, tắt động cơ khi nhiệt độ quá cao.

• Giá trị đo đạt độ chính xác cao hơn.

• Dựa vào dữ liệu thu thập phân tích hoạt động của động cơ để bảo trì kịp thời, đúng lúc.

• Lập trình đưa ra dữ liệu thu thập dưới dạng file Excel để dễ quan sát và tính toán.

Đồ án tốt nghiệp

• Mở rộng điều khiển các thiết bị từ xa qua web như đèn, quạt, thiết bị làm mát và điều chỉnh độ ẩm cho thích hợp trong môi trường sản xuất…

Đồ án tốt nghiệp

PHỤ LỤC

Tài liệu tham khảo

1. Nguyễn Đình Phú, Giáo trình vi xử lý 2, Đại học Sư Phạm Kỹ Thuật TP.HCM, 2012.

2. Nguyễn Đình Phú – Trương Thị Bích Ngà, Điện tử cơ bản 2, Đại học Sư Phạm Kỹ Thuật TP.HCM, 2007.

3. Giáo trình lập trình C căn bản, Đại học Sư Phạm Kỹ Thuật TP.HCM, 2010. 4. Đậu Trọng Hiển, Giáo trình Lập trình nhúng, Đại học Sư Phạm Kỹ Thuật

TP.HCM, 2013.

5. Nguyễn Việt Hùng – Nguyễn Ngô Lâm – Nguyễn Văn Phúc, Giáo trình kỹ thuật truyền số liệu, Đại học Sư Phạm Kỹ Thuật TP.HCM, 2012.

Một số Website:

- Kit FriendlyARM ARM11 Tiny6410:

http://www.friendlyarm.net/products/tiny6410 - Raspberry Pi https://code.google.com/p/webiopi/wiki/Tutorial_Serial https://code.google.com/p/webiopi/wiki/INSTALL https://www.raspberrypi.org http://www.wikihow.com/Make-a-Raspberry-Pi-Web-Server - Lập trình ngôn ngữ Python https://www.vithon.org https://www.python.org https://docs.python.org/2/tutorial/inputoutput.html - Lập trình web https://www.quantrimang.com.vn https://www.w3schools.com - PIC 16F887 https://www.picvietnam.com

- Datasheet các linh kiện điện tử

https://www.alldatasheet.com

Nội dung đính kèm (DVD)

1. Nội dung:

• Trình bày.

• Tài liệu tham khảo (bao gồm datasheet):  Datasheet PIC16F887.

Đồ án tốt nghiệp  Datasheet LM35.  Datasheet HS1101.  Datasheet IRF540N  Datasheet NE555  Datasheet 1N4728A

• Video kết quả thực hiện đề tài.

2. Mã nguồn:

• Chương trình ứng dụng trên Raspberry và PIC 16F887. • Phần Mềm mikroC (bao gồm các phần mềm hỗ trợ).

3. Sơ đồ mạch:

• Sơ đồ nguyên lý KIT PIC16F887. • Hình ảnh thực tế mô hình thí nghiệm.

Một phần của tài liệu ĐỀ TÀI THU THẬP DỮ LIỆU DÙNG RASPBERRY PI THÔNG QUA MẠNG INTERNET (Trang 62)

Tải bản đầy đủ (DOCX)

(75 trang)
w