Tải bản đầy đủ - 0 (trang)
Chương 2: Truyền dữ liệu lên internet

Chương 2: Truyền dữ liệu lên internet

Tải bản đầy đủ - 0trang

Đồ án chuyên ngành



SVTH: Phạm Văn Công



2.1 Module Wifi Esp8266

Module Wifi Esp8266 thiết bị giá rẻ được sử dụng rộng rãi trong các hệ thống IoT.

ESP8266 (Hình 2.2) là một vi xử lí hợp cao - System on Chip (SoC), có khả năng

xử lý và lưu trữ tốt, cung cấp khả năng vượt trội để trang bị thêm tính năng wifi cho

các hệ thống khác hoặc đóng vai trò như một giải pháp độc lập. Module

wifi ESP8266 cung cấp khả năng kết nối mạng wifi đầy đủ và khép kín, có thể sử

dụng nó để tạo một web server đơn giản hoặc sử dụng như một access point.



a



Hình 2.2 Dạng đóng gói và cấu trúc của Module Wifi Esp8266

 Các thơng số cơ bản của Module Wifi Esp8266:

• CPU của module là loại Tensilica L106 32-bit RISC processor, có tốc độ tối







đa là 160Mhz.

Bộ nhớ Ram tối đa là 50kB, bộ nhớ Rom 1MB.

Có đầy đủ các module thơng dụng như các vi điều khiển thịnh hành như:















UART, ADC, PWM, I2C, SPI, …

Hỗ trợ chuẩn Wifi 802.11 b/g/n, Wifi 2.4 GHz, hỗ trợ WPA/WPA2

Chuẩn điện áp hoạt động 3.3V

Chuẩn giao tiếp nối tiếp UART với tốc độ Baud lên đến 115200

Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point

Hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK,

WPA_WPA2_PSK

14



Đồ án chun ngành







SVTH: Phạm Văn Cơng



Hỗ trợ cả 2 giao tiếp TCP và UDP

Tích hợp cơng suất thấp 32-bit CPU có thể được sử dụng như là bộ vi xử lý



ứng dụng

• SDIO 1.1 / 2.0, SPI, UART

• Làm việc như các máy chủ có thể kết nối với 5 máy trạm.

Để dễ dàng cho việc nạp chương trình và sử dụng module Esp8266 được tích hợp

thêm chip nap CP2102 được phát triển thành một kit có tên là NodeMCU có sơ đồ

chân như Hình 2.3.



Hình 2.3 Sơ đồ chân của kit phát triển NodeMCU

 Phần mềm lập trình cho Esp8266



Esp8266 có hai cách để lập trình:

− Dùng tập lệnh AT mà nhà sản xuất đưa ra để cấu hình cũng như truyền nhận

dữ liệu qua Esp8266. Lệnh AT được nạp vào Esp8266 từ một vi xử lí hoặc từ

máy tính thơng chuẩn giao tiếp UART. Phương pháp hiện tại khơng còn được

sử dụng nhiều trong lập trình Esp8266 bởi thời gian nạp lệnh AT khá lớn, bất

tiện trong việc lập trình cho các vi xử lí, ….



15



Đồ án chun ngành



SVTH: Phạm Văn Cơng



− Để khắc phục các khó khăn khi sử dụng tập lệnh AT để lập trình cho

Esp8266 ta đưa ra các giải pháp mới là ta lập trình Esp8266 như các vi điều

khiển thơng thường và sử dụng trình biên dịch Arduino IDE để lập trình.



Hình 2.4 Trình biên dịch Arduino IDE



16



Đồ án chun ngành



SVTH: Phạm Văn Cơng



2.2 Nền tảng Nodejs



Hình 2.5 Nodejs

Node.js là một hệ thống phần mềm được thiết kế để viết các ứng dụng internet có

khả năng mở rộng, đặc biệt là máy chủ web.

Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên Javascript

Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một

cách nhanh chóng và dễ dàng mở rộng. Nodejs được xây dựng và phát triển từ năm

2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ. Phần Core bên dưới

của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.

Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực.

Các ứng dụng có thể và nên viết bằng Nodejs:





Websocket server: Các máy chủ web socket như là Online Chat, Game

Server…







Fast File Upload Client: là các chương trình upload file tốc độ cao.







Ad Server: Các máy chủ quảng cáo.



17



Đồ án chun ngành



SVTH: Phạm Văn Cơng







Cloud Services: Các dịch vụ đám mây.







RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng

khác thơng qua API.







Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc

độ thời gian thực. Micro Services: Ý tưởng của micro services là chia nhỏ

một ứng dụng lớn thành các dịch vụ nhỏ và kết nối chúng lại với nhau.

Nodejs có thể làm tốt điều này.



Trong đề tài sử Nodejs để thiết kế một Websocket server: Để có thể sử dụng được

Nodejs đầu tiên ta phải dowload và cài đặt mơi trường Nodejs cho máy tính. Sử

dụng các trình biên dịch như Visual Studio Code, Adobe Dreamweave, sublime text,

Notepad, … để viết code cho server.



2.3 Đưa server ra ngoài internet

Sau khi viết được server Nodejs để có sử dụng server đó ở mọi nơi thì ta cần phải

đưa server đó ra ngoài internet.Và Heroku là một nền tảng làm được điều đó.

Heroku là một nền tảng đám mây dựa trên ứng dụng container dưới dạng dịch

vụ(PaaS) và Heroku cung cấp phương tiện để các nhà phát triển dễ dàng đưa các

ứng dụng của họ ra ngoài thị trường.



18



Đồ án chuyên ngành



SVTH: Phạm Văn Cơng



Chương 3: Thiết kế



Esp8266



Arduino



BH1750



Hình 3.1 Sơ đồ thiết kế

Trong đề tài vi điều khiên được sử dụng là Atmega328p, được phát triển thành một

board Arduino Uno. Arduino có giá thành rẻ, dễ dàng lập trình phù hợp với các dự

án nhỏ,



19



Đồ án chuyên ngành



SVTH: Phạm Văn Công



3.1 Đo giá độ rọi sáng

Sơ đồ kết nối giữa cảm biến BH1750 với Arduino được mơ tả hình 3.2



Hình 3.2 Cách kết nối giữa Arduino và BH1750

Cảm biến BH1750 gai tiếp với arduino thông qua chuẩn I2C.

Cách đọc giá trị độ rọi sáng từ cảm biến bằng chuẩn I2C trong Arduino như sau:

Bước 1:

Star

0100011

t

Bước 2:

Start



0100011



Byte thấp



0



Ack



1

____



Ack



Mã lệnh (opecode)



Ack



Byte cao



Ack



Stop



Ack



Stop



20



Đồ án chun ngành



SVTH: Phạm Văn Cơng



Như cách kết nối ở hình 3.2 thì chân ADD được nối với GND nên địa chi của cảm

biến BH1750 là 0100011B.

Dưới đây là một cách đọc dữ liệu từ cảm biến bằng Arduino.

Bảng 3.1. Cách đọc dữ liệu từ cảm biến



C code



Comments

Gửi tín hiệu Start.

Trong đó:



TWCR = (1<
(1<
while (!(TWCR & (1<


• 1<
set khi cơng việc hồn tất. Ghi “1” vào bit này để

clear

• 1<
chuyển đổi

• 1<
• while (! (TWCR & (1<
TWINT được set.



TWDR=0x46: 0x46=01000110B, với 7 bit





TWDR=0x46;

TWCR = (1<
while (!(TWCR & (1<


đầu là địa chỉ của cảm biến







TWCR = (1<
ngắt.

while (! (TWCR & (1<
TWINT được set.









TWDR=0x10;

TWCR = (1<
while (!(TWCR & (1<


Gửi mã lệnh 0x10 = 00010000B lên cảm biến.

Cấu hình cảm biến đo giá trị có độ phân giải 1

lux, thời gian đo là 120ms. Các mã lệnh cấu

hình cho cảm biến cho bảng 1.5

TWCR = (1<
ngắt.

while (! (TWCR & (1<
TWINT được set.









TWCR= (1<
(1<


TWCR = (1<
(1<
while (!(TWCR & (1<






Gửi tín hiệu Stop







Gửi tín hiệu Start.



21



Đồ án chun ngành

TWDR=0x47;

TWCR = (1<
while (!(TWCR & (1<


SVTH: Phạm Văn Cơng









TWCR =

(1<


TWDR=0x47: 0x47=01000111B, với 7 bit



đầu là địa chỉ của cảm biến

TWCR = (1<
ngắt.

while (! (TWCR & (1<
TWINT được set.









Đọc byte cao

Giá trị trả về là giá trị của thanh ghi TWDR









Đọc byte thấp

Giá trị trả về là giá trị của thanh ghi TWDR







Gửi tín hiệu Stop



while (!(TWCR & (1<
return TWDR;



TWCR = (1<
while (!(TWCR & (1<
return TWDR;

TWCR= (1<
(1<


Sau khi đo được giá trị độ rọi sáng ta cần gửi giá trị đó đến Esp8266. Và được gửi

thông qua chuẩn giao tiếp UART với tốc độ Baud là 115200.

Luu đồ thuật toán của quá trình đo và gửi dữ liệu trên Arduino được mơ tả ở hình

3.2



22



Đồ án chun ngành



SVTH: Phạm Văn Cơng



Hình 3.3 Lưu đồ thuật toán thực hiện trên Arduino.

Thuật toán chi tiết được trình bày ở phần Phụ Lục.



3.2 Gửi dữ liệu lên internet.

Cách kết nối giữa Arduino và Node MCU như hình 3.3. Arduino truyền nhận dữ

liệu với NodeMCU thơng qua chuẩn giao tiếp UART. Sử dụng thư viện

“SoftwareSerial” để tạo giả lập một UART trong đó, chân 2 và 3 trên Arduino là

chân đóng vai trò là TX và RX, D1 và D2 trên NodeMCU đóng vai trò như chân

RX và TX.

Sau khi nhận được dữ liệu từ Arduino, NodeMCU sẽ gửi dữ liệu lên server. Câu

lệnh client.send("tên sự kiện ", "key", "value") trong thư viện “SocketIOClient”

dùng để gửi dữ liệu lên server.

Trong câu lệnh client.send("tên sự kiện ", "key", "value"): “ tên sự kiện”: là chuỗi

kí tự mà từ đó server phân biệt với các sự kiện gửi, nhân dữ liệu khác.

Dữ liệu gửi lên server có dạng là chuỗi Json. Ví dụ như { “giá trị 1”: “20”}, trong

đó "key" :“giá trị 1”, "value":“20”.

23



Đồ án chuyên ngành



SVTH: Phạm Văn Cơng



Hình 3.3 Cách kết nối giữa Arduino và Node MCU

Để có thể gửi dữ liệu lên server thì NodeMCU cần biết địa chỉ hay tên của server đó

và NodeMCU cần kết nối vào một mạng Wifi để truy cập vào server đó.

cambien.herokuapp.com là tên miền dịch vụ.

Hình 3.4 là lưu đồ thuật toán cho NodeMCU.

 Khai báo thư viện: Các thư viện cần khai báo đó là:



SoftwareSerial: thư viện liên quan đến các tác vụ UART

SocketIOClient: là thư viện cung cấp các cung cụ thao tác với server Nodejs

ESP8266WiFi: Thư viện dùng để thiết lập các chế độ hoạt động cho NodeMCU

ESP8266WebServer: Thư viện cun cấp các công cụ để thao tác với server do chính

NodeMCU tạo ra.



24



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Chương 2: Truyền dữ liệu lên internet

Tải bản đầy đủ ngay(0 tr)

×