Cuprins:
- Pasul 1: Cablarea circuitului
- Pasul 2: Accesarea Raspberry Pi
- Pasul 3: Timp de codare
- Pasul 4: Puneți totul împreună
Video: Ochelari inteligenți: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Bună ziua tuturor astăzi, vă voi arăta cum să faceți ochelari Smart acasă! Unul dintre cele mai mari lucruri despre ochelarii inteligenți este cât de benefic este să ai așa ceva în lumea tehnologică de astăzi și cum nu există o singură versiune a ochelarilor inteligenți, deoarece toate au caracteristici uimitoare și un număr infinit de aplicații care ar putea fi integrate în viitor. Caracteristicile acestor ochelari inteligenți includ indicarea timpului, indicându-vă temperatura la fiecare 5 minute, între acele 5 minute schimbă între temperatura așteptată ridicată și scăzută pentru ziua respectivă, vă spune și data. Dar caracteristica sa principală este că face o poză la fiecare 10 secunde și apoi analizează acea imagine pentru text în care va returna informații utile despre aceasta, dacă găsește o întrebare, atunci îi va răspunde folosind wolfram sau dacă găsește o ecuație matematică o va rezolva!
Provizii:
Aprovizionările necesare pentru acest proiect vor include următoarele:
1) A Raspberry Pi 0 W (De la vilros.com)
2) Un ecran OLED clar de 128x64 (de la Sparkfun.com)
3) Un modul de cameră formatat pentru Raspberry Pi 0 W (De la amazon.com)
4) Orice ochelari la alegere
5) Firele
6) Fier de lipit
7) lipire fără plumb (pentru că nu doriți să muriți din plumb)
8) Adeziv cu 2 căi
9) Card SD min de 8 GB
10) computer și conexiune la internet
Presupunând că aveți deja un computer și o conexiune la internet, costul acestor ochelari va ajunge la aproximativ 130,00 USD
Pasul 1: Cablarea circuitului
Pentru a afișa text pe ecran, veți avea conectarea la OLED prin I2C sau SPI, aleg I2C, deoarece este cel pe care îl folosesc mai confortabil, dar dacă doriți să vă conectați la acesta prin SPI, urmați acest tutorial pe pe site-ul Sparkfun și reveniți aici când ați terminat. https://learn.sparkfun.com/tutorials/transparent-g… Dacă ați ales I2C pentru că am lipit firele, după cum se indică în următoarele:
Pi / / OLED / /
3.3v 3.3v
GND GND
SDA SDA
SCL SCL
Vă rugăm să rețineți că OLED clar poate gestiona doar 3.3v.
După ce ați terminat conectarea circuitului, glisați cablul panglică al modulului camerei în suportul pentru cablu panglică de pe zmeura pi scoțând clema neagră și glisând-o înapoi odată ce cablul panglică este în poziție.
Pasul 2: Accesarea Raspberry Pi
Folosind ssh putem accesa pi-ul nostru cu computerul nostru fără a conecta un mouse și tastatură externi suplimentari. Primul lucru pe care îl faceți este să vă conectați cardul SD la computer cu un adaptor sau un port încorporat, apoi va trebui să vă îndreptați către acest link https://www.raspberrypi.org/downloads/raspbian/ și să descărcați Raspbian buster cu desktop. În al doilea rând trebuie să puneți sistemul de operare pe cardul SD folosind BalenaEtcher, selectați cardul SD și sistemul de operare Raspbian și faceți clic pe „flash”, acest proces ar putea dura ceva, așa că reveniți când ați terminat. În al treilea rând, accesați cardul SD din fișierul Explorer sau Finder de pe Mac și creați un fișier text numit wpa_supplicant, asigurați-vă că ștergeți extensia.txt și adăugați.conf, în fișier lipiți următoarele:
country = SUA
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}
Va trebui să introduceți numele și parola WiFi în locurile și țara corespunzătoare dacă nu vă aflați în SUA. Rețineți că Raspberry Pi se poate conecta doar la o rețea de 2,4 Ghz, ceea ce înseamnă că computerul dvs. va trebui să se conecteze și la rețeaua respectivă. După ce creați un fișier text gol fără nicio extensie numită ssh și apoi scoateți cardul SD. Apoi, va trebui să instalați PuTTY https://www.putty.org/, ceea ce veți folosi pentru a activa ssh. Odată instalat, introduceți adresa IP a raspberry pi, vă puteți da seama ce este accesând site-ul routerelor dvs. conectându-vă și uitându-vă la dispozitivele conectate.
După ce obțineți acces la Raspberry Pi, vă va cere să vă conectați, numele de utilizator implicit este „pi” și parola este „zmeură”. Tastați sudo raspi-config apoi accesați opțiunile de interfață și activați camera, ssh și i2c, apoi faceți clic pe Terminare și tastați sudo reboot. Acum sunteți gata să intrați în raspberry pi, mergeți mai departe și instalați Remote Desktop și introduceți adresa IP a raspberry pi și acum sunteți bine să intrați în raspberry pi.
Pasul 3: Timp de codare
Am ales să codez acest program în python, deci asigurați-vă că aveți python3.7 sau 3.8 instalat pe desktop. Acest cod funcționează utilizând un server și un client, severul fiind computerul dvs. Clientul sau raspberry pi vor face o fotografie și o vor încărca în dropbox, care este recuperată de server, care apoi execută procesarea imaginii și recunoașterea textului pe imagine. Va trebui să obțineți un id de aplicație wolframalpha, dropbox și openweathermap pentru ca acest lucru să funcționeze, tot ce trebuie să faceți este să accesați site-ul web de înscriere și vă va oferi un ID de aplicație. și apoi introduceți-le în locurile corespunzătoare determinate de comentariile din cod. Asigurați-vă că ați instalat pip și ați instalat Tesseract OCR și OpenCV. Creați un fișier python numit Server.py pe computerul dvs. și un fișier numit client.py pe raspberry pi și apoi copiați și lipiți codul. Dar să știți că cu cât personajele sunt mai îndrăznețe și fundalul este mai alb, cu atât rezultatele sunt mai bune, acesta este cazul fiecărui software de recunoaștere a textului.
Toate linkurile pentru a vă înscrie pentru un ID de aplicație / /
www.wolframalpha.com/
openweathermap.org/api
www.dropbox.com/developers/documentation
Asigurați-vă că instalați Tesseract OCR și OpenCV / /
github.com/UB-Mannheim/tesseract/wiki
opencv.org/
Server.py:
import dropboxfrom PIL import Image cv2 import pytesseract from pytesseract import Output import numpy as np import wolframalpha import socket time import
dbx = dropbox. Dropbox ("dropboxAPIkey")
s = socket.socket (socket. AF_INET, socket. SOCK_STREAM)
app_id = "ID-ul aplicației"
host = socket.gethostname ()
port = 60567 print (host) s.bind ((host, port)) s.listen (2)
în timp ce este adevărat:
c, addr = s.accept () print (f'Got connection from: {addr} ') break
în timp ce este adevărat:
în timp ce True: metadate time.sleep (13.7), f = dbx.files_download ("/ dropbox_API / Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) out. close () print ("Imagine descărcată!") image = cv2.imread ("Image.jpg") Image = cv2.resize (imagine, (640, 480), interpolare = cv2. INTER_AREA) image68 = cv2.rotate (Image, cv2. ROTATE_90_COUNTERCLOCKWISE) gri = cv2.cvtColor (imagine68, cv2. COLOR_BGR2GRAY)
def remove_noise (gri):
return cv2.medianBlur (gri, 5) def prag (gri): return cv2.threshold (gri, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilate (gri): kernel = np.ones ((5, 5), np.uint8) returnează cv2.dilate (gri, nucleu, iterații = 1) d = pytesseract.image_to_data (gri, output_type = Output. DICT)
n_boxes = len (d ['text'])
pentru i în raza (n_boxes): if int (d ['conf'] )> 60: (x, y, w, h) = (d ['left'] , d ['top'] , d ['lățime'] , d ['înălțime'] ) gri = cv2.rectangle (gri, (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 (gri) print (text) în timp ce True: text2 = " "if len (text)> = 2: c.send (bytes (text," utf-8 ")) if len (text) = 2: interogare = 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")) if len (text) <= 1: c.send (bytes (text2, "utf-8")) time.sleep (7.5) break
Client.py:
import dropboximport picamera import timp de la luma.core.interface.serial import i2c de la luma.core.render import pânză de la luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106 import socket import datetime din timp import somn import pyowm serial = i2c (port = 1, address = 0x3C) device = ssd1306 (serial, rotate = 1) camera = picamera. PiCamera () dropbox_access_token = "" #Your dropbox-id again 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 address of your pc port = 60567 s.connect ((host, port)) msg1 = "" owm = pyowm. OWM ("") # app-id pentru 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. lună) + "/" + str (cdt.year) obs = owm.weather_at_place ("") # orașul și țara dvs. în format șir weather = obs.get_weather () temp2 = str (weather.get_temperature ("fahrenheit") ["te mp_max "]) temp3 = str (weather.get_temperature (" fahrenheit ") [" temp_min "]) în timp ce True: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) cu pânză (dispozitiv) ca desen: draw.text ((0, 0), hour, fill = "alb") draw.text ((11, 0), ":", fill = "alb") draw.text ((15, 0), min1, fill = "alb") draw.text ((0, 9), "_", fill = "alb") draw.text ((0, 9), data, fill = "alb ") dacă min1 în num: obs = owm.weather_at_place (" ") # orașul și țara dvs. în format șir din nou
weather = 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 linked") client. 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) cu pânză (dispozitiv) ca desen: draw.text ((0, 19), full_msg, fill = "alb") draw.text ((0, 0), ora, fill = "alb") draw.text ((11, 0), ":", fill = "alb") draw.text ((15, 0), min1, fill = "alb") draw.text ((0, 9), "_", fill = " alb ") draw.text ((0, 9), data, completare = "alb") dacă min1 în num: obs = owm.weather_at_place ("") # orașul și țara dvs. în format șir din nou
weather = 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), hour, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") draw. text ((0, 9), "_", fill = "alb") draw.text ((0, 9), data, fill = "alb") dacă min1 în num: obs = owm.weather_at_place ("") # orașul și țara dvs. din nou în format șir
weather = 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), hour, fill = "white") draw.text ((11, 0), ":", fill = "alb") draw.text ((15, 0), min1, fill = "alb") draw.text ((0, 9), "_", fill = "alb") draw.text ((0, 9), data, fill = "alb") dacă min1 în num: obs = owm.weather_at_place ("") # orașul și țara dvs. în format șir din nou
weather = 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 ("") # orașul și țara dvs. în format șir din nou
weather = 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), hour, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") draw. text ((0, 9), "_", fill = "alb") draw.text ((0, 9), data, fill = "alb") dacă min1 în num: obs = owm.weather_at_place ("") # orașul și țara dvs. din nou în format șir
weather = 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 ("Fișiere șterse")
P. S. Sunt programator amator, așa că vă rog să nu puneți la îndoială metodele mele oribile de programare.
Pasul 4: Puneți totul împreună
Odată ce ați terminat orice altceva, practic ați terminat tot ce vă mai rămâne de făcut este să atașați aparatul de fotografiat raspberry pi și să îl afișați pe ochelari. Puteți face acest lucru folosind adezivul pe două fețe menționat în consumabile sau puteți utiliza orice metode pe care le considerați necesare. De asemenea, s-ar putea să fi observat că nu am menționat nicio baterie nicăieri în această lecție, pentru că am planificate viitoare actualizări pentru aceste ochelari și nu am vrut să le atașez chiar acum. Dar dacă doriți să atașați unul, veți avea nevoie de un circuit de încărcare li-po de la Amazon
Dacă ți-a plăcut acest lucru și vrei să vezi mai multe, am început un canal YouTube și sper să postez tutoriale și acolo. Iată linkul:
www.youtube.com/channel/UCGqcWhHXdZf231rLe…
Dumnezeu mântuiește!
Ioan 3:16 „Căci atât de mult a iubit Dumnezeu lumea, încât El L-a dat pe singurul Său Fiu, cel care crede astfel în El nu va pieri, ci va avea o viață veșnică”.
Recomandat:
Ochelari inteligenți (sub 10 USD !!!): 8 pași (cu imagini)
Ochelari inteligenți (sub 10 USD !!!): Salut! Cu toții suntem familiarizați cu ochelarii inteligenți precum cel numit E.D.I.T.H. realizat de iubitul nostru personaj Tony Stark care i-a fost transmis mai târziu lui Peter Parker. Astăzi am de gând să construiesc un astfel de sticlă inteligentă, care și sub 10 dolari! Nu sunt chiar
Ochelari inteligenți: 6 pași
Ochelari inteligenți: Bună tuturor !! Astăzi voi împărtăși cu voi, ceva ce îmi doream de multă vreme Ochelari inteligenți DIY construiți în jur de 25 $
Senzori inteligenti de sera: 5 pasi
Senzori de seră inteligenți: acest instructabil este acum în concurs de microcontroler, vă rugăm să votați pentru el: DHello tuturor, astăzi vă voi arăta micul meu proiect pe care l-am construit timp de câteva zile. Acest set este format din 4 (patru) senzori diferiți și cred că fiecare proprietar de seră
Ochelari cu cristale lichide pentru ambliopie (Ochelari de antrenament pentru ocluzie alternativă) [ATtiny13]: 10 pași (cu imagini)
Ochelari cu cristale lichide pentru ambliopie (Ochelari de antrenament pentru ocluzie alternativă) [ATtiny13]: Ambliopie (ochi leneș), o tulburare a vederii care afectează aproximativ 3% din populație, tratată de obicei prin patch-uri simple de ochi sau picături de atropină. Din păcate, aceste metode de tratament ocluzie un ochi mai puternic pentru perioade lungi de timp neîntrerupte, nu
Suport pentru laptop de 3 și 3 pași (cu ochelari de lectură și tavă pentru stilou): 5 pași
Suport pentru laptop de 3 și 3 pași (cu ochelari de lectură și tavă pentru stilou): acest $ 3 & Suport pentru laptop cu 3 pași poate fi realizat în 5 minute. Este foarte puternic, ușor și poate fi pliat pentru a fi luat oriunde ai merge