Bảng nội dung các byte

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu chế tạo hệ đo nồng độ hạt bụi PM2 5 và PM10 trong không khí dựa trên arduino (Trang 33 - 41)

Số byte Tên Nội dung

0 Message Header AA

1 Commander No CO

2 DATA1 PM2.5 low byte

3 DATA2 PM2.5 high byte

4 DATA3 PM10 low byte

5 DATA4 PM10 high byte

6 DATA5 ID byte 1

7 DATA6 ID byte 2

8 Check - sum Check - sum

9 Message tail AB

Check-sum: Check-sum=DATA1+DATA2+...+DATA6

PM2.5 (μg /m3) = ((PM2.5 high byte ×256) + PM2.5 low byte)/10 (2.1) PM10 (μg /m3) = ((PM10 high byte×256) + PM10 low byte)/10 (2.2)

2.1.3. LCD I2C

2.1.3.1. Giới thiệu LCD HD44780

LCD (Liquid Crystal Display) là thiết bị hiển thị được sử dụng trong rất nhiều các ứng dụng của VĐK. 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ự đồ họa) được mã hóa thơng qua bảng mã ASCII, dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ … Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp đ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. [18]

2.1.3.2. Giao tiếp I2C

I2C, viết tắt của từ tiếng Anh “Inter-Integrated Circuit”, là một loại bus nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips. Hiện nay, giao tiếp I2C đã được chuẩn hóa và được dùng rộng rãi trong các module truyền tín hiệu nối tiếp của vi mạch tích hợp ngày nay. [3]

I2C sử dụng hai đường truyền tín hiệu:

Một đường xung nhịp đồng hồ(SCL) chỉ do Master phát. Một đường dữ liệu (SDA) theo 2 hướng.

Bản chất của I2C là dữ liệu trên đường SDA chỉ được ghi nhận ở sườn lên của chân CLK. Do vậy xung clock có thể khơng cần chính xác tốc độ. Do đó ta có thể sử dụng 2 chân I/O để làm chân giao tiếp I2C mềm mà không nhất thiết cần một chân CLK tạo xung với tốc độ chính xác.

Module giao tiếp I2C điều khiển LCD:

Thơng thường, để sử dụng màn hình LCD, ta sẽ phải mất rất nhiều chân trên Arduino để điều khiển. Tuy nhiên khi kết hợp module I2C với LCD ta chỉ tốn 2 dây để điều khiển màn hình thay vì 8 dây như cách thông thường. Sau khi kết nối module này với LCD, thiết bị chỉ còn 4 chân gồm VCC, GND, SDA, SCL.

VCC: Kết nối với nguồn 5V GND: Chân nối đất

SDA: Chân truyền dữ liệu SCL: Chân truyền xung clock.

Khi kết nối LCD I2C với Arduino Uno, chân SDA nối với chân A4 còn chân SCL nối với chân A5.

2.1.4. ESP 8266

2.1.4.1.Giới thiệu về ESP 8266

ESP8266 là chíp tích hợp wifi 2.4GHz, được đóng gói và sản xuất bởi AI- Thinker đưa ra thị trường dưới dạng module ESP-01. Nó có khả năng kết nối Internet qua mạng Wi-Fi một cách nhanh chóng và sử dụng rất ít linh kiện đi kèm với giá thành rẻ so với các card mạng wifi khác. [16]

2.1.4.2. ESP-01

Hình 2.4. Hình ảnh module ESP – 01 sử dụng chíp ESP 8266

Module ESP-01 là một module sử dụng chíp ESP8266. Module này có kích thước nhỏ, gọn sử dụng nguồn 3,3V và kết nối với vi điều khiển qua giao tiếp UART. Module được tích hợp sẵn angten và sử dụng tập lệnh AT riêng để truyền dữ liệu.

ESP-01 được sử dụng nhiều trong các hệ thống Internet kết nối vạn vật và là một cầu nối quan trọng giữa vi điều khiển với các website hoặc với các thiết bị khác thông qua đường truyền wifi.[17]

2.1.5. Website: https// thingspeak.com

2.1.5.1. Giới thiệu về website: https//thingspeak.com

ThingSpeak là một website hỗ trợ cho lĩnh vực IoT của MathWorks và Simulink. ThingSpeak cho phép tổng hợp, trực quan hóa và phân tích dữ liệu trực tiếp trên cloud.Ngồi ra, ThingSpeak cịn cung cấp khả năng hiển thị trực quan dữ liệu. Nó cho phép viết thêm code bằng ngơn ngữ lập trình MATLAB ngay trên website, do đó có thể thực hiện phân tích trực tuyến và xử lý dữ liệu nhận được trên Thingspeak. ThingSpeak giúp các hệ thống IoT đặc biệt là những hệ thống yêu cầu phân tích dữ liệu được xử lý dễ dàng và trực tiếp trên cloud nên người sử dụng có thể xây dựng các hệ thống IoT mà không cần thiết lập máy chủ hoặc phát triển phần mềm web. Đối với các hệ thống IoT cỡ vừa và nhỏ, ThingSpeak cho phép lưu trữ dữ liệu trên website trong thời gian dài.

Hình 2.5. Hình ảnh đồ thị trên website https://thingspeak.com

Với ThingSpeak, dữ liệu được lưu trữ trong các kênh. Mỗi kênh chứa 8 trường dữ liệu. Ta có thể tạo bao nhiêu kênh tùy thích cho ứng dụng của mình.

Ngồi ra, ta cũng có thể sử dụng bất kỳ thiết bị kết nối Internet nào với ThingSpeak như Arduino, ESP-8266 và Raspberry Pi.

ThingSpeak lưu trữ tất cả thông tin được gửi lên trên đám mây, do đó ta có thể dễ dàng truy cập dữ liệu của mình để phân tích trực tuyến hoặc ngoại tuyến. Dữ

liệu cá nhân được bảo vệ bằng khóa API. Khi đăng nhập vào tài khoản ThingSpeak của mình, ta có thể tải xuống dữ liệu được lưu trữ.

ThingSpeak tự động lập biểu đồ dữ liệu được gửi lên, do đó có thể theo dõi từ xa mọi thiết bị và xem dữ liệu từ bất kỳ thiết bị nào có trình duyệt web. Thingspeak cịn cho phép chia sẻ dữ liệu với một tài khoản khác. Ngồi ra, ta có thể sử dụng ThingSpeak để quản lý dữ liệu của mình và tạo giao diện người dùng.

Với bản trả phí của ThingSpeak, dữ liệu được gửi đến ThingSpeak với tốc độ một giây một lần thay vì 15 giây một lần như bản miễn phí. Với bản trả phí này, ta khơng chỉ theo dõi được các dữ liệu theo thời gian thực mà còn cho phép điều khiển các thiết bị từ đám mây.

Với công cụ MATLAB được tích hợp vào ThingSpeak, ta có thể thực hiện hiệu chỉnh, phát triển phân tích và chuyển đổi dữ liệu của mình. [14]

2.1.5.2. Các kênh của thingspeak

Các kênh lưu trữ tất cả dữ liệu mà ứng dụng ThingSpeak thu thập. Mỗi kênh bao gồm tám trường có thể chứa bất kỳ loại dữ liệu nào, cộng với ba trường cho dữ liệu vị trí và một trường cho dữ liệu trạng thái. Khi thu thập dữ liệu trong một kênh, ta có thể sử dụng các ứng dụng ThingSpeak để phân tích và hiển thị dữ liệu.

Để chuyển đổi và xử lý dữ liệu trong một kênh của Thingspeak ta sử dụng Thingspeak Apps.

Một số cài đặt quan trọng trong Thingspeak Channel: Channel name: Tên kênh.

Description: Nhập mô tả cho kênh

Field: Các trường trong mỗi kênh của thingspeak, có tất cả 8 trường. Show channel Location: hiển thị tọa độ, vị trí bao gồm:

Latitude: Vĩ độ Longitude: Kinh độ Elevation: Độ cao

Sử dụng Api_key trong thingspeak:

Để đưa dữ liệu lên thingspeak ta sử dụng câu lệnh sau:

https://api.thingspeak.com/update?api_key=api_keywritechannel&field1=Da ta1&field2=Data2...

Trong đó api_keywritechannel là api_key write của kênh thingspeak khi bạn tạo mới. Với mỗi một kênh được tạo sẽ được cấp một api_key write và ta dùng api_key này để đưa dữ kiệu từ thiết bị lên thingspeak.

Data1, Data2… là các giá trị ta cần đưa vào các trường trên kênh của thingspeak.

Để lấy dữ liệu từ các kênh của thingspeak ta dùng câu lệnh sau: https://api.thingspeak.com/channels/api_key/feeds.json?results=Data Với Data là dữ liệu được đưa lên thingspeak.

Khi đó dữ liệu sẽ hiển thị trên một trang khác của thingspeak bao gồm: id kênh, tên kênh, mô tả kênh, tọa độ và độ cao của thiết bị, thời gian, dữ liệu gửi lên mỗi kênh tại thời điểm đó.

Để lấy dữ liệu từ một kênh của thingspeak ta dùng câu lệnh sau: https://api.thingspeak.com/channels/api_key/field/x.json?results=Data Với Data là dữ liệu được đưa lên thingspeak.

Khi đó dữ liệu sẽ hiển thị trên một trang khác của thingspeak bao gồm: id kênh, tên kênh, mô tả kênh, tọa độ và độ cao của thiết bị, thời gian, dữ liệu gửi lên trường x tại thời điểm đó.

Khi thiết lập phần mềm ta cho phần mềm sao chép các dữ liệu trực tiếp từ trang web đó để lấy các dữ liệu về xử lý và hiển thị.

Để chia sẻ dữ liệu hiển thị trên thingspeak ta vào Sharing và nhập email người được chia sẻ. Khi đó người được chia sẻ cũng có thể xem được nội dung kênh này trên kênh của họ. Tuy nhiên, người được chia sẻ phải có tài khoản đăng ký trên thingspeak.

Để lấy dữ liệu trên thingspeak ta vào phần Data Import/Export kích vào phần download, khi đó ta sẽ lấy được dữ liêu về dưới dạng file Excell.

Ngồi ra, giao diện của thingspeak cịn cung cấp đồ thị và hình ảnh tọa độ. Thingspeak là một website hỗ trợ IoT gồm cả bản miễn phí và thương mại. Ở nội dung của luận văn, em sử dụng bản miễn phí để lưu dữ liệu gửi lên từ cảm biến. Tuy bản miễn phí có một số hạn chế nhưng nó vẫn đáp ứng đầy đủ nhu cầu trong quá trình đo đạc và thu thập số liệu của luận văn này.

2.1.6. AppInventor 2 – phần mềm lập trình Android

2.1.6.1. Lập trình hướng đối tượng

Lập trình hướng đối tượng (OOP) là phương pháp lập trình xoay quanh các đối tượng. Trong một chương trình ta đưa vào các đối tượng và lập trình cho các đối tượng trong chương trình đó.

Trong lập trình này các đối tượng là thành phần chính để các lập trình viên dựa vào đó để xây dựng các phương thức cũng như thuộc tính cho chúng. Ví dụ một đối tượng textBox khi lập trình cần cho nó những thuộc tính như chiều dài, chiều rộng, kiểu chữ… và các thuộc tính như hiển thị nội dung…

2.1.6.2. Giới thiệu về Appinventor

App Inventor là một ngôn ngữ lập trình hướng đối tượng được sử dụng trên một ứng dụng web mã nguồn mở cung cấp bởi Google và hiện tại được duy trì bởi Viện Cơng nghệ Massachusetts (MIT).

App Inventor cho phép tạo ra các ứng dụng phần mềm chạy trên hệ điều hành Android. Bằng cách sử dụng giao diện đồ họa cho phép người dùng kéo, thả các khối lệnh để tạo ra các ứng dụng điện thoại. Đến 07/2017, phiên bản iOS của nền tảng này đã bắt đầu được đưa vào thử nghiệm bởi Thunkable, là một trong các nhà cung cấp ứng dụng web cho ngôn ngữ này.

App Inventer là ngơn ngữ lập trình đầu tiên sử dụng công nghệ kéo, thả. App Inventor giúp những người khơng có nhiều kiến thức về ngơn ngữ lập trình vẫn có thể tạo ra những ứng dụng trên hệ điều hành Android. Ngồi ra, App Inventor cịn xây dựng kho dữ liệu lớn và chi tiết về cách sử dụng.

Những tính năng có trên MIT App Inventor là:

Cho phép xây dựng nhanh chóng những thành phần cơ bản (components) của một ứng dụng Android: Nút bấm, nút lựa chọn, chọn ngày giờ, ảnh, văn bản, thơng báo, kéo trượt, trình duyệt web

Sử dụng nhiều tính năng trên điện thoại: Chụp ảnh, quay phim, chọn ảnh, bật video hoặc audio, thu âm, nhận diện giọng nói, chuyển lời thoại thành văn bản, dịch

Kết nối: Danh bạ, email, gọi điện, chia sẻ thông qua các ứng dụng mạng xã hội khác trên thiết bị, nhắn tin, sử dụng twitter qua API, bật ứng dụng khác, bluetooth, bật trình duyệt web.

Lưu trữ: đọc hoặc lưu tệp txt, csv, sử dụng FusiontablesControl, tạo cơ sở dữ liệu đơn giản trên điện thoại hoặc trên đám mây thông qua server tự tạo hoặc Firebase

Điều khiển robot thơng qua LegoMindstorms.[11]

Hìn h 2.6. Hình ảnh một đoạn code viết bằng ngôn ngữ App inventor

2.2. Chế tạo thiết bị

2.2.1. Kết nối phần cứng thiết bị

Phần cứng của thiết bị bao gồm Arduino Uno R3, ESP 8266, Nova PM sensor SDS011, LCD I2C. Trong đó Arduino Uno là thiết bị xử lý chính, các thiết bị khác là thiết bị ngoại vi được kết nối với Arduino.

Nova PM Sensor SDS011 là sensor đo bụi PM2.5 và PM10 kết nối với vi điều khiển qua giao tiếp UART do đó ta sử dụng cổng Software Serial để kết nối Arduino với sensor đó. Kết nối hai chân TX và RX của sensor với chân 10 và 11 của Arduino.

ESP 8266 cũng kết nối với Arduino qua cổng UART mà sensor SDS011 đã kết nối cổng Software Serial rồi nên ESP 8266 sẽ kết nối với cổng Serial chính của Arduino thay vì cổng Serial giả lập. Hai chân TX và RX của ESP 8266 kết nối với chân 0(RX) và chân 1(TX) của Arduino.

Với hai đường truyền UART trên, tốc độ baund của chúng là 115200.

LCD I2C sử dụng LCD và một mạch chuyển đổi để LCD truyền tín hiệu qua giao thức I2C do đó sau khi kết hợp LCD chỉ còn 4 chân là VCC, GND, SCL, SDA. Arduino Uno hỗ trợ giao tiếp I2C qua hai chân A4 và A5 nên trong quá trình kết nối ta kết nối chân SDA với chân A4 còn chân SCL với chân A5.

Do ESP 8266 sử dụng nguồn 3,3V còn sensor SDS 011 sử dụng nguồn 5V do đó ta kết nối chân VCC của LCD với chân số 9 của Arduino và cho chân số 9 luôn ở mức cao.

Nguồn 9V-2A cấp nguồn hoạt động cho Arduino.

Tín hiệu được truyền từ PM sensor SDS011 đến Arduino, Arduino xử lý dữ liệu và truyền đến ESP8266 để đưa lên webserver qua đường truyền wifi. Ngoài ra Arduino còn đưa dữ liệu đến LCD để hiển thị. Các thiết bị được kết nối chân bảng 2.3:

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu chế tạo hệ đo nồng độ hạt bụi PM2 5 và PM10 trong không khí dựa trên arduino (Trang 33 - 41)

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

(75 trang)