Giao diện cài đặt wifi

Một phần của tài liệu Đồ án LoraWan giám sát điều khiển nhiều trạm qua app và web (Trang 62 - 73)

-Nạp code không dây thông qua wifi đã kết nối.

Trang 63

-Tính năng backup dữ liệu khi khơng có kết nối wifi

Tổng quan linh kiện phần cứng:

* Linh kiện bao gồm

Linh kiện Số lượng

ESP32 1

Arduino nano 4

Lora SX1278 RA02 5

Anten Lora 433Mhz 5

Hộp 5

Dây điện 1 cuộn

Cáp nạp 1 cho Arduino,1 cho esp32

Cảm biến nhiệt độ ds18b20(dây) 1

Cảm biến ph 1

Trang 64 Cảm biến chất rán hòa tan TDS 1

Cảm biến siêu âm 1

Biến tần Yaskawa V1000 1

Motor sục khí 1

3.2 Các chuẩn truyền thơng giao tiếp sử dụng trong mơ hình 3.2.1 Giao tiếp 1 dây OneWire 3.2.1 Giao tiếp 1 dây OneWire

OneWire là gì?

• OneWire là hệ thống bus giao tiếp được thiết kế bởi Dallas Semiconductor Corp. Giống như tên gọi, hệ thống bus này chỉ sử dụng 1 dây để truyền nhận dữ liệu.

• Chính vì chỉ sử dụng 1 dây nên giao tiếp này có tốc độ truyền thấp nhưng dữ liệu lại truyền được khoảng cách xa hơn.

• OneWire chủ yếu sử dụng để giao tiếp với các thiết bị nhỏ, thu thập và truyền nhận dữ liệu thời tiết, nhiệt độ,… các cơng việc khơng u cầu tốc độ cao.

• Giống như các chuẩn giao tiếp khác, 1-Wire cho phép truyền nhận dữ liệu với nhiều Slave trên đường truyền. Tuy nhiên chỉ có thể có 1 Master ( điểm này giống với SPI).

Khung truyền của giao tiếp OneWire

So với các chuẩn giao tiếp cơ bản như UART, SPI, I2C mà chúng ta đã biết, cách thức hoạt động của OneWire có hơi “ lạ “ 1 chút.

Như chúng ta thấy ở hình trên, đường dây ln được giữ ở mức cao (High). Các thao tác hoạt động cơ bản của bus sẽ được quy định bởi thời gian kéo đường truyền xuống mức thấp (Low) như hình vẽ dưới.

Trang 65 Giải thích ý nghĩa :

• Gửi bit 1: Khi muốn gửi đi bit 1, thiết bị Master sẽ kéo bus xuống mức 0 trong một khoảng thời gian A (µs) và trở về mức 1 trong khoảng B (às).

ã Gi bit 0: Thit b Master kộo bus xuống mức 0 trong một khoảng thời gian C (µs) và trở về mức 1 trong khoảng D (µs).

• Đọc bit: Thiết bị Master kéo bus xuống 1 khoảng A (µs). Trong khoảng thời gian E (µs) tiếp theo, thiết bị master sẽ tiến hành lấy mẫu. Có nghĩa trong E (µs) này, nếu bus ở mức 1, thiết bị master sẽ đọc bit 1. Ngược lại, nếu bus ở mức 0 thì master sẽ đọc được bit 0.

• Reset: Thiết bị Master kéo bus xuống 1 khoảng thời gian H (µs) và sau đó về mức 1. Khoảng thời gian này gọi là tín hiệu reset. Trong khoảng thời gian I (µs) tiếp theo, thiết bị master tiến hành lấy mẫu. Nếu thiết bị slave gắn với bus gửi về tín hiệu 0, (tức bus ở mức 0), master sẽ hiểu rằng slave vẫn có mặt và q trình trao đổi dữ liệu lại tiếp tục. Ngược lại nếu slave gửi về tin hiệu 1 ( bus ở mức 1) thì master hiểu rằng khơng có thiết bị slave nào tồn tại và dừng quá trình.

Trang 66 Chế độ hoạt động:

