Mục lục:

NodeMCU MQTT Iot Project - Nút chuyển đổi: 4 bước
NodeMCU MQTT Iot Project - Nút chuyển đổi: 4 bước

Video: NodeMCU MQTT Iot Project - Nút chuyển đổi: 4 bước

Video: NodeMCU MQTT Iot Project - Nút chuyển đổi: 4 bước
Video: Giao thức MQTT - Bài4: Tạo giao diện sử dụng Node-Red trên máy tính kết nối MQTT Broker HiveMQ 2024, Tháng mười một
Anonim
Image
Image

Bộ khởi động OSOYOO NodeMCU IOT

Vui lòng theo dõi chúng tôi trên facebook, tìm sản phẩm mới được phát hành của chúng tôi và chia sẻ ý tưởng và Video của bạn về cách sử dụng sáng tạo các sản phẩm của chúng tôi. Bạn có thể nhận lại tiền mặt hoặc quà tặng từ chúng tôi! Facebook:

Youtube:

Trong bài học này, chúng ta sẽ kết nối nút chuyển đổi với NodeMCU và gửi trạng thái chuyển đổi đến nhà môi giới MQTT. Khi nút được nhấn, NodeMCU sẽ công bố trạng thái nút “đã nhấn” cho nhà môi giới MQTT và khách hàng MQTT sẽ đăng ký nhận các thông báo này. Khi thả nút nhấn, "chưa nhấn" sẽ được gửi.

Bước 1: Chuẩn bị

Đồ thị kết nối
Đồ thị kết nối

Phần cứng:

Bảng NodeMCU x 1

Nút chuyển x 1

1K điện trở x 1

Bảng mạch x 1

Dây nhảy

Phần mềm:

Arduino IDE (phiên bản 1.6.4+)

Gói bo mạch ESP8266 và Trình điều khiển cổng nối tiếp

MQTT Client (MQTTBox tại đây)

Thư viện Arduino: PubSubClient

Bước 2: Biểu đồ kết nối

Trong bài học này, chúng ta sử dụng D2 (GPIO4) để điều khiển công tắc, vui lòng thiết lập phần cứng theo đồ thị kết nối.

Lưu ý: điện trở 1k được sử dụng làm điện trở kéo xuống, Trong mạch như vậy, khi công tắc đóng, đầu vào NodeMCU ở giá trị cao hợp lý, nhưng khi công tắc mở, điện trở kéo xuống kéo điện áp đầu vào xuống mặt đất (giá trị 0 logic), ngăn chặn trạng thái không xác định ở đầu vào.

Bước 3: Mã

Mã số
Mã số
Mã số
Mã số

Sao chép mã dưới đây vào Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / * | | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _ / (_ / / _ / / _ | / _ / / _ (_) _) _ / | _ | _ | _ | * (_ / * Sử dụng NodeMCU gửi trạng thái nút chuyển đến ứng dụng MQTT qua WiFi * URL hướng dẫn: * CopyRight www.osoyoo.com * / #include #include

int BUTTON_PIN = D2; // nút được kết nối với chân GPIO D1

// Cập nhật các giá trị này với các giá trị phù hợp với mạng của bạn. const char * ssid = "********"; // đặt ssid wifi của bạn tại đây const char * password = "********"; // đặt mật khẩu wifi của bạn tại đây. const char * mqtt_server = "broker.mqttdashboard.com"; // const char * mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

Ứng dụng khách PubSubClient (espClient); long lastMsg = 0; char msg [50];

void setup_wifi () {

chậm trễ (100); // Chúng tôi bắt đầu bằng cách kết nối với mạng WiFi Serial.print ("Đang kết nối với"); Serial.println (ssid); WiFi.begin (ssid, mật khẩu); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("Đã kết nối WiFi"); Serial.println ("Địa chỉ IP:"); Serial.println (WiFi.localIP ()); }

void callback (char * topic, byte * payload, unsigned int length)

{} // kết thúc cuộc gọi lại

void kết nối lại () {

// Lặp lại cho đến khi chúng ta được kết nối lại while (! Client.connected ()) {Serial.print ("Đang thử kết nối MQTT…"); // Tạo một ID khách hàng ngẫu nhiên String clientId = "ESP8266Client-"; clientId + = String (ngẫu nhiên (0xffff), HEX); // Cố gắng kết nối // nếu nhà môi giới MQTT của bạn có clientID, tên người dùng và mật khẩu // vui lòng thay đổi dòng sau thành if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("được kết nối"); // khi đã kết nối với nhà môi giới MQTT, hãy đăng ký lệnh nếu có client.subscribe ("OsoyooCommand"); } else {Serial.print ("fail, rc ="); Serial.print (client.state ()); Serial.println ("thử lại sau 5 giây"); // Chờ 5 giây trước khi thử lại delay (5000); }}} // kết thúc kết nối lại ()

void setup () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (gọi lại); pinMode (BUTTON_PIN, INPUT); }

void loop () {

if (! client.connected ()) {renect (); } client.loop (); lâu nay = millis (); trạng thái int; // gửi tin nhắn sau mỗi 2 giây if (now - lastMsg> 2000) {lastMsg = now; status = digitalRead (BUTTON_PIN); String msg = "Trạng thái nút:"; if (status == HIGH) {msg = msg + "Pressed"; thông điệp char [58]; msg.toCharArray (tin nhắn, 58); Serial.println (tin nhắn); // xuất bản dữ liệu cảm biến lên MQTT broker client.publish ("OsoyooData", message); } else {msg = msg + "Not Press"; thông điệp char [58]; msg.toCharArray (tin nhắn, 58); Serial.println (tin nhắn); // xuất bản dữ liệu cảm biến lên MQTT broker client.publish ("OsoyooData", message); }}}

Chỉnh sửa mã để phù hợp với cài đặt WiFi và MQTT của riêng bạn như các hoạt động sau: 1) Di chuyển điểm phát sóng: Tìm dòng mã bên dưới, đặt ssid và mật khẩu của riêng bạn vào đó.

const char * ssid = “your_hotspot_ssid”; const char * password = “your_hotspot_password”;

2) Cài đặt địa chỉ máy chủ MQTT: Bạn có thể sử dụng địa chỉ IP hoặc URL nhà môi giới MQTT của riêng mình để đặt trên giá trị mqtt_server. Bạn cũng có thể sử dụng một số máy chủ MQTT miễn phí nổi tiếng để kiểm tra dự án như “broker.mqtt-dashboard.com”, “iot.eclipse.org”, v.v.

const char * mqtt_server = “broker.mqtt-dashboard.com”;

3) Cài đặt ứng dụng khách MQTT Nếu nhà môi giới MQTT của bạn yêu cầu xác thực ID khách hàng, tên người dùng và mật khẩu, bạn cần phải thay đổi

if (client.connect (clientId.c_str ()))

Đến

if (client.connect (clientId, userName, passWord)) // đặt clientId / userName / passWord của bạn ở đây

Nếu không, chỉ cần giữ chúng làm mặc định, sau đó chọn loại bo mạch chính và loại cổng tương ứng như bên dưới, sau đó tải bản phác thảo lên NodeMCU.

  • Bảng:”NodeMCU 0.9 (Mô-đun ESP-12)”
  • Tần số CPU:”80MHz” Kích thước đèn flash:”
  • 4M (3M SPIFFS)”
  • Tốc độ tải lên:”115200 ″
  • Cổng: Chọn Cổng nối tiếp của riêng bạn cho NodeMCU của bạn

Bước 4: Cài đặt ứng dụng khách MQTT

Cài đặt ứng dụng khách MQTT
Cài đặt ứng dụng khách MQTT
Cài đặt ứng dụng khách MQTT
Cài đặt ứng dụng khách MQTT

Nếu bạn không biết cách cấu hình MQTT client, vui lòng truy cập bài viết cuối cùng của chúng tôi:

Cài đặt chủ đề: Chủ đề sẽ xuất bản: OsoyooCommand

Chủ đề đăng ký: OsoyooData

Kết quả đang chạy

Sau khi quá trình tải lên hoàn tất, nếu cài đặt tên điểm phát sóng wifi và mật khẩu đã ổn và nhà môi giới MQTT đã được kết nối, hãy mở Serial Monitor, bạn sẽ thấy kết quả sau: Tiếp tục nhấn nút này, Serial Monitor sẽ xuất ra “Trạng thái nút: Đã nhấn” sau mỗi 2 giây; sau khi nhả nút này, Serial Monitor sẽ xuất ra “Trạng thái nút: Không được nhấn” cứ sau 2 giây.

Đề xuất: