সুচিপত্র:

IOT সক্রিয় সহ 1 মিটার POV: 3 টি ধাপ (ছবি সহ)
IOT সক্রিয় সহ 1 মিটার POV: 3 টি ধাপ (ছবি সহ)

ভিডিও: IOT সক্রিয় সহ 1 মিটার POV: 3 টি ধাপ (ছবি সহ)

ভিডিও: IOT সক্রিয় সহ 1 মিটার POV: 3 টি ধাপ (ছবি সহ)
ভিডিও: 3000+ Portuguese Words with Pronunciation 2024, নভেম্বর
Anonim
Image
Image
IOT সক্রিয় সহ 1 মিটার POV
IOT সক্রিয় সহ 1 মিটার POV
IOT সক্রিয় সহ 1 মিটার POV
IOT সক্রিয় সহ 1 মিটার POV
IOT সক্রিয় সহ 1 মিটার POV
IOT সক্রিয় সহ 1 মিটার POV

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

পিওভি কি

POV দৃষ্টিভঙ্গির দৃ Pers়তার জন্য দৃist়তা যা মানুষের দৃষ্টিভঙ্গির সাথে সম্পর্কিত। হালকা উদ্দীপনা একটি সেকেন্ডের প্রায় 1/10 জন্য রেটিনা উপর একটি aftereffect হিসাবে lingers। যখন হালকা উত্তেজনাগুলি ক্রমাগত ধারাবাহিকভাবে ক্রমবর্ধমান হয়, তখন তারা একটি অবিচ্ছিন্ন চিত্রের সাথে মিশে যায়। আসলে এটি চলচ্চিত্র এবং টেলিভিশন ডিভাইসের ভিত্তি, POV এই ধরনের বিভ্রম তৈরি করে (আমাদের প্রতারিত করে) এবং একটি একক বিন্দু বা অক্ষের চারপাশে LED লাইটের অ্যারে ঘোরানোর মাধ্যমে ছবি তৈরি করে

প্রকল্প উদ্ভাবন কি

নি courseসন্দেহে পিওভি নতুন ধারণা নয় এবং ইন্সট্রাকটেবল বা অন্যান্য সাইটে প্রচুর প্রকল্প ইতিমধ্যেই বিদ্যমান, তবে সেই প্রকল্পগুলি বেশিরভাগই প্রিসেট স্ট্যাটিক মন্দির বা ইমেজ ব্যবহার করে যা বেশিরভাগ এমসিইউ মেমোরি বা এসডি কার্ড থেকে পড়া হয়, কিন্তু এই প্রকল্পে আমরা সুন্দর বৈশিষ্ট্যগুলি ব্যবহার করি IOT সক্রিয় চিপ যেমন ESP8266 এই বিষয়ে।

এই আইওটি বৈশিষ্ট্যগুলির সাথে আমরা

  1. সহজেই মেমরিতে ওয়্যারলেসভাবে নতুন ছবি আপলোড করতে পারে
  2. কোন ক্রম বা কোন সময়কালের সাথে ইমেজ শো এর কাঙ্ক্ষিত দৃশ্যকল্প তৈরি করুন
  3. চিপটি পুনরায় প্রোগ্রাম করার বা মেমরি কার্ডটি আনপ্লাগ করার এবং নতুন অ্যানিমেশনের জন্য এটি পুনরায় প্লাগ করার দরকার নেই
  4. ব্যবহারকারী বান্ধব IOT ওয়েবহোস্ট প্রত্যেকের জন্য মোবাইল বা ট্যাবলেট দিয়ে POV পরিচালনা করা সহজ করে তোলে
  5. 30 টিরও বেশি বিভিন্ন ছবির ধারণক্ষমতার সাথে খুব কম খরচে হার্ডওয়্যার বাস্তবায়ন

POV কিভাবে কাজ করে

POV ডিসপ্লে, LED লাইটের একটি রৈখিক (1-মাত্রিক) অ্যারে সাইকেল চাকার মত একটি একক বিন্দুর চারদিকে ঘোরে। তাদের ঘূর্ণন হার পরিমাপ করে এবং মিলিসেকেন্ড নির্ভুলতার সাথে তাদের ঝলক নিয়ন্ত্রণ করে, আমরা পাতলা বাতাসে থাকা 2or 3-মাত্রিক চিত্রের বিভ্রম তৈরি করতে পারি। আসুন কোন প্রভাবের একক ফ্রেম (চিত্র, পাঠ্য, …) বিবেচনা করি, প্রতিটি ফ্রেমে অনেকগুলি পিক্সেল থাকে এবং অতএব সমতল বা গোলাকার অঞ্চলে অনেকগুলি লাইন, POV এই চিত্রটি চিত্রের একক রেখার সাথে প্রদর্শন করে যা অবস্থানের পরিবর্তনের সাথে তার ঘূর্ণন পূরণ করে সেই চিত্রটি, তাই সমস্যা হল কিভাবে সময় এবং স্থান অনুসারে LED পিক্সেল রঙকে সঠিকভাবে নিয়ন্ত্রণ করতে হয় যাতে এটি সম্পূর্ণ চিত্র তৈরি করতে পারে POV ঘূর্ণন অক্ষের ভিত্তিতে শ্রেণিবদ্ধ করা হয়, প্রভাবের ধরন প্রদর্শন করতে পারে এবং কত রঙ তৈরি করতে পারে।

ঘূর্ণনের বিভিন্ন অক্ষ দ্বারা, প্ল্যানার, নলাকার এবং গোলাকার POV ডিসপ্লে তৈরি করতে পারে

অনেক POV প্রজেক্ট WS2812 বা APA104 এর মত সাধারণ একক রঙের LED বা উচ্চ গতির স্মার্ট পিক্সেল ব্যবহার করে এবং এই প্রকল্পে আমরা প্রায় 16 MHz রিফ্রেশ রেটের সাথে দ্রুত LED চিপ রিফ্রেশার APA102 ব্যবহার করি। এই LED চিপের নিয়ন্ত্রণের জন্য 2 টি লাইন আছে (গ্রাউন্ড, ডেটা, ক্লক, +5 ভি)

ধাপ 1: কিভাবে POV তৈরি করবেন

কিভাবে POV তৈরি করবেন
কিভাবে POV তৈরি করবেন
কিভাবে POV তৈরি করবেন
কিভাবে POV তৈরি করবেন
কিভাবে POV তৈরি করবেন
কিভাবে POV তৈরি করবেন

প্রথমে আমি POV হাব মাউন্ট করার জন্য কাঠামোর প্রয়োজন, ধাতু বা অ ধাতব কাঠামো তৈরি করা আপনার হাতে কি আছে তার উপর নির্ভর করে। আপনি এটি প্রাচীরের উপর ইনস্টল করার জন্য যে কোনও উপলব্ধ সামগ্রী দিয়ে তৈরি করতে পারেন বা স্ট্যান্ড করতে পা যোগ করতে পারেন। আমার বন্ধু সহজ ট্রাইপড তৈরি করে এবং 500 এর কাছাকাছি ডিসি মোটর RPM কমাতে টাইমিং বেল্ট মেকানিজম মাউন্ট করে। প্রতি সেকেন্ডে, যেহেতু আমার পিওভিতে 1 টি তির্যক LED স্ট্রিপ রয়েছে, তাই প্রতিটি ফ্রেম অর্ধেক বা ঘূর্ণন সম্পন্ন, অন্য কথায় আমাদের আদর্শ হাব RPM এর প্রয়োজন 600 এর কাছাকাছি এবং এই RPM দিয়ে প্রতিটি বিপ্লব প্রায় 100 ms নেয়। নিম্নোক্ত সমীকরণটি ধারণাটি প্রদর্শন করে যে RPM = (fps/Nb)*60 যা Nb শাখার সংখ্যার সমান, এবং এই ক্ষেত্রে আমাদের RPM = (20/2)*60 = 600my POV 430 rpm এর কাছাকাছি ঘুরছে এভাবে আমার fps প্রায় 15 fsp যা এই বিষয়ে মোটামুটি ভাল। যান্ত্রিক অংশ নির্মাণ

পরবর্তী ধাপে আমি LED বারটি ধরে রাখার জন্য পিভিসি সিলিন্ডারের টুকরো ব্যবহার করেছি। পুলি শ্যাফ্টের সাথে হাব সংযোগ করার জন্য PCV অংশের পিছনে একটি M10 বোল্ট করা হয়েছে 12V ডিসি মোটরের সাথে সংযুক্ত টাইম ট্রান্সমিশন সিস্টেমের প্রতিটি অংশের নিজস্ব বিদ্যুৎ সরবরাহ রয়েছে এবং পায়ে সংযুক্ত সাদা বাক্সে আবদ্ধ

ধাপ 2: সফ্টওয়্যার বাস্তবায়ন পর্ব 1

সফটওয়্যার বাস্তবায়ন পর্ব 1
সফটওয়্যার বাস্তবায়ন পর্ব 1

LED স্ট্রিপে প্রদত্ত ছবিটি প্রদর্শন করার জন্য, প্রতিটি ছবি পিক্সেলাইজ করা উচিত তারপর MCU মেমরিতে আপলোড করা উচিত এবং তারপর লাইন দ্বারা LED স্ট্রিপ লাইনে খাওয়ানো উচিত, এটি করার জন্য আমি দুটি ভিন্ন প্ল্যাটফর্মের জন্য সফটওয়্যার তৈরি করেছি, একটি জাভা রানটাইম প্রসেসিংয়ের ভিত্তি এমসিইউ প্রসেসিং পিক্সেলাইজড প্রোগ্রামের জন্য C ++ এ অন্যান্য এবং এই প্রোগ্রামটি প্রসেসিং IDE তে লেখা এবং এটি কেবল ইমেজ ফাইলটি খুলবে, তারপর ইমেজের পিক্সেলাইজড লাইন বের করার জন্য এটি ধাপে ঘোরান। আমি যেকোনো ছবি প্রদর্শনের জন্য 200 লাইন বেছে নিই, তাই আমি ছবিটি ঘোরান (360 /200=1.8 ডিগ্রী) 200 লাইন বের করতে 200 বার। যেহেতু আমার এলইডি স্ট্রিপটিতে 144 এলইডি এমবেডেড APA102 চিপের সমন্বয়ে রয়েছে তাই এইভাবে একটি সম্পূর্ণ ছবিতে 200*144 = 28800 পিক্সেল থাকে। APA102 চিপের প্রতিটি রঙ 4 বাইট (W, RGB) সহ প্রদর্শিত হয় তাই প্রতিটি ছবির আকার ঠিক 200*144*4 = 115200 বা 112.5KB এর পরে প্রসেসিং কোড ইমেজ পিক্সেলাইজেশনের ক্রম প্রদর্শন করে এবং ফলাফলটি একটি বিন এক্সটেনশন ফাইল হবে যা MCU মেমরিতে আপলোড করা হবে

PImage img, black_b, image_load; PrintWriter আউটপুট; int SQL; ভাসমান led_t; বাইট pov_data; int line_num = 200; স্ট্রিং _OUTPUT = "";

অকার্যকর সেটিংস ()

{selectInput ("একটি ছবি নির্বাচন করুন", "imageChosen"); noLoop (); অপেক্ষা করুন (); }

অকার্যকর সেটআপ()

{আউটপুট = createWriter (_OUTPUT); black_b = createImage (SQL, SQL, RGB); black_b.loadPixels (); জন্য (int i = 0; i = line_num) {noLoop (); output.flush (); output.close ();} background (black_b); pushMatrix (); ইমেজ মোড (সেন্টার); অনুবাদ করুন (SQL/2, SQL/2); ঘোরান (রেডিয়ান (l*360/line_num)); ছবি (img, 0, 0); popMatrix (); pushMatrix (); জন্য (int i = 0; i <144; i ++) {color c = get (int (i*led_t+led_t/2), int (SQL/2)); output.print ((char) red (c)+""+(char) green (c)+""+(char) blue (c)); // মুদ্রণ ((চর) লাল (গ)+""+(চর) সবুজ (গ)+""+(চর) নীল (গ)+";"); পূরণ (গ); রেকট (i*led_t, (SQL/2)-(led_t/2), led_t, led_t); } // println (); popMatrix (); // বিলম্ব (500); l ++; }

অকার্যকর চাপা ()

{output.flush (); // অবশিষ্ট ডেটা ফাইল আউটপুট.ক্লোজ () লিখুন; // ফাইল প্রস্থান শেষ (); // প্রোগ্রাম বন্ধ করে দেয়}

অকার্যকর ছবি চয়ন (ফাইল এফ)

{if (f == null) {println ("উইন্ডো বন্ধ ছিল বা ব্যবহারকারী হিট বাতিল।"); প্রস্থান (); } অন্য {যদি (f.exists ()) img = loadImage (f.getAbsolutePath ()); স্ট্রিং s = f.getAbsolutePath (); স্ট্রিং তালিকা = বিভক্ত (গুলি, '\'); int n = list.length; স্ট্রিং fle = বিভক্ত (তালিকা [n-1], '।'); println ("ফাইল খুলুন:"+fle [0]); _OUTPUT = fle [0]+"। Bin"; // img = loadImage ("test.jpg"); int w = img.width; int h = img.height; SQL = সর্বোচ্চ (w, h); আকার (এসকিউএল, এসকিউএল); led_t = SQL/144.0; println ("h ="+h+"w ="+w+"max ="+SQL+"size led ="+led_t); }} অকার্যকর মাউসপ্রেসড () {লুপ ();}

অকার্যকর ডেটা ()

{বাইট b = loadBytes ("something.dat"); // প্রতিটি মান মুদ্রণ করুন, 0 থেকে 255 পর্যন্ত (int i = 0; i <b.length; i ++) {// প্রতি দশম সংখ্যা, একটি নতুন লাইন শুরু করুন যদি ((i % 10) == 0) println (); // বাইট -128 থেকে 127 পর্যন্ত, এটি 0 থেকে 255 int a = b & 0xff এ রূপান্তরিত হয়; মুদ্রণ (a + ""); } println (); // saveBytes ("numbers.dat", b) এর শেষে একটি ফাঁকা লাইন মুদ্রণ করুন; } অকার্যকর অপেক্ষা () {যখন (img == নাল) {বিলম্ব (200); } লুপ(); }

ধাপ 3: সফ্টওয়্যার বাস্তবায়ন অংশ 2

Image
Image
সফ্টওয়্যার বাস্তবায়ন অংশ 2
সফ্টওয়্যার বাস্তবায়ন অংশ 2
সফ্টওয়্যার বাস্তবায়ন অংশ 2
সফ্টওয়্যার বাস্তবায়ন অংশ 2

এমসিইউ ডিসপ্লে প্রোগ্রাম

উচ্চ কর্মক্ষমতা ESP8266 চিপটি কয়েকটি কারণে নির্বাচিত হয়েছে, প্রথমে এটি ব্যবহারকারীর জন্য একটি ওয়েব-সার্ভার হোস্টিং করার সাথে সাথে মেমরির পাশাপাশি ওয়াইফাই বৈশিষ্ট্যগুলির সুবিধা নেওয়ার জন্য ওপেন এসডিকে সরঞ্জামগুলি ভালভাবে বিকাশ করেছে। এই ক্ষমতার সাথে, ব্যবহারকারী বান্ধব ওয়েব-সার্ভারটি পিক্সেলাইজড ইমেজটি এমসিইউ মেমোরিতে আপলোড করার জন্য এবং ব্যবহারকারীর সংজ্ঞায়িত দৃশ্য তৈরি করার জন্য ডিজাইন করা হয়েছে। 4 Mb ESP-12E সিরিজের সাহায্যে আমরা প্রোগ্রামের জন্য 1 Mb এবং ছবির জন্য 3 Mb ব্যবহার করতে পারি যা পিক্সেলাইজড ইমেজের জন্য 112.5KB সাইজের আমরা MCU তে মোটামুটি 25 টি ছবি আপলোড করতে পারি এবং আমি যে আপলোড করা ইমেজ ব্যবহার করি তার জন্য কোন ক্রম বা কোন ডিসপ্লে পিরিয়ড করতে পারি। ওয়েব সার্ভার তৈরির জন্য Arduino কোড বেস বাস্তবায়ন। নিম্নোক্ত অনুসারে কোডটির লুপে তিনটি প্রধান কাজ রয়েছে

void loop () {if (! Show &&! TEST) server.handleClient (); if (SHOW) {if ((millis ()- OpenlastTime)> DURATION [image_index]*1000) {if (image_index> = IMAGE_NUM) image_index = 0; _memory_pointer = start_address_of_imagefile [image_index]; Serial.printf ("ফাইল নম্বর =%u নাম:%s ঠিকানা:%u সময়কাল:%u / n", image_index, IMAGES [image_index].c_str (), start_address_of_imagefile [image_index], DURATION [image_index]); Current_imageLine = 0; image_index ++; OpenlastTime = মিলিস (); } if ((micros ()-lastLineShow)> lineInterval) {lastLineShow = micros (); ESP.flashRead (_memory_pointer, (uint32_t *) leds, NUM_LEDS *3); FastLED.show (); _memory_pointer+= (NUM_LEDS*3); Current_imageLine ++; বিলম্ব (LineIntervalDelay); } যদি (Current_imageLine> = IMAGES_LINES) {Current_imageLine = 0; _memory_pointer = start_address_of_imagefile [image_index-1]; }} আশাবাদী_ফল (1000); }

সার্ভার হ্যান্ডলার server.handleClient (); ওয়েবহোস্টে কোন ক্লায়েন্টের অনুরোধ প্রক্রিয়া করার জন্য দায়ী, এই ওয়েবসাইটটি ডেটা আপলোড করার জন্য নির্বিচারে ডিজাইন করা যেতে পারে, যে কোনও রাষ্ট্রীয় প্রতিবেদনের শো সেটিং পরিবর্তন করতে পারে। আমার ওয়েবহোস্টটি তিনটি ট্যাব নিয়ে গঠিত প্রথম ট্যাবে নিম্নলিখিত চিত্রগুলি হিসাবে আমরা প্রতিটি ছবির ক্রম এবং সময়কাল সহ শোয়ের বর্তমান দৃশ্যপট, নেটওয়ার্ক তথ্য এবং পিওভি আরপিএম দেখানো হয়েছে

আপলোড ইমেজ ট্যাবে আমরা MCU মেমরিতে একটি পিক্সেলাইজড ছবি আপলোড করতে পারি অথবা নির্দিষ্ট ছবি মুছে ফেলতে পারি

নেটওয়ার্ক ট্যাবে আমরা নেটওয়ার্ক সেটিং পরিবর্তন করতে পারি যেমন ওয়াইফাই মোড, স্ট্যাটিক আইপি, নেটওয়ার্ক নাম এবং পাস,..

চিত্র আপ-লোডার

এই ফাংশন সার্ভার ক্লায়েন্টকে এজাক্স অনুরোধ করে এমসিইউ মেমরিতে পিক্সেলাইজড ইমেজ আপলোড করার জন্য, তারপর ফাইলটিকে মেমরিতে কাঁচা ফরম্যাটে লিখুন যাতে ফাইলটি যত দ্রুত সম্ভব পড়া যায়। এলইডি স্ট্রিপে প্রদর্শনের জন্য টেবিলে মেমরি স্টার্ট এবং এন্ড লোকেশন স্টোর

ডিসপ্লে ফাংশন

আমি LED স্ট্রিপে পিক্সেল দেখানোর জন্য FastLED lib ব্যবহার করেছি, এই লাইব্রেরিটি AVR এবং ESP প্ল্যাটফর্মে LED শো এর জন্য সবচেয়ে সফল এবং উন্নত। এটি শুধুমাত্র FastLED ফাংশন পাঠানো প্রয়োজন, সঞ্চিত LED পিক্সেলের অবস্থান। আমরা মেমরি থেকে লাইন বাই লাইন পিক্সেল পড়ি এবং LED স্ট্রিপে দেখাই এবং নতুন ঘূর্ণন পতাকা সত্য হওয়ার জন্য অপেক্ষা করি। প্রতিটি ছবির 200 লাইন না পড়া পর্যন্ত আমরা এই ক্রমটি পুনরাবৃত্তি করেছি

আমার গিট রিপোজিটরিতে অবস্থিত পুরো কোডটি এখানে

নিম্নলিখিত POV এর ভিডিওটি অ্যাকশনে রয়েছে যা মোবাইল ক্যামেরা দ্বারা রেকর্ড করা হয়েছে এবং যেমন আমি ব্যাখ্যা করেছি, অব্যবসায়ী ক্যামেরার ধীর ডায়াফ্রাম গতির কারণে ভিডিওর মান ভাল নয়

প্রস্তাবিত: