Mündəricat:
- Addım 1: Dövrə naqillərini çəkin
- Addım 2: Raspberry Pi -yə daxil olmaq
- Addım 3: Kodlaşdırma vaxtı
- Addım 4: Hamısını bir araya gətirin
Video: Ağıllı Eynək: 4 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:42
Hamıya salam bu gün sizə evdə ağıllı eynəklərin necə hazırlanacağını göstərəcəyəm! Ağıllı eynəklərin ən böyük xüsusiyyətlərindən biri, müasir texnologiya dünyasında belə bir şeyə sahib olmağın nə qədər faydalı olması və hamısının heyrətamiz xüsusiyyətlərə və inteqrasiya oluna biləcək sonsuz sayda tətbiqə malik olduğu üçün ağıllı eynəklərin tək bir versiyasının olmamasıdır. gələcəkdə. Bu ağıllı eynəklərin xüsusiyyətlərinə vaxtın izah edilməsi, hər 5 dəqiqədə bir istiliyin söylənməsi, o 5 dəqiqə arasında o gün üçün gözlənilən yüksək və aşağı temperaturun dəyişdirilməsi daxildir, həm də tarixi bildirir. Ancaq əsas xüsusiyyəti, hər 10 saniyədə bir şəkil çəkməsi və sonra bu şəkli bu mövzuda faydalı məlumatları qaytaracağı mətn üçün təhlil etməsi, bir sual taparsa wolframdan istifadə edərək cavab verməsi və ya riyazi tənlik tapmasıdır. həll edəcək!
Təchizat:
Bu layihə üçün lazım olan təchizatlara aşağıdakılar daxildir:
1) Raspberry Pi 0 W (vilros.com saytından)
2) Aydın 128x64 OLED ekran (Sparkfun.com saytından)
3) Raspberry Pi 0 W üçün formatlanmış kamera modulu (amazon.com saytından)
4) İstədiyiniz hər hansı bir eynək
5) Tellər
6) Lehimləmə dəmiri
7) Qurğuşunsuz lehim (çünki qurğuşundan ölmək istəmirsiniz)
8) 2 tərəfli yapışqan
9) SD kart minimum 8 gb
10) kompüter və internet bağlantısı
Artıq kompüteriniz və internet bağlantınız olduğunu düşünsək, bu eynəklərin qiyməti təxminən 130.00 dollara çatacaq
Addım 1: Dövrə naqillərini çəkin
OLED -ə I2C və ya SPI vasitəsilə qoşulacağınız mətni ekranda göstərmək üçün I2C -ni daha rahat istifadə etdiyim üçün seçirəm, ancaq SPI vasitəsi ilə ona qoşulmaq istəsəniz bu təlimatı izləyin. Sparkfun veb saytına daxil olun və işiniz bitdikdə bura qayıdın. https://learn.sparkfun.com/tutorials/transparent-g… Aşağıdakılarla göstərildiyi kimi telləri lehim etdiyim üçün I2C-ni seçmisinizsə:
Pi \/ OLED \/
3.3v 3.3v
GND GND
SDA SDA
SCL SCL
Unutmayın ki, aydın OLED yalnız 3.3v idarə edə bilər.
Dövrəni bağlamağı bitirdikdən sonra, qara kelepçeyi çıxarıb lent kabeli yerində olduqdan sonra geri sürüşdürərək kamera modulunun lent kabelini moruq pi üzərindəki lent kabel tutucusuna sürüşdürün.
Addım 2: Raspberry Pi -yə daxil olmaq
Ssh istifadə edərək, əlavə bir xarici klaviatura siçanı və monitoru bağlamadan kompüterimizlə pi -ə daxil ola bilərik. Etdiyiniz ilk şey, SD kartınızı bir adapter və ya quraşdırılmış bir port ilə kompüterinizə bağlamaqdır, sonra bu linkə daxil olmalısınız https://www.raspberrypi.org/downloads/raspbian/ və Raspbian buster -i yükləyin. masa üstü ilə. İkincisi, BalenaEtcher -dən istifadə edərək OS -ni SD kartın üzərinə qoymalısınız və SD kartınızı və Raspbian OS -ni seçin və "flash" düyməsini basın, bu proses bir az vaxt ala bilər, buna görə bitdikdə geri qayıdın. Üçüncüsü, Mac -da fayl araşdırıcısı və ya tapıcıda olan SD karta gedin və wpa_supplicant adlı bir mətn faylı yaradın.txt uzantısını silmək və.conf faylını əlavə etmək üçün aşağıdakıları yapışdırın:
ölkə = ABŞ
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}
ABŞ -da deyilsinizsə, müvafiq yerlərdə və ölkədə WiFi adınızı və şifrənizi daxil etməli olacaqsınız. Unutmayın ki, Raspberry Pi yalnız 2.4Ghz şəbəkəsinə qoşula bilər, yəni kompüteriniz də bu şəbəkəyə qoşulmalı olacaq. Ssh adlı uzantısı olmayan boş bir mətn faylı yaradın və sonra SD kartınızı çıxarın. Daha sonra ssh -i aktiv etmək üçün istifadə edəcəyiniz PuTTY https://www.putty.org/ yükləməlisiniz. Quraşdırıldıqdan sonra moruq pi -nin IP ünvanını daxil edin, marşrutlaşdırıcılarınızın veb saytına daxil olaraq əlaqəli cihazlara baxaraq bunun nə olduğunu anlaya bilərsiniz.
Raspberry Pi-yə daxil olduqdan sonra daxil olmağınızı xahiş edəcək, standart istifadəçi adı "pi" və parol "moruq" dur. Sudo raspi-config yazın, sonra interfeys seçimlərinə keçin və kamera, ssh və i2c-i aktiv edin, sonra bitirmə düyməsini basın və sudo reboot yazın. İndi moruq pi ssh -ə hazırsınız, davam edin və Uzaq Masaüstünü qurun və moruq pi -nin IP ünvanını daxil edin və indi moruq pi -yə ssh etmək yaxşıdır.
Addım 3: Kodlaşdırma vaxtı
Bu proqramı pythonda kodlaşdırmağı seçdim, buna görə də masaüstünüzdə python3.7 və ya 3.8 quraşdırıldığından əmin olun. Bu kod server və müştəri istifadə edərək işləyir. Müştəri və ya moruq pi bir şəkil çəkəcək və sonra şəkil üzərində emal və mətn tanıma ilə məşğul olan server tərəfindən alınan dropboxa yükləyəcək. Bunun işləməsi üçün wolframalpha, dropbox və openweathermap app-id almalı olacaqsınız, etməniz lazım olan yeganə şey veb saytlarına daxil olmaqdır və sizə bir tətbiq kimliyi verəcəkdir. və sonra onları koddakı şərhlərlə müəyyən edilmiş müvafiq yerlərə daxil edin. Hər şeyi pip quraşdırdığınızdan və Tesseract OCR və OpenCV qurduğunuzdan əmin olun. Kompüterinizdə Server.py adlı bir python və moruq pi üzərində client.py adlı bir fayl yaradın və sonra kodu kopyalayıb yapışdırın. Ancaq bilin ki, daha cəsarətli personajlar və fon nə qədər ağ olarsa, nəticələr o qədər yaxşı olar, hər mətn tanıma proqramında belədir.
Tətbiq idinə yazılmaq üçün bütün bağlantılar \/
www.wolframalpha.com/
openweathermap.org/api
www.dropbox.com/developers/documentation
Tesseract OCR və OpenCV qurduğunuzdan əmin olun \/
github.com/UB-Mannheim/tesseract/wiki
opencv.org/
Server.py:
PIL idxaldan PIL idxalı Image idxal cv2 idxal pytesseract pytesseract idxal Çıxış idxal wpramalpha idxal yuvası idxal vaxtı kimi
dbx = dropbox. Dropbox ("dropboxAPIkey")
s = socket.socket (socket. AF_INET, socket. SOCK_STREAM)
app_id = "Tətbiq ID"
host = socket.gethostname ()
port = 60567 print (host) s.bind ((host, port)) s.listen (2)
Doğru halda:
c, addr = s.accept () print (f'Bağlantı var: {addr} ') fasilə
Doğru halda:
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 ("Şəkil endirildi!") image = cv2.imread ("Image.jpg") Image = cv2.resize (image, (640, 480), interpolasiya = cv2. INTER_AREA) image68 = cv2.rotate (Şəkil), cv2. ROTATE_90_COUNTERCLOCKWISE) boz = cv2.cvtColor (şəkil68, cv2. COLOR_BGR2GRAY)
def remove_noise (boz):
qayıt cv2.medianBlur (boz, 5) def həddi (boz): qayıt cv2. eşik (boz, 0, 255, cv2. THRESH_BINARY + cv2. THRESH_OTSU) [1] def dilate (boz): kernel = np.ones ((5, 5), np.uint8) cv2.dilate (boz, kernel, iterations = 1) d = pytesseract.image_to_data (boz, output_type = Çıxış. DICT)
n_boxes = len (d ['mətn'])
i aralığında (n_bokslar): əgər int (d ['conf'] )> 60: (x, y, w, h) = (d ['sol'] , d ['üst'] , d ['eni'] , d ['hündürlük'] ) boz = cv2. dikdörtgen (boz, (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 (boz) çap (mətn), 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 (sorğu) cavab = sonrakı (res.results).text answer1 = answer.partition ('\ n') [0] print (answer1) c.send (bytes (answer1, "utf-8")) if len (text) <= 1: c.göndər (bayt (mətn2, "utf-8")) vaxt.yuxu (7.5) fasilə
Client.py:
luma.core.interface.serial -dan idxal dropboximport picameraimport zamanı luma.core.device -dən luma.core.revdən kətan idxal et ssd1306, ssd1325, ssd1331, sh1106 idxalı datetime zaman idxalı yuxu idxalı pyowm serial = i2c (port = 1, ünvan = 0x3C) cihaz = ssd1306 (serial, döndür = 1) kamera = picamera. PiCamera () dropbox_access_token = "" #Dropbox-idiniz yenə 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 portunuzun #ip ünvanı = 60567 s.connect ((host, port)) 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) tarix = str (cdt.day) + "/" + str (cdt. ay) + "/" + str (cdt.year) obs = owm.weather_at_place ("")#şəhər və ölkənizi simli formatlı hava = obs.get_weather () temp2 = str (hava.get_temperature ("fahrenheit")] "te mp_max "]) temp3 = str (weather.get_temperature (" fahrenheit ") [" temp_min "]) True isə: cdt = datetime.datetime.now () min1 = str (cdt.minute) saat = str (cdt.hour) kətan (cihaz) ilə çəkiliş: draw.text ((0, 0), saat, fill = "ağ") draw.text ((11, 0), ":", fill = "ağ") draw.text ((15, 0), min1, doldur = "ağ") draw.text ((0, 9), "_", doldur = "ağ") draw.text ((0, 9), tarix, doldur = "ağ ") min1 nömrə varsa: obs = owm.weather_at_place (" ")#şəhəriniz və ölkəniz yenidən simli formatda
hava = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, doldurun = "ağ") əgər min1 ədəd deyilsə: draw.text ((40, 0), temp2, fill = "ağ") draw.text ((32, 0), "F", fill = "ağ") 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") müştəri. files_upload (open (computer_path, "rb"). read (), dropbox_path) print ("[UPLOADED] {}". format (computer_path)) full_msg = "" time.sleep (5) msg = s.recv (100) əgər len (msg)> = 2: full_msg += msg.decode ("utf-8") çap (full_msg) cdt = datetime.datetime.now () min1 = str (cdt.minute) saat = str (cdt.hour) kətan (cihaz) ilə çəkiliş: draw.text ((0, 19), full_msg, fill = "white") draw.text ((0, 0), saat, fill = "ağ") draw.text ((11, 0), ":", fill = "ağ") draw.text ((15, 0), min1, fill = "ağ") draw.text ((0, 9), "_", doldur = " ağ ") draw.text ((0, 9), tarix, doldur = "ağ") əgər min1 nömrədədirsə: obs = owm.weather_at_place ("")#şəhəriniz və ölkəniz yenidən simli formatda
hava = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, doldurun = "ağ") min1 sayı deyilsə: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "ağ") if len (msg) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) kətan (cihaz) ilə beraberlik: draw.text ((0, 0)), saat, doldur = "ağ") draw.text ((11, 0), ":", doldur = "ağ") draw.text ((15, 0), min1, doldur = "ağ") çək. mətn ((0, 9), "_", doldurun = "ağ") draw.text ((0, 9), tarix, dolgu = "ağ"), əgər min1 sayı: obs = owm.weather_at_place ("") #şəhərinizi və ölkənizi yenidən simli formatda
hava = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, doldurun = "ağ") min1 sayı deyilsə: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "ağ") 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) kətan (cihaz) ilə beraberlik: draw.text ((0, 19), full_msg, fill = "ağ") draw.text ((0, 29), full_msg2, fill = "ağ") draw.text ((0, 0), saat, doldur = "ağ") draw.text ((11, 0), ":", fill = "ağ") draw.text ((15, 0), min1, fill = "ağ") draw.text ((0, 9), "_", doldur = "ağ") draw.text ((0, 9), tarix, doldurun = "ağ"), min1 ədəddədirsə: obs = owm.weather_at_place ("")#şəhər və ölkənizi yenidən simli formatda
hava = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, doldurun = "ağ") min1 saylı deyilsə: obs = owm.weather_at_place ("")#şəhər və ölkənizi yenidən simli formatda
hava = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, doldurun = "ağ") min1 sayı deyilsə: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "ağ") if len (msg1) <= 1: cdt = datetime.datetime.now () min1 = str (cdt.minute) hour = str (cdt.hour) kətan (cihaz) ilə draw: draw.text ((0, 0)), saat, doldur = "ağ") draw.text ((11, 0), ":", doldur = "ağ") draw.text ((15, 0), min1, doldur = "ağ") çək. mətn ((0, 9), "_", doldurun = "ağ") draw.text ((0, 9), tarix, dolgu = "ağ"), əgər min1 sayı: obs = owm.weather_at_place ("") #şəhərinizi və ölkənizi yenidən simli formatda
hava = obs.get_weather ()
temp = str (weather.get_temperature ("fahrenheit") ["temp"]) draw.text ((32, 0), "F", fill = "white") draw.text ((40, 0), temp, doldurun = "ağ") min1 sayı deyilsə: draw.text ((40, 0), temp3, fill = "white") draw.text ((32, 0), "F", fill = "ağ") time.sleep (7) client.files_delete (dropbox_path) yazdır ("Fayllar silindi")
P. S. Mən həvəskar bir proqramçıyam, zəhmət olmasa dəhşətli proqramlaşdırma üsullarımı şübhə altına almayın.
Addım 4: Hamısını bir araya gətirin
Qalan hər şeyi bitirdikdən sonra praktiki olaraq bitirdiyiniz tək şey moruq pi kamerasını və ekranı eynəklərə bağlamaqdır. Təchizatlarda qeyd olunan iki tərəfli yapışdırıcıdan istifadə edərək və ya zəruri hesab etdiyiniz hər hansı bir metoddan istifadə edə bilərsiniz. Bu dərsdə heç bir yerdə batareyadan bəhs etmədiyimi də görə bilərdiniz, çünki gələcəkdə bu eynəklər üçün planlaşdırdığım təkmilləşdirmələr var və indi onu taxmaq istəmirdim. Ancaq birini bağlamaq istəyirsinizsə, Amazon-dan bir li-po şarj cihazına ehtiyacınız olacaq
Əgər bundan zövq alsanız və daha çoxunu görmək istəyirsinizsə, bir YouTube kanalı açmışam və inşallah orada da dərsliklər yerləşdirəcəyəm. İşdə link:
www.youtube.com/channel/UCGqcWhHXdZf231rLe…
Allah Qorusun!
Yəhya 3:16 "Allah dünyanı o qədər sevdi ki, Ona inanan Oğulunu verdi, ölməyəcək, əbədi bir həyata sahib olacaq."
Tövsiyə:
D4E1 - Çevik Mühəndislik: Əyilməyə qarşı Eynək 2.4: 4 Addım
D4E1 - Çevik Mühəndislik: Tilt əleyhinə Eynək 2.4: Salam! Qısa bir girişlə başlayım.Biz Howest, Kortrijk, Belçikada Sənaye Məhsullarının Dizaynı ilə məşğul olan tələbələrdən ibarət ikiliyik. CAD kursumuz üçün, kütləvi istehsala buraxmaq və ya kiçik seriyalarda saxlamaq üçün köməkçi bir alətin yenidən dizayn edilməsi tapşırığını aldıq
SONOFF Ağıllı Açarları ilə Ağıllı Pərdələri necə DIY etmək olar ?: 14 addım
SONOFF Smart Açarları ilə Ağıllı Panjurları Necə DIY etmək olar?: SONOFF ağıllı açarlarda kilidləmə rejimindən istifadə edərək adi pərdələrinizi/pərdələrinizi ağıllı hala gətirin Çoxlarınız bunun səhərlər pərdələri/pərdələri çəkdiyiniz bir iş olduğunu qəbul edəcəksinizmi? və axşam aşağı çəkin? Hər halda, mən
Eynək Çantası Bluetooth Dinamik: 6 addım
Eynək Çantası Bluetooth Dinamik: Bu, sadəcə bir neçə vasitəyə ehtiyac duyulan olduqca sadə bir dizayndır, tamamlamaq üçün bir neçə saat çəkdim, amma inşallah bir az vaxtınıza qənaət etməyiniz lazım olan hər hansı bir qarışıq biti tapıb düzəltdim
LED Eynək və Kostyum: 4 Addım (Şəkillərlə birlikdə)
LED Eynək və Kostyum: Qaranlıqda uzaqdan görünməyi sevirsən? Eltonunki kimi gözəl eynəklər istəyirsiniz? O zaman bu təlimat sizin üçündür !!! Bir LED kostyum və cizgi işıq eynəklərinin necə hazırlanacağını öyrənəcəksiniz
Ağıllı Eynək Çantası: 5 addım
Ağıllı Eynək Çantası: LED Eynək Çantası, səhər saatlarında otaq ümumiyyətlə LED şeritləri ilə qaranlıq olduqda eynəklərinizi tapmağa imkan verir. Eynəklərinizi içəriyə qoyduqdan sonra ultrasəs sensoru işə saldıqdan sonra onu gecə lampası kimi də istifadə edə bilərsiniz. Bu layihə daxil