Daftar Isi:

Kacamata Cerdas: 4 Langkah
Kacamata Cerdas: 4 Langkah

Video: Kacamata Cerdas: 4 Langkah

Video: Kacamata Cerdas: 4 Langkah
Video: Kacamata Pintar🔊 edisi affordable!! 2024, November
Anonim
Kacamata Pintar
Kacamata Pintar
Kacamata Pintar
Kacamata Pintar

Halo semuanya hari ini saya akan menunjukkan cara membuat Kacamata Cerdas di rumah! Salah satu hal terbesar tentang kacamata pintar adalah betapa bermanfaatnya memiliki sesuatu seperti ini di dunia teknologi saat ini dan bagaimana tidak hanya ada satu versi kacamata pintar karena semua memiliki fitur luar biasa dan jumlah aplikasi tak terbatas yang dapat diintegrasikan di masa depan. Fitur kacamata pintar ini termasuk memberi tahu waktu, memberi tahu Anda suhu setiap 5 menit, antara 5 menit itu bertukar antara suhu tinggi dan rendah yang diharapkan untuk hari itu, juga memberi tahu Anda tanggalnya. Tetapi fitur utamanya adalah ia mengambil gambar setiap 10 detik dan kemudian menganalisis gambar itu untuk teks di mana ia akan mengembalikan informasi yang berguna tentangnya, jika ia menemukan pertanyaan maka ia akan menjawabnya menggunakan wolfram, atau jika ia menemukan persamaan matematika itu akan menyelesaikannya!

Perlengkapan:

Perlengkapan yang diperlukan untuk proyek ini meliputi:

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

2) Tampilan OLED 128x64 yang jelas (Dari Sparkfun.com)

3) Modul kamera yang diformat untuk Raspberry Pi 0 W (Dari amazon.com)

4) Kacamata apa pun pilihan Anda

5) Kabel

6) Besi solder

7) Solder bebas timah (karena Anda tidak ingin mati karena timah)

8) perekat 2 arah

9) kartu SD minimal 8gb

10) komputer dan koneksi internet

Dengan asumsi Anda sudah memiliki komputer dan koneksi internet, biaya kacamata ini akan mencapai sekitar $130,00

Langkah 1: Menghubungkan Sirkuit

Kabel Sirkuit!
Kabel Sirkuit!

Untuk menampilkan teks di layar Anda akan terhubung ke OLED melalui I2C atau SPI, saya memilih I2C karena ini adalah yang saya lebih nyaman gunakan tetapi jika Anda ingin menghubungkannya melalui SPI, ikuti tutorial ini di situs web Sparkfun dan kembali ke sini setelah Anda selesai. https://learn.sparkfun.com/tutorials/transparent-g… Jika Anda telah memilih I2C karena saya telah menyolder kabel seperti yang ditunjukkan oleh berikut ini:

Pi \/ OLED \/

3.3v 3.3v

GND GND

SDA SDA

SCL SCL

Harap dicatat bahwa OLED bening hanya dapat menangani 3.3v.

Setelah Anda selesai menghubungkan sirkuit, geser kabel pita modul kamera ke dalam dudukan kabel pita pada raspberry pi dengan menarik keluar klem hitam dan geser kembali setelah kabel pita terpasang di tempatnya.

Langkah 2: Mengakses Raspberry Pi

Menggunakan ssh kita dapat mengakses pi kita dengan pc kita tanpa menghubungkan mouse dan monitor keyboard eksternal tambahan. Hal pertama yang Anda lakukan adalah menghubungkan kartu SD Anda ke PC Anda dengan adaptor atau port bawaan, maka Anda harus menuju ke tautan ini https://www.raspberrypi.org/downloads/raspbian/ dan unduh Raspbian buster dengan desktop. Kedua Anda harus meletakkan OS ke kartu SD menggunakan BalenaEtcher pilih kartu SD Anda dan OS Raspbian dan klik "flash" proses ini bisa memakan waktu lama jadi kembalilah ketika Anda selesai. Ketiga, buka kartu SD di file explorer atau finder di mac dan buat file teks bernama wpa_supplicant pastikan untuk menghapus ekstensi.txt dan tambahkan.conf, di file tempel berikut ini:

negara=AS

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 }

Anda harus memasukkan nama dan kata sandi WiFi Anda di tempat dan negara yang sesuai jika Anda tidak berada di AS. Perlu diingat bahwa Raspberry Pi hanya dapat terhubung ke jaringan 2.4Ghz yang berarti komputer Anda juga harus terhubung ke jaringan itu. Setelah membuat file teks kosong tanpa ekstensi bernama ssh dan kemudian keluarkan kartu SD Anda. Anda kemudian perlu menginstal Putty https://www.putty.org/ yang akan Anda gunakan untuk mengaktifkan ssh. Setelah terinstal masukkan alamat IP raspberry pi Anda, Anda dapat mengetahui apa itu dengan masuk ke situs web router Anda masuk dan melihat perangkat yang terhubung.

Setelah Anda mendapatkan akses ke Raspberry Pi, ia akan meminta Anda untuk masuk, nama pengguna default adalah "pi" dan kata sandinya adalah "raspberry". Ketik sudo raspi-config lalu buka opsi antarmuka dan aktifkan kamera, ssh, dan i2c, lalu klik selesai dan ketik sudo reboot. Sekarang Anda siap untuk ssh ke raspberry pi, lanjutkan dan instal Remote Desktop dan masukkan alamat IP raspberry pi Anda dan sekarang Anda bisa ssh ke raspberry pi.

Langkah 3: Waktu Pengkodean

Waktu Pengkodean!
Waktu Pengkodean!

Saya telah memilih untuk mengkode program ini dengan python jadi pastikan Anda telah menginstal python3.7 atau 3.8 di desktop Anda. Kode ini bekerja dengan menggunakan server dan klien, server adalah komputer Anda. Klien atau raspberry pi akan mengambil gambar dan mengunggahnya ke dropbox yang diambil oleh server yang kemudian menjalankan pemrosesan gambar dan pengenalan teks pada gambar. Anda harus mendapatkan wolframalpha, dropbox, dan id aplikasi openweathermap agar ini berfungsi, yang harus Anda lakukan adalah pergi ke pendaftaran situs web dan itu akan memberi Anda id aplikasi. dan kemudian memasukkannya ke tempat yang sesuai yang ditentukan oleh komentar dalam kode. Pastikan Anda telah menginstal pip semuanya dan menginstal Tesseract OCR dan OpenCV. Buat file python bernama Server.py di pc Anda dan file bernama client.py di raspberry pi lalu salin dan tempel kodenya. Tetapi ketahuilah bahwa semakin tebal karakter dan semakin putih latar belakang, semakin baik hasilnya, demikian halnya dengan setiap perangkat lunak pengenalan teks.

Semua tautan untuk mendaftar ke app-id \/

www.wolframalpha.com/

openweathermap.org/api

www.dropbox.com/developers/documentation

Pastikan Anda menginstal Tesseract OCR dan OpenCV \/

github.com/UB-Mannheim/tesseract/wiki

opencv.org/

Server.py:

import dropboxfrom PIL import Image import cv2 import pytesseract dari pytesseract import Output import numpy as np import wolframalpha import socket waktu impor

dbx = dropbox. Dropbox("dropboxAPIkey")

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

app_id = "ID-Aplikasi"

host = socket.gethostname()

port = 60567 cetak (host) s.bind((host, port)) s.listen(2)

sementara Benar:

c, addr = s.accept() print (f'Dapatkan koneksi dari: {addr}') break

sementara Benar:

while 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("Gambar diunduh!") image = cv2.imread("Image.jpg") Gambar = cv2.resize(gambar, (640, 480), interpolasi=cv2. INTER_AREA) image68 = cv2.rotate(Gambar, cv2. ROTATE_90_COUNTERCLOCKWISE) abu-abu = cv2.cvtColor(image68, cv2. COLOR_BGR2GRAY)

def remove_noise(abu-abu):

return cv2.medianBlur(abu-abu, 5) def thresholding(abu-abu): return cv2.threshold(abu-abu, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU)[1] def melebar(abu-abu): kernel = np.ones((5, 5), np.uint8) mengembalikan cv2.dilate(abu-abu, kernel, iterasi=1) d = pytesseract.image_to_data(abu-abu, output_type = Output. DICT)

n_box = len(d['teks'])

for i in range(n_boxes): if int(d['conf']) > 60: (x, y, w, h) = (d['left'], d['top'], d['lebar'], d['tinggi']) abu-abu = cv2.persegi panjang(abu-abu, (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(abu-abu) print(text) while True: text2 = " " if len(text) >= 2: c.send(bytes(text, "utf-8")) if len(text) = 2: query = teks 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

Klien.py:

impor dropboximport picameraimport waktu dari luma.core.interface.serial impor i2c dari luma.core.render impor kanvas dari luma.oled.device impor ssd1306, ssd1325, ssd1331, sh1106 impor soket waktu impor dari waktu impor tidur impor 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 = ""#alamat ip port pc Anda = 60567 s.connect((host, port)) msg1 = " " owm = pyowm. OWM("")#app-id untuk openweathermap num = ["05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "00"] cdt = datetime.datetime.now() min1 = str(cdt.minute) tanggal = str(cdt.day) + "/" + str(cdt. bulan) + "/" + str(cdt.year) obs = owm.weather_at_place("")#kota dan negara Anda dalam format string cuaca = 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) hour = str(cdt.hour) dengan kanvas(perangkat) sebagai gambar: draw.text((0, 0), hour, fill = "white") draw.text((11, 0), ":", fill = "white") draw.text((15, 0), min1, fill = "putih") draw.text((0, 9), "_", fill = "putih") draw.text((0, 9), tanggal, fill = "putih ") jika min1 dalam num: obs = owm.weather_at_place("")#kota dan negara Anda dalam format string lagi

cuaca = obs.get_weather()

temp = str(cuaca.get_temperature("fahrenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text((40, 0), temp, isi = "putih") jika min1 tidak ada dalam angka: 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] akun dropbox tertaut") klien. 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) dengan canvas(device) sebagai 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 = " putih") draw.text((0, 9), tanggal, isi = "putih") jika min1 dalam num: obs = owm.weather_at_place("")#kota dan negara Anda dalam format string lagi

cuaca = obs.get_weather()

temp = str(cuaca.get_temperature("fahrenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text((40, 0), temp, fill = "white") jika min1 tidak ada dalam angka: 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) dengan kanvas(perangkat) sebagai draw: draw.text((0, 0), jam, isi = "putih") draw.text((11, 0), ":", fill = "putih") draw.text((15, 0), min1, isi = "putih") draw. teks((0, 9), "_", isi = "putih") draw.text((0, 9), tanggal, isi = "putih") if min1 in num: obs = owm.weather_at_place("") #kota dan negara Anda dalam format string lagi

cuaca = obs.get_weather()

temp = str(cuaca.get_temperature("fahrenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text((40, 0), temp, fill = "white") jika min1 tidak ada dalam angka: 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) dengan kanvas(perangkat) sebagai 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 = "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("")#kota dan negara Anda dalam format string lagi

cuaca = obs.get_weather()

temp = str(cuaca.get_temperature("fahrenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text((40, 0), temp, isi = "putih") jika min1 tidak dalam angka: obs = owm.weather_at_place("")#kota dan negara Anda dalam format string lagi

cuaca = obs.get_weather()

temp = str(cuaca.get_temperature("fahrenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text((40, 0), temp, fill = "white") jika min1 tidak ada dalam angka: 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) dengan kanvas(perangkat) sebagai draw: draw.text((0, 0), jam, isi = "putih") draw.text((11, 0), ":", fill = "putih") draw.text((15, 0), min1, isi = "putih") draw. teks((0, 9), "_", isi = "putih") draw.text((0, 9), tanggal, isi = "putih") if min1 in num: obs = owm.weather_at_place("") #kota dan negara Anda dalam format string lagi

cuaca = obs.get_weather()

temp = str(cuaca.get_temperature("fahrenheit")["temp"]) draw.text((32, 0), "F", fill = "white") draw.text((40, 0), temp, fill = "white") jika min1 tidak ada dalam angka: draw.text((40, 0), temp3, fill = "white") draw.text((32, 0), "F", fill = "white") time.sleep(7) client.files_delete(dropbox_path) print ("File dihapus")

P. S. Saya seorang programmer amatir jadi tolong jangan mempertanyakan metode pemrograman saya yang mengerikan.

Langkah 4: Menyatukan Semuanya

Menyatukan Semuanya!
Menyatukan Semuanya!

Setelah Anda menyelesaikan semua yang lain, Anda praktis selesai, yang tersisa untuk dilakukan adalah memasang kamera raspberry pi dan tampilan ke kacamata. Anda dapat melakukannya dengan menggunakan perekat dua sisi yang disebutkan dalam persediaan atau Anda dapat menggunakan metode apa pun yang Anda anggap perlu. Anda juga mungkin telah memperhatikan bahwa saya belum menyebutkan baterai di mana pun dalam pelajaran ini karena saya memiliki rencana peningkatan di masa mendatang untuk kacamata ini dan tidak ingin memasangnya sekarang. Tetapi jika Anda ingin memasangnya, Anda memerlukan sirkuit pengisi daya li-po dari amazon

Jika Anda menikmati ini dan ingin melihat lebih banyak, saya telah memulai saluran YouTube dan mudah-mudahan akan memposting tutorial di sana juga. Ini tautannya:

www.youtube.com/channel/UCGqcWhHXdZf231rLe…

Tuhan Menyelamatkan!

Yohanes 3:16 "Karena begitu besar kasih Allah akan dunia ini, sehingga Ia mengaruniakan Anak-Nya yang tunggal, yang selalu percaya kepada-Nya, tidak binasa, melainkan beroleh hidup yang kekal."

Direkomendasikan: