সুচিপত্র:

একটি ওয়েব কানেক্টেড রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে): 6 টি ধাপ (ছবি সহ)
একটি ওয়েব কানেক্টেড রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে): 6 টি ধাপ (ছবি সহ)

ভিডিও: একটি ওয়েব কানেক্টেড রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে): 6 টি ধাপ (ছবি সহ)

ভিডিও: একটি ওয়েব কানেক্টেড রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে): 6 টি ধাপ (ছবি সহ)
ভিডিও: ৫০ লাখ টাকার ড্রোনের কি হাল| Dji Drone crash | #travel #shorts #Eat&Travelwithmamun 2024, জুলাই
Anonim
একটি ওয়েব সংযুক্ত রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে)
একটি ওয়েব সংযুক্ত রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে)
একটি ওয়েব সংযুক্ত রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে)
একটি ওয়েব সংযুক্ত রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে)
একটি ওয়েব সংযুক্ত রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে)
একটি ওয়েব সংযুক্ত রোবট তৈরি করুন (প্রায় $ 500 এর জন্য) (একটি Arduino এবং Netbook ব্যবহার করে)

এই নির্দেশাবলী আপনাকে দেখাবে কিভাবে আপনার নিজস্ব ওয়েব সংযুক্ত রোবট তৈরি করবেন অবশ্যই সাথে খেলতে। স্কাইপ এবং একটি ওয়েব ব্রাউজার (নিয়ন্ত্রণকারী কম্পিউটারে ইনস্টল করার মতো কিছুই) ছাড়া আর কিছুই ব্যবহার না করে আপনার রোবটটি রুম থেকে বা সারা দেশ থেকে চালান। তারপর? সফটওয়্যারের মধ্যে খনন করুন এবং আপনার পছন্দ মতো এটিকে মানানসই করুন, একটি জিপিএস যোগ করুন যাতে আপনি মানচিত্রে কোথায় গাড়ি চালাচ্ছেন তা দেখতে পারেন, আপনার ঘরের তাপমাত্রা গ্রেডিয়েন্টগুলি মানচিত্রের তাপমাত্রা সেন্সর যুক্ত করতে পারেন, অথবা সোনার সেন্সরগুলি যা আপনি ওয়েবের উপর নিয়ন্ত্রণ যোগ করতে পারেন চালকরা চালাতে পারে এবং পারে না। বৈশিষ্ট্য:

  • সস্তা - (500 $ 500 যদি আপনি সব যন্ত্রাংশ নতুন এবং যথেষ্ট সস্তা ক্রয় করেন যদি আপনি আপনার পার্টস বিনে চারপাশে খনন করেন)
  • একবার রোবটকে নিয়ন্ত্রণ এবং চালানোর জন্য শুধুমাত্র একটি ওয়েব ব্রাউজার প্রয়োজন - (এবং স্কাইপ যদি আপনি দেখতে চান যে আপনি কোথায় গাড়ি চালাচ্ছেন)
  • ওপেন সোর্স এবং সহজেই মানানসই - (একটি Arduino মাইক্রো -কন্ট্রোলার ব্যবহার করে, ওয়েব সার্ভারের জন্য প্রসেসিং এবং সমস্ত সফ্টওয়্যার লিনাক্সে চালানো যেতে পারে (সমস্ত কোডে ঝাঁপিয়ে পড়া এবং জিনিসগুলি পরিবর্তন করা সহজ করার জন্যও ব্যাপকভাবে মন্তব্য করা হয়েছে))
  • মডুলার ডিজাইন (সম্পূর্ণরূপে একীভূত সিস্টেম নয়, যদি আপনি ভিন্ন ভিডিও কনফারেন্সিং পরিষেবা ব্যবহার করতে চান তাহলে কোন উদ্বেগ নেই, অথবা যদি আপনার কাছে একটি Arduino এর পরিবর্তে একটি বেসিক স্ট্যাম্প থাকে ঠিক কোডের একটি ছোট টুকরা এবং তাতে স্লট করুন)

আমার ওয়েব কানেক্টেড রোবটকে রান্নাঘর থেকে তাড়িয়ে দেওয়ার একটি দ্রুত ভিডিও এখানে দেওয়া হল।

ধাপ 1: যন্ত্রাংশ এবং সরঞ্জাম

যন্ত্রাংশ এবং সরঞ্জাম
যন্ত্রাংশ এবং সরঞ্জাম

শুধুমাত্র কয়েকটি অংশ প্রয়োজন: রোবট: Arduino নিয়ন্ত্রিত সার্ভো রোবট - (SERB) ($ 175 @ oomlout.com) অথবা (আপনার নিজের তৈরি করুন)

একটি ওপেন সোর্স রোবট যা মস্তিষ্ক হিসাবে একটি Arduino মাইক্রো-কন্ট্রোলার ব্যবহার করে।

(আরডুইনো সহ যেকোনো ডুয়াল সার্ভো রোবট প্ল্যাটফর্ম ব্যবহার করা যেতে পারে (অপশন 1) (অন্য কোন অপশন খুঁজে পেলে আমাকে মেসেজ করুন) কম্পিউটার: Asus eee PC 4G ($ 280) (estBest Buy)

একটি ছোট সস্তা ল্যাপটপ যা এই উদ্দেশ্যে উপযুক্ত।

(যে কোন ল্যাপটপ (অথবা ডেস্কটপ যদি আপনি একটি জ্যা দিয়ে চালাতে চান) প্রসেসিং স্কেচ চালাতে সক্ষম) ল্যাপটপ ডেস্ক: লেজার কাট এক্রাইলিক ($ 25 (@ oomlout)) অথবা (আপনার নিজের ধাপ 3 তৈরি করুন)

কয়েকটি অতিরিক্ত এক্রাইলিক টুকরা যা একটি (SERB) এর উপর বোল্ট করে যাতে এটি ল্যাপটপে বসার জন্য একটি ডেস্ক দেয়।

বাদাম এবং বল: (হোম ডিপোতে পাওয়া যায়)

  • 3 মিমি x 10 মিমি বোল্ট (x4)
  • 3 মিমি x 15 মিমি বোল্ট (x4)
  • 3 মিমি বাদাম (x8)

ধাপ 2: টুকরা এবং সমাবেশ কাটা

কাটা টুকরা এবং সমাবেশ
কাটা টুকরা এবং সমাবেশ
কাটা টুকরা এবং সমাবেশ
কাটা টুকরা এবং সমাবেশ
কাটা টুকরা এবং সমাবেশ
কাটা টুকরা এবং সমাবেশ
কাটা টুকরা এবং সমাবেশ
কাটা টুকরা এবং সমাবেশ

আপনার ল্যাপটপ ডেস্কের জন্য টুকরা পাওয়ার জন্য তিনটি বিকল্প রয়েছে।

লেজার কাট ডেস্ক টুকরা এবং প্রয়োজনীয় হার্ডওয়্যার oomlout থেকে $ 25 (এখানে) পাওয়া যায়

বিকল্প 2: (আপনার নিজের লেজার কাটার বা Ponoko.com এ কাটা)

  • নিচের ফাইলটি ডাউনলোড করুন (03-WEBB-Acrylic Parts.cdr অথবা 03-WEBB-Acrylic Parts (Ponoko P2).eps)
  • এগুলি 3 মিমি (1/8 ") এক্রাইলিক থেকে কেটে নিন

বিকল্প 3: (স্ক্রল দেখেছি)

  • নিচে থেকে স্ক্রল স প্যাটার্নটি ডাউনলোড করুন (03-WEBB-ScrollSaw Pattern (A4).pdf (A4 সাইজের কাগজের জন্য) অথবা 03-WEBB-ScrollSaw প্যাটার্ন (চিঠি).pdf (চিঠির আকারের কাগজের জন্য))
  • ডাবল চেক করুন যে এটি ছাপানোর সময় স্কেল করা হয়নি (মুদ্রিত শাসকদের পরিমাপ করে)
  • 3 মিমি (1/8 ") এক্রাইলিকের একটি অংশে আঠালো করুন এবং টুকরোগুলি কেটে নিন।

অ্যাসেম্বলিং: নিচে অ্যাসেম্বলি গাইড (04-WEBB-Assembly Guide.pdf) ডাউনলোড করুন এবং ল্যাপটপ ডেস্ক একসাথে রাখুন।

ধাপ 3: সফ্টওয়্যার - (Arduino)

সফটওয়্যার - (Arduino)
সফটওয়্যার - (Arduino)

Arduino তে যারা নতুন তাদের জন্য Arduino.cc এ শুরু করার দারুণ নির্দেশিকা দেখুন। এটি একটি খুব সহজ প্রোগ্রাম, আরডুইনো যা করে তার ডেটার জন্য সিরিয়াল পোর্ট মনিটর করে।

  • বাইট 1-3 (চেক বাইট "AAA")
  • বাইট 4 কমান্ড (arduino কে কি করতে হবে তা বলে) (সমর্থিত কমান্ড 'F' - ফরওয়ার্ড, 'B' - ব্যাকওয়ার্ড, 'L' - বাম, 'R' - ডান, 'S' - স্পিড, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Stop)
  • বাইট 5 প্যারামিটার - মুভ কমান্ডের জন্য এটি একটি সময় ব্যবধান (প্যারামিটার * 100 এমএস) হিসাবে ব্যাখ্যা করা হয়, এবং স্পিড কমান্ডের জন্য 0-100 থেকে শতাংশ

কোডটি পুঙ্খানুপুঙ্খভাবে মন্তব্য করা হয়েছে এবং এই কাঠামোটি দেওয়া হলে অতিরিক্ত কমান্ড যোগ করা সহজ হওয়া উচিত।

  • সংযুক্ত জিপ ফাইলটি ডাউনলোড করুন। (05-WEBB-Arduino Code.zip)
  • আপনার Arduino স্কেচ ডিরেক্টরিতে আনজিপ করুন। (ডিফল্ট: আমার ডকুমেন্টস / Arduino)
  • আপনার arduino উন্নয়ন পরিবেশ খুলুন এবং আপনার Arduino এ আপলোড করুন।

কপি এবং পেস্ট করার জন্য

  • নিচের থেকে কোড কপি করুন।
  • Arduino উন্নয়ন পরিবেশে আটকান।
  • আপনার Arduino এ আপলোড করুন।

পরিশিষ্ট: Arduino প্রোগ্রাম

/ * * Arduino নিয়ন্ত্রিত ওয়েব কানেক্টেড রোবট (WEBB) - সিরিয়াল হোস্ট * বিস্তারিত জানতে ভিজিট করুন: https://www.oomlout.com/serb * * আচরণ: Arduino 254 ফরম্যাটে কমান্ডের জন্য তার সিরিয়াল পোর্ট শোনে, 88, 88, (COMMAND), (TIME) * সমর্থিত কমান্ড - & aposF & apos - 70 - Forward * & aposB & apos - 66 - Backward * & aposL & apos - 76 - Left * & aposR & apos - 82 - Right * & aposS & apos - 83 - Speed * & aposX & apos - 88 - 88 * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Supported Times - 0 - 255 (0 to 25.5 Seconds) value * 100 milliseconds * sp * Wiring: Right servo signal - pin 9 * left servo signal - pin 10 * * licence: এই কাজটি Creative Commons * Attribution-Share Alike 3.0 Unported License এর অধীনে লাইসেন্সপ্রাপ্ত। * এই লাইসেন্সের একটি অনুলিপি দেখতে, * https://creativecommons.org/licenses/by-sa/3.0/ * দেখুন অথবা ক্রিয়েটিভ কমন্সে চিঠি পাঠান, 171 সেকেন্ড * স্ট্রিট, স্যুট 300, সান ফ্রান্সিসকো, ক্যালিফোর্নিয়া 94105, * আমেরিকা. * */// ----------------------------------------------------- ------------------------) #DEFINE SETSPEEDRIGHT 89 // Y/ *তিনটি চেক বাইট (রোবটকে এলোমেলো সিরিয়াল *ডেটাতে সাড়া দিতে ব্যবহৃত) বর্তমানে "AAA" */#checkByte1 65 // "A" #define checkByte2 65 // "A "#ডিফাইন চেকবাইট 3 65 //" এ "// -------------------------------------- ------------------------------------ // আরডুইনো নিয়ন্ত্রিত সার্ভো রোবট শুরু #DEFINE LEFTSERVOPIN 10 // পিন বাম সার্ভো সংযুক্ত করা হয়#RIGHTSERVOPIN 9 সংজ্ঞায়িত করুন // ডান সার্ভোটি পিন সার্ভো বাম সার্ভোতে সংযুক্ত করা হয়; Servo rightServo; int leftSpeed = 50; // বাম রোবটের গতি ধরে রাখে সার্ভো // 0 এবং 100int এর মধ্যে একটি শতাংশ rightSpeed = 100; // রোবটগুলির গতি ধরে রাখে ডান সার্ভো // 0 এবং 100 এর মধ্যে একটি শতাংশ // আরডুইনো নিয়ন্ত্রিত সার্ভো রোবট (SERB) প্রস্তাবের শেষ // ------------------- -------------------------------------------------- ----- // সবকিছু সেট আপ এবং চলমান অকার্যকর সেটআপ () {Serial.begin (9600); // সিরিয়াল পোর্ট serbSetup () শুরু করে; // সব প্রয়োজনীয় // পিনের অবস্থা সেট করে এবং আপনার স্কেচে সার্ভ যোগ করে} // প্রধান প্রোগ্রাম লুপভয়েড লুপ () {serbPollSerialPort (); // ক্রমাগত সিরিয়াল পোর্ট দেখছে // যদি তথ্য থাকে তবে এটি প্রক্রিয়া করে} // ------------------------------ ----------------------------------------- // আরডুইনো সিরিয়াল সার্ভার রুটিন শুরু/ * * Arduino এবং aposs সিরিয়াল পোর্টে বিতরণ করা কমান্ড প্রসেস করে */void serbPollSerialPort () {int dta; // ভেরিয়েবল সিরিয়াল বাইট ধরতে হলে যদি (dta = checkByte1) {// প্রথম চেক বাইট dta = Serial.read () চেক করে; if (dta = checkByte2) {// দ্বিতীয় চেক বাইট dta = Serial.read (); if (dta = checkByte3) {// তৃতীয় চেক বাইট int command = Serial.read (); // চতুর্থ বাইট হল কমান্ড int param1 = Serial.read (); // পঞ্চম বাইট হল param1 ব্যাখ্যা কম্যান্ড (কমান্ড, প্যারাম 1); // এটিকে পার্সড রিকোয়েস্ট পাঠায় & aposs handler}}}}/ * * কমান্ড এবং প্যারামিটার নেয় এবং রোবট এর কাছে প্রেরণ করে); বিলম্ব (param1 * 100); goStop ();} // যদি অন্যথায় ফরোয়ার্ড করেন (কমান্ড == ব্যাকওয়ার্ড) {goBackward (); বিলম্ব (param1 * 100); goStop ();} // যদি পিছনে অন্যথায় যদি (command == LEFT) {goLeft (); বিলম্ব (param1 * 100); goStop ();} // যদি বাকি থাকে তাহলে (command == RIGHT) {goRight (); বিলম্ব (param1 * 100); goStop ();} // যদি ঠিক অন্যথায় হয় (command == SETSPEED) {setSpeed (param1);} // যদি গতি অন্যভাবে সেট করে তাহলে (command == STOP) {goStop ();} // যদি অন্যথায় থামো যদি (কমান্ড == SETSPEEDLEFT) {setSpeedLeft (param1);} // যদি বাম গতি সেট করা হয় অন্যথায় যদি (command == SETSPEEDRIGHT) {setSpeedRight (param1);} // যদি সঠিক গতি সেট করে অন্য {// যদি অচেনা কমান্ড একটু শিম্মি করে বামে যান(); বিলম্ব (150); ডানে যাও(); বিলম্ব (150); goStop (); }} // ---------------------------------------------- -------------------------- // আরডুইনো নিয়ন্ত্রিত সার্ভো রোবট (SERB) রুটিন শুরু করুন অন্তর্ভুক্ত রুটিন*/অকার্যকর serbSetup () {setSpeed (leftSpeed); পিনমোড (LEFTSERVOPIN, OUTPUT); // বাম সার্ভো সিগন্যাল পিন সেট করে // আউটপুট পিনমোডে (RIGHTSERVOPIN, OUTPUT); // ডান সার্ভো সিগন্যাল পিন সেট করে // আউটপুট leftServo.attach (LEFTSERVOPIN); // বাম servo rightServo.attach (RIGHTSERVOPIN) সংযুক্ত করে; // ডান সার্ভো goStop সংযুক্ত করে ();}/ * * রোবটের গতি 0- (বন্ধ) এবং 100- (পূর্ণ গতি) এর মধ্যে সেট করে পরিবর্তনগুলি হওয়ার আগে গো পদ্ধতিগুলির।*/ অকার্যকর setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // সেট বাম গতি setSpeedRight (newSpeed); // ডান গতি সেট করে}/ * * বাম চাকার গতি সেট করে 100 if (newSpeed = 100) {newSpeed = 100;} // যদি স্পিড 100 এর বেশি হয় // তাহলে 100 করুন (newSpeed <= 0) {newSpeed = 0;} // যদি স্পিড 0 থেকে কম হয় // এটা 0 rightSpeed = newSpeed * 0.9; // স্কেল স্পিড হতে}} rightServo.write (90 - rightSpeed);} / * * রোবটটিকে পিছনে পাঠায় * /অকার্যকর GoBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * রোবট ডানদিকে পাঠায় * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * রোবট বাম প্রেরণ করে */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * রোবট থামায় */অকার্যকর goStop () {leftServo.write (90); rightServo.write (90);} // ARDUINO নিয়ন্ত্রিত সার্ভো রোবট (SERB) রুটিন সমাপ্তি // ---------------------------- -----------------------------------------------

ধাপ 4: সফটওয়্যার - রোবট ল্যাপটপ (ওয়েব সার্ভার)

সফটওয়্যার - রোবট ল্যাপটপ (ওয়েব সার্ভার)
সফটওয়্যার - রোবট ল্যাপটপ (ওয়েব সার্ভার)

(প্রসেসিং একটি ওপেন সোর্স প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং এনভায়রনমেন্ট যা দিয়ে শুরু করা খুবই সহজ। বিস্তারিত জানার জন্য প্রসেসিং এ যান) রোবট ল্যাপটপে যে সফটওয়্যার চলে তাও বেশ সহজ। এটি একটি বরং প্রাথমিক ওয়েব-সার্ভার (একটি ওয়েব ব্রাউজার থেকে ওয়েব পেজ অনুরোধের জন্য শোনা), একটি ছোট ইউজার ইন্টারফেস (এটি সেট আপ করার জন্য), এবং ওয়েব সার্ভার থেকে অর্ডুইনোতে প্রাপ্ত কমান্ডগুলি পাস করার সুবিধা। (জানালায়)

  • নীচের জিপ ফাইলটি ডাউনলোড করুন (06-WEBB- প্রসেসিং ওয়েবসাইট সার্ভার (উইন্ডোজ এক্সি).জিপ)
  • এটি আনজিপ করুন এবং.exe ফাইলটি চালান (_WEBB_WebServer_RobotComputer.exe)

প্রক্রিয়াকরণে সম্পাদনা করতে:

  • নীচের জিপ ফাইলটি ডাউনলোড করুন (06-WEBB- প্রসেসিং ওয়েবসাইট সার্ভার (সোর্স ফাইল).zip)
  • আপনার কম্পিউটারের যেকোনো জায়গায় আনজিপ করুন।
  • প্রক্রিয়াকরণ পরিবেশ খুলুন এবং খুলুন (_WEBB_WebServer_RobotComputer.pde)

পরীক্ষা করতে:

  • প্রোগ্রাম চালান।
  • বক্স #1 এ আপনার কম্পিউটারে উপলব্ধ কম পোর্টের একটি তালিকা থাকবে (আপনার Arduino যেটির সাথে সংযুক্ত আছে সেখানে ক্লিক করুন। কম পোর্ট)
  • আপনার Arduino সংযুক্ত আছে কিনা তা দেখার জন্য #2 বাক্সে পরীক্ষা করুন। তীরগুলির একটিতে ক্লিক করুন এবং আশা করি আপনার রোবট অর্ধেক সেকেন্ডের জন্য ক্লিক করা দিকে এগিয়ে যাবে।
  • #3 বক্সে ওয়েব সার্ভার চালু করতে "স্টার্ট" বোতামে ক্লিক করুন।
  • একটি ওয়েব ব্রাউজার (রোবট ল্যাপটপে) খুলুন এবং https://127.0.0.1:12345/ControlPage.html পরিদর্শন করুন (আশা করি এটিতে বোতাম সহ নিয়ন্ত্রণ ওয়েব পৃষ্ঠাটি উপস্থিত হবে) -পরবর্তী ধাপে এই পৃষ্ঠাটি কীভাবে ব্যবহার করবেন সে সম্পর্কে বিস্তারিত -

কি হচ্ছে:

  • ওয়েব সার্ভার HTTP রিকোয়েস্টের জন্য 12345 পোর্ট শোনে (যখন আপনি একটি ওয়েব পেজের ঠিকানা টাইপ করেন তখন কি পাঠানো হয়)
  • দুটি ধরণের অনুরোধ রয়েছে যা এতে সাড়া দেয়।

1. এটি "ControlPage.html" এর জন্য শোনে এবং কন্ট্রোল ওয়েবপৃষ্ঠা পাঠাবে 2. এটি "/request? Command = F & param1 = 100" ফর্মের অনুরোধের জন্য শোনে রোবটে 10 সেকেন্ডের জন্য এগিয়ে যাচ্ছে) পরিশিষ্ট: (ওয়েব সার্ভারের কোড)

/ * * Arduino নিয়ন্ত্রিত ওয়েব কানেক্টেড রোবট (WEBB) - ওয়েবসাইট সার্ভার * বিস্তারিত জানতে ভিজিট করুন: https://www.oomlout.com/serb * * আচরণ: প্রোগ্রামটি http (ওয়েবপেজ) রিকোয়েস্টগুলি শোনে * "/অনুরোধ ? কমান্ড = F & param1 = 100 "এবং তারপর সেগুলিকে * Arduino * সমর্থিত কমান্ড - & aposF & apos - 70 - Forward * & aposB & apos - 66 - Backward * & aposL & apos - 76 - Left * & aposR & apos - 82 - Right * & aposS & apos - 83 - speed * & aposX 88 অপারেশন: 1. কম পোর্টে ক্লিক করুন আপনার Arduino সংযুক্ত আছে * 2. আপনার arduino শুনছে কিনা তা পরীক্ষা করার জন্য বোতাম ব্যবহার করুন * (অর্ধ সেকেন্ডের জন্য ক্লিক করা দিকে এগিয়ে যাবে) * 3. স্টার্ট ক্লিক করুন এবং আপনার ওয়েব সার্ভার হবে অনুরোধের জন্য শুনতে থাকুন tion-Share Alike 3.0 Unported License। * এই লাইসেন্সের একটি অনুলিপি দেখতে, * https://creativecommons.org/licenses/by-sa/3.0/ * দেখুন অথবা ক্রিয়েটিভ কমন্সে চিঠি পাঠান, 171 সেকেন্ড * স্ট্রিট, স্যুট 300, সান ফ্রান্সিসকো, ক্যালিফোর্নিয়া 94105, * আমেরিকা. * */আমদানি প্রক্রিয়াকরণ সিরিয়াল। *; // সিরিয়াল ব্যবহার করার জন্য সিরিয়াল লাইব্রেরি আমদানি করুন (Arduino এর সাথে কথা বলার জন্য) আমদানি প্রসেসিং.নেট।*; // সার্ভার ব্যবহার করার জন্য নেট লাইব্রেরি আমদানি করুন (ইন্টারনেটে কথা বলার জন্য)/ * সিরিয়াল পোর্ট সম্পর্কিত ভেরিয়েবল */int serialPortIndex = -1; // Serial.list () listString commOptions এ আমরা যে সিরিয়াল পোর্টের সূচক ব্যবহার করছি; // সিরিয়াল.লিস্ট () সংরক্ষণ করার জন্য একটি ভেরিয়েবল যাতে পোল করার কোন প্রয়োজন নেই // সিরিয়াল পোর্টগুলি প্রতিবার যখন আমরা এটি পুনর্বিবেচনা করতে চাই (পোলিংয়ের কারণে // আরডুইনো সার্ভিসে // লাফ দেয়) সিরিয়াল সিরিয়ালপোর্ট; // এই স্কেচ জুড়ে সিরিয়াল পোর্ট ঠিকানাযোগ্য করে তোলে/ * গ্রাফিক এবং রেন্ডারিং সম্পর্কিত ভেরিয়েবল */পিফন্ট ফন্ট; // ফন্ট সর্বজনীন করে তোলে তাই এটি শুধুমাত্র একবার লোড করা প্রয়োজন (Arial-72)/ * নেটওয়ার্ক সম্পর্কিত ভেরিয়েবল */সার্ভার wServer; // সার্ভার যা ওয়েব রিকোয়েস্ট পরিচালনা করে পোর্ট = 12345; // যে পোর্টটি সার্ভার শুনতে চায় সাইকেল কাউন্ট = 0; // ড্র লুপ কতবার চালানো হয় তার সংখ্যা গণনা করে // ব্যাকগ্রাউন্ড ইমেজ বর্তমানে E WEBB-background.png/ * * বাটন রিলেটেড ভেরিয়েবল * (বোতামগুলো মোটামুটিভাবে প্রয়োগ করা হয়, বাউন্ডিং বক্সগুলো সংরক্ষণ করা হয় এবং গ্রাফিক এবং টেক্সট * ব্যাকগ্রাউন্ড ইমেজে আঁকা হয়) অর্থাৎ। মুভিং বোতাম ভেরিয়েবলগুলি বোতামগুলির চেহারা পরিবর্তন করবে না */বোতাম কম 1; বাটন comm2; বাটন comm3; বাটন comm4; // সঠিক সিরিয়াল পোর্ট নির্বাচন করার বোতাম বাটন আপ; ডান বোতাম; বোতাম বাকি; বোতাম ডাউন; // রোবট সাড়া দিচ্ছে কিনা তা পরীক্ষা করার দিকনির্দেশ বোতাম; বাটন ওয়েব সার্ভার; // ওয়েব সার্ভার শুরু করার বোতাম/ * * সব কিছু সেট করে */অকার্যকর সেটআপ () {ফ্রেমরেট (5); // স্কেচটিকে একটু স্লো করে দেয় যাতে এটি সিস্টেম bg = loadImage ("WEBB-background.png") এর উপর কর না হয়; // ব্যাকগ্রাউন্ড ইমেজ লোড করে (স্কেচ ফোল্ডারে সংরক্ষিত) সাইজ (700, 400); // স্কেচ উইন্ডোর আকার সেট করে font = loadFont ("ArialMT-72.vlw"); // এই স্কেচ commOptions = Serial.list () এর মাধ্যমে আমরা যে ফন্ট ব্যবহার করব তা লোড করে; // সিরিয়াল পোর্টগুলিকে পোল করে এবং উপলব্ধ পোর্টের তালিকা পায় // প্রতিটি বোতামের পটভূমির (bg) জন্য সীমানা বাক্স নির্ধারণ করে; // ব্যাকগ্রাউন্ড ইমেজ এঁকে দেয় (এই ছবিতে সব বাটন গ্রাফিক্স আছে)}/ * স্কেচ মেইন লুপ */অকার্যকর ড্র () {যদি (সাইকেলকাউন্ট == 0) {//- কল ড্র রুটিন drawCommBox (); // কম বক্সে ইমেলমেন্ট আঁকেন (বক্স 1) drawTestBox (); // টেস্ট বক্স (বক্স 2) ড্রওয়েব সার্ভারবক্স () এর সমস্ত উপাদান আঁকে; // ওয়েব সার্ভার বক্স (বক্স 3)} // -এর সমস্ত উপাদান আঁকুন // নেটওয়ার্কের মাধ্যমে কোন অনুরোধ এসেছে কিনা তা দেখার জন্য ওয়েব সার্ভারকে ভোট দেয়} // ------------------------------ ----------------------------------------------//শুরু রুটিন আঁকুন (পড়ার জন্য কোডটি আরও সুন্দর করতে); // পূরণ করুন কালো টেক্সটফন্ট (ফন্ট, 15); // (int i = 0; i 0) {running = running + "।";} // ডন্টের সংখ্যাটি সাইকেলকাউন্টের উপর ভিত্তি করে সেট করা হয় যদি চলমান = চলমান + ", 210); } চক্র গণনা ++; // প্রতিবার সাইকেলকাউন্টের মাধ্যমে এক দ্বারা বৃদ্ধি করা হয়} // ড্র রুটিনের সমাপ্তি // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // পরিষেবা রুটিন শুরু/ * * মাউসপ্রেসডকে যখনই মাউস চাপানো হয় তখন বলা হয় * মাউসটি কোন বোতাম বাঁধার বাক্সের ভিতরে আছে কিনা তা পরীক্ষা করে * এবং যদি এটি উপযুক্ত রুটিন হয় */অকার্যকর মাউসপ্রেসড () {যদি (comm1.pressed ()) { updateSerialPort (0);} // সিরিয়াল.লিস্টে ইনডেক্স 0 এ কম পোর্টে পরিবর্তন () অন্যথায় যদি.list () অন্যথায় যদি (comm3.pressed ()) {updateSerialPort (2);} // সিরিয়াল.লিস্টে ইন্ডেক্স 2 এ কম পোর্টে পরিবর্তন () অন্যথায় (comm4.pressed ()) {updateSerialPort (3);} // সিরিয়াল.লিস্টে ইন্ডেক্স 3 এ কম পোর্টে পরিবর্তন অন্য সেকেন্ড যদি (left.pressed ()) {sendRobotCommand ("L", 5);} / /রোবটটিকে 0.5 সেকেন্ডের জন্য বামে সরানোর জন্য একটি কমান্ড পাঠায় অন্যথায় (right.pressed ()) {sendRobotCommand ("R", 5);} // রোবটটিকে ডানদিকে 0.5 সেকেন্ডের জন্য সরানোর জন্য একটি কমান্ড পাঠায় যদি (নিচে)। চাপানো ()) {sendRobotCommand ("B", 5);} // রোবটটিকে 0.5 সেকেন্ডের জন্য পিছনে সরানোর জন্য একটি কমান্ড পাঠায় অন্যথায় (webServer.pressed ()) {startWebServer ();} // 0; পটভূমি (বিজি); // ব্যাকগ্রাউন্ড ইমেজটি পুনরায় রঙ করে (এই ছবিতে সব বাটন গ্রাফিক্স আছে) ড্র ();}/ * * একবার এক্সিকিউশন বলা হলে এটি সার্ভার চেক করে দেখে যে কোন ওয়েটিং কানেকশন আছে কিনা * যদি সেখানে ওয়েটিং কানেকশন থাকে তাহলে এটি টেনে নেয় অনুরোধ পাঠান এবং অতিরিক্ত পাঠ্য ছিনিয়ে নেওয়ার জন্য এটি parseRequest (String) * রুটিনে পাঠান। এটি তখন ইন্টারপ্রিট রিকুয়েস্ট (স্ট্রিং) রুটিনে পাঠানো হয় * যথাযথ কর্ম রুটিনকে কল করতে (অর্থাৎ রোবটকে নির্দেশ পাঠান)।* * একটি ব্রাউজারে কম্পিউটারের ঠিকানা এবং পোর্ট প্রবেশ করে একটি অনুরোধ পাস করা হয় * স্থানীয় মেশিনের জন্য "https://127.0.0.1:12345/request?command=F&param1=100" কমান্ড = F & param1 = 100 HTTP/1.1 * ব্যবহারকারী-এজেন্ট: মোজিলা/5.0 (উইন্ডোজ; ইউ; উইন্ডোজ এনটি 5.1; এন-ইউএস) অ্যাপলওয়েবকিট/525.19 (কেটিএইচএল, গেকোর মত) * স্বীকার করুন: * // * * গ্রহণ-ভাষা: en-US, en * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Connection: Keep-Alive * * উদাহরণের উত্তর (প্রক্রিয়াকৃত অনুরোধের জন্য) * HTTP/1.1 200 ঠিক আছে * সংযোগ: বন্ধ * বিষয়বস্তু-প্রকার: পাঠ্য/html * * কমান্ড: F param1: 100 */void pollWebServer () {if (wServer! = null) {// if webServer চলছে ক্লায়েন্ট অনুরোধ = wServer.available (); // পরবর্তী সার্ভারে লাইনের পরের ক্লায়েন্ট লোড করুন // স্ট্রিং অনুরোধের বিষয়বস্তু স্ট্রিং স্ট্রিং ip = request.ip (); // স্ট্রিং হিসাবে ক্লায়েন্ট আইপি ঠিকানা সংরক্ষণ করুন String requestString = parseRequest (fullRequest.toUpperCase ()); // সমস্ত অতিরিক্ত তথ্য সরান // শুধুমাত্র অনুরোধ স্ট্রিং ছেড়ে (GET এর পরে পাঠ্য) // (স্ট্রিং টেস্টিং সহজ করার জন্য উপরের ক্ষেত্রে স্থানান্তর) যদি (requestString.indexOf ("REQUEST?")! = -1) { // অনুরোধটি "অনুরোধ" আছে কিনা তা পরীক্ষা করে? স্ট্রিং উত্তর = ব্যাখ্যা রিকুয়েস্ট (অনুরোধ স্ট্রিং); // অনুরোধ পাঠায় অনুরোধের দোভাষীর অনুরোধ। // অনুরোধটি পাঠানো হয়েছে বলে একটি 200 উত্তর পাঠায় // পরিচালিত এবং প্রতিক্রিয়া হিসাবে "উত্তর" স্ট্রিং wServer.disconnect (অনুরোধ); // ক্লায়েন্টের সংযোগ বিচ্ছিন্ন করে} অন্যথায় যদি (requestString.indexOf ("CONTROLPAGE")! = -1) {// যদি নিয়ন্ত্রণ ওয়েব পেজ স্ট্রিংয়ের জন্য অনুরোধ করা হয় webPageArray = loadStrings ("WEBB -ControlPage.html"); // web data / WEBB-ControlPage.html // থেকে নিয়ন্ত্রণ ওয়েবপৃষ্ঠা লোড করে (স্ট্রিং ওয়েবপেজ = ""; // সম্পাদনা সহজ করার জন্য ওয়েবপৃষ্ঠাটি // লাইন বিরতির সাথে রেখে দেওয়া হয়েছে তাই লুপ স্ট্রিপের জন্য এই লাইনগুলিকে (int i = 0; i portIndex) {// যদি পাস করা portIndex সিরিয়াল.লিস্টে একটি বৈধ সূচক হয়) // (অর্থাত্ দুটি তালিকায় বিকল্প তিনটি নয়) serialPortIndex = portIndex; // সিরিয়ালপোর্ট ইন্ডেক্স ভেরিয়েবলকে নতুন সিরিয়ালপোর্ট ইনডেক্সে সেট করুন // (এটি সক্রিয় পোর্টের পাশে বিন্দু প্রদর্শনের জন্য ব্যবহার করা হয়)} যদি (serialPortIndex! = -1) {// নিশ্চিত করুন যে কোন পোর্ট আগের কোন সময় বেছে নেওয়া হয়েছে কিনা (serialPort! // Arduino 9600 Baud }- এর সাথে যোগাযোগ করার জন্য একটি নতুন সিরিয়াল অবজেক্ট তৈরি করুন}} arduino (অতিরিক্ত প্যারামিটার যোগ করা বা অ arduino কমান্ড এখানে করা হবে) */ // একটি রিটার্ন ভ্যালু ভেরিয়েবল স্ট্রিং কমান্ড প্রস্তুত করে; // পরবর্তী তিনটি লাইন "কমান্ড =" // এর পর মান বের করে)! = -1) {command = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND ="। Length ());} else {command = "Z";} if (command.indexOf (" & ")! = -1) {command = command.substring (0, command.indexOf (" & "));} else {command = command;} স্ট্রিং param1String; // পরের তিনটি লাইন" param1 = = এর পরে মান বের করে "// (কমান্ড প্যারামিটারটি যদি অনুরোধের শেষে // এ থাকে এবং অতিরিক্ত অনুসরণ করা হয় এবং একটি এবং যদি অনুসরণ না করা হয় (requestString.indexOf (" PARAM1 = ")! = -1) {param1String = requestString.substring (requestString.indexOf ("PARAM1 =") + "PARAM1 ="। length ());} else {param1String = "0";} if (param1String.indexOf ("&")! = -1) {param1String = param1String.substring (0, param1String.indexOf ("&"));} অন্য {param1String = param1String;} int param1 = Integer.parseInt (param1String); // param1 স্ট্রিংকে একটি পূর্ণসংখ্যা sendRobotCommand (কমান্ড, param1); // রুটিনে কমান্ড পাঠায় যা Arduino returnValue = "command:" + command + "param1:" + param1; // এই মুহুর্তে শুধু পার্সড কমান্ড কিন্তু // html হিসাবে পাঠানো হচ্ছে যাতে ফরম্যাটিং রিটার্ন রিটার্ন ভ্যালু অন্তর্ভুক্ত করা যায়;}/ * * একটি কমান্ড (বর্তমানে একটি অক্ষর) এবং একটি প্যারামিটার (একটি বাইট 0-255) নেয় এবং এটি পাঠায় arduino * যা শুনছে এবং reasts * Currrently সমর্থিত কমান্ড * F - */void sendRobotCommand (String command, int param1) {println ("command:" + command + "time:" + param1); স্ট্রিং checkString = "AAA"; যদি (serialPort! = null) {serialPort.write (checkString + command); serialPort.write (বাইট (param1)); }} // সেটআপ শেষ/খুব সাধারণভাবে বলা হয় না রুটিন // ----------------------------------- -------------------------------------------------- // উদাহরণ বাটন এবং RectButton কোড থেকে প্রক্রিয়াকরণ.অর্গ উদাহরণ কিছু পরিবর্তন সহ // বেশিরভাগই সহজ করা এবং রোল ওভার অ্যানিমেশন সরানোর জন্য // https://processing.org/learning/topics/buttons.html (2008-09-23) ক্লাস বোতাম {int x, y; int প্রস্থ, উচ্চতা; বোতাম (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; প্রস্থ = iwidth; উচ্চতা = উচ্চতা; } বুলিয়ান চাপা () {যদি (ওভাররেক্ট ()) {রিটার্ন ট্রু; } অন্যথায় {return false;}} বুলিয়ান ওভাররেক্ট () {যদি (mouseX> = x && mouseX = y && mouseY <= y+height) {return true; } অন্যথায় {মিথ্যা প্রত্যাবর্তন; }}}

ধাপ 5: সফটওয়্যার - (ওয়েবপেজ)

সফটওয়্যার - (ওয়েবপেজ)
সফটওয়্যার - (ওয়েবপেজ)
সফটওয়্যার - (ওয়েবপেজ)
সফটওয়্যার - (ওয়েবপেজ)
সফটওয়্যার - (ওয়েবপেজ)
সফটওয়্যার - (ওয়েবপেজ)

আচ্ছা আমরা প্রায় শেষ করেছি যা বাকি আছে তা হল আপনার রোবটের সাথে কথা বলা। কথা বলার জন্য: (উইন্ডোজ -এ একটি স্থানীয় নেটওয়ার্কের মাধ্যমে)

  • ল্যাপটপ কম্পিউটারের স্থানীয় আইপি ঠিকানা আবিষ্কার করুন। এটি করার জন্য "Start / Programs / Accesories / Command Prompt" এ যান এবং যখন টার্মিনাল উইন্ডো খোলে "ipconfig" টাইপ করুন। "আইপি ঠিকানা" লিখুন এবং আপনার স্থানীয় নেটওয়ার্কে অন্য কম্পিউটারে যান।
  • একটি ওয়েব ব্রাউজার খুলুন, টাইপ করুন "https:// (রোবট কম্পিউটার আইপি): 12345/ControlPage.html
  • কন্ট্রোল ওয়েব পেজ লোড করা উচিত, "আইপি অ্যাড্রেস" বক্সে রোবট কম্পিউটার আইপি টাইপ করুন।
  • আপনার রোবট নিয়ন্ত্রণ শুরু করুন।

কথা বলার জন্য: (ইন্টারনেটের মাধ্যমে) এখন আপনি এটি স্থানীয়ভাবে ইন্টারনেটে কথা বলার কাজ করছেন মাত্র কয়েক ধাপ দূরে।

  • (সবচেয়ে কঠিন ধাপ) পোর্ট ফরওয়ার্ডিং সেট আপ করুন - আপনার কম্পিউটারকে শুধু স্থানীয় নেটওয়ার্কের পরিবর্তে ইন্টারনেটে শুনতে হবে। এটি করার জন্য আপনাকে আপনার রাউটারকে বলতে হবে যে রোবট নিয়ন্ত্রণকারী কম্পিউটারের মাধ্যমে কিছু অনুরোধ পাঠাতে। এটি কিছুটা জটিল এবং এই নির্দেশের সুযোগের বাইরে চলে যায়। তবে আপনি যদি PortForward.com ভিজিট করেন তাহলে তারা আপনাকে আপনার রাউটার কনফিগার করার বিষয়ে যা জানা দরকার তা দেবে (আপনাকে আপনার রোবট ল্যাপটপে 12345 পোর্ট ফরওয়ার্ড করতে হবে)
  • পরবর্তী আপনার ইন্টারনেট আইপি আবিষ্কার করুন (WhatIsMyIP.com দেখুন)
  • অবশেষে স্কাইপ সেটআপ একটি ভিডিও কল চালু করুন এবং যার সাথে কথা বলছেন তাকে "https:// (ইন্টারনেট আইপি): 12345/ControlPage.html" দেখুন
  • কন্ট্রোল ওয়েবপেজে "আইপি অ্যাড্রেস" বক্সে ইন্টারনেট আইপি টাইপ করুন এবং আপনার ওয়েব কানেক্টেড রোবট দূর থেকে চালিত হচ্ছে।

ধাপ 6: সমাপ্ত

সমাপ্ত
সমাপ্ত

আচ্ছা এটাই। আমি আশা করি আপনি একটি দূর থেকে আপনার রোবট ড্রাইভিং একটি মজা সময় করছি। সফটওয়্যার বা হার্ডওয়্যারে আপনার কোন সমস্যা থাকলে নির্দ্বিধায় একটি মন্তব্য করুন এবং আমি চেষ্টা করব এবং আপনাকে সাহায্য করব।

প্রস্তাবিত: