สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: สร้างฐาน
- ขั้นตอนที่ 2: ชิ้นส่วนเซอร์โว
- ขั้นตอนที่ 3: การเพิ่มเซอร์โวมอเตอร์และม้วนกระดาษไปที่ฐาน
- ขั้นตอนที่ 4: การสร้างเฟรมสเต็ปเปอร์มอเตอร์
- ขั้นตอนที่ 5: เสร็จสิ้นการสัมผัส
- ขั้นตอนที่ 6: อุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 7: การแก้ไขปัญหา
วีดีโอ: Arduino Morse Code Writer: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ฉันสร้างหุ่นยนต์ที่สามารถแปลงข้อความที่กำหนดเป็นรหัสมอร์สแล้วจดไว้!! มันทำจากกระดาษแข็งและเลโก้ และสำหรับอุปกรณ์อิเล็กทรอนิกส์ ฉันใช้ Arduino และมอเตอร์เพียงสองตัว
เสบียง
Arduino Uno board Stepper motor Micro servo SG90ULN2003 stepper motor driver module โมดูลแหล่งจ่ายไฟ เขียงหั่นขนม4× สายจัมเปอร์6× สายดูปองท์หญิงกับชาย9V1A อะแดปเตอร์ สายเคเบิล USB กระดาษแข็ง 2× หมุดไม้ 2× ฟางสปริง กระดาษสีขาว เลโก้ซุปเปอร์ กาว ปืนกาวร้อน แถบยางยืด ที่ใส่ปากกา)กรรไกรตัดเล็บ
ขั้นตอนที่ 1: สร้างฐาน
เริ่มต้นด้วยการสร้างฐาน เหมืองกว้าง 4 กระดุมและยาว 20 เม็ด หลังจากสร้างชั้นหนึ่งด้วยความยาวเหล่านั้น ฉันสร้างกระดานชนวนกว้างหนึ่งตัวรอบๆ เหมือง โดยเหลือช่องว่างไว้ด้านหนึ่งเพื่อให้มีที่ว่างสำหรับสเต็ปเปอร์มอเตอร์ จากนั้นฉันก็เพิ่ม ชิ้นส่วนกระเบื้องถึงส่วนตรงกลางที่จะเป็นแถบกระดาษ การใช้เลโก้ทำให้แข็งแรงและปรับเปลี่ยนได้ง่าย ในการทำม้วนกระดาษ ฉันตัดแถบกระดาษ A4 กว้าง 1.2 ซม. (ฉันเลือกความกว้างนี้เพราะมันกว้างเท่ากับล้อเลโก้ที่ฉันใช้ คุณสามารถทำให้ใหญ่ขึ้นหรือเล็กลงได้ขึ้นอยู่กับล้อของคุณ) และติดปลายมันเข้าด้วยกัน เพื่อสร้างแถบยาวมาก ๆ จากนั้นฉันก็พันไว้รอบวงล้อ
ขั้นตอนที่ 2: ชิ้นส่วนเซอร์โว
สำหรับขั้นตอนนี้คุณต้อง:
- เดือยไม้ 2 อัน ยาว 4 ซม.
- สองสปริงยาว 2 ซม.
- ฟางหนึ่งอันตัดเป็นสองท่อนยาว 2 ซม
- กระดาษแข็งขนาด 12 ซม. คูณ 4 ซม. หนึ่งแผ่น
- กระดาษแข็งขนาด 4 ซม. คูณ 1.5 ซม. สองแผ่น
- กระดาษแข็งขนาด 4 ซม. คูณ 2 ซม. หนึ่งแผ่น
ขั้นแรก ติดเดือยกับหนึ่งในชิ้นขนาด 4 คูณ 1.5 จากนั้นใส่สปริงและหลอดเข้าไปในเดือย จากนั้นติดกระดาษแข็งอีกชิ้นที่อีกด้านหนึ่งเพื่อยึดทุกอย่างเข้าที่
ประการที่สอง กาวชิ้น 4 ซม. คูณ 2 ซม. ที่ด้านบนของหลอด
ประการที่สาม พลิกทั้งชิ้นและกาวเดือยเล็ก ๆ ที่ด้านหลัง ไม่ใช่ตรงกลาง แต่ไปทางซ้ายเล็กน้อย (ลืมใส่เดือยเล็กๆในรูปแรก)
สุดท้าย ตัดรูบนกระดาษแข็งชิ้นใหญ่ขนาดเท่าด้านหน้าของเซอร์โวมอเตอร์แล้วกาวมอเตอร์เข้าไป จากนั้นจึงติดชิ้นที่เราเพิ่งทำกับเดือยเข้ากับชิ้นใหญ่ เพื่อที่ว่าเมื่อเซอร์โวเคลื่อนที่ มันจะดัน เดือยเล็กลงซึ่งจะดันสปริงลงไปด้วย
ฉันลงเอยด้วยการตัดจากส่วนล่างของชิ้นส่วนขนาด 12 ซม. คูณ 4 ซม. ประมาณ 3 ซม. และติดชิ้นอีก 4 ซม. คูณ 1.5 ซม. อีกสองชิ้น จากนั้นปิดด้วยกระดาษแข็งขนาด 5.5 ซม. คูณ 4 ซม. และเพื่อถือปากกามาร์คเกอร์ ฉันทำชิ้นเล็ก ห่วงยางยืดแล้วติดบนกระดาษแข็งชิ้นเล็ก ๆ จากนั้นฉันก็ติดกาวนั้นกับชิ้นส่วนขนาด 4 ซม. คูณ 2 ซม. ซึ่งจะเลื่อนลงเมื่อเซอร์โวเริ่มทำงาน ส่วนเพิ่มเติมเหล่านี้หยุดเครื่องหมายไม่ให้เคลื่อนที่จากด้านหนึ่งไปอีกด้านหนึ่งเมื่อสปริงกลับมา
ขั้นตอนที่ 3: การเพิ่มเซอร์โวมอเตอร์และม้วนกระดาษไปที่ฐาน
ฉันเพิ่มอิฐอีกสองก้อนที่ด้านหนึ่งของฐานเพื่อรองรับชิ้นส่วนเซอร์โวและติดกาวให้เข้าที่ จากนั้นฉันก็เพิ่มล้อไปที่ปลายสุดของฐาน
ขั้นตอนที่ 4: การสร้างเฟรมสเต็ปเปอร์มอเตอร์
ขั้นตอนนี้ค่อนข้างท้าทาย เนื่องจากมอเตอร์ไม่ได้ถูกสร้างมาเพื่อให้เข้ากับเลโก้ได้อย่างสมบูรณ์แบบ อย่างไรก็ตาม ฉันทำได้โดยใช้รูสองรูในมอเตอร์เพื่อยึดให้เข้าที่ ต่อไป ฉันติดล้อเลโก้ที่ส่วนปลายของมอเตอร์ แล้ววางมันไว้ข้างๆ ฐานด้านข้างที่เปิดทิ้งไว้ในขั้นตอนที่ 1
ขั้นตอนที่ 5: เสร็จสิ้นการสัมผัส
ฉันเพิ่มส่วนโค้งสองชิ้นเพื่อปิดล้อเพื่อยึดกระดาษเข้าที่ และฉันได้เพิ่มส่วนโค้งเล็กๆ สองชิ้น ชิ้นหนึ่งเพื่อยึดสายไฟของสเต็ปเปอร์มอเตอร์ และอีกชิ้นสำหรับยึดกระดาษ สุดท้ายนี้ ฉันเปลี่ยนสเต็ปเปอร์มอเตอร์ล้อให้ใหญ่ขึ้นเล็กน้อยซึ่งย้ายกระดาษได้ดีกว่าล้อเก่า
ขั้นตอนที่ 6: อุปกรณ์อิเล็กทรอนิกส์
สุดท้าย คุณต้องเชื่อมต่อมอเตอร์กับ Arduino และอัปโหลดโค้ด
เราจะเริ่มต้นด้วยเซอร์โวมอเตอร์ ต่อสายสีน้ำตาล (สายกราวด์) เข้ากับพิน GND จากนั้นต่อสายสีแดง (สายไฟ) เข้ากับพิน 5V และสายสีส้ม (สายสัญญาณ) เข้ากับ Dig #5 เข็มหมุด. ต่อไป สเต็ปเปอร์มอเตอร์ ต่อ 1N1 กับ Dig #11, 1N2 กับ Dig #10, 1N3 ถึง Dig #9, 1N4 ถึง Dig #8, 5V ไปทางด้านบวกของเขียงหั่นขนมและหมุดกราวด์กับด้านลบของ เขียงหั่นขนม และอย่าลืมเชื่อมต่อโมดูลแหล่งจ่ายไฟเข้ากับเขียงหั่นขนมเพื่อให้แน่ใจว่าด้านบวกและด้านลบจัดตำแหน่งอย่างถูกต้องกับด้านที่ตรงกันบนเขียงหั่นขนม หากคุณลืมทำเช่นนั้น คุณจะย้อนกลับพลังของโครงการของคุณ และคุณไม่ต้องการที่จะทำเช่นนั้น
สำหรับรหัสนั้น ฉันเขียนสี่วิธี วิธีหนึ่งสำหรับเขียนจุด หนึ่งวิธีเขียนเส้นประ และอีกสองวิธีเพื่อเว้นช่องว่างระหว่างตัวอักษรแต่ละตัวกับแต่ละคำ ด้วยวิธีนี้ ฉันสามารถเรียกวิธีการเหล่านี้เมื่อต้องการ แทนที่จะต้องเขียนใหม่ทุกตัวอักษร จากนั้นฉันก็เขียน for loop ที่อ่านแต่ละตัวอักษรของข้อความแล้วเขียน ข้างในนั้น ฉันเขียน if statement สำหรับแต่ละตัวอักษร แต่คุณสามารถเขียนมันในคำสั่ง switch ได้หากต้องการ แน่นอนคุณสามารถเพิ่มรหัสเพื่อให้โปรแกรมอ่านตัวเลขได้ เมื่อการเดินสายทั้งหมดพร้อม เพียงคัดลอกและวางโค้ดลงใน IDE ของคุณ อย่าลืมติดตั้งไลบรารีสเต็ปเซอร์โวและสตริง หลังจากนั้นคุณก็ไปได้ดี
มันทำงานอย่างไร
เมื่อ Arduino เริ่มโปรแกรมจะดูที่ตัวอักษรตัวแรกของข้อความ และเรียกใช้ฟังก์ชันที่เขียนด้วยรหัสมอร์สทั้งนี้ขึ้นอยู่กับว่าเป็นตัวใด ตัวอย่างเช่น เมื่อเรียกใช้ฟังก์ชันจุด เซอร์โวมอเตอร์จะถูกตั้งค่าเป็น 160 ซึ่งจะเลื่อนปากกาลง จากนั้นจะตั้งค่ากลับเป็น 90 ซึ่งจะทำให้สปริงกลับมาเคลื่อนปากกาตามไปด้วย และหากเรียกใช้ฟังก์ชัน dash เซอร์โวจะเลื่อนปากกาลง จากนั้นสเต็ปเปอร์มอเตอร์จะหมุนวงล้อซึ่งดึงกระดาษทำให้ปากกาเขียนเส้นประ และถ้าฟังก์ชันช่องว่างอย่างใดอย่างหนึ่งเรียกว่าสเต็ปเปอร์มอเตอร์หมุน แต่ด้วยปากกาขึ้นจึงดึงกระดาษทำให้มีช่องว่างระหว่างตัวอักษรหรือคำ เมื่อเสร็จแล้วจะไปที่ตัวอักษรถัดไปและทำซ้ำขั้นตอนเดียวกัน ฉันหวังว่าคุณจะชอบมัน;)
รหัส
#รวม
#include #include #include const int stepsPerRevolution = 150; // นี่คือตัวแปรสำหรับสเต็ปปิ้งมอเตอร์ ประโยคสตริง = "*สวัสดี"; //เปลี่ยนตัวแปรนี้ให้เขียนคำต่างกันแต่เขียนด้วยตัวอักษรขนาดเล็กและขึ้นต้นคำด้วย "*" Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); เซอร์โว myServo; // นี่คือวิธีการที่ทำให้หุ่นยนต์เขียน dot void dot() { Serial.println("dot start"); myServo.write (160); ล่าช้า (1000); myServo.write(90); ล่าช้า (1000); myStepper.step(stepsPerRevolution); ล่าช้า (1000); Serial.println("ทำจุดเสร็จแล้ว"); } // นี่คือวิธีการที่ทำให้หุ่นยนต์เขียน dash void dash() { Serial.println("dash start"); myServo.write (160); ล่าช้า (1000); myStepper.step(stepsPerRevolution); ล่าช้า (1000); myServo.write(90); ล่าช้า (1000); myStepper.step(stepsPerRevolution); ล่าช้า (1000); Serial.println("แดชเสร็จแล้ว"); } // นี่คือวิธีการที่ทำให้หุ่นยนต์เว้นช่องว่างระหว่างแต่ละตัวอักษร void space() { Serial.println("space start"); myServo.write(90); ล่าช้า (1000); myStepper.step(200); ล่าช้า (1000); Serial.println("เว้นวรรคเสร็จแล้ว"); } // นี่คือวิธีการที่ทำให้หุ่นยนต์เว้นช่องว่างระหว่างแต่ละคำ void bigSpace() { myServo.write(90); myStepper.step(250); ล่าช้า (1000); } การตั้งค่าเป็นโมฆะ () { // ใส่รหัสการตั้งค่าของคุณที่นี่ เพื่อเรียกใช้ครั้งเดียว: Serial.begin(9600); myStepper.setSpeed(100); myServo.attach(5); int first = ประโยค.indexOf('*'); // นี่สำหรับลูปผ่านตัวอักษรแต่ละตัวของสตริงแล้วเรียกวิธีการที่ถูกต้องในการเขียนลงไป (int i = 0; i < sentence.length(); i++) { if (sentence.charAt(first + i) == 'a') { Serial.print (".- "); จุด (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'b') { Serial.print("-… "); เส้นประ (); จุด (); จุด (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'c') { Serial.print("-.-. "); เส้นประ (); จุด (); เส้นประ (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'd') { Serial.print("-.. "); เส้นประ (); จุด (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'e') { Serial.print(". "); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'f') { Serial.print("..-. "); จุด (); จุด (); เส้นประ (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'g') { Serial.print("--. "); เส้นประ (); เส้นประ (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'h') { Serial.print("…. "); จุด (); จุด (); จุด (); จุด (); ช่องว่าง(); } อื่น if (sentence.charAt(first + i) == 'i') { Serial.print(".. "); จุด (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'j') { Serial.print(".--- "); จุด (); เส้นประ (); เส้นประ (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'k') { Serial.print("-.- "); เส้นประ (); จุด (); เส้นประ (); ช่องว่าง(); } อื่น if (sentence.charAt(first + i) == 'l') { Serial.print(".-.. "); จุด (); เส้นประ (); จุด (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'm') { Serial.print("-- "); เส้นประ (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'n') { Serial.print("-. "); เส้นประ (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'o') { Serial.print("--- "); เส้นประ (); เส้นประ (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'p') { Serial.print(".--. "); จุด (); เส้นประ (); เส้นประ (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'q') { Serial.print("--.- "); เส้นประ (); เส้นประ (); จุด (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'r') { Serial.print(".-. "); จุด (); เส้นประ (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 's') { Serial.print("… "); จุด (); จุด (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 't') { Serial.print("- "); เส้นประ (); ช่องว่าง(); } อื่น if (sentence.charAt(first + i) == 'u') { Serial.print("..- "); จุด (); จุด (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'v') { Serial.print("…- "); จุด (); จุด (); จุด (); เส้นประ (); ช่องว่าง(); } อื่น if (sentence.charAt(first + i) == 'w') { Serial.print(".-- "); จุด (); เส้นประ (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'x') { Serial.print("-..- "); เส้นประ (); จุด (); จุด (); เส้นประ (); ช่องว่าง(); } อื่น if (sentence.charAt(first + i) == 'y') { Serial.print("-.-- "); เส้นประ (); จุด (); เส้นประ (); เส้นประ (); ช่องว่าง(); } else if (sentence.charAt(first + i) == 'z') { Serial.print("--.. "); เส้นประ (); เส้นประ (); จุด (); จุด (); ช่องว่าง(); } else if (sentence.charAt(first + i) == ' ') { Serial.print("/ "); บิ๊กสเปซ(); } } } void loop() { //อย่าเขียนอะไรที่นี่ }
ขั้นตอนที่ 7: การแก้ไขปัญหา
ล้อไม่หมุน
ล้อกับกระดาษอาจมีการเสียดสีมากเกินไป ลองยกล้อขึ้นเล็กน้อยหรือเปลี่ยนล้อ
วงล้อดึงกระดาษแล้วหมุนต่อไปโดยไม่ต้องดึงกระดาษ
ตรวจสอบให้แน่ใจว่าคุณติดล้อที่กึ่งกลางของสเต็ปเปอร์มอเตอร์
จุดและขีดคั่นเชื่อมต่อกัน
ตรวจสอบว่าเขียนฟังก์ชัน dot, dash และ space ถูกต้องหรือไม่ ควรมีลักษณะดังนี้:
// นี่คือวิธีการที่ทำให้หุ่นยนต์เขียน dotvoid dot() { Serial.println("dot start"); myServo.write (160); ล่าช้า (1000); myServo.write(90); ล่าช้า (1000); myStepper.step(stepsPerRevolution); ล่าช้า (1000); Serial.println("ทำจุดเสร็จแล้ว"); }
// นี่คือวิธีการที่ทำให้หุ่นยนต์เขียนเส้นประ
void dash() { Serial.println("dash start"); myServo.write (160); ล่าช้า (1000); myStepper.step(stepsPerRevolution); ล่าช้า (1000); myServo.write(90); ล่าช้า (1000); myStepper.step(stepsPerRevolution); ล่าช้า (1000); Serial.println("แดชเสร็จแล้ว"); }
// เป็นวิธีการที่ทำให้หุ่นยนต์เว้นวรรคระหว่างตัวอักษรแต่ละตัว
ช่องว่าง () { Serial.println ("ช่องว่างเริ่มต้น"); myServo.write(90); ล่าช้า (1000); myStepper.step(200); ล่าช้า (1000); Serial.println("เว้นวรรคเสร็จแล้ว"); }
แนะนำ:
การเข้ารหัสด้วย IOS Code Blocks: 6 ขั้นตอน
การเข้ารหัสด้วย IOS Code Blocks: การเข้ารหัสด้วย iOS เป็นวิธีที่ไม่เหมือนใครในการให้อุปกรณ์ iOS ของคุณทำงานอัตโนมัติ ดึงข่าว เริ่มต้นสงครามไซเบอร์ และแม้แต่การตั้งเวลาข้อความ สำหรับคำแนะนำนี้ เราจะเน้นที่สงครามไซเบอร์ โดยเฉพาะการสแปมเพื่อนและค
เริ่มต้นใช้งาน ESP32 - การติดตั้งบอร์ด ESP32 ใน Arduino IDE - ESP32 Blink Code: 3 ขั้นตอน
เริ่มต้นใช้งาน ESP32 | การติดตั้งบอร์ด ESP32 ใน Arduino IDE | รหัสการกะพริบของ ESP32: ในคำแนะนำนี้ เราจะดูวิธีการเริ่มทำงานกับ esp32 และวิธีการติดตั้งบอร์ด esp32 ลงใน Arduino IDE และเราจะตั้งโปรแกรม esp 32 เพื่อเรียกใช้โค้ดกะพริบโดยใช้ arduino ide
รูปปั้น Morse Moai: 4 ขั้นตอน (พร้อมรูปภาพ)
รูปปั้นมอร์ส โมอาย: ตอนเด็กๆ ฉันสนใจรหัสมอร์สมาก มีเหตุผลสองสามประการสำหรับสิ่งนี้ - พ่อของฉันอยู่ในกลุ่ม Signal Corps ในช่วงสงครามโลกครั้งที่ 2 และเรื่องราวของเขาเกี่ยวกับการใช้มอร์สในสงครามนั้นน่าทึ่งมาก ฉันมีหูที่ค่อนข้างดีสำหรับจังหวะ ฉันจึงเรียนรู้
Arduino Yún Morse Generator: 4 ขั้นตอน (พร้อมรูปภาพ)
Arduino Yún Morse Generator: เคยอยู่ในบาร์ที่คุณคุยกับเพื่อนไม่ได้เพราะเสียงเพลงดังเกินไปหรือเปล่า ทีนี้คุณสามารถขอเบียร์จากเขาด้วยรหัสมอร์สได้แล้ว! มาเริ่มกันเลย
หลักปฏิบัติของ Altoids Tin Morse Code: 6 ขั้นตอน
กุญแจฝึกรหัส Altoids Tin Morse: ฉันมีกระป๋อง Altoids สองสามอันวางอยู่รอบ ๆ และตัดสินใจทำกุญแจฝึกรหัสมอร์ส นี่เป็นโครงการเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์ที่เรียบง่ายที่สุดที่คุณจะได้รับ แต่ผลลัพธ์ที่ได้คือความสนุก วัสดุ:Altoids Tin - Piezo Buzzer ที่ว่างเปล่าและเช็ดสะอาด