• Chế độ Standard - Chế độ tiêu chuẩn: o 15.4 Kb/s

o 65 às bit

ã Chế độ Overdrive – Chế độ tốc độ nhanh: o 125 Kb/s

o 8 µs bit

3.2.3 Giao tiếp SPI

Giới thiệu về giao tiếp SPI

SPI là một giao thức giao tiếp phổ biến được sử dụng bởi nhiều thiết bị khác nhau. Ví dụ, module thẻ SD, module đầu đọc thẻ RFID và bộ phát / thu không dây 2,4 GHz đều sử dụng SPI để giao tiếp với vi điều khiển.

Lợi ích duy nhất của SPI là dữ liệu có thể được truyền mà không bị gián đoạn. Bất kỳ số lượng bit nào cũng có thể được gửi hoặc nhận trong một luồng liên tục. Với I2C và

Trang 67 UART, dữ liệu được gửi dưới dạng gói, giới hạn ở một số bit cụ thể. Điều kiện bắt đầu và dừng xác định điểm bắt đầu và kết thúc của mỗi gói, do đó dữ liệu bị gián đoạn trong quá trình truyền.

Các thiết bị giao tiếp qua SPI có quan hệ master - slave. Master là thiết bị điều khiển (thường là vi điều khiển), còn slave (thường là cảm biến, màn hình hoặc chip nhớ) nhận lệnh từ master. Cấu hình đơn giản nhất của SPI là hệ thống một slave, một master duy nhất, nhưng một master có thể điều khiển nhiều hơn một slave.

Hình: Giao tiếp SPI

MOSI (đầu ra master / đầu vào slave) - đường truyền cho master gửi dữ liệu đến slave. MISO (đầu vào master / đầu ra slave) - đường cho slave gửi dữ liệu đến master.

SCLK (clock) - đường cho tín hiệu xung nhịp.

SS / CS (Slave Select / Chip Select) - đường cho master chọn slave nào để gởi tín hiệu.

Cách hoạt động của SPI

Xung nhịp

Tín hiệu xung nhịp đồng bộ hóa đầu ra của các bit dữ liệu từ master để lấy mẫu các bit của slave. Một bit dữ liệu được truyền trong mỗi chu kỳ xung nhịp, do đó tốc độ truyền dữ liệu được xác định bởi tần số của tín hiệu xung nhịp. Giao tiếp SPI được khởi tạo bởi master kể từ khi master cấu hình và tạo ra tín hiệu xung nhịp.

Bất kỳ giao thức giao tiếp nào mà các thiết bị chia sẻ tín hiệu xung nhịp thì đều được gọi là đồng bộ. SPI là một giao thức giao tiếp đồng bộ. Ngồi ra cịn có các phương thức khơng đồng bộ khơng sử dụng tín hiệu xung nhịp. Ví dụ, trong giao tiếp UART, cả hai bên đều được đặt thành tốc độ truyền được cấu hình sẵn để chỉ ra tốc độ và thời gian truyền dữ liệu.

Trang 68 Tín hiệu xung nhịp trong SPI có thể được sửa bằng cách sử dụng các thuộc tính của phân cực xung nhịp và pha xung nhịp. Hai thuộc tính này làm việc cùng nhau để xác định khi nào các bit được xuất ra và khi được lấy mẫu. Phân cực xung nhịp có thể được thiết lập bởi master để cho phép các bit được xuất ra và lấy mẫu trên cạnh lên hoặc xuống của chu kỳ xung nhịp. Pha xung nhịp có thể được đặt để đầu ra và lấy mẫu xảy ra trên cạnh đầu tiên hoặc cạnh thứ hai của chu kỳ xung nhịp, bất kể nó đang tăng hay giảm.

Slave Select

Master có thể chọn slave mà nó muốn giao tiếp bằng cách đặt đường CS / SS của slave ở mức điện áp thấp. Ở trạng thái idle, khơng truyền tải, dịng slave select được giữ ở mức điện áp cao. Nhiều chân CS / SS có thể có sẵn trên thiết bị master cho phép đấu dây song song nhiều slave. Nếu chỉ có một chân CS / SS, nhiều slave có thể được kết nối với master bằng cách nối chuỗi.

Nhiều Slave:

SPI có thể thiết lập để hoạt động với một master và một slave duy nhất, và nó có thể được thiết lập với nhiều slave do một master duy nhất điều khiển. Có hai cách để kết nối nhiều slave với master. Nếu master có nhiều chân slave select, các slave có thể được nối dây song song như thế này:

Trang 69 Hình: Sơ đồ kết nối master slave

MOSI và MISO

Master gửi dữ liệu đến slave từng bit, nối tiếp qua đường MOSI. Slave nhận dữ liệu được gửi từ master tại chân MOSI. Dữ liệu được gửi từ master đến slave thường được gửi với bit quan trọng nhất trước.

Slave cũng có thể gửi dữ liệu trở lại master thông qua đường MISO nối tiếp. Dữ liệu được gửi từ slave trở lại master thường được gửi với bit ít quan trọng nhất trước. Các bước truyền dữ liệu SPI

Master ra tín hiệu xung nhịp.

Master chuyển chân SS / CS sang trạng thái điện áp thấp, điều này sẽ kích hoạt slave. Master gửi dữ liệu từng bit một tới slave dọc theo đường MOSI. Slave đọc các bit khi nó nhận được.

Nếu cần phản hồi, slave sẽ trả lại dữ liệu từng bit một cho master dọc theo đường MISO. Master đọc các bit khi nó nhận được.

Trang 70 Có một số ưu và nhược điểm khi sử dụng SPI và nếu được lựa chọn giữa các giao thức giao tiếp khác nhau, bạn nên biết khi nào sử dụng SPI theo yêu cầu của dự án:

Ưu điểm

Khơng có bit bắt đầu và dừng, vì vậy dữ liệu có thể được truyền liên tục mà khơng bị gián đoạn

Khơng có hệ thống định địa chỉ slave phức tạp như I2C Tốc độ truyền dữ liệu cao hơn I2C (nhanh gần gấp đôi)

Các đường MISO và MOSI riêng biệt, vì vậy dữ liệu có thể được gửi và nhận cùng một lúc

Nhược điểm

Sử dụng bốn dây (I2C và UART sử dụng hai)

Không xác nhận dữ liệu đã được nhận thành cơng (I2C có điều này) Khơng có hình thức kiểm tra lỗi như bit chẵn lẻ trong UART

Chỉ cho phép một master duy nhất

3.2.4 Kết nối ESP32 với Wifi Router sử dụng Arduino Core

Mã hướng dẫn được thực hiện trên môi trường biên dịch với Arduino Nếu bạn chưa cài đặt hỗ trợ Arduino IDE32, vui lòng kiểm tra ở đây cách thực hiện.

Để có thể kết nối tới bộ định tuyến WiFi, ESP32 phải chạy trong chế độ trạm (STA mode) hoặc chế độ điểm truy cập và chế độ trạm đồng thời (AP_STA)

Vì ví dụ đơn giản này, chúng tơi sẽ chỉ kết nối với mạng WiFi, chúng tôi sẽ thực hiện tất cả mã hóa trong chức năng thiết lập setup().

Trước hết, chúng tôi cần bao gồm thư viện WiFi.h , nơi sẽ cho phép chúng tôi kết nối với mạng. Bạn có thể kiểm tra mã nguồn thư viện này ở đây . Thật thú vị khi lưu ý rằng các nhà phát triển đã chọn một tên thư viện chung chung hơn, trái ngược với ESP8266, nơi thư viện được gọi là ESP8266WiFi.h .

Trong lớp WiFiClass, bạn sẽ thấy thư viện phơi bày một biến đối tượng được tên là WiFi . Biến này sẽ được sử dụng để gọi hầu hết các hàm chức năng trong thư viện

#include "WiFi.h"

Để giữ cho mã của chúng ta dễ dàng chỉnh sửa khi có thay đổi, chúng ta sẽ khai báo hai biến toàn cục, để giữ cả tên của mạng WiFi nơi chúng tôi muốn kết nối và mật khẩu của nó. Vui lịng sử dụng thông tin đăng nhập của mạng của bạn.

Trang 71 const char* ssid = "yourNetworkName";

const char* password = "yourNetworkPass";

Bây giờ, chúng tôi sẽ tạo chức năng setup(), nơi chúng tôi sẽ thực sự kết nối với mạng WiFi. Nhưng trước tiên, chúng tơi sẽ mở một kết nối nối tiếp, vì vậy chúng tơi có thể xuất kết quả của chương trình.

Sau đó, chúng tơi gọi phương thức begin trên đối tượng WiFi, chuyển qua làm đối số SSID (tên mạng) và các biến mật khẩu được cài đăth. Điều này sẽ bắt đầu kết nối với mạng.

Serial.begin(115200); WiFi.begin(ssid, password);

Sau đó, chúng tơi sẽ thực hiện một vịng lặp while cho đến khi kết nối được thiết lập . Để làm như vậy, chúng ta có thể gọi phương thức status() trên đối tượng WiFi và đợi kết quả khớp với enum WL_CONNECTED . Giữa mỗi lần lặp, chúng tôi đưa ra một độ trễ nhỏ 500 mili giây, để tránh một cuộc thăm dò liên tục.

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.println("Connecting to WiFi.."); }

Khi được kết nối thành công với mạng Wifi, ESP32 sẽ được kết nối thành công với mạng. Kiểm tra mã nguồn đầy đủ dưới đây.

#include "WiFi.h"

const char* ssid = "yourNetworkName"; const char* password = "yourNetworkPass"; void setup() {

Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500);

Trang 72 Serial.println("Connecting to WiFi..") }

Serial.println("Connected to the WiFi network");} void loop() {}

Kết quả trả về:

3.2.5 Truyền thông RS485 RS485 là gì? RS485 là gì?

RS485 hay được biết đến với tên gọi đầy đủ là chuẩn giao tiếp RS485 hay cáp RS485, đây là phương thức giao tiếp kết nối với máy tính và các thiết bị khác. RS485 không chỉ đơn thuần là giao diện đơn lẻ mà nó chính là tổ hợp truyền thơng có khả năng tạo ra các mạng đơn giản của nhiều thiết bị.

Chuẩn giao tiếp RS485 có thể kết nối max lên đến 32 thiết bị trên một cặp dây đơn và một hệ thống dây nối đất ở khoảng cách lên đến 1200m.

Cấu tạo của RS485

Cáp RS485 được cấu tạo rất đơn giản, chỉ từ các sợi dây được xoắn lại với nhau theo từng cặp. Tuy nhiên, chính cấu tạo này lại sinh ra một nhược điểm nghiêm trọng, khi hiện tượng nhiễu xuất hiện ở 1 cặp dây thì ngay lập tức cặp dây khác cũng sẽ bị. Điều này dẫn đến điện áp hoạt động giữa 2 dây sẽ khơng có q nhiều sự chênh lệch, bộ phận thu của RS485 vẫn có thể nhận được tín hiệu vì bộ thu đã loại bỏ hết được hiện tượng nhiễu.

Nguyên lý hoạt động của RS485 là gì?

Nguyên lý hoạt động của RS485 khá đơn giản, dữ liệu sẽ được truyền qua 2 dây khi xoắn lại với nhau, dây này được gọi là cáp xoắn. Khi dây được xoắn lại sẽ tạo cho RS485 khả năng chống nhiễu cao và khả năng truyền tín hiệu đường dài tốt hơn.

Trang 73 RS485 được chia làm 2 loại cấu hình, hiện đang được sử dụng nhiều nhất hiện nay là cấu hình 2 dây và cấu hình 4 dây. Các bạn hãy tìm hiểu nguyên lý hoạt động của 2 loại cấu hình này nhé!

Cấu tạo cáp RS485

Hình : Cấu tạo cáp RS485

Sơ đồ chân RS485 2 dây

Một phần của tài liệu Đồ án LoraWan giám sát điều khiển nhiều trạm qua app và web (Trang 62 - 73)

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

(162 trang)