תוכן עניינים:
וִידֵאוֹ: משקפיים חכמים: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:11
שלום לכולם היום אני הולך להראות לכם איך להכין משקפיים חכמים בבית! אחד הדברים הגדולים ביותר במשקפיים חכמים הוא כמה מועיל שיש דבר כזה בעולם הטכנולוגיה של היום וכי אין רק גרסה אחת של משקפיים חכמים שכן לכולם יש תכונות מדהימות ומספר אינסופי של יישומים שניתן לשלב בעתיד. התכונות של המשקפיים החכמות האלה כוללות את זמן הטעינה, מספרת לך את הטמפרטורה כל 5 דקות, בין אותן 5 דקות שהיא מתחלפת בין הטמפרטורה הגבוהה והנמוכה הצפויה לאותו יום, היא גם אומרת לך את התאריך. אבל התכונה העיקרית שלה היא שהיא מצלמת תמונה כל 10 שניות ואז מנתחת את התמונה הזו לטקסט שבה היא תחזיר מידע שימושי עליה, אם היא תמצא שאלה אז היא תענה עליה באמצעות wolfram, או אם היא תמצא משוואה מתמטית. זה יפתור את זה!
אספקה:
האספקה הדרושה לפרויקט זה תכלול את הדברים הבאים:
1) פטל פיי 0 W (מאת vilros.com)
2) צג OLED ברור בגודל 128x64 (מאת Sparkfun.com)
3) מודול מצלמה המעוצב עבור Raspberry Pi 0 W (מאת amazon.com)
4) כל כוסות לבחירתך
5) חוטים
6) מלחם
7) הלחמה ללא עופרת (מכיוון שאינך רוצה למות מעופרת)
8) דבק דו כיווני
9) כרטיס SD מינימלי של 8GB
10) מחשב וחיבור לאינטרנט
בהנחה שכבר יש לך מחשב וחיבור לאינטרנט העלות של משקפיים אלה תגיע לסביבות 130.00 $
שלב 1: חיווט המעגל
על מנת להציג טקסט על המסך, יהיה עליך להתחבר ל- OLED באמצעות I2C או SPI, אני בוחר ב- 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.3 וולט.
לאחר שסיימת לחבר את המעגל, החלק את כבל הסרט של מודול המצלמה לתוך מחזיק כבל הסרט ב- pi פטל על ידי משיכת המהדק השחור והחלקתו חזרה פנימה לאחר כבל הסרט.
שלב 2: גישה ל- Raspberry Pi
באמצעות ssh אנו יכולים לגשת ל- pi שלנו באמצעות המחשב האישי שלנו מבלי לחבר עכבר ומקלדת חיצוניים נוספים. הדבר הראשון שאתה צריך לעשות הוא לחבר את כרטיס ה- SD למחשב האישי באמצעות מתאם או יציאה מובנית, ואז תצטרך להיכנס לקישור הזה https://www.raspberrypi.org/downloads/raspbian/ ולהוריד באסטר Raspbian. עם שולחן עבודה. שנית, עליך לשים את מערכת ההפעלה על כרטיס ה- SD באמצעות BalenaEtcher בחר את כרטיס ה- SD שלך ואת מערכת ההפעלה Raspbian ולחץ על "פלאש" תהליך זה עלול להימשך זמן מה, אז תחזור כשתסיים. שלישית עבור לכרטיס ה- SD ב- Explorer Explorer או ב- Finder ב- Mac וצור קובץ טקסט בשם wpa_supplicant הקפד למחוק את סיומת ה- txt ולהוסיף.conf, בקובץ הדבק את הדברים הבאים:
מדינה = ארה ב
ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = רשת אחת = {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. לאחר ההתקנה הזן את כתובת ה- IP של פטל הפאי שלך, תוכל להבין מה זה על ידי כניסה לאתר הנתבים שלך והתחברות למכשירים המחוברים.
לאחר שתשיג גישה ל- Raspberry Pi הוא יבקש ממך להיכנס, שם המשתמש המוגדר כברירת מחדל הוא "pi" והסיסמה היא "פטל". הקלד sudo raspi-config ואז עבור לאפשרויות הממשק והפעל את המצלמה, ssh ו- i2c, לחץ על סיום והקלד אתחול מחדש של sudo. עכשיו אתה מוכן להיכנס ל- pi פטל, התקן את שולחן העבודה המרוחק והזן את כתובת ה- IP של הפטל שלך ועכשיו אתה טוב להיכנס ל- pi פטל.
שלב 3: זמן קידוד
בחרתי לקודד את התוכנית הזו ב- python אז וודא שמותקן python3.7 או 3.8 על שולחן העבודה שלך. קוד זה פועל באמצעות שרת ולקוח, כשהנתח הוא המחשב האישי שלך. הלקוח או פטל פאי יצלם תמונה ויעלה אותה ל dropbox שהיא אחזור של השרת שמריץ לאחר מכן עיבוד תמונה וזיהוי טקסט על התמונה. תצטרך להשיג wolframalpha, dropbox ומזהה אפליקציית מפות פתוח כדי שזה יעבוד, כל שעליך לעשות הוא להיכנס להרשמה לאתרים וזה ייתן לך מזהה אפליקציה. ולאחר מכן הכנס אותם למקומות המתאימים שנקבעו על ידי ההערות בקוד. וודא שהתקנת הכל בפיפ והתקנת את Tesseract OCR ו- OpenCV. צור קובץ פייתון בשם Server.py במחשב שלך וקובץ בשם client.py ב- pi פטל ולאחר מכן העתק והדבק את הקוד. אך דע כי ככל שהדמויות נועזות והרקע הלבן יותר כך התוצאות טובות יותר, כך בכל תוכנת זיהוי טקסט.
כל הקישורים להרשמה למזהה אפליקציה \/
www.wolframalpha.com/
openweathermap.org/api
www.dropbox.com/developers/documentation
הקפד להתקין את Tesseract OCR ו- OpenCV \/
github.com/UB-Mannheim/tesseract/wiki
opencv.org/
Server.py:
ייבוא dropbox מאת PIL יבוא תמונה יבוא cv2 יבוא pytesseract מ pytesseract יבוא פלט יבוא numpy כמו np יבוא wolframalpha שקע יבוא זמן יבוא
dbx = dropbox. Dropbox ("dropboxAPIkey")
s = socket.socket (socket. AF_INET, socket. SOCK_STREAM)
app_id = "מזהה אפליקציה"
host = socket.gethostname ()
יציאה = 60567 הדפסה (מארח) s.bind ((מארח, יציאה)) s.listen (2)
בעוד שזה נכון:
c, addr = s.accept () הדפסה (f'Goted connection from: {addr} ') break
בעוד שזה נכון:
בעוד True: time.sleep (13.7) מטא נתונים, f = dbx.files_download ("/dropbox_API/Image.jpg") out = open ("Image.jpg", 'wb') out.write (f.content) החוצה. close () הדפס ("הורדה התמונה!") image = cv2.imread ("Image.jpg") Image = cv2.resize (תמונה, (640, 480), אינטרפולציה = cv2. INTER_AREA) image68 = cv2.rotate (תמונה, cv2. ROTATE_90_COUNTERCLOCKWISE) אפור = cv2.cvtColor (image68, cv2. COLOR_BGR2GRAY)
def remove_noise (אפור):
return cv2.medianBlur (אפור, 5) סף def (אפור): return cv2.threshold (אפור, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilate (אפור): kernel = np.ones ((5, 5), np.uint8) החזר cv2.dilate (אפור, גרעין, איטרציות = 1) d = pytesseract.image_to_data (אפור, output_type = Output. DICT)
n_boxes = len (d ['text'])
עבור 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 (שאילתה) answer = הבא (תוצאות.התוצאות). טקסט answer1 = answer.partition ('\ n') [0] הדפס (answer1) c.send (בתים (answer1, "utf-8")) if len (טקסט) <= 1: c.send (בתים (text2, "utf-8")) time.sleep (7.5) הפסקה
Client.py:
ייבוא dropboximport פיקמרה זמן ייבוא מ- luma.core.interface.serial יבוא i2c מ- luma.core.render ייבוא בד מ- luma.oled.device ייבוא ssd1306, ssd1325, ssd1331, sh1106 ייבוא שקע נתונים מתי הזמן ייבוא שינה יבוא pyowm serial = i2c (port = 1, address = 0x3C) device = ssd1306 (סידורי, סובב = 1) מצלמה = 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 = ""#כתובת IP של יציאת המחשב האישי שלך = 60567 s.connect ((host, port)) msg1 = "" owm = pyowm. OWM ("")#app-id עבור מפת הפתוח 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. חודש) + "/" + str (cdt.year) obs = owm.weather_at_place ("")#העיר והמדינה שלך בפורמט מחרוזת מזג אוויר = obs.get_weather () temp2 = str (weather.get_temperature ("פרנהייט")] ["te mp_max "]) temp3 = str (weather.get_temperature (" פרנהייט ") [" temp_min "]) בעוד True: cdt = datetime.datetime.now () min1 = str (cdt.minute) שעה = str (cdt.hour) עם בד (מכשיר) כציור: צייר.טקסט ((0, 0), שעה, מילוי = "לבן") צייר.טקסט ((11, 0), ":", מילוי = "לבן") צייר.טקסט ((15, 0), min1, fill = "לבן") צייר.טקסט ((0, 9), "_", מילוי = "לבן") צייר.טקסט ((0, 9), תאריך, מילוי = "לבן ") if min1 in num: obs = owm.weather_at_place (" ")#העיר והמדינה שלך שוב בפורמט מחרוזת
מזג אוויר = obs.get_weather ()
temp = str (weather.get_temperature ("פרנהייט") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "לבן") אם min1 לא במספר: 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) הדפס ("
מזג אוויר = obs.get_weather ()
temp = str (weather.get_temperature ("פרנהייט") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "לבן") אם min1 לא במספר: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") אם len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) שעה = str (cdt.hour) עם בד (מכשיר) כציור: draw.text ((0, 0), hour, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") צייר. text ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white") if min1 in num: obs = owm.weather_at_place ("") #העיר והמדינה שלך שוב בפורמט מחרוזת
מזג אוויר = obs.get_weather ()
temp = str (weather.get_temperature ("פרנהייט") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "לבן") אם min1 לא במספר: 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". הצטרף (textwrap.wrap (full_msg1, 9))) cdt = datetime.datetime.now () min1 = str (cdt.minute) שעה = str (cdt.hour) עם בד (מכשיר) כציור: draw.text ((0, 19), full_msg, fill = "לבן") 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), "_", מילוי = "לבן") draw.text ((0, 9), תאריך, מילוי = "לבן") אם min1 במספר: obs = owm.weather_at_place ("")#העיר והמדינה שלך בפורמט מחרוזת שוב
מזג אוויר = obs.get_weather ()
temp = str (weather.get_temperature ("פרנהייט") ["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 ("")#העיר והמדינה שלך שוב בפורמט מחרוזת
מזג אוויר = obs.get_weather ()
temp = str (weather.get_temperature ("פרנהייט") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "לבן") אם min1 לא במספר: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") אם len (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) שעה = str (cdt.hour) עם בד (מכשיר) כציור: draw.text ((0, 0), hour, fill = "white") draw.text ((11, 0), ":", fill = "white") draw.text ((15, 0), min1, fill = "white") צייר. text ((0, 9), "_", fill = "white") draw.text ((0, 9), date, fill = "white") if min1 in num: obs = owm.weather_at_place ("") #העיר והמדינה שלך שוב בפורמט מחרוזת
מזג אוויר = obs.get_weather ()
temp = str (weather.get_temperature ("פרנהייט") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, fill = "לבן") אם min1 לא במספר: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "white") time.sleep (7) הדפסה של client.files_delete (dropbox_path) ("קבצים נמחקו")
נ.ב. אני מתכנת חובב אז אל תטיל ספק בשיטות התכנות הנוראיות שלי.
שלב 4: להרכיב הכל ביחד
לאחר שסיימת את כל השאר כמעט סיימת כל מה שנותר לך לעשות הוא לצרף את מצלמת הפטל פטל ולהציג למשקפיים. אתה יכול לעשות זאת על ידי שימוש בדבק הדו צדדי המוזכר במצרכים או שאתה יכול להשתמש בכל שיטה שלדעתך נחוצה. אולי גם שמתם לב שלא הזכרתי סוללה בשום מקום בשיעור זה כיוון שתכננתי שדרוגים עתידיים למשקפיים אלה ולא רציתי לצרף אותה כרגע. אבל אם אתה רוצה לצרף אחד אתה תצטרך מעגל מטען לי-פו של אמזון
אם נהנית מזה ורוצה לראות עוד, פתחתי ערוץ YouTube ואני מקווה שאפרסם שם גם הדרכות. הנה הקישור:
www.youtube.com/channel/UCGqcWhHXdZf231rLe…
אלוהים מציל!
יוחנן ג ': 16 "כי כל כך אהב אלוהים את העולם עד שנתן לבנו האחד והיחיד שהמאמין בו לעולם לא ימות אך יחיה חיי נצח."
מוּמלָץ:
משקפיים חכמים (מתחת ל -10 $ !!!): 8 שלבים (עם תמונות)
משקפיים חכמים (מתחת ל -10 $ !!!): שלום לכם! כולנו מכירים משקפיים חכמים כמו זה בשם E.D.I.T.H. שנעשה על ידי הדמות האהובה שלנו טוני סטארק שהועברה מאוחר יותר לפיטר פארקר. היום אני הולך לבנות זכוכית חכמה כזו שגם מתחת ל 10 $! הם לא ממש
התמודדות רובוטית עם משקפיים: 5 שלבים
התמודדות רובוטית עם משקפיים: פרויקט זה מראה לך כיצד לבצע משקפיים להתמודדות עם רובוטיקה. כלול בפרויקט זה הר מודפס בתלת מימד אשר יהפוך מפעיל לינארי אם ישולב בו עם מתלה רובוטי זול וחלקי סיכה
משקפיים חכמים: 6 שלבים
משקפיים חכמים: היי לכולם !! היום אני הולכת לשתף אתכם, משהו שרציתי כבר הרבה זמן. משקפיים חכמים עשויים DIY, שנבנו בסביבות 25 $
משקפיים חכמים DIY - Arduino/ESP: 5 שלבים
משקפיים חכמים DIY - Arduino/ESP: הגרסה החדשה זמינה כאן: [YouTube] היי, חבר'ה! אני כאן כדי להראות לכם את פרויקט ה- DIY שלי ולעודד אתכם לעשות זאת בעצמכם! הפרויקט הוא משקפיים חכמות אמיתיות שכולם יכולים להכין בבית .כל הקוד ניתן למצוא כאן ומשאבים: [GitHub] אני גם
כיצד לבצע תריסי גלילה חכמים באמצעות מתגים חכמים של SONOFF ?: 14 שלבים
כיצד לעשות תריסי גלילה חכמים עם מתגים חכמים של SONOFF?: השתמש במצב אינטרלוק במתגים חכמים של SONOFF כדי להפוך את וילונות הגלגלים/התריסים הרגילים שלך לחכמים האם רובכם מסכימים שמדובר במטלה שתמשכו את התריסים/התריסים כלפי מעלה בבוקר ולמשוך אותו בערב? בכל מקרה, אני