সুচিপত্র:

রাস্পবেরি পাই আইওটি ফুসবল টেবিল: 11 টি ধাপ
রাস্পবেরি পাই আইওটি ফুসবল টেবিল: 11 টি ধাপ

ভিডিও: রাস্পবেরি পাই আইওটি ফুসবল টেবিল: 11 টি ধাপ

ভিডিও: রাস্পবেরি পাই আইওটি ফুসবল টেবিল: 11 টি ধাপ
ভিডিও: World's Smallest Cpu 😍 #raspberrypi #arduino #electronics #robotics #technology #iot #programming 2024, নভেম্বর
Anonim
রাস্পবেরি পাই আইওটি ফুসবল টেবিল
রাস্পবেরি পাই আইওটি ফুসবল টেবিল

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

মূল সেটআপটি একটি রাস্পবেরি পাই এর সাথে সংযুক্ত একটি বিদ্যমান ফুসবল টেবিল ব্যবহার করছে যা নিম্নলিখিত সমস্ত কাজ করতে পারে:

  • IR LED/Receivers এবং 8x8 ডট ম্যাট্রিক্স মডিউল চালাতে GPIO পিন ব্যবহার করে
  • Nginx ব্যবহার করে একটি ফ্লাস্ক ওয়েবসাইট চালায়
  • ডাটা স্টোরেজের জন্য একটি মাইএসকিউএল/মারিয়াডিবি ডাটাবেস চালায়

এই প্রকল্পটি পুনরায় তৈরি করতে আপনার নিম্নলিখিত দক্ষতার প্রয়োজন হবে:

ব্যাকএন্ড:

  • ওয়েবসাইটের ক্লায়েন্টের জন্য HTML/CSS/জাভাস্ক্রিপ্ট বোঝা
  • ওয়েবসাইটের সার্ভার সাইডের জন্য ফ্লাস্ক/ফ্লাস্ক-সকেটআইও/জিনজা 2 দিয়ে পাইথন বোঝা
  • মাইএসকিউএল এর প্রাথমিক জ্ঞান
  • কিভাবে একটি ওয়েব সার্ভার চালাতে হয় তা জানুন

প্রোটোটাইপ

  • কিভাবে একটি বৈদ্যুতিক সার্কিট তারের প্রাথমিক জ্ঞান
  • সোল্ডারিং
  • পাইথনে কিভাবে স্ক্রিপ্ট লিখতে হয় তার প্রাথমিক ধারণা
  • লিনাক্সের সাথে কাজ করা (রাস্পবিয়ান)
  • অনেক ধৈর্য থাকা কারণ সেখানে অনেক ডিবাগিং জড়িত থাকবে

ধাপ 1: উপকরণ

টেবিলের জন্য প্রয়োজনীয় সমস্ত অংশের তালিকা এখানে:

  • রাস্পবেরি পাই মডেল 3 (আবরণ সহ)
  • ব্রেডবোর্ডের সাথে পাই সংযোগের জন্য টি-মুচি
  • Foosball টেবিল (আমি এই একটি অনুরূপ একটি খুব পুরানো টেবিল ব্যবহার। এটা গর্ত ড্রিল করতে ইচ্ছুক হতে হবে)
  • MAX7219 Arduino ডট ম্যাট্রিক্স মডিউল (2)
  • IR LED Emitters (2+ কারণ তারা ভেঙ্গে যায়, এটির মতো)
  • আইআর রিসিভার (2+ কারণ তারাও ভেঙে যায়, এটির মতো)
  • বেসিক সোল্ডারলেস ব্রেডবোর্ড
  • প্রচুর এবং প্রচুর তার (ফুসবল টেবিলের আকারের উপর নির্ভর করে)
  • পুরুষ সংযোগকারী (30+)
  • মহিলা সংযোগকারী (10+)
  • 100-220 ওহম প্রতিরোধক (4+)
  • সোল্ডারিং উপকরণ
  • তারের স্ট্র্যাপ
  • LED হোল্ডার
  • কিছু কাঠ/স্ক্রু যদি আপনি নর্দমায় বল রিলে করতে চান

এই প্রকল্পের মোট খরচ সম্পূর্ণরূপে আপনার ফুসবল টেবিলের খরচ (ব্যয়বহুল) উপর নির্ভর করে। টেবিলের পাশাপাশি উপকরণ হবে সর্বোচ্চ 150 ইউরো।

ধাপ 2: বৈদ্যুতিক সার্কিট

বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট
বৈদ্যুতিক সার্কিট

আপনি ঝাল করার চেষ্টা করার আগে, সমস্ত উপাদানগুলিকে একত্রিত করুন আমি প্রথমে এটি একটি ব্রেডবোর্ডে পরীক্ষা করার পরামর্শ দিই। ত্রুটিপূর্ণ উপাদানগুলি প্রতি ঘণ্টায় সোল্ডার করার আগে প্রতিস্থাপন করা সহজ।

প্রথমে আমি 74HC595 শিফট রেজিস্টার (প্রথম ছবি) এবং ট্রানজিস্টার অ্যারে দিয়ে 8x8 LED ম্যাট্রিক্স বাস্তবায়নের চেষ্টা করেছি কিন্তু অনেক তারের কারণে এবং খুব কম আউটপুট থাকায় আমি MAX7219 ডট ম্যাট্রিক্স মডিউলে স্যুইচ করেছি কারণ এটি মাত্র 5 টি তারের এবং সরাসরি চালিত একটি এসপিআই বাস।

আমি অবশেষে যে সার্কিটটি ব্যবহার করেছি তা ফ্রিজিং দিয়ে আঁকা। অনুগ্রহ করে মনে রাখবেন যে IR LEDS এবং রিসিভার আপনার বিনামূল্যে GPIO পিনের যে কোন একটিতে সংযুক্ত হতে পারে।

আইআর রিসিভার এবং এলইডি সরাসরি একে অপরের সাথে থাকা উচিত এবং এলইডির উপরের অংশটি রিসিভারের দিকে নির্দেশ করা উচিত। কারণ আমরা একটি সরাসরি মরীচি অনুকরণ করতে চাই যা বল চলাচলের মাধ্যমে ভেঙে যেতে পারে সেক্ষেত্রে রিসিভারের ডাটা লাইনের 0 থেকে 1 পর্যন্ত রাষ্ট্রীয় পরিবর্তন হবে।

ধাপ 3: সেন্সর কোডিং

সেন্সর কোডিং
সেন্সর কোডিং

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

আমি বর্তমানে প্রকল্পে কাজ করছি কিন্তু একবার সবকিছু সম্পন্ন হলে পুরো প্রকল্পটি আমার গিথুব প্রোফাইলে পাওয়া যাবে

সেন্সরের কোডটি 3 টি ক্লাস নিয়ে গঠিত যা আমার ফ্লাস্ক সার্ভারে ব্যাকগ্রাউন্ড থ্রেডে চালানো হয় (যা পরে ব্যাখ্যা করা হবে):

  1. লক্ষ্য শ্রেণী (লিঙ্ক) -এই ফাইলটি সমস্ত পৃথক উপাদান শুরু করে, যা সঠিক SPI ডিভাইস/বাস এবং পিন নম্বর সন্নিবেশ করে আহ্বান করা যেতে পারে
  2. ম্যাট্রিক্স ক্লাস (লিংক) -এটি MAX7219 মডিউলকে শক্তিশালী করার প্রধান ক্লাস
  3. LED এবং রিসিভার ক্লাস (লিঙ্ক) - RPi এর CPU লোড কমাতে পৃথক থ্রেড ব্যবহার করে ইনফ্রারেড ব্রেক -বিমকে পাওয়ার জন্য এটি প্রধান ক্লাস।

LED এবং রিসিভার উভয়ই 38kHz ফ্রিকোয়েন্সি তে কাজ করে এবং রিসিভার সবসময় 50% আপ এবং 50% ডাউন পালস সঠিকভাবে কাজ করার আশা করে।

ধাপ 4: সেন্সর প্রস্তুত এবং স্থাপন

সেন্সর প্রস্তুত ও স্থাপন
সেন্সর প্রস্তুত ও স্থাপন
সেন্সর প্রস্তুত ও স্থাপন
সেন্সর প্রস্তুত ও স্থাপন
সেন্সর প্রস্তুত ও স্থাপন
সেন্সর প্রস্তুত ও স্থাপন

এখন আমরা IR LED এবং রিসিভার প্রস্তুত করতে যাচ্ছি। টেবিলের ছবিতে আপনি RPi এবং সেন্সরগুলি কোথায় স্থাপন করা উচিত তার অবস্থানগুলি খুঁজে পেতে পারেন।

তবে প্রথমে আমাদের ওয়্যারিং প্রস্তুত করতে হবে:

  1. নিশ্চিত করুন যে আপনি RPi/breadboard অবস্থান থেকে সেন্সর অবস্থান পর্যন্ত প্রয়োজনীয় তারের পরিমাণ পরিমাপ করেন
  2. আইআর রিসিভার পিনগুলি তারের এক প্রান্তে (COM/GND/V+) সোল্ডার করুন
  3. তারের অন্য প্রান্তে পুরুষ সংযোগকারীর টুকরোগুলি ঝালাই করুন

এখন আমরা টেবিল প্রস্তুত করতে যাচ্ছি:

  1. কোথায় ড্রিল করতে হবে তার একটি মৌলিক অঙ্কন (ছবির উপর ভিত্তি করে) তৈরি করুন। এটি অত্যন্ত গুরুত্বপূর্ণ যে 2 টি গর্ত একে অপরের সাথে একত্রিত হয় কারণ এটি বিমের অবস্থান হবে।
  2. গর্তগুলি ড্রিল করুন
  3. যদি আপনার কিছু LED ধারক (লিঙ্ক) থাকে তবে আপনি এটিকে আরও শক্ত করার জন্য গর্তের ভিতরে রাখতে পারেন
  4. উভয় পাশে LED + রিসিভার + টেপ সন্নিবেশ করান
  5. তারের স্ট্র্যাপ + কাঠের উপর তাদের টেপ করুন যাতে তারা খুব বেশি অতিক্রম না করে
  6. পূর্বে প্রদত্ত সার্কিট অনুযায়ী ব্রেডবোর্ডে পুরুষ পিন োকান

ধাপ 5: ম্যাট্রিক্স মডিউল প্রস্তুত এবং স্থাপন

ম্যাট্রিক্স মডিউল প্রস্তুত এবং স্থাপন
ম্যাট্রিক্স মডিউল প্রস্তুত এবং স্থাপন

পরবর্তী আমরা 2 LED ম্যাট্রিক্স মডিউল সংযোগ করতে যাচ্ছি।

বিঃদ্রঃ:

যেহেতু আমি একটি পুরানো ফুসবল টেবিল ব্যবহার করেছি সেখানে ইতিমধ্যে সিগারেটধারীদের কারণে উপরের অংশের দিকে গর্ত ছিল। যদি আপনার কাছে এটি না থাকে তবে আপনাকে সেগুলি তৈরি করতে হবে।

তারগুলি প্রস্তুত করতে:

  1. ব্রেডবোর্ড থেকে টেবিলের উপরের অংশে তারের পরিমাপ করুন
  2. তারের প্রথম প্রান্তে কিছু মহিলা সংযোগকারীকে বিক্রি করুন
  3. তারের অন্য প্রান্তে কিছু পুরুষ সংযোগকারীকে বিক্রি করুন

ম্যাট্রিক্স স্থাপন:

  1. উপরের গর্তের মধ্য দিয়ে ম্যাট্রিক্স বের করে আনুন
  2. স্ট্র্যাপ + ক্রস এড়াতে কাঠের ভিতরে তারের টেপ
  3. পূর্বে প্রদত্ত সার্কুই অনুসারে ব্রেডবোর্ডে পুরুষ পিন োকান

কিছু সময়ে আমি ম্যাট্রিক্স মডিউলের জন্য একটি কেসিং যোগ করার জন্য একটি ছোট DIY ধাপ যোগ করব, কিন্তু আপাতত তারা নগ্ন।

ধাপ 6: এটি IoT তৈরি করা

আইওটি তৈরি করা
আইওটি তৈরি করা

যদি আপনি শুধু রেজিস্টার করতে চান এবং স্কোর প্রদর্শন করতে চান, তাহলে আপনি একটি ছোট চলমান পাইথন স্ক্রিপ্ট লিখে প্রকল্পটি শেষ করতে পারেন যা স্কোরগুলির মধ্যে একটি পর্যন্ত 9 পর্যন্ত পৌঁছানোর পরে লুপ হয়ে যায় এবং তারপর পুনরায় সেট করে।

তবে আপনি যদি আপনার টেবিলটি ইন্টারনেটে সংযুক্ত করতে চান তাহলে পরবর্তী কয়েকটি ধাপ আপনার গলির ঠিক উপরে উঠতে হবে।

পরবর্তী কয়েকটি ধাপে আমরা নিম্নলিখিত বিষয়গুলি সমাধান করব:

  • রাস্পবেরি পাই কনফিগার করা হচ্ছে
  • স্টোরেজের জন্য একটি ডাটাবেস তৈরি করা
  • ওয়েবসাইট তৈরি করা
  • অনলাইনে রাখছি

এই মুহুর্তে, যদি আপনি গিটের সাথে পরিচিত হন, আমি আপনাকে আপনার ফাইলগুলির ট্র্যাক রাখতে গিটহাব/গিটল্যাবে একটি সংগ্রহস্থল তৈরি করার পরামর্শ দিই। আপনি না থাকলে আপনি ছবির মতো একই কাঠামো দিয়ে একটি ফোল্ডার তৈরি করতে পারেন।

সম্পূর্ণ প্রকল্প শীঘ্রই GitHub এ পাওয়া যাবে। তবে সমস্ত প্রয়োজনীয় ফাইল সহ একটি অস্থায়ী rar ফাইল পাওয়া যায়।

ধাপ 7: রাস্পবেরি পাই সংযোগ করা

পরবর্তী আমরা রাস্পবেরি পাই পরিবেশ সেটআপ করতে যাচ্ছি, এটি করার জন্য আপনাকে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করতে হবে:

  • SSH এর মাধ্যমে আপনার রাসবেরি পাইতে সংযুক্ত করুন (আপনি PuTTY ব্যবহার করতে পারেন)
  • একটি ফোল্ডার তৈরি করুন (উদাহরণ mkdir প্রকল্প) এবং cd কমান্ড ব্যবহার করে এই ফোল্ডারে যান
  • Python3 -m venv --system-site-package env কমান্ড ব্যবহার করে এই ফোল্ডারে একটি ভার্চুয়াল পাইথন পরিবেশ তৈরি করুন
  • উৎস/env/bin/activate কমান্ড দিয়ে ভার্চুয়াল দোভাষী সক্রিয় করুন
  • Python -m pip install package -name কমান্ড দিয়ে প্রয়োজনীয়তাগুলি থেকে প্যাকেজগুলি ইনস্টল করুন
  • পূর্বে প্রদত্ত project_example.rar ফাইল থেকে SSH- এ আপনার প্রকল্প ফোল্ডারে ফাইল স্থানান্তর করুন

এখন আপনি আপনার রাস্পবেরি পাইতে সম্পূর্ণ প্রকল্পটি চালাতে সক্ষম হবেন। আমি আপনাকে PyCharm এর মত একটি Python IDE ব্যবহার করার পরামর্শ দিচ্ছি যা আপনাকে SSH- এর মাধ্যমে আপনার দূরবর্তী দোভাষী থেকে ডিবাগ করতে এবং প্রয়োজনে সরাসরি পরিবর্তনগুলি আপলোড করতে দেয়।

ধাপ 8: ডাটাবেস সেট আপ করা

ডাটাবেস সেট আপ করা হচ্ছে
ডাটাবেস সেট আপ করা হচ্ছে

এখন আপনাকে এই মডেলের উপর ভিত্তি করে একটি খুব মৌলিক ডাটাবেস সেট আপ করতে হবে।

এর সাথে যাওয়ার সবচেয়ে সহজ উপায় হল মাইএসকিউএল ওয়ার্কবেঞ্চে আপনার ডাটাবেস তৈরি করা যেখানে আপনি কিছু পরীক্ষাও করতে পারেন।

একবার হয়ে গেলে আপনি আপনার ডাটাবেসের একটি ডাম্প রপ্তানি করতে পারেন এবং আপনার RPi এ আপলোড করতে পারেন এবং তারপর এটি sudo mariadb <pathtofile/file.sql দিয়ে চালাতে পারেন

ধাপ 9: ওয়েবসাইট তৈরি করা

ওয়েবসাইট তৈরি করা
ওয়েবসাইট তৈরি করা
ওয়েবসাইট তৈরি করা
ওয়েবসাইট তৈরি করা
ওয়েবসাইট তৈরি করা
ওয়েবসাইট তৈরি করা

পরবর্তী আপনি project_example.rar ফাইলে প্রদত্ত কোড বিশ্লেষণ (এবং ব্যবহার) করতে পারেন।

প্রধান ফাইল হল Flask.py যা এই প্রকল্পের রুটি এবং মাখন:

  • একটি ফ্লাস্ক-সকেটআইও অ্যাপ চালায় যা ওয়েবসাইটের ব্যাকএন্ড পরিচালনা করে
  • ডাটাবেস এবং ফ্লাস্কের মধ্যে একটি সংযোগ তৈরি করে
  • লগইন যাচাইকরণ এবং ব্যবহারকারীর নিবন্ধন প্রদান করে
  • গেমটি কীভাবে খেলতে হয় তার প্রয়োজনীয় কোড সরবরাহ করে গেমের সময় ওয়েবসাইট রিয়েলটাইম আপডেট করার জন্য সকেটিও ব্যবহার করে
  • ডাটাবেসে গেমের ফলাফল রাখে

স্ট্যাটিক এবং টেমপ্লেট ফোল্ডারে আপনি HTML/CSS/JS খুঁজে পেতে পারেন যা ওয়েবসাইটের সামনের অংশ প্রদান করে। আপনার নিজের পছন্দ অনুযায়ী নির্দ্বিধায় এগুলি সংশোধন করুন।

ধাপ 10: ওয়ার্ল্ড ওয়াইড ওয়েবের সাথে সংযোগ স্থাপন

আমাদের ওয়েবসাইটকে ওয়েবে সংযুক্ত করতে আমরা nginx এবং uwsgi ব্যবহার করব। প্রকল্পের উদাহরণে আপনি conf ফোল্ডারে প্রয়োজনীয় ফাইলগুলি খুঁজে পেতে পারেন।

প্রথমে আপনাকে এই ফাইলগুলিতে নিম্নলিখিতগুলি আপডেট করতে হবে:

  • Uwsgi-flask.ini এ আপনাকে আপনার দোভাষীর কাছে ভার্চুয়ালেনভ প্যারামিটারের পথ পরিবর্তন করতে হবে
  • Project1-flask.service- এ আপনাকে ফাইলটির [Service] অংশটি আপনার পরিচয়পত্র এবং সংশ্লিষ্ট ফাইলগুলির পথের সাথে আপডেট করতে হবে
  • এনগিনেক্স ফাইলে আপনার সার্ভার এবং অবস্থান / পাথ আপনার সংশ্লিষ্ট সকেটে আপডেট করতে হবে

পরবর্তী আপনাকে আপনার nginx কনফিগ ফাইলের অবস্থানের সাথে ডিফল্ট nginx ওয়েব সার্ভার ফাইলটি প্রতিস্থাপন করতে হবে, নীচে এটি করার জন্য লিনাক্স কমান্ডগুলির একটি উদাহরণ

  • আমি@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • আমি@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
  • আমি@my-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • আমি@my-rpi: ~/project1 $ sudo systemctl পুনরায় আরম্ভ nginx.service

অবশেষে আপনাকে আপনার সিস্টেমড ফোল্ডারে কাস্টম পরিষেবাগুলি যুক্ত করতে হবে, এটি কীভাবে এটি করা যায় তার একটি উদাহরণ:

  • me@my-rpi: ~/project1 $ sudo cp conf/project1-*। service/etc/systemd/system/
  • me@my-rpi: ~/project1 $ sudo systemctl ডেমন-রিলোড
  • আমি@my-rpi: ~/project1 $ sudo systemctl start project1-*
  • আমি@my-rpi: ~/project1 $ sudo systemctl status project1-*

আপনি যদি আপনার রাস্পবেরি পাই এর বুট থেকে ওয়েব সার্ভারটি শুরু করতে চান তবে আপনাকে sudo systemctl সক্রিয় প্রকল্প 1-*। সার্ভিস কমান্ড ব্যবহার করতে হবে।

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

ধাপ 11: শেষ করা

সমাপ্তি বন্ধ
সমাপ্তি বন্ধ

এই নির্দেশনার চূড়ান্ত অংশ টাইপ করার সময়, এই ছোট স্কুল প্রকল্পটি এখনও একটি কাজ চলছে।

আমি 2.5 সপ্তাহের মধ্যে এটি সম্পন্ন করতে অগণিত ঘন্টা ব্যয় করেছি। যদিও সবকিছু একটু তাড়াহুড়ো করে আমি যা অর্জন করেছি তা নিয়ে আমি এখনও গর্বিত। সমাবেশ পর্বের সময় আমি অগণিত বাগ/ত্রুটি/ত্রুটিপূর্ণ সেন্সরের মুখোমুখি হয়েছি তাই প্রথম চেষ্টা করে সবকিছু কাজ না করলে খুব বেশি হতাশ হবেন না।

আপনি যা করতে পারেন তা হল ইন্টারনেটে সাহায্য চাওয়া বা সন্ধান করা, এমন অনেক লোক রয়েছে যারা অনেক ভাল জ্ঞানের অধিকারী যারা আপনাকে সাহায্য করতে খুব আগ্রহী।

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

প্রস্তাবিত: