Mục lục:
Video: NodeMCU MQTT Iot Project - Nút chuyển đổi: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
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ị
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ã
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
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:
Chuyển đổi bước thành chuyển động trò chơi: 4 bước
Chuyển đổi bước thành chuyển động trong trò chơi: Giới thiệu Thiết bị này chuyển đổi chuyển động từ bước tự chế (máy bước) thành chuyển động trong trò chơi. Nó sẽ hoạt động cho bất kỳ trò chơi nào nhận (" w ") là chuyển động về phía trước. Nó cũng có thể hoạt động cho các trò chơi VR nếu chúng chấp nhận đầu vào bằng bàn phím. Nó có lẽ đã thắng
Nguồn điện chuyển mạch có thể thay đổi sử dụng LM2576 [Bộ chuyển đổi Buck, CC-CV]: 5 bước
Bộ nguồn chuyển mạch có thể thay đổi sử dụng LM2576 [Bộ chuyển đổi Buck, CC-CV]: Bộ nguồn chuyển mạch được biết đến với hiệu quả cao. Nguồn cung cấp điện áp / dòng điện có thể điều chỉnh là một công cụ thú vị, có thể được sử dụng trong nhiều ứng dụng như bộ sạc pin Lithium-ion / axit chì / NiCD-NiMH hoặc nguồn điện độc lập. Trong
Nguồn điện thay đổi (Bộ chuyển đổi Buck): 4 bước (có hình ảnh)
Bộ nguồn biến thiên (Buck Converter): Bộ nguồn là một thiết bị cần thiết khi bạn làm việc với các thiết bị điện tử. Nếu bạn muốn biết mạch của bạn tiêu thụ bao nhiêu điện năng, bạn sẽ cần phải thực hiện các phép đo điện áp và dòng điện, sau đó nhân chúng để có được công suất. Thật là một thời gian
Chuyển đổi bàn phím và chuột tự động - Chuyển đổi ngược dòng USB: 5 bước
Công tắc bàn phím và chuột tự động - USB Upstream Switch: Trong dự án này, chúng tôi sẽ lắp ráp một công tắc bàn phím và chuột tự động cho phép chia sẻ dễ dàng giữa hai máy tính. Ý tưởng cho dự án này xuất phát từ nhu cầu của tôi, tại bất kỳ thời điểm nào, có hai máy tính bàn thí nghiệm của tôi. Hầu hết các lần đó là D
Chuyển đổi nguồn cấp cho máy tính thành nguồn cấp cho phòng thí nghiệm có thể thay đổi được trên băng ghế dự bị: 3 bước
Chuyển đổi Bộ nguồn cho Máy tính thành Bộ cấp nguồn cho Phòng thí nghiệm trên đầu có thể thay đổi: Giá Ngày nay cho một bộ nguồn phòng thí nghiệm vượt quá $ 180. Nhưng thay vào đó, một bộ nguồn máy tính lỗi thời lại hoàn hảo cho công việc. Với những thứ này, bạn chỉ tốn 25 đô la và có bảo vệ ngắn mạch, bảo vệ nhiệt, bảo vệ quá tải và