সুচিপত্র:

পিক্সেলওয়াল: 7 টি ধাপ (ছবি সহ)
পিক্সেলওয়াল: 7 টি ধাপ (ছবি সহ)

ভিডিও: পিক্সেলওয়াল: 7 টি ধাপ (ছবি সহ)

ভিডিও: পিক্সেলওয়াল: 7 টি ধাপ (ছবি সহ)
ভিডিও: Google Pixel 7 review 2024, সেপ্টেম্বর
Anonim
পিক্সেলওয়াল
পিক্সেলওয়াল

আপনি কি পিক্সেল-টেবিল প্রকল্প জানেন? আমি এই ধরনের একটি পিক্সেল জিনিস উপলব্ধি করার ধারণা ছিল, কিন্তু একটি টেবিল হিসাবে নয়, বরং এটি দেয়ালে লাগানোর জন্য।

যাতে আমি সোফায় শুয়ে থাকি এবং বিশ্রাম নেওয়ার সময় এর উপর কিছু গেম খেলতে পারি।:)

বাস্তবায়িত গেমগুলি হল:

  • টেট্রিস
  • মহাকাশ আক্রমণকারী
  • সাপ
  • পিক্সেল ড্র

অতিরিক্ত ফাংশন হল:

  • বর্তমান সময় দেখান
  • রঙ অ্যানিমেশন দেখান

পিক্সেলওয়ালের একটি ESP8266 আছে তাই এটি আমার হোম- WLAN এর সাথে সংযোগ স্থাপন করতে পারে। তবে পিক্সেলওয়ালকে অ্যাক্সেস পয়েন্ট হিসাবে ব্যবহার করা এবং এটির সাথে সরাসরি সংযোগ করাও সম্ভব।

আমার পিক্সেলওয়াল ব্যবহার করা সহজ করার জন্য, প্রাচীর সংযোগের পর নিয়ন্ত্রণের জন্য একটি ওয়েবসাইট সরবরাহ করে। সমস্ত অ্যাপ ওয়েবপেজের মাধ্যমে নিয়ন্ত্রণযোগ্য/চালানো যায়। তাই ব্যবহারের জন্য কোন সফটওয়্যার ইন্সটল করা অপরিহার্য নয়।

অতিরিক্তভাবে একটি NES নিয়ামক রয়েছে যা গেমগুলি খেলা সহজ করে তোলে।

মুক্ত উৎস

সমস্ত সফ্টওয়্যার এবং যান্ত্রিক অঙ্কনগুলি আমি গিথুব এ রেখেছি: https://github.com/C3MA/PixelWallFeel আপনার নিজের প্রকল্পের জন্য এটি ব্যবহার করতে বিনা দ্বিধায়।

ধাপ 1: ইলেকট্রনিক দিয়ে শুরু

ইলেকট্রনিক দিয়ে শুরু
ইলেকট্রনিক দিয়ে শুরু
ইলেকট্রনিক দিয়ে শুরু
ইলেকট্রনিক দিয়ে শুরু
ইলেকট্রনিক দিয়ে শুরু
ইলেকট্রনিক দিয়ে শুরু

অন্য একটি প্রকল্প থেকে WS2812 LEDs সহ একটি বিদ্যমান PCB আছে। পিসিবির প্রতিটি সারিতে 12 টি এলইডি সহ 3 টি সারি রয়েছে।

আমি এই পিসিবি 6 বার ব্যবহার করার সিদ্ধান্ত নিয়েছি। তাই আমি একটি 12x18 LED ম্যাট্রিক্স পাই।

প্রথম পদক্ষেপটি ছিল 216 LEDs, প্রায় 100 ক্যাপাসিটার এবং একটি ESP8266 বিক্রি করা।

ম্যানুয়ালি সোল্ডারিং প্রায় 10 ঘন্টা প্রয়োজন।

প্রথম দ্রুত পরীক্ষার পরে এটি বের করে: সবকিছু কাজ করছে।

সুতরাং আমরা যান্ত্রিক অংশে যেতে পারি।

ধাপ 2: মেকানিক তৈরি করা

মেকানিক তৈরি করা
মেকানিক তৈরি করা
মেকানিক তৈরি করা
মেকানিক তৈরি করা
মেকানিক তৈরি করা
মেকানিক তৈরি করা
মেকানিক তৈরি করা
মেকানিক তৈরি করা

সবার আগে আমাদের প্রতিটি পিক্সেলের জন্য একটি সেপারেটার দরকার। ধারণাটি হল ভি-কাটের মাধ্যমে অনুভূমিক এবং উল্লম্ব ব্যান্ড একসাথে রাখা।

প্রতিটি ব্যান্ডের পুরুত্ব 3 মিমি এবং উচ্চতা 17 মিমি। লেজারকাটার দ্বারা এগুলি একটি এইচডিএফ প্লেট থেকে কাটা হয়।

লেজারকাটারের জন্য সমস্ত দৃশ্য ফ্রিক্যাডে আঁকা হয়েছে (গিথুব প্রকল্পের মেকানিক ফোল্ডারে "লেইস্টে" নামে)

পিসিবি এর লেআউট দ্বারা গ্রিড দেওয়া হয়। এটি একটি 28mm কলাম প্রস্থ এবং 31mm সারি উচ্চতা আছে।

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

পরবর্তী ধাপ হল এর জন্য একটি ফ্রেম পাওয়া। কিছু অনলাইন দোকান আছে যারা পৃথক ছবির ফ্রেম কাটার প্রস্তাব দেয়। তাই আমি 343 মিমি x 565 মিমি আকারের একটি ফ্রেম অর্ডার করেছি।

ফ্রেমটি পাওয়ার সাপ্লাইয়ের জন্য নিচের দিকে একটি অতিরিক্ত গর্ত পায়।

প্লেক্সিগ্লাস ফ্রন্ট প্লেট আমি অনলাইনেও অর্ডার করেছি। এটি একটি WN770 opal Milchglasoptik LD45% আকার: 567x344x2mm

এটির 45%এর স্বচ্ছতা রয়েছে।

ফ্রেমের মধ্যে সব অংশ একসাথে রাখা।

শেষে পিছনে কিছু স্ট্রিপ থাকবে, যাতে সবকিছু ঠিক থাকে এবং পড়ে না যায়।

কোন WLAN যোগাযোগ ছাড়াই পিক্সেলওয়ালের অপারেশন করার জন্য একটি বিকল্প পেতে, আমি একটি প্লাগযোগ্য নিয়ন্ত্রণ প্যানেল তৈরি করেছি যা optionচ্ছিকভাবে ফ্রেমের ডান পাশে theোকানো যেতে পারে (গিথুব প্রকল্পে "বেডিয়েনহাইট" বলা হয়)।

ধাপ 3: সফ্টওয়্যার - বেসিক

সফটওয়্যার - বুনিয়াদি
সফটওয়্যার - বুনিয়াদি

পিক্সেলওয়ালে গেম খেলার জন্য একটি ব্যবহারযোগ্য কেস।

কিন্তু একটি পিক্সেল গেম লেখার জন্য সর্বদা একটি দরকারী ডিবাগিং পরিবেশের প্রয়োজন হবে। আমি একটি উপযুক্ত উপায়ে ESP8266 কন্ট্রোলার ডিবাগ করার কোন উপায় জানি না। তাই আমি আমার পিসিতে পুরো কোডটি অনুকরণ করার সিদ্ধান্ত নিয়েছি। ESP কোডটি Arduino C ++ এ লেখা, তাই আমি পিসিতে সিমুলেশনের জন্য ভিজ্যুয়াল স্টুডিও C ++/CLI ভাষা ব্যবহার করেছি। স্ট্যান্ডার্ড C ++ এবং C ++/CLI ভাষার মধ্যে কিছু পার্থক্য আছে। উদাহরণস্বরূপ C ++/CLI তে আপনি স্ট্রিং টাইপের একটি বস্তু তৈরি করতে পারবেন না, আবর্জনা সংগ্রহের কারণে এটি এমন বস্তুর জন্য একটি বস্তু বা রেফারেন্স/পয়েন্টার তৈরি করার অনুমতি নেই। C ++/CLI এ আপনাকে হ্যান্ডেলগুলি ব্যবহার করতে হবে: স্ট্রিং। কিন্তু এই ধরনের হ্যান্ডলগুলি C ++ স্ট্যান্ডার্ডে বিদ্যমান নেই। তাই উভয় জগৎকে একত্রিত করার জন্য আমাকে সৃজনশীল হতে হয়েছিল। আমি সিমুলেশনের জন্য একটি নিজস্ব Arduino.h ফাইল তৈরি করে এটি সমাধান করেছি। এই ফাইলটি সিমুলেশনে সমস্ত স্ট্রিংগুলিকে একটি সংজ্ঞা "#define String String^" এর মাধ্যমে ওভাররাইড করে। এটি একটি সাধারণ উপায় নয়, তবে এটি কাজ করে:) কিছু ছোট কম্পাইলার স্যুইচ ব্যতীত সমস্ত ESP কোড ভিসুয়াল স্টুডিও C ++/CLI- তে কম্পাইলযোগ্য।

এলইডি ম্যাট্রিক্স

আমার লেখা প্রথম ক্লাস হল LED-Matrix ক্লাস। এই শ্রেণী WS2812 LEDs এর নিয়ন্ত্রণ এবং ম্যাপিং পরিচালনা করে।

এই ক্লাসটি দুইবার লেখা হয়েছিল: একবার ESP8266 কন্ট্রোলারের জন্য (LEDMatrixArduino.cpp) এবং অন্য একটি যা সিমুলেশন (LEDMatrixGUI.cpp) ফর্ম GUI- এ আকার নিয়ন্ত্রণ করবে।

এই শ্রেণীটি তার কলাম এবং সারি দ্বারা একটি পৃথক LED সেট এবং ক্লিয়ার করার জন্য কিছু মৌলিক পদ্ধতি প্রদান করে।

উপরন্তু এটি একটি setBrightness ফাংশন প্রদান করে। একটি LED সেট করা হলে এই মান বিবেচনা করা হবে। সুতরাং সমস্ত LED- সেট কমান্ড সম্পূর্ণ উজ্জ্বলতার সাথে করা যেতে পারে। উদাহরণস্বরূপ: যদি উজ্জ্বলতা 50% সেট করা হয় এবং setLed () ফাংশনটি RGBColor (255, 255, 255) দিয়ে বলা হয় তবে এটি LED কে 127, 127, 127 এ সেট করবে।

LED প্যানেল

এলইডি ম্যাট্রিক্স ক্লাসের উপরে আমি একটি এলইডি প্যানেল ক্লাস রেখেছি। এই ক্লাসটি যেকোনো অ্যাপ্লিকেশনের জন্য কিছু দরকারী কার্যকারিতা প্রদান করে। এটি দুটি স্বতন্ত্র স্তর সরবরাহ করে। এটি অ্যাপ্লিকেশনের জন্য সহায়ক হতে পারে। উদাহরণস্বরূপ টেট্রিস গেমের জন্য: লেয়ার 0 নীচের স্থির পাথরের জন্য এবং লেয়ার 1 হল পতনশীল পাথর প্রদর্শন করা। সুতরাং প্রতিটি চক্র পাথরটি এক পিক্সেল নীচে পড়ে, অ্যাপ্লিকেশনটি কেবল স্তর 1 পরিষ্কার করতে পারে এবং পাথরটিকে তার নতুন অবস্থানে আঁকতে পারে। নীচে সমস্ত স্থির পাথরগুলি পুনরায় আঁকতে এটি প্রয়োজনীয় নয়।

অতিরিক্তভাবে প্যানেল প্রদান করে

printImage - স্মাইলি বা WLAN প্রতীক প্রিন্ট ডিজিটের মতো কিছু আইকন প্রিন্ট করার জন্য - একটি নির্দিষ্ট অবস্থানে একটি অংক মুদ্রণ করার জন্য প্রিন্ট ফরম্যাটেড নম্বর - উপসর্গ জিরোসপ্রিন্ট নাম্বার দিয়ে একটি সংখ্যা প্রিন্ট করার জন্য - একটি পূর্ণসংখ্যা সংখ্যা প্রিন্টলাইনএইচ - নির্দিষ্ট দৈর্ঘ্যের প্রিন্টলাইনভের সাথে অনুভূমিক রেখা - নির্দিষ্ট দৈর্ঘ্যের সাথে অনুভূমিক রেখা

ধাপ 4: সফ্টওয়্যার - অ্যাপ্লিকেশন ধারণা

সফ্টওয়্যার - অ্যাপ্লিকেশন ধারণা
সফ্টওয়্যার - অ্যাপ্লিকেশন ধারণা

পিক্সেল ওয়ালের জন্য সাধারণ ধারণা হল:

  • প্রতিটি অ্যাপ্লিকেশনের নিজস্ব নাম রয়েছে
  • অ্যাপ্লিকেশন নাম সহ পিক্সেলওয়াল ইউআরএল কল করে একটি অ্যাপ্লিকেশন শুরু হয় (উদাহরণস্বরূপ: 192.168.4.1/tetris)
  • URL- এ GET প্যারামিটারও থাকতে পারে যা অ্যাপ্লিকেশনে পাঠানো হবে
  • প্রতিটি অ্যাপ্লিকেশনকে একটি ওয়েবসাইট প্রদান করতে হবে যা ব্রাউজারে প্রদর্শিত হয়।
  • এই ওয়েবসাইট fastচ্ছিকভাবে দ্রুত মিথস্ক্রিয়া জন্য অ্যাপ্লিকেশন একটি websocket সংযোগ খুলতে পারে
  • অ্যাপ্লিকেশন এই ওয়েবসকেট সংযোগ ব্যবহার করে ওয়েব ফ্রন্টএন্ডে ফিরে যোগাযোগ করতে পারে।
  • ওয়েব ইন্টারফেসের পাশাপাশি অ্যাপ্লিকেশনটি কন্ট্রোল প্যানেল এবং এনইএস কন্ট্রোলার থেকে অতিরিক্ত পুশ বাটন ইভেন্ট পায়।

অ্যাপ্লিকেশন ইন্টারফেস

পিক্সেলওয়ালের জন্য নতুন অ্যাপ্লিকেশন বিকাশ করা সহজ করার জন্য, আমি "IPixelApp.h" নামে অ্যাপ্লিকেশনগুলির জন্য একটি ইন্টারফেস তৈরি করেছি। এই ইন্টারফেসে 8 টি সংজ্ঞা রয়েছে:

  • ভার্চুয়াল অকার্যকর শুরু () = 0;
  • ভার্চুয়াল অকার্যকর শেষ () = 0;
  • ভার্চুয়াল অকার্যকর লুপ () = 0;
  • ভার্চুয়াল অকার্যকর newWebsocketData (uint8_t * পেলোড, size_t দৈর্ঘ্য) = 0;
  • ভার্চুয়াল WebsiteResponse_t getWebsiteResponse (স্ট্রিং প্যারামিটার) = 0;
  • ভার্চুয়াল অকার্যকর buttonEvent () = 0;
  • ভার্চুয়াল অকার্যকর টাইমার টিক () = 0;
  • ভার্চুয়াল স্ট্রিং getName () = 0;

শুরু / শেষ - এই ফাংশনটিকে বলা হয় যদি অ্যাপ্লিকেশনটি শুরু / শেষ হয় কারণ অন্য একটি অ্যাপ্লিকেশন শুরু হয়

লুপ - এই ফাংশনটি মূল প্রোগ্রামের প্রধান লুপ থেকে বলা হয়। এই কলটি অনিয়মিত এবং একটি বিঘ্নের বাইরে।

newWebsocketData - ওয়েব ফ্রন্টএন্ড ডেটা পাঠালে এই ফাংশন বলা হয়।

getWebsiteResponse - এটি প্রধান প্রোগ্রামার দ্বারা ওয়েবপৃষ্ঠাটি পেতে ব্যবহার করা হয় যা অনুরোধের প্রতি প্রতিক্রিয়াশীল হওয়া উচিত।

buttonEvent - এটাকে বলা হয় যদি কন্ট্রোল প্যানেলে কোনো বাটন চাপলে বা ছেড়ে দেওয়া হতো।

timerTick - এই ফাংশনটি প্রতিটি 10ms বলা হয়, একটি টাইমার ইন্টারাপ্ট দ্বারা ট্রিগার হয়। এটি সময় ভিত্তিক জন্য ব্যবহার করা যেতে পারে কিন্তু কোন সময় নিবিড় জিনিস থাকতে হবে না, কারণ এটি একটি বিঘ্নিত প্রসঙ্গ।

getName - এটি URL এর জন্য আবেদনের নামটি ফেরত দিতে হবে

ধাপ 5: সফ্টওয়্যার - অ্যাপ্লিকেশন

সফটওয়্যার - অ্যাপ্লিকেশন
সফটওয়্যার - অ্যাপ্লিকেশন
সফটওয়্যার - অ্যাপ্লিকেশন
সফটওয়্যার - অ্যাপ্লিকেশন
সফটওয়্যার - অ্যাপ্লিকেশন
সফটওয়্যার - অ্যাপ্লিকেশন
সফটওয়্যার - অ্যাপ্লিকেশন
সফটওয়্যার - অ্যাপ্লিকেশন

বর্তমান সংস্করণে নিম্নলিখিত 7 টি অ্যাপ্লিকেশন প্রয়োগ করা হয়েছে:

ডিফল্ট অ্যাপ

এটি একটি বিশেষ অ্যাপ যা পিক্সেলওয়ালের বর্তমান WLAN অবস্থা প্রদর্শন করে। যদি প্রাচীরটি বর্তমান WLAN- এর সাথে সংযোগ স্থাপন করতে পারে, তাহলে এটি নেটওয়ার্ক থেকে পাওয়া IP ঠিকানা প্রদর্শন করবে।

যদি এটি সম্ভব না হয় (কোন ssid সেটআপ করা নেই বা WLAN উপস্থিত নেই বা পাসওয়ার্ড ভুল) এটি একটি অ্যাক্সেসপয়েন্ট খুলবে। এই ক্ষেত্রে আপনি ESP8266: 192.168.4.1 থেকে ডিফল্ট অ্যাক্সেসপয়েন্ট আইপি এর মাধ্যমে পিক্সেলওয়ালের সাথে সংযোগ করতে পারেন

ওয়েব ইন্টারফেসে এই অ্যাপটি 6 টি বাটন উপস্থাপন করে। বোতাম টিপে আপনি উপযুক্ত অ্যাপ্লিকেশন শুরু করতে পারেন।

সেটিংস অ্যাপ

WLAN SSID এবং পাসওয়ার্ড সেটআপ করার জন্য এই অ্যাপ। শুধু আপনার WLAN এর শংসাপত্র সন্নিবেশ করান এবং PixelWill এর পরবর্তী প্রারম্ভে এটি এই WLAN এর সাথে সংযোগ স্থাপনের চেষ্টা করবে।

গেমস

পিক্সেলওয়ালে প্রোগ্রাম করা তিনটি ক্লাসিক গেম রয়েছে:

  • টেট্রিস
  • সাপ
  • মহাকাশ আক্রমণকারী

সমস্ত গেম ওয়েব ইন্টারফেসের মাধ্যমে বা NES নিয়ামকের সাথে খেলা যায়।

ইমেজ অ্যাপ

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

পিক্সেল ইট

এই অ্যাপের সাহায্যে আপনি ওয়েবইনটারফেসে আপনার আঙুল দিয়ে আলতো চাপ দিয়ে প্রতিটি পিক্সেল আলাদাভাবে সেট করতে পারেন। তাই আপনি কিছু কৌতুকপূর্ণ ছবি আঁকতে পারেন:)

ধাপ 6: টুইচ এক্সটেনশনের মাধ্যমে নিয়ন্ত্রণ করুন

টুইচ এক্সটেনশনের মাধ্যমে নিয়ন্ত্রণ করুন
টুইচ এক্সটেনশনের মাধ্যমে নিয়ন্ত্রণ করুন

GetInTouch নামে Twitch এ একটি এক্সটেনশন আছে। এই এক্সটেনশনটি Arduino প্রকল্পগুলিকে আপনার লাইভস্ট্রিমে সংহত করার অনুমতি দেয়, যাতে দর্শকরা স্ট্রিমিংয়ের সময় আপনার arduino নিয়ন্ত্রণ করতে পারে।

এই জন্য Arduino লাইব্রেরি Arduinos জন্য লেখা হয়। কিন্তু এটি প্রমাণিত হয়েছে যে এটি ESP8266 তেও চালিত হয়।

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

  • GetInTouch লাইব্রেরিকে কোডে সংহত করুন (টিউটোরিয়াল দেখুন)
  • USB/RS232 কনভার্টারের মাধ্যমে আপনার পিসির সাথে পিক্সেলওয়াল সংযুক্ত করুন (যা ESP ঝলকানোর জন্যও ব্যবহৃত হয়)
  • ওয়েবসাইট থেকে GetInTouch অ্যাপ্লিকেশন ইনস্টল করুন
  • আপনার টুইচ চ্যানেলে GetInTouch এক্সটেনশন ইনস্টল করুন (টিউটোরিয়াল দেখুন)

ধাপ 7: নিন্টেন্ডো এনইএস কন্ট্রোলার দ্বারা নিয়ন্ত্রণ

Nintendo NES কন্ট্রোলার দ্বারা নিয়ন্ত্রণ
Nintendo NES কন্ট্রোলার দ্বারা নিয়ন্ত্রণ

কিছুক্ষণ ব্যবহারের পর দেখা গেল, মোবাইল ফোনে খেলা এত সহজ নয়। সময়ে সময়ে আপনি বোতামগুলি মিস করেন কারণ আপনি আপনার আঙুলের উপর কোন প্রতিক্রিয়া নেই কিনা তা আপনি বোতামটির উপরে বা না। অতিরিক্তভাবে কখনও কখনও ওয়েবসকেট যোগাযোগ অল্প সময়ের জন্য লিক হতে পারে।

এজন্য আমি একটি পুরানো নিন্টেন্ডো এনইএস কন্ট্রোলার কেনার সিদ্ধান্ত নিয়েছি। এই নিয়ামকটির একটি খুব সহজ ইন্টারফেস রয়েছে। এটি মাত্র 4021 শিফট রেজিস্টার যা 3, 3V দিয়ে চলে। সুতরাং এটি সরাসরি ESP8266 এর সাথে সংযুক্ত হতে পারে।

কন্ট্রোলারের সমস্ত বাটন ইভেন্ট যেখানে বাটন ইভেন্ট () ফাংশনের মাধ্যমে চলমান অ্যাপ্লিকেশনে ফরওয়ার্ড করা হয়।

প্রস্তাবিত: