![Ухаалаг шил: 4 алхам Ухаалаг шил: 4 алхам](https://i.howwhatproduce.com/images/001/image-637-j.webp)
Агуулгын хүснэгт:
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00
![Ухаалаг шил Ухаалаг шил](https://i.howwhatproduce.com/images/001/image-637-1-j.webp)
![Ухаалаг шил Ухаалаг шил](https://i.howwhatproduce.com/images/001/image-637-2-j.webp)
Сайн байцгаана уу Өнөөдөр би танд гэртээ ухаалаг нүдний шил хэрхэн хийхийг зааж өгөх болно. Ухаалаг шилний хамгийн агуу зүйлсийн нэг бол өнөөгийн технологийн ертөнцөд ийм зүйлтэй байх нь хэр ашигтай вэ, ухаалаг шилний ганцхан хувилбар байдаггүй, учир нь бүгд гайхалтай онцлогтой, хязгааргүй олон тооны програмуудыг нэгтгэж болно. ирээдүйд. Эдгээр ухаалаг нүдний шилний онцлог шинж чанарууд нь цагийг хэлж өгөх, температурыг 5 минут тутамд хэлэх, 5 минутын хооронд тухайн өдрийн хүлээгдэж буй өндөр ба бага температурыг хооронд нь сольж, огноог зааж өгөх явдал юм. Гэхдээ түүний гол онцлог нь 10 секунд тутамд нэг зураг авч, дараа нь тухайн зургийн текстийг судалж, түүнд хэрэгтэй мэдээллийг буцааж өгөх болно, хэрэв асуулт байвал вольфрам ашиглан хариулах эсвэл математикийн тэгшитгэл олвол үүнийг шийдэх болно!
Хангамж:
Энэхүү төсөлд шаардлагатай хангамжид дараахь зүйлс орно.
1) Raspberry Pi 0 W (vilros.com дээрээс)
2) 128x64 тунгалаг OLED дэлгэц (Sparkfun.com дээрээс)
3) Raspberry Pi 0 W форматтай камерын модуль (amazon.com -оос)
4) Таны хүссэн шил
5) Утас
6) Гагнуурын төмөр
7) Хар тугалгагүй гагнуур (учир нь та хар тугалганаас үхэхийг хүсдэггүй)
8) 2 талын наалдамхай
9) SD карт хамгийн багадаа 8gb
10) компьютер ба интернет холболт
Хэрэв танд компьютер, интернет холболт байгаа гэж үзвэл эдгээр шилний үнэ ойролцоогоор 130.00 доллар болно
Алхам 1: Цахилгааны хэлхээг холбоно уу
![Цахилгаан хэлхээг холбож байна! Цахилгаан хэлхээг холбож байна!](https://i.howwhatproduce.com/images/001/image-637-3-j.webp)
Текстийг дэлгэцэн дээр харуулахын тулд та I2C эсвэл SPI -ээр дамжуулан OLED -тэй холбогдох гэж байгаа бөгөөд I2C -ийг ашиглахад илүү тохиромжтой гэж сонгосон боловч хэрэв танд SPI -ээр холбогдохыг хүсч байвал энэ зааврыг дагана уу. Sparkfun вэбсайтыг үзээд дууссаны дараа энд буцаж ирээрэй. https://learn.sparkfun.com/tutorials/transparent-g… Хэрэв та I2C-ийг сонгосон бол би утсыг дараах байдлаар гагнаж байна.
Pi \/ OLED \/
3.3v 3.3v
GND GND
SDA SDA
SCL SCL
Тодорхой OLED нь зөвхөн 3.3v хүчдэлтэй ажиллах боломжтой гэдгийг анхаарна уу.
Цахилгаан хэлхээг холбож дууссаны дараа камерын модулийн тууз кабелийг бөөрөлзгөнө pi дээрх тууз кабелийн үүрэнд шургуулж, хар хавчаарыг сугалж, тууз кабель байрлуулсны дараа буцааж шургуулна.
Алхам 2: Raspberry Pi руу нэвтрэх
Ssh ашиглан бид гадны гарны нэмэлт хулгана, дэлгэцийг холбохгүйгээр компьютерт pi -ээрээ нэвтрэх боломжтой болно. Таны хийх ёстой хамгийн эхний зүйл бол SD картаа адаптер эсвэл суулгасан порт ашиглан компьютер дээрээ холбох явдал юм, дараа нь та энэ линк рүү орж https://www.raspberrypi.org/downloads/raspbian/ холбоос руу орж Raspbian buster програмыг татаж авах хэрэгтэй болно. ширээний хамт. Хоёрдугаарт, та BalenaEtcher -ийг ашиглан OS картаа SD карт руу оруулах хэрэгтэй бөгөөд SD карт, Raspbian OS -ээ сонгоод "флаш" дээр дарна уу. Гуравдугаарт, Mac Explorer дээрх файл хайгч эсвэл хайгч дахь SD карт руу ороод wpa_supplicant нэртэй текст файл үүсгэж,.txt өргөтгөлийг устгаад.conf файлыг нэмж оруулаарай.
улс = АНУ
ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = 1 сүлжээ = {ssid = "WIFI_SSID" scan_ssid = 1 psk = "WIFI_PASSWORD" key_mgmt = WPA-PSK}
Хэрэв та АНУ -д байхгүй бол та холбогдох WiFi сүлжээний нэр, нууц үгээ холбогдох газар, улсад оруулах шаардлагатай болно. Raspberry Pi нь зөвхөн 2.4Ghz сүлжээнд холбогдох боломжтой гэдгийг санаарай, ингэснээр таны компьютер энэ сүлжээнд холбогдох шаардлагатай болно. Ssh гэж нэрлэгддэг өргөтгөлгүй хоосон текст файл үүсгээд SD картаа гаргаж аваарай. Дараа нь та PuTTY https://www.putty.org/ -г суулгах хэрэгтэй бөгөөд үүнийг ssh -ийг идэвхжүүлэхийн тулд ашиглах болно. Суулгасны дараа бөөрөлзгөнө pi -ийн IP хаягийг оруулна уу, энэ нь чиглүүлэгчийн вэбсайт руу нэвтэрч, холбогдсон төхөөрөмжүүдийг хараад юу болохыг олж мэдэх боломжтой болно.
Та Raspberry Pi-д нэвтэрсний дараа нэвтрэх шаардлагатай болно, хэрэглэгчийн нэр нь "pi" бөгөөд нууц үг нь "бөөрөлзгөнө" байна. Sudo raspi-config гэж бичээд интерфэйсийн сонголтууд руу орж камер, ssh, i2c-ийг идэвхжүүлээд Finish дээр дарж sudo reboot гэж бичнэ үү. Одоо та бөөрөлзгөнө pi руу ssh хийхэд бэлэн боллоо, Remote Desktop -ийг суулгаж, бөөрөлзгөнө pi -ийн IP хаягийг оруулна уу.
Алхам 3: Кодлох цаг
![Кодлох цаг! Кодлох цаг!](https://i.howwhatproduce.com/images/001/image-637-4-j.webp)
Би энэ програмыг python дээр кодлохоор сонгосон тул та ширээний компьютер дээрээ python3.7 эсвэл 3.8 суулгасан эсэхийг шалгаарай. Энэ код нь сервер болон үйлчлүүлэгч ашиглан ажилладаг бөгөөд энэ нь таны компьютер юм. Үйлчлүүлэгч эсвэл бөөрөлзгөнө pi нь зураг аваад түүнийгээ dropbox руу байршуулах бөгөөд үүнийг серверээс авдаг бөгөөд дараа нь зураг дээр зураг боловсруулах, текст таних ажлыг гүйцэтгэдэг. Үүнийг хийхийн тулд та wolframalpha, dropbox, openweathermap апп-id авах шаардлагатай болно, зөвхөн вэбсайтад бүртгүүлэхэд л хангалттай бөгөөд энэ нь танд апп-ID өгөх болно. дараа нь тэдгээрийг кодын тайлбараар тодорхойлсон холбогдох газруудад оруулна уу. Та pip бүх зүйлийг суулгаж, Tesseract OCR болон OpenCV суулгасан эсэхээ шалгаарай. Компьютер дээрээ Server.py нэртэй питон файл, бөөрөлзгөнө pi дээр client.py нэртэй файл үүсгээд кодыг хуулж буулгана уу. Гэхдээ илүү тод дүрүүд, арын дэвсгэр нь илүү цагаан байх тусам үр дүн нь илүү сайн байх болно, энэ нь текст таних програм хангамж бүрт тохиолддог зүйл гэдгийг мэддэг.
Апп-id-д бүртгүүлэх бүх линкүүд \/
www.wolframalpha.com/
openweathermap.org/api
www.dropbox.com/developers/documentation
Tesseract OCR болон OpenCV суулгасан эсэхээ шалгаарай \/
github.com/UB-Mannheim/tesseract/wiki
opencv.org/
Server.py:
PIL импортоос импортлох импорт Зураг импорт cv2 импорт pytesseract pytesseract импорт Гаралтын импорт wpramalpha импорт сокет импортлох цаг
dbx = dropbox. Dropbox ("dropboxAPIkey")
s = socket.socket (socket. AF_INET, socket. SOCK_STREAM)
app_id = "Апп-ID"
хост = socket.gethostname ()
порт = 60567 хэвлэх (хост) s.bind ((хост, порт)) s. сонсох (2)
үнэн байхад:
c, addr = s.accept () print (f'Холболт авсан: {addr} ') завсарлага
үнэн байхад:
while True: time.sleep (13.7) мета өгөгдөл, f = dbx.files_download ("/dropbox_API/Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) out. close () print ("Зураг татаж авсан!") image = cv2.imread ("Image.jpg") Image = cv2.resize (зураг, (640, 480), интерполяци = cv2. INTER_AREA) image68 = cv2.rotate (Зураг), cv2. ROTATE_90_COUNTERCLOCKWISE) саарал = cv2.cvtColor (зураг68, cv2. COLOR_BGR2GRAY)
def remove_noise (саарал):
буцах cv2.medianBlur (саарал, 5) def босго (саарал): буцах cv2. босго (саарал, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def өргөжүүлэх (саарал): цөм = np.ones ((5, 5), np.uint8) cv2.dilate (саарал, цөм, давталт = 1) d = pytesseract.image_to_data (саарал, output_type = Гаралт. DICT)
n_boxes = len (d ['текст'])
i -ийн хувьд (n_boxes): хэрэв int (d ['conf'] )> 60: (x, y, w, h) = (d ['left'] , d ['top'] , d ['өргөн'] , d ['өндөр'] ) саарал = cv2. тэгш өнцөгт (саарал, (x, y), (x + w, y + h), (0, 255, 0), 2) pytesseract.pytesseract.tesseract_cmd = r "C: / Program Files / Tesseract-OCR / tesseract.exe" text = pytesseract.image_to_string (саарал) хэвлэх (текст) байхад 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 (query) answer = next (res.results).text answer1 = answer.partition ('\ n') [0] print (answer1) c.send (bytes (answer1, "utf-8")) if len (text) <= 1: c. илгээнэ үү (байт (текст2, "utf-8")) цаг. Унтах (7.5) завсарлага
Client.py:
luma.core.device -ээс luma.core.device -аас luma.core.render -аас импорт хийх зураг luma.core.interface.serial -аас импортлох dropboximport picameraimport импорт хийх цаг ssd1306, ssd1325, ssd1331, sh1106 импортын сокетийг импортлох импорт pyowm цуврал = i2c port = 1, address = 0x3C) device = ssd1306 (serial, rotate = 1) camera = picamera. PiCamera () dropbox_access_token = "" #Таны dropbox-id дахин computer_path = r "/home/pi/Image.jpg" dropbox_path = f "/dropbox_API/Image.jpg" s = socket.socket (socket. AF_INET, socket. SOCK_STREAM) host = "" pc портын #ip хаяг = 60567 s.connect ((хост, порт)) msg1 = "" owm = pyowm. OWM ("")#app-id for openweathermap num = ["05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "00"] cdt = datetime.datetime.now () min1 = str (cdt.minute) огноо = str (cdt.day) + "/" + str (cdt. сар) + "/" + str (cdt.year) obs = owm.weather_at_place ("")#танай хот, улсыг мөр форматаар цаг агаар = obs.get_weather () temp2 = str (weather.get_temperature ("fahrenheit")) "te mp_max "]) temp3 = str (цаг агаар зотон (төхөөрөмж) -ийг зурах байдлаар: draw.text ((0, 0), цаг, дүүргэх = "цагаан") draw.text ((11, 0), ":", дүүргэх = "цагаан") draw.text ((15, 0), мин1, дүүргэх = "цагаан") draw.text ((0, 9), "_", дүүргэх = "цагаан") draw.text ((0, 9), огноо, дүүргэх = "цагаан ") хэрэв min1 тоогоор байвал: obs = owm.weather_at_place (" ")#танай хот, улсыг дахин мөр хэлбэрээр
цаг агаар = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, бөглөх = "цагаан"), хэрэв min1 тоогоор оруулаагүй бол: draw.text ((40, 0), temp2, fill = "цагаан") draw.text ((32, 0), "F", fill = "цагаан") camera.start_preview () time.sleep (2) camera.capture ("/home/pi/Image.jpg") camera.stop_preview client = dropbox. Dropbox (dropbox_access_token) хэвлэх ("[АМЖИЛТ] dropbox данс холбогдсон") үйлчлүүлэгч. files_upload (нээлттэй (computer_path, "rb"). read (), dropbox_path) хэвлэх ("[UPLOADED] {}". формат (computer_path)) full_msg = "" time.sleep (5) msg = s.recv (100) if len (msg)> = 2: full_msg += msg.decode ("utf-8") хэвлэх (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour)) зотон (төхөөрөмж) -ийг зурах байдлаар: draw.text ((0, 19), full_msg, fill = "white") draw.text ((0, 0), цаг, дүүргэх = "цагаан") draw.text ((11, 0), ":", fill = "цагаан") draw.text ((15, 0), min1, fill = "цагаан") draw.text ((0, 9), "_", дүүргэх = " цагаан ") draw.text ((0, 9), огноо, бөглөх = "цагаан") хэрэв min1 тоогоор байвал: obs = owm.weather_at_place ("")#танай хот, улсыг дахин мөр хэлбэрээр
цаг агаар = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, дүүргэх = "цагаан"), хэрэв min1 нь тоогоор оруулаагүй бол: draw.text ((40, 0), temp3, fill = "цагаан") draw.text ((32, 0), "F", fill = "цагаан") if len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) canvas (device) with draw: draw.text ((0, 0)), цаг, дүүргэх = "цагаан") draw.text ((11, 0), ":", дүүргэх = "цагаан") draw.text ((15, 0), мин1, дүүргэх = "цагаан") зурах. текст ((0, 9), "_", бөглөх = "цагаан") draw.text ((0, 9), огноо, бөглөх = "цагаан") хэрэв min1 in in: obs = owm.weather_at_place ("") #танай хот, улсыг дахин string хэлбэрээр
цаг агаар = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, дүүргэх = "цагаан"), хэрэв min1 нь тоогоор оруулаагүй бол: draw.text ((40, 0), temp3, fill = "цагаан") draw.text ((32, 0), "F", fill = "цагаан") 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 = "цагаан") draw.text ((0, 29), full_msg2, fill = "цагаан") draw.text ((0, 0), цаг, дүүргэх = "цагаан") draw.text ((11, 0), ":", fill = "цагаан") draw.text ((15, 0), min1, fill = "цагаан") draw.text ((0, 9), "_", бөглөх = "цагаан") draw.text ((0, 9), огноо, бөглөх = "цагаан") хэрэв min1 in in number: obs = owm.weather_at_place ("")#таны хот, улсыг дахин мөр хэлбэрээр
цаг агаар = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, бөглөх = "цагаан") хэрэв min1 тоогоор оруулаагүй бол: obs = owm.weather_at_place ("")#таны хот, улсыг дахин мөр хэлбэрээр
цаг агаар = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, дүүргэх = "цагаан"), хэрэв min1 нь тоогоор оруулаагүй бол: draw.text ((40, 0), temp3, fill = "цагаан") draw.text ((32, 0), "F", fill = "цагаан") 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)), цаг, дүүргэх = "цагаан") draw.text ((11, 0), ":", дүүргэх = "цагаан") draw.text ((15, 0), мин1, дүүргэх = "цагаан") зурах. текст ((0, 9), "_", бөглөх = "цагаан") draw.text ((0, 9), огноо, бөглөх = "цагаан") хэрэв min1 in in: obs = owm.weather_at_place ("") #танай хот, улсыг дахин string хэлбэрээр
цаг агаар = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, дүүргэх = "цагаан"), хэрэв min1 нь тоогоор оруулаагүй бол: draw.text ((40, 0), temp3, fill = "цагаан") draw.text ((32, 0), "F", fill = "цагаан") time.sleep (7) client.files_delete (dropbox_path) хэвлэх ("Файлуудыг устгасан")
P. S. Би сонирхогч програмист тул миний аймшигтай програмчлалын аргуудыг бүү эргэлзээрэй.
Алхам 4: Бүгдийг нэгтгэх
![Бүгдийг хамтад нь оруулна уу! Бүгдийг хамтад нь оруулна уу!](https://i.howwhatproduce.com/images/001/image-637-5-j.webp)
Бусад бүх зүйлийг хийж дууссаны дараа бараг л хийж дуусгахын тулд бөөрөлзгөнө пи камер, нүдний шилээ дэлгэцэнд залгахад л үлддэг. Та үүнийг хангамжид дурдсан хоёр талт цавуугаар эсвэл шаардлагатай гэж үзсэн аливаа аргыг ашиглан хийж болно. Та энэ хичээл дээр би батерейны талаар огт хэлээгүйг анзаарсан байх, учир нь би эдгээр нүдний шилэнд ирээдүйд шинэчлэлт хийхээр төлөвлөж байгаа бөгөөд яг одоо залгахыг хүсээгүй юм. Гэхдээ хэрэв та үүнийг хавсаргахыг хүсч байвал Amazon-ээс Li-po цэнэглэгчийн хэлхээ хэрэгтэй болно
Хэрэв танд энэ таалагдсан бөгөөд илүү ихийг үзэхийг хүсч байвал би YouTube суваг нээсэн бөгөөд тэнд бас хичээл заана гэж найдаж байна. Энд холбоос байна:
www.youtube.com/channel/UCGqcWhHXdZf231rLe…
Бурхан авардаг!
Иохан 3:16 "Бурхан ертөнцийг маш их хайрласан тул Түүнд итгэдэг цорын ганц Хүүдээ мөхөхгүй, харин мөнх амьдралтай болно."
Зөвлөмж болгож буй:
Ухаалаг шил (10 доллараас доош !!!): 8 алхам (зурагтай)
![Ухаалаг шил (10 доллараас доош !!!): 8 алхам (зурагтай) Ухаалаг шил (10 доллараас доош !!!): 8 алхам (зурагтай)](https://i.howwhatproduce.com/images/001/image-1089-j.webp)
Ухаалаг шил (10 доллараас доош !!!): Сайн байна уу! E.D.I.T.H гэх нэртэй ухаалаг шилийг бид бүгд сайн мэддэг. бидний хайртай дүр Тони Старкийн бүтээсэн бөгөөд хожим Питер Паркерт дамжуулагдсан юм. Өнөөдөр би 10 доллараас бага үнэтэй ийм ухаалаг шил хийх гэж байна! Тэд тийм ч сайн биш
Ухаалаг шил: 6 алхам
![Ухаалаг шил: 6 алхам Ухаалаг шил: 6 алхам](https://i.howwhatproduce.com/images/001/image-343-47-j.webp)
Ухаалаг нүдний шил: Сайн байцгаана уу! Өнөөдөр би та бүхэнтэй удаан хугацааны турш хүсч байсан зүйлээ хуваалцах гэж байна. 25 см орчим үнэтэй DIY ухаалаг нүдний шил одоо үхэх боломжийг олгож байна
Хараагүй хүмүүст зориулсан ухаалаг шил: 7 алхам
![Хараагүй хүмүүст зориулсан ухаалаг шил: 7 алхам Хараагүй хүмүүст зориулсан ухаалаг шил: 7 алхам](https://i.howwhatproduce.com/images/005/image-13147-j.webp)
Хараагүй хүмүүст зориулсан ухаалаг шил ярих: Ухаалаг шил, ухаалаг цаг гэх мэт олон ухаалаг хэрэгслүүд зах зээл дээр байдаг. Гэхдээ тэд бүгд бидний төлөө бүтээгдсэн. Бие махбодийн бэрхшээлтэй хүмүүст туслах технологийн асар их дутагдалтай байна
DIY ухаалаг нүдний шил - Arduino/ESP: 5 алхам
![DIY ухаалаг нүдний шил - Arduino/ESP: 5 алхам DIY ухаалаг нүдний шил - Arduino/ESP: 5 алхам](https://i.howwhatproduce.com/images/005/image-13958-j.webp)
DIY ухаалаг нүдний шил - Arduino/ESP: Шинэ хувилбарыг эндээс авах боломжтой: [YouTube] Хөөе залуусаа! Би танд DIY хийх төслөө үзүүлж, үүнийг өөрөө хийхийг уриалж байна! Энэхүү төсөл бол хүн бүрийн гэртээ хийж болох жинхэнэ ухаалаг шил юм. .Бүх кодыг эндээс олж болно. [GitHub] Би бас
Амблиопид зориулсан шингэн болор шил (бөглөрөх сургалтын шил) [ATtiny13]: 10 алхам
![Амблиопид зориулсан шингэн болор шил (бөглөрөх сургалтын шил) [ATtiny13]: 10 алхам Амблиопид зориулсан шингэн болор шил (бөглөрөх сургалтын шил) [ATtiny13]: 10 алхам](https://i.howwhatproduce.com/images/002/image-4775-39-j.webp)
Амблиопид зориулсан шингэн болор шил (ээлжлэн бөглөрөх сургалтын шил) [ATtiny13]: Амблиопи (залхуу нүд), хүн амын ойролцоогоор 3% -д нөлөөлдөг харааны бэрхшээл бөгөөд ихэвчлэн энгийн нүдний будалт эсвэл атропины дуслаар эмчилдэг. Харамсалтай нь эдгээр эмчилгээний аргууд нь удаан хугацаанд тасралтгүй, илүү хүчтэй нүдийг хамардаг