विषयसूची:

स्मार्ट चश्मा: 4 कदम
स्मार्ट चश्मा: 4 कदम

वीडियो: स्मार्ट चश्मा: 4 कदम

वीडियो: स्मार्ट चश्मा: 4 कदम
वीडियो: 10 Best Smart Glasses You Can BUY NOW On Amazon 2020 | Video Calling Glasses You Can Buy On Amazon 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 को चुना है क्योंकि मेरे पास निम्नलिखित के अनुसार तारों को मिलाप है:

पाई \/ OLED \/

3.3v 3.3v

जीएनडी जीएनडी

एसडीए एसडीए

एससीएल एससीएल

कृपया ध्यान दें कि स्पष्ट OLED केवल 3.3v को संभाल सकता है।

आपके द्वारा सर्किट कनेक्ट करना समाप्त करने के बाद, कैमरा मॉड्यूल के रिबन केबल को रास्पबेरी पाई पर रिबन केबल होल्डर में काले क्लैंप को खींचकर और रिबन केबल के स्थान पर वापस स्लाइड करके स्लाइड करें।

चरण 2: रास्पबेरी पाई तक पहुंचना

एसएसएच का उपयोग करके हम अतिरिक्त बाहरी कीबोर्ड माउस और मॉनिटर को कनेक्ट किए बिना अपने पीसी के साथ अपने पीआई तक पहुंच सकते हैं। सबसे पहले आप अपने एसडी कार्ड को अपने पीसी में एडॉप्टर या बिल्ट इन पोर्ट से कनेक्ट करें, फिर आपको इस लिंक पर जाने की जरूरत है https://www.raspberrypi.org/downloads/raspbian/ और डाउनलोड करें रास्पियन बस्टर डेस्कटॉप के साथ। दूसरा आपको BalenaEtcher का उपयोग करके OS को SD कार्ड पर रखना होगा अपने SD कार्ड और रास्पियन OS का चयन करें और "फ़्लैश" पर क्लिक करें, इस प्रक्रिया में कुछ समय लग सकता है इसलिए जब आप समाप्त कर लें तो वापस आ जाएँ। तीसरा मैक पर फाइल एक्सप्लोरर या फाइंडर में एसडी कार्ड पर जाएं और wpa_supplicant नाम की एक टेक्स्ट फाइल बनाएं।.txt एक्सटेंशन को हटाना सुनिश्चित करें और.conf जोड़ें, फाइल में निम्नलिखित पेस्ट करें:

देश = यूएस

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 नेटवर्क={ ssid="WIFI_SSID" scan_ssid=1 psk="WIFI_PASSWORD" key_mgmt=WPA-PSK }

यदि आप यूएसए में नहीं हैं तो आपको संबंधित स्थानों और देश में अपना वाईफाई नाम और पासवर्ड दर्ज करना होगा। ध्यान रखें कि रास्पबेरी पाई केवल 2.4Ghz नेटवर्क से कनेक्ट हो सकती है, जिसका अर्थ है कि आपके पीसी को भी उस नेटवर्क से कनेक्ट करना होगा। ssh नामक एक्सटेंशन के बिना एक खाली टेक्स्ट फ़ाइल बनाने के बाद और फिर अपना एसडी कार्ड निकालें। फिर आपको PuTTY https://www.putty.org/ इंस्टॉल करना होगा, जिसका उपयोग आप ssh को सक्षम करने के लिए करेंगे। एक बार स्थापित होने के बाद अपने रास्पबेरी पाई का आईपी पता दर्ज करें, आप यह पता लगा सकते हैं कि यह आपके राउटर की वेबसाइट पर लॉग इन करके और कनेक्टेड डिवाइसों को देखकर पता लगा सकता है कि यह क्या है।

रास्पबेरी पाई तक पहुंच प्राप्त करने के बाद यह आपको लॉग-इन करने के लिए कहेगा, डिफ़ॉल्ट उपयोगकर्ता नाम "पीआई" है और पासवर्ड "रास्पबेरी" है। sudo raspi-config टाइप करें, फिर इंटरफेसिंग विकल्पों पर जाएं और कैमरा, ssh और i2c को सक्षम करें, फिर फिनिश पर क्लिक करें और sudo रिबूट टाइप करें। अब आप रास्पबेरी पाई में ssh करने के लिए तैयार हैं, आगे बढ़ें और रिमोट डेस्कटॉप स्थापित करें और अपने रास्पबेरी पाई का आईपी पता दर्ज करें और अब आप रास्पबेरी पाई में ssh करने के लिए अच्छे हैं।

चरण 3: कोडिंग समय

कोडिंग का समय!
कोडिंग का समय!

मैंने इस प्रोग्राम को अजगर में कोड करने के लिए चुना है, इसलिए सुनिश्चित करें कि आपके डेस्कटॉप पर python3.7 या 3.8 स्थापित है। यह कोड सर्वर और क्लाइंट का उपयोग करके काम करता है, सर्वर आपका पीसी है। क्लाइंट या रास्पबेरी पाई एक तस्वीर लेगा और उसे ड्रॉपबॉक्स पर अपलोड करेगा जो सर्वर द्वारा पुनर्प्राप्त किया जाता है जो तब छवि पर छवि प्रसंस्करण और पाठ पहचान चलाता है। इसके काम करने के लिए आपको एक वोल्फ्रामाल्फा, ड्रॉपबॉक्स और ओपनवेदरमैप ऐप-आईडी प्राप्त करनी होगी, आपको बस वेबसाइट साइन-अप पर जाना है और यह आपको एक ऐप-आईडी देगा। और फिर उन्हें कोड में टिप्पणियों द्वारा निर्धारित संबंधित स्थानों में इनपुट करें। सुनिश्चित करें कि आपने पाइप को सब कुछ स्थापित कर दिया है और Tesseract OCR और OpenCV स्थापित किया है। अपने पीसी पर Server.py नाम की एक अजगर फ़ाइल और रास्पबेरी पाई पर client.py नाम की एक फ़ाइल बनाएं और फिर कोड को कॉपी और पेस्ट करें। लेकिन यह जान लें कि पात्र जितने बोल्ड और बैकग्राउंड को सफेद करते हैं, परिणाम उतने ही बेहतर होते हैं, हर टेक्स्ट रिकग्निशन सॉफ्टवेयर के साथ ऐसा ही होता है।

ऐप-आईडी के लिए साइन-अप करने के सभी लिंक \/

www.wolframalpha.com/

openweathermap.org/api

www.dropbox.com/developers/documentation

सुनिश्चित करें कि आपने Tesseract OCR और OpenCV स्थापित किया है \/

github.com/UB-Mannheim/tesseract/wiki

opencv.org/

सर्वर.py:

पीआईएल आयात से ड्रॉपबॉक्स आयात करें छवि आयात cv2 pytesseract आयात से pytesseract आयात करें np आयात wolframalpha आयात सॉकेट आयात समय के रूप में आउटपुट आयात numpy

डीबीएक्स = ड्रॉपबॉक्स। ड्रॉपबॉक्स ("ड्रॉपबॉक्सएपीआईकी")

एस = सॉकेट। सॉकेट (सॉकेट। AF_INET, सॉकेट। SOCK_STREAM)

app_id = "ऐप-आईडी"

होस्ट = सॉकेट। gethostname ()

पोर्ट = ६०५६७ प्रिंट (होस्ट) s.bind ((होस्ट, पोर्ट)) s.listen(२)

जबकि सच:

c, addr = s.accept() प्रिंट (f'इससे कनेक्शन मिला: {addr}') ब्रेक

जबकि सच:

जबकि ट्रू: टाइम.स्लीप(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) इमेज 68 = cv2.rotate (इमेज, cv2. ROTATE_90_COUNTERCLOCKWISE) ग्रे = cv2.cvtColor(image68, cv2. COLOR_BGR2GRAY)

def remove_noise (ग्रे):

वापसी cv2.medianBlur (ग्रे, 5) डीईएफ़ थ्रेशोल्डिंग (ग्रे): वापसी cv2.थ्रेशोल्ड (ग्रे, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] डिलेट (ग्रे): कर्नेल = np.ones ((5, 5), np.uint8) वापसी cv2.dilate (ग्रे, कर्नेल, पुनरावृत्तियों = 1) d = pytesseract.image_to_data (ग्रे, आउटपुट_टाइप = आउटपुट। डीआईसीटी)

n_boxes = लेन (डी ['पाठ'])

मैं रेंज में (n_boxes) के लिए: अगर int(d['conf'])> 60: (x, y, w, h) = (d['left'], d['top' , d ['चौड़ाई'] , d ['ऊंचाई'] ) ग्रे = cv2.rectangle (ग्रे, (x, y), (x + w, y + h), (०, २५५, ०), २) ब्रेक pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe" text = pytesseract.image_to_string(gray) Print(text) जबकि True: 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(क्वेरी) उत्तर = अगला(res.results).text answer1 = answer.partition('\n')[0] Print (answer1) c.send(bytes(answer1, "utf-8")) if len(text) <= 1: c.send(bytes(text2, "utf-8")) time.sleep(7.5) break

Client.py:

luma.core.interface.serial से आयात ड्रॉपबॉक्स आयात पिकामेरा आयात समय luma.core से आयात i2c। luma.oled.device से कैनवास आयात करें पोर्ट = 1, पता = 0x3C) डिवाइस = ssd1306 (धारावाहिक, घुमाएँ = 1) कैमरा = पिकामेरा। f"/dropbox_API/Image.jpg" s = सॉकेट। owm = pyowm. OWM("")#app-id for openweathermap num = ["05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "00"] सीडीटी = datetime.datetime.now() min1 = str(cdt.minute) date = str(cdt.day) + "/" + str(cdt. महीना) + "/" + str(cdt.year) obs = owm.weather_at_place("")# आपका शहर और देश स्ट्रिंग प्रारूप में मौसम = obs.get_weather() temp2 = str(weather.get_temperature("fahrenheit")["ते mp_max"]) temp3 = str(weather.get_temperature("fahrenheit")["temp_min"]) जबकि ट्रू: cdt = datetime.datetime.now() min1 = str(cdt.minute) घंटा = str(cdt.hour) ड्रा के रूप में कैनवास (डिवाइस) के साथ: ड्रा। टेक्स्ट ((0, 0), घंटा, भरण = "सफेद") ड्रा। टेक्स्ट ((11, 0), ":", भरण = "सफेद") ड्रा। टेक्स्ट ((१५, ०), मिन १, फिल = "व्हाइट") ड्रा.टेक्स्ट ((०, ९), "_", फिल = "व्हाइट") ड्रा.टेक्स्ट ((0, 9), तारीख, फिल = "व्हाइट" ") यदि न्यूनतम 1 संख्या में: obs = owm.weather_at_place("")#आपका शहर और देश फिर से स्ट्रिंग प्रारूप में

मौसम = obs.get_weather ()

अस्थायी = str (weather.get_temperature ("फ़ारेनहाइट") ["temp"]) ड्रा। टेक्स्ट ((32, 0), "F", भरण = "सफेद") ड्रा। टेक्स्ट ((४०, ०), अस्थायी, भरें = "सफेद") यदि न्यूनतम 1 संख्या में नहीं है: ड्रा। टेक्स्ट ((40, 0), temp2, भरें = "सफेद") ड्रा। टेक्स्ट ((32, 0), "एफ", भरें = "सफेद") Camera.start_preview() time.sleep(2) camera.capture("/home/pi/Image.jpg") camera.stop_preview क्लाइंट = ड्रॉपबॉक्स। ड्रॉपबॉक्स (ड्रॉपबॉक्स_एक्सेस_टोकन) प्रिंट ("[सफलता] ड्रॉपबॉक्स खाता लिंक्ड") क्लाइंट। files_upload (खुला (कंप्यूटर_पथ, "आरबी")। पढ़ें (), ड्रॉपबॉक्स_पथ) प्रिंट ("[अपलोड] {}। प्रारूप (कंप्यूटर_पथ)) full_msg = "" समय। नींद (5) संदेश = s.recv (100) अगर len(msg) >= 2: full_msg += msg.decode("utf-8") प्रिंट (full_msg) cdt = datetime.datetime.now() min1 = str(cdt.minute) घंटा = str(cdt.hour) ड्रा के रूप में कैनवास (डिवाइस) के साथ: draw.text((0, 19), full_msg, fill = "white") draw.text((0, 0)), घंटा, भरण = "सफेद") ड्रा.टेक्स्ट ((११, ०), ":", फिल = "व्हाइट") ड्रा.टेक्स्ट ((१५, ०), मिन १, फिल = "व्हाइट") ड्रा। टेक्स्ट ((०, ९), "_", फिल = " सफेद") draw.text((0, 9), दिनांक, भरण = "सफ़ेद") अगर संख्या में min1: obs = owm.weather_at_place("")#आपका शहर और देश फिर से स्ट्रिंग प्रारूप में

मौसम = obs.get_weather ()

अस्थायी = str (weather.get_temperature ("फ़ारेनहाइट") ["temp"]) ड्रा। टेक्स्ट ((32, 0), "F", भरण = "सफेद") ड्रा। टेक्स्ट ((४०, ०), अस्थायी, भरण = "सफेद") यदि न्यूनतम १ संख्या में नहीं है: ड्रा। टेक्स्ट ((४०, ०), अस्थायी ३, भरण = "सफेद") ड्रा। टेक्स्ट ((३२, ०), "एफ", भरण = "सफेद") अगर लेन (msg) <= 1: cdt = datetime.datetime.now() min1 = str(cdt.minute) घंटा = str(cdt.hour) कैनवास (डिवाइस) के साथ ड्रॉ के रूप में: draw.text((0, 0), घंटा, भरण = "सफेद") draw.text((11, 0), ":", fill = "white") draw.text((15, 0)), min1, fill = "white") ड्रा करें। text((0, 9), "_", fill = "white") draw.text((0, 9), date, fill = "white") अगर min1 num में: obs = owm.weather_at_place("") #आपका शहर और देश फिर से स्ट्रिंग प्रारूप में

मौसम = obs.get_weather ()

अस्थायी = str(weather.get_temperature("farenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text ((40, 0)), अस्थायी, भरण = "सफेद") यदि न्यूनतम १ संख्या में नहीं है: ड्रा। टेक्स्ट ((४०, ०), अस्थायी ३, भरण = "सफेद") ड्रा। टेक्स्ट ((३२, ०), "एफ", भरण = "सफेद") time.sleep(5.4) full_msg1 = " " msg1 = s.recv(100) अगर लेन(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) घंटा = str(cdt.hour) कैनवास (डिवाइस) के साथ ड्रॉ के रूप में: draw.text((0, 19), full_msg, fill = "white") draw.text((0, 29), full_msg2, fill = "white") draw.text((0, 0), घंटा, फिल = "व्हाइट") ड्रा.टेक्स्ट ((११, ०), ":", भरण = "सफेद") ड्रा। टेक्स्ट ((१५, ०), न्यूनतम १, भरण = "सफेद") ड्रा। टेक्स्ट ((०, ९), "_", भरें = "सफेद") draw.text((0, 9), date, fill = "white") यदि min1 num में: obs = owm.weather_at_place("")#आपका शहर और देश फिर से स्ट्रिंग प्रारूप में

मौसम = obs.get_weather ()

अस्थायी = str (weather.get_temperature ("फ़ारेनहाइट") ["temp"]) ड्रा। टेक्स्ट ((32, 0), "F", भरण = "सफेद") ड्रा। टेक्स्ट ((४०, ०), अस्थायी, भरें = "सफेद") यदि न्यूनतम 1 संख्या में नहीं है: obs = owm.weather_at_place("")#आपका शहर और देश फिर से स्ट्रिंग प्रारूप में

मौसम = obs.get_weather ()

अस्थायी = str (weather.get_temperature ("फ़ारेनहाइट") ["temp"]) ड्रा। टेक्स्ट ((32, 0), "F", भरण = "सफेद") ड्रा। टेक्स्ट ((४०, ०), अस्थायी, भरें = "सफेद") यदि न्यूनतम 1 संख्या में नहीं है: ड्रा। टेक्स्ट ((40, 0), अस्थायी 3, भरें = "सफेद") ड्रा। टेक्स्ट ((32, 0), "एफ", भरें = "सफेद") यदि लेन (msg1) <= 1: cdt = datetime.datetime.now() min1 = str(cdt.minute) घंटा = str(cdt.hour) कैनवास (डिवाइस) के साथ ड्रॉ के रूप में: draw.text((0, 0), घंटा, भरण = "सफेद") ड्रा.टेक्स्ट ((११, ०), ":", भरण = "सफेद") ड्रा। टेक्स्ट ((१५, ०), मिन १, भरण = "सफेद") ड्रा। text((0, 9), "_", fill = "white") draw.text((0, 9), date, fill = "white") अगर min1 num में: obs = owm.weather_at_place("") #आपका शहर और देश फिर से स्ट्रिंग प्रारूप में

मौसम = obs.get_weather ()

अस्थायी = str(weather.get_temperature("farenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text ((40, 0)), अस्थायी, भरण = "सफेद") यदि न्यूनतम १ संख्या में नहीं है: ड्रा.टेक्स्ट ((४०, ०), अस्थायी ३, भरण = "सफेद") ड्रा। टेक्स्ट ((३२, ०), "एफ", भरण = "सफेद") time.sleep(7) client.files_delete(dropbox_path) प्रिंट ("फ़ाइलें हटाई गई")

पी.एस. मैं एक शौकिया प्रोग्रामर हूं इसलिए कृपया मेरी भयानक प्रोग्रामिंग विधियों पर सवाल न करें।

चरण 4: यह सब एक साथ रखना

यह सब एक साथ डालें!
यह सब एक साथ डालें!

एक बार जब आप बाकी सब कुछ समाप्त कर लेते हैं तो आप व्यावहारिक रूप से कर चुके होते हैं, जो आपको करना बाकी है, वह है रास्पबेरी पाई कैमरा संलग्न करना और चश्मे को प्रदर्शित करना। आप आपूर्ति में उल्लिखित दो तरफा चिपकने वाले का उपयोग करके ऐसा कर सकते हैं या आप किसी भी तरीके का उपयोग कर सकते हैं जो आपको आवश्यक लगता है। आपने यह भी देखा होगा कि मैंने इस पाठ में कहीं भी बैटरी का उल्लेख नहीं किया है, क्योंकि मेरे पास इन ग्लासों के लिए भविष्य के उन्नयन की योजना है और मैं अभी एक को संलग्न नहीं करना चाहता। लेकिन अगर आप एक संलग्न करना चाहते हैं तो आपको अमेज़ॅन से ली-पीओ चार्जर सर्किट की आवश्यकता होगी

यदि आपने इसका आनंद लिया है और अधिक देखना चाहते हैं, तो मैंने एक YouTube चैनल शुरू किया है और उम्मीद है कि मैं वहां पर भी ट्यूटोरियल पोस्ट करूंगा। लिंक यहां दिया गया है:

www.youtube.com/channel/UCGqcWhHXdZf231rLe…

भगवान बचाता है!

यूहन्ना 3:16 "क्योंकि परमेश्वर ने जगत से ऐसा प्रेम रखा कि उस ने अपना एकलौता पुत्र दे दिया, जो उस पर विश्वास करता है, वह नाश न हो, परन्तु अनन्त जीवन पाए।"

सिफारिश की: