Obsah:
- Krok 1: Zapojenie obvodu
- Krok 2: Prístup k Raspberry Pi
- Krok 3: Kódovací čas
- Krok 4: Dajte to všetko dohromady
Video: Inteligentné okuliare: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
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
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
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
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:
Inteligentné okuliare (pod 10 dolárov !!!): 8 krokov (s obrázkami)
Inteligentné okuliare (pod 10 dolárov !!!): Dobrý deň! Všetci poznáme inteligentné okuliare, ako sú tie s názvom E.D.I.T.H. vyrobila naša milovaná postava Tony Stark, ktorá bola neskôr odovzdaná Petrovi Parkerovi. Dnes budem stavať jedno také inteligentné sklo, ktoré bude pod 10 dolárov! Nie sú celkom
Inteligentné okuliare: 6 krokov
Inteligentné okuliare: Ahoj všetci !! Dnes sa s vami podelím, priatelia, o niečo, čo som už dlho chcel
Inteligentné okuliare pre domácich majstrov - Arduino/ESP: 5 krokov
Inteligentné okuliare DIY - Arduino/ESP: Nová verzia je k dispozícii tu: [YouTube] Hej, chlapci! Som tu, aby som vám ukázal svoj projekt pre domácich majstrov a povzbudil vás, aby ste si to urobili sami! Projekt sú skutočné inteligentné okuliare, ktoré si každý môže vyrobiť doma. . Všetok kód nájdete tu a zdroje: [GitHub] Tiež
Puzdro na inteligentné okuliare: 5 krokov
Inteligentné puzdro na okuliare: LED puzdro na okuliare vám umožní nájsť okuliare ráno, keď je v miestnosti zvyčajne tma, pomocou pásikov LED. Môžete ho použiť aj ako nočnú lampu, pretože po vložení okuliarov do vnútra sa spustí ultrazvukový senzor. Tento projekt vrátane
Okuliare z tekutých kryštálov pre amblyopiu (tréningové okuliare so striedavou oklúziou) [ATtiny13]: 10 krokov (s obrázkami)
Okuliare z tekutých kryštálov pre amblyopiu (tréningové okuliare s alternatívnou oklúziou) [ATtiny13]: amblyopia (lenivé oko), porucha zraku, ktorá postihuje približne 3% populácie, zvyčajne sa lieči jednoduchými páskami na oči alebo kvapkami atropínu. Bohužiaľ, tieto metódy liečby zatvárajú silnejšie oko na dlhé, neprerušované časové obdobia, nie