สารบัญ:
- ขั้นตอนที่ 1: สร้าง PCB
- ขั้นตอนที่ 2: ข้อผิดพลาดมากมาย
- ขั้นตอนที่ 3: เมาท์เซนเซอร์
- ขั้นตอนที่ 4: HARD WIRE
- ขั้นตอนที่ 5: ดาวน์โหลด SONIC SKETCH
- ขั้นตอนที่ 6: การสื่อสาร
- ขั้นตอนที่ 7: ปิด
วีดีโอ: SONIC LED FEEDBACK: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
สวัสดีอีกครั้ง, เกลียดที่หุ่นยนต์ของคุณวิ่งเข้าไปในทุกสิ่ง? สิ่งนี้จะแก้ไขปัญหานั้นได้ ด้วยเซ็นเซอร์โซนิค 8 ตัวจึงดูซับซ้อน…แต่ที่จริงแล้วฉันทำให้สิ่งนี้ง่ายมาก ฉันพยายามโพสต์โครงการที่ช่วยให้คุณเรียนรู้เกี่ยวกับ Arduino และแสดงแนวคิด 'นอกกรอบ' โพสต์นี้จะช่วยให้คุณเข้าใจการสลับ 595, pro-minis เป็นเซ็นเซอร์ที่ตั้งโปรแกรมได้ และการใช้งานข้อเสนอแนะแบบเรียลไทม์อย่างดีเยี่ยม หากคุณชอบ Arduino ในฐานะ 'คัดลอกและวางและปลั๊กอิน' คุณสามารถข้ามสิ่งนี้ได้
ฉันชอบใช้โปรมินิ มีราคาประมาณ 2.50 เหรียญ ทำงานเป็น uno แบบเต็ม และการติดตั้งส่วนหัวทำให้มีความยืดหยุ่นมาก ใช้เป็นเซ็นเซอร์ไมโคร คุณสามารถให้ 'ทำในสิ่งที่คุณต้องการ' แทนการใช้เซ็นเซอร์ที่ซื้อมาได้ ด้วย I2C โดยใช้สายไฟเพียง 2 เส้น จึงสามารถมัดรวมกันเป็นเส้นเดียวได้ ดังนั้นย้ายไปที่ MEGA ฉันสามารถมีมินิ 4 ตัวที่รันโค้ดแยกกัน 4 บรรทัดทั้งหมดพร้อมกันในราคาเพียง $10.00 ที่นี่ฉันใช้มินิเพื่อเปิดเซ็นเซอร์โซนิคผ่าน 595 และแสดงระยะทางนำแบบเรียลไทม์ จากนั้นเพียงแชร์ข้อมูล 8 บิตกับเมนบอร์ด วิธีนี้ช่วยลดภาระของเมนบอร์ดและทำให้โค้ดของเธอง่ายมาก
มีปัญหากับโซนิคเซนเซอร์…ไม่มีการตอบกลับด้วยภาพ คุณไม่มีทางรู้ได้เลยว่าเซ็นเซอร์เป็นเพียงน้ำหนักที่ตายแล้วหรือกำลังทำงานอยู่! ฉันเชื่อว่าใครเคยคิด 'BLINK' ฉลาดกว่า Einstine เพียงหนึ่งนำและโลกแห่งข้อมูลถูกส่งผ่านการกะพริบ ดังนั้นโซนิคเซนเซอร์จึงต้องการการตอบกลับแบบเรียลไทม์ ที่นี่ฉันใช้อาร์เรย์ LED เพื่อตรวจสอบเซ็นเซอร์แต่ละตัว คุณไม่ต้องการมัน แค่สร้างเซ็นเซอร์โดยไม่มีไฟ LED แต่การมีไฟ LED บน PCB นั้นมีประโยชน์
ขั้นตอนที่ 1: สร้าง PCB
ทำ PCB และเติม ข้อควรระวัง…ฉันทำผิดพลาดบน PCB ที่การเชื่อมต่อ 4 พินสำหรับโซนิคเซ็นเซอร์ที่จะเสียบเข้าไป ECHO และ TRIGGER Vcc และกราวด์กำลังจะเสียบเข้ากับ pcb ไม่มีที่ว่างเพียงพอสำหรับตัวเชื่อมต่อ ดังนั้นฉันจึงสร้าง PCB ด้วยพินเอาต์ ดังนั้นคุณจึงสามารถบัดกรีขั้วต่อสายไฟเข้ากับ PCB และเสียบเข้ากับโซนิคเซนเซอร์ของจริงได้ สำหรับไฟ LED ฉันใส่ไฟ LED สีเหลืองที่ขอบด้านในและสีแดงที่ด้านนอก ซึ่งจะช่วยให้คุณมองเห็นได้ไกลหากเซ็นเซอร์วัดค่าได้ถูกต้อง
นี่เป็นหนึ่งใน pcb 2side ไม่กี่ตัวที่ฉันเคยทำ ฉันค่อนข้างจะทำ 2 ea ด้านเดียวและเรียกใช้จัมเปอร์ แต่เพื่อให้ได้จอแสดงผลแบบ LED คุณต้องมี PCB ด้านบนเป็นอย่างน้อย ฉันแยกเค้าโครงในการดาวน์โหลด
PCB มีไว้สำหรับโปรมินิที่มี A4-A5 อยู่ในส่วนหัวของขอบ ไม่ว่าจะด้วยวิธีใด เพียงเชื่อมต่อ A4-A5 กับ Master A4-A5 อย่าลืม Vcc และ Grounds ด้วย
ขั้นตอนที่ 2: ข้อผิดพลาดมากมาย
สำหรับความผิดพลาดของฉัน… ฉันพยายามที่จะเปิดทริกเกอร์ทั้งหมดในครั้งเดียว (ทั้งหมดเชื่อมโยงกัน) และ sorta นี้ทำงานได้ดี แต่มีปฏิสัมพันธ์บางอย่างเกิดขึ้น ดังนั้นตอนนี้ ECHOS ทั้งหมดไปที่ไมโคร (8) และ TRIGGERS ถูกกำหนดโดย 595 อีกสามพิน (3) สำหรับไฟ LED มัลติเพล็กซ์จะไม่ทำงาน คุณต้องมีเวลาเปิดเต็มสำหรับแต่ละ led ซึ่งหมายความว่าแต่ละแถวของ 7 leds จะต้องมี 595 ของตัวเอง เมื่อคุณอัปเดต 595 ไฟ LED จะติดสว่างจนกว่าจะมีการอัปเดตครั้งต่อไป โดยที่การมัลติเพล็กซ์ไฟ LED จะสว่างเพียงเสี้ยววินาทีนั้น ใช้งานได้ดีกับผู้อ่านของฉันและต้องใช้ไมโครเฉพาะ ไม่มีเวลาสแกนเซ็นเซอร์โซนิค 8 ตัวและระยะการวัด ฉันพยายามและได้ผลลัพธ์ที่แย่มาก การมัลติเพล็กซ์ไฟ LED จะหมายถึงตารางของแถว + คอลัมน์และนั่นหมายถึงการป้อนผ่าน 64+ ใน PCB
ฉันใช้เพียง 7 เอาต์พุตจาก 595 เนื่องจากความยุ่งเหยิงบน PCB ในระยะไกลคุณไม่สามารถบอกได้ว่ามีไฟ LED 7 หรือ 8 ดวงที่เคลื่อนไหวหรือไม่ คุณอาจถูกล่อลวงให้ผูกไฟ LED ทั้งหมดเข้ากับตัวต้านทานตัวเดียวและใช้งานได้ แต่ความสว่างของอาร์เรย์จะเปลี่ยนไปตามจำนวนไฟ LED ที่มีแสงน้อย ดังนั้นตัวต้านทานหนึ่งตัวต่อหนึ่งหลอดจึงดีที่สุด ฉันชอบ 595 แต่ถ้าพวกเขาเพิ่งย้าย Vcc และพิน 0-out หรือสร้าง 18 พิน ic ที่มีเอาต์พุตทั้งหมดในด้านเดียวกัน… การเชื่อมต่อเอาต์พุตทั้งแปดจะง่ายมาก แต่มันจะไม่ขายน้อยกว่า 30 เซ็นต์
ขั้นตอนที่ 3: เมาท์เซนเซอร์
กาวเซ็นเซอร์โซนิคกับฝากาแฟ แจ็คตัวผู้ต้องงอเข้าด้านในเซ็นเซอร์แต่ละตัว วิธีนี้ใช้ได้ผลดีกว่าถ้าคุณงอทีละพิน ฉันใช้เทปโฟม 2 ด้านเพื่อลดแรงสั่นสะเทือน เซ็นเซอร์ของฉันอยู่ใกล้เกินไป และพวกเขาต้องการพื้นที่ 1/4 นิ้วเพื่อให้เข้ากับ PCB ได้ดีขึ้น ฉันเคยใช้โซนิคเซ็นเซอร์มาก่อนและบางครั้งอาจไม่สามารถวัดค่าได้อย่างแม่นยำ และคุณจำเป็นต้องคำนึงถึงสิ่งนี้ ดังนั้นอย่าติดกาวพวกเขาทั้งหมดอย่างถาวร
นอกจากนี้ยังช่วยในการเรียกใช้การทดสอบระยะทางอย่างรวดเร็วในแต่ละอันก่อนใช้งาน ฉันได้รับเซ็นเซอร์หนึ่งตัวที่มีการอ่านไม่ดีในชุดละ 20 ตัว ไม่เลวสำหรับราคาที่ฉันจ่ายไป
ขั้นตอนที่ 4: HARD WIRE
ฉันคิดว่าจะมีที่ว่างสำหรับแจ็คและปลั๊กจากพีซีไปยัง
โซนิคพิน แต่ฉันวิ่งออกจากห้อง ดังนั้นฉันจึงต่อสาย pcb อย่างหนักและเพิ่งสร้างสายสะท้อนและทริกเกอร์ด้วยแจ็คตัวเมีย (8ea) ฉันผูก 8ea Vcc และ 8ea ของเซ็นเซอร์ไว้ด้วยกันดังนั้นจึงสร้างการเชื่อมต่อกับ PCB เพียง 2 อันสำหรับพวกเขา
ด้วยเซ็นเซอร์ 8 ตัวและ 8 595s uno หรือ pro-mini ไม่สามารถจ่ายไฟได้ ต้องมีแหล่งควบคุม 5v เป็นส่วนหนึ่งของโครงการนี้ หุ่นยนต์ของฉันมี 7805 @ 1amp จากแบตเตอรี่อย่างง่าย สิ่งนี้เชื่อมโยงกับ 5v Vcc ทั้งหมดสำหรับอุปกรณ์ทั้งหมด 7805 ลดลงประมาณหนึ่งโวลต์ ดังนั้นคุณต้องมีอย่างน้อย 6.5 โวลต์เพื่อป้อน นั่นคือแบตเตอรี่ลิเธียม 2 ก้อนที่ 3.3v หุ่นยนต์ของฉันมี nicads แบบเก่าจากชุดสว่านที่ใช้แล้ว และ 8 nicads นั้นใช้มอเตอร์ 12v แบบเกียร์ธรรมดาของจีนในแชสซีประเภทรถถังราคา $20
ขั้นตอนที่ 5: ดาวน์โหลด SONIC SKETCH
ดาวน์โหลดร่างและติดตั้ง มีหลายวิธีที่จะพูดคุยกับ
uno อื่น แต่ฉันชอบ I2c ความสับสนกำลังพูดถึงและเจ้านาย / ทาส เช่นเดียวกับเซ็นเซอร์ส่วนใหญ่ (คิดว่ามินิตัวที่ 2 เป็นเซ็นเซอร์) คุณระบุตำแหน่งเซ็นเซอร์และขอจำนวนไบต์ x สิ่งเดียวกันที่นี่ ในมินิตัวที่ 2 คุณตั้งค่า x จำนวนไบต์ที่คุณต้องการส่ง ความสับสนคือชื่อไม่สำคัญ จะช่วยให้คุณจำได้เฉพาะเมื่อคุณแบ่งปันชื่อ ดังนั้นในภาพร่าง ฉันส่งการวัดระยะทางโซนิค 8 หน่วยในหน่วยเซนติเมตร เช่น sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4 ต้นแบบได้รับ 8 ไบต์หากข้อมูลและคุณสามารถเรียกไบต์เหล่านั้นอะไรก็ได้ที่คุณต้องการ ฉันอ่านว่า gotR1, gotR2, got….. ลำดับของไบต์ที่ส่งนั้นเหมือนกัน ดังนั้นไบต์ A, B, C….. อย่าคิดว่าการเปลี่ยนชื่อจะทำให้คุณมีข้อมูลที่แตกต่างกัน และอีกประการหนึ่ง คุณสามารถรับได้เฉพาะข้อมูลที่บอกให้ส่งเท่านั้น ดังนั้นหากคุณต้องการข้อมูลอื่น คุณต้องเปลี่ยนทั้งมาสเตอร์และสเลฟ
ขั้นตอนที่ 6: การสื่อสาร
คุณสามารถข้ามสิ่งนี้ได้หากคุณรู้วิธีตั้งค่า 2 Uno เพื่อพูดคุยกัน ฉันมีเกร็ดเล็กเกร็ดน้อยของข้อมูลในตอนท้าย เพื่อให้ง่าย ฉันจะเรียก uno ในฐานหุ่นยนต์ M1 และเซ็นเซอร์โซนิคเป็น S2 เชื่อมต่อ Vcc, กราวด์, A4, A5 เข้าด้วยกัน
ในภาพร่างสำหรับ S2 จะเริ่มต้นด้วย #include
จากนั้นสร้าง 8 ไบต์เพื่อส่ง ไบต์ R1, ไบต์ R2, ไบต์ L1 เป็นต้น Uno เป็นไมโคร 8 บิต ดังนั้นพวกเขาจึงส่ง 1 ไบต์ในแต่ละครั้งโดยใช้ 'ไบต์' แทนที่จะเป็น 'int' นั้นถูกต้อง
ใน 'setup()' ให้เพิ่ม 'Wire.begin(address)' สิ่งนี้จะบอก I2c ว่านี่คืออุปกรณ์ใด ที่อยู่มักจะเป็นตัวเลขใดๆ ที่คุณชอบระหว่าง 4 - 200 ขนาดของหนึ่งไบต์ ที่นี่ฉันใช้หมายเลข 10 เพื่อพูดคุยกับเซ็นเซอร์ S2 นี้ อาจารย์ต้องเรียก Wire.requestFrom(10, 8) นี่คือที่อยู่ 10 และ 8 คือจำนวนไบต์ที่ต้องการ นอกจากนี้ใน 'setup()' ให้เพิ่ม Wire.onRequest(isr anyName) เมื่อ M1 เรียกคำขอ เซ็นเซอร์ S2 จะตอบสนองด้วยการขัดจังหวะ นี่แค่เรียกใช้ฟังก์ชัน anyName ดังนั้นจึงต้องสร้างฟังก์ชัน anyName นี้ ดูแบบร่างและดูฟังก์ชัน 'sendThis()' นี่คือที่ที่ไบต์ถูกส่งไปยัง M1 จริง ๆ ไบต์เพียงอย่างเดียวไปและไม่ใช่ชื่อและในลำดับที่ส่ง นี่คือจุดเริ่มต้นของขนาดและปริมาณข้อมูลที่จะส่ง ในรูปแบบไบต์ที่ง่ายนี้ การส่งและรับควรตรงกัน ที่นี่ส่ง 8 ไบต์และรับ 8 ไบต์ หมายเหตุหนึ่งที่นี่คือการเรียกใช้ฟังก์ชันที่ต้องใช้ () เช่น delay(), millis(), Serial.print() เมื่อใช้ ISR (รูทีนบริการขัดจังหวะ) การเรียกใช้ฟังก์ชันจะลด () ดังนั้น Wire.onRequest(sendThis) ไม่ใช่ Wire.onRequest(sendThis())
ความสับสนที่ฉันมีคือเรื่องของเจ้านาย/ทาส ตอนแรกฉันคิดว่านายเป็นนายทั้งหมด แต่ภายในร่าง คุณสามารถสลับมาสเตอร์/สเลฟเพื่อขอจากไมโครอื่นหรือส่งไปยังไมโครอื่น ตราบใดที่คุณปฏิบัติตามรูปแบบพื้นฐานที่ระบุไว้ข้างต้น จำไว้ว่า… คุณแบ่งปันเฉพาะข้อมูลที่ได้รับมอบหมายเท่านั้น
สองบิตปิดผนัง isr ขัดจังหวะระหว่างเส้นร่างเท่านั้น หากคุณถูกล็อกในลูป 'while หรือ for' จะไม่มีอะไรเกิดขึ้นจนกว่าลูปจะออก ไม่มีเรื่องใหญ่เพราะอาจใช้เวลาไม่กี่ไมโครวินาทีและข้อมูลก็เก่า
ปัญหาอื่นคือ 'ภายใน' ไมโครมีการคำนวณที่ปราศจากข้อผิดพลาด 100% การสื่อสาร 'ภายนอก' (สาย) อาจมีข้อผิดพลาด มีหลายวิธีในการตรวจสอบว่าข้อมูลที่ส่งไม่มีข้อผิดพลาดและตรงกับแหล่งที่มา วิธีที่ง่ายที่สุดคือใช้เช็คซัม เพียงเพิ่มผลรวมของไบต์ที่ส่ง (ค่าจริง) แล้วส่งผลรวมและเมื่อสิ้นสุดการรับให้เพิ่มผลรวมและดูว่าตรงกันหรือไม่ หากตรงกันตกลงหรือโยนชุดข้อมูลนั้นหากไม่ตรงกัน แน่นอนว่าสิ่งนี้เกี่ยวข้องกับการส่งค่าจำนวนเต็มไม่ใช่ไบต์ ดังนั้นคุณเพียงแค่แบ่งจำนวนเต็มออกเป็นไบต์ HI และ LO และส่งเป็นไบต์แยกกัน แล้วนำมาประกอบกันที่เครื่องรับ
ง่าย:
int x = 5696; (ค่า int ที่ถูกต้องใดๆ สูงสุดคือ 65k หรือลบ 32k)
ไบต์สูง = x >>8; (22)
ไบต์แท้จริง = x; (64)
ส่งไบต์และรวมกันที่ปลายอีกด้านหนึ่ง….
ไบต์สวัสดี = Wire.read();
ไบต์ lo = Wire.read();
int newx = (สวัสดี <<8) + แท้จริง; (5696)
ขั้นตอนที่ 7: ปิด
ในการปิด โซนิคเซนเซอร์นี้จะให้ข้อมูลระยะทางดิบของเมนบอร์ดในแบบเรียลไทม์ สิ่งนี้ทำให้ไมโครว่างขึ้นและทำให้ร่างภาพมีความซับซ้อนน้อยลงมาก ขณะนี้ไมโครสามารถตัดสินใจได้ดีในการชะลอ เลี้ยว หยุด หรือย้อนกลับโดยอิงจากข้อมูลที่ดี แทนที่จะคาดเดาแบบสุ่ม ดูโพสต์อื่นๆ ของฉันเกี่ยวกับ Bluetooth IDE เพื่ออัปโหลดภาพสเก็ตช์โดยไม่ต้องใช้สายและต้องเชื่อมต่อหุ่นยนต์ของคุณตลอดเวลาเพื่อการเปลี่ยนแปลงอย่างรวดเร็วในสเก็ตช์ของคุณ ขอบคุณสำหรับการดูนี้ คนแก่
แนะนำ:
Pocket Sonic Ruler: 3 ขั้นตอน (พร้อมรูปภาพ)
Pocket Sonic Ruler: เครื่องชั่งอัลตราโซนิกขนาดพกพาที่คุณสามารถพกติดตัวและวัดความยาวของวัตถุได้ คุณสามารถวัดความสูง ความสูงของเฟอร์นิเจอร์ ฯลฯ ได้ ฉันกำลังเขียนคำแนะนำนี้บนสมมติฐานที่ว่าคุณรู้วิธีการติดตั้ง Arduino IDE และ
Sonic Screwdriver TV-B-Gone Conversion: 5 ขั้นตอน (พร้อมรูปภาพ)
Sonic Screwdriver TV-B-Gone Conversion: เมื่อเดือนที่แล้ว ฉันพบว่าวันเกิดเพื่อนของฉันกำลังจะมาถึง และฉันก็ตัดสินใจว่าจะต้องซื้อของวิเศษให้พวกเขา เธอเป็นแฟนตัวยงของ Doctor Who และฉันเพิ่งดูจบทุกตอนใน Netflix ในตอนนี้ ฉันถูก
Sonic Bow Tie โดย David Boldevin Engen: 4 ขั้นตอน (พร้อมรูปภาพ)
Sonic Bow Tie โดย David Boldevin Engen: โบว์ไทด์ขนาดกะทัดรัดที่สามารถแสดงเสียงรอบข้างอย่างต่อเนื่องในความถี่ที่แตกต่างกันสี่ความถี่บนอาร์เรย์ LED 4x5 ที่มิเรอร์สองอัน บทช่วยสอนนี้จะอธิบายวิธีการทำหูกระต่ายที่จะทำให้คุณโดดเด่น ในฝูงชนใด ๆ สิ่งที่คุณจะเ
Solderdoodle Plus: หัวแร้งพร้อมระบบควบคุมแบบสัมผัส, LED Feedback, เคสพิมพ์ 3 มิติ และชาร์จ USB ได้: 5 ขั้นตอน (พร้อมรูปภาพ)
Solderdoodle Plus: หัวแร้งพร้อมระบบควบคุมแบบสัมผัส LED Feedback เคสพิมพ์ 3 มิติ และชาร์จ USB ได้: โปรดคลิกด้านล่างเพื่อเยี่ยมชมหน้าโครงการ Kickstarter ของเราสำหรับ Solderdoodle Plus เครื่องมืออเนกประสงค์แบบชาร์จ USB แบบร้อนและสั่งจองรุ่นการผลิตล่วงหน้า!https: //www.kickstarter.com/projects/249225636/solderdoodle-plus-cordless-usb-rechargeable-ho
การชำระเงินด้วยไขควง Sonic: 6 ขั้นตอน (พร้อมรูปภาพ)
การชำระเงินด้วยไขควง Sonic: คำแนะนำนี้อธิบายวิธีที่เราลบชิปสมาร์ทการ์ดของบัตรชำระเงินแบบไร้สัมผัสของเราและปรับให้เข้ากับการอัพเกรด Sonic Screwdriver ของ Lieven สำหรับการชำระเงินแบบไม่ต้องสัมผัส สร้างโดย Lieven Scheire และ Maarten Weyn ช่วยเหลือเบื้องหลัง: Kurt B