สารบัญ:

โรเวอร์ควบคุมด้วยท่าทางสัมผัสโดยใช้มาตรความเร่งและคู่ตัวรับส่งสัญญาณ RF: 4 ขั้นตอน
โรเวอร์ควบคุมด้วยท่าทางสัมผัสโดยใช้มาตรความเร่งและคู่ตัวรับส่งสัญญาณ RF: 4 ขั้นตอน

วีดีโอ: โรเวอร์ควบคุมด้วยท่าทางสัมผัสโดยใช้มาตรความเร่งและคู่ตัวรับส่งสัญญาณ RF: 4 ขั้นตอน

วีดีโอ: โรเวอร์ควบคุมด้วยท่าทางสัมผัสโดยใช้มาตรความเร่งและคู่ตัวรับส่งสัญญาณ RF: 4 ขั้นตอน
วีดีโอ: ใครขึ้นเรือลำนี้ยกมือขึ้นค่ะ 😍 #ริววชิรวิชญ์ #ออมกรณ์นภัส #มาตาลดา #มากกว่าทีวีที่3Plus 2024, กรกฎาคม
Anonim
โรเวอร์ควบคุมด้วยท่าทางสัมผัสโดยใช้มาตรความเร่งและคู่ตัวรับส่งสัญญาณ RF
โรเวอร์ควบคุมด้วยท่าทางสัมผัสโดยใช้มาตรความเร่งและคู่ตัวรับส่งสัญญาณ RF

สวัสดี, เคยต้องการสร้างรถแลนด์โรเวอร์ที่คุณสามารถบังคับทิศทางด้วยท่าทางง่ายๆ ด้วยมือ แต่ไม่เคยรวบรวมความกล้าที่จะเสี่ยงกับความซับซ้อนของการประมวลผลภาพและการเชื่อมต่อเว็บแคมกับไมโครคอนโทรลเลอร์ของคุณ ไม่ต้องพูดถึงการต่อสู้ที่ยากเย็นแสนเข็ญเพื่อฟันฝ่าระยะและแนวต้านที่แย่ ปัญหาสายตา? ไม่ต้องกลัว…มีทางออกง่ายๆ! ดูเถิด เมื่อเรานำเสนอ ACCELEROMETER อันทรงพลังให้คุณเห็น! *บาดัม tsss*

มาตรความเร่งเป็นอุปกรณ์ที่ยอดเยี่ยมมากที่วัดความเร่งโน้มถ่วงตามแกนเชิงเส้น ซึ่งแสดงถึงระดับแรงดันไฟฟ้าที่ผันผวนระหว่างกราวด์และแรงดันไฟที่จ่าย ซึ่งไมโครคอนโทรลเลอร์ของเราจะอ่านเป็นค่าแอนะล็อก หากเราใช้สมองเพียงเล็กน้อย (คณิตศาสตร์เพียงเล็กน้อยและฟิสิกส์ของนิวตัน) ไม่เพียงแต่เราจะสามารถใช้สมองเพื่อวัดการเคลื่อนที่เชิงเส้นตามแนวแกนเท่านั้น แต่เรายังสามารถใช้สมองเพื่อกำหนดมุมของการเอียงและการสั่นของประสาทสัมผัสได้อีกด้วย อย่าหงุดหงิด! เราไม่ต้องการคณิตศาสตร์หรือฟิสิกส์ เราจะจัดการกับค่าดิบที่ตัวตรวจวัดความเร่งคายออกมา อันที่จริง คุณไม่จำเป็นต้องกังวลตัวเองมากนักเกี่ยวกับคุณสมบัติทางเทคนิคของมาตรความเร่งสำหรับโครงการนี้ ฉันจะพูดถึงรายละเอียดบางอย่างและอธิบายให้ละเอียดมากเท่าที่คุณต้องการเพื่อทำความเข้าใจภาพรวม แม้ว่าหากคุณสนใจที่จะศึกษากลไกภายใน ลองดูที่นี่

คุณเพียงแค่ต้องคำนึงถึงสิ่งนี้ในตอนนี้: มาตรความเร่งคือ Gizmo (มักจะควบคู่ไปกับไจโรสโคป) ที่เปิดประตูสู่เกมเซ็นเซอร์ตรวจจับความเคลื่อนไหวทั้งหมดที่เราเล่นบนสมาร์ทโฟนของเรา เกมแข่งรถที่เราบังคับรถได้ง่ายๆ โดยเอียงอุปกรณ์ของเราไปในทิศทางใดทิศทางหนึ่ง และเราสามารถเลียนแบบเอฟเฟกต์นี้ได้โดยการติดมาตรความเร่ง (แน่นอนว่ามีตัวช่วยสองสามตัว) ไว้บนถุงมือ เราแค่สวมถุงมือวิเศษแล้วเอียงมือไปทางซ้ายหรือขวา ไปข้างหน้าหรือข้างหลัง และเห็นรถแลนด์โรเวอร์เต้นตามจังหวะของเรา สิ่งที่เราต้องทำที่นี่คือการแปลค่าที่อ่านได้จากมาตรความเร่งเป็นสัญญาณดิจิตอลที่มอเตอร์บนรถแลนด์โรเวอร์สามารถตีความและประดิษฐ์กลไกในการส่งสัญญาณเหล่านี้ไปยังรถแลนด์โรเวอร์ เพื่อให้บรรลุสิ่งนี้ เราขอเรียกร้องให้ Arduino รุ่นเก่าและผู้ช่วยของมันสำหรับการทดลองในปัจจุบัน คู่เครื่องส่งและตัวรับสัญญาณ RF ทำงานที่ 434MHz ดังนั้นจึงให้ช่วงพื้นที่เปิดโล่งประมาณ 100-150 เมตร ซึ่งช่วยให้เรารอดพ้นจากสายของ ปัญหาสายตา

ค่อนข้างแฮ็คที่ดีใช่มั้ย มาดำน้ำกัน…

ขั้นตอนที่ 1: รวบรวมอุปกรณ์ของคุณ

รวบรวมอุปกรณ์ของคุณ
รวบรวมอุปกรณ์ของคุณ
รวบรวมอุปกรณ์ของคุณ
รวบรวมอุปกรณ์ของคุณ
รวบรวมอุปกรณ์ของคุณ
รวบรวมอุปกรณ์ของคุณ
รวบรวมอุปกรณ์ของคุณ
รวบรวมอุปกรณ์ของคุณ
• Arduino นาโน x1
• มาตรความเร่ง (ADXL335) x1
• มอเตอร์ DC 5V + ล้อ x2 แต่ละอัน
• วงล้อวัว* x1
• ตัวขับมอเตอร์ L293D + ซ็อกเก็ต IC 16 พิน x1 แต่ละอัน
• เครื่องส่งสัญญาณ RF 434 MHz x1
• เครื่องรับ RF 434 MHz x1
• HT-12E Encoder IC + ซ็อกเก็ต IC 18 พิน x1 แต่ละอัน
• HT-12D ตัวถอดรหัส IC + ซ็อกเก็ต IC 18 พิน x1 แต่ละอัน
• ตัวควบคุมแรงดันไฟฟ้า LM7805 x1
• สวิตช์ปุ่มกด x2
• LED สีแดง + ตัวต้านทาน 330O x2 แต่ละอัน
• ไฟ LED สีเหลือง + ตัวต้านทาน 330O x1 แต่ละอัน
• ตัวต้านทาน LED สีเขียว + 330O (อุปกรณ์เสริม) x4 แต่ละอัน
• ตัวต้านทาน 51kO และ 1MO x1 แต่ละอัน
• 10µF ตัวเก็บประจุแบบเรเดียล x2
แบตเตอรี่, ขั้วต่อแบตเตอรี่, สาย USB, สายจัมเปอร์, หัวต่อตัวเมีย, ขั้วต่อสกรู 2 ขา, PCB, Chasis และอุปกรณ์บัดกรีทั่วไปของคุณ

หากคุณสงสัยว่าทำไมเราถึงใช้วงล้อวัว ประเด็นก็คือ โมดูลตัวส่งและตัวรับ RF มีหมุดข้อมูลเพียง 4 ตัว ซึ่งหมายความว่าเราสามารถขับมอเตอร์ได้เพียง 2 ตัวเท่านั้น และด้วยเหตุนี้จึงใช้ล้อวัวเพื่อ รองรับโครงสร้าง อย่างไรก็ตาม หากคุณรู้สึกว่ารถแลนด์โรเวอร์ของคุณจะดูเท่กว่าด้วยสี่ล้อ ไม่ต้องกังวล มีทางแก้ไข! ในกรณีนี้ เพียงแค่ขูดวงล้อวัวออกจากรายการ และเพิ่มมอเตอร์ DC 5V อีกคู่หนึ่ง พร้อมด้วยล้อแต่ละอัน และมองหาแฮ็กง่ายๆ ที่กล่าวถึงเมื่อสิ้นสุดขั้นตอนที่ 3

สุดท้ายสำหรับผู้ที่กล้าหาญ มีขอบเขตสำหรับการปรับเปลี่ยนการออกแบบอีกเล็กน้อย ซึ่งเกี่ยวข้องกับวิศวกรรม Arduino ของคุณเอง ตรงไปที่ส่วนโบนัสในขั้นตอนต่อไปและดูด้วยตัวคุณเอง คุณจะต้องมีอุปกรณ์เพิ่มเติมอีกสองสามอย่าง: ATmega328P, ซ็อกเก็ต IC 28 พิน, ออสซิลเลเตอร์คริสตัล 16 เมกะเฮิร์ตซ์, ฝาปิดเซรามิก 22pF สองตัว, ตัวควบคุมแรงดันไฟฟ้า 7805 อีกตัว, แคปเรเดียล 10μF อีกสองตัวและตัวต้านทาน 10kΩ, 680Ω, 330Ω และใช่ ลบ Arduino!

ขั้นตอนที่ 2: ต่อสายเครื่องส่งสัญญาณ

ต่อสายเครื่องส่งสัญญาณ
ต่อสายเครื่องส่งสัญญาณ
ต่อสายส่งสัญญาณ
ต่อสายส่งสัญญาณ
ต่อสายส่งสัญญาณ
ต่อสายส่งสัญญาณ
ต่อสายเครื่องส่งสัญญาณ
ต่อสายเครื่องส่งสัญญาณ

เราจะแบ่งโครงการออกเป็นสององค์ประกอบ: วงจรตัวส่งและตัวรับ ตัวส่งสัญญาณประกอบด้วยมาตรความเร่ง, Arduino และโมดูลตัวส่งสัญญาณ RF ร่วมกับไอซีตัวเข้ารหัส HT-12E ทั้งหมดต่อสายตามแผนผังที่แนบมา

มาตรความเร่งดังที่แนะนำก่อนหน้านี้ทำหน้าที่จดจำท่าทางมือของเรา เราจะใช้มาตรความเร่งแบบสามแกน (โดยทั่วไปแล้วจะมีมาตรความเร่งแบบแกนเดียวสามตัวในเครื่องเดียว) เพื่อตอบสนองความต้องการของเรา สามารถใช้เพื่อวัดความเร่งในทั้งสามมิติ และอย่างที่คุณอาจเดาได้ ค่านี้ไม่ได้ให้ผลลัพธ์เพียงค่าเดียว แต่เป็นชุดค่าแอนะล็อกสามค่าที่สัมพันธ์กับสามแกน (x, y และ z) อันที่จริง เราต้องการความเร่งตามแกน x และ y เท่านั้น เนื่องจากเราสามารถขับโรเวอร์ได้สี่ทิศทางเท่านั้น: หันหลังหรือถอยหลัง (เช่น ตามแนวแกน y) และซ้ายหรือขวา (เช่น ตามแนวแกน x) เราต้องการแกน z หากเรากำลังสร้างโดรน เพื่อที่เราจะสามารถควบคุมการขึ้นหรือลงของมันได้ด้วยท่าทาง ไม่ว่าในกรณีใด ค่าแอนะล็อกเหล่านี้ที่ตัวตรวจวัดความเร่งให้ผลจะต้องถูกแปลงเป็นสัญญาณดิจิตอลเพื่อให้สามารถขับเคลื่อนมอเตอร์ได้ Arduino ดูแลสิ่งนี้ ซึ่งส่งสัญญาณเหล่านี้เมื่อทำการแปลงไปยังรถแลนด์โรเวอร์ผ่านโมดูลเครื่องส่งสัญญาณ RF

เครื่องส่ง RF มีงานเดียวเท่านั้น: เพื่อส่งข้อมูล "อนุกรม" ที่ขา 3 ออกจากเสาอากาศที่ขา 1 ซึ่งสนับสนุนการใช้ HT-12E ซึ่งเป็นตัวเข้ารหัสข้อมูลแบบขนานกับอนุกรม 12 บิต ซึ่งรวบรวม ข้อมูลขนานไม่เกิน 4 บิตจาก Arduino ที่สาย AD8 ถึง AD11 ทำให้เรามีพื้นที่สำหรับชุดค่าผสม I/O ที่แตกต่างกันมากถึง 24=16 เมื่อเทียบกับพินข้อมูลเดียวบนเครื่องส่งสัญญาณ RF ส่วนที่เหลืออีก 8 บิตซึ่งดึงมาจากเส้น A0 ถึง A7 บนตัวเข้ารหัส ประกอบเป็นไบต์ที่อยู่ ซึ่งอำนวยความสะดวกในการจับคู่เครื่องส่ง RF กับเครื่องรับ RF ที่สอดคล้องกัน จากนั้นนำ 12 บิตมารวมกันและจัดลำดับ แล้วส่งต่อไปยังขาข้อมูลของเครื่องส่งสัญญาณ RF ซึ่งในทางกลับกัน ASK จะปรับข้อมูลไปยังคลื่นพาหะ 434MHz และยิงออกทางเสาอากาศที่ขา 1

ตามแนวคิดแล้ว เครื่องรับ RF ใดๆ ที่ฟังที่ 434Mhz ควรจะสามารถสกัดกั้น แยกส่วน และถอดรหัสข้อมูลนี้ได้ อย่างไรก็ตาม บรรทัดที่อยู่ใน HT-12E และบรรทัดที่อยู่ใน HT-12D (ตัวถอดรหัสข้อมูลแบบอนุกรมถึงขนาน 12 บิต) ทำให้เราสามารถแสดงคู่เครื่องส่งและตัวรับสัญญาณ RF ที่ไม่ซ้ำกันโดยกำหนดเส้นทางข้อมูลไปยัง ผู้รับที่ตั้งใจไว้จึงจำกัดการสื่อสารกับผู้อื่นทั้งหมด ทั้งหมดที่เราต้องการคือการกำหนดค่าบรรทัดที่อยู่ให้เหมือนกันทั้งสองด้าน ตัวอย่างเช่น เนื่องจากเราได้ต่อสายที่อยู่ทั้งหมดสำหรับ HT-12E ของเรา เราจึงต้องทำเช่นเดียวกันสำหรับ HT-12D ที่ปลายทางรับ มิฉะนั้นรถแลนด์โรเวอร์จะไม่สามารถรับสัญญาณได้ ด้วยวิธีนี้ เรายังสามารถควบคุมรถโรเวอร์หลายตัวด้วยวงจรตัวส่งสัญญาณเดียวโดยกำหนดค่าบรรทัดที่อยู่ใน HT-12D ที่เครื่องรับแต่ละเครื่องให้เหมือนกัน หรือเราอาจสวมถุงมือสองตัว โดยแต่ละอันติดวงจรเครื่องส่งสัญญาณที่มีการกำหนดค่าบรรทัดที่อยู่ที่แตกต่างกัน (เช่น หนึ่งมีบรรทัดที่อยู่ทั้งหมดต่อสายดิน และอีกชุดหนึ่งมีสายดินทั้งหมดสูง หรืออันหนึ่งมีหนึ่งบรรทัดต่อสายดิน ขณะที่อีกเจ็ดบรรทัดถูกยึดไว้ สูงและอีกเส้นหนึ่งมีสายดินสองเส้นในขณะที่หกที่เหลือถูกยกขึ้นสูงหรือรวมกันอื่น ๆ) และพวงมาลัยแต่ละคันที่มีการกำหนดค่าเหมือนกันหลายคัน เล่นเป็นเกจิในซิมโฟนี Android!

สิ่งสำคัญอย่างหนึ่งที่ควรทราบขณะประกอบวงจรคือค่าของ Rosc HT-12E มีวงจรออสซิลเลเตอร์ภายในระหว่างพิน 15 และ 16 ซึ่งเปิดใช้งานโดยการเชื่อมต่อตัวต้านทานที่เรียกว่า Rosc ระหว่างพินเหล่านั้น ค่าที่เลือกสำหรับ Rosc จะเป็นตัวกำหนดความถี่ของออสซิลเลเตอร์ ซึ่งอาจแตกต่างกันไปขึ้นอยู่กับแรงดันไฟฟ้าของแหล่งจ่าย การเลือกค่าที่เหมาะสมสำหรับ Rosc เป็นสิ่งสำคัญต่อการทำงานของ HT-12E! ตามหลักการแล้วความถี่ออสซิลเลเตอร์ของ HT-12E ควรเท่ากับ 1/50 เท่าของความถี่ของ HT-12D ดังนั้น เนื่องจากเราใช้ 5V เราจึงเลือกตัวต้านทาน 1MΩ และ 51kΩ เป็น Rosc สำหรับวงจร HT-12E และ HT-12D ตามลำดับ หากคุณวางแผนที่จะใช้งานวงจรด้วยแรงดันไฟที่ต่างกัน โปรดดูกราฟ “ความถี่ออสซิลเลเตอร์เทียบกับแรงดันจ่าย” ในหน้า 11 ของแผ่นข้อมูล HT-12E ที่แนบมาเพื่อกำหนดความถี่ออสซิลเลเตอร์และตัวต้านทานที่แน่นอนที่จะใช้

นอกจากนี้ เราจะใช้ส่วนหัวของเพศหญิงที่นี่ (ซึ่งมีจุดประสงค์คล้ายกับซ็อกเก็ต IC) เพื่อเสียบมาตรความเร่ง ตัวส่งสัญญาณ RF และ Arduino ในวงจร แทนที่จะบัดกรีโดยตรงบน PCB ความตั้งใจที่จะเป็นที่พักของส่วนประกอบที่สามารถนำกลับมาใช้ใหม่ได้ สมมติว่าคุณออกแบบรถแลนด์โรเวอร์ที่ควบคุมด้วยท่าทางมาระยะหนึ่งแล้ว และมันก็นั่งอยู่ที่นั่น ครึ่งหนึ่งเต็มไปด้วยฝุ่น บนชั้นวางถ้วยรางวัลของคุณ และคุณสะดุดกับคำแนะนำที่ยอดเยี่ยมอีกอันหนึ่งซึ่งใช้ประโยชน์จากประสิทธิภาพของมาตรความเร่ง แล้วคุณจะทำอย่างไร? คุณเพียงแค่ดึงมันออกจากรถแลนด์โรเวอร์แล้วดันเข้าไปในวงจรใหม่ของคุณ ไม่จำเป็นต้องเรียก "Amazons" เพื่อรับใหม่:-p

โบนัส: เลิกใช้ Arduino แต่อย่าทำ

ในกรณีที่คุณรู้สึกอยากผจญภัยมากขึ้น และโดยเฉพาะอย่างยิ่ง ถ้าคุณคิดว่าการใช้สิ่งมหัศจรรย์ที่ออกแบบมาอย่างสวยงามนี้ (แน่นอนว่า Arduino) สำหรับงานเล็กๆ น้อยๆ อย่างของเรานั้นเกินความสามารถ อดทนไว้อีกหน่อย; และหากไม่เป็นเช่นนั้น โปรดข้ามไปยังขั้นตอนถัดไป

เป้าหมายของเราคือทำให้ Arduino (อันที่จริงแล้วคือสมองของ Arduino ใช่ ฉันกำลังพูดถึง ATmega IC!) เป็นสมาชิกถาวรของทีม ATmega จะถูกตั้งโปรแกรมให้รันเพียงภาพร่างเดียวซ้ำแล้วซ้ำเล่าเพื่อให้สามารถทำหน้าที่เป็นส่วนถาวรของวงจร เช่นเดียวกับ HT-12E-a เป็นเพียง IC เพียงแค่นั่งอยู่ที่นั่นและทำในสิ่งที่ควรจะเป็น นี่ไม่ใช่ระบบฝังตัวที่แท้จริงที่ควรจะเป็นใช่หรือไม่

อย่างไรก็ตาม เพื่อดำเนินการอัพเกรดนี้ เพียงปรับเปลี่ยนวงจรตามแผนผังที่สองที่แนบมา ที่นี่เราเพียงแค่เปลี่ยนส่วนหัวของตัวเมียสำหรับ Arduino ด้วยซ็อกเก็ต IC สำหรับ ATmega เพิ่มตัวต้านทานแบบดึงขึ้น 10K ที่พินรีเซ็ต (พิน 1) ของ IC และปั๊มขึ้นด้วยนาฬิกาภายนอกระหว่างพิน 9 และ 10 น่าเสียดาย ถ้าเราเลิกใช้ Arduino เราก็ปล่อยตัวควบคุมแรงดันไฟในตัวของมันออกไป ดังนั้นเราต้องจำลองวงจร LM7805 ที่เราใช้สำหรับเครื่องรับด้วยเช่นกัน นอกจากนี้เรายังใช้ประโยชน์จากตัวแบ่งแรงดันไฟฟ้าเพื่อดึง 3.3V ที่จำเป็นสำหรับการจ่ายพลังงานให้กับมาตรความเร่ง

ตอนนี้สิ่งเดียวที่จับได้คือการเขียนโปรแกรม ATmega ให้ทำงาน คุณจะต้องรอจนกว่าจะถึงขั้นตอนที่ 4 แม้ว่า ดังนั้นคอยติดตาม …

ขั้นตอนที่ 3: และผู้รับ

และผู้รับ
และผู้รับ
และผู้รับ
และผู้รับ
และผู้รับ
และผู้รับ
และผู้รับ
และผู้รับ

ตัวรับประกอบด้วยโมดูลตัวรับ RF ควบคู่ไปกับ IC ตัวถอดรหัส HT-12D และมอเตอร์กระแสตรงคู่หนึ่งที่ทำงานด้วยความช่วยเหลือของไดรเวอร์มอเตอร์ L293D ทั้งหมดต่อสายตามแผนผังที่แนบมา

งานเดียวของเครื่องรับ RF คือการ demodulate คลื่นพาหะ (รับผ่านเสาอากาศที่พิน 1) และแสดงผลข้อมูล "ซีเรียล" ที่ดึงมาที่พิน 7 จากตำแหน่งที่ HT-12D หยิบขึ้นมาสำหรับการดีซีเรียลไลเซชัน ตอนนี้ สมมติว่าบรรทัดที่อยู่ (A0 ถึง A7) บน HT-12D ได้รับการกำหนดค่าเหมือนกับคู่ของ HT-12E ข้อมูล 4 บิตคู่ขนานจะถูกแยกและส่งผ่านผ่านสายข้อมูล (D8 ถึง D11) บน HT-12D ให้กับตัวขับมอเตอร์ ซึ่งจะแปลงสัญญาณเหล่านี้เพื่อขับเคลื่อนมอเตอร์

อีกครั้งให้ความสนใจกับค่าของ Rosc HT-12D ก็มีวงจรออสซิลเลเตอร์ภายในระหว่างพิน 15 และ 16 ซึ่งเปิดใช้งานโดยการเชื่อมต่อตัวต้านทานที่เรียกว่า Rosc ระหว่างพินเหล่านั้น ค่าที่เลือกสำหรับ Rosc จะเป็นตัวกำหนดความถี่ของออสซิลเลเตอร์ ซึ่งอาจแตกต่างกันไปขึ้นอยู่กับแรงดันไฟฟ้าของแหล่งจ่าย การเลือกค่าที่เหมาะสมสำหรับ Rosc มีความสำคัญต่อการทำงานของ HT-12D! ตามหลักการแล้วความถี่ออสซิลเลเตอร์ของ HT-12D ควรมากกว่า 50 เท่าของความถี่ของ HT-12E ดังนั้น เนื่องจากเราใช้ 5V เราจึงเลือกตัวต้านทาน 1MΩ และ 51kΩ เป็น Rosc สำหรับวงจร HT-12E และ HT-12D ตามลำดับ หากคุณวางแผนที่จะใช้งานวงจรด้วยแรงดันไฟที่ต่างกัน โปรดดูกราฟ “ความถี่ออสซิลเลเตอร์เทียบกับแรงดันจ่าย” ในหน้า 5 ของแผ่นข้อมูล HT-12D ที่แนบมาเพื่อกำหนดความถี่ออสซิลเลเตอร์และตัวต้านทานที่แน่นอนที่จะใช้

นอกจากนี้ อย่าลืมส่วนหัวของตัวเมียสำหรับเครื่องรับ RF

อีกทางเลือกหนึ่ง สามารถเชื่อมต่อ LED ผ่านตัวต้านทานจำกัดกระแส 330Ω กับพินข้อมูลทั้ง 4 ตัวของ HT-12D เพื่อช่วยกำหนดบิตที่ได้รับที่พินนั้น ไฟ LED จะสว่างขึ้นหากบิตที่ได้รับสูง (1) และจะหรี่ลงหากบิตที่ได้รับเป็น LOW (0) อีกวิธีหนึ่งคือ LED ตัวเดียวสามารถผูกติดกับพิน VT ของ HT-12D (อีกครั้งผ่านตัวต้านทานจำกัดกระแส 330Ω) ซึ่งจะสว่างขึ้นในกรณีที่มีการส่งสัญญาณที่ถูกต้อง

ตอนนี้ หากคุณกำลังมองหาการแฮ็กด้วยมอเตอร์ที่ฉันพูดถึงในขั้นตอนที่หนึ่ง มันง่ายมาก! เพียงต่อมอเตอร์สองตัวในแต่ละชุดขนานกันดังแสดงในแผนผังที่สอง วิธีนี้ได้ผลตามที่ควรจะเป็น เนื่องจากมอเตอร์ในแต่ละชุด (มอเตอร์ด้านหน้าและด้านหลังทางด้านซ้าย และมอเตอร์ด้านหน้าและด้านหลังทางด้านขวา) จะไม่ขับเคลื่อนไปในทิศทางตรงกันข้าม กล่าวคือ ในการเลี้ยวขวาของรถแลนด์โรเวอร์ มอเตอร์ด้านหน้าและด้านหลังทางด้านซ้ายจะต้องขับเคลื่อนไปข้างหน้า และมอเตอร์ด้านหน้าและด้านหลังทางด้านขวาจะต้องขับเคลื่อนถอยหลัง ในทำนองเดียวกัน เพื่อให้รถแลนด์โรเวอร์เลี้ยวซ้าย มอเตอร์ด้านหน้าและด้านหลังทางด้านซ้ายจะต้องถูกขับเคลื่อนถอยหลัง และมอเตอร์ด้านหน้าและด้านหลังทางด้านขวาจะต้องขับเคลื่อนไปข้างหน้า ดังนั้นจึงปลอดภัยที่จะป้อนแรงดันไฟฟ้าคู่เดียวกันให้กับมอเตอร์ทั้งสองในชุด และวิธีดำเนินการก็คือเพียงแค่ต่อมอเตอร์เข้าด้วยกันแบบขนาน

ขั้นตอนที่ 4: เข้าสู่รหัส

ไปที่รหัส
ไปที่รหัส

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

เรารู้ว่ามาตรความเร่งวัดความเร่งโน้มถ่วงตามแกนเชิงเส้น และความเร่งนี้แสดงเป็นระดับแรงดันไฟฟ้าที่ผันผวนระหว่างกราวด์และแรงดันไฟฟ้าที่จ่าย ซึ่งไมโครคอนโทรลเลอร์ของเราอ่านค่าเป็นค่าแอนะล็อกที่แปรผันระหว่าง 0 ถึง 1,023 แต่เนื่องจากเรา ใช้มาตรความเร่งที่ 3.3V ขอแนะนำให้ตั้งค่าการอ้างอิงแบบอะนาล็อกสำหรับ ADC 10 บิต (ที่รวมอยู่ใน ATmeaga บน Arduino) เป็น 3.3V มันจะทำให้สิ่งต่าง ๆ เข้าใจง่ายขึ้น แม้ว่าการทดลองเล็กๆ ของเราจะไม่มีความสำคัญมากนัก แม้ว่าเราจะไม่ได้ทำก็ตาม (เราจะต้องปรับแต่งโค้ดเล็กน้อย) อย่างไรก็ตาม ในการทำเช่นนั้น เราเพียงแค่ต่อพิน AREF บน Arduino (พิน 21 บน ATmega) ไปที่ 3.3V และระบุการเปลี่ยนแปลงนี้ในโค้ดโดยเรียก analogReference(EXTERNAL)

ตอนนี้ เมื่อเราวางตัวตรวจวัดความเร่งแบบราบและแบบอะนาล็อกอ่านความเร่งตามแกน x และ y (จำไว้ เราต้องใช้เพียงสองแกนนี้เท่านั้น) เราจะได้ค่าประมาณ 511 (เช่น ครึ่งทางระหว่าง 0 ถึง 1023) ซึ่งก็แค่ วิธีบอกว่ามีความเร่งเป็น 0 ตามแกนเหล่านี้ แทนที่จะขุดลงไปในรายละเอียดของข้อเท็จจริง ลองนึกภาพว่านี่เป็นแกน x และ y บนกราฟ โดยมีค่า 511 แสดงถึงที่มาและ 0 และ 1,023 จุดสิ้นสุดตามที่ปรากฎในภาพ ปรับทิศทางมาตรความเร่งในลักษณะที่หมุดของมันชี้ลงและเข้าใกล้คุณมากขึ้น ไม่เช่นนั้นคุณอาจพลิก/เปลี่ยนแกนได้ ซึ่งหมายความว่าหากเราเอียงตัวตรวจวัดความเร่งไปทางขวา เราควรอ่านค่าที่มากกว่า 511 ตามแกน x และหากเราเอียงตัวตรวจวัดความเร่งไปทางซ้าย เราควรได้ค่าที่ต่ำกว่า 511 ตามแกน x. ในทำนองเดียวกัน หากเราเอียงตัวตรวจวัดความเร่งไปข้างหน้า เราควรอ่านค่าที่มากกว่า 511 ตามแกน y และหากเราเอียงตัวตรวจวัดความเร่งไปข้างหลัง เราควรอ่านค่าที่ต่ำกว่า 511 ตามแกน y และนี่คือวิธีที่เราอนุมานในโค้ดว่าทิศทางที่รถแลนด์โรเวอร์ควรขับเข้าไป แต่นี่ก็หมายความว่าเราต้องรักษาความเร่งให้คงที่และจัดแนวขนานกับพื้นผิวเรียบเพื่อให้สามารถอ่านค่า 511 ได้ตลอดทั้งสองแกน เพื่อให้รถแลนด์โรเวอร์จอดนิ่ง เพื่อทำให้งานนี้ง่ายขึ้นเล็กน้อย เรากำหนดธรณีประตูบางอย่างที่สร้างขอบเขต ตามที่แสดงในภาพ เพื่อให้รถแลนด์โรเวอร์ยังคงนิ่งอยู่ตราบเท่าที่ค่า x และ y อยู่ภายในขอบเขต และเราทราบแน่ชัดว่ารถแลนด์โรเวอร์ต้องถูกตั้งค่าใน เคลื่อนไหวเมื่อเกินเกณฑ์

ตัวอย่างเช่น หากแกน y อ่าน 543 เรารู้ว่ามาตรความเร่งเอียงไปข้างหน้า ergo เราต้องบังคับรถแลนด์โรเวอร์ไปข้างหน้า เราทำสิ่งนี้โดยการตั้งค่าพิน D2 และ D4 HIGH และพิน D3 และ D5 LOW เนื่องจากหมุดเหล่านี้ต่อเข้ากับ HT-12E โดยตรง สัญญาณจึงถูกทำให้เป็นอนุกรมและไล่ออกจากเครื่องส่งสัญญาณ RF เท่านั้นที่จะจับโดยเครื่องรับ RF ซึ่งนั่งอยู่บนรถแลนด์โรเวอร์ ซึ่งด้วยความช่วยเหลือของ HT-12D จะยกเลิกการส่งสัญญาณและ ส่งต่อไปยัง L293D ซึ่งจะตีความสัญญาณเหล่านี้และขับเคลื่อนมอเตอร์ไปข้างหน้า

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

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

ตัวเลือก A:ใช้อุปกรณ์ USB เข้ากับ Serial เช่น FTDI FT232 basic breakout board เพียงเดินสายจากส่วนหัว TTL ไปยังพินที่เกี่ยวข้องบน ATmega ตามการแมปด้านล่าง:

Pins บน Breakout Board Pins บน Microcontroller
DTR/GRN RST/รีเซ็ต (พิน 1) ผ่าน 0.1µF cap
Rx Tx (พิน 3)
Tx Rx (พิน 2)
Vcc เอาต์พุต +5v
CTS (ไม่ได้ใช้)
Gnd พื้น

ตอนนี้ เสียบปลายสาย USB ด้านหนึ่งเข้ากับบอร์ดฝ่าวงล้อมและอีกด้านหนึ่งในพีซีของคุณและอัปโหลดโค้ดตามปกติ: เปิด Arduino IDE เลือกพอร์ตอนุกรมที่เหมาะสม ตั้งค่าประเภทบอร์ด รวบรวมภาพร่าง และกดอัปโหลด.

ตัวเลือก B: ใช้ UNO หากคุณมีอันหนึ่งวางอยู่ที่ไหนสักแห่ง เพียงเสียบ ATmega ของคุณเข้ากับ UNO อัปโหลดรหัสตามปกติ ดึง IC ออกแล้วดันกลับเข้าไปในวงจรส่งสัญญาณ ง่ายเหมือนพาย!

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

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

ขอบคุณ

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

แนะนำ: