সুচিপত্র:

ব্লুটুথ লো এনার্জি সহ LED POVstick: 10 টি ধাপ (ছবি সহ)
ব্লুটুথ লো এনার্জি সহ LED POVstick: 10 টি ধাপ (ছবি সহ)

ভিডিও: ব্লুটুথ লো এনার্জি সহ LED POVstick: 10 টি ধাপ (ছবি সহ)

ভিডিও: ব্লুটুথ লো এনার্জি সহ LED POVstick: 10 টি ধাপ (ছবি সহ)
ভিডিও: চার্জিং সিস্টেম ডিভাইস তৈরি।How To Make battery Charging Modular 2024, নভেম্বর
Anonim
ব্লুটুথ লো এনার্জি সহ LED POVstick
ব্লুটুথ লো এনার্জি সহ LED POVstick

এই নির্দেশাবলী আপনাকে দেখায় কিভাবে আরজিবি এলইডি দিয়ে একটি লাইটারাইটার স্টিক তৈরি করবেন যা আপনার ফোন থেকে BLE এর মাধ্যমে নিয়ন্ত্রণযোগ্য!

এখন যেহেতু অন্ধকার মৌসুম শুরু হয়েছে এবং আপনাকে দীর্ঘ এক্সপোজার ছবি তুলতে হবে: এই লাঠি দিয়ে আপনি ছবিতে আপনার স্বাক্ষর লিখতে পারেন, অথবা একটি প্রেরণামূলক উদ্ধৃতি, অথবা প্রেমের ঘোষণা, একটি কিউআর-কোড, একটি ওয়েব-অ্যাড্রেস, অথবা অনেক অন্য কিছু…

এটি উন্নয়নের বিভিন্ন বিষয় জুড়ে:

  • হার্ডওয়্যার নির্মাণ
  • C দিয়ে Cypress BLE চিপসেট প্রোগ্রামিং
  • এটি নিয়ন্ত্রণ করতে আপনার নিজের অ্যাপ তৈরি করুন।

ধাপ 1: BLE-LED-Stick এর জন্য হার্ডওয়্যার

BLE-LED-Stick এর জন্য হার্ডওয়্যার
BLE-LED-Stick এর জন্য হার্ডওয়্যার
BLE-LED-Stick এর জন্য হার্ডওয়্যার
BLE-LED-Stick এর জন্য হার্ডওয়্যার
BLE-LED-Stick এর জন্য হার্ডওয়্যার
BLE-LED-Stick এর জন্য হার্ডওয়্যার
BLE-LED-Stick এর জন্য হার্ডওয়্যার
BLE-LED-Stick এর জন্য হার্ডওয়্যার

লাঠি জন্য আপনি নিম্নলিখিত প্রয়োজন:

  • একটি সাইপ্রাস BLE মডিউল (CY8C4247LQI-BL583)
  • একটি WS2812b RGB-LED-Strip (14LEDs থেকে 144Led per meter strip)
  • একটি উপযুক্ত ধারক সহ একটি লি-আয়ন ব্যাটারি (18650)
  • একটি pushbutton
  • রুটিবোর্ডের একটি টুকরা

লাঠি নিজেই হার্ডওয়্যার বেশ সহজ।

সাইপ্রাস বিএলই মডিউলটি রুটিবোর্ডের একটি অংশে লাগানো হয়েছে এবং এলইডি, বোতাম এবং বিদ্যুৎ সরবরাহ কেবল এই রুটিবোর্ডের সাথে সংযুক্ত।

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

ধাপ 2: ইলেকট্রনিক্স সমাবেশ

ইলেকট্রনিক্স সমাবেশ
ইলেকট্রনিক্স সমাবেশ
ইলেকট্রনিক্স সমাবেশ
ইলেকট্রনিক্স সমাবেশ

এই ধাপটি আপনাকে দেখায় কিভাবে BLE- মডিউল মাউন্ট করা হয় এবং কোন পিন কোন উদ্দেশ্যে ব্যবহার করা হয়।

আমার বেশ কয়েকটি নির্দেশাবলীর মতো আমি সাইপ্রেস বিএলই ডেভেলপমেন্ট কিট ব্যবহার করেছি। CY8CKIT-042-BLE কুইক স্টার্ট গাইড

আপনি যদি মডিউলটি নিজে থেকে পরিচালনা করতে চান, তবে আপনাকে কেবল সংযোগের প্রয়োজন বিদ্যুতের উত্স এবং ব্যবহৃত পিনগুলি।

আমাদের প্রকল্পের জন্য আমরা LED-Strip চালানোর জন্য শুধুমাত্র 3.5 পিন ব্যবহার করি। তবে অবশ্যই আপনি PSoC নির্মাতার সাথে এটি পরিবর্তন করতে পারেন।

আপনি পিসিবির ছবিতে দেখতে পাচ্ছেন, আমি চিপের সব কোণে পিনহেড যুক্ত করেছি কিন্তু আমি ভিআরইএফ পিন বাদ দিয়েছি।

এইভাবে মডিউলটি সঠিকভাবে মাউন্ট করা হয়েছে এবং মডিউলটিকে ভুল সংযোগ করা অসম্ভব।

ধাপ 3: কিভাবে ফন্ট জেনারেট করবেন?

কিভাবে ফন্ট জেনারেট করবেন?
কিভাবে ফন্ট জেনারেট করবেন?

ঠিক আছে, আমি মনে করি এটি এই প্রকল্পের সময় আমি সমাধান করা সবচেয়ে আকর্ষণীয় সমস্যাগুলির মধ্যে একটি ছিল।

অবশ্যই কেউ একটি নতুন ফন্ট ডিজাইন করতে পারে এবং এটি একটি অ্যারেতে লিখতে পারে, কিন্তু এটি সত্যিই অনেক কাজ!

তাহলে আমি কি করলাম?

আমি জানতাম যে হেক্স-বিটম্যাপ রূপান্তরের জন্য আমার কোন ধরনের ASCII প্রয়োজন। এবং আমি ভাগ্যবান ছিলাম, কারণ এই সমস্যা নিয়ে আমি প্রথম ছিলাম না!:-)

"জিএলসিডি ফন্ট জেনারেটর" সফটওয়্যারটি সঠিক কাজ করেছে:

যেহেতু আমি LED স্টিক থেকে সর্বাধিক সুবিধা পেতে চেয়েছিলাম, তাই আমি ফন্টটি আমদানি করেছি বড় আকারের (~ 32 পিক্সেল)। আপনি যদি শুধুমাত্র বড় অক্ষর ব্যবহার করেন তবে আপনাকে আরোহীদের ব্যাপারে চিন্তা করতে হবে না, যা আপনার দৃশ্যমান ফন্ট-সাইজ আরও কয়েক পিক্সেল বাড়িয়ে দেবে। কিন্তু আমি ক্যাপিটাল এবং মাইনাসকুল উভয় অক্ষর ব্যবহার করা বেছে নিয়েছি। (https://en.wikipedia.org/wiki/Ascender_%28typography%29)

একবার আপনি জিএলসিডি ফন্ট জেনারেটরে একটি ফন্ট আমদানি করলে আপনি এটি বিভিন্ন ফরম্যাটে রপ্তানি করতে পারেন।

আমি এটি সরাসরি হেডারে রপ্তানি করার চেষ্টা করেছি যা ভাল ছিল, কিন্তু নিখুঁত নয়। ফলস্বরূপ রপ্তানি হল প্রথম 128-ascii অক্ষরের প্রতিটি চরিত্রের জন্য কলামের জন্য বাইট-হেক্স-মান সহ শর্টস (16 বিট) এর একটি অ্যারে। আমি যা চেয়েছিলাম বা প্রয়োজন ছিল তা নয় …

তাই আমি একটি খোলা অফিস ক্যালক ওয়ার্কশীটে অ্যারে আমদানি করেছি। তারপরে আমি চারটি মানের তিনটি থেকে "0x" সরিয়েছি এবং সেগুলিকে একটি 32 বিট লম্বা মানের সাথে সংযুক্ত করেছি। আমি পৃথক বাইটের ভুল endianess সংশোধন।

ফলে অ্যারে হল 32 বিট মানের একটি N*M অ্যারে। M হল সংশ্লিষ্ট চরিত্র এবং N হল সেই কলাম যা এই অক্ষরের প্রদর্শনী তৈরি করে। এই প্রথম খসড়ায় সমস্ত অক্ষরের সমান সংখ্যক কলাম রয়েছে, এর অর্থ হল সমস্ত অক্ষর সমানভাবে প্রশস্ত, যেমন সুপরিচিত কুরিয়ার ফন্টে। "I" বা "t" এর মতো ছোট অক্ষর দেখে মনে হচ্ছে তারা মহাকাশে হারিয়ে গেছে।

অতএব আমি প্রতিটি অক্ষরের শুরুতে একটি নতুন প্যারামিটার যোগ করেছি, এই চরিত্রটির কতগুলি কলাম আছে বা এই চরিত্রটি কতটা বিস্তৃত। এটি স্মৃতি সংরক্ষণ করে এবং পাঠ্যটিকে আরও সুন্দর করে তোলে!

ধাপ 4: BLE কন্ট্রোল সফটওয়্যার

BLE কন্ট্রোল সফটওয়্যার
BLE কন্ট্রোল সফটওয়্যার

BLE- সফটওয়্যারের নীতি খুবই সহজ:

  • শুরুতে এটি কিছুই করে না।
  • BLE এর মাধ্যমে আপনি বিভিন্ন অ্যানিমেশন বা টেক্সট প্রদর্শন করতে পারেন।
  • একবার আপনি বোতাম টিপলে, অ্যানিমেশন বা পাঠ্যের পৃথক কলামগুলি প্রদর্শিত হবে।
  • পাঠ্য প্রদর্শনের পর, এটি আবার অপেক্ষা করতে থাকে।

শুধু আপনার পিএসওসি-নির্মাতার কাছে সাইপ্রাস প্রকল্প আমদানি করুন এবং আপনি যদি চান তবে এটি সংশোধন করুন।

PSoC-4 তে ফন্টগুলির সম্পূর্ণ RGB- ছবি ধারণ করতে সক্ষম হওয়ার জন্য খুব বেশি RAM এবং ফ্ল্যাশ নেই। অতএব আমি টেক্সট থেকে গতিশীলভাবে LED- সামগ্রী তৈরি করার একটি উপায় প্রয়োজন। এটি বেশ সহজবোধ্য, এখন পর্যন্ত বিশেষ কিছু নেই। অনেকগুলি অক্ষর সহ একটি পাঠ্য থেকে, অ্যালগরিদম একটি অক্ষর নেয় এবং এটি একটি কালো-সাদা-বিটম্যাপ অ্যারে রূপান্তর করে। তারপরে এই এক-অক্ষর-বিটম্যাপের প্রতিটি কলাম লাগে এবং সাদার পরিবর্তে, এটি বর্তমান আরজিবি-রঙকে LED-অ্যারে লিখে দেয়। এইভাবে আপনি একক রঙের পাঠ্য তৈরি করতে পারেন বা অতিরিক্ত ফাংশন দ্বারা প্রতিটি কলাম, প্রতিটি অক্ষর বা এমনকি প্রতিটি পিক্সেলের পরেও রঙ পরিবর্তন করতে পারেন।

একটি "অক্ষর" একটি একক বাইট-ভেরিয়েবলে সংরক্ষণ করা যেতে পারে যখন একটি কালো এবং সাদা বিটম্যাপকে কোনো ধরনের অ্যারেতে সংরক্ষণ করা প্রয়োজন।

তথ্য-কাঠামো হল:

স্ট্রিং: newtext = "Hello";

ফন্ট: uint32 অক্ষর = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn,… SecondCharacter_ColumnCount, SecondCharacter_FirstColumn,… রঙ: uint32 rgbcolor = 0xHHBBGGRR; // উজ্জ্বলতা, নীল, সবুজ, লাল প্রতিটি 8bit মান হিসাবে

প্রদর্শনের জন্য একটি স্ট্রিং রূপান্তর করতে আমরা নিম্নলিখিতগুলি করি:

getCharacter (): H (8bit)

getColumn (int i): কলাম (32bit) (i প্রথম কলাম দিয়ে শুরু হয়, শেষ পর্যন্ত চলে।) এলইডি-স্ট্রিপ অ্যারে হল LED২ টি এলইডি যার প্রত্যেকটিতে bit২ বিটের রঙ রয়েছে!

এবং যদি এই কলামটি প্রদর্শিত হয় তবে আমরা পরেরটি দিয়ে চালিয়ে যাব।

এটা এত সহজ।

ধাপ 5: প্রথম পরীক্ষা

প্রথম টেস্ট
প্রথম টেস্ট
প্রথম টেস্ট
প্রথম টেস্ট
প্রথম টেস্ট
প্রথম টেস্ট

এখন যেহেতু সফটওয়্যারটি চলছে, আমরা প্রথম পরীক্ষার জন্য প্রস্তুত।

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

নর্ডিক: মোবাইলের জন্য nRF কানেক্ট

সাইপ্রাস: সাইসমার্ট

Pov-Stick শুরু করুন এবং দেখুন কিভাবে ডেমো-স্ট্রিং প্রদর্শিত হবে। একবার এটি শেষ হয়ে গেলে অ্যাপটি শুরু করার সময় এসেছে। Povstick ডিভাইসটি অনুসন্ধান করুন এবং সংযোগে ক্লিক করুন।

একবার সংযোগ স্থাপন হয়ে গেলে অ্যাপটি স্বয়ংক্রিয়ভাবে সমস্ত সংজ্ঞায়িত পরিষেবা এবং বৈশিষ্ট্য আবিষ্কার করে।

প্রথম পরিষেবাটি দেখুন (0000ccce দিয়ে শুরু করা উচিত …)। এটি খুলতে এটিতে ক্লিক করুন এবং প্রথম বৈশিষ্ট্য প্রদর্শন করুন (0000ccc1 দিয়ে শুরু)। তারপরে লিখুন (বা আপলোড) বোতামটি টিপুন এবং এই বৈশিষ্ট্যটিতে একটি 01 লিখুন।

একবার আপনি সেন্ড হিট করলে, POVstick কালার-নাইট-রাইডার অ্যানিমেশন ওরফে লারসন স্ক্যানার রং পরিবর্তন করে শুরু করবে।

BLE এর মাধ্যমে আপনি আপনার প্রথম মান পাঠিয়েছেন!

ধাপ 6: অ্যানিমেশন নির্বাচন করুন

অ্যানিমেশন নির্বাচন করুন
অ্যানিমেশন নির্বাচন করুন
অ্যানিমেশন নির্বাচন করুন
অ্যানিমেশন নির্বাচন করুন
অ্যানিমেশন নির্বাচন করুন
অ্যানিমেশন নির্বাচন করুন
অ্যানিমেশন নির্বাচন করুন
অ্যানিমেশন নির্বাচন করুন

সফ্টওয়্যারটিতে আমরা নিম্নলিখিত মানগুলির সাথে একটি enum "e_Animation" সংজ্ঞায়িত করেছি:

typedef enum {Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation}

এইগুলি হল সেই মানগুলি যা ccc1 বৈশিষ্ট্যের জন্য বৈধ। আপনি যদি CandyCane-Animation দেখতে চান তাহলে আপনাকে এই বৈশিষ্ট্যের জন্য 4, 5 বা 6 লিখতে হবে। তারা রঙে ভিন্ন।

দুটি বিশেষ অ্যানিমেশন হল RGB_Control এবং TextAnimation। আপনি যদি এইগুলিকে সক্রিয় করতে বেছে নেন, তাহলে লাঠি প্রথমে কিছুই দেখাবে না। তবে এটি আপনাকে অন্যান্য পরিষেবার সাথে লাঠি নিয়ন্ত্রণ করার জন্য অতিরিক্ত বিকল্প সরবরাহ করে।

ধাপ 7: আরজিবি নিয়ন্ত্রণ

আরজিবি নিয়ন্ত্রণ
আরজিবি নিয়ন্ত্রণ
আরজিবি নিয়ন্ত্রণ
আরজিবি নিয়ন্ত্রণ
আরজিবি নিয়ন্ত্রণ
আরজিবি নিয়ন্ত্রণ
আরজিবি নিয়ন্ত্রণ
আরজিবি নিয়ন্ত্রণ

RGB- কন্ট্রোল খুব সহজেই CySmart অ্যাপ দিয়ে পরীক্ষা করা যায় কারণ আমি সাইপ্রাস ডেমোর মতো এই বৈশিষ্ট্যের জন্য একই UUID ব্যবহার করেছি।

CySmart অ্যাপটি শুরু করুন এবং Povstick এর সাথে সংযুক্ত করুন। প্রথমে আপনাকে ccc1 বৈশিষ্ট্যে একটি "0x0A" লিখতে হবে।

0x0A হল 10 এর জন্য হেক্স-মান, যা enum- এ RGB- কন্ট্রোল অ্যানিমেশন।

তারপর আপনি CySmart অ্যাপে RGB-LED কন্ট্রোল প্যানেলে যেতে পারেন। এই স্ক্রিনে পেতে হয়তো আপনাকে অ্যাপটি রিস্টার্ট করতে হবে। তারপরে আপনি এই আরজিবি-ডায়াগ্রামের সাহায্যে সমস্ত এলইডির রঙ নিয়ন্ত্রণ করতে পারেন।

অবশ্যই আপনি বৈশিষ্ট্যগুলি সরাসরি মান লিখতে পারেন।

ধাপ 8: টেক্সট_এনিমেশন পরিষেবা এবং স্থায়ী সংগ্রহস্থল পরিষেবা

Text_Animation Service এবং Peristent Storage Service
Text_Animation Service এবং Peristent Storage Service

এই পরিষেবাগুলি পরীক্ষা করা এত সহজ নয়।

টেকনিক্যালি আপনি এর জন্য নর্ডিক অ্যাপটিও ব্যবহার করতে পারেন, কিন্তু কোন বৈশিষ্ট্যে কোন মান লিখতে হবে তা জানতে হবে।

সুতরাং যদি আপনি এগুলি পরীক্ষা করতে চান, তাহলে আপনার PSOC প্রকল্পের দিকে নজর দেওয়া উচিত, কোন বৈশিষ্ট্যের কোন UUID আছে।

একটি গুরুত্বপূর্ণ "সেট-স্পিড" বৈশিষ্ট্য। এই বৈশিষ্ট্যের সাহায্যে আপনি নিয়ন্ত্রণ করতে পারবেন কত দ্রুত অ্যানিমেশন।

PersistentStorageService এর "Set_Animation" বৈশিষ্ট্যের সাহায্যে আপনি ফন্ট এবং টেক্সট স্ট্রিং এর রং নিয়ন্ত্রণ করতে পারেন। বৈধ মানগুলি "povanimation.h", দুটি ফন্ট "মনো" এবং "সেরিফ" এবং একক রঙিন এবং রংধনু রঙে সংজ্ঞায়িত করা হয়েছে। মান 0 এবং 1 একটি নির্দিষ্ট রঙ সহ টেক্সট প্রদর্শন করে, RGB_Control বৈশিষ্ট্যের মাধ্যমে নিয়ন্ত্রণযোগ্য। মান 2 এবং 3 প্রতিটি কলামের রঙ পরিবর্তন করে এবং স্ট্রিংটিকে একটি সুন্দর রংধনু দেয়।

"Write_Text_Service" এক ধরণের ভিন্ন। আপনি "Set_Character" বৈশিষ্ট্যে পৃথক অক্ষর লিখে ডিভাইসে একটি নতুন স্ট্রিং লিখতে পারেন। প্রতিটি লেখায়, আপনি স্ট্রিং এর বর্তমান দৈর্ঘ্যের একটি বিজ্ঞপ্তি ফিরে পাবেন।

একটি নতুন স্ট্রিং শুরু করতে, "Clear_String" এ "সত্য" লিখুন।

এটি সর্বোত্তম বাস্তবায়ন নয়, তবে এটি MTU আকার পরিবর্তন না করে 250 অক্ষর পর্যন্ত যেকোনো স্ট্রিংয়ের জন্য কাজ করে।

পভস্টিকের বোতাম টিপলে শুরু সহ একটি নতুন স্ট্রিং প্রদর্শন।

ধাপ 9: অ্যান্ড্রয়েড অ্যাপ শুরু করুন

এটি একটি গুরুত্বপূর্ণ পদক্ষেপ, কিন্তু এই নির্দেশের সুযোগের বাইরে। এর জন্য দু Sorryখিত!

হয়তো আমি আমার টেস্ট-অ্যাপটি প্লে স্টোরে আপলোড করতে পারি, কিন্তু এটি এখনও শেষ বা রিলিজযোগ্য নয়।

ধাপ 10: ছবিতে বার্তা লিখুন

ছবিতে বার্তা লিখুন
ছবিতে বার্তা লিখুন
ছবিতে বার্তা লিখুন
ছবিতে বার্তা লিখুন
ছবিতে বার্তা লিখুন
ছবিতে বার্তা লিখুন

আচ্ছা, এই কারণেই আমি এই পোভস্টিকটি প্রথম স্থানে তৈরি করি: ছবিতে বার্তা লিখতে।

আপনার একটি ট্রাইপড, লম্বা এক্সপোজার ফাংশন সহ একটি ক্যামেরা এবং কিছু ভাল অবস্থান প্রয়োজন।

ক্যামেরা সেট আপ করুন এবং প্রথম পরীক্ষার জন্য এক্সপোজার সময়কে 10s এ সামঞ্জস্য করুন।

রিলিজ ট্রিগার করুন এবং লাঠিতে টেক্সট-ডিসপ্লে শুরু করে ছবির মধ্য দিয়ে হাঁটা শুরু করুন।

Et Voila সেখানে আমরা!

LED- উজ্জ্বলতা, অ্যাপারচার এবং এক্সপোজার টাইমের সঠিক সংমিশ্রণে ভোরের সময় ছবি তোলাও সম্ভব।

এই ধাপে তিনটি ছবি সম্ভাবনার সম্পূর্ণ বর্ণালী দেখায়।

প্রথমটিতে, LEDs অত্যধিক এক্সপোজড এবং একটি icalন্দ্রজালিক আভা তৈরি করে। কিন্তু সেজন্য মাটিতে প্রতিফলন দৃশ্যমান এবং পটভূমি বরং ভালো।

দ্বিতীয় ছবিটি এলইডি -র জন্য উন্মুক্ত করা হয়েছে, তবে এটি পটভূমি পুরোপুরি কালো করে দেয়।

এবং তৃতীয়টি সূর্যাস্তের কিছুক্ষণ পরেই ম্লান এলইডি দেখায়। LEDs অন্যান্য ছবির মত উজ্জ্বল, কিন্তু পরিবেশ এত উজ্জ্বল ছিল যে আমাকে একটি কম অ্যাপারচার এবং একটি কম ISO ব্যবহার করতে হয়েছিল যাতে LEDs বরং অন্ধকার দেখায়।

এটি গ্লো প্রতিযোগিতা 2018 করুন
এটি গ্লো প্রতিযোগিতা 2018 করুন
এটি গ্লো প্রতিযোগিতা 2018 করুন
এটি গ্লো প্রতিযোগিতা 2018 করুন

মেক ইট গ্লো কনটেস্ট 2018 -এ দ্বিতীয় পুরস্কার

প্রস্তাবিত: