สารบัญ:
- ขั้นตอนที่ 1: ต่อวงจร
- ขั้นตอนที่ 2: เตรียมเว็บแอป
- ขั้นตอนที่ 3: ตั้งโปรแกรมบอร์ด NodeMCU
- ขั้นตอนที่ 4: สนุกกับอุปกรณ์ของคุณ
วีดีโอ: การแจ้งเตือนเหตุการณ์แบบเรียลไทม์โดยใช้ NodeMCU (Arduino), Google Firebase และ Laravel: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
คุณเคยต้องการรับการแจ้งเตือนเมื่อมีการดำเนินการบนเว็บไซต์ของคุณแต่อีเมลไม่เหมาะสมหรือไม่? คุณต้องการที่จะได้ยินเสียงหรือระฆังทุกครั้งที่คุณทำการขาย? หรือมีความจำเป็นที่คุณจะต้องให้ความสนใจทันทีเนื่องจากเหตุฉุกเฉินที่บ้าน?
อุปกรณ์นี้สามารถแจ้งเตือนคุณแบบเรียลไทม์เกี่ยวกับสิ่งที่คุณต้องการ
ขั้นตอนที่ 1: ต่อวงจร
อุปกรณ์ที่ฉันสร้างประกอบด้วยบอร์ด NodeMCU พร้อมออดเพื่อเตือนฉันเมื่อมียอดขายบนเว็บไซต์ ไมโครคอนโทรลเลอร์ได้รับการตั้งโปรแกรมโดยใช้ซอฟต์แวร์ Arduino และส่วนทริกเกอร์สามารถเป็นเว็บแอปพลิเคชัน iOS หรือ Android ฉันได้สร้างเว็บแอปพลิเคชันอย่างง่ายสองรายการ อันแรกใน Laravel และอีกอันใน HTML ธรรมดาและ JavaScript สำหรับตัวอย่าง
เนื่องจากบอร์ด NodeMCU สามารถทำงานได้อย่างปลอดภัยจนถึงประมาณ 12mA ของกระแสไฟบนพิน ออดจึงเชื่อมต่อผ่านทรานซิสเตอร์ NPN ฉันใช้ 2N2222 เพราะฉันมีหลายตัววางอยู่รอบ ๆ แต่ฉันแน่ใจว่าหลักการจะเหมือนกันกับทรานซิสเตอร์ NPN อื่น ๆ
ในการต่อวงจร ให้ต่อตัวเก็บประจุของทรานซิสเตอร์กับพิน Vin บนบอร์ด ออดจะทำงานที่ 5V และเนื่องจากเราจะจ่ายไฟให้กับอุปกรณ์จาก USB พินนี้จะให้แรงดันไฟฟ้าก่อนตัวควบคุม 3.3V บนบอร์ด
ถัดไป เชื่อมต่อด้านบวกของออดกับอีซีแอลของทรานซิสเตอร์ และพินลบของออดกับพินกราวด์ใดๆ บนบอร์ด ฉันใช้พิน 2 แล้ว แต่คุณสามารถเชื่อมต่อได้ที่พิน 9, 25 หรือ 29
ฐานของทรานซิสเตอร์เชื่อมต่อกับพิน D2 ซึ่งสัมพันธ์กับ GPIO 4 บนซอฟต์แวร์ Arduino ด้วยการตั้งค่านี้ ทรานซิสเตอร์จะทำงานได้อย่างมีประสิทธิภาพเป็นสวิตช์เปิดเสียงกริ่งในแต่ละเหตุการณ์ แทนที่จะใช้เสียงกริ่ง คุณสามารถเชื่อมต่อรีเลย์ในลักษณะเดียวกันเพื่อให้สามารถขับเคลื่อนอุปกรณ์หลัก เช่น หลอดไฟ เครื่องจักร หรือไซเรน หากคุณกำลังสร้างอุปกรณ์เตือนภัย
ขั้นตอนที่ 2: เตรียมเว็บแอป
สำหรับส่วนการทริกเกอร์และเรียลไทม์ของอุปกรณ์ เราจะใช้ฐานข้อมูลเรียลไทม์ Firebase ของ Google ฐานข้อมูลบนคลาวด์ NoSQL ที่ยอดเยี่ยมนี้สร้างโดย Google ซึ่งให้การซิงโครไนซ์ข้อมูลแบบเรียลไทม์ระหว่างแต่ละแพลตฟอร์มที่ใช้
ขั้นแรกให้สร้างโครงการด้วยชื่อที่คุณเลือก เมื่อสร้างแล้ว ให้สร้างโหนดเดียวที่เรียกว่า "นับ" และเริ่มต้นด้วยค่าถ้าเป็น 0 นี่จะเป็นจำนวนเริ่มต้นของเราที่เราต้องการติดตามในอนาคต
แอปพลิเคชัน Laravel ใช้แพ็คเกจ “firebase-php” จาก Kreait และมีลิงก์อยู่ด้านล่าง ติดตั้งแพ็คเกจโดยเรียกใช้ "composer require kreait/firebase-php" เมื่อการติดตั้งเสร็จสิ้น เราต้องสร้างตัวควบคุมที่การดำเนินการจะเกิดขึ้น ฉันตั้งชื่อเมธอดนี้ว่า "อัปเดต" และฉันได้เชื่อมต่อมันในเส้นทางของการดำเนินการ POST
ในการดึงข้อมูลอินสแตนซ์ Firebase คุณต้องมีไฟล์ json ที่คุณต้องดาวน์โหลดจากคอนโซล Firebase วางไฟล์นี้ในรูทของโปรเจ็กต์ Laravel ของคุณและตั้งชื่อเป็น firebase.json เมื่อดึงข้อมูลอินสแตนซ์ firebase เราจำเป็นต้องจัดเตรียมพาธไปยังไฟล์นี้โดยใช้เมธอด withCredentials
หลังจากที่เราได้รับอินสแตนซ์ของ firebase เราจำเป็นต้องได้รับการอ้างอิงไปยังฐานข้อมูลและโหนดที่เราได้สร้างไว้ก่อนหน้านี้ ในแต่ละการกระทำ เราจะได้รับค่าปัจจุบันของโหนด เพิ่มขึ้นหนึ่งค่าและบันทึกหากกลับไปที่ฐานข้อมูล สิ่งนี้จะติดตามกิจกรรมของเราที่เราต้องแจ้ง
สามารถทำได้เช่นเดียวกันกับ HTML และ JavaScript ธรรมดา โดยใช้ไลบรารี firebase ที่ให้มา ขั้นแรกเราต้องจัดเตรียมอาร์เรย์การกำหนดค่าด้วยการตั้งค่าที่เหมาะสมจากคอนโซล Firebase และเริ่มต้นแอป เมื่อเริ่มต้นแล้ว เราได้รับการอ้างอิงไปยังโหนดที่เราจัดเก็บจำนวนเหตุการณ์และแนบ Listener เพื่อดึงการเปลี่ยนแปลงค่าใดๆ
นอกจากนี้ แทนที่จะส่งแบบฟอร์มดังในตัวอย่าง Laravel ตอนนี้ เรามีฟังก์ชัน JavaScript ที่ถูกเรียกเมื่อคลิกปุ่ม อัปเดตการนับ และเขียนค่าที่อัปเดตกลับไปยังฐานข้อมูล
ขั้นตอนที่ 3: ตั้งโปรแกรมบอร์ด NodeMCU
ในการตั้งโปรแกรม NodeMCU ฉันเคยใช้ซอฟต์แวร์ Arduino และหลังจากติดตั้งบอร์ดลงไปแล้ว ฉันแน่ใจว่าได้เลือกเวอร์ชันและพอร์ตที่เหมาะสมเพื่อให้ฉันสามารถอัปโหลดซอฟต์แวร์ได้ ของฉันเป็นเวอร์ชัน 1.0 ดังนั้นโปรดตรวจสอบกับบอร์ดของคุณอีกครั้งก่อนดำเนินการต่อ
ส่วนแรกของรหัส Arduino ตั้งค่าคำจำกัดความที่จำเป็นทั้งหมดที่คุณต้องปรับเปลี่ยนบนอุปกรณ์ของคุณ การตั้งค่าดังกล่าวอย่างแรกคือ ssid ของ WiFi และรหัสผ่าน จากนั้นเราต้องตั้งค่า URL ของ firebase และความลับของ firebase db ขออภัย นี่ไม่ใช่วิธีแนะนำในการเชื่อมต่อกับฐานข้อมูล แต่ ณ ตอนนี้ เป็นวิธีเดียวที่ห้องสมุดสนับสนุน คุณสามารถค้นหาความลับนี้ได้ภายใต้การตั้งค่าโปรเจ็กต์ เมนูบัญชีบริการในคอนโซล firebase
คำจำกัดความต่อไปคือเส้นทางที่เราจะตรวจสอบการอัปเดตและรหัสอุปกรณ์ จำเป็นต้องมีรหัสอุปกรณ์ ดังนั้นในกรณีที่เรามีอุปกรณ์หลายเครื่องที่ต้องแจ้งเตือนเกี่ยวกับเหตุการณ์เดียวกัน เราจำเป็นต้องรู้ว่าอุปกรณ์ใดที่แจ้งให้เราทราบสำหรับเหตุการณ์นั้นและเก็บบันทึกเหตุการณ์นั้นไว้ อันสุดท้ายเราต้องตั้งค่าพินที่เราเชื่อมต่อออดและนี่คือ D2 ในกรณีของเรา
ฟังก์ชันการตั้งค่ากำหนดพิน LED ในตัวและพิน D2 เป็นเอาต์พุต เริ่มการสื่อสารแบบอนุกรมเพื่อทราบว่าเกิดอะไรขึ้นและเชื่อมต่อกับเครือข่าย WiFi ที่ระบุ เมื่อสร้างการเชื่อมต่อแล้ว จะเริ่มการสื่อสารกับ Firebase และรับค่าล่าสุดที่เรารายงาน จากนั้นจะเริ่มฟังการเปลี่ยนแปลงในเส้นทางที่ระบุ
ในลูปหลักมีการเรียกใช้ฟังก์ชันการกะพริบซึ่งจะกะพริบไฟ LED ในตัวเป็นเวลา 500 มิลลิวินาทีเพื่อให้เราสามารถบอกได้ว่าอุปกรณ์กำลังทำงานอยู่ เมื่อตรวจพบการเปลี่ยนแปลงและมีข้อมูลที่พร้อมใช้งาน เราสามารถอ่านด้วยฟังก์ชันที่พร้อมใช้งาน กำลังอ่านค่าใหม่ของโหนด ความแตกต่างจะถูกคำนวณเนื่องจากอาจมีหลายเหตุการณ์ในระหว่างนี้ และส่งเสียงบี๊บในแต่ละครั้ง ของความแตกต่าง
ตัวอย่างเช่น หากความแตกต่างระหว่างค่าที่รายงานล่าสุดกับค่าใหม่คือ 4 ระบบจะส่งเสียงบี๊บ 4 ครั้งเพื่อแจ้งให้คุณทราบว่ามีการซื้อใหม่ 4 รายการ ฟังก์ชันบี๊บใช้ฟังก์ชันโทนเสียงในตัวเพื่อเล่นความถี่ที่ระบุผ่านออดตามช่วงเวลาที่กำหนด
หลังจากส่งเสียงบี๊บ ค่าใหม่จะได้รับการอัปเดตสำหรับอุปกรณ์ที่ระบุและการสตรีมจะเริ่มต้นใหม่อีกครั้ง ขณะนี้มีปัญหาเปิดในไลบรารี arduino firebase ที่การสตรีมไม่ดำเนินต่อไปโดยอัตโนมัติหลังจากที่เราบันทึกค่าด้วยตนเอง ดังนั้นเราจึงจำเป็นต้องเริ่มต้นใหม่
ขั้นตอนที่ 4: สนุกกับอุปกรณ์ของคุณ
รหัสทั้งหมดที่ฉันใช้มีอยู่ในบัญชี GitHub ที่ลิงก์ด้านล่างพร้อมกับลิงก์ไปยังแผนผังของโครงการ
รหัสแหล่งที่มา
แผนผัง
โค้ดนี้สามารถนำมาใช้กับสถานการณ์และเหตุการณ์ต่างๆ ได้อย่างง่ายดาย และฉันแน่ใจว่าคุณจะสนุกกับการเล่นมันมาก
สำหรับฉันมันเป็นงานสร้างที่สนุกจริงๆ และฉันก็ได้เรียนรู้อะไรมากมายเกี่ยวกับมัน และฉันมีความสุขจริงๆ ฉันหวังว่ามันจะช่วยคุณในโครงการของคุณ แต่ถ้าคุณพบว่าตัวเองติดอยู่กับส่วนใดส่วนหนึ่งของมันหรือคุณต้องการคำอธิบายเพิ่มเติม โปรดแจ้งให้เราทราบในความคิดเห็นและเราจะพยายามอย่างเต็มที่เพื่อช่วยเหลือคุณ
หากคุณชอบโครงการโปรดสมัครรับข้อมูลจากช่อง YouTube ของฉัน:
ลิ้มรสรหัส
แนะนำ:
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
IoT Air Freshener (พร้อม NodeMCU, Arduino, IFTTT และ Adafruit.io): 15 ขั้นตอน (พร้อมรูปภาพ)
IoT Air Freshener (พร้อม NodeMCU, Arduino, IFTTT และ Adafruit.io): Instructables Wireless Contest 2017 ผู้ชนะรางวัลที่หนึ่ง!!!:DNew นำเสนอแล้ว: นาฬิกา IoT พร้อมพยากรณ์อากาศ! ลองดู: https://www.instructables.com/id/Minimalist-IoT-Clock-using-ESP8266-Adafruitio-IFTT/ รู้สึกสบายใจที่มีเศษ
IoT Wallet (กระเป๋าเงินอัจฉริยะพร้อม Firebeetle ESP32, Arduino IDE และ Google Spreadsheet): 13 ขั้นตอน (พร้อมรูปภาพ)
IoT Wallet (กระเป๋าเงินอัจฉริยะพร้อม Firebeetle ESP32, Arduino IDE และ Google สเปรดชีต): รางวัลที่หนึ่งจากการประกวด Instructables Pocket-Sized!:Dหากคุณลงทุนเงินบางส่วนในสกุลเงินดิจิทัล คุณอาจรู้อยู่แล้วว่ามีความผันผวนสูง พวกเขาเปลี่ยนในชั่วข้ามคืน และคุณไม่มีทางรู้ได้เลยว่าเงิน 'จริง' ที่คุณยังมีอยู่ในวอลล์ของคุณ
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