Obsah:

Inteligentné okuliare: 4 kroky
Inteligentné okuliare: 4 kroky

Video: Inteligentné okuliare: 4 kroky

Video: Inteligentné okuliare: 4 kroky
Video: 40 отборных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #2 2024, November
Anonim
Inteligentné okuliare
Inteligentné okuliare
Inteligentné okuliare
Inteligentné okuliare

Ahojte všetci, dnes vám ukážem, ako si vyrobiť inteligentné okuliare doma! Jednou z najväčších vecí na inteligentných okuliaroch je to, aké prospešné je mať niečo také v dnešnom svete technológií a že neexistuje len jedna verzia inteligentných okuliarov, pretože všetky majú úžasné funkcie a nekonečné množstvo aplikácií, ktoré je možné integrovať. v budúcnosti. Medzi vlastnosti týchto inteligentných okuliarov patrí informovanie o čase, informácia o teplote každých 5 minút, medzi týmito 5 minútami sa prepína medzi očakávanou vysokou a nízkou teplotou v daný deň a tiež vám oznámi dátum. Jeho hlavnou črtou je, že každých 10 sekúnd urobí obrázok a potom tento obrázok analyzuje na text, v ktorom o ňom vráti užitočné informácie. Ak nájde otázku, odpovie na ňu pomocou wolframu alebo ak nájde matematickú rovnicu. vyrieši to!

Zásoby:

Dodávky potrebné pre tento projekt budú zahŕňať:

1) Raspberry Pi 0 W (od vilros.com)

2) Jasný 128 x 64 OLED displej (zo Sparkfun.com)

3) Modul kamery naformátovaný pre Raspberry Pi 0 W (od amazon.com)

4) Akékoľvek okuliare podľa vášho výberu

5) Drôty

6) Spájkovačka

7) Bezolovnatá spájka (pretože nechcete zomrieť na olovo)

8) 2 -cestné lepidlo

9) SD karta min. 8 GB

10) počítač a internetové pripojenie

Za predpokladu, že už máte počítač a internetové pripojenie, náklady na tieto okuliare sa budú pohybovať okolo 130,00 dolárov

Krok 1: Zapojenie obvodu

Zapojenie obvodu!
Zapojenie obvodu!

Aby sa na obrazovke zobrazil text, ktorý sa chystáte pripojiť k OLED pomocou I2C alebo SPI, vybral som I2C, pretože je to ten, ktorý používam pohodlnejšie, ale ak máte pocit, že sa k nemu chcete pripojiť prostredníctvom SPI, postupujte podľa tohto návodu na na webovú stránku Sparkfun a vráťte sa sem, keď budete hotoví. https://learn.sparkfun.com/tutorials/transparent-g… Ak ste vybrali I2C, spájkujem vodiče podľa nasledujúceho popisu:

Pi \/ OLED \/

3,3v 3,3v

GND GND

SDA SDA

SCL SCL

Upozorňujeme, že čistý OLED môže pracovať iba s napätím 3,3 V.

Po dokončení zapojenia zapojte plochý kábel kamerového modulu do držiaka plochého kábla na malinovom pi tak, že vytiahnete čiernu svorku a zasuniete ju späť, keď je plochý kábel na svojom mieste.

Krok 2: Prístup k Raspberry Pi

Pomocou ssh môžeme k počítaču pristupovať pomocou počítača bez toho, aby sme museli pripájať externú klávesnicu a monitor. Prvá vec, ktorú musíte urobiť, je pripojiť kartu SD k počítaču pomocou adaptéra alebo vstavaného portu. Potom budete musieť prejsť na tento odkaz https://www.raspberrypi.org/downloads/raspbian/ a stiahnuť nástroj Raspbian buster s pracovnou plochou. Za druhé, musíte vložiť operačný systém na kartu SD pomocou programu BalenaEtcher, vyberte svoju kartu SD a operačný systém Raspbian a kliknite na tlačidlo „flash“. Tento proces môže chvíľu trvať, takže sa vráťte, keď skončíte. Po tretie, choďte na kartu SD v programe Prieskumník súborov alebo vyhľadávač v systéme Mac a vytvorte textový súbor s názvom wpa_supplicant. Uistite sa, že ste odstránili príponu.txt a pridali.conf, do súboru vložte nasledujúce:

krajina = USA

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

Ak nie ste v USA, budete musieť zadať svoje WiFi meno a heslo na príslušných miestach a krajine. Majte na pamäti, že Raspberry Pi sa môže pripojiť iba k sieti 2,4 GHz, čo znamená, že k tejto sieti sa bude musieť pripojiť aj váš počítač. Po vytvorení prázdneho textového súboru bez prípony ssh ssh a následnom vysunutí karty SD. Potom budete musieť nainštalovať PuTTY https://www.putty.org/, čo budete používať na povolenie ssh. Po inštalácii zadajte IP adresu vášho malinového pi

Keď získate prístup k Raspberry Pi, požiada vás o prihlásenie, predvolené používateľské meno je „pi“a heslo „malina“. Zadajte príkaz sudo raspi-config, potom prejdite na možnosti rozhrania a povoľte fotoaparát, ssh a i2c, potom kliknite na tlačidlo Dokončiť a zadajte príkaz sudo reboot. Teraz ste pripravení ssh do Raspberry Pi, pokračujte a nainštalujte si Vzdialenú plochu a zadajte IP adresu vášho Raspberry Pi a teraz môžete ssh siahnuť do Raspberry Pi.

Krok 3: Kódovací čas

Čas kódovania!
Čas kódovania!

Rozhodol som sa kódovať tento program v pythone, takže sa uistite, že máte na pracovnej ploche nainštalovaný python3.7 alebo 3.8. Tento kód funguje pomocou servera a klienta, pričom sever je váš počítač. Klient alebo malina pi urobí fotografiu a uloží ju do schránky, ktorú stiahne server, ktorý potom na obrázku spustí spracovanie obrazu a rozpoznanie textu. Na to, aby to fungovalo, budete musieť získať wolframalpha, dropbox a openweathermap ID aplikácie. Stačí sa zaregistrovať na webových stránkach a získate ID aplikácie. a potom ich zadajte na zodpovedajúce miesta určené komentármi v kóde. Uistite sa, že máte všetko nainštalované a nainštalované Tesseract OCR a OpenCV. Vytvorte na počítači súbor pythonu s názvom Server.py a na serveri Raspberry Pi súbor s názvom client.py a potom skopírujte a prilepte kód. Ale vedzte, že čím odvážnejšie sú postavy a belšie pozadie, tým lepšie sú výsledky, to je prípad každého softvéru na rozpoznávanie textu.

Všetky odkazy na registráciu ID aplikácie \/

www.wolframalpha.com/

openweathermap.org/api

www.dropbox.com/developers/documentation

Nezabudnite nainštalovať Tesseract OCR a OpenCV \/

github.com/UB-Mannheim/tesseract/wiki

opencv.org/

Server.py:

import dropbox z PIL import Image import cv2 import pytesseract from pytesseract import Output import numpy as np import wolframalpha import socket socket import time

dbx = dropbox. Dropbox ("dropboxAPIkey")

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

app_id = "ID aplikácie"

hostiteľ = socket.gethostname ()

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

kým je pravda:

c, addr = s.accept () print (f'Got connection from: {addr} ') break

kým je pravda:

zatiaľ čo True: metadáta time.sleep (13.7), f = dbx.files_download ("/dropbox_API/Image.jpg") out = otvorené ("Image.jpg", 'wb') out.write (f.content) von. close () print ("Obrázok stiahnutý!") image = cv2.imread ("Image.jpg") Image = cv2.resize (obrázok, (640, 480), interpolation = cv2. INTER_AREA) image68 = cv2.rotate (obrázok, cv2. ROTATE_90_COUNTERCLOCKWISE) sivá = cv2.cvtColor (image68, cv2. COLOR_BGR2GREY)

def remove_noise (sivý):

return cv2.medianBlur (sivá, 5) def prahová hodnota (sivá): návratová hodnota cv2.threshold (sivá, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilatovať (šedá): jadro = np.ones ((5, 5), np.uint8) návrat cv2.dilate (sivý, jadro, iterácie = 1) d = pytesseract.image_to_data (sivý, typ_výstupu = Output. DICT)

n_boxes = len (d ['text'])

pre i v rozsahu (n_boxov): if int (d ['conf'] )> 60: (x, y, w, h) = (d ['left'] , d ['top'] , d ['šírka'] , d ['výška'] ) sivá = cv2. obdĺžnik (sivá, (x, y), (x + w, y + h), (0, 255, 0), 2) break pytesseract.pytesseract.tesseract_cmd = r "C: / Program Files / Tesseract-OCR / tesseract.exe" text = pytesseract.image_to_string (sivý) print (text) while 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 (dotaz) answer = ďalší (výsledky.výsledky).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:

import dropboximport picameraimport čas z luma.core.interface.serial import i2c from luma.core.render import canvas from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106 import socket import datetime from time import sleep import pyowm serial = i2c (port = 1, adresa = 0x3C) zariadenie = ssd1306 (sériové, otočenie = 1) kamera = picamera. PiCamera () dropbox_access_token = "" #Vase dropbox-id znova 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 adresa portu vášho počítača = 60567 s.connect ((hostiteľ, port)) msg1 = "" owm = pyowm. OWM ("")#ID aplikácie pre openweathermap num = ["05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "00"] cdt = datetime.datetime.now () min1 = str (cdt.minute) date = str (cdt.day) + "/" + str (cdt. mesiac) + "/" + str (cdt.year) obs = owm.weather_at_place ("")#vaše mesto a krajina vo formáte reťazca weather = obs.get_weather () temp2 = str (weather.get_temperature ("fahrenheit") ["te mp_max "]) temp3 = str (weather.get_temperature (" fahrenheit ") [" temp_min "]) while True: cdt = datetime.datetime.now () min1 = str (cdt.minute) hodina = str (cdt.hour) s canvas (zariadenie) ako draw: 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 ") if min1 in num: obs = owm.weather_at_place (" ")#your city and country again in string format

Počasie = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "white") if min1 not in num: 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) print ("[SUCCESS] dropbox account propojený") klient. files_upload (otvorený (cesta_počítača, "rb"). čítanie (), cesta_krabici) print ("[UPLOADED] {}". formát (cesta_počítača)) full_msg = "" time.sleep (5) msg = s.recv (100) ak len (msg)> = 2: full_msg += msg.decode ("utf-8") print (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) hodina = str (cdt.hour) s canvas (zariadenie) ako draw: draw.text ((0, 19), full_msg, 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), "_", fill = " biela ") draw.text ((0, 9), dátum, výplň = "biele") ak min1 v num: obs = owm.weather_at_place ("")#vaše mesto a krajina opäť vo formáte reťazca

Počasie = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "white") if min1 not in num: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") if len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) with canvas (device) as draw: draw.text ((0, 0), hodina, výplň = "biela") draw.text ((11, 0), ":", fill = "biela") draw.text ((15, 0), min1, fill = "biela") kresba. text ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white") if min1 in num: obs = owm.weather_at_place ("") #veľa mesto a krajina opäť v reťazcovom formáte

Počasie = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "white") if min1 not in num: 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) hodina = str (cdt.hour) s plátnom (zariadením) ako kresba: 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), "_", fill = "white") draw.text ((0, 9), date, fill = "white") if min1 in num: obs = owm.weather_at_place ("")#your town and country again in string format

Počasie = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "white") if min1 not in num: obs = owm.weather_at_place ("")#your city and country again in string format

Počasie = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "white") if min1 not in num: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") ak len (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hodina = str (cdt.hour) s plátnom (zariadením) ako kresba: draw.text ((0, 0), hodina, výplň = "biela") draw.text ((11, 0), ":", fill = "biela") draw.text ((15, 0), min1, fill = "biela") kresba. text ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white") if min1 in num: obs = owm.weather_at_place ("") #veľa mesto a krajina opäť v reťazcovom formáte

Počasie = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "white") if min1 not in num: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") time.sleep (7) client.files_delete (dropbox_path) print ("Súbory vymazané")

P. S. Som amatérsky programátor, takže prosím nespochybňujte moje hrozné metódy programovania.

Krok 4: Dajte to všetko dohromady

Dávať to všetko dokopy!
Dávať to všetko dokopy!

Keď máte hotovo všetko ostatné, ste prakticky hotoví, zostáva vám už len pripojiť malinový pi fotoaparát a displej k okuliarom. Môžete to urobiť pomocou obojstranného lepidla uvedeného v dodávkach alebo môžete použiť akékoľvek metódy, ktoré považujete za potrebné. Tiež ste si mohli všimnúť, že som v tejto lekcii nikde nespomenul batériu, pretože som mal v pláne budúce vylepšenia týchto okuliarov a nechcel som ich teraz pripevňovať. Ale ak ho chcete pripojiť, budete potrebovať nabíjací obvod li-po z Amazonu

Ak sa vám to páčilo a chcete vidieť viac, založil som kanál YouTube a dúfam, že tam uverejním aj návody. Tu je odkaz:

www.youtube.com/channel/UCGqcWhHXdZf231rLe…

Boh zachraňuje!

Ján 3:16 „Pretože Boh tak miloval svet, že dal svojho jednorodeného Syna, ten, kto v neho verí, nezahynie, ale bude mať večný život“.

Odporúča: