Cách tạo nút kết nối Wi-Fi của riêng bạn với ESP8266

Cách tạo nút kết nối Wi-Fi của riêng bạn với ESP8266

Internet of Things có tiềm năng tự làm rất lớn. Với đủ bí quyết và một vài thành phần rẻ tiền, bạn có thể xây dựng một hệ thống phức tạp gồm các thiết bị được kết nối.





Tuy nhiên, đôi khi bạn muốn một cái gì đó đơn giản. Không có chuông hoặc còi, chỉ là một nút thực hiện một nhiệm vụ duy nhất. Bạn có thể đã quen với những thứ như thế này nếu bạn đã từng sử dụng nút Amazon Dash để sắp xếp lại các vật dụng gia đình hàng ngày.





Hôm nay chúng ta sẽ tạo một nút kích hoạt Wi-Fi bằng NodeMCU và lập trình nó để sử dụng IFTTT để làm… tốt, bất cứ điều gì! Hướng dẫn bằng văn bản sau video, nếu bạn thích.





Những gì bạn cần

Bạn sẽ cần:

  • 1 x bo mạch NodeMCU (ESP8266), có sẵn cho $ 2-3 trên AliExpress
  • 1 x Nút bấm
  • 1 x LED (tùy chọn)
  • Điện trở 1 x 220 Ohm (tùy chọn)
  • Breadboard và dây hookup
  • Micro USB để lập trình
  • Máy tính đã cài đặt Arduino IDE

Ngoài NodeMCU, bạn sẽ có thể tìm thấy hầu hết các phần này trong bất kỳ bộ khởi động Arduino nào. Hướng dẫn này sẽ giả sử bạn đang sử dụng đèn LED và điện trở tùy chọn, nhưng chúng không cần thiết.



Bước 1: Thiết lập mạch

Thiết lập phần cứng rất đơn giản cho dự án này. Thiết lập bảng của bạn theo sơ đồ này.

Dây màu tím đính kèm chân D0 sang một bên của nút. Dây màu xanh lá cây kết nối phía bên kia của nút với RST pin . Dây màu xanh lam chạy từ pin D1 đến điện trở và đèn LED. Chân âm của đèn LED gắn vào GND pin của NodeMCU.





Khi breadboard được thiết lập, nó sẽ trông giống như sau:

tệp đang mở trong hệ thống không thể xóa

Nếu bạn đang tự hỏi làm thế nào tôi có đèn LED của tôi đi đến chân nối đất chỉ bằng cách sử dụng những đoạn cáp nhỏ đó, hãy nhanh chóng của chúng tôi khóa học về sự cố breadboard sẽ giúp làm sáng tỏ nó! Kiểm tra thiết lập của bạn và gắn NodeMCU của bạn vào máy tính qua USB.





Bước 2: Thiết lập IDE

Trước khi bắt đầu viết mã, bạn cần phải chuẩn bị một số. Nếu bạn chưa có, hãy thiết lập Arduino IDE để nhận ra bảng NodeMCU của bạn. Bạn có thể thêm nó vào danh sách hội đồng quản trị của mình thông qua Tệp> Tùy chọn .

Bạn có thể tìm thấy giải thích chi tiết hơn về bước này trong bài viết giới thiệu NodeMCU của chúng tôi.

Hai thư viện được yêu cầu cho dự án này. Hướng đến Phác thảo> Bao gồm Thư viện> Quản lý Thư viện . Tìm kiếm ESP8266WIFI của Ivan Grokhotkov và cài đặt nó. Thư viện này được viết để tạo kết nối Wi-Fi với bảng NodeMCU.

Tiếp theo tìm kiếm IFTTTWebhook của John Romkey và cài đặt phiên bản mới nhất. Thư viện này được thiết kế để đơn giản hóa quá trình gửi webhook tới IFTTT.

Đó là tất cả những gì chúng ta cần chuẩn bị, hãy viết mã!

Cách mã sẽ hoạt động

Chúng tôi sẽ sử dụng ESP8266WIFI thư viện để thiết lập kết nối Wi-Fi. Các IFTTTWebhooks thư viện yêu cầu IFTTT --- trong trường hợp này, đăng lên Twitter. Sau đó, hướng dẫn bo mạch NodeMCU ở chế độ ngủ khi không sử dụng để tiết kiệm điện năng.

Khi nhấn nút, nó sẽ liên kết D0RST ghim. Điều này sẽ đặt lại bảng và quá trình này sẽ diễn ra một lần nữa.

Hầu hết mã trong hướng dẫn này đủ đơn giản cho người mới bắt đầu. Điều đó nói rằng, nếu bạn đang bắt đầu, bạn sẽ thấy nó dễ hiểu hơn rất nhiều sau khi theo dõi Hướng dẫn cho người mới bắt đầu Arduino .

Hướng dẫn này đi qua các đoạn mã để giúp hiểu rõ hơn. Nếu bạn muốn bắt tay ngay vào công việc kinh doanh, bạn có thể tìm thấy hoàn thành mã tại Pastebin . Lưu ý rằng bạn vẫn cần điền thông tin đăng nhập Wi-Fi và IFTTT của mình vào mã này để mã hoạt động!

Bước 3: Kiểm tra giấc ngủ sâu

Để bắt đầu, chúng tôi sẽ tạo một bài kiểm tra đơn giản để cho thấy giấc ngủ sâu hoạt động như thế nào. Mở một bản phác thảo mới trong Arduino IDE. Nhập hai đoạn mã sau.

#include
#include
#define ledPin 5
#define wakePin 16
#define ssid 'YOUR_WIFI_SSID'
#define password 'YOUR_WIFI_PASSWORD'
#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Ở đây, chúng tôi bao gồm các thư viện của mình, cùng với việc xác định một số biến mà chúng tôi sẽ cần trong bản phác thảo của mình. Bạn sẽ nhận thấy rằng ledPin và awPin được đánh số khác nhau ở đây so với sơ đồ Fritzing ở trên. NodeMCU có sơ đồ chân khác với bảng Arduino. Tuy nhiên, đây không phải là vấn đề, do sơ đồ tiện dụng này:

Bây giờ hãy tạo một chức năng thiết lập:

void setup() {
Serial.begin(115200);
while(!Serial) {
}
Serial.println(' ');// print an empty line before and after Button Press
Serial.println('Button Pressed');
Serial.println(' ');// print an empty line
ESP.deepSleep(wakePin);
}

Ở đây, chúng tôi thiết lập cổng nối tiếp của mình và sử dụng vòng lặp while để đợi cho đến khi nó bắt đầu. Vì mã này sẽ kích hoạt sau khi nhấn nút đặt lại, chúng tôi in 'Nút được nhấn' đến màn hình nối tiếp. Sau đó, chúng tôi yêu cầu NodeMCU chuyển sang chế độ ngủ sâu cho đến khi nút kết nối akePin đến RST pin được nhấn.

Cuối cùng, để thử nghiệm, hãy thêm cái này vào vòng() phương pháp:

void loop(){
//if deep sleep is working, this code will never run.
Serial.println('This shouldn't get printed');
}

Thông thường, các bản phác thảo Arduino chạy chức năng vòng lặp liên tục sau khi thiết lập. Vì chúng tôi gửi bảng ở trạng thái ngủ trước khi quá trình thiết lập kết thúc, nên vòng lặp không bao giờ chạy.

Lưu bản phác thảo của bạn và tải nó lên bảng. Mở màn hình nối tiếp và bạn sẽ thấy 'Nút được nhấn.' Mỗi khi nút kích hoạt, bảng sẽ đặt lại và thông báo sẽ in lại. Nó hoạt động!

Lưu ý về Màn hình nối tiếp

Bạn có thể đã nhận thấy một số ký tự vô nghĩa trong màn hình nối tiếp trong một số dự án của bạn. Điều này thường là do không đặt màn hình nối tiếp ở cùng tốc độ truyền như Serial.begin (XXXX) tỷ lệ.

Nhiều hướng dẫn đề xuất bắt đầu kết nối nối tiếp ở tốc độ truyền 115200 cho một dự án như thế này. Tôi đã thử nhiều cách kết hợp, và tất cả chúng đều có các mức độ sai khác nhau trước và sau các tin nhắn nối tiếp. Theo các bài đăng khác nhau trên diễn đàn, điều này có thể là do bo mạch bị lỗi hoặc vấn đề tương thích phần mềm. Vì nó không ảnh hưởng quá nhiều đến dự án, tôi đang chọn giả vờ như nó không xảy ra.

xem phim trên youtube có hợp pháp không

Nếu bạn đang gặp sự cố với màn hình nối tiếp, hãy thử các tốc độ truyền khác nhau và xem cách nào phù hợp nhất với bạn.

Bước 4: Kết nối với Wi-Fi

Bây giờ, hãy tạo một chức năng để kết nối với mạng Wi-Fi của bạn.

void connectToWifi() {
Serial.print('Connecting to: SSID NAME'); //uncomment next line to show SSID name
//Serial.print(ssid);
WiFi.begin(ssid, password);
Serial.println(' ');// print an empty line
Serial.print('Attempting to connect: ');
//try to connect for 10 seconds
int i = 10;
while(WiFi.status() != WL_CONNECTED && i >=0) {
delay(1000);
Serial.print(i);
Serial.print(', ');
i--;
}
Serial.println(' ');// print an empty line
//print connection result
if(WiFi.status() == WL_CONNECTED){
Serial.print('Connected.');
Serial.println(' ');// print an empty line
Serial.print('NodeMCU ip address: ');
Serial.println(WiFi.localIP());
}
else {
Serial.println('Connection failed - check your credentials or connection');
}
}

Phương pháp này cố gắng kết nối với mạng của bạn mười lần với một giây ở giữa. Kết nối in thành công hay thất bại với màn hình nối tiếp.

Bước 5: Gọi phương thức kết nối

Ngay bây giờ, connectToWifi () không bao giờ được gọi. Thêm cuộc gọi vào chức năng thiết lập của bạn giữa thông báo 'Đã nhấn nút' và chuyển bảng sang chế độ ngủ.

connectToWifi();

Trong trường hợp bạn đang tự hỏi nơi này phù hợp, nó sẽ trông như thế này:

Ở trên cùng của bản phác thảo, hãy thay thế ssidmật khẩu mở khóa các biến bằng thông tin đăng nhập Wi-Fi của bạn. Lưu bản phác thảo của bạn và tải lên bảng.

Bây giờ khi bo mạch khởi động, nó sẽ cố gắng kết nối với mạng Wi-Fi của bạn, trước khi quay lại chức năng thiết lập. Bây giờ, hãy thiết lập tích hợp IFTTT.

Bước 6: Thiết lập tích hợp IFTTT

IFTTT cho phép tích hợp với một loạt các dịch vụ web. Chúng tôi đã sử dụng nó trong hướng dẫn về đèn LED tháp PC Wi-Fi của mình để gửi cảnh báo bất cứ khi nào nhận được email mới. Hôm nay chúng tôi sẽ sử dụng nó để gửi một tweet chỉ bằng một nút bấm.

Điều hướng đến Applet của tôi trang và chọn Applet mới

Bấm vào + cái này và kết nối với Webhooks . Lựa chọn 'Nhận yêu cầu web' và đặt tên cho sự kiện của bạn. Giữ nó đơn giản ! Ghi lại tên sự kiện, bạn sẽ cần thêm nó vào mã NodeMCU của mình sau này. Nhấp chuột 'Tạo trình kích hoạt' .

Bây giờ chọn + cái đó . Tìm kiếm Twitter và kết nối với nó --- bạn sẽ cần cho phép nó đăng lên tài khoản Twitter của bạn. Lựa chọn 'Đăng một tweet' và chọn tin nhắn của bạn.

Màn hình tiếp theo sẽ yêu cầu bạn xem lại applet. Nhấp vào kết thúc. Đó là nó!

Bước 7: Thêm thông tin đăng nhập IFTTT vào mã

Quay lại Arduino IDE, bạn sẽ cần thêm khóa API IFTTT và tên sự kiện vào các biến đã xác định của bạn. Để tìm khóa API, hãy điều hướng đến Applet của tôi và chọn Webhooks Bên dưới Dịch vụ chuyển hướng. Lựa chọn Tài liệu để truy cập vào khóa của bạn.

Sao chép khóa và tên sự kiện vào mã của bạn, thay thế các tên tạm thời được thiết lập cho chúng.

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Lưu ý, dấu phẩy ngược phải giữ nguyên, chỉ thay thế văn bản.

Giữa việc gọi connectToWifi () và gửi bảng ở trạng thái ngủ, tạo một phiên bản của đối tượng thư viện IFTTTWebhook. Đèn LED báo hiệu hoàn thành nhiệm vụ trước khi bắt đầu lại giấc ngủ sâu.

cách giảm độ sáng màn hình windows 10
//just connected to Wi-Fi
IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
//now sending board to sleep

Kích hoạt cuộc gọi trên cái móc đối tượng kích hoạt ứng dụng IFTTT và sẽ đăng lên tài khoản Twitter của bạn. Lưu bản phác thảo của bạn và tải lên. Bây giờ bạn sẽ có một nút tweet đầy đủ chức năng.

Nếu nó có vẻ không hoạt động, hãy kiểm tra kỹ mã và thông tin đăng nhập của bạn để phát hiện sai sót. Nếu bạn thực sự gặp khó khăn, hãy lấy toàn bộ mã ở trên và so sánh với mã của riêng bạn.

Xong! Làm thế nào bạn có thể cải thiện nó hơn nữa?

Đây là phiên bản cơ bản của nút Wi-Fi, nhưng có nhiều cách để cải thiện nó. Để đơn giản, kết nối USB được sử dụng để cấp nguồn ở đây. Một viên pin sẽ làm cho nó hoàn toàn di động và một chiếc hộp đựng mạch sẽ là dự án in 3D hoàn hảo dành cho người mới bắt đầu.

Mặc dù sử dụng chế độ ngủ sâu, bạn có thể thấy pin sẽ hết khá nhanh. Có nhiều Mẹo tiết kiệm năng lượng Arduino giúp ích cho các loại dự án này. Mặc dù khó hơn hướng dẫn này, nhưng nếu bạn tự tạo Arduino có ý thức về nguồn điện từ đầu, thì nút Wi-Fi chạy bằng pin có thể tồn tại trong nhiều tháng!

Dự án này sẽ trở thành sự hoàn hảo cho một điều khiển từ xa cho các ứng dụng nhà thông minh. Đã có một lượng đáng kể ứng dụng tự động hóa nhà có sẵn trên IFTTT. Khi bạn đã nắm được thông tin cơ bản, bạn có thể sử dụng hầu hết mọi cảm biến hoặc công tắc để kích hoạt thực tế bất kỳ dịch vụ nào mà bạn có thể tưởng tượng.

Tín dụng hình ảnh: Vadmary / Tiền gửi

Đăng lại Đăng lại tiếng riu ríu E-mail 6 lựa chọn thay thế có thể nghe được: Ứng dụng sách nói miễn phí hoặc giá rẻ tốt nhất

Nếu bạn không thích trả tiền cho sách nói, đây là một số ứng dụng tuyệt vời cho phép bạn nghe chúng miễn phí và hợp pháp.

Đọc tiếp
Chủ đề liên quan
  • DIY
  • Arduino
  • Hướng dẫn Dự án Tự làm
Giới thiệu về tác giả Ian Buckley(216 bài báo đã xuất bản)

Ian Buckley là một nhà báo tự do, nhạc sĩ, nghệ sĩ biểu diễn và nhà sản xuất video sống ở Berlin, Đức. Khi không viết hay trên sân khấu, anh ấy sẽ mày mò với các thiết bị điện tử hoặc mã tự làm với hy vọng trở thành một nhà khoa học điên rồ.

Xem thêm từ Ian Buckley

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký
Thể LoạI Diy