विषयसूची:

Arduino मोर्स कोड राइटर: 7 स्टेप्स (चित्रों के साथ)
Arduino मोर्स कोड राइटर: 7 स्टेप्स (चित्रों के साथ)

वीडियो: Arduino मोर्स कोड राइटर: 7 स्टेप्स (चित्रों के साथ)

वीडियो: Arduino मोर्स कोड राइटर: 7 स्टेप्स (चित्रों के साथ)
वीडियो: Morse code but INSANELY easy 2024, जुलाई
Anonim
Image
Image
Arduino मोर्स कोड राइटर
Arduino मोर्स कोड राइटर

मैंने एक ऐसा रोबोट बनाया है जो किसी दिए गए टेक्स्ट को मोर्स कोड में बदल सकता है और फिर उसे लिख सकता है !! यह कार्डबोर्ड और लेगो से बना है और इलेक्ट्रॉनिक्स के लिए मैंने Arduino और केवल दो मोटर्स का उपयोग किया है।

आपूर्ति

Arduino Uno बोर्ड स्टेपर मोटर माइक्रो सर्वो SG90ULN2003 स्टेपर मोटर ड्राइवर मॉड्यूल बिजली की आपूर्ति मॉड्यूल ब्रेडबोर्ड 4 × जम्पर तार 6 × महिला-से-पुरुष ड्यूपॉन्ट तार 9V1A एडेप्टर यूएसबी केबल कार्डबोर्ड 2 × लकड़ी के डॉवेल 2 × स्प्रिंग्स स्ट्रॉ व्हाइट पेपर लेगोसुपर गोंद हॉट ग्लू गन इलास्टिक बैंड (एक बनाने के लिए) कलम धारक) कैंची कटर

चरण 1: आधार का निर्माण

आधार का निर्माण
आधार का निर्माण
आधार का निर्माण
आधार का निर्माण
आधार का निर्माण
आधार का निर्माण

आधार बनाने से शुरू करें। मेरा 4 स्टड चौड़ा और 20 स्टड लंबा है, उन लंबाई के साथ एक परत बनाने के बाद, मैंने इसके चारों ओर एक स्टड चौड़ा बोर्डर बनाया, जिससे स्टेपर मोटर के लिए जगह छोड़ने के लिए एक तरफ एक अंतर छोड़ दिया गया, फिर मैंने जोड़ा मध्य भाग में टाइल के टुकड़े जहां कागज की पट्टी होगी। लेगो के उपयोग ने इसे बहुत मजबूत और संशोधित करने में आसान बना दिया। पेपर रोल बनाने के लिए, मैंने 1.2cm चौड़े A4 पेपर के स्ट्रिप्स को काटा (मैंने इस चौड़ाई को चुना क्योंकि यह लेगो व्हील के समान चौड़ाई है, आप अपने व्हील के आधार पर अपना बड़ा या छोटा बना सकते हैं) और मैंने उनके सिरों को एक साथ चिपका दिया एक बहुत लंबी पट्टी बनाने के लिए, फिर मैंने उसे पहिये के चारों ओर लपेट दिया।

चरण 2: सर्वो टुकड़ा

सर्वो टुकड़ा
सर्वो टुकड़ा
सर्वो टुकड़ा
सर्वो टुकड़ा
सर्वो टुकड़ा
सर्वो टुकड़ा

इस चरण के लिए आपको चाहिए:

  • दो लकड़ी के डॉवेल 4cm लंबे
  • दो स्प्रिंग्स 2cm लंबा
  • एक भूसा दो टुकड़ों में कटा हुआ 2cm लंबा प्रत्येक
  • एक 12cm गुणा 4cm गत्ते का टुकड़ा
  • कार्डबोर्ड के दो 4cm गुणा 1.5cm टुकड़े
  • एक 4cm गुणा 2cm गत्ते का टुकड़ा

सबसे पहले, डॉवल्स को ४ में से १.५ टुकड़ों में से एक में गोंद करें, फिर डॉवेल में स्प्रिंग्स और स्ट्रॉ डालें, फिर दूसरे कार्डबोर्ड के टुकड़े को दूसरी तरफ चिपका दें ताकि सब कुछ ठीक हो जाए।

दूसरा, स्ट्रॉ के ऊपर 4cm को 2cm के टुकड़े से गोंद दें।

तीसरा, पूरे टुकड़े को पलटें और उसके पीछे एक छोटा सा डॉवेल चिपका दें, बीच में नहीं बल्कि थोड़ा बाईं ओर। (मैं पहली तस्वीर में छोटा डॉवेल जोड़ना भूल गया)

अंत में, कार्डबोर्ड के बड़े टुकड़े में एक छेद को सर्वो मोटर के सामने के आकार में काटें और मोटर को गोंद करें, फिर उस टुकड़े को गोंद करें जिसे हमने अभी-अभी डॉवेल के साथ बड़े टुकड़े में बनाया है ताकि जब सर्वो चलता है, तो यह धक्का दे छोटा डॉवेल नीचे जो बदले में स्प्रिंग्स को भी नीचे धकेलता है।

मैंने १२ सेमी के निचले हिस्से से ४ सेमी के टुकड़े से लगभग ३ सेमी काट दिया और दो और ४ सेमी को १.५ सेमी के टुकड़ों से चिपका दिया, फिर ५.५ सेमी के साथ ४ सेमी के कार्डबोर्ड के टुकड़े के साथ कवर किया। और मार्कर को पकड़ने के लिए मैंने एक छोटा बनाया इलास्टिक बैंड का लूप और इसे कार्डबोर्ड के एक छोटे से टुकड़े से चिपका दिया, फिर मैंने उसे 4 सेमी से 2 सेमी के टुकड़े पर चिपका दिया जो कि सर्वो शुरू होने पर नीचे चला जाएगा। जब स्प्रिंग्स वापस ऊपर आते हैं तो इन परिवर्धन ने मार्कर को एक तरफ से दूसरी तरफ जाने से रोक दिया।

चरण 3: सर्वो मोटर और पेपर रोल को आधार में जोड़ना

सर्वो मोटर और पेपर रोल को बेस में जोड़ना
सर्वो मोटर और पेपर रोल को बेस में जोड़ना
बेस में सर्वो मोटर और पेपर रोल जोड़ना
बेस में सर्वो मोटर और पेपर रोल जोड़ना

मैंने सर्वो के टुकड़े को सहारा देने के लिए आधार के एक तरफ दो और ईंटें जोड़ीं और मैंने इसे जगह पर चिपका दिया। फिर मैंने पहिया को आधार के दूर के छोर पर जोड़ा।

चरण 4: स्टेपर मोटर फ्रेम का निर्माण

स्टेपर मोटर फ्रेम का निर्माण
स्टेपर मोटर फ्रेम का निर्माण
स्टेपर मोटर फ्रेम का निर्माण
स्टेपर मोटर फ्रेम का निर्माण
स्टेपर मोटर फ्रेम का निर्माण
स्टेपर मोटर फ्रेम का निर्माण

यह कदम थोड़ा चुनौती भरा था, क्योंकि मोटर को लेगो के साथ पूरी तरह से फिट करने के लिए नहीं बनाया गया था। हालाँकि, मैंने इसे सुरक्षित करने के लिए मोटर में दो छेदों का उपयोग करके इसे करने का प्रबंधन किया। इसके बाद, मैंने एक लेगो व्हील को मोटर की नोक पर चिपका दिया और फिर मैंने इसे उस आधार के ठीक बगल में रख दिया, जिसे मैंने चरण 1 में खुला छोड़ दिया था।

चरण 5: फिनिशिंग टच

अंतिम समापन कार्य
अंतिम समापन कार्य
अंतिम समापन कार्य
अंतिम समापन कार्य
अंतिम समापन कार्य
अंतिम समापन कार्य
अंतिम समापन कार्य
अंतिम समापन कार्य

मैंने कागज को ठीक करने के लिए पहिया को ढकने के लिए दो चाप के टुकड़े जोड़े। और मैंने दो छोटे चाप के टुकड़े जोड़े, एक स्टेपर मोटर के तारों को पकड़ने के लिए और दूसरा कागज को पकड़ने के लिए। अंत में, मैंने स्टेपर मोटर व्हील को थोड़ा बड़ा करने के लिए बदल दिया, जिसने पेपर को पुराने व्हील से बेहतर तरीके से स्थानांतरित कर दिया।

चरण 6: इलेक्ट्रॉनिक्स

इलेक्ट्रानिक्स
इलेक्ट्रानिक्स
इलेक्ट्रानिक्स
इलेक्ट्रानिक्स

अंत में, आपको मोटर्स को Arduino से कनेक्ट करना होगा और कोड अपलोड करना होगा।

हम सर्वो मोटर से शुरू करेंगे, भूरे रंग के तार (जमीन के तार) को GND पिन से, फिर लाल तार (पावर वायर) को 5V पिन से, और नारंगी तार (सिग्नल वायर) को Dig #5 से जोड़ेंगे। पिन इसके बाद, स्टेपर मोटर, 1N1 को डिग #11, 1N2 से डिग #10, 1N3 को डिग #9, 1N4 से डिग #8, 5V को ब्रेडबोर्ड के सकारात्मक पक्ष से और ग्राउंड पिन को नकारात्मक पक्ष से कनेक्ट करें। ब्रेड बोर्ड। और बिजली आपूर्ति मॉड्यूल को ब्रेडबोर्ड से कनेक्ट करना न भूलें, यह सुनिश्चित करते हुए कि इसके सकारात्मक और नकारात्मक पक्ष ब्रेडबोर्ड पर संबंधित पक्षों पर सही ढंग से संरेखित हों। यदि आप ऐसा करना भूल जाते हैं, तो आप अपनी परियोजना की शक्ति को उलट देंगे, और आप ऐसा नहीं करना चाहते हैं।

कोड के लिए, मैंने चार तरीके लिखे, एक डॉट लिखने के लिए, एक डैश लिखने के लिए, और दो प्रत्येक अक्षर और प्रत्येक शब्द के बीच जगह छोड़ने के लिए। इस तरह, मैं इन विधियों को हर पत्र के लिए फिर से लिखने के बजाय बस जरूरत पड़ने पर कॉल कर सकता हूं। फिर मैंने एक लूप के लिए लिखा जो पाठ के प्रत्येक अक्षर के माध्यम से जाता है और इसे लिखता है, इसके अंदर, मैंने प्रत्येक अक्षर के लिए एक if स्टेटमेंट लिखा है लेकिन आप चाहें तो इसे एक स्विच स्टेटमेंट में लिख सकते हैं। बेशक आप प्रोग्राम को नंबर पढ़ने के लिए सक्षम करने के लिए कोड में जोड़ सकते हैं। जब सभी वायरिंग तैयार हो जाएं, तो बस कोड को अपने आईडीई में कॉपी और पेस्ट करें। स्टेपर, सर्वो और स्ट्रिंग लाइब्रेरी स्थापित करना न भूलें। उसके बाद, आप जाने के लिए अच्छे हैं।

यह काम किस प्रकार करता है

जब Arduino प्रोग्राम शुरू करता है तो टेक्स्ट के पहले अक्षर को देखता है, और यह किस पर निर्भर करता है, यह उन कार्यों को कॉल करता है जो इसे मोर्स कोड में लिखते हैं। उदाहरण के लिए, जब डॉट फ़ंक्शन को कॉल किया जाता है, तो सर्वो मोटर 160 पर सेट होती है जो पेन को नीचे ले जाती है, फिर इसे वापस 90 पर सेट कर दिया जाता है, जिससे स्प्रिंग्स पेन को अपने साथ ले जाते हुए वापस ऊपर आ जाते हैं। और यदि डैश फ़ंक्शन को कहा जाता है, सर्वो पेन को नीचे ले जाता है, तो स्टेपर मोटर उस पहिये को घुमाता है जो कागज को खींचकर पेन को डैश लिखता है। और अगर स्पेस फंक्शन्स में से एक को स्टेपर मोटर रोटेट कहा जाता है, लेकिन पेन के साथ तो यह पेपर को अक्षरों या शब्दों के बीच जगह बनाकर खींचता है। जब यह हो जाता है, तो यह अगले अक्षर पर जाता है और उसी प्रक्रिया को दोहराता है। मुझे आशा है की आप इसे पसंद करेंगे;)

कोड

#शामिल

#include #include #include const int stepsPerRevolution = 150; // यह स्टेपर मोटर स्ट्रिंग वाक्य = "* हैलो" के लिए चर है; // अलग-अलग शब्दों को लिखने के लिए इस चर को बदलें लेकिन केवल छोटे अक्षरों में लिखें और अपना शब्द "*" स्टेपर मायस्टेपर (स्टेप्सपेर रेवोल्यूशन, 8, 10, 9, 11) से शुरू करें; सर्वो माय सर्वो; // यह वह तरीका है जो रोबोट को एक डॉट शून्य डॉट () {Serial.println ("डॉट स्टार्ट") लिखता है; myServo.write(160); देरी (1000); myServo.लिखें (९०); देरी (1000); myStepper.step(stepsPerRevolution); देरी (1000); Serial.println ("डॉट किया गया"); } // यह वह तरीका है जो रोबोट को एक डैश शून्य डैश () {Serial.println ("डैश स्टार्ट") लिखता है; myServo.write(160); देरी (1000); myStepper.step(stepsPerRevolution); देरी (1000); myServo.लिखें (९०); देरी (1000); myStepper.step(stepsPerRevolution); देरी (1000); Serial.println ("डैश किया गया"); } // यह वह तरीका है जो रोबोट को प्रत्येक अक्षर के बीच रिक्त स्थान छोड़ देता है () { Serial.println ("स्पेस स्टार्ट"); 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 i = 0; i < वाक्य। लंबाई (); i ++) {if (sentence.charAt (प्रथम + i) == 'ए') {सीरियल.प्रिंट (".-"); डॉट (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'b') {Serial.print("-…"); डैश (); डॉट (); डॉट (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'c') {Serial.print("-.-."); डैश (); डॉट (); डैश (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'd') {Serial.print("-.."); डैश (); डॉट (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'e') { Serial.print(". "); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'f') {Serial.print("..-. "); डॉट (); डॉट (); डैश (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'g') {Serial.print("--."); डैश (); डैश (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'h') {Serial.print("…."); डॉट (); डॉट (); डॉट (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'i') {Serial.print(".. "); डॉट (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'j') { Serial.print(.--- "); डॉट (); डैश (); डैश (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'k') { Serial.print("-.-"); डैश (); डॉट (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'l') { Serial.print(.-.. "); डॉट (); डैश (); डॉट (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'm') {Serial.print("--"); डैश (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'n') {Serial.print("-."); डैश (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'o') {Serial.print("---"); डैश (); डैश (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'p') { Serial.print(.--. "); डॉट (); डैश (); डैश (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 'q') {Serial.print("--.-"); डैश (); डैश (); डॉट (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'r') { Serial.print(.-. "); डॉट (); डैश (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 's') {Serial.print("…"); डॉट (); डॉट (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == 't') {Serial.print("-"); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'u') { Serial.print("..- "); डॉट (); डॉट (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'v') {Serial.print("…-"); डॉट (); डॉट (); डॉट (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'w') { Serial.print(.-- "); डॉट (); डैश (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'x') {Serial.print("-..-"); डैश (); डॉट (); डॉट (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'y') {Serial.print("-.--"); डैश (); डॉट (); डैश (); डैश (); स्थान(); } और अगर (sentence.charAt(first + i) == 'z') {Serial.print("--.."); डैश (); डैश (); डॉट (); डॉट (); स्थान(); } और अगर (sentence.charAt(first + i) == ' ') {Serial.print("/"); बिगस्पेस (); } } } शून्य लूप () {// यहां कुछ भी न लिखें}

चरण 7: समस्या निवारण

पहिया नहीं चल रहा है

पहिए और कागज के बीच बहुत अधिक घर्षण हो सकता है, पहिए को थोड़ा ऊपर उठाने या इसे बदलने का प्रयास करें।

पहिया कागज को खींचता है लेकिन फिर कागज को खींचे बिना घूमता रहता है

सुनिश्चित करें कि आपने पहिया को स्टेपर मोटर के केंद्र में चिपका दिया है

डॉट्स और डैश जुड़े हुए हैं

जांचें कि क्या डॉट, डैश और स्पेस फ़ंक्शन सही ढंग से लिखे गए हैं, वे इस तरह होने चाहिए:

// यह वह तरीका है जो रोबोट को dotvoid dot() {Serial.println("dot start"); myServo.write(160); देरी (1000); myServo.write(90); देरी (1000); myStepper.step(stepsPerRevolution); देरी (1000); Serial.println ("डॉट किया गया"); }

// यह वह तरीका है जो रोबोट को डैश लिखता है

शून्य डैश () {Serial.println ("डैश स्टार्ट"); myServo.write(160); देरी (1000); myStepper.step(stepsPerRevolution); देरी (1000); myServo.लिखें (९०); देरी (1000); myStepper.step(stepsPerRevolution); देरी (1000); Serial.println ("डैश किया गया"); }

// यह वह तरीका है जो रोबोट को प्रत्येक अक्षर के बीच एक स्थान छोड़ देता है

शून्य स्थान () {Serial.println ("स्पेस स्टार्ट"); myServo.लिखें (९०); देरी (1000); myStepper.step(200); देरी (1000); Serial.println ("अंतरिक्ष किया गया"); }

सिफारिश की: