วิธีสร้างปุ่มเชื่อมต่อ Wi-Fi ของคุณเองด้วย ESP8266

วิธีสร้างปุ่มเชื่อมต่อ Wi-Fi ของคุณเองด้วย ESP8266

Internet of Things มีศักยภาพ DIY มากมาย ด้วยความรู้ที่เพียงพอและส่วนประกอบราคาถูกเพียงเล็กน้อย คุณสามารถสร้างระบบที่ซับซ้อนของอุปกรณ์ที่เชื่อมต่อได้





อย่างไรก็ตาม บางครั้งคุณต้องการอะไรง่ายๆ ไม่มีเสียงระฆังหรือเสียงนกหวีด เพียงแค่ปุ่มที่ทำงานเพียงปุ่มเดียว คุณอาจคุ้นเคยกับสิ่งนี้อยู่แล้ว หากคุณเคยใช้ปุ่ม Amazon Dash เพื่อเรียงลำดับรายการของใช้ในครัวเรือนทุกวัน





วันนี้เราจะสร้างปุ่มที่เปิดใช้งาน Wi-Fi โดยใช้ NodeMCU และตั้งโปรแกรมให้ใช้ IFTTT เพื่อทำ... อะไรก็ได้! คำแนะนำเป็นลายลักษณ์อักษรตามวิดีโอ หากคุณต้องการ





สิ่งที่คุณต้องการ

คุณจะต้องการ:

  • 1 x บอร์ด NodeMCU (ESP8266) มีให้สำหรับ -3 บน AliExpress
  • 1 x ปุ่มกด
  • 1 x LED (อุปกรณ์เสริม)
  • ตัวต้านทาน 1 x 220 โอห์ม (อุปกรณ์เสริม)
  • เขียงหั่นขนมและสายเชื่อมต่อ
  • Micro USB สำหรับการเขียนโปรแกรม
  • คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

นอกจาก NodeMCU แล้ว คุณควรจะสามารถหาชิ้นส่วนเหล่านี้ส่วนใหญ่ได้จากชุดสตาร์ท Arduino บทแนะนำนี้จะถือว่าคุณใช้ LED และตัวต้านทานที่เป็นอุปกรณ์เสริม แต่ไม่จำเป็น



ขั้นตอนที่ 1: การตั้งค่าวงจร

การตั้งค่าฮาร์ดแวร์ทำได้ง่ายมากสำหรับโครงการนี้ ตั้งค่าบอร์ดของคุณตามแผนภาพนี้

ติดสายสีม่วง พิน D0 ไปทางด้านหนึ่งของปุ่ม สายสีเขียวเชื่อมต่ออีกด้านหนึ่งของปุ่มเข้ากับ RST พิน . สายสีน้ำเงินวิ่งจาก พิน D1 ไปที่ตัวต้านทานและ LED ขาลบของ LED ยึดติดกับ GND พิน ของ NodeMCU





เมื่อตั้งค่า breadboard ควรมีลักษณะดังนี้:

วิธีตัดเสียงออกจากไฟล์วิดีโอ

หากคุณสงสัยว่าฉันนำ LED ของฉันไปที่พินกราวด์โดยใช้เพียงสายเคเบิลเล็กๆ เหล่านั้นได้อย่างไร Quick . ของเรา หลักสูตรความผิดพลาดของเขียงหั่นขนม น่าจะช่วยเคลียร์! ตรวจสอบการตั้งค่าของคุณและเชื่อมต่อ NodeMCU กับคอมพิวเตอร์ผ่าน USB





ขั้นตอนที่ 2: การตั้งค่า IDE

ก่อนเริ่มเขียนโค้ด คุณต้องเตรียมการบางอย่างก่อน หากคุณยังไม่ได้ทำ ให้ตั้งค่า Arduino IDE เพื่อจดจำบอร์ด NodeMCU ของคุณ คุณสามารถเพิ่มไปยังรายชื่อบอร์ดของคุณผ่านทาง ไฟล์ > การตั้งค่า .

คุณสามารถหาคำอธิบายโดยละเอียดเพิ่มเติมของขั้นตอนนี้ได้ในบทความแนะนำ NodeMCU ของเรา

โครงการนี้จำเป็นต้องมีห้องสมุด 2 แห่ง นำทางไปยัง ร่าง > รวมไลบรารี > จัดการไลบรารี . ค้นหา ESP8266WIFI โดย Ivan Grokhotkov และติดตั้ง ไลบรารีนี้เขียนขึ้นสำหรับการเชื่อมต่อ Wi-Fi กับบอร์ด NodeMCU

การค้นหาถัดไปสำหรับ IFTTTWebhook โดย John Romkey และติดตั้งเวอร์ชันล่าสุด ไลบรารีนี้ได้รับการออกแบบมาเพื่อลดความซับซ้อนของกระบวนการส่งเว็บฮุคไปยัง IFTTT

นั่นคือการเตรียมการทั้งหมดที่เราต้องการ มาเขียนโค้ดกันเถอะ!

รหัสจะทำงานอย่างไร

เราจะใช้ ESP8266WIFI ห้องสมุดเพื่อสร้างการเชื่อมต่อ Wi-Fi NS IFTTTWebhooks ห้องสมุดส่งคำขอไปยัง IFTTT—ในกรณีนี้ เพื่อโพสต์ไปที่ Twitter จากนั้นสั่งให้บอร์ด NodeMCU เข้าสู่โหมดสลีปเมื่อไม่ได้ใช้งานเพื่อประหยัดพลังงาน

เมื่อกดปุ่ม มันจะเชื่อมโยง D0 และ RST หมุด สิ่งนี้จะรีเซ็ตบอร์ดและกระบวนการก็เกิดขึ้นอีกครั้ง

โค้ดส่วนใหญ่ในบทช่วยสอนนี้เรียบง่ายเพียงพอสำหรับผู้เริ่มต้น ที่กล่าวว่าหากคุณกำลังเริ่มต้น คุณจะพบว่ามันง่ายขึ้นมากที่จะเข้าใจหลังจากติดตามเรา คู่มือสำหรับผู้เริ่มต้น Arduino .

บทแนะนำนี้จะอธิบายโค้ดเป็นส่วนๆ เพื่อช่วยในการทำความเข้าใจ หากคุณต้องการเข้าสู่ธุรกิจโดยตรง คุณสามารถค้นหา กรอกรหัสที่ Pastebin . โปรดทราบว่าคุณจะต้องกรอกข้อมูลรับรอง Wi-Fi และ IFTTT ในรหัสนี้เพื่อให้ทำงานได้!

ขั้นตอนที่ 3: ทดสอบการนอนหลับลึก

ในการเริ่มต้น เราจะสร้างการทดสอบง่ายๆ เพื่อแสดงให้เห็นว่าการนอนหลับลึกทำงานอย่างไร เปิดร่างใหม่ใน Arduino IDE ป้อนรหัสสองส่วนต่อไปนี้

#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'

ในที่นี้ เรารวมไลบรารีของเราไว้ด้วยกันพร้อมกับการกำหนดตัวแปรสองสามตัวที่เราจำเป็นต้องใช้ในสเก็ตช์ของเรา คุณจะสังเกตเห็นว่า ledPin และ wakePin มีหมายเลขแตกต่างกันที่นี่เมื่อเทียบกับไดอะแกรม Fritzing ด้านบน NodeMCU มีพินเอาต์ที่แตกต่างจากบอร์ด Arduino นี่ไม่ใช่ปัญหาเนื่องจากไดอะแกรมที่มีประโยชน์นี้:

ตอนนี้สร้างฟังก์ชั่นการตั้งค่า:

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);
}

ที่นี่ เราตั้งค่าพอร์ตอนุกรมของเรา และใช้การวนรอบในขณะที่รอจนกว่าจะเริ่มต้น เนื่องจากรหัสนี้จะทริกเกอร์หลังจากกดปุ่มรีเซ็ต เราจึงพิมพ์ 'กดปุ่ม' ไปยังจอภาพอนุกรม จากนั้นเราบอกให้ NodeMCU เข้าสู่โหมดสลีปจนกระทั่งปุ่มเชื่อมต่อกับ wakePin เพื่อ RST พินถูกกด

สุดท้ายสำหรับการทดสอบ ให้เพิ่มสิ่งนี้ลงใน .ของคุณ วน () กระบวนการ:

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

โดยปกติ Arduino Sketches จะเรียกใช้ฟังก์ชันลูปอย่างต่อเนื่องหลังจากตั้งค่า เนื่องจากเราส่งบอร์ดเข้าสู่โหมดสลีปก่อนที่การตั้งค่าจะสิ้นสุด การวนซ้ำจะไม่ทำงาน

บันทึกภาพร่างของคุณและอัปโหลดไปยังบอร์ด เปิดมอนิเตอร์ซีเรียลแล้วคุณจะเห็น 'กดปุ่มแล้ว' ทุกครั้งที่ปุ่มทำงาน บอร์ดจะรีเซ็ตและพิมพ์ข้อความอีกครั้ง มันได้ผล!

หมายเหตุเกี่ยวกับ Serial Monitor

คุณอาจสังเกตเห็นอักขระไร้สาระบางตัวในมอนิเตอร์แบบอนุกรมระหว่างบางโครงการของคุณ ซึ่งมักเกิดจากการไม่ได้ตั้งค่ามอนิเตอร์แบบอนุกรมเป็นอัตราบอดเดียวกับ Serial.begin(XXXX) ประเมินค่า.

คำแนะนำจำนวนมากแนะนำให้เริ่มต้นการเชื่อมต่อแบบอนุกรมที่อัตราบอดที่ 115200 สำหรับโครงการเช่นนี้ ฉันลองใช้ชุดค่าผสมต่างๆ มากมาย และแต่ละชุดมีระดับของการพูดพล่อยๆ ก่อนและหลังข้อความซีเรียลที่แตกต่างกัน ตามการโพสต์ในฟอรัมต่างๆ นี่อาจเป็นเพราะบอร์ดที่ผิดพลาดหรือปัญหาความเข้ากันได้ของซอฟต์แวร์ เนื่องจากไม่ส่งผลกระทบต่อโครงการมากนัก ฉันจึงเลือกที่จะแสร้งทำเป็นว่าไม่เกิดขึ้น

วิธีแก้ไขแทร็คแพดบน macbook

หากคุณกำลังมีปัญหากับมอนิเตอร์แบบอนุกรม ให้ลองใช้อัตราบอดที่แตกต่างกันและดูว่าแบบไหนดีที่สุดสำหรับคุณ

ขั้นตอนที่ 4: การเชื่อมต่อกับ Wi-Fi

ตอนนี้สร้างฟังก์ชันสำหรับเชื่อมต่อกับเครือข่าย Wi-Fi ของคุณ

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');
}
}

วิธีนี้พยายามเชื่อมต่อกับเครือข่ายของคุณสิบครั้งโดยใช้เวลาไม่กี่วินาที ความสำเร็จหรือความล้มเหลวของการเชื่อมต่อจะพิมพ์ไปยังจอภาพแบบอนุกรม

ขั้นตอนที่ 5: เรียกวิธีการเชื่อมต่อ

ตอนนี้ เชื่อมต่อไปยัง Wifi() ไม่เคยถูกเรียก เพิ่มการเรียกไปยังฟังก์ชันการตั้งค่าของคุณระหว่างข้อความ 'กดปุ่มแล้ว' และส่งบอร์ดเข้าสู่โหมดสลีป

connectToWifi();

ในกรณีที่คุณสงสัยว่าสิ่งนี้เหมาะสมควรมีลักษณะดังนี้:

ที่ด้านบนของร่างแทนที่ ssid และ รหัสผ่าน ตัวแปรด้วยข้อมูลรับรอง Wi-Fi ของคุณ บันทึกภาพร่างของคุณและอัปโหลดไปยังบอร์ด

ตอนนี้เมื่อบอร์ดบูทระบบจะพยายามเชื่อมต่อกับเครือข่าย Wi-Fi ของคุณก่อนที่จะกลับไปที่ฟังก์ชั่นการตั้งค่า ตอนนี้ มาตั้งค่าการรวม IFTTT กัน

ขั้นตอนที่ 6: การตั้งค่าการรวม IFTTT

IFTTT ช่วยให้สามารถทำงานร่วมกับบริการเว็บมากมาย เราใช้มันในบทช่วยสอน LED Wi-Fi PC tower เพื่อส่งการแจ้งเตือนทุกครั้งที่ได้รับอีเมลใหม่ วันนี้เราจะใช้มันเพื่อส่งทวีตที่กดปุ่มเพียงปุ่มเดียว

นำทางไปยัง แอปเพล็ตของฉัน หน้า แล้วเลือก แอปเพล็ตใหม่

คลิกที่ +นี่ และเชื่อมต่อกับ เว็บฮุค . เลือก 'รับคำขอทางเว็บ' และตั้งชื่อกิจกรรมของคุณ ง่าย ๆ เข้าไว้ ! จดชื่อกิจกรรมไว้ คุณจะต้องเพิ่มลงในโค้ด NodeMCU ในภายหลัง คลิก 'สร้างทริกเกอร์' .

ตอนนี้เลือก +นั่น . ค้นหา ทวิตเตอร์ บริการและเชื่อมต่อ --- คุณจะต้องอนุญาตให้โพสต์ไปยังบัญชี Twitter ของคุณ เลือก 'โพสต์ทวีต' และเลือกข้อความของคุณ

หน้าจอถัดไปจะขอให้คุณตรวจสอบแอปเพล็ต คลิกเสร็จสิ้น แค่นั้นแหละ!

ขั้นตอนที่ 7: การเพิ่มข้อมูลรับรอง IFTTT ให้กับรหัส

ย้อนกลับไปใน Arduino IDE คุณจะต้องเพิ่มคีย์ IFTTT API และชื่อเหตุการณ์ให้กับตัวแปรที่คุณกำหนด หากต้องการค้นหาคีย์ API ให้ไปที่ แอปเพล็ตของฉัน และเลือก เว็บฮุค ภายใต้ บริการ แท็บ เลือก เอกสาร เพื่อเข้าถึงคีย์ของคุณ

คัดลอกคีย์และชื่อเหตุการณ์ลงในโค้ดของคุณ โดยแทนที่ชื่อชั่วคราวที่ตั้งไว้

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

หมายเหตุ เครื่องหมายจุลภาคกลับต้องอยู่ แทนที่ข้อความเท่านั้น

ระหว่างเรียก เชื่อมต่อไปยัง Wifi() และส่งบอร์ดเข้าสู่โหมดสลีปสร้างอินสแตนซ์ของอ็อบเจ็กต์ไลบรารี IFTTTWebhook ไฟ LED ส่งสัญญาณว่างานเสร็จสิ้นก่อนที่โหมดสลีปจะเริ่มต้นอีกครั้ง

wii u เข้ากันได้กับ gamecube หรือไม่?
//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

ทริกเกอร์การโทรบน ตะขอ ออบเจ็กต์จะปิดแอปเพล็ต IFTTT และควรโพสต์ไปยังบัญชี Twitter ของคุณ บันทึกภาพร่างของคุณและอัปโหลด ตอนนี้คุณควรมีปุ่มทวีตที่ทำงานได้อย่างสมบูรณ์

หากดูเหมือนว่าจะใช้งานไม่ได้ ให้ตรวจสอบรหัสและข้อมูลรับรองของคุณอย่างละเอียดเพื่อหาข้อผิดพลาด หากคุณติดขัดจริงๆ ให้เอาโค้ดทั้งหมดจากด้านบนมาเปรียบเทียบกับโค้ดของคุณเอง

เสร็จแล้ว! คุณจะปรับปรุงให้ดีขึ้นได้อย่างไร?

นี่เป็นปุ่ม Wi-Fi รุ่นพื้นฐาน แต่มีหลายวิธีที่สามารถปรับปรุงได้ เพื่อความเรียบง่าย การเชื่อมต่อ USB ใช้สำหรับจ่ายไฟที่นี่ แบตเตอรี่จะทำให้อุปกรณ์เคลื่อนที่ได้ทั้งหมด และเคสที่ยึดวงจรไว้จะเป็นโปรเจ็กต์การพิมพ์ 3 มิติสำหรับผู้เริ่มต้นที่สมบูรณ์แบบ

แม้จะใช้งานโหมดหลับลึก แต่คุณอาจพบว่าแบตเตอรี่หมดเร็วมาก มีมากมาย เคล็ดลับการประหยัดพลังงาน Arduino ที่ช่วยในโครงการประเภทนี้ แม้ว่าจะยากกว่าบทช่วยสอนนี้ หากคุณสร้าง Arduino ที่คำนึงถึงพลังงานของคุณเองตั้งแต่ต้น ปุ่ม Wi-Fi ที่ใช้พลังงานจากแบตเตอรี่อาจอยู่ได้นานหลายเดือน!

โครงการนี้จะทำให้สมบูรณ์แบบสำหรับรีโมทสำหรับแอปพลิเคชันบ้านอัจฉริยะ มีอยู่แล้วเป็นจำนวนมาก แอปเพล็ตระบบอัตโนมัติภายในบ้าน มีอยู่ใน IFTTT เมื่อคุณมีพื้นฐานแล้ว คุณสามารถใช้เซ็นเซอร์หรือสวิตช์เกือบทั้งหมดเพื่อเรียกใช้บริการใดๆ ก็ตามที่คุณสามารถจินตนาการได้

เครดิตภาพ: Vadmary / ฝากรูปถ่าย

แบ่งปัน แบ่งปัน ทวีต อีเมล 6 ทางเลือกที่ได้ยิน: แอพหนังสือเสียงฟรีหรือราคาถูกที่ดีที่สุด

หากคุณไม่ต้องการจ่ายค่าหนังสือเสียง นี่คือแอพดีๆ ที่ให้คุณฟังได้ฟรีและถูกกฎหมาย

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • DIY
  • Arduino
  • บทแนะนำโครงการ DIY
เกี่ยวกับผู้เขียน เอียน บัคลี่ย์(216 บทความที่ตีพิมพ์)

Ian Buckley เป็นนักข่าวอิสระ นักดนตรี นักแสดง และโปรดิวเซอร์วิดีโอที่อาศัยอยู่ในกรุงเบอร์ลิน ประเทศเยอรมนี เมื่อเขาไม่ได้เขียนหนังสือหรืออยู่บนเวที เขากำลังซ่อมแซมอุปกรณ์อิเล็กทรอนิกส์หรือโค้ด DIY โดยหวังว่าจะเป็นนักวิทยาศาสตร์ที่คลั่งไคล้

เพิ่มเติมจาก Ian Buckley

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก
หมวดหมู่ Diy