Tartalomjegyzék:
- Lépés: Az áramkör bekötése
- 2. lépés: A Raspberry Pi elérése
- 3. lépés: Kódolási idő
- 4. lépés: Összerakni
Videó: Intelligens szemüveg: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Üdvözlök mindenkit, ma megmutatom, hogyan készítsünk intelligens szemüveget otthon! Az intelligens szemüvegekben az egyik legnagyobb dolog az, hogy milyen előnyös, ha van valami ilyen a mai technológia világában, és hogy nincs csak egy verziója az okos szemüvegnek, mivel mindegyik csodálatos funkciókkal és végtelen számú integrálható alkalmazással rendelkezik. a jövőben. Ezen intelligens szemüvegek jellemzői közé tartozik az idő megmondása, a hőmérséklet 5 percenként történő közlése, az 5 perc között az adott nap várható magas és alacsony hőmérséklete között vált, és a dátumot is. A fő jellemzője azonban az, hogy 10 másodpercenként készít egy képet, majd elemzi azt a szöveget, amelyben hasznos információkat közöl róla, ha talál egy kérdést, akkor válaszol rá wolfram segítségével, vagy ha talál egy matematikai egyenletet az majd megoldja!
Kellékek:
A projekthez szükséges kellékek a következők:
1) A Raspberry Pi 0 W (a vilros.com oldalról)
2) Tiszta 128x64 OLED kijelző (a Sparkfun.com webhelyről)
3) A Raspberry Pi 0 W -ra formázott kamera modul (az amazon.com oldalról)
4) tetszőleges szemüveg
5) Vezetékek
6) Forrasztópáka
7) Ólommentes forrasztóanyag (mert nem akar meghalni az ólomtól)
8) kétirányú ragasztó
9) Min. 8 GB SD kártya
10) számítógép és internet kapcsolat
Feltételezve, hogy már rendelkezik számítógéppel és internetkapcsolattal, ezeknek a szemüvegeknek a ára körülbelül 130,00 USD lesz
Lépés: Az áramkör bekötése
Annak érdekében, hogy szöveget jelenítsen meg a képernyőn, amelyet I2C vagy SPI -n keresztül szeretne csatlakoztatni az OLED -hez, az I2C -t választom, mivel ezt használom kényelmesebben, de ha úgy érzi, hogy SPI -n keresztül szeretne csatlakozni hozzá, kövesse ezt az oktatóanyagot a Sparkfun webhelyet, és ha elkészült, térjen vissza ide. https://learn.sparkfun.com/tutorials/transparent-g… Ha az I2C-t választotta, én forrasztom a vezetékeket az alábbiak szerint:
Pi \/ OLED \/
3.3v 3.3v
GND GND
SDA SDA
SCL SCL
Kérjük, vegye figyelembe, hogy az átlátszó OLED csak 3.3V -ot képes kezelni.
Miután befejezte az áramkör csatlakoztatását, csúsztassa a kameramodul szalagkábelét a málna pi szalagkábel -tartójába, húzza ki a fekete bilincset, és csúsztassa vissza, miután a szalagkábel a helyére került.
2. lépés: A Raspberry Pi elérése
Az ssh használatával elérhetjük a pi -t a számítógépünkkel anélkül, hogy külső külső billentyűzet -egeret és monitort csatlakoztatnánk. Először csatlakoztassa SD -kártyáját a számítógéphez adapterrel vagy beépített porttal, majd erre a linkre kell mennie https://www.raspberrypi.org/downloads/raspbian/ és töltse le a Raspbian buster programot asztallal. Másodszor, fel kell tennie az operációs rendszert az SD -kártyára a BalenaEtcher segítségével, válassza ki az SD -kártyát és a Raspbian operációs rendszert, majd kattintson a "flash" gombra, ez a folyamat eltarthat egy ideig, ezért térjen vissza, ha befejezte. Harmadszor nyissa meg az SD -kártyát a fájlkezelőben vagy a Mac -keresőben, és hozzon létre egy wpa_supplicant nevű szöveges fájlt. Ügyeljen arra, hogy törölje a.txt kiterjesztést, és adja hozzá a.conf fájlt, és illessze be a következőt:
ország = USA
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}
Ha nem az USA -ban tartózkodik, meg kell adnia a WiFi nevét és jelszavát a megfelelő helyeken és országokban. Ne feledje, hogy a Raspberry Pi csak 2,4 GHz -es hálózathoz tud csatlakozni, ami azt jelenti, hogy a számítógépnek is csatlakoznia kell ehhez a hálózathoz. Miután létrehozott egy üres szöveges fájlt, kiterjesztés nélkül, ssh néven, majd vegye ki az SD -kártyát. Ezután telepítenie kell a PuTTY -t https://www.putty.org/, amelyet az ssh engedélyezéséhez fog használni. A telepítés után adja meg a raspberry pi IP -címét, és megtudhatja, mi az, ha belép az útválasztó webhelyére, és bejelentkezik a csatlakoztatott eszközökre.
Miután hozzáfér a Raspberry Pi-hez, be kell jelentkeznie, az alapértelmezett felhasználónév "pi", a jelszó pedig "málna". Írja be a sudo raspi-config parancsot, majd lépjen az interfészbeállításokhoz, és engedélyezze a kamerát, az ssh-t és az i2c-t, majd kattintson a Befejezés gombra, és írja be a sudo reboot parancsot. Most már készen áll arra, hogy belépjen a raspberry pi -be, telepítse a Távoli asztalt, és írja be a málna -pi IP -címét, és most már jó, hogy beléphet a raspberry pi -be.
3. lépés: Kódolási idő
Úgy döntöttem, hogy ezt a programot python -ban kódolom, ezért győződjön meg arról, hogy a python3.7 vagy 3.8 telepítve van az asztalon. Ez a kód szerver és kliens használatával működik, a szerver a számítógép. A kliens vagy a Raspberry pi lefényképezi, és feltölti a dropboxba, amelyet a szerver tölt le, majd futtatja a képfeldolgozást és szövegfelismerést. Ahhoz, hogy ez működjön, meg kell szereznie egy wolframalpha, dropbox és openweathermap alkalmazás-azonosítót, mindössze annyit kell tennie, hogy felkeresi a webhelyek regisztrációját, és megad egy alkalmazás-azonosítót. majd írja be őket a kód megjegyzései által meghatározott megfelelő helyekre. Győződjön meg arról, hogy a pip mindent telepített, és telepítette a Tesseract OCR -t és az OpenCV -t. Hozzon létre egy python fájlt Server.py néven a számítógépén, és egy fájlt client.py a raspberry pi -n, majd másolja és illessze be a kódot. De tudd, hogy minél merészebbek a karakterek és fehér a háttér, annál jobbak az eredmények, ez minden szövegfelismerő szoftver esetében így van.
Minden link az alkalmazás-azonosítóra való regisztrációhoz \/
www.wolframalpha.com/
openweathermap.org/api
www.dropbox.com/developers/documentation
Feltétlenül telepítse a Tesseract OCR -t és az OpenCV -t \/
github.com/UB-Mannheim/tesseract/wiki
opencv.org/
Server.py:
import Dropbox a PIL importálásból Image import cv2 import pytesseract from pytesseract import Import output numpy as np import wolframalpha import socket import time
dbx = dropbox. Dropbox ("dropboxAPIkey")
s = socket.socket (socket. AF_INET, socket. SOCK_STREAM)
app_id = "Alkalmazásazonosító"
host = socket.gethostname ()
port = 60567 print (host) s.bind ((host, port)) s.listen (2)
míg igaz:
c, addr = s.accept () print (f'Got connection from: {addr} ') break
míg igaz:
míg Igaz: time.sleep (13.7) metaadatok, f = dbx.files_download ("/dropbox_API/Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) out. bezár () print ("Kép letöltve!") image = cv2.imread ("Image.jpg") Kép = cv2.resize (kép, (640, 480), interpoláció = cv2. INTER_AREA) image68 = cv2.rotate (Kép, cv2. ROTATE_90_COUNTERCLOCKWISE) szürke = cv2.cvtColor (kép68, cv2. COLOR_BGR2GRAY)
def remove_noise (szürke):
return cv2.medianBlur (szürke, 5) def küszöbérték (szürke): return cv2.threshold (szürke, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilate (szürke): kernel = np.ones ((5, 5), np.uint8) return cv2.dilate (szürke, kernel, iterációk = 1) d = pytesseract.image_to_data (szürke, output_type = Output. DICT)
n_boxes = len (d ['szöveg'])
az i tartományban (n_dobozok): if int (d ['conf'] )> 60: (x, y, w, h) = (d ['bal'] , d ['top'] , d ['szélesség'] , d ['magasság'] ) szürke = cv2.téglalap (szürke, (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 (szürke) nyomtatás (szöveg), míg True: text2 = " "if len (text)> = 2: c.send (byte (text," utf-8 ")) if len (text) = 2: query = text client = wolframalpha. Client (app_id) res = client.query (query) answer = next (res.results).text answer1 = answer.partition ('\ n') [0] print (answer1) c.send (byte (answer1, "utf-8")) if len (text) <= 1: c.send (byte (text2, "utf-8")) time.sleep (7.5) szünet
Client.py:
import dropboximport picameraimport idő a luma.core.interface.serial importról port = 1, cím = 0x3C) eszköz = ssd1306 (soros, forgatás = 1) kamera = 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 = ""#a számítógép portjának IP címe = 60567 s.connect ((gazdagép, port)) msg1 = "" owm = pyowm. OWM ("")#app-id for openweathermap number = ["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. hónap) + "/" + str (cdt.year) obs = owm.weather_at_place ("")#az Ön városa és országa karakterlánc formátumban weather = obs.get_weather () temp2 = str (weather.get_temperature ("fahrenheit") ["te mp_max "]) temp3 = str (weather.get_temperature (" fahrenheit ") [" temp_min "]), míg True: cdt = dátum -idő.datetime.now () min1 = str (cdt.minute) óra = str (cdt.hour) vászonnal (eszköz) rajzként: 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 ") ha min1 a számban: obs = owm.weather_at_place (" ")#a város és ország ismét karakterlánc formátumban
időjárás = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "fehér"), ha min1 nincs a számban: 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") kliens. files_upload (open (computer_path, "rb"). read (), dropbox_path) print ("[FELTÖLTETT] {}". formátum (computer_path)) full_msg = "" time.sleep (5) msg = s.recv (100) ha len (msg)> = 2: full_msg += msg.decode ("utf-8") print (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) vászonnal (eszköz) rajzként: 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 = " fehér ") draw.text ((0, 9), dátum, kitöltés = "fehér"), ha min1 a számban: obs = owm.weather_at_place ("")#a város és az ország ismét karakterlánc formátumban
időjárás = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "fehér"), ha min1 nincs a számban: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") ha len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) vászonnal (eszköz) rajzként: 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") ha min1 a számban: obs = owm.weather_at_place ("") #városod és országod ismét string formátumban
időjárás = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "fehér"), ha min1 nincs a számban: 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) vászonnal (eszköz) rajzként: 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 = "fehér") draw.text ((0, 9), dátum, kitöltés = "fehér"), ha min1 a számban: obs = owm.weather_at_place ("")#a város és ország ismét karakterlánc formátumban
időjárás = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "fehér"), ha a min1 nem a számban van: obs = owm.weather_at_place ("")#a város és az ország ismét karakterlánc formátumban
időjárás = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "fehér"), ha min1 nincs a számban: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") ha len (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) vászonnal (eszköz) rajzként: 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") ha min1 a számban: obs = owm.weather_at_place ("") #városod és országod ismét string formátumban
időjárás = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "fehér"), ha min1 nincs a számban: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") time.sleep (7) client.files_delete (dropbox_path) print ("Törölt fájlok")
P. S. Amatőr programozó vagyok, ezért kérlek, ne kérdőjelezd meg a szörnyű programozási módszereimet.
4. lépés: Összerakni
Miután elvégezte az összes többit, gyakorlatilag készen áll, és nincs más dolga, mint csatlakoztatni a málna pi kamerát és a kijelzőt a szemüveghez. Ezt megteheti a kellékekben említett kétoldalas ragasztóval, vagy bármilyen szükséges módszerrel. Azt is észrevehette, hogy ebben a leckében sehol nem említettem elemet, mert a jövőben frissítéseket tervezek ezekre a szemüvegekre, és most nem akartam felhelyezni. De ha csatlakoztatni szeretne egyet, szüksége lesz egy li-po töltőáramkörre az Amazon-tól
Ha tetszett ez, és többet szeretne látni, elindítottam egy YouTube -csatornát, és remélhetőleg oktatóanyagokat is közzéteszek ott. Itt a link:
www.youtube.com/channel/UCGqcWhHXdZf231rLe…
Isten mentsen!
János 3:16 "Mert úgy szerette Isten a világot, hogy egyszülött Fiát adta, aki valaha is hisz benne, nem veszik el, hanem örök élete lesz."
Ajánlott:
Intelligens szemüveg (10 dollár alatt !!!): 8 lépés (képekkel)
Intelligens szemüveg (10 dollár alatt !!!): Sziasztok! Mindannyian ismerjük az olyan okos szemüveget, mint az E.D.I.T.H. szeretett karakterünk, Tony Stark készítette, amelyet később Peter Parkernek adtak át. Ma egy ilyen okos üveget fogok építeni, amely szintén 10 dollár alatt van! Nem egészen egy
Intelligens szemüveg: 6 lépés
Intelligens szemüveg: Szia mindenkinek !! Ma megosztok veletek srácokat, amit régóta szerettem volna
DIY intelligens szemüveg - Arduino/ESP: 5 lépés
DIY intelligens szemüveg - Arduino/ESP: Az új verzió itt érhető el: [YouTube] Hé srácok! Azért vagyok itt, hogy bemutassam nektek a DIY projektemet, és bátorítsam, hogy csináld magad! A projekt igazi okos szemüveg, amelyet mindenki otthon készíthet .Minden kód megtalálható itt és források: [GitHub] Én is
DIY intelligens kiterjesztett valóság szemüveg Arduino használatával: 7 lépés
DIY intelligens kiterjesztett valóság szemüveg Arduino használatával: Mivel a technológia gyorsan fejlődik és integrálja magát az emberek életének minden területére, a tervezők és fejlesztők kellemesebb technikai élményt próbáltak nyújtani az embereknek. Az egyik technológia, amely megkönnyíti az életet, a viselet
Folyadékkristályos szemüveg amblyópiához (váltakozó elzáródást tanító szemüveg) [ATtiny13]: 10 lépés (képekkel)
Folyadékkristályos szemüveg ambliópiához (váltakozó elzáródási edzőszemüveg) [ATtiny13]: Amblyopia (lusta szem), a látás zavara, amely a lakosság körülbelül 3% -át érinti, általában egyszerű szemfedőkkel vagy atropin cseppekkel kezelve. Sajnos ezek a kezelési módszerek hosszú, zavartalan ideig elzárják az erősebb szemet, nem