Satura rādītājs:

Viedās brilles: 4 soļi
Viedās brilles: 4 soļi

Video: Viedās brilles: 4 soļi

Video: Viedās brilles: 4 soļi
Video: Будут ли 3Д очки работать в кинотеатре 2024, Jūlijs
Anonim
Viedās brilles
Viedās brilles
Viedās brilles
Viedās brilles

Sveiki visiem šodien, es jums parādīšu, kā mājās pagatavot viedās brilles! Viena no lielākajām lietām viedajās brillēs ir tas, cik izdevīgi ir kaut kas līdzīgs mūsdienu tehnoloģiju pasaulē un kā nav tikai vienas viedo brilles versijas, jo tām visām ir pārsteidzošas funkcijas un bezgalīgs skaits lietojumprogrammu, kuras varētu integrēt nākotnē. Šo viedo brilles iezīmes ietver laika noteikšanu, temperatūras noteikšanu ik pēc 5 minūtēm, starp šīm 5 minūtēm tā mainās starp gaidāmo augsto un zemo temperatūru šai dienai, kā arī norāda datumu. Bet tā galvenā iezīme ir tā, ka tā uzņem attēlu ik pēc 10 sekundēm un pēc tam analizē šo attēlu tekstam, kurā tas atgriezīs noderīgu informāciju par to; ja tas atradīs jautājumu, tas atbildēs uz to, izmantojot volframu, vai arī atrod matemātisko vienādojumu tas to atrisinās!

Piegādes:

Šim projektam nepieciešamās preces būs šādas:

1) A Raspberry Pi 0 W (no vilros.com)

2) Skaidrs 128x64 OLED displejs (no Sparkfun.com)

3) Kameras modulis, kas formatēts Raspberry Pi 0 W (no amazon.com)

4) Jebkuras brilles pēc jūsu izvēles

5) Vadi

6) lodāmurs

7) lodēt bez svina (jo jūs nevēlaties mirt no svina)

8) divvirzienu līme

9) SD karte vismaz 8 GB

10) dators un interneta pieslēgums

Pieņemot, ka jums jau ir dators un interneta pieslēgums, šo brilles izmaksas būs aptuveni 130,00 USD

1. solis: ķēdes pieslēgšana

Vadu ķēde!
Vadu ķēde!

Lai ekrānā parādītu tekstu, kuram, izmantojot I2C vai SPI, būs jāizveido savienojums ar OLED, es izvēlos I2C, jo tā ir ērtāka lietošana, bet, ja vēlaties izveidot savienojumu ar to, izmantojot SPI, dodieties uz šo pamācību Sparkfun vietni un atgriezieties šeit, kad esat pabeidzis. https://learn.sparkfun.com/tutorials/transparent-g… Ja esat izvēlējies I2C, jo es esmu pielodējis vadus, kā norādīts tālāk:

Pi \/ OLED \/

3.3v 3.3v

GND GND

SDA SDA

SCL SCL

Lūdzu, ņemiet vērā, ka caurspīdīgais OLED spēj apstrādāt tikai 3.3V.

Kad esat pabeidzis ķēdes pievienošanu, iebīdiet kameras moduļa lentes kabeli aveņu pi lentes kabeļa turētājā, izvelkot melno skavu un iebīdot to atpakaļ, kad lentes kabelis ir ievietots.

2. darbība. Piekļuve Raspberry Pi

Izmantojot ssh, mēs varam piekļūt mūsu pi ar datoru, nepievienojot papildu ārējo tastatūras peli un monitoru. Vispirms pievienojiet SD karti datoram ar adapteri vai iebūvētu portu, tad jums būs jāiet uz šo saiti https://www.raspberrypi.org/downloads/raspbian/ un lejupielādējiet Raspbian buster ar darbvirsmu. Otrkārt, jums ir jāieliek operētājsistēma SD kartē, izmantojot BalenaEtcher, atlasiet savu SD karti un Raspbian OS un noklikšķiniet uz "flash", šis process var aizņemt kādu laiku, tāpēc atgriezieties, kad esat pabeidzis. Treškārt, dodieties uz SD karti failu pārlūkā vai Mac meklētājā un izveidojiet teksta failu ar nosaukumu wpa_supplicant. Noteikti izdzēsiet.txt paplašinājumu un pievienojiet.conf, failā ielīmējiet šo:

valsts = ASV

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

Ja neatrodaties ASV, jums būs jāievada savs WiFi nosaukums un parole attiecīgajās vietās un valstī. Paturiet prātā, ka Raspberry Pi var izveidot savienojumu tikai ar 2,4 GHz tīklu, kas nozīmē, ka arī jūsu datoram būs jāpievienojas šim tīklam. Pēc tam izveidojiet tukšu teksta failu bez paplašinājuma ar nosaukumu ssh un pēc tam izņemiet SD karti. Pēc tam jums būs jāinstalē PuTTY https://www.putty.org/, ko izmantosit, lai iespējotu ssh. Kad esat instalējis, ievadiet sava aveņu pi IP adresi, jūs varat saprast, kas tā ir, dodoties uz maršrutētāja vietni, piesakoties un apskatot pievienotās ierīces.

Pēc piekļuves Raspberry Pi tas lūgs jums pieteikties, noklusējuma lietotājvārds ir "pi" un parole ir "aveņu". Ierakstiet sudo raspi-config, pēc tam dodieties uz saskarnes opcijām un iespējojiet kameru, ssh un i2c, pēc tam noklikšķiniet uz Pabeigt un ierakstiet sudo reboot. Tagad jūs esat gatavs ssh ievadīt aveņu pi, dodieties uz priekšu un instalējiet attālo darbvirsmu un ievadiet aveņu pi IP adresi, un tagad jūs varat ssh ievadīt aveņu pi.

3. solis: kodēšanas laiks

Kodēšanas laiks!
Kodēšanas laiks!

Esmu izvēlējies kodēt šo programmu python, tāpēc pārliecinieties, vai jūsu darbvirsmā ir instalēta python3.7 vai 3.8. Šis kods darbojas, izmantojot serveri un klientu, un serveris ir jūsu dators. Klients vai aveņu pi uzņems attēlu un augšupielādēs to dropbox, kuru izgūst serveris, kurš pēc tam attēlam palaiž attēlu apstrādi un teksta atpazīšanu. Lai tas darbotos, jums būs jāiegūst wolframalpha, dropbox un openweathermap app-id. Viss, kas jums jādara, ir jāiet uz reģistrēšanos vietnēs, un tas jums piešķirs lietotnes ID. un pēc tam ievadiet tos atbilstošās vietās, kuras nosaka koda komentāri. Pārliecinieties, vai esat instalējis pip visu un instalējis Tesseract OCR un OpenCV. Izveidojiet savā datorā python failu ar nosaukumu Server.py un aveņu pi failu ar nosaukumu client.py un pēc tam nokopējiet un ielīmējiet kodu. Bet ziniet, ka, jo drosmīgākas rakstzīmes un baltāks fons, jo labāki rezultāti, tā tas ir ar katru teksta atpazīšanas programmatūru.

Visas saites, lai reģistrētos lietotnes ID \/

www.wolframalpha.com/

openweathermap.org/api

www.dropbox.com/developers/documentation

Noteikti instalējiet Tesseract OCR un OpenCV \/

github.com/UB-Mannheim/tesseract/wiki

opencv.org/

Server.py:

importēt dropboxfrom PIL importēt attēlu importēt cv2 importēt pytesseract no pytesseract importa

dbx = dropbox. Dropbox ("dropboxAPIkey")

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

app_id = "Lietotnes ID"

resursdators = socket.gethostname ()

ports = 60567 print (resursdators) s.bind ((resursdators, ports)) s.listen (2)

kamēr taisnība:

c, addr = s.accept () print (f'Got savienojumu no: {addr} ') pārtraukums

kamēr taisnība:

kamēr True: time.sleep (13.7) metadati, f = dbx.files_download ("/dropbox_API/Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) out. aizvērt () drukāt ("Attēls lejupielādēts!") image = cv2.imread ("Image.jpg") Attēls = cv2.izmērs (attēls, (640, 480), interpolācija = cv2. INTER_AREA), cv2. ROTATE_90_COUNTERCLOCKWISE) pelēks = cv2.cvtColor (attēls68, cv2. COLOR_BGR2GRAY)

def remove_noise (pelēks):

return cv2.medianBlur (pelēks, 5) def sliekšņa noteikšana (pelēks): atgriežas cv2.threshold (pelēks, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilate (pelēks): kodols = np.ones ((5, 5), np.uint8) atgriezt cv2.dilate (pelēks, kodols, iterācijas = 1) d = pytesseract.image_to_data (pelēks, output_type = Output. DICT)

n_kastes = len (d ['teksts'])

i diapazonā (n_kastes): ja int (d ['conf'] )> 60: (x, y, w, h) = (d ['pa kreisi'] , d ['augšā'] , d ['platums'] , d ['augstums'] ) pelēks = cv2. taisnstūris (pelēks, (x, y), (x + w, y + h), (0, 255, 0), 2) pārtraukt pytesseract.pytesseract.tesseract_cmd = r "C: / Program Files / Tesseract-OCR / tesseract.exe" text = pytesseract.image_to_string (pelēks) drukāt (tekstu), bet 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 (vaicājums) atbilde = nākamais (res.results).teksta atbilde1 = atbilde.nodaļa ('\ n') [0] drukāt (atbilde1) c.sūtīt (baiti (atbilde1, "utf-8")), ja len (teksts) <= 1: c.send (baiti (teksts2, "utf-8")) time.sleep (7,5) pārtraukums

Client.py:

importēt dropboximport picameraimportēt laiku no luma.core.interface.serial importēt i2c no luma.core.render importēt audeklu no luma.oled.device importēt ssd1306, ssd1325, ssd1331, sh1106 importēt ligzdas importēšanas datumu no laika importēt miega importēt pyowm serial = i2c (ports = 1, adrese = 0x3C) ierīce = ssd1306 (sērijveida, pagriezt = 1) kamera = picamera. PiCamera () dropbox_access_token = "" #Jūsu dropbox-id atkal computer_path = r "/home/pi/Image.jpg" dropbox_path = f "/dropbox_API/Image.jpg" s = socket.socket (socket. AF_INET, socket. SOCK_STREAM) host = ""#datora porta IP adrese = 60567 s.connect ((resursdators, ports)) msg1 = "" owm = pyowm. OWM ("")#app-id 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. mēnesis) + "/" + str (cdt.gads) obs = owm.weather_at_place ("")#jūsu pilsēta un valsts virknes formātā laika apstākļi = obs.get_weather () temp2 = str (weather.get_temperature ("fahrenheit") ["Te mp_max "]) temp3 = str (weather.get_temperature (" fahrenheit ") [" temp_min "]), kamēr True: cdt = datetime.datetime.now () min1 = str (cdt.minute) stunda = str (cdt.stunda) ar audeklu (ierīci) kā zīmējumu: draw.text ((0, 0), hour, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "balts") draw.text ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white ") ja min1 skaitlī: obs = owm.weather_at_place (" ")#jūsu pilsēta un valsts atkal virkņu formātā

laika apstākļi = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, aizpildīt = "balts"), ja min1 nav skaitlis: 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 konts saistīts") klients. files_upload (open (computer_path, "rb"). read (), dropbox_path) print ("[UPLOADED] {}". formāts (computer_path)) full_msg = "" time.sleep (5) msg = s.recv (100) ja len (msg)> = 2: full_msg += msg.decode ("utf-8") print (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) stunda = str (cdt.stunda) ar zīmējumu: audekls (ierīce): 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 = " balts ") draw.text ((0, 9), date, fill = "balts"), ja min1 ir skaitlis: obs = owm.weather_at_place ("")#jūsu pilsēta un valsts atkal virkņu formātā

laika apstākļi = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, aizpildīt = "balts"), ja min1 nav skaitlis: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") ja len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) stunda = str (cdt.stunda) ar audeklu (ierīce) kā zīmējumu: 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"), ja min1 skaitlī: obs = owm.weather_at_place ("") #jūsu pilsēta un valsts atkal stīgu formātā

laika apstākļi = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, aizpildīt = "balts"), ja min1 nav skaitlis: 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". pievienoties (textwrap.wrap (full_msg1, 9))) cdt = datetime.datetime.now () min1 = str (cdt.minute) stunda = str (cdt.stunda) ar audeklu (ierīce) kā zīmējumu: 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 = "balts") draw.text ((0, 9), date, fill = "white") ja min1 skaitļos: obs = owm.weather_at_place ("")#jūsu pilsēta un valsts atkal virkņu formātā

laika apstākļi = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, aizpildīt = "balts"), ja min1 nav skaitļos: obs = owm.weather_at_place ("")#jūsu pilsēta un valsts atkal virkņu formātā

laika apstākļi = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, aizpildīt = "balts"), ja min1 nav numurā: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") ja len (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) stunda = str (cdt.stunda) ar audeklu (ierīce) kā zīmējumu: 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"), ja min1 skaitlī: obs = owm.weather_at_place ("") #jūsu pilsēta un valsts atkal stīgu formātā

laika apstākļi = obs.get_weather ()

temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, aizpildīt = "balts"), ja min1 nav skaitlis: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") time.sleep (7) client.files_delete (dropbox_path) print ("Faili izdzēsti")

P. S. Es esmu programmētājs amatieris, tāpēc, lūdzu, neapšaubiet manas šausmīgās programmēšanas metodes.

4. solis: salieciet visu kopā

Visu saliekot kopā!
Visu saliekot kopā!

Kad esat pabeidzis visu pārējo, praktiski esat pabeidzis, jums atliek tikai piestiprināt aveņu pi kameru un displeju pie brillēm. To var izdarīt, izmantojot piegādēs minēto divpusējo līmi, vai arī izmantot jebkuras metodes, kuras uzskatāt par nepieciešamām. Jūs, iespējams, arī pamanījāt, ka šajā stundā es nekur neesmu minējis akumulatoru, jo tas ir tāpēc, ka man ir plānoti jauninājumi attiecībā uz šīm brillēm, un es negribēju to pašlaik piestiprināt. Bet, ja jūs vēlaties pievienot vienu, jums būs nepieciešama litija lādētāja ķēde no Amazon

Ja jums tas patika un vēlaties redzēt vairāk, esmu izveidojis YouTube kanālu un, cerams, arī tur ievietošu pamācības. Šeit ir saite:

www.youtube.com/channel/UCGqcWhHXdZf231rLe…

Dievs glābj!

Jāņa 3:16 "Jo Dievs tik ļoti mīlēja pasauli, ka Viņš deva savu vienpiedzimušo Dēlu, kurš vienmēr tic Viņam, nepazudīs, bet iegūs mūžīgu dzīvi."

Ieteicams: