সুচিপত্র:
ভিডিও: AIY ভয়েস কিটের উপর ভিত্তি করে একটি টকিং কালার সেন্সর: 4 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:02
সম্প্রতি ব্রেইল সম্পর্কে কিছুটা শিখেছি, আমি ভাবছিলাম যে আমি রাস্পবেরি পাইয়ের জন্য এআইওয়াই ভয়েস কিট ব্যবহার করে কিছু তৈরি করতে পারব, যা দৃষ্টি প্রতিবন্ধীদের জন্য সত্যিকারের লাইভ সুবিধা পেতে পারে। তাই নীচে বর্ণিত আপনি একটি সাধারণ রঙ সনাক্তকরণ ডিভাইসের একটি প্রোটোটাইপ পাবেন যা তার ফলাফলগুলি জোরে জোরে পড়ে।
দৃষ্টিহীন বা বর্ণান্ধতার অধিকারীদের জন্য এই ব্যবস্থার আরও বিস্তৃত সংস্করণ উপকারী হতে পারে।
সিস্টেমটি একটি রাস্পবেরি পাই ব্যবহার করছে যার সাথে একটি AIY ভয়েস HAT সংযুক্ত রয়েছে। একটি TCS34725 RGB সেন্সর ব্রেকআউট HAT এর I2C পোর্টের সাথে সংযুক্ত। ব্রেকআউটে বিশ্লেষণ করা বস্তুটিকে আলোকিত করার জন্য একটি উজ্জ্বল উষ্ণ সাদা LED রয়েছে। পরিমাপের অবস্থাকে অপ্টিমাইজ এবং মানসম্মত করার জন্য ব্রেকআউটটি একটি হাউজিংয়ে রাখা হয়েছিল।
তিনটি রঙ সেন্সর আপনার চোখের রঙ সেন্সর হিসাবে একই তিনটি ফ্রিকোয়েন্সি রেঞ্জ পরিমাপ করে। তারপর লাল, সবুজ এবং নীল (RGB) মানগুলি সামগ্রিক রঙের ছাপ গণনা করতে ব্যবহৃত হয়।
এই বিশেষ ব্যবস্থার একটি চমৎকার বিষয় হল এটি এখন আপনাকে মৌখিকভাবে রং বলে, AIY ভয়েস কিটস "বলুন" কমান্ড ব্যবহার করে। অনুগ্রহ করে সাথে থাকা ভিডিওটি দেখুন।
ডিভাইসটি AIY ভয়েস HAT- এর সাথে সংযুক্ত I2C সেন্সর ডিভাইসের উদাহরণ হিসেবেও কাজে লাগতে পারে।
ধাপ 1: ব্যবহৃত উপকরণ
রাস্পবেরি পাই 3. ~ 35 মার্কিন ডলার বা ইউরো
এআইওয়াই ভয়েস কিট, শিরোলেখগুলি HAT- এ বিক্রি হয়েছে। ~ 25US $ বা EUR
Adafruit TCS34725 ব্রেকআউট, একটি হেডার সোল্ডার সহ। ~ 8 মার্কিন ডলার বা ইউরো
জাম্পারের তার.
একটি ব্রেডবোর্ড (alচ্ছিক)
সেন্সর হাউজিং এর জন্য:- একটি ব্যবহৃত "ডলস গুস্তো" কফি ক্যাপসুল- 2 মিমি ফরেক্সের একটি ছোট গোলাকার টুকরা (পিভিসি ফোম প্লেট), প্রায় 37 মিমি ব্যাস- হাউজিং এর ভিতরের দেয়াল coverেকে রাখার জন্য একটি অ-প্রতিফলিত কালো উপাদান। আমি স্ব আঠালো কালো রাবার ফেনা ব্যবহার করেছি।
Ptionচ্ছিক: পরিমাপের জন্য একটি ছোট সুইচ
কয়েক ফোঁটা প্লাস্টিকের আঠা এবং একটি কাটার ছুরি।
ধাপ 2: সমাবেশ এবং ব্যবহার
AIY ভয়েস HAT সহ রাস্পবেরি পাই AIY ম্যানুয়ালে বর্ণিত হিসাবে সেটআপ করা হয়েছিল। সমাবেশের আগে, হেটগুলি HAT- এর বন্দরগুলিতে বিক্রি করা হয়েছিল। সেন্সরের আবাসনের জন্য, একটি "ডুলস গুস্তো" কফি ক্যাপসুল খালি করা হয়েছিল, পরিষ্কার করা হয়েছিল এবং নীচের অংশটি সাবধানে ছুরি দিয়ে সরানো হয়েছিল। আপনি এই উদ্দেশ্যে অন্য কিছু ব্যবহার করতে পারেন, কফি ক্যাপসুলের ঠিক আকার এবং আকৃতি ছিল। একটি প্লেট থেকে 2 মিমি ফরেক্সের একটি বৃত্তাকার টুকরো কেটে ফেলা হয়েছিল, তারপর ব্রেকআউটটি ফরেক্স প্লেটে কেন্দ্রীয়ভাবে স্থাপন করা হয়েছিল, একটি অনুভূত কলম দ্বারা চিহ্নিত অবস্থান এবং ব্রেকআউটে হেডারের জন্য একটি স্লট যথাযথ স্থানে কাটা হয়েছিল।
এখন ফরেক্স টুকরাটি হাউজিংয়ের উপর আঠালো ছিল এবং একটি ভেলক্রো স্ট্রিপ ব্যবহার করে ফরেক্স প্লেটের সাথে সংযুক্ত সেন্সর ব্রেকআউট। তারপর ভিতরের দেয়ালগুলি একটি হালকা শোষণকারী কালো উপাদান দিয়ে আবৃত ছিল, আমি একটি স্ব আঠালো রাবার ফেনা ব্যবহার করেছি। কালো কার্ডবোর্ডেরও কাজ করা উচিত। এখন, জাম্পার ক্যাবল ব্যবহার করে, HAT এর I2C "3.3V" পোর্টটি সেন্সরে "V in", Ground to Gnd, sda to sda এবং scl to scl সংযুক্ত ছিল। আমি উভয় অংশ সংযুক্ত করার জন্য একটি রুটিবোর্ড ব্যবহার করেছি, কিন্তু এটি প্রয়োজনীয় নয়।
Src ফোল্ডারে AIY_TCS34725 পাইথন স্ক্রিপ্টটি রাখুন এবং "sec/AIY_TCS34752.py" প্রবেশ করে dev টার্মিনাল থেকে স্ক্রিপ্টটি চালান। আপনাকে প্রথমে পাইথন স্ক্রিপ্টটি এক্সিকিউটেবল করতে হতে পারে। যখন জিজ্ঞাসা করা হয়, পরিমাপ করার জন্য বস্তুর উপরে সেন্সর ইউনিট রাখুন, এআইওয়াই ডিভাইসে বোতাম টিপুন এবং এক বা দুই সেকেন্ড অপেক্ষা করুন।
তারপর, পরিমাপ করা RGB এবং সাদা মানের উপর ভিত্তি করে, ডিভাইসটি প্রথমে সংশ্লিষ্ট রঙের মান গণনা করে, তারপর এই মানের উপর ভিত্তি করে রঙ অনুমান করে এবং AIY ভয়েস সিস্টেমের মাধ্যমে মৌখিকভাবে তাদের সাথে যোগাযোগ করে। ছ। "গা dark় লাল" হিসাবে, কিন্তু রঙের মানও দেয়। আরজিবি, রঙ এবং উজ্জ্বলতা (হালকাতা, সঠিক হতে হবে) মানগুলি স্ক্রিনে মুদ্রিত হয়।
রঙ টীকা প্রক্রিয়া সহজ করার জন্য, RGB মান HSV (হিউ, স্যাচুরেশন, ভ্যালু) ফরম্যাটে রূপান্তরিত হয়। এটি একটি নির্দিষ্ট পরিসরের কোণে (যেমন একটি পাই স্লাইস) একটি বর্ণকে টীকা দিতে এবং গণনা করা রঙের মান অনুসারে রঙ বাছাই করতে দেয়।
একটি সাদা এবং একটি কালো রেফারেন্সের বিপরীতে আপনাকে আপনার ডিভাইসকে স্বাভাবিক করতে হবে। আপনার কাছে পাওয়া কাগজের সবচেয়ে সাদা এবং কালো টুকরোগুলি পরিমাপ করুন, প্রতিটি পরিমাপ নিন এবং এই মানগুলিকে কোডে সর্বাধিক এবং সর্বনিম্ন মান হিসাবে রাখুন। শুধুমাত্র অনুকূল রেফারেন্স মান একটি ভাল রঙ স্বীকৃতি দেবে।
একটি মৌলিক সমস্যা হচ্ছে প্রতিফলন। যদি আপনার একটি চকচকে বা পালিশ পৃষ্ঠের বস্তু থাকে তবে এটি LED দ্বারা নির্গত হওয়া অনেক আলোকে প্রতিফলিত করবে, এটি আসলে অনেক হালকা দেখাচ্ছে। আপনি আলো ছড়িয়ে দিতে ঝিল্লি একটি শীট ব্যবহার করতে পারেন, কিন্তু আপনি একটি সংশোধন ফ্যাক্টর বাস্তবায়ন প্রয়োজন হতে পারে।
স্বচ্ছ বস্তুর ক্ষেত্রে, একটি সাদা কাগজে এগুলি রাখা সহজ হতে পারে, অন্যথায় প্রতিফলিত আলোর পরিমাণ ছোট হবে এবং বস্তুটি "কালো" হিসাবে প্রতিবেদন করা হবে।
আপনি যদি আলো নি eসরণ করে এমন বস্তুর রঙ পরিমাপ করতে চান, তাহলে ব্রেকআউটের "LED" পোর্টটিকে "গ্রাউন্ড" এর সাথে সংযুক্ত করে আপনার ব্রেকআউটে LED বন্ধ করা উচিত। এখন সেই অনুযায়ী স্বাভাবিকীকরণ মান সেট করুন।
আরেকটি সাধারণ সমস্যা হল বস্তুর আলোকসজ্জা। ব্রেকআউটে উষ্ণ সাদা এলইডি আলোর একটি অবিচ্ছিন্ন বর্ণালী নির্গত করে। অতএব আরজিবি বর্ণালীতে কিছু কিছু রং অতিরিক্ত বা কম উপস্থাপন করা যেতে পারে। এই বিষয়ে আরও তথ্যের জন্য, দয়া করে একটি কালারমিটার/ ফোটোমিটার এবং স্পেকট্রোমিটারে আমার পূর্ববর্তী নির্দেশাবলী দেখুন:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
ধাপ 3: কোড
কোড হল AIY ভয়েস ম্যানুয়াল থেকে একটি কোডের পরিবর্তন এবং ব্র্যাডস্পির TCS34725 সেন্সর কোডের সংমিশ্রণ।
আমি অ্যাডাফ্রুট থেকে TCS34725 পাইথন কোড ব্যবহার করার চেষ্টা করেছি, কিন্তু এটি এবং কিছু অন্যান্য কোড চালাতে সমস্যা হয়েছিল যা AIY HAT এর সাথে মিলিয়ে বাহ্যিক লাইব্রেরি ব্যবহার করছে। কোন সাহায্য স্বাগত জানাই।
যেমনটি আগে উল্লেখ করা হয়েছে, রঙের টীকাটি RGB- এর মান পরিবর্তনের উপর ভিত্তি করে। সাদা এবং কালো শ্রদ্ধার উপকরণগুলির পরীক্ষামূলক পরিমাপের উপর ভিত্তি করে আপনাকে স্বাভাবিককরণ সেটিংস সেট করতে হবে। R, G এবং B মিনিট বা সর্বোচ্চ অনুযায়ী সর্বোচ্চ মান পূরণ করুন।
স্ক্রিপ্টটি "সে" কমান্ডের একটি নতুন সংস্করণ ব্যবহার করে যা ভলিউম এবং পিচ নিয়ন্ত্রণ করতে দেয়। সেক্ষেত্রে, আপনি হয়ত audio.py এবং tty ড্রাইভার ফাইল আপডেট করতে পারেন অথবা স্ক্রিপ্ট থেকে "ভলিউম এবং পিচ পার্টস" মুছে ফেলতে পারেন।
#! # gpiozero আমদানি LED থেকে # সার্ভো-পোর্টে একটি বহিরাগত LED এর জন্য সহায়ক হতে পারে # gpiozero আমদানি বোতাম থেকে # সার্ভো-পোর্ট আমদানি সময় বাইরের বোতামের জন্য সহায়ক হতে পারে আমদানি সময় smbus bus = smbus. SMBus (হিউ): # রঙের ব্যাখ্যা গণনা করা রঙের উপর ভিত্তি করে যদি অথবা (হিউ <20)): রঙ = "লাল" ফেরত রঙ অন্য: মুদ্রণ ("কিছু ভুল হয়েছে")
def tcs34725 (): # পরিমাপ এবং ব্যাখ্যা।
# পরিমাপ ব্র্যাডস্পি TCS34725 স্ক্রিপ্ট দ্বারা সম্পাদিত হয়: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # version # 0x44 হওয়া উচিত যদি ver == 0x44: print ("Device found / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = সক্রিয় করুন রেজিস্টার bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = পাওয়ার অন, 0x02 RGB সেন্সর সক্রিয় bus.write_byte (0x29, 0x80 | 0x14) # ফলাফল পড়ার রেজিস্টার শুরু 14, LSB তারপর MSB data = bus.read_i2c_block_data (0x29, 0) clear = clear = data [1] << 8 | data [0] red = data [3] << 8 | তথ্য [2] সবুজ = তথ্য [5] << 8 | তথ্য [4] নীল = তথ্য [7] << 8 | data [6] crgb = "পরম গণনা: C: %s, R: %s, G: %s, B: %s / n" %(পরিষ্কার, লাল, সবুজ, নীল) প্রিন্ট (crgb) সময়। ঘুম (1) অন্যথায়: মুদ্রণ ("ডিভাইস খুঁজে পাওয়া যায়নি / n") # মাপা RGBW মানগুলির স্বাভাবিককরণ এবং রূপান্তর col = "" # সর্বোচ্চ মান স্বাভাবিকীকরণের কারণগুলি, পরীক্ষামূলকভাবে সংজ্ঞায়িত করতে হবে # যেমন বনাম একটি সাদা কাগজ। সময় সময় চেক করুন এবং সংশোধন করুন। max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # পটভূমি/ন্যূনতম মান স্বাভাবিকীকরণের কারণ, পরীক্ষামূলকভাবে সংজ্ঞায়িত করতে হবে # উদা বনাম কাগজের কালো শীট। সময় সময় চেক করুন এবং সংশোধন করুন। min_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # normalized values, 0 and 1 rel_bright = ((clear - min_bright)/(max_bright - min_bright)) rel_red = ((red - min_red)/(max_red - min_red)) rel_green = ((green - min_green)/(max_green - min_green)) rel_blue = ((blue - min_blue)/(max_blue - min_blue)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blue)*hu = 0 hl যদি rel_bright> 0.9: col = "white" # if very bright -> white elif rel_bright black else: col = hue2color (hue) # color value by huue values # print ("আপেক্ষিক মান উজ্জ্বল, লাল, সবুজ, নীল:") # মুদ্রণ (rel_bright, rel_red, rel_green, rel_blue) # মুদ্রণ ("HSV মান (হিউ, স্যাচুরেশন, মান):", hsv_col) # প্রিন্ট ("হিউ ইন °", হিউ) রিটার্ন [col, rel_bright, rel_red, rel_green, rel_blue, রঙ]
def main ():
button = aiy.voicehat.get_button () # change button status led = aiy.voicehat.get_led () # change Button-LED status aiy.audio.get_recorder ()। start () # buttoni = Button (5) # দূরত্ব সেন্সর বা অন্যান্য বহিরাগত বোতাম, servo3/GPIO 05 এর সাথে সংযুক্ত
aiy.audio.say ("হ্যালো"
aiy.audio.say ("শুরু করতে, বস্তুর উপরে সেন্সরটি সরান। তারপর নীল বোতাম টিপুন",, ভলিউম = 50, পিচ = 100) মুদ্রণ ("বস্তুর উপরে রঙ পরিমাপ স্থান সেন্সর সক্রিয় করতে, তারপর নীল বোতাম টিপুন ") যখন সত্য: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # বাহ্যিক বোতামের জন্য, buttoni led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" পরিমাপ ",, ভলিউম = 50, পিচ = 100) ফলাফল = tcs34725 () # পরিমাপ এবং ব্যাখ্যা কল = ফলাফল [0] # রঙ, টেক্সট হিউ = str (int (ফলাফল [5])) # হিউ °, টেক্সট r_red = str (int (result [2]*255)) # R মান, টেক্সট r_green = str (int (result [3]*255)) # G মান, টেক্সট r_blue = str (int (result [4]*255)) # B মান, টেক্সট r_bright = str (int (result [1]*100)) # W মান, টেক্সট led.set_state (aiy.voicehat. LED. OFF) হিসাবে যদি col == "সাদা "বা col ==" কালো ": উজ্জ্বল =" "এলিফ (ফলাফল [1]> 0.69): #উজ্জ্বলতা/রঙের উজ্জ্বলতা =" হালকা "এলিফ (ফলাফল [1] <0.25): উজ্জ্বল =" অন্ধকার "অন্য: উজ্জ্বল = "মাধ্যম" # যোগাযোগ টি তিনি ফলাফল color_text = ("বস্তুর রঙ হল" + উজ্জ্বল + "" + col) মুদ্রণ (color_text) aiy.audio.say (color_text, ভলিউম = 75, পিচ = 100) hue_text = ("হিউ মান হল "+ হিউ+" ডিগ্রী ") মুদ্রণ (hue_text) aiy.audio.say (hue_text,, volume = 75, pitch = 100)
যদি _name_ == '_main_': main ()
ধাপ 4: কিছু লিঙ্ক এবং মন্তব্য
TCS34725 সেন্সর ডেটা শীট এখানে পাওয়া যাবে:
আমার ব্যবহৃত সেন্সরটি পড়ার কোড এখানে বর্ণনা করা হয়েছে:
আপনি আমার পূর্ববর্তী নির্দেশাবলীতে এই এবং অন্য সেন্সরের সাথে রঙ পরিমাপের উপর কিছু অতিরিক্ত তথ্য পেতে পারেন:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
প্রস্তাবিত:
মুড স্পিকার- পরিবেষ্টিত তাপমাত্রার উপর ভিত্তি করে মুড মিউজিক বাজানোর জন্য একটি শক্তিশালী স্পিকার: 9 টি ধাপ
মুড স্পিকার- পরিবেষ্টিত তাপমাত্রার উপর ভিত্তি করে মুড মিউজিক বাজানোর জন্য একটি শক্তিশালী স্পিকার: আরে! MCT Howest Kortrijk এ আমার স্কুল প্রকল্পের জন্য, আমি একটি মুড স্পিকার তৈরি করেছি এটি একটি স্মার্ট ব্লুটুথ স্পিকার ডিভাইস যা বিভিন্ন সেন্সর, একটি LCD এবং WS2812b LEDstrip অন্তর্ভুক্ত স্পিকার তাপমাত্রার উপর ভিত্তি করে ব্যাকগ্রাউন্ড মিউজিক বাজায় কিন্তু পারে
MQmax 0.7 Esp8266 এবং Arduino Mini Pro- এর উপর ভিত্তি করে একটি কম খরচে ওয়াইফাই আইওটি প্ল্যাটফর্ম: 6 টি ধাপ
MQmax 0.7 একটি কম খরচে WiFi IoT প্ল্যাটফর্ম যা Esp8266 এবং Arduino Mini Pro- এর উপর ভিত্তি করে: হ্যালো এটি আমার দ্বিতীয় নির্দেশযোগ্য (এখন থেকে আমি গণনা বন্ধ করি)। আমি এটি একটি সহজ (অন্তত আমার জন্য), সস্তা, তৈরি করা সহজ এবং রিয়েল আইওটি অ্যাপ্লিকেশনগুলির জন্য কার্যকর প্ল্যাটফর্ম তৈরি করতে তৈরি করেছি যাতে এম 2 এম কাজ অন্তর্ভুক্ত রয়েছে। এই প্ল্যাটফর্মটি esp8266 এর সাথে কাজ করে এবং
কিভাবে একটি প্রভাবশালী কাঠের রোবট আর্ম (পার্ট 2: বাধা এড়ানোর জন্য রোবট) - মাইক্রো উপর ভিত্তি করে: বিট: 3 ধাপ
কিভাবে একটি প্রভাবশালী কাঠের রোবট আর্ম (পার্ট 2: বাধা এড়ানোর জন্য রোবট)-মাইক্রো ভিত্তিক: বিট: পূর্বে আমরা লাইন-ট্র্যাকিং মোডে আর্মবিট চালু করেছি। এরপরে, আমরা কীভাবে বাধা মোড এড়ানোর জন্য আর্মবিট ইনস্টল করব তা পরিচয় করিয়ে দিই
কিভাবে একটি সহজ এবং শক্তিশালী হ্যান্ডেল কন্ট্রোলার একত্রিত করা যায়- মাইক্রোর উপর ভিত্তি করে: বিট: 10 টি ধাপ (ছবি সহ)
কিভাবে একটি সহজ এবং শক্তিশালী হ্যান্ডেল কন্ট্রোলার একত্রিত করা যায়- মাইক্রো উপর ভিত্তি করে: বিট: হ্যান্ডেলের নাম হ্যান্ডলবিট। আকৃতি একটি হ্যান্ডেল এবং এটি খুব শীতল দেখায়! এখন আমরা হ্যান্ডলবিট সম্পর্কে একটি ভূমিকা তৈরি করতে পারি, আসুন এটির দিকে এগিয়ে যাই
একটি কোয়াডকপ্টার পুনরুদ্ধার (হুবসান মডেলের উপর ভিত্তি করে): 8 টি ধাপ
একটি কোয়াডকপ্টার পুনরুদ্ধার (হুবসান মডেলের উপর ভিত্তি করে): আসলে, কোয়াডকপ্টার সব সময় হারিয়ে যায়। লোকেরা তাদের খুব দূরে পাঠায় বা বাতাস তাদের ধরে ফেলে বা পাইলট দিশেহারা হয়ে যায় এবং কপ্টার চলে যায় যেখানে আপনি আর দেখতে পাবেন না। এই নির্দেশনায় কোন গোপন কী প্রকাশ করা হয়নি, কোন সেট ও নেই