সুচিপত্র:

স্মার্ট চশমা: 4 টি ধাপ
স্মার্ট চশমা: 4 টি ধাপ

ভিডিও: স্মার্ট চশমা: 4 টি ধাপ

ভিডিও: স্মার্ট চশমা: 4 টি ধাপ
ভিডিও: প্রেসক্রিপশন চশমা কেনার সব থেকে সহজ নিয়ম 🤓 || How to buy Perfect GLASS for you #Tonmoy 2024, জুলাই
Anonim
স্মার্ট চশমা
স্মার্ট চশমা
স্মার্ট চশমা
স্মার্ট চশমা

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

সরবরাহ:

এই প্রকল্পের জন্য প্রয়োজনীয় সরবরাহগুলি নিম্নলিখিতগুলি অন্তর্ভুক্ত করবে:

1) একটি রাস্পবেরি পাই 0 ওয়াট (vilros.com থেকে)

2) একটি স্পষ্ট 128x64 OLED ডিসপ্লে (Sparkfun.com থেকে)

3) রাস্পবেরি পাই 0 ওয়াটের জন্য ফরম্যাট করা একটি ক্যামেরা মডিউল (amazon.com থেকে)

4) আপনার পছন্দের কোন চশমা

5) তারের

6) সোল্ডারিং লোহা

7) সীসা মুক্ত ঝাল (কারণ আপনি সীসা থেকে মরতে চান না)

8) 2 উপায় আঠালো

9) এসডি কার্ড 8gb মিনিটের

10) কম্পিউটার এবং ইন্টারনেট সংযোগ

ধরুন আপনার ইতিমধ্যে একটি কম্পিউটার এবং ইন্টারনেট সংযোগ আছে এই চশমার দাম প্রায় $ 130.00 এ আসবে

ধাপ 1: সার্কিট তারের

সার্কিট তারের!
সার্কিট তারের!

স্ক্রিনে টেক্সট প্রদর্শনের জন্য আপনি I2C বা SPI এর মাধ্যমে OLED- এর সাথে সংযোগ স্থাপন করতে যাচ্ছেন, আমি I2C বেছে নিই কারণ এটিই আমি ব্যবহার করতে বেশি স্বাচ্ছন্দ্যবোধ করি কিন্তু যদি আপনি SPI এর মাধ্যমে এর সাথে সংযোগ স্থাপন করতে পছন্দ করেন তাহলে এই টিউটোরিয়ালটি অনুসরণ করুন স্পার্কফুন ওয়েবসাইট এবং আপনার কাজ শেষ হলে এখানে ফিরে আসুন। https://learn.sparkfun.com/tutorials/transparent-g… আপনি যদি I2C বেছে নিয়ে থাকেন তাহলে আমি নিচের নির্দেশিত হিসাবে তারের সোল্ডার করেছি:

Pi O/ OLED \/

3.3v 3.3v

GND GND

এসডিএ এসডিএ

এসসিএল এসসিএল

দয়া করে মনে রাখবেন যে স্পষ্ট OLED শুধুমাত্র 3.3v পরিচালনা করতে পারে।

আপনি সার্কিট সংযোগ শেষ করার পরে, ক্যামেরা মডিউলের রিবন ক্যাবলটি রাস্পবেরি পাই -তে রিবন ক্যাবল হোল্ডারে স্লাইড করে কালো ক্ল্যাম্পটি বের করে এবং রিবন ক্যাবলটি একবারে স্থানান্তরিত করে।

ধাপ 2: রাস্পবেরি পাই অ্যাক্সেস করা

Ssh ব্যবহার করে আমরা একটি অতিরিক্ত বহিরাগত কীবোর্ড মাউস এবং মনিটর সংযোগ না করেই আমাদের পিসির সাথে আমাদের পাই অ্যাক্সেস করতে পারি। প্রথমে আপনি যা করবেন তা হল আপনার পিসিতে আপনার এসডি কার্ডটি অ্যাডাপ্টার বা অন্তর্নির্মিত পোর্টের সাথে সংযুক্ত করুন, তারপরে আপনাকে এই লিঙ্কে যেতে হবে https://www.raspberrypi.org/downloads/raspbian/ এবং ডাউনলোড করুন রাস্পবিয়ান বাস্টার ডেস্কটপ সহ। দ্বিতীয়ত, আপনাকে BalenaEtcher ব্যবহার করে SD কার্ডে OS রাখতে হবে আপনার SD কার্ড এবং রাস্পবিয়ান OS নির্বাচন করুন এবং "ফ্ল্যাশ" ক্লিক করুন এই প্রক্রিয়াটি কিছু সময় নিতে পারে তাই শেষ হয়ে গেলে ফিরে আসুন। তৃতীয়ত ফাইল এক্সপ্লোরার বা ম্যাকের ফাইন্ডারে এসডি কার্ডে যান এবং wpa_supplicant নামে একটি টেক্সট ফাইল তৈরি করুন।

দেশ = মার্কিন যুক্তরাষ্ট্র

ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "WIFI_SSID" scan_ssid = 1 psk = "WIFI_PASSWORD" key_mgmt = WPA-PSK}

আপনি যদি মার্কিন যুক্তরাষ্ট্রে না থাকেন তবে আপনাকে সংশ্লিষ্ট জায়গা এবং দেশে আপনার ওয়াইফাই নাম এবং পাসওয়ার্ড লিখতে হবে। মনে রাখবেন রাস্পবেরি পাই কেবল একটি 2.4Ghz নেটওয়ার্কের সাথে সংযোগ স্থাপন করতে পারে যার অর্থ আপনার পিসিকেও সেই নেটওয়ার্কের সাথে সংযোগ করতে হবে। Ssh নামক কোন এক্সটেনশন ছাড়াই একটি খালি টেক্সট ফাইল তৈরি করুন এবং তারপর আপনার SD কার্ড বের করুন। তারপরে আপনাকে পুটি https://www.putty.org/ ইনস্টল করতে হবে যা আপনি ssh সক্ষম করতে ব্যবহার করবেন। একবার ইনস্টল হয়ে গেলে আপনার রাস্পবেরি পাই এর আইপি ঠিকানা লিখুন, আপনি আপনার রাউটার ওয়েবসাইটে লগ ইন করে এবং সংযুক্ত ডিভাইসগুলি দেখে এটি কী তা বের করতে পারেন।

আপনি রাস্পবেরি পাইতে প্রবেশ করার পরে এটি আপনাকে লগ ইন করতে বলবে, ডিফল্ট ব্যবহারকারীর নাম "পাই" এবং পাসওয়ার্ডটি "রাস্পবেরি"। টাইপ করুন sudo raspi-config তারপর ইন্টারফেসিং অপশনে যান এবং ক্যামেরা, ssh, এবং i2c সক্ষম করুন, তারপর ফিনিস এ ক্লিক করুন এবং sudo রিবুট টাইপ করুন। এখন আপনি রাস্পবেরি পাইতে এসএসএস করার জন্য প্রস্তুত, এগিয়ে যান এবং রিমোট ডেস্কটপ ইনস্টল করুন এবং আপনার রাস্পবেরি পাই এর আইপি ঠিকানা লিখুন এবং আপনি এখন রাস্পবেরি পাইতে এসএসএস করতে ভাল।

ধাপ 3: কোডিং সময়

কোডিং সময়!
কোডিং সময়!

আমি এই প্রোগ্রামটিকে পাইথনে কোড করতে বেছে নিয়েছি তাই নিশ্চিত করুন যে আপনার ডেস্কটপে পাইথন.7..7 বা 8. installed ইনস্টল আছে। এই কোডটি একটি সার্ভার এবং একটি ক্লায়েন্ট ব্যবহার করে কাজ করে, যেটি আপনার পিসি। ক্লায়েন্ট বা রাস্পবেরি পাই একটি ছবি তুলবে এবং ড্রপবক্সে আপলোড করবে যা সার্ভার দ্বারা পুনরুদ্ধার করা হয়েছে যিনি ইমেজ প্রসেসিং এবং টেক্সট স্বীকৃতি চালান। এটি কাজ করার জন্য আপনাকে একটি উলফ্রামালফা, ড্রপবক্স এবং ওপেনওয়েদারম্যাপ অ্যাপ-আইডি পেতে হবে, আপনাকে যা করতে হবে তা হল ওয়েবসাইটগুলিতে সাইন-আপ করুন এবং এটি আপনাকে একটি অ্যাপ-আইডি দেবে। এবং তারপর কোডে মন্তব্য দ্বারা নির্ধারিত সংশ্লিষ্ট স্থানে প্রবেশ করান। নিশ্চিত করুন যে আপনি পিপ সবকিছু ইনস্টল করেছেন এবং Tesseract OCR এবং OpenCV ইনস্টল করেছেন। আপনার পিসিতে Server.py নামে একটি পাইথন ফাইল এবং রাস্পবেরি পাইতে client.py নামে একটি ফাইল তৈরি করুন এবং তারপর কোডটি কপি এবং পেস্ট করুন। কিন্তু জেনে রাখুন যে অক্ষরগুলি যত বেশি সাহসী এবং পটভূমি যতই সাদা হবে তত ভাল ফলাফল, প্রতিটি পাঠ্য স্বীকৃতি সফ্টওয়্যারের ক্ষেত্রে এটিই হয়।

একটি অ্যাপ-আইডির জন্য সাইন-আপ করার সমস্ত লিঙ্ক \/

www.wolframalpha.com/

openweathermap.org/api

www.dropbox.com/developers/documentation

নিশ্চিত করুন যে আপনি Tesseract OCR এবং OpenCV install/ ইনস্টল করেছেন

github.com/UB-Mannheim/tesseract/wiki

opencv.org/

Server.py:

আমদানি ড্রপবক্স থেকে পিআইএল আমদানি ইমেজ আমদানি সিভি 2 আমদানি পাইটিসেক্ট থেকে পাইটসেক্ট আমদানি আউটপুট আমদানি অস্পষ্ট হিসাবে এনপি আমদানি উলফ্রামালফা আমদানি সকেট আমদানি সময়

dbx = ড্রপবক্স। ড্রপবক্স ("dropboxAPIkey")

s = socket.socket (socket. AF_INET, socket. SOCK_STREAM)

app_id = "অ্যাপ-আইডি"

হোস্ট = socket.gethostname ()

port = 60567 print (host) s.bind ((host, port)) s.listen (2)

যখন সত্য:

c, addr = s.accept () print (f'Got connection from: {addr} ') বিরতি

যখন সত্য:

সত্য যখন: time.sleep (13.7) মেটাডেটা, f = dbx.files_download ("/dropbox_API/Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) out। বন্ধ () প্রিন্ট ("ছবি ডাউনলোড!") ইমেজ = cv2.imread ("Image.jpg") ইমেজ = cv2.resize (ইমেজ, (640, 480), ইন্টারপোলেশন = cv2. INTER_AREA) image68 = cv2.rotate (ছবি, cv2. ROTATE_90_COUNTERCLOCKWISE) ধূসর = cv2.cvtColor (image68, cv2. COLOR_BGR2GRAY)

def remove_noise (ধূসর):

cv2.medianBlur (ধূসর, 5) ডিফ থ্রেশহোল্ডিং (ধূসর): cv2.threshold (ধূসর, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] ডিফ ডিলেট (ধূসর): কার্নেল = np.ones ((5, 5), np.uint8) cv2.dilate (ধূসর, কার্নেল, পুনরাবৃত্তি = 1) d = pytesseract.image_to_data (ধূসর, output_type = Output. DICT)

n_boxes = len (d ['text'])

i এর পরিসরে (n_boxes): যদি int (d ['conf'] )> 60: (x, y, w, h) = (d ['left'] , d ['top'] , d ['width'] , d ['height'] ) ধূসর = cv2.rectangle (ধূসর, (x, y), (x + w, y + h), (0, 255, 0), 2) বিরতি pytesseract.pytesseract.tesseract_cmd = r "C: / Program Files / Tesseract-OCR / tesseract.exe" text = pytesseract.image_to_string (ধূসর) প্রিন্ট (টেক্সট) যখন সত্য: text2 = " "if len (text)> = 2: c.send (bytes (text," utf-8 ")) if len (text) = 2: query = text client = wolframalpha. Client (app_id) res = client.query (query) answer = next (res.results)। text answer1 = answer.partition ('\ n') [0] print (answer1) c.send (bytes (answer1, "utf-8")) যদি len (টেক্সট) <= 1: c.send (বাইট (text2, "utf-8")) time.sleep (7.5) বিরতি

Client.py:

luma.core.interface.serial থেকে আমদানি ড্রপবক্সপোর্ট আমদানি আমদানি সময় luma.core.reerial থেকে আমদানি i2c luma.oled.device থেকে আমদানি ক্যানভাস আমদানি ssd1306, ssd1325, ssd1331, sh1106 আমদানি সকেট আমদানি তারিখ থেকে সময় আমদানি ঘুম আমদানি pyowm সিরিয়াল = i2c (port = 1, address = 0x3C) device = ssd1306 (serial, rotate = 1) camera = picamera. PiCamera () dropbox_access_token = "" #তোমার ড্রপবক্স-আইডি আবার computer_path = r "/home/pi/Image.jpg" dropbox_path = f "/dropbox_API/Image.jpg" s = socket.socket (socket. AF_INET, socket. SOCK_STREAM) host = "" আপনার পিসি পোর্টের #ip ঠিকানা = 60567 s.connect ((host, port)) msg1 = "" owm = pyowm. OWM ("")#app-id for openweathermap num = ["05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "00"] cdt = datetime.datetime.now () min1 = str (cdt.minute) তারিখ = str (cdt.day) + "/" + str (cdt মাস) + "/" + str (cdt.year) obs = owm.weather_at_place ("")#আপনার শহর এবং দেশ স্ট্রিং বিন্যাসে আবহাওয়া = obs.get_weather () temp2 = str (weather.get_temperature ("ফারেনহাইট") ["তে mp_max "]) temp3 = str (weather.get_temperature (" ফারেনহাইট ") [" temp_min "]) যখন সত্য: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) ড্র হিসাবে ক্যানভাস (ডিভাইস) সহ: draw.text ((0, 0), hour, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") draw.text ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white ") যদি min এ num1 হয়: obs = owm.weather_at_place (" ")#আপনার শহর এবং দেশ আবার স্ট্রিং ফরম্যাটে

আবহাওয়া = obs.get_weather ()

temp = str (weather.get_temperature ("ফারেনহাইট") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, পূরণ = "সাদা") যদি মিনি 1 নম্বরে না থাকে: draw.text ((40, 0), temp2, fill = "white") draw.text ((32, 0), "F", fill = "white") camera.start_preview () time.sleep (2) camera.capture ("/home/pi/Image.jpg") camera.stop_preview client = dropbox. Dropbox (dropbox_access_token) প্রিন্ট ("[SUCCESS] ড্রপবক্স অ্যাকাউন্ট লিঙ্ক") ক্লায়েন্ট files_upload (open (computer_path, "rb")। read (), dropbox_path) print ("[UPLOADED] {}"। format (computer_path)) full_msg = "" time.sleep (5) msg = s.recv (100) যদি len (msg)> = 2: full_msg += msg.decode ("utf-8") print (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour ক্যানভাসে 11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") draw.text ((0, 9), "_", fill = " সাদা ") draw.text ((0, 9), তারিখ, পূরণ = সাদা

আবহাওয়া = obs.get_weather ()

temp = str (weather.get_temperature ("ফারেনহাইট") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, পূরণ = "সাদা") যদি মিনি 1 নম্বরে না থাকে: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") যদি len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) with canvas (device) as draw: draw.text ((0, 0)), ঘন্টা, পূরণ = "সাদা") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") ড্র। টেক্সট ((0, 9), "_", পূরণ = "সাদা") draw.text ((0, 9), তারিখ, ভরাট = "সাদা") যদি min1 সংখ্যায়: obs = owm.weather_at_place ("") #আপনার শহর এবং দেশ আবার স্ট্রিং ফর্ম্যাটে

আবহাওয়া = obs.get_weather ()

temp = str (weather.get_temperature ("ফারেনহাইট") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, পূরণ = "সাদা") যদি মিনি 1 নম্বরে না থাকে: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") time.sleep (5.4) full_msg1 = "" msg1 = s.recv (100) if len (msg1)> = 2: full_msg1 += msg1.decode ("utf-8") full_msg2 = ("\ n".join (textwrap.wrap (full_msg1, 9))) cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) with canvas (device) as draw: draw.text ((0, 19), full_msg, fill = "white") draw.text ((0, 29), full_msg2, fill = "white") draw.text ((0, 0), hour, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") draw.text ((0, 9), "_", পূরণ করুন = "সাদা") draw.text ((0, 9), তারিখ, ভরাট = "সাদা") যদি মিনিটে সংখ্যা 1 হয়: obs = owm.weather_at_place ("")#আপনার শহর এবং দেশ আবার স্ট্রিং ফরম্যাটে

আবহাওয়া = obs.get_weather ()

temp = str (weather.get_temperature ("ফারেনহাইট") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, পূরণ = "সাদা") যদি মিনি 1 নম্বরে না থাকে: obs = owm.weather_at_place ("")#আপনার শহর এবং দেশ আবার স্ট্রিং ফরম্যাটে

আবহাওয়া = obs.get_weather ()

temp = str (weather.get_temperature ("ফারেনহাইট") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, পূরণ = "সাদা") যদি মিনি 1 নম্বরে না থাকে: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") যদি len (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) ক্যানভাস (ডিভাইস) সহ ড্র: draw.text ((0, 0)), ঘন্টা, পূরণ = "সাদা") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") ড্র। টেক্সট ((0, 9), "_", পূরণ = "সাদা") ড্র। #আপনার শহর এবং দেশ আবার স্ট্রিং ফরম্যাটে

আবহাওয়া = obs.get_weather ()

temp = str (weather.get_temperature ("ফারেনহাইট") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, পূরণ = "সাদা") যদি মিনি 1 নম্বরে না থাকে: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") time.sleep (7) client.files_delete (dropbox_path) প্রিন্ট ("ফাইল মুছে ফেলা হয়েছে")

পুনশ্চ. আমি একজন অপেশাদার প্রোগ্রামার তাই দয়া করে আমার ভয়ানক প্রোগ্রামিং পদ্ধতি নিয়ে প্রশ্ন করবেন না।

ধাপ 4: সবকিছু একসাথে করা

সবগুলোকে একত্রে রাখ!
সবগুলোকে একত্রে রাখ!

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

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

www.youtube.com/channel/UCGqcWhHXdZf231rLe…

আল্লাহ রক্ষা করেন!

জন 3:16 "Godশ্বর বিশ্বকে এতটাই ভালবাসতেন যে তিনি তাঁর একমাত্র ও একমাত্র পুত্রকে দিয়েছিলেন, যিনি এখন পর্যন্ত তাঁকে বিশ্বাস করেন তিনি বিনষ্ট হবেন না কিন্তু একটি অনন্ত জীবন পাবেন।"

প্রস্তাবিত: