INHOUDSOPGAWE:

Slim brille: 4 stappe
Slim brille: 4 stappe

Video: Slim brille: 4 stappe

Video: Slim brille: 4 stappe
Video: Домашний уход за лицом после 50 лет. Советы косметолога. Антивозрастной уход за зрелой кожей. 2024, November
Anonim
Slim bril
Slim bril
Slim bril
Slim bril

Hallo almal vandag, ek gaan jou wys hoe om 'n slim bril tuis te maak! Een van die grootste dinge oor slimbrille is hoe voordelig dit is om so iets in die hedendaagse wêreld van tegnologie te hê en dat daar nie net een weergawe van 'n slimbril is nie, want almal het wonderlike funksies en 'n oneindige aantal toepassings wat geïntegreer kan word in die toekoms. Die kenmerke van hierdie slim bril sluit in die tyd van die tyd, die temperatuur elke 5 minute, tussen die 5 minute wissel dit tussen die verwagte hoë en lae temperatuur vir die dag, en dit vertel u ook die datum. Maar die belangrikste kenmerk daarvan is dat dit elke 10 sekondes 'n foto neem en dan die prent ontleed vir teks waarin dit nuttige inligting daaroor sal teruggee, as dit 'n vraag vind, dan beantwoord dit dit met behulp van wolfram, of as dit 'n wiskundige vergelyking vind dit sal dit oplos!

Benodighede:

Die benodigdhede vir hierdie projek sal die volgende insluit:

1) 'n Framboos Pi 0 W (van vilros.com)

2) 'n Duidelike 128x64 OLED -skerm (van Sparkfun.com)

3) 'n Kameramodule geformateer vir Raspberry Pi 0 W (vanaf amazon.com)

4) Enige glase van u keuse

5) drade

6) Soldeerbout

7) Loodvrye soldeer (omdat u nie aan lood wil sterf nie)

8) 2 -weg kleefmiddel

9) SD -kaart min van 8 GB

10) rekenaar- en internetverbinding

Gestel u het reeds 'n rekenaar en internetverbinding, beloop die koste van hierdie bril ongeveer $ 130,00

Stap 1: Sluit die stroombaan aan

Bedrading van die kring!
Bedrading van die kring!

Om teks op die skerm te vertoon, moet u via I2C of SPI aan die OLED koppel, kies ek I2C, want dit is die een wat ek gemakliker is om te gebruik, maar as u lus het om daaraan te koppel via SPI, volg hierdie handleiding op die Sparkfun -webwerf en kom terug hierheen as u klaar is. https://learn.sparkfun.com/tutorials/transparent-g… As u I2C gekies het, het ek die drade soldeer soos aangedui deur die volgende:

Pi \/ OLED \/

3.3v 3.3v

GND GND

SDA SDA

SCL SCL

Let daarop dat die helder OLED slegs 3.3v kan hanteer.

Nadat u die stroombaan verbind het, skuif u die lintkabel van die kameramodule in die lintkabelhouer op die framboos pi deur die swart klem uit te trek en terug te skuif sodra die lintkabel vas is.

Stap 2: Toegang tot die Raspberry Pi

Met ssh kan ons toegang tot ons pi kry met ons rekenaar sonder om 'n ekstra eksterne sleutelbordmuis en monitor aan te sluit. Die eerste ding wat u doen, is om u SD -kaart aan te sluit op u rekenaar met 'n adapter of 'n ingeboude poort, dan moet u na hierdie skakel https://www.raspberrypi.org/downloads/raspbian/ gaan en Raspbian buster aflaai met lessenaar. Tweedens moet u die bedryfstelsel op die SD -kaart plaas met behulp van BalenaEtcher, kies u SD -kaart en die Raspbian -bedryfstelsel en klik op "flits", hierdie proses kan 'n rukkie neem, dus kom terug as u klaar is. Gaan derdens na die SD -kaart in file explorer of finder op Mac en skep 'n tekslêer met die naam wpa_supplicant, maak seker dat u die.txt -uitbreiding verwyder en.conf byvoeg, plak die volgende in die lêer:

land = VSA

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

U sal u WiFi -naam en wagwoord op die ooreenstemmende plekke en land moet invoer as u nie in die VSA is nie. Hou in gedagte dat die Raspberry Pi slegs aan 'n 2,4 GHz -netwerk kan koppel, wat beteken dat u rekenaar ook met daardie netwerk moet skakel. Nadat u 'n leë tekslêer gemaak het sonder die uitbreiding ssh, en gooi dan u SD -kaart uit. U moet dan PuTTY https://www.putty.org/ installeer, wat u sal gebruik om ssh moontlik te maak. Sodra dit geïnstalleer is, voer die IP -adres van u framboospi in, u kan agterkom wat dit is deur na u router se webwerf aan te meld en na die gekoppelde toestelle te kyk.

Nadat u toegang tot die Raspberry Pi verkry het, word u gevra om aan te meld; die standaard gebruikersnaam is "pi" en die wagwoord is "framboos". Tik sudo raspi-config, gaan dan na koppelvlakopsies en aktiveer kamera, ssh en i2c, klik dan op voltooi en tik sudo reboot. Nou is u gereed om in die framboos -pi te gaan, installeer Remote Desktop en voer die IP -adres van u framboos -pi in.

Stap 3: Koderingstyd

Koderingstyd!
Koderingstyd!

Ek het gekies om hierdie program in python te kodeer, dus maak seker dat u python3.7 of 3.8 op u lessenaar geïnstalleer het. Hierdie kode werk deur 'n bediener en 'n kliënt te gebruik, waarvan die rekenaar u rekenaar is. Die kliënt of framboos pi neem 'n foto en laai dit op na dropbox, wat die bediener ophaal wat dan beeldverwerking en teksherkenning op die prent uitvoer. U moet 'n wolframalpha-, dropbox- en open-weathermap-app-ID kry om dit te laat werk; al wat u hoef te doen is om na die aanmelding van die webwerf te gaan, en dit gee u 'n app-ID. en voer dit dan in op ooreenstemmende plekke wat bepaal word deur die opmerkings in die kode. Maak seker dat u alles geïnstalleer het en dat Tesseract OCR en OpenCV geïnstalleer is. Skep 'n python -lêer met die naam Server.py op u rekenaar en 'n lêer met die naam client.py op die framboos -pi en kopieer en plak die kode. Maar weet dat hoe sterker die karakters en witter die agtergrond, hoe beter die resultate is; dit is die geval met elke sagteware vir teksherkenning.

Al die skakels om aan te meld vir 'n program-ID \/

www.wolframalpha.com/

openweathermap.org/api

www.dropbox.com/developers/documentation

Maak seker dat u Tesseract OCR en OpenCV \/ installeer

github.com/UB-Mannheim/tesseract/wiki

opencv.org/

Server.py:

invoer dropbox vanaf PIL invoer Beeld invoer cv2 invoer pytesseract vanaf pytesseract invoer Uitvoer invoer numpy as np invoer wolframalpha invoer tyd invoer tyd

dbx = dropbox. Dropbox ("dropboxAPIkey")

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

app_id = "Program-ID"

gasheer = socket.gethostnaam ()

poort = 60567 druk (gasheer) s.bind ((gasheer, poort)) s.luister (2)

terwyl dit waar is:

c, addr = s.accept () print (f'Konneksie gekry van: {addr} ') breek

terwyl dit waar is:

terwyl True: time.sleep (13.7) metadata, f = dbx.files_download ("/dropbox_API/Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) out. close () print ("Image afgelaai!") image = cv2.imread ("Image.jpg") Image = cv2.resize (image, (640, 480), interpolation = cv2. INTER_AREA) image68 = cv2.rotate (Beeld, cv2. ROTATE_90_COUNTERCLOCKWISE) grys = cv2.cvtColor (image68, cv2. COLOR_BGR2GRAY)

def remove_noise (grys):

return cv2.medianBlur (grys, 5) def drempelwaarde (grys): return cv2.threshold (grys, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilate (grys): kernel = np.ones ((5, 5), np.uint8) gee cv2.dilate terug (grys, kern, iterasies = 1) d = pytesseract.image_to_data (grys, output_type = Output. DICT)

n_boxes = len (d ['text'])

vir i in reeks (n_boxes): as int (d ['conf'] )> 60: (x, y, w, h) = (d ['links'] , d ['top'] , d ['breedte'] , d ['hoogte'] ) grys = cv2. reghoek (grys, (x, y), (x + w, y + h), (0, 255, 0), 2) breek pytesseract.pytesseract.tesseract_cmd = r "C: / Program Files / Tesseract-OCR / tesseract.exe" text = pytesseract.image_to_string (grys) druk (teks) terwyl 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 (navraag) antwoord = volgende (res.resultate).teks antwoord1 = antwoord.partisie ('\ n') [0] druk (antwoord1) c.send (grepe (antwoord1, "utf-8")) as len (teks) <= 1: c.send (grepe (text2, "utf-8")) time.sleep (7.5) breek

Client.py:

import dropboximport picameraimport time from luma.core.interface.serial import i2c from luma.core.render import canvas from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106 import socket importtime from time import sleep import pyowm serial = i2c (poort = 1, adres = 0x3C) toestel = ssd1306 (serieel, draai = 1) kamera = picamera. PiCamera () dropbox_access_token = "" #Jou dropbox-id weer 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 adres van u rekenaarpoort = 60567 s.connect ((gasheer, poort)) msg1 = "" owm = pyowm. OWM ("")#app-id vir oopweerkaart 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. maand) + "/" + str (cdt.year) obs = owm.weather_at_place ("")#u stad en land in stringformaat weather = obs.get_weather () temp2 = str (weather.get_temperature ("fahrenheit") ["te mp_max "]) temp3 = str (weather.get_temperature (" fahrenheit ") [" temp_min "]) terwyl True: cdt = datetime.datetime.now () min1 = str (cdt.minute) uur = str (cdt.hour) met doek (toestel) as teken: draw.text ((0, 0), uur, 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 (" ")#u stad en land weer in stringformaat

weer = 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) afdruk ("[SUCCESS] dropbox rekening gekoppel") kliënt. files_upload (open (computer_path, "rb"). read (), dropbox_path) print ("[UPLOADED] {}". format (computer_path)) full_msg = "" time.sleep (5) msg = s.recv (100) if len (msg)> = 2: full_msg += msg.decode ("utf-8") print (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) met doek (toestel) as teken: draw.text ((0, 19), full_msg, fill = "white") draw.text ((0, 0), uur, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") draw.text ((0, 9), "_", fill = " wit ") draw.text ((0, 9), datum, vul = "wit") as min1 in nom: obs = owm.weather_at_place ("")#u stad en land weer in stringformaat

weer = 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), uur, fill = "wit") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") teken. teks ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white") as min1 in num: obs = owm.weather_at_place ("") #u stad en land weer in snaarformaat

weer = 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) 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), uur, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") draw.text ((0, 9), "_", vul = "wit") draw.text ((0, 9), datum, vul = "wit") as min1 in num: obs = owm.weather_at_place ("")#u stad en land weer in stringformaat

weer = 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 town and country again in string format again

weer = 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 (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) with canvas (device) as draw: draw.text ((0, 0), uur, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") trek. teks ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white") as min1 in num: obs = owm.weather_at_place ("") #u stad en land weer in snaarformaat

weer = 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) druk ("lêers verwyder")

P. S. Ek is 'n amateurprogrammeerder, moenie my afskuwelike programmeermetodes bevraagteken nie.

Stap 4: Alles saamvoeg

Om alles bymekaar te sit!
Om alles bymekaar te sit!

As u alles voltooi het, is u amper klaar met die framboos -pi -kamera en dit op die bril. U kan dit doen deur die dubbelzijdige gom wat in die voorraad genoem word, te gebruik, of u kan enige metodes gebruik wat u nodig ag. U het miskien ook opgemerk dat ek in hierdie les nêrens 'n battery genoem het nie, want ek het toekomstige opgraderings vir hierdie bril beplan en ek wou dit nie nou aanbring nie. Maar as u een wil aanheg, benodig u 'n li-po-laadkring van Amazon

As u dit geniet het en meer wil sien, het ek 'n YouTube -kanaal begin en sal ek hopelik ook tutoriale daar plaas. Hier is die skakel:

www.youtube.com/channel/UCGqcWhHXdZf231rLe…

God red!

Johannes 3:16 "Want so lief het God die wêreld gehad, dat Hy sy enigste Seun gegee het, die wat in Hom glo, sal nie verlore gaan nie, maar sal 'n ewige lewe hê."

Aanbeveel: