สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
- ขั้นตอนที่ 2: การแก้ปัญหา
- ขั้นตอนที่ 3: เบื้องหลัง…
- ขั้นตอนที่ 4: การอ่านเพิ่มเติม/ ความเป็นไปได้ในการปรับปรุงเพิ่มเติม
วีดีโอ: กู้คืนโมดูลบลูทูธ HC-06 ที่กำหนดค่าไม่ถูกต้อง: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ฉันกำหนดค่าโมดูล HC-06 Bluetooth (ทาส) ให้เป็นอัตราบอดที่ 1, 382, 400 บอดด้วยคำสั่ง AT+BAUDC นับตั้งแต่ที่ Arduino เชื่อมต่ออยู่ก็ไม่สามารถใช้โมดูลกับไลบรารี SoftwareSerial ได้ ฉันพยายามกู้คืนอัตราบอดด้วยฮาร์ดแวร์อนุกรมของ Arduino (พิน 0 & 1) โดยไม่มีโชค
ฉันยังลองใช้ Google หัวข้อโดยไม่พบวิธีแก้ปัญหาที่เหมาะสม บางทีการใช้พอร์ตอนุกรมในตัวของคอมพิวเตอร์อาจเป็นวิธีแก้ปัญหา (ด้วยการเปลี่ยนระดับลอจิก 12V เป็น 3V3) แต่คอมพิวเตอร์ของฉันไม่มีพอร์ตที่ล้าสมัยนี้ ดังนั้นฉันจึงต้องหาวิธีแก้ปัญหาอื่น
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
- บอร์ด Arudino/Genuino พร้อม Atmel ATMEGA328P-PU MCU (@16MHz) ที่เป็นค่าเริ่มต้น
- โมดูลบลูทูธ HC-06 กำลังฟัง 1, 382, 400 บอด
- Arduino IDE พื้นฐานจาก
ขั้นตอนที่ 2: การแก้ปัญหา
โปรดทราบว่าคำแนะนำนี้และวิธีแก้ปัญหาถูกสร้างขึ้นสำหรับสถานการณ์ 1, 382, 400 baud (AT+BADC) โซลูชันนี้ใช้ไม่ได้กับอัตราบอดอื่นๆ ในการจัดการกับกรณีอื่นๆ โปรดดูขั้นตอนที่เริ่มต้นจากขั้นตอนที่ 3
วิธีแก้ปัญหานั้นง่ายมาก
- เชื่อมต่อพิน VCC ของ HC-06 กับพิน 5V ของ Arduino
- เชื่อมต่อพิน GND ของ HC-06 กับพิน GND ของ Arduino
- เชื่อมต่อพิน RXD ของ HC-06 กับพิน 2 ของ Arduino
- ปล่อยให้พิน TXD ของ HC-06 ไม่ได้เชื่อมต่อ (หรือเชื่อมต่อกับพิน 8)
- อัปโหลดภาพร่าง hc06reset.ino
- โปรแกรมจะตั้งค่า HC-06 เป็น 115, 200 baud mode (AT+BAUD8)
- ใช้โมดูล HC-06 ที่กู้คืนได้เหมือนเมื่อก่อน
ขั้นตอนที่ 3: เบื้องหลัง…
ไลบรารี SoftwareSerial ที่มาพร้อมกับ Arduino IDE สามารถส่งได้สูงสุด 115, 200 บิต/วินาที ดังนั้นจึงไม่เร็วพอที่จะสื่อสารด้วยอัตรา 1, 382, 400 baud ที่ต้องการ เนื่องจากบอร์ด Arduino เริ่มต้นทำงานบน 16MHz บิตเรตสูงสุดที่ไม่มีการบีบอัดตามทฤษฎีคือ 16, 000, 000 บิต/วินาที เรายังดีอยู่!
จากความเข้าใจของฉันเกี่ยวกับ SoftwareSerial.cpp การสื่อสารแบบซีเรียลทำได้โดยการตั้งค่าพินเอาต์พุตสูง (=1) หรือต่ำ (=0) ในแง่ของความล่าช้า (ซึ่งมาจากอัตราบอด) ระหว่างการเปลี่ยนแปลง
- พินเอาต์พุตสูงโดยค่าเริ่มต้น (หมายถึงไม่มีข้อมูล) จากนั้น
- บิตเริ่มต้นจะถูกส่ง (ซึ่งดึงพินต่ำ) จากนั้น
- ข้อมูล 8 บิตส่งจาก LSB ไปยัง MSB (+5V เมื่อบิต 1 และ 0 เป็นอย่างอื่น) จากนั้น
- บิตหยุดถูกส่ง (ซึ่งดึงพินให้สูง)
วิธีนี้จะส่ง 1 ไบต์โดยใช้ 10 บิต
ข้อความที่เราต้องส่งคือ AT+BAUD8 (ไม่มี \n, \r ต่อท้าย) คำสั่งนี้ตั้งค่า HC-06 กลับไปเป็น 115, 200 อัตราบอดซึ่งสามารถจัดการได้โดยไลบรารีปกติ
ในการส่งบิตด้วยความเร็ว 1, 382, 400 บิต/วินาที สำหรับแต่ละบิต เรามีเวลา 1/1, 382, 400 วินาที (นั่นคือประมาณ 723.38 ns) สำหรับแต่ละบิต Arduino ทำงานบน 16, 000, 000 Mhz ดังนั้นแต่ละรอบจะใช้เวลา 1/16, 000, 000 วินาที - นั่นคือ 62.5 ns ต่อรอบ
การใช้รหัสชุดประกอบ AVR เราสามารถใช้คำสั่ง OUT เพื่อตั้งค่าพินเอาต์พุตสูงหรือต่ำ และ NOP ให้รอรอบ CPU หนึ่งรอบ คำสั่งทั้งสองกินถึง 1 รอบ cpu อย่างแน่นอน วิธีนี้จะครอบคลุมเวลาบิต 723.38 ns โดยคำแนะนำ Arduino 11 ถึง 12 ต่อบิตที่ส่ง สิ่งหนึ่งที่ต้องพิจารณา: คำสั่ง OUT จะตั้งค่าทั้งไบต์ในคราวเดียว ดังนั้นเราต้องเลือก PORTx ที่นี่ไม่ใช่ปัญหา การใช้ ATMEGA328P-PU เช่น PORTD (พิน Arduino 0-7) นั้นสมบูรณ์แบบสำหรับเงื่อนไขนี้ หลังจากตั้งค่าบิตแล้ว เวลาที่เหมาะสมเท่านั้นที่ต้องผ่านไป ซึ่งทำได้ 10 ถึง 11 NOPs และเท่านั้น
ดูรายละเอียดการคำนวณได้ในไฟล์ Excel ด้านล่าง ไฟล์นี้สร้างคำแนะนำแอสเซมลีที่จำเป็นสำหรับโปรแกรม ต้องทำการเปลี่ยนเพียงไม่กี่ครั้งหลังจากวางรหัสที่สร้างขึ้น
ขั้นตอนที่ 4: การอ่านเพิ่มเติม/ ความเป็นไปได้ในการปรับปรุงเพิ่มเติม
- อาจสร้างไลบรารี SoftwareSerial ที่เร็วกว่าได้โดยใช้เทคนิคที่อธิบายไว้ในขั้นตอนก่อนหน้า
- FedericoK2 เป็นเครื่องมือที่ยอดเยี่ยมที่สร้างรหัสกู้คืน HC-06 สำหรับทุกบิตเรตที่เป็นไปได้ เข้าสู่เว็บไซต์ที่นี่: https://tools.krum.com.ar/save_your_hc-06/ ขอบคุณ FedericoK2
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง