Mündəricat:

Alexa Yazıcı - Yenidən çevrilmiş qəbz printeri: 7 addım (şəkillərlə)
Alexa Yazıcı - Yenidən çevrilmiş qəbz printeri: 7 addım (şəkillərlə)

Video: Alexa Yazıcı - Yenidən çevrilmiş qəbz printeri: 7 addım (şəkillərlə)

Video: Alexa Yazıcı - Yenidən çevrilmiş qəbz printeri: 7 addım (şəkillərlə)
Video: Уроки Home Assistant. Как сделать сенсор-секундомер и history stats на любой интервал времени 2024, Iyun
Anonim
Image
Image
Alexa Yazıcı | Yenidən çevrilmiş qəbz printeri
Alexa Yazıcı | Yenidən çevrilmiş qəbz printeri

Köhnə texnologiyanı geri qaytarmaq və onu yenidən faydalı etmək tərəfdarıyam. Bir müddət əvvəl köhnə, ucuz bir termal qəbz printeri almışdım və onu yenidən təyin etmək üçün faydalı bir yol istədim. Sonra tətil günlərində mənə Amazon Echo Dot hədiyyə edildi və ən çox istifadə etdiyim xüsusiyyətlərdən biri də alış -veriş siyahıma ərzaq məhsulları əlavə etmək idi. Beləliklə, ikisini birləşdirib qəbz yazıcısını Alexa (və ya Google Home və ya Siri və s.) Bu fikri gerçəkləşdirmək üçün nə lazım olduğunu görək.

Təchizat

Bu layihə üçün istifadə etdiyim hissələr:

  1. Ucuz ümumi termal qəbz yazıcısı (ESC-POS-u dəstəkləməlidir)
  2. Amazon Alexa Device (ehtimal ki, digər "ev köməkçisi" cihazları da işləyəcək)
  3. Raspberry Pi Zero Simsiz
  4. 7805 5v tənzimləyicisi
  5. 10μf kondansatör
  6. 1 μf kondansatör

Bu layihə üçün istifadə etdiyim digər şeylər bunlardır:

  1. Əgər bu belədirsə (IFTTT.com)
  2. Lehimləmə avadanlığı

Addım 1: Raspberry Pi Zero W qurmaq

Raspberry Pi Zero W qurmaq
Raspberry Pi Zero W qurmaq
Raspberry Pi Zero W qurmaq
Raspberry Pi Zero W qurmaq
Raspberry Pi Zero W qurmaq
Raspberry Pi Zero W qurmaq

İlk addım köhnə qəbz printerinin yenidən çap edilməsidir. Ucuz qiymətə və kiçik ölçüyə görə Raspberry Pi Zero W -ni nəzarətçi kimi istifadə etməyi seçdim. Qəbz printer qutusunun içərisinə sığacaq qədər kiçikdir, buna görə heç bir xarici əlaqə yoxdur! Pi Zero W də Wifi -də qurulmuşdur, buna görə hər şey əsasən kiçik ölçüsü ilə birləşdirilmişdir.

Pi -ni işə salmaq üçün Raspbian OS -ni yükləməli və Etcher kimi bir proqramı istifadə edərək microSD karta yazmalıyıq. Bir HDMI kabeli, klaviatura, siçan və sonra güclə birlikdə Pi -yə daxil edin.

Pi açıldıqda və masa üstü interfeysdə olduğunuzda, yuxarı sağdakı simsiz simvolu tıklayaraq simsiz bağlantınızın adını seçərək simsiz şəbəkənizə qoşula bilərsiniz. Sonra eyni simsiz simvolu sağ vurursanız, şəbəkə parametrlərinə gedə və şəbəkə üzərindən asanlıqla qoşula biləcəyimiz üçün statik bir IP ünvanı təyin edə bilərsiniz. Nəhayət, əsas menyunu vurmaq və "Raspbian Konfiqurasiya Redaktoru" nu seçmək və "İnterfeyslər" sekmesinin altında SSH -nin aktiv olduğundan əmin olmaq istəyirsən. Sonra yadda saxla və Pi -ni yenidən başladın.

Addım 2: Pi -dən çap

Pi -dən çap
Pi -dən çap
Pi -dən çap
Pi -dən çap

Raspbery Pi yenidən başladıqdan sonra, statik bir IP ilə və SSH aktiv olaraq simsiz şəbəkənizə qoşulmalıdır. Beləliklə, indi hər hansı bir kompüterdən uzaqdan əlaqə qura bilməliyik. Bunu etmək üçün bir SSH müştəri lazımdır. Windows üçün yaxşı bir müştəri Putty -dir. Daha əvvəl təyin etdiyimiz Pi -nin statik IP ünvanını istifadə edərək ona qoşula bilərsiniz. Sonra istifadəçi adı olaraq "pi" və parol olaraq "moruq" istifadə edərək daxil ola bilərsiniz.

Uğurlu bir girişdən sonra indi Pi -nin terminal interfeysində olmalıyıq. Burada Raspberry Pi üzərində işləyəcək əmrləri yaza bilərik. Məsələn, etmək istədiyimiz ilk şeylərdən biri, Pi üzərindəki proqramın güncəl olduğundan əmin olmaqdır. Beləliklə, terminalda yaza bilərik:

sudo apt-get yeniləməsi

Bu əmr, Pi üzərindəki proqram anbarlarını yeniləyəcək. Sonra, ESC-POS printer proqramını və tələb olunan kitabxanaları quraşdıra bilərik.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-pip sudo pip3 python-escpos yükləyin

Bunu etdikdən sonra printeri Pi-nin Micro-USB portuna qoşa bilərik (adapterdən istifadə edərək). Sonra terminalımızda kiçik bir python skript yarada bilərik

nano hello_world.py

Və bu python kodunu əlavə edə bilərik

#!/usr/bin/pythonfrom escpos.printer Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()

Çıx (CTRL-X), saxla (CTRL-Y) və sınamaq üçün işləd

python3 hello_world.py

Addım 3: Əşyaların İnterneti ilə əlaqə (1 -ci hissə)

Əşyaların İnterneti ilə əlaqə (1 -ci hissə)
Əşyaların İnterneti ilə əlaqə (1 -ci hissə)
Əşyaların İnterneti ilə əlaqə (1 -ci hissə)
Əşyaların İnterneti ilə əlaqə (1 -ci hissə)
Əşyaların İnterneti ilə əlaqə (1 -ci hissə)
Əşyaların İnterneti ilə əlaqə (1 -ci hissə)
Əşyaların İnterneti ilə əlaqə (1 -ci hissə)
Əşyaların İnterneti ilə əlaqə (1 -ci hissə)

Çap edəcək bir şey olmadan bir printerin nə faydası ola bilər? Alexa kimi fərqli internet xidmətlərindən çap etmə funksiyasını təmin etmək istədim. Bəs buna necə nail ola bilərəm? Bir seçim, müəyyən bir internet xidməti seçmək, API sənədlərini izləmək və API -lərinə əsasən bir ərizə yazmaqdır. Amma tənbəl yolla getməyi seçirəm …

Bir sıra meyarlara əsaslanaraq fərqli internet xidmətləri (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter və s.) Məsələn, Facebook-a "əgər" yazıramsa (bu), "Sonra" mənə bir e-poçt göndərin (o).

Beləliklə, bunun ilk yarısında pulsuz bir hesab üçün qeydiyyatdan keçdim, tetiklemek istədiyiniz fərqli xidmətlər üçün yeni bir "applet" yaratmağa başlaya bilərsiniz. Appletimin "Bu" hissəsi Alexa olacaq. Seçmək üçün bir çox Alexa tetikleyicisi var, amma "Alış -veriş siyahınızda nə olduğunu soruş" deyən birini seçəcəyəm. Və nəticədə Raspberry Pi -də Python skriptini işə salmasını istəyirik, buna görə də skriptin "O" hissəsi üçün Webhooks seçmək istəyirik.

Webhooks seçimində, Pi -yə işarə edən bir URL əlavə edə bilərik, daha sonra geri dönəcəyik. Metod sahəsini "Al" olaraq tərk edə bilərik və məzmun növü üçün "Düz Mətn" seçin. Bədən sahəsi üçün "Tərkibi əlavə et" düyməsini basın və "Bütün Siyahı" seçin. Bu, bütün alış -veriş siyahısını Alma tələbi olaraq göndərəcək.

Addım 4: Əşyaların İnterneti ilə əlaqə (2 -ci hissə)

Əşyaların İnterneti ilə əlaqə (2 -ci hissə)
Əşyaların İnterneti ilə əlaqə (2 -ci hissə)
Əşyaların İnterneti ilə əlaqə (2 -ci hissə)
Əşyaların İnterneti ilə əlaqə (2 -ci hissə)

Əvvəlki addım "İnternet" hissəsinə diqqət yetirir, buna görə də indi Raspberry Pi istifadə edərək "əşyalar" hissəsi üzərində işləməyə icazə verin. "Əgər bu o zaman" webhooks proqramı ilə əlaqə qurmaq üçün Raspberry Pi -də bir veb server qurmalıyıq. Bir veb server qurmağın bir çox fərqli yolu var, amma nəticədə Python skriptini işə salmaq istədiyimi nəzərə alaraq Python Flask serverindən istifadə etmək qərarına gəldim.

Pi, bütün Flask kitabxanalarına əvvəlcədən quraşdırılmışdır, buna görə etməmiz lazım olan şey bir test skript yazmağa başlamaqdır:

nano flask_test.py

Və içərisində sadə bir veb səhifəsinə xidmət edən bir kod əlavə edək.

#! flask/bin/python #FLASK KİTABXANALARINI balon idxalı Flaskdan idxal edin, #FLASK Dəyişkən bir tətbiq yaradın = Flask (_ name_) #İNDEKS SAYFASI @app.route ('/') def index (): qayıt 'Flask serveriniz işləyir!' _Name_ == '_main_' olarsa #PROGRAMI İŞLƏ: app.run (debug = Doğru, host = '0.0.0.0')

İndi proqramı saxla və bu əmri istifadə edərək işə salın:

sudo python3 flask_test.py

Komanda cavabı ilə Flask -ın işlədiyi standart portun 5000 port olduğunu görürsünüz. Belə ki, veb brauzerinizdə Pi'nizin IP ünvanını: 5000 yazsanız "Flask serveriniz işləyir!" Yazısını görməlisiniz.

Qəbz yazıcımıza yazdıran əvvəlki Python test kodumuz və test Flask serverimiz var. Beləliklə, onları birləşdirmək və Webhook tətbiqetməmizdən məlumatları çıxaran bir kod daxil etməliyik. Yeni bir Python faylı yaradaq:

nano iot_print_server.py

Və içərisində aşağıdakı kodu əlavə edin:

#! flask/bin/python #Flask və YAZICI KİTABXANALARINI balondan idxal et Şüşədən, escpos.printerdən idxal Usb #YAZICI VƏ FLASK ÜÇÜN DİZAYNLƏRİ P = Usb (0x0416, 0x5011) app = Flask (_ adı _) #C 'INDEX' SƏHİFƏSİ @app.route ('/') def index (): "Flask serveriniz işləyir!" Qayıdın #ALEXA ALIŞVERİŞ LİSTESİNİN @app.route ('/list') def siyahısını yazdırmaq üçün "SƏHİFƏ" OLUN "SƏHİFƏ" YARADIN ('/list') def list (): #CAPTURE "İFTTT WEBOOKS -dan MƏLUMAT ALIN" content = request.get_data () #RAW DATA TO CONVERT STRING str_content = str (məzmun) #MƏLUMATI AYRI BÖLMƏLİ XƏTLƏRƏ DÖVÜŞ str_split = str_content.splitlines () #VERGİ ÜZRƏ SÖZLƏYƏN SÖZLƏR VƏ YENİ LİSTƏƏ ƏLAVƏ EDİN newlist = str_split söz üçün: word = word.split (',') newlist.extend (söz) #Formatlaşdırma İşarələrini sil ") #Rmv_marksdakı x üçün r = 1 siyahısında hər bir maddəni say və yazdır: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN NƏTİCƏLƏRİ qaytarılır 'x' #_name_ == '_main_' olarsa PROGRAMI İŞLƏYİN: app.run (debug = True, host = '0.0.0.0')

Hər hansı bir səhvin geri dönüb -dönmədiyini görmək üçün onu işə sala bilərsiniz, ancaq hələlik webhookumuzla işləməyəcək, çünki hazırda server yalnız yerli olaraq işləyir. Veb kancasının hələ qoşulacağı xarici URL yoxdur. Routerimizdə liman yönləndirməsini qura bilərik və yalnız xarici üzbəüz IP ünvanımızı istifadə edə bilərik, amma bu o qədər də etibarlı deyil. Alternativ olaraq NGROK ilə getmək qərarına gəlirəm.

Addım 5: Ngrok ilə Xarici Giriş qurun

Ngrok ilə Xarici Giriş qurmaq
Ngrok ilə Xarici Giriş qurmaq
Ngrok ilə Xarici Giriş qurmaq
Ngrok ilə Xarici Giriş qurmaq

Ngrok, xarici IP -ni və ya liman yönləndirməsindəki qarışıqlığı açmadan şəbəkənizə etibarlı bir əlaqə qurur. Pulsuz bir hesaba yazıldıqdan sonra sizə bir icazə işarəsi verir. Sonra Raspberry Pi -də yükləyə, aça, təsdiq kodunuzu bağlaya və sonra 5000 portunda işlədə bilərsiniz:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… ngrok-stabil-linux-arm unzip./ngrok authentoken [bura şəxsiyyət nişanını daxil edin]./ngrok http 5000

*** Vacib *** Ngrok-un pulsuz versiyası sizə statik bir ünvan vermir, belə ki, Ngroku hər dəfə yenidən işlədərkən sizə fərqli bir ünvan verər. Webhook'unuzu yenidən düzəltməyə davam etməmək üçün statik bir ünvan istəsəniz, təkmilləşdirilmiş bir hesab üçün pul ödəməlisiniz.

Statik IP -lər təqdim edən Ngrok -a pulsuz alternativ www.serveo.net saytında "Serveo" adlanır

************************

Yaranan ekranda, Webhook tətbiqetməmizdə istifadə edə biləcəyimiz bir yönləndirmə ünvanı (https://random-string.ngrok.io) verir. Buna görə URL sahəsindəki "Əgər bu o zaman" vəziyyətinə qayıtsanız, Ngrok yönləndirmə ünvanınızı daxil edin və Flask serverimizdəki "siyahı" səhifəsinə yönəldin. Belə bir şeyə bənzəməlidir

random_string.ngrok.io/list

Sonra davam edin və dəyişiklikləri qeyd edin.

Bunu sınamaq üçün Ngrok -u işləməyə davam edin, yeni bir terminal açın və python skriptimizi işə salın. Hər iki maddə işləyərkən Alexa'dan alış -veriş siyahınızda nə olduğunu soruşun. Bir -iki dəqiqədən sonra nəticələri çap etməlidir. Dərhal çap olunmasını istəyirsinizsə, IFTTT üzərindəki Applet -ə gedin və "İndi yoxla" düyməsini basın. Hər şey yaxşı gedirsə, qəbz yazıcısı alış -veriş siyahınızdakıları çap etməlidir! Əlavə etməyimiz lazım olan kodun son hissəsi ngroku və hər dəfə Pi xidməti başladıqda balon serverimizi işə salmağın bir yoludur. Python skriptimizi icra oluna bilərək bunu asanlıqla edə bilərik:

chmod +x iot_print_server.py

Sonra /etc/rc.local faylımızı belə göründüyü kimi düzəldə bilərik:

## Varsayılan olaraq bu skript heç bir iş görmür. # IP ünvanını çap edin _IP = $ (hostname -I) || doğru olarsa ["$ _IP"]; sonra printf "IP ünvanım %s / n" "$ _IP" fi #autostart ngrok və onu təsdiq sənədinizə göstərin./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #printeri python skriptini avtomatik başlatın sudo python3 /home/pi/iot_receipt_printer.py & 0 -dan çıxın

Addım 6: Yazıcıya Pi əlavə edin

Yazıcıya Pi əlavə edin
Yazıcıya Pi əlavə edin
Yazıcıya Pi əlavə edin
Yazıcıya Pi əlavə edin
Yazıcıya Pi əlavə edin
Yazıcıya Pi əlavə edin
Yazıcıya Pi əlavə edin
Yazıcıya Pi əlavə edin

Əldə etdiyim qəbz printerində korpusun içərisində çoxlu boş yer var. Raspberry Pi Zero -nun olduğu qədər kiçik olduğu üçün, onu bir cihaz kimi görünməsi üçün qəbz printerində gizlətməyin yaxşı olacağını düşündüm. Yeganə problem, Qəbz printerinin 12v və Pi -nin 5v -də işləməsidir. Beləliklə, hər ikisini də yalnız bir elektrik kabelindən istəsək, bu 12v enerji təchizatını 5v -ə endirməliyik.

7805 gərginlik tənzimləyicisi, 1uf kondansatör və 10uf kondansatör istifadə edərək, qəbz printerinin məntiq lövhəsinə qoşduğum sadə 5v tənzimləyici yarada bildim. "-" teli ümumi yerə lehimlədim və sonra "+" məftilini güc açarının "yan tərəfinə" lehimlədim ki, printer açıldıqda Pi açılsın və sönsün. Çox metr istifadə edərək çıxışın Pi üçün təhlükəsiz olduğunu təsdiqləmək üçün test etdim. Sonra mikro usb kabeli ilə lehimləyib Pi-yə qoşdum. Kabeli printerə bağladıqdan və açarı çevirdikdən sonra həm printer, həm də Pi açıldı!

Nəhayət, USB kabelini Pi -dən printerə bağlamaq üçün bir çuxur qazdım. 5v tənzimləyicini və Pi -ni printer korpusunun içinə qoymaq üçün bir yer tapdım və sonra hər şeyi bir yerə yığdım. Beləliklə, indi printerin özünəməxsus veb serveri var!

Addım 7: Əlavə edin

Daha çox götürmək
Daha çox götürmək

"Əgər bu o zaman" a baxa bilsəydiniz, ehtimal ki, qoşulmaq üçün bir çox fərqli veb xidməti olduğunu gördünüz. Bir Alexa yoxdursa və ya birindən istifadə etmək istəmirsinizsə, bu layihəni Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress kimi hər şeydən çap etmək üçün istifadə edə bilərsiniz. Tweetləri çap etmək üçün kodumu Github səhifəmdə tapa bilərsiniz. İndi gedin və görün nə ilə qarşılaşa bilərsiniz!

IoT Challenge
IoT Challenge
IoT Challenge
IoT Challenge

IoT Challenge -da birinci mükafat

Tövsiyə: