Orodha ya maudhui:

Glasi mahiri: 4 Hatua
Glasi mahiri: 4 Hatua

Video: Glasi mahiri: 4 Hatua

Video: Glasi mahiri: 4 Hatua
Video: Bien x Aaron Rimbui - Mbwe Mbwe (Official Music Video) 2024, Julai
Anonim
Glasi mahiri
Glasi mahiri
Glasi mahiri
Glasi mahiri

Halo kila mtu leo nitawaonyesha jinsi ya kutengeneza glasi mahiri nyumbani! Moja ya mambo makuu juu ya glasi nzuri ni faida gani kuwa na kitu kama hiki katika ulimwengu wa leo wa teknolojia na jinsi hakuna toleo moja tu la glasi nzuri kwani zote zina sifa za kushangaza na idadi kubwa ya matumizi ambayo inaweza kuunganishwa. katika siku za usoni. Makala ya glasi hizi nzuri ni pamoja na kukuambia wakati, kukuambia hali ya joto kila dakika 5, kati ya hizo dakika 5 hubadilika kati ya joto la juu na la chini linalotarajiwa kwa siku hiyo, pia inakuambia tarehe. Lakini sifa yake kuu ni kwamba inachukua picha kila sekunde 10 na kisha kuchambua picha hiyo kwa maandishi ambayo itarudisha habari muhimu juu yake, ikiwa itapata swali basi itaijibu kwa kutumia wolfram, au ikiwa itapata hesabu ya hesabu itaitatua!

Ugavi:

Vifaa vinavyohitajika kwa mradi huu ni pamoja na yafuatayo:

1) Raspberry Pi 0 W (Kutoka vilros.com)

2) Onyesho wazi la 128x64 OLED (Kutoka Sparkfun.com)

3) Moduli ya kamera iliyoundwa kwa Raspberry Pi 0 W (Kutoka amazon.com)

4) Glasi yoyote ya chaguo lako

5) waya

6) chuma cha kutengeneza

7) Solder ya bure (kwa sababu hautaki kufa kutokana na risasi)

8) 2 njia ya wambiso

9) kadi ya SD min ya 8gb

10) unganisho la kompyuta na mtandao

Kwa kudhani tayari unayo kompyuta na muunganisho wa mtandao gharama za glasi hizi zitakuja karibu $ 130.00

Hatua ya 1: Wiring Mzunguko

Wiring Mzunguko!
Wiring Mzunguko!

Ili kuonyesha maandishi kwenye skrini utaunganishwa na OLED kupitia I2C au SPI, mimi huchagua I2C kwani ndio niko sawa kutumia lakini ikiwa unahisi kuungana nayo kupitia SPI nenda fuata mafunzo haya kwenye tovuti ya Sparkfun na urudi hapa ukimaliza. https://learn.sparkfun.com/tutorials/transparent-g ……. Ikiwa umechagua I2C kwani nimetengeneza waya kama inavyoonyeshwa na yafuatayo:

Pi / / OLED / /

3.3v 3.3v

GND GND

SDA SDA

SCL SCL

Tafadhali kumbuka kuwa OLED iliyo wazi inaweza kushughulikia 3.3v tu.

Baada ya kumaliza kuunganisha mzunguko, telezesha kebo ya utepe ya moduli ya kamera ndani ya kishikilia kebo ya Riberi kwenye pi ya rasipiberi kwa kuvuta kambamba nyeusi na kuirudisha nyuma mara tu kebo ya Ribbon iko.

Hatua ya 2: Kupata Raspberry Pi

Kutumia ssh tunaweza kufikia pi yetu na pc yetu bila kuunganisha kipanya cha ziada cha nje na ufuatiliaji. Jambo la kwanza unalofanya ni kuunganisha kadi yako ya SD kwenye PC yako na adapta au iliyojengwa kwenye bandari, basi utahitaji kuelekea kwenye kiunga hiki https://www.raspberrypi.org/downloads/raspbian/ na kupakua Raspbian buster na desktop. Pili lazima uweke OS kwenye kadi ya SD ukitumia BalenaEtcher chagua kadi yako ya SD na OS ya Raspbian na ubonyeze "flash" mchakato huu unaweza kuchukua muda ili urudi ukimaliza. Tatu nenda kwenye kadi ya SD katika kigunduzi cha faili au kipata kwenye mac na unda faili ya maandishi iitwayo wpa_supplicant hakikisha unafuta ugani wa.txt na ongeza.conf, kwenye faili weka zifuatazo:

nchi = Marekani

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}

Utalazimika kuingiza jina na nywila yako ya WiFi katika sehemu na nchi zinazolingana ikiwa hauko USA. Kumbuka Raspberry Pi inaweza tu kuungana na mtandao wa 2.4Ghz ikimaanisha pc yako pia italazimika kuungana na mtandao huo. Baada ya kuunda faili tupu ya maandishi bila kiendelezi kinachoitwa ssh na kisha toa kadi yako ya SD. Basi utahitaji kusanikisha PuTTY https://www.putty.org/ ambayo ndiyo utatumia kuwezesha ssh. Mara tu ikiwa imewekwa ingiza anwani ya IP ya raspberry pi yako, unaweza kujua ni nini kwa kwenda kwenye tovuti yako ya kuingia na kutazama vifaa vilivyounganishwa.

Baada ya kupata Raspberry Pi itakuuliza uingie, jina la mtumiaji la msingi ni "pi" na nenosiri ni "raspberry". Chapa sudo raspi-config kisha nenda kwenye chaguzi za kuingiliana na uwezeshe kamera, ssh, na i2c, kisha bonyeza kumaliza na uandike reboot ya sudo. Sasa uko tayari kuingiza kwenye raspberry pi, endelea na usanidi Eneo-kazi la Kijijini na uweke anwani yako ya IP ya raspberry pi na sasa uko vizuri kuingiza pi ya raspberry.

Hatua ya 3: Saa ya Kuandika

Wakati wa Usimbuaji!
Wakati wa Usimbuaji!

Nimechagua kuweka alama mpango huu katika chatu ili uhakikishe kuwa umeweka python3.7 au 3.8 kwenye desktop yako. Nambari hii inafanya kazi kwa kutumia seva na mteja, ukiwa ni pc yako. Mteja au rasipberry pi atachukua picha na kuipakia kwenye kisanduku cha matone ambacho kinapatikana na seva ambaye huendesha usindikaji wa picha na utambuzi wa maandishi kwenye picha. Utalazimika kupata wolframalpha, kisanduku cha matone, na programu ya wazi ya programu-jalizi ili hii ifanye kazi, unachohitajika kufanya ni kwenda kwenye usajili wa wavuti na itakupa id-ya programu. na kisha uwaingize katika sehemu zinazolingana zilizoamuliwa na maoni kwenye nambari. Hakikisha umeweka bomba kila kitu na umeweka Tesseract OCR na OpenCV. Unda faili ya chatu inayoitwa Server.py kwenye pc yako na faili iliyoitwa client.py kwenye pi ya raspberry kisha unakili na ubandike nambari hiyo. Lakini ujue kuwa wahusika wenye ujasiri na weupe asili ndio matokeo bora, hii ndio kesi kwa kila programu ya utambuzi wa maandishi.

Viungo vyote vya kujisajili kwa kitambulisho cha programu / /

www.wolframalpha.com/

openweathermap.org/api

www.dropbox.com/developers/documentation

Hakikisha unasakinisha Tesseract OCR na OpenCV / /

github.com/UB-Mannheim/tesseract/wiki

opencv.org/

Server.py:

kuagiza dropbox kutoka PIL kuagiza picha cv2 kuagiza pytesseract kutoka pytesseract kuagiza Pato kuagiza numpy kama np kuagiza wolframalpha kuagiza tundu wakati

dbx = kisanduku cha matone. Dropbox ("dropboxAPIkey")

s = tundu.sogi (tundu. AF_INET, tundu. SOCK_STREAM)

app_id = "Kitambulisho cha App"

mwenyeji = jina tundu. jina la jina ()

bandari = 60567 kuchapisha (mwenyeji) s.bind ((mwenyeji, bandari)) s. sikiliza (2)

wakati Kweli:

c, addr = s.kubali () chapa (f'Got connection from: {addr} ') break

wakati Kweli:

wakati Kweli: metadata ya time.sleep (13.7), f = dbx.files_download ("/ dropbox_API / Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) nje. karibu () chapisha ("Picha imepakuliwa!") image = cv2.imread ("Image.jpg") Image = cv2.resize (picha, (640, 480), interpolation = cv2. INTER_AREA) image68 = cv2.rotate (Image, cv2. ROTATE_90_COUNTERCLOCKWISE) kijivu = cv2.cvtColor (picha68, cv2. COLOR_BGR2GRAY)

def kuondoa_kelele (kijivu):

kurudi cv2.medianBlur (kijivu, 5) def kizingiti (kijivu): kurudi cv2. kizingiti (kijivu, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilate (gray): kernel = np.ones ((5, 5), np.uint8) kurudi cv2.dilate (kijivu, kernel, iterations = 1) d = pytesseract.image_to_data (grey, output_type = Output. DICT)

n_boxes = len (d ['maandishi'])

kwa i katika anuwai (n_boxes): ikiwa int (d ['conf'] )> 60: (x, y, w, h) = (d ['kushoto'] , d ['top'] , d ['upana'] , d ['urefu'] ) kijivu = cv2. mstatili (kijivu, (x, y), (x + w, y + h), (0, 255, 0), 2) kuvunja pytesseract.pytesseract.tesseract_cmd = r "C: / Program Files / Tesseract-OCR / tesseract.exe" text = pytesseract.image_to_string (kijivu) chapa (maandishi) wakati Kweli: text2 = " "ikiwa len (maandishi)> = 2: c.send (byte (text," utf-8 ")) ikiwa len (maandishi) = 2: swala = mteja wa maandishi = wolframalpha. Client (app_id) res = client.query (swala) jibu = ijayo (matokeo. matokeo). maandishi majibu1 = jibu. sehemu ('\ n') [0] chapa (jibu1) c.tuma (ka (jibu1, "utf-8")) ikiwa len (maandishi) <= 1: c.tuma (ka (maandishi2, "utf-8")) wakati. Kulala (7.5) mapumziko

Mteja.py:

kuagiza dropboximport picameraimport wakati kutoka luma.core.interface.serial kuagiza i2c kutoka luma.core.render kuagiza canvas kutoka luma.oled.device kuagiza ssd1306, ssd1325, ssd1331, sh1106 kuagiza tundu kuagiza wakati kutoka wakati kuagiza kuagiza kulala pyowm serial = i2c (bandari = 1, anwani = 0x3C) kifaa = ssd1306 (serial, zungusha = 1) kamera = picamera. PiCamera () dropbox_access_token = "" # Dropbox-id yako tena computer_path = r "/home/pi/Image.jpg" dropbox_path = f "/dropbox_API/Image.jpg" s = socket.socket (socket. AF_INET, soketi. SOCK_STREAM) host = "" #ip anuani ya pc port yako = 60567 s.connect ((host, port)) msg1 = "" owm = pyowm. OWM ("") # programu-id ya openweathermap num = ["05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "00"] cdt = datetime.datetime.now () min1 = str (cdt.minute) tarehe = str (cdt.day) + "/" + str (cdt. mwezi) + "/" + str (cdt.year) obs = owm.weather_at_place ("") # mji wako na nchi yako katika hali ya hewa ya hali ya hewa = ob.get_weather () temp2 = str (hali ya hewa.pata joto ("fahrenheit") ["te mp_max "]) temp3 = str (hali ya hewa.get_temperature (" fahrenheit ") [" temp_min "]) wakati True: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.our) na turubai (kifaa) kama chora: chora maandishi ((0, 0), saa, jaza = "nyeupe") chora maandishi ((11, 0), ":", fill = "nyeupe") draw.text ((15, 0), min1, jaza = "nyeupe" ") ikiwa min1 katika num: obs = owm.weather_at_place (" ") # mji wako na nchi yako katika muundo wa kamba tena

hali ya hewa = obs.get_Weather ()

temp = str (hali ya hewa.get_temperature ("fahrenheit") ["temp"]) chora.text ((32, 0), "F", fill = "nyeupe") chora maandishi ((40, 0), temp, jaza = "nyeupe") ikiwa min1 sio katika nambari: chora.text ((40, 0), temp2, fill = "nyeupe") chora maandishi ((32, 0), "F", fill = "nyeupe") kamera.start_preview () time.sleep (2) camera.capture ("/ home / pi / Image.jpg") camera.stop_preview client = dropbox. Dropbox (dropbox_access_token) chapa ("[SUCCESS] akaunti ya kisanduku kilichounganishwa") mteja. file_upload (open (computer_path, "rb"). soma (), dropbox_path) chapa ("[UPLOADED] {}". format (computer_path)) full_msg = "" time.sleep (5) msg = s.recv (100) ikiwa len (msg)> = 2: full_msg + = msg.decode ("utf-8") chapisha (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour na turubai (kifaa) kama chora: chora.text ((0, 19), full_msg, fill = "nyeupe") chora maandishi ((0, 0), saa, jaza = "nyeupe") chora maandishi ((11, 0), ":", kujaza = "nyeupe") chora maandishi ((15, 0), min1, jaza = "nyeupe") chora maandishi ((0, 9), "_", fill = " nyeupe ") chora maandishi ((0, 9), tarehe, jaza = "nyeupe") ikiwa min1 kwa num: obs = owm.weather_at_place ("") # mji wako na nchi yako katika muundo wa kamba tena

hali ya hewa = obs.get_Weather ()

temp = str (hali ya hewa.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "nyeupe") chora maandishi ((40, 0), temp, jaza = "nyeupe") ikiwa min1 sio katika nambari: chora.text ((40, 0), temp3, fill = "nyeupe") chora maandishi ((32, 0), "F", fill = "nyeupe") ikiwa len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) na canvas (kifaa) kama chora: chora.text ((0, 0), saa, jaza = "nyeupe") chora maandishi ((11, 0), ":", fill = "nyeupe") chora maandishi ((15, 0), min1, fill = "nyeupe") chora. maandishi ((0, 9), "_", kujaza = "nyeupe") chora maandishi ((0, 9), tarehe, jaza = "nyeupe") ikiwa min1 kwa num: obs = owm.weather_at_place ("") # mji wako na nchi yako katika muundo wa kamba tena

hali ya hewa = obs.get_Weather ()

temp = str (hali ya hewa.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "nyeupe") chora maandishi ((40, 0), temp, jaza = "nyeupe") ikiwa min1 sio katika nambari: chora.text ((40, 0), temp3, fill = "nyeupe") chora maandishi ((32, 0), "F", fill = "nyeupe") kulala (5.4) full_msg1 = "" msg1 = s.recv (100) ikiwa len (msg1)> = 2: full_msg1 + = msg1. maandishi ya maandishi.wrap (full_msg1, 9))) cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) na turubai (kifaa) kama chora: chora.text ((0, 19), full_msg, fill = "nyeupe" ((11, 0), ":", fill = "nyeupe") chora maandishi ((15, 0), min1, fill = "nyeupe") chora maandishi ((0, 9), "_", jaza = "nyeupe") chora maandishi ((0, 9), tarehe, jaza = "nyeupe") ikiwa min1 kwa nambari: obs = owm.weather_at_place ("") # mji wako na nchi yako katika muundo wa kamba tena

hali ya hewa = obs.get_Weather ()

temp = str (hali ya hewa.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "nyeupe") chora maandishi ((40, 0), temp, jaza = "nyeupe") ikiwa min1 sio katika nambari: obs = owm.weather_at_place ("") # mji wako na nchi yako katika muundo wa kamba tena

hali ya hewa = obs.get_Weather ()

temp = str (hali ya hewa.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "nyeupe") chora maandishi ((40, 0), temp, jaza = "nyeupe") ikiwa min1 sio katika nambari: chora.text ((40, 0), temp3, fill = "nyeupe") chora maandishi ((32, 0), "F", fill = "nyeupe") ikiwa len (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) na turubai (kifaa) kama kuteka: chora.text ((0, 0), saa, jaza = "nyeupe") chora maandishi ((11, 0), ":", fill = "nyeupe") chora maandishi ((15, 0), min1, fill = "nyeupe") chora. maandishi ((0, 9), "_", kujaza = "nyeupe") chora maandishi ((0, 9), tarehe, jaza = "nyeupe") ikiwa min1 kwa num: obs = owm.weather_at_place ("") # mji wako na nchi yako katika muundo wa kamba tena

hali ya hewa = obs.get_Weather ()

temp = str (hali ya hewa.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "nyeupe") chora maandishi ((40, 0), temp, jaza = "nyeupe") ikiwa min1 sio katika nambari: chora.text ((40, 0), temp3, fill = "nyeupe") chora maandishi ((32, 0), "F", fill = "nyeupe") muda. kulala (7) mteja.files_delete (dropbox_path) chapisha ("Faili zimefutwa")

P. S. Mimi ni programu ya amateur kwa hivyo tafadhali usiulize njia zangu mbaya za programu.

Hatua ya 4: Kuiweka Pamoja

Kuiweka Pamoja!
Kuiweka Pamoja!

Mara tu unapomaliza kila kitu kingine umekamilisha yote unayobaki kufanya ni kuambatisha kamera ya rasiberi na kuonyesha kwenye glasi. Unaweza kufanya hivyo kwa kutumia wambiso wa pande mbili uliotajwa kwenye vifaa au unaweza kutumia njia zozote unazofikiria ni muhimu. Unaweza pia kuwa umeona sijataja betri mahali popote kwenye somo hili ambayo ni kwa sababu nina sasisho za baadaye zilizopangwa kwa glasi hizi na sikutaka kuambatisha moja kwa sasa. Lakini ikiwa unataka kuambatisha moja utahitaji mzunguko wa chaja ya li-po kutoka amazon

Ikiwa ulifurahiya hii na unataka kuona zaidi, nimeanzisha kituo cha YouTube na nitatumahi kuwa nitatuma mafunzo hapa pia. Hapa kuna kiunga:

www.youtube.com/channel/UCGqcWhHXdZf231rLe…

Mungu Anaokoa!

Yohana 3:16 "Kwa maana Mungu aliupenda ulimwengu, hata akamtoa Mwanawe wa pekee, ambaye amwaminiye milele hatapotea bali awe na uzima wa milele."

Ilipendekeza: