สารบัญ:

WiFi อย่างง่ายเป็น BLE (บลูทูธพลังงานต่ำ) บริดจ์: 9 ขั้นตอน (พร้อมรูปภาพ)
WiFi อย่างง่ายเป็น BLE (บลูทูธพลังงานต่ำ) บริดจ์: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: WiFi อย่างง่ายเป็น BLE (บลูทูธพลังงานต่ำ) บริดจ์: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: WiFi อย่างง่ายเป็น BLE (บลูทูธพลังงานต่ำ) บริดจ์: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, กรกฎาคม
Anonim
WiFi อย่างง่ายถึง BLE (บลูทูธพลังงานต่ำ) สะพาน
WiFi อย่างง่ายถึง BLE (บลูทูธพลังงานต่ำ) สะพาน
WiFi อย่างง่ายถึง BLE (บลูทูธพลังงานต่ำ) สะพาน
WiFi อย่างง่ายถึง BLE (บลูทูธพลังงานต่ำ) สะพาน
WiFi อย่างง่ายถึง BLE (บลูทูธพลังงานต่ำ) สะพาน
WiFi อย่างง่ายถึง BLE (บลูทูธพลังงานต่ำ) สะพาน

อัปเดต 4 ธันวาคม 2560 - แก้ไขภาพร่าง Feather nRF52 และเคล็ดลับการดีบัก เพิ่มรูปภาพของสะพานที่ติดตั้งในกล่อง

โครงการที่เรียบง่ายนี้ให้การเข้าถึง WiFi สำหรับโมดูล Bluetooth Low Energy (BLE) ที่ใช้ UART ของ Nordic ด้วย TX Notify บริดจ์ Wifi2BLE นั้นโปร่งใสอย่างสมบูรณ์ เพียงแค่ส่งข้อมูล WiFi ไปยังอุปกรณ์ BLE และส่งข้อมูลของอุปกรณ์ BLE กลับไปยังการเชื่อมต่อ WiFi

pfodDesignerV3 ฟรีจะสร้างโค้ดเพื่อใช้บริการ Nordic UART ในโมดูล BLE จำนวนมาก รวมถึง Adafruit Bluefruit Feather nRF52, Arduino/Genuino 101, RedBearLab BLE Nano V2 และ V1-V1.5, RedBearLab BLE Shield, Adafruit Bluefruit LE UART Friend และ Flora Boards, Adafruit Bluefruit LE SPI (เช่น Bluefruit LE Shield, Bluefruit LE Micro, Feather 32u4 Bluefruit LE, Feather M0 Bluefruit LE หรือ Bluefruit LE SPI Friend) และบอร์ดอื่นๆ ที่ให้คุณตั้งโปรแกรมบริการของคุณเองได้

บริดจ์ Wifi2BLE นี้เหมาะสำหรับคอนสตรัคเตอร์ที่ไม่มีประสบการณ์ซึ่งสามารถบัดกรีได้ มันใช้เพียงสองแผง สายแพรหนึ่งเส้น และตัวต้านทานสองตัว

เช่นเดียวกับการทดสอบโดยละเอียดสำหรับแต่ละบอร์ด คำแนะนำนี้มีขั้นตอนวิธีใช้ - ใช้งานไม่ได้พร้อมคำแนะนำในการค้นหาข้อผิดพลาดเพิ่มเติม

คำแนะนำเหล่านี้ยังมีให้ทางออนไลน์

ทำไมโครงการนี้?

โครงการนี้แก้ปัญหาหลายอย่างที่ BLE (Bluetooth Low Energy) มี

  • เฉพาะโทรศัพท์มือถือและคอมพิวเตอร์รุ่นล่าสุดเท่านั้นที่รองรับ BLE บริดจ์ Wifi2BLE อนุญาตให้มือถือหรือคอมพิวเตอร์ทุกเครื่องที่มีการเชื่อมต่อ WiFi เชื่อมต่อและควบคุมอุปกรณ์ BLE
  • BLE มีขอบเขตจำกัด บริดจ์ Wifi2BLE ช่วยให้คุณเข้าถึงอุปกรณ์ BLE จากทุกที่ในบ้าน (ที่มีการเชื่อมต่อ WiFi) และจากภายนอกผ่านทางอินเทอร์เน็ต
  • การสร้างแอป BLE คุณต้องเรียนรู้ Android หรือ iOS บริดจ์ Wifi2BLE ให้การเชื่อมต่อ telnet สากลผ่านโปรแกรมเทอร์มินัลใดๆ ยิ่งไปกว่านั้น คุณสามารถเพิ่มหน้าเว็บลงในโมดูล WiFi เพื่อสร้างอินเทอร์เฟซที่กำหนดเองได้
  • BLE V5 ให้สัญญาเครือข่ายแบบตาข่ายเพื่อเชื่อมต่ออุปกรณ์ BLE ในบ้านของคุณทั้งหมด เมื่อซอฟต์แวร์ตามข้อกำหนด Bluetooth ล่าสุด บริดจ์ Wifi2BLE ใช้อุปกรณ์ BLE V5 และจะให้การเข้าถึงอินเทอร์เน็ตไปยังเครือข่ายในบ้านนี้เมื่อมาถึง

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

ขั้นตอนที่ 1: รายการชิ้นส่วน

ราคา ~60 ดอลลาร์สหรัฐ ณ วันที่ 30 พ.ย. 2017 ไม่รวมค่าจัดส่ง + กล่องพลาสติกขนาดเล็ก

Adafruit Feather nRF52 Bluefruit LE – nRF52832 – ~ US$25

Adafruit HUZZAH ESP8266 ฝ่าวงล้อม - ~US$10

สายเคเบิลริบบอนพร้อมปลายแยกตัวเมีย – สายเคเบิลโจรสลัดบัส ~US$5 https://www.sparkfun.com/products/9556 OR 10-pin IDC Socket Rainbow Breakout Cable ~US$4 https://www.sparkfun.com/products/ 9556 OR ที่คล้ายกัน

แบ่งส่วนหัวชาย - มุมขวา – ~ US$2

สายเคเบิลอนุกรม USB เป็น TTL 3V3 – ~ US$10 https://www.sparkfun.com/products/12977 (แนะนำให้ใช้เพราะมีหมุดติดป้าย) หรือ https://www.sparkfun.com/products/12977 (ไม่ใช่หมุด ติดฉลาก)

สาย USB A ถึง Micro B – ~ US$4 https://www.sparkfun.com/products/12977 (ยาว 3 ฟุต) หรือ ~US$3 https://www.sparkfun.com/products/12977 (ยาว 6 นิ้ว) หรือ ~US$2 https://www.sparkfun.com/products/12977 (ยาว 6 นิ้ว) หรือ ~US$5 https://www.sparkfun.com/products/12977 (ยาว 6 ฟุต) หรือใกล้เคียง

ตัวต้านทาน 2 x 100 โอห์ม – ~ US$1

แหล่งจ่ายไฟ USB (500mA หรือมากกว่า) – ~US$6 https://www.sparkfun.com/products/12890 หรือ ~US$7 https://www.adafruit.com/product/1994 หรือใกล้เคียง

Arduino IDE V1.8.5 และคอมพิวเตอร์สำหรับใช้งาน

สำหรับกล่องพลาสติก ฉันใช้ของ Jaycar UB5 (สีน้ำเงิน) 83 มม. x 54 มม. x 31 มม. ~ A$4

ขั้นตอนที่ 2: วงจร Wifi2BLE

วงจร Wifi2BLE
วงจร Wifi2BLE

วงจร Wifi2BLE แสดงไว้ด้านบน เวอร์ชัน pdf อยู่ที่นี่ อย่างที่คุณเห็นวงจรนั้นง่ายมาก เพียง 4 สายและตัวต้านทานป้องกัน 100 โอห์มสองตัว ตัวต้านทานป้องกันในกรณีที่คุณพลาดการเชื่อมต่อสาย TX / RX หลังจากตั้งโปรแกรม HUZZAH ESP8266 หรือ Feather nRF52

หมายเหตุ: การทำเครื่องหมายบนบอร์ด Feather nRF52 สำหรับพิน TX และ RX นั้นไม่ถูกต้อง อันที่จริงพิน TX นั้นอยู่ถัดจากพิน DFU และพิน RX นั้นอยู่ถัดจากพิน MISO

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

ขั้นตอนที่ 3: การสร้าง Wifi2BLE

การก่อสร้าง Wifi2BLE
การก่อสร้าง Wifi2BLE
การก่อสร้าง Wifi2BLE
การก่อสร้าง Wifi2BLE
การก่อสร้าง Wifi2BLE
การก่อสร้าง Wifi2BLE

หมุดส่วนหัวมุมขวาที่บัดกรีบน HUZZAH ESP8266 เพื่อให้ถอดปลั๊กสำหรับการตั้งโปรแกรมได้ ใช้สายแพสี่สายเพื่อเชื่อมต่อบอร์ดทั้งสอง เก็บขั้วต่อพินตัวเมียไว้และตัดปลายอีกด้านของสายแพ สายแพของฉันมีสีเดียวกับสายการเขียนโปรแกรม Sparkfun USB to TTL ดังนั้นฉันจึงเลือกลวดให้เข้ากับมัน สีดำสำหรับ GND, สีแดงสำหรับ 5V+, สีส้มสำหรับ TX (เชื่อมต่อกับ ESP8266 RX) และสีน้ำตาลสำหรับ RX (เชื่อมต่อกับ ESP8266 TX)

ฉันต่อสายตัวต้านทานป้องกันที่ด้านหลังของบอร์ด Feather nRF52 (ตัวสร้างสังเกตการณ์ที่รู้รหัสตัวต้านทานของพวกเขาจะเห็นว่าฉันใช้ตัวต้านทาน 68 โอห์มสองตัวที่ฉันใช้แทนตัว 100 โอห์ม) แล้วหุ้มฉนวนด้วยฟิล์มหด

สายเคเบิลสีแดงถูกบัดกรีเข้ากับพิน USB Feather nRF52 เพื่อรับ USB 5V เพื่อจ่ายไฟให้กับโมดูล HUZZAH ESP8266 และสายเคเบิลสีดำถูกบัดกรีเข้ากับพิน Feather nRF52 GND

มีทั้งหมดยกเว้นการเขียนโปรแกรมโมดูลตามที่อธิบายไว้ด้านล่างโดยวางไว้ในกล่องพลาสติกและเสียบแหล่งจ่ายไฟ USB เข้ากับ Feather nRF52

ขั้นตอนที่ 4: การเขียนโปรแกรม Wifi2BLE

การเขียนโปรแกรม Wifi2BLE
การเขียนโปรแกรม Wifi2BLE
การเขียนโปรแกรม Wifi2BLE
การเขียนโปรแกรม Wifi2BLE
การเขียนโปรแกรม Wifi2BLE
การเขียนโปรแกรม Wifi2BLE

การเขียนโปรแกรม HUZZAH ESP8266

ในการตั้งโปรแกรม Shield ให้ทำตามคำแนะนำที่ให้ไว้ใน https://github.com/esp8266/Arduino ภายใต้ Installing With Boards Manager เมื่อเปิด Boards Manager จากเมนู Tools → Board แล้วเลือก Type Contributed และติดตั้งแพลตฟอร์ม esp8266 โปรเจ็กต์นี้รวบรวมโดยใช้ ESP8266 เวอร์ชัน 2.3.0 เวอร์ชันอื่นๆ จะมีชุดบั๊กของตัวเองและอาจใช้ไม่ได้กับโค้ดนี้

หมายเหตุ: อย่าใช้การติดตั้ง Adafruit Board เนื่องจากภาพร่างที่ใช้ในที่นี้จะไม่คอมไพล์ภายใต้รหัสนั้น

ปิดและเปิด Arduino IDE อีกครั้ง และคุณสามารถเลือก “Adafruit HUZZAH ESP8266” จากเมนู Tools → Board ได้แล้ว

คุณต้องติดตั้งไลบรารี pfodESP8266WiFiBufferedClient เวอร์ชันล่าสุดด้วย ไลบรารีนี้ทำงานร่วมกับปลั๊กอิน IDE ของ ESP8266.com V2.3 (หากคุณเคยติดตั้งไลบรารี pfodESP2866WiFi ไว้ก่อนหน้านี้ ให้ลบไดเร็กทอรีไลบรารีนั้นโดยสมบูรณ์)

  • ก) ดาวน์โหลดไฟล์ pfodESP8266WiFiBufferedClient.zip นี้ไปยังคอมพิวเตอร์ของคุณ ย้ายไปยังเดสก์ท็อปหรือโฟลเดอร์อื่นๆ ที่คุณสามารถหาได้ง่าย
  • b) จากนั้นใช้ตัวเลือกเมนู Arduino 1.8.5 IDE Sketch → นำเข้าไลบรารี → เพิ่มไลบรารีเพื่อติดตั้ง (หาก Arduino ไม่อนุญาตให้คุณติดตั้งเพราะมีไลบรารีอยู่แล้ว ให้ค้นหาและลบโฟลเดอร์ pfodESP8266BufferedClient ที่เก่ากว่าแล้วนำเข้าไฟล์นี้)
  • c) หยุดและรีสตาร์ท Arduino IDE และภายใต้ไฟล์ -> ตัวอย่าง ตอนนี้คุณควรเห็น pfodESP8266BufferedClient

การตั้งค่า ssid เครือข่ายและรหัสผ่านและ IP และพอร์ต

หลังจากที่คุณติดตั้งไลบรารี pfodESP8266BufferedClient แล้ว ให้เปิด Arduino IDE และคัดลอกภาพร่างนี้ Wifi_Bridge.ino ลงใน IDE ก่อนที่คุณจะตั้งโปรแกรมโมดูล คุณต้องตั้งค่า ssid และรหัสผ่านของเครือข่าย และเลือก IP ที่ไม่ได้ใช้

แก้ไขสามบรรทัดนี้ใกล้ด้านบนของ Wifi_Bridge.ino

ถ่าน ssid = "**** ***"; รหัสผ่านถ่าน = "**** *****"; ถ่าน staticIP = "10.1.1.180";

ฉันใช้แอพ Fing (Android หรือ iOS) เพื่อสแกนเครือข่ายท้องถิ่นของฉันและระบุ IP ที่ใช้ไปแล้ว โดยปกติแล้วการเลือก IP ที่ไม่ได้ใช้ในช่วง.180 ถึง.254. จะปลอดภัย

ในการเริ่มต้น คุณสามารถปล่อยให้ portNo เป็น 23 ซึ่งเป็นพอร์ตมาตรฐานสำหรับการเชื่อมต่อ telnet

เมื่อคุณทำการเปลี่ยนแปลงเหล่านั้นแล้ว คุณสามารถตั้งโปรแกรม ESP8266 ได้

การเขียนโปรแกรม HUZZAH ESP8266

ในการตั้งโปรแกรม HUZZAH ESP8266 ให้เชื่อมต่อสาย USB เข้ากับ Serial ตามที่แสดงในรูปภาพ ตรวจสอบรูปถ่ายและสายไฟของคุณ โปรดดูเคล็ดลับการเขียนโปรแกรม ESP8266 (espcomm ล้มเหลว)

ฉันใช้สายอนุกรม Sparkfun USB เป็น TTL 3V3 เพราะมีสายสัญญาณ TX และ RX กำกับอยู่ ตรวจสอบให้แน่ใจว่าเสียบสาย TX เข้ากับพิน RX และเสียบสาย RX เข้ากับพิน TX ตามที่แสดงด้านบน หากคุณกำลังใช้สายเคเบิล Adafruit จะไม่มีขั้วต่อที่ทำเครื่องหมายไว้ แต่มีรหัสสี สีแดงคือพลังงาน สีดำคือพื้น สีเขียวคือ TX และสีขาวคือ RX

เสียบสาย USB to Serial เข้ากับคอมพิวเตอร์ของคุณและเลือกพอร์ต COM ในเมนู Tools → Port ปล่อยให้ความถี่ของ CPU ขนาดแฟลช และความเร็วในการอัปโหลดอยู่ที่การตั้งค่าเริ่มต้น

จากนั้นใส่โมดูล Adafruit HUZZAH ESP2866 ในโหมดตั้งโปรแกรมโดยกดปุ่ม GPIO0 ค้างไว้แล้วคลิกปุ่มรีเซ็ต จากนั้นปล่อยปุ่ม GPIO0 ไฟ LED GPIO0 ควรสว่างสลัว จากนั้นเลือกไฟล์ → อัปโหลด หรือใช้ปุ่มลูกศรขวาเพื่อคอมไพล์และอัปโหลดโปรแกรม หากคุณได้รับข้อความแสดงข้อผิดพลาดในการอัปโหลด ให้ตรวจสอบการเชื่อมต่อสายเคเบิลว่าเสียบหมุดที่ถูกต้องแล้วลองอีกครั้ง

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

การทดสอบ HUZZAH ESP2866

ในการทดสอบ HUZZAH ESP2866 ให้ปล่อยสายเคเบิลการเขียนโปรแกรมไว้และเปิด Arduino IDE Tools → Serial Monitor และตั้งค่า 9600 baud (มุมล่างขวา) จากนั้นเปิดโปรแกรมเทอร์มินัลบนคอมพิวเตอร์ของคุณ ฉันใช้ TeraTerm สำหรับ Windows และ CoolTerm สำหรับ Mac และเชื่อมต่อกับ IP และพอร์ตไม่ใช่ที่คุณตั้งค่าไว้ในภาพร่าง Wifi_Bridge.ino

เมื่อคุณเชื่อมต่อไฟ LED สีแดงบนโมดูลควรเริ่มกะพริบ แสดงว่ามีการเชื่อมต่อ ตอนนี้คุณควรพิมพ์ลงในหน้าต่างเทอร์มินัลของคอมพิวเตอร์ได้แล้ว และอักขระควรปรากฏในหน้าต่างมอนิเตอร์ของ Arduino IDE และในทางกลับกัน

หมดเวลาการเชื่อมต่อ Wifi

รหัส Wifi_Bridge.ino มีเวลาเชื่อมต่อ

uint32_t การเชื่อมต่อหมดเวลา = 60000; // หมดเวลาการเชื่อมต่อ 60 วินาที

หากไม่มีข้อมูล WiFi ที่ได้รับจากโมดูล HUZZAH ESP8266 เป็นเวลา 60 วินาที โมดูลจะปิดการเชื่อมต่อและรอการเชื่อมต่อใหม่ เพื่อให้แน่ใจว่าโมดูลกู้คืนจากการเชื่อมต่อที่ 'ปิดครึ่ง' ซึ่งเกิดขึ้นกับไคลเอ็นต์หายไปเนื่องจากการเชื่อมต่อ WiFi ไม่ดี สูญเสียพลังงานที่เราเตอร์ หรือถูกบังคับให้ปิดไคลเอ็นต์ ดูการตรวจหาการเชื่อมต่อซ็อกเก็ต TCP/IP แบบ Half-Open (หลุด) สำหรับรายละเอียดเพิ่มเติม

หมดเวลาการเชื่อมต่อนี้ถูกตั้งค่าเป็น 60 วินาที แต่สามารถลดลงหรือเพิ่มขึ้นได้ตามต้องการ การตั้งค่าเป็น 0 หมายถึงไม่เคยหมดเวลาซึ่งไม่แนะนำ

การเขียนโปรแกรม Feather nRF52

ในการตั้งโปรแกรม Feather nRF52 ให้ทำตามคำแนะนำในการดาวน์โหลดและติดตั้ง Arduino Board รองรับ Feather nRF52 ตรวจสอบว่าคุณสามารถเชื่อมต่อและตั้งโปรแกรมบอร์ดผ่านสาย USB

หมายเหตุ: ถอดปลั๊กโมดูล HUZZAH ESP8266 ออกจาก Feather nRF52 ก่อนพยายามตั้งโปรแกรม Feather

การเชื่อมต่อ Feather nRF52 กับอุปกรณ์ BLE ประกอบด้วยสองขั้นตอน ขั้นแรกให้ระบุที่อยู่ MAC (และประเภท) บนอุปกรณ์และตรวจสอบว่ารองรับบริการ Nordic UART ด้วย TX Notify จากนั้นจึงโอนที่อยู่และประเภทนั้นไปยังบริดจ์แบบร่าง

ขั้นตอนที่ 5: การเชื่อมต่อกับอุปกรณ์ BLE

การเชื่อมต่อกับอุปกรณ์ BLE
การเชื่อมต่อกับอุปกรณ์ BLE
การเชื่อมต่อกับอุปกรณ์ BLE
การเชื่อมต่อกับอุปกรณ์ BLE
การเชื่อมต่อกับอุปกรณ์ BLE
การเชื่อมต่อกับอุปกรณ์ BLE

เมื่อตั้งโปรแกรม HUZZAH ESP8266 แล้ว คุณต้องโค้ดที่อยู่ BLE และประเภทของอุปกรณ์ที่คุณต้องการเชื่อมต่อลงในร่าง Feather nRF52 นี่เป็นกระบวนการสองขั้นตอน I) เรียกใช้โปรแกรมสแกนเพื่อค้นหาอุปกรณ์ BLE ใกล้เคียงที่ใช้บริการ Nordic UART (TX Notify) จากนั้นคัดลอกเอาต์พุตของสแกนเนอร์นั้นลงในร่างสะพาน Feather เพื่อเชื่อมต่อกับอุปกรณ์นั้น

กำลังสแกนหาอุปกรณ์ต่อพ่วง BLE

หากต้องการระบุอุปกรณ์ต่อพ่วง BLE ที่เข้ากันได้ ให้โหลดโปรแกรม central_bleuart_scanner.ino ลงใน Feather nRF52 ของคุณ โปรแกรมนี้สแกนหาอุปกรณ์ใหม่อย่างต่อเนื่อง จากนั้นตรวจสอบว่าอุปกรณ์รองรับบริการ Nordic UART ด้วย TX Notify หรือไม่

บริการ UART นอร์ดิก

บริการ UART ของนอร์ดิกประกอบด้วยสามส่วน คือ ลักษณะของบริการ UUID และ RX และ TX นี่คือตัวอย่างโค้ดที่สร้างโดย pfodDesignerV3 สำหรับ RedBear NanoV2

BLEService uartService = BLEService ("6E400001B5A3F393E0A9E50E24DCCA9E");

BLECharacteristic rxCharacteristic = BLECharacteristic("6E400002B5A3F393E0A9E50E24DCCA9E", BLEWrite, BLE_MAX_LENGTH); BLECharacteristic txCharacteristic = BLECharacteristic("6E400003B5A3F393E0A9E50E24DCCA9E", BLENotify, BLE_MAX_LENGTH);

pfodDesignerV3 สามารถสร้างโค้ดตัวอย่างสำหรับโมดูล BLE ได้จำนวนหนึ่ง อย่างไรก็ตาม เนื่องจากไม่มีข้อกำหนด BLE สำหรับการเชื่อมต่อ UART 'มาตรฐาน' จึงไม่ทุกโมดูลที่ใช้บริการ Nordic UART ตัวอย่างเช่น โมดูล HM-10 (โล่ Itead BLE) RFduno และ Romeo BLE ใช้บริการ uart เฉพาะของตนเอง ดังนั้นจะไม่เชื่อมต่อกับ Feather nRF52

บอร์ดต่อไปนี้จะเชื่อมต่อ:- Adafruit Bluefruit Feather nRF52, Arduino/Genuino 101, RedBearLab BLE Nano V2 และ V1-V1.5, RedBearLab BLE Shield, Adafruit Bluefruit LE UART Friend และ Flora Boards, Adafruit Bluefruit LE SPI (เช่น Bluefruit LE Shield, Bluefruit LE Micro, Feather 32u4 Bluefruit LE, Feather M0 Bluefruit LE หรือ Bluefruit LE SPI Friend) รวมถึงบอร์ดที่สามารถเข้ารหัสด้วยบริการแบบกำหนดเองหรือบอร์ดที่สามารถใช้ไลบรารี BLEPeripheral ได้

บอร์ดตัวอย่างที่ใช้ในที่นี้คือ Arduino/Genuino 101 พร้อมโค้ดที่สร้างโดย pfodDesignerV3 pfodDesignerV3 ฟรีช่วยให้คุณสร้างเมนู pfodApp แล้วสร้างรหัส Arduino ที่จำเป็นเพื่อแสดงเมนูที่แน่นอนนั้นบนมือถือ Android ของคุณโดยใช้ pfodApp (ชำระเงิน) pfodApp จะเชื่อมต่อผ่าน Wifi เช่นเดียวกับ Bluetooth Classic, BLE และ SMS และสามารถเชื่อมต่อผ่านบริดจ์ Wifi2BLE นี้ได้ อย่างไรก็ตาม แม้ว่าคุณจะไม่ต้องการใช้ pfodApp เป็นแอปควบคุม คุณยังสามารถใช้ pfodDesignerV3 เพื่อสร้างรหัสบริการ Nordic UART สำหรับบอร์ด BLE ของคุณได้

ลิงก์บทช่วยสอนนี้อธิบายการตั้งค่า Arduino/Genuino 101 BLE และสร้างการควบคุมเปิด/ปิด LED อย่างง่ายด้วย pfodDesignerV3 ภาพร่างที่ผลิตโดย pfodDesignerV3 คือ Arduino101_led_control.ino

การเขียนโปรแกรม Arduino/Genuino 101 ด้วย Arduino101_led_control.ino จะช่วยให้คุณเชื่อมต่อกับ pfodApp และแสดงหน้าจอต่อไปนี้บนมือถือ Android ของคุณ

อย่างไรก็ตาม นี่เป็นเพียงตัวอย่างเท่านั้น และคุณไม่จำเป็นต้องซื้อ pfodApp เพื่อทำโครงการนี้ให้เสร็จ ส่วนที่สำคัญคือแอป pfodDesignerV3 ฟรีได้สร้างโค้ดสำหรับ Arduino/Genuino 101 ที่ใช้บริการ UART ของนอร์ดิก เลยลองสแกนดู

อย่างไรก็ตาม นี่เป็นเพียงตัวอย่างเท่านั้น และคุณไม่จำเป็นต้องซื้อ pfodApp เพื่อทำโครงการนี้ให้เสร็จ ส่วนที่สำคัญคือแอป pfodDesignerV3 ฟรีได้สร้างโค้ดสำหรับ Arduino/Genuino 101 ที่ใช้บริการ UART ของนอร์ดิก เลยลองสแกนดู

การสแกนหาบริการ UART แบบนอร์ดิก

เมื่อยกเลิกการเชื่อมต่อโมดูล HUZZAH ESP8266 จาก Feather nRF52 แล้ว ให้โปรแกรม Feather nRF52 ด้วย central_bleuart_scanner.ino จากนั้นเปิดเครื่องมือ Arduino IDE → Serial Monitor และตั้งค่าอัตรารับส่งข้อมูลเป็น 9600 การเปิดเครื่อง Arduino/Genuino 101 จะให้ผลลัพธ์ที่แสดงใน ภาพหน้าจอแรกด้านบน

อย่างที่คุณเห็นเครื่องสแกนพบอุปกรณ์ BLE สองเครื่อง Arduino/Genuino 101 ที่พบบริการ Nordic UART แต่คุณลักษณะ TX ไม่รองรับการแจ้งเตือน สแกนเนอร์ยังพบโมดูล RFduino BLE แต่ RFduino ไม่ได้ใช้บริการ Nordic UART แต่ใช้โมดูลของตัวเองแทน คณะกรรมการ Bluetooth ตำหนิสำหรับสิ่งนี้ที่ไม่ได้ระบุบริการ UART 'มาตรฐาน' แทนที่จะปล่อยให้ผู้ผลิตแต่ละรายทำขึ้น

ตามที่อธิบายไว้ข้างต้น รหัส 101 ถูกสร้างขึ้นโดย pfodDesignerV3 สำหรับใช้กับ pfodApp เป็นหลัก pfodApp ไม่ได้เลือกเกี่ยวกับ TX Notify เหมือนกับรหัส Feather nRF52 uart pfodApp ทำงานร่วมกับ 101 ตามที่ตั้งโปรแกรมไว้ แต่ Feather nRF52 ยืนยันใน TX Notify ดังนั้นจึงจำเป็นต้องเปลี่ยนแปลงโค้ดเล็กน้อยเพื่อให้ Feather พึงพอใจ

เปิด Arduino101_led_control.ino ใน Arduino IDE และใกล้ด้านบนสุด คุณจะพบสองบรรทัดนี้ บรรทัดที่สองเป็นเพียงคำอธิบายของคุณลักษณะและไม่ส่งผลต่อการดำเนินการ

BLECharacteristic txCharacteristic = BLECharacteristic("6E400003-B5A3-F393-E0A9-E50E24DCCA9E", BLEIndicate, BLE_MAX_LENGTH);BLEDescriptor txNameDescriptor = BLEDescriptor("2901", "TX – (ระบุ)");

เปลี่ยนเป็น

BLECharacteristic txCharacteristic = BLECharacteristic("6E400003-B5A3-F393-E0A9-E50E24DCCA9E", BLENotify, BLE_MAX_LENGTH); BLEDescriptor txNameDescriptor = BLEDescriptor("2901", "TX - (แจ้ง)");

จากนั้นตั้งโปรแกรม 101 ใหม่ด้วย Arduino101_Notify_led_control.ino เวอร์ชันที่แก้ไขนี้ จากนั้นเมื่อคุณเรียกใช้เครื่องสแกน Feather nRF52 (central_bleuart_scanner.ino) อีกครั้ง Serial Monitor จะแสดงภาพหน้าจอที่สองด้านบน

ไม่มีข้อผิดพลาดสำหรับ Genuino 101 ในขณะนี้ และเครื่องสแกนจะพิมพ์รหัสที่จำเป็นสำหรับร่างสะพาน Feather nRF52 เพื่อเชื่อมต่อกับ 101 สแกนเนอร์จะตรวจสอบทุกอุปกรณ์ที่พบในช่วง ไฟ LED สีแดงจะกะพริบหนึ่งครั้งสำหรับอุปกรณ์แต่ละเครื่องที่พบใน Nordic UART Service (TX Notify)

ขั้นตอนที่ 6: การเชื่อมต่อกับอุปกรณ์ต่อพ่วง BLE

สัญญาณไฟ LED

Feather nRF52 มีไฟ LED สองดวงคือสีน้ำเงินและสีแดง เมื่อบอร์ดเชื่อมต่อกับอุปกรณ์ BLE ไฟ LED สีน้ำเงินจะคงที่ ไม่เช่นนั้นจะกะพริบ สแกนเนอร์ไม่ได้เชื่อมต่อกับอุปกรณ์ดังนั้นไฟ LED สีน้ำเงินจึงมักจะกะพริบ ไฟ LED สีแดงกะพริบหนึ่งครั้งสำหรับอุปกรณ์ Nordic UART Service (TX Notify) แต่ละเครื่อง เมื่อทำงานเป็นสแกนเนอร์ Red Led จะนับจำนวนอุปกรณ์ Nordic UART Service (TX Notify) ที่พบ เมื่อทำงานเป็นสะพาน ไฟ LED สีแดงจะกะพริบหนึ่งครั้งเมื่อเชื่อมต่อกับที่อยู่รหัส BLE

กำลังเชื่อมต่อกับอุปกรณ์ต่อพ่วง BLE

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

// โค้ดสามบรรทัดถัดไปนี้มาจาก central_bleuart_scanner.ino output

อักขระ const *BLE_NAME = "GENUINO 101-FC8F"; อักขระ const *BLE_ADDRESS = "98:4F:EE:0C:FC:8F"; const uint8_t BLE_ADDRESS_TYPE = 0;

แทนที่โค้ดสามบรรทัดด้วยเอาต์พุตจากเครื่องสแกนสำหรับอุปกรณ์ BLE ที่คุณต้องการเชื่อมต่อ จากนั้นตั้งโปรแกรม Feather nRF52 ด้วยภาพร่าง central_bleuart_bridge.ino ที่แก้ไขแล้ว

การทดสอบร่าง central_bleuart_bridge

ก่อนเสียบ HUZZAH ESP8266 กลับเข้าไปใน Feather nRF52 ให้ทดสอบการเชื่อมต่อกับอุปกรณ์ BLE ของคุณ ปล่อยให้ Feather nRF52 เชื่อมต่อกับ Arduino IDE ของคุณ เปิดเครื่องมือ → Serial Monitor ที่ 9600 บอด จากนั้นตรวจสอบว่าอุปกรณ์ BLE เป้าหมายของคุณเปิดอยู่

เมื่อเชื่อมต่อกับอุปกรณ์ BLE ตามที่อธิบายไว้ข้างต้น ไฟ LED สีน้ำเงินจะสว่างขึ้นอย่างต่อเนื่องและไฟ LED สีแดงจะกะพริบทุกๆ 10 วินาทีหรือมากกว่านั้นสิ่งนี้ช่วยให้คุณไม่ได้สร้างและบำรุงรักษาการเชื่อมต่อ

จากนั้นใน Serial Monitor คุณสามารถป้อนคำสั่งที่คุณคาดว่าจะส่งไปยังอุปกรณ์ BLE ของคุณและดูการทำงานและตรวจสอบการตอบสนองที่ส่งกลับ หากทุกอย่างเรียบร้อยดี คุณสามารถปิดเครื่องและเสียบโมดูล HUZZAH ESP8266 ได้

ขั้นตอนที่ 7: การเชื่อมต่อกับอุปกรณ์ BLE ผ่าน WiFi – รวมทุกอย่างเข้าด้วยกัน

เมื่อคุณตั้งโปรแกรมและทดสอบโมดูล HUZZAH ESP8266 ด้วยรหัสบริดจ์ (Wifi_Bridge.ino) ที่กำหนดค่าสำหรับ ssid เครือข่ายและรหัสผ่านของคุณและ IP แล้ว และตั้งโปรแกรมและทดสอบ Feather nRF52 ด้วยรหัสบริดจ์ (central_bleuart_bridge.ino) ที่กำหนดค่าด้วยที่อยู่ของอุปกรณ์ BLE แล้วพิมพ์ จากนั้นคุณสามารถเสียบเข้าด้วยกันและเสียบอุปกรณ์จ่ายไฟ USB เข้ากับโมดูล Feather เพื่อเพิ่มพลังให้ทั้งคู่

โมดูล HUZZAH ไฟ LED สีแดงควรสว่างเป็นของแข็งเมื่อเชื่อมต่อกับเราเตอร์เครือข่ายในพื้นที่ของคุณและไฟ LED Feather Blue ควรสว่างเป็นของแข็งเมื่อเชื่อมต่อกับอุปกรณ์ BLE ของคุณและไฟ LED Feather Red ควรกะพริบทุกๆ 10 วินาทีหรือมากกว่านั้นเพื่อระบุเพียงเปิด เชื่อมต่ออุปกรณ์ BLE แล้ว

เปิดโปรแกรม telnet ของคุณและเชื่อมต่อกับ IP และพอร์ตของ HUZZAH ไฟ LED สีแดง HUZZAH ควรกะพริบช้าๆ เพื่อระบุว่าโปรแกรมของคุณเชื่อมต่อแล้ว และคุณควรส่งคำสั่งไปยังอุปกรณ์ BLE ของคุณผ่าน WiFi และดูการทำงานของอุปกรณ์ BLE และดูการตอบสนองใดๆ ในหน้าต่าง telnet ของคุณ โปรดจำไว้ว่าหากอุปกรณ์ BLE ของคุณไม่ส่งข้อมูลใดๆ กลับมาเป็นเวลา 60 วินาที รหัส HUZZAH จะทำให้การเชื่อมต่อหมดเวลาและตัดการเชื่อมต่อ และไฟ LED สีแดงของ HUZZAH จะสว่างขึ้นอีกครั้ง

ขั้นตอนที่ 8: ช่วยเหลือ – ใช้งานไม่ได้

ขั้นแรก ทำตามขั้นตอนการทดสอบที่มีรายละเอียดด้านบน ทดสอบ HUZZAH ESP2866 และทดสอบภาพร่าง central_bleuart_bridge

ปัญหาการสแกน

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

หากคุณได้รับเอาต์พุตสแกนเนอร์เช่นนี้

เชื่อมต่อกับ 98:4F:EE:0C:FC:8F กำลังค้นหาบริการ Nordic UART … ไม่พบ OR ไม่พบ!!!!! ไม่สามารถระบุบริการ UART ของนอร์ดิก !!!!!!!!! หากคุณกำลังคาดหวังบริการ Nordic UART ให้ย้ายเครื่องสแกนเนอร์ไปใกล้กับอุปกรณ์ BLE มากขึ้น !!!!

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

เป็นทางเลือกสุดท้าย คุณสามารถใช้แอป Nordic nRF Connect ฟรีสำหรับ Android หรือ iOS แอพนั้นมีช่วงและความไวที่ดีกว่า มันจะบอกคุณว่าอุปกรณ์ BLE มีบริการ Nordic UART หรือไม่ อย่างไรก็ตาม คุณจะต้องให้เครื่องสแกนทำงานและเชื่อมต่อและระบุบริการ UART ของนอร์ดิก ก่อนที่คุณจะพยายามใช้บริดจ์ Wifi2BLE เนื่องจากมันใช้รหัสที่คล้ายกับเครื่องสแกน

หากคุณต้องการเจาะลึก คุณสามารถใช้โมดูล Adafruit Bluefruit LE Sniffer เพื่อดูว่ามีอะไรอยู่ในอากาศ

ปัญหาการเชื่อมต่อ BLE

หากคุณสามารถสแกนอุปกรณ์ BLE ได้ สาเหตุที่เป็นไปได้มากที่สุดของปัญหาการเชื่อมต่อคือ I) อุปกรณ์ BLE อยู่ไกลเกินไป II) มีอย่างอื่นเชื่อมต่อกับอุปกรณ์ BLE แล้ว

ปัญหาการเชื่อมต่อ WiFi

หากไฟ LED สีแดง HUZZAH ESP8266 ไม่ติดสว่าง แสดงว่าไม่มีการเชื่อมต่อกับเครือข่ายของคุณผ่านเราเตอร์ของคุณ ตรวจสอบ ssid และรหัสผ่านที่คุณมีรหัสลงใน Wifi_Bridge.ino และใช้แอพ Fing สำหรับ Android หรือ iOS เพื่อตรวจสอบว่า IP ที่คุณจัดสรรยังไม่ได้ถูกใช้งาน ลองปิดเครื่องคอมพิวเตอร์และอุปกรณ์ทั้งหมดของคุณ และเปิดสวิตช์เราเตอร์ (ทิ้งไว้ 20 วินาที) แล้วสแกนด้วย Fing อีกครั้ง สุดท้ายหากการเชื่อมต่อขาดหายไป ให้จำการตั้งค่าการหมดเวลาการเชื่อมต่อในรหัส Wifi_Bridge.ino

ขั้นตอนที่ 9: ส่วนขยายและบทสรุป

โครงการที่นำเสนอนี้เป็นเวอร์ชันที่ง่ายที่สุด มีหลายนามสกุลที่เป็นไปได้เช่น:-

  • Feather nRF52 สามารถเชื่อมต่อกับอุปกรณ์ BLE ได้สูงสุด 4 เครื่องพร้อมกัน คุณจึงสามารถแก้ไขโค้ดเพื่อเพิ่มที่อยู่ที่ถูกต้องและควบคุมอุปกรณ์ได้สูงสุด 4 เครื่องจากการเชื่อมต่อ WiFi เดียว ดูตัวอย่างโค้ดที่มาพร้อมกับการติดตั้งบอร์ด Feather nRF52
  • คุณสามารถเจาะรูในเราเตอร์เพื่อให้สามารถเข้าถึงอุปกรณ์ BLE ได้จากทุกที่บนอินเทอร์เน็ต ดูการเชื่อมต่ออุปกรณ์ DIY IoT กับอินเทอร์เน็ตด้วย pfodApp
  • คุณสามารถใช้รหัสจาก Cheap/Simple Wifi Shield เพื่อให้คุณสามารถกำหนดค่าพารามิเตอร์เครือข่าย WiFi สำหรับ HUZZAH ผ่านหน้าเว็บโดยไม่ต้องตั้งโปรแกรมใหม่ คุณจะต้องเพิ่มปุ่มกดกำหนดค่าให้กับวงจร
  • คุณสามารถเพิ่มปุ่มกดการกำหนดค่า (โดยใช้ปุ่มเดียวกับด้านบน) ที่ทำให้ Feather nRF52 สแกนหาอุปกรณ์ BLE ด้วย Nordic UART (TX Notify) จากนั้นบันทึกรายละเอียดการเชื่อมต่อสำหรับอุปกรณ์ที่มีสัญญาณแรงที่สุด ในการบันทึกผลลัพธ์ คุณจะต้องใช้ไลบรารี nffs ที่มาพร้อมกับการติดตั้งบอร์ด Adafruit nRF52
  • คุณสามารถเพิ่มหน้าเว็บในโค้ด HUZZAH ESP8266 เพื่อให้อินเทอร์เฟซที่กำหนดเองสำหรับอุปกรณ์ BLE ของคุณ คุณยังสามารถใช้ pfodDesignerV3 และ pfodApp เพิ่มอินเทอร์เฟซแบบกำหนดเองโดยไม่มีการเปลี่ยนแปลงใดๆ ในโครงการนี้เลย

บทสรุป

โครงการที่เรียบง่ายนี้ให้การเข้าถึง WiFi กับโมดูล Bluetooth Low Energy (BLE) ที่ใช้ UART ของ Nordic ด้วย TX Notify บริดจ์ Wifi2BLE นั้นโปร่งใสอย่างสมบูรณ์ เพียงแค่ส่งข้อมูล WiFi ไปยังอุปกรณ์ BLE และส่งข้อมูลของอุปกรณ์ BLE กลับไปยังการเชื่อมต่อ WiFi

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

โครงการนี้จะมีความสำคัญมากขึ้นเมื่อซอฟต์แวร์อุปกรณ์ BLE ทันกับข้อกำหนด Bluetooth V5 Mesh ใหม่ จากนั้น Wifi2BLE จะให้การเข้าถึงอินเทอร์เน็ตกับระบบอัตโนมัติทั้งบ้านของคุณ

แนะนำ: