Mündəricat:

Ağıllı Eynək: 4 addım
Ağıllı Eynək: 4 addım

Video: Ağıllı Eynək: 4 addım

Video: Ağıllı Eynək: 4 addım
Video: Uğurlu insan olmaq üçün iradənizi gücləndirmənin sınanmış ən effektiv üsulları 2024, Iyul
Anonim
Ağıllı Eynəklər
Ağıllı Eynəklər
Ağıllı Eynəklər
Ağıllı Eynəklər

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

Dövrə naqilləri!
Dövrə naqilləri!

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ı

Kodlama vaxtı!
Kodlama 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

Hamısını bir araya gətirmək!
Hamısını bir araya gətirmək!

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ə: