İçindekiler:

Alexa Yazıcı - Geri Dönüşümlü Makbuz Yazıcısı: 7 Adım (Resimlerle)
Alexa Yazıcı - Geri Dönüşümlü Makbuz Yazıcısı: 7 Adım (Resimlerle)

Video: Alexa Yazıcı - Geri Dönüşümlü Makbuz Yazıcısı: 7 Adım (Resimlerle)

Video: Alexa Yazıcı - Geri Dönüşümlü Makbuz Yazıcısı: 7 Adım (Resimlerle)
Video: Kadir Erdoğan | En Yeni Tiktok Videoları | #shorts 2024, Kasım
Anonim
Image
Image
Alexa Yazıcı | İleri Dönüştürülmüş Makbuz Yazıcısı
Alexa Yazıcı | İleri Dönüştürülmüş Makbuz Yazıcısı

Ben eski teknolojileri geri dönüştürmenin ve onu tekrar kullanışlı hale getirmenin hayranıyım. Bir süre önce eski, ucuz bir termal makbuz yazıcısı almıştım ve onu yeniden kullanmak için kullanışlı bir yol istiyordum. Sonra tatillerde bana bir Amazon Echo Dot hediye edildi ve en çok kullandığım özelliklerden biri de alışveriş listeme yiyecek eklemek oldu. Bu yüzden ikisini birleştirmenin ve makbuz yazıcısını Alexa (veya Google Home veya Siri, vb.) için bir IOT yazıcısı olarak kullanmanın harika olacağını düşündüm. Bakalım bu fikri gerçeğe dönüştürmek için ne yapacak.

Gereçler

İşte bu proje için kullandığım parçalar:

  1. Ucuz jenerik termal makbuz yazıcısı (ESC-POS'u desteklemesi gerekir)
  2. Amazon Alexa Device (diğer "ev asistanı" cihazları da muhtemelen çalışacaktır)
  3. Raspberry Pi Sıfır Kablosuz
  4. 7805 5v Regülatör
  5. 10μf Kondansatör
  6. 1μf Kondansatör

Bu proje için kullandığım diğer şeyler:

  1. Eğer Böyleyse O Zaman (IFTTT.com)
  2. Lehimleme Ekipmanları

Adım 1: Raspberry Pi Zero W'yi Ayarlama

Raspberry Pi Zero W Kurulumu
Raspberry Pi Zero W Kurulumu
Raspberry Pi Zero W Kurulumu
Raspberry Pi Zero W Kurulumu
Raspberry Pi Zero W Kurulumu
Raspberry Pi Zero W Kurulumu

İlk adım, eski makbuz yazıcısını tekrar yazdırmaktır. Kontrolcü olarak Raspberry Pi Zero W'yi ucuz fiyatı ve küçük boyutu nedeniyle kullanmayı tercih ettim. Aslında fiş yazıcı kasasının içine sığacak kadar küçüktür, bu nedenle harici bağlantı yoktur! Pi Zero W ayrıca Wifi'de yerleşiktir, bu nedenle her şey temelde küçük boyutuna entegre edilmiştir.

Pi'yi çalıştırmak ve çalıştırmak için Raspbian işletim sistemini indirmemiz ve Etcher gibi bir program kullanarak bir microSD karta yazmamız gerekiyor. Bir HDMI kablosu, klavye, fare ve ardından güç ile birlikte Pi'ye takın.

Pi açıldığında ve masaüstü arayüzündeyken, sağ üstteki kablosuz simgesine tıklayarak ve kablosuz bağlantınızın adını seçerek kablosuz ağınıza bağlanabilirsiniz. Daha sonra aynı kablosuz ikona sağ tıklarsanız ağ ayarlarına gidip statik bir IP adresi belirleyerek ağ üzerinden kolayca bağlanalım. Son olarak, ana menüye tıklayıp "Raspbian Configuration Editor" seçeneğini seçin ve "Arayüzler" sekmesi altında SSH'nin etkin olduğundan emin olun. Ardından kaydedin ve Pi'nizi yeniden başlatın.

2. Adım: Pi'den Yazdırma

Pi'den Yazdırma
Pi'den Yazdırma
Pi'den Yazdırma
Pi'den Yazdırma

Raspbery Pi yeniden başlatıldığında, kablosuz ağınıza statik IP ve SSH etkinleştirilmiş olarak bağlanmalıdır. Yani artık başka herhangi bir bilgisayardan ona uzaktan bağlanabilmeliyiz. Bunu yapmak için bir SSH istemcisine ihtiyacınız olacak. Windows için iyi bir istemci Putty'dir. Pi'nin daha önce belirlediğimiz statik IP adresini kullanarak ona bağlanabilirsiniz. Ardından kullanıcı adı olarak "pi" ve şifre olarak "ahududu" kullanarak giriş yapabilirsiniz.

Başarılı bir giriş yaptıktan sonra, şimdi Pi'nin terminal arayüzünde olmalıyız. Burada Raspberry Pi üzerinde çalışacak komutları yazabiliriz. Örneğin, yapmak istediğimiz ilk şeylerden biri Pi üzerindeki yazılımın güncel olduğundan emin olmaktır. Böylece terminalde şunu yazabiliriz:

sudo apt-get güncellemesi

Bu komut, Pi'deki yazılım havuzlarını güncelleyecektir. Ardından ESC-POS yazıcı yazılımını ve gerekli kütüphaneleri kurabiliriz.

sudo apt-get kurulumu python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 kurulumu --upgrade pip sudo pip3 kurulumu python-escpos

Bunu yaptıktan sonra, şimdi Yazıcıyı Pi'nin Mikro-USB bağlantı noktasına bağlayabilir (bir adaptör kullanarak) ve açabiliriz. Sonra terminalimizde küçük bir python betiği oluşturabiliriz

nano merhaba_world.py

Ve içine bu python kodunu ekleyebiliriz

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

Çıkın (CTRL-X), kaydedin (CTRL-Y) ve test etmek için çalıştırın

python3 merhaba_world.py

3. Adım: Nesnelerin İnternetine Bağlanma (1. Kısım)

Nesnelerin İnternetine Bağlanma (1. Bölüm)
Nesnelerin İnternetine Bağlanma (1. Bölüm)
Nesnelerin İnternetine Bağlanma (1. Bölüm)
Nesnelerin İnternetine Bağlanma (1. Bölüm)
Nesnelerin İnternetine Bağlanma (1. Bölüm)
Nesnelerin İnternetine Bağlanma (1. Bölüm)
Nesnelerin İnternetine Bağlanma (1. Bölüm)
Nesnelerin İnternetine Bağlanma (1. Bölüm)

Yazdıracak bir şeyi olmayan bir yazıcı ne işe yarar ki? Alexa gibi farklı internet servislerinden yazdırma işlevselliğini etkinleştirmek istedim. Peki bunu nasıl başarabilirim? Seçeneklerden biri, belirli bir internet hizmetini seçmek, API belgelerini izlemek ve API'lerine dayalı bir uygulama yazmaktır. Ama tembel yoldan gitmeyi seçiyorum…

Bir dizi kritere göre farklı internet hizmetleri (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, vb.) için eylemleri tetikleyen "Eğer Bu O Zaman Oysa" adlı harika bir web sitesi var. Örneğin, "eğer" Facebook'a gönderirsem (bu), "O zaman" bana bir e-posta gönderir (bu).

Bunun ilk yarısı için ücretsiz bir hesap için kaydoldum, tetiklemek istediğiniz farklı hizmetler için yeni bir "applet" oluşturmaya başlayabilirsiniz. Uygulamamın "Bu" kısmı Alexa olacak. Aralarından seçim yapabileceğiniz pek çok Alexa tetikleyicisi var ama ben "Alışveriş listenizde ne olduğunu sorun" yazanı seçeceğim. Ve nihayetinde Raspberry Pi'de bir Python betiğini tetiklemesini istiyoruz, bu yüzden betiğin "O" kısmı için Webhooks'u seçmek istiyoruz.

Web kancaları seçeneğinde, daha sonra geri döneceğimiz Pi'mize işaret eden bir URL ekleyebiliriz. Method alanını "Get" olarak bırakıp içerik türü için "Plain Text"i seçebiliriz. Gövde alanı için "İçerik Ekle"ye tıklayın ve "Tüm Liste"yi seçin. Bu, tüm alışveriş listesini bir Alma isteği olarak gönderir.

4. Adım: Nesnelerin İnternetine Bağlanma (2. Kısım)

Nesnelerin İnternetine Bağlanma (2. Bölüm)
Nesnelerin İnternetine Bağlanma (2. Bölüm)
Nesnelerin İnternetine Bağlanma (2. Bölüm)
Nesnelerin İnternetine Bağlanma (2. Bölüm)

Önceki adım "İnternet" kısmıyla ilgilenir, bu yüzden şimdi Raspberry Pi'yi kullanarak "nesneler" kısmı üzerinde çalışalım. "If This Then That" webhooks uygulaması ile haberleşebilmek için Raspberry Pi üzerinde bir web sunucusu kurmamız gerekiyor. Bir web sunucusu kurmanın birçok farklı yolu vardır, ancak nihayetinde bir Python betiği çalıştırmak istediğimi düşünerek Python'un Flask sunucusunu kullanmaya karar verdim.

Pi, önceden yüklenmiş tüm Flask kitaplıklarına sahiptir, bu yüzden tek yapmamız gereken bir test betiği yazmaya başlamak:

nano flask_test.py

Ve içine basit bir web sayfasına hizmet eden bazı kodlar ekleyelim.

#!flask/bin/python#FLASK KÜTÜPHANELERİNİ şişeden içe aktarın Flask, istek #CREATE A FLASK VARIABLE app = Flask(_name_) #CREATE BİR 'INDEX' PAGE @app.route('/') def index(): dön 'Flask sunucunuz çalışıyor!' #PROGRAMI ÇALIŞTIR eğer _name_ == '_main_': app.run(debug=True, host='0.0.0.0')

Şimdi programı kaydedin ve şu komutu kullanarak çalıştırın:

sudo python3 flask_test.py

Komut yanıtında Flask'ın üzerinde çalıştığı varsayılan bağlantı noktasının 5000 numaralı bağlantı noktası olduğunu göreceksiniz. Dolayısıyla bir web tarayıcısında Pi'nizin IP Adresi:5000'i yazarsanız, "Flask sunucunuz çalışıyor!" metnini görmelisiniz.

Daha önce makbuz yazıcımıza yazdıran test Python kodumuz ve test Flask sunucumuz var. Daha sonra bunları birleştirmemiz ve Webhook uygulamamızdan veri çeken bazı kodları birleştirmemiz gerekiyor. Yeni bir Python dosyası oluşturalım:

nano iot_print_server.py

Ve içine aşağıdaki kodu ekleyin:

#!flask/bin/python#FLASK VE YAZICI KÜTÜPHANELERİNİ flasktan içe aktarın Flask, escpos.printer'dan istek alın 'INDEX' SAYFASI @app.route('/') def index(): 'Flask sunucunuz çalışıyor!' #ALEXA ALIŞVERİŞ LİSTESİ'Nİ YAZDIRMAK İÇİN "LİSTE" ÇAĞRILAN "SAYFA" OLUŞTURUN @app.route('/list') def list(): #IFTTT WEBOOKS'TAN VERİLERİ "AL" içerik = request.get_data() #HAM VERİLERİ DÖNÜŞTÜR STRING str_content = str(content) #VERİLERİ AYRI SATIRLARA BÖLÜN str_split = str_content.splitlines() #Kelimeleri virgülle ayırın ve yeni listeye ekleyin newlist = str_split'teki kelime için: kelime = kelime.split(', ') newlist.extend(word) #REMOVE FORMATTING MARKS rmv_marks = [yeni listedeki s için s.strip("b'")] #PRINT HEADER #print("Alışveriş Listesi\n") p.text("Alışveriş Listesi:\n ") #SAYILAN VE LİSTEDEKİ HER ÖĞEYİ YAZDIRIN r = 1 rmv_marks'ta x için: #print(str(r) + ". " + x + "\n") p.text(str(r) + ". " + x + "\n") r += 1 #RETURN RESULTS 'x' döndürür #PROGRAMI ÇALIŞTIR if _name_ == '_main_': app.run(debug=True, host='0.0.0.0')

Herhangi bir hata döndürüp döndürmediğini görmek için çalıştırabilirsiniz, ancak şu anda sunucu yalnızca yerel olarak çalıştığı için web kancamızla henüz çalışmayacaktır. Henüz web kancasının bağlanacağı harici bir URL yok. Yönlendiricimizde bağlantı noktası iletmeyi ayarlayabilir ve yalnızca harici IP adresimizi kullanabiliriz, ancak bu gerçekten çok güvenli değil. Alternatif olarak Ngrok ile gitmeye karar verdim.

Adım 5: Ngrok ile Harici Erişimi Ayarlama

Ngrok ile Harici Erişimi Ayarlama
Ngrok ile Harici Erişimi Ayarlama
Ngrok ile Harici Erişimi Ayarlama
Ngrok ile Harici Erişimi Ayarlama

Ngrok, harici IP'nizi açığa çıkarmak veya bağlantı noktası iletmeyle uğraşmak zorunda kalmadan ağınızla güvenli bir bağlantı kurar. Ücretsiz bir hesaba kaydolduktan sonra size bir yetkilendirme jetonu verir. Ardından Raspberry Pi'nizde indirebilir, sıkıştırmasını açabilir, kimlik doğrulama jetonunuzu bağlayabilir ve ardından 5000 numaralı bağlantı noktasında çalıştırabilirsiniz:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [kimlik doğrulama simgenizi buraya ekleyin]./ngrok http 5000

***ÖNEMLİ***Ngrok'un ücretsiz sürümü size statik bir adres vermez, bu nedenle Ngrok'u her yeniden çalıştırdığınızda size farklı bir adres verir. Webhook'unuzu yeniden düzenlemek zorunda kalmamak için statik bir adres istiyorsanız, yükseltilmiş bir hesap için ödeme yapmanız gerekir.

Statik IP'ler sunan Ngrok'a ücretsiz bir alternatif, www.serveo.net adresinde "Serveo" olarak adlandırılır.

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

Çıkan ekranda size Webhook uygulamamızda kullanabileceğimiz bir yönlendirme adresi (https://random-string.ngrok.io) verir. Bu nedenle, URL alanına "Bu O Zaman Oysa"ya geri dönersek, Ngrok yönlendirme adresinizi girin ve Flask sunucumuzdaki "liste" sayfasına yönlendirin. Bunun gibi bir şeye benzemeli

random_string.ngrok.io/list

Ardından devam edin ve değişiklikleri kaydedin.

Test etmek için Ngrok'u çalışır durumda tutun, yeni bir terminal açın ve python betiğimizi çalıştırın. Her iki öğe de çalışırken, Alexa'ya alışveriş listenizde ne olduğunu sorun. Bir veya iki dakika sonra sonuçları yazdırmalıdır. Hemen yazdırılmasını istiyorsanız, IFTTT'deki Applet'inize gidin ve "Şimdi Kontrol Et" düğmesini tıklayın. Her şey yolunda giderse, makbuz yazıcısı alışveriş listenizdekileri yazdırmalıdır! Eklememiz gereken son kod parçası, Pi her başlatıldığında ngrok'u ve şişe sunucumuzu otomatik olarak başlatmanın bir yoludur. Python betiğimizi çalıştırılabilir hale getirerek bunu kolayca yapabiliriz:

chmod +x iot_print_server.py

Ardından /etc/rc.local dosyamızı şöyle görünecek şekilde düzenleyebiliriz:

## Varsayılan olarak bu komut dosyası hiçbir şey yapmaz. # IP adresini yazdırın _IP=$(hostname -I) || true if ["$_IP"]; sonra printf "IP adresim %s\n" "$_IP" fi #autostart ngrok ve onu auth dosyanıza yönlendirin./home/pi/ngrok/ngrok http -config=/home/pi/.ngrok2/ngrok. yml 5000 #yazıcıyı otomatik başlat python komut dosyası sudo python3 /home/pi/iot_receipt_printer.py ve 0'dan çıkın

Adım 6: Pi'yi Yazıcıya Ekleme

Pi'yi Yazıcıya Ekleme
Pi'yi Yazıcıya Ekleme
Pi'yi Yazıcıya Ekleme
Pi'yi Yazıcıya Ekleme
Pi'yi Yazıcıya Ekleme
Pi'yi Yazıcıya Ekleme
Pi'yi Yazıcıya Ekleme
Pi'yi Yazıcıya Ekleme

Sahip olduğum makbuz yazıcısının kasasında çok fazla boş alan var. Ve Raspberry Pi Zero olduğu kadar küçük olduğu için, onu tek bir cihaz gibi görünecek şekilde makbuz yazıcısında saklamanın harika olacağını düşündüm. Tek sorun, Makbuz yazıcısının 12v ile, Pi'nin ise 5v ile çalışmasıdır. Dolayısıyla, her ikisine de güç sağlamak için yalnızca bir güç kablosu istiyorsak, o 12v güç kaynağını 5v'ye düşürmemiz gerekecek.

7805 voltaj regülatörü, 1uf kapasitör ve 10uf kapasitör kullanarak makbuz yazıcısının mantık kartına bağladığım basit 5v regülatörü oluşturabildim. "-" kablosunu ortak toprağa lehimledim ve ardından "+" kablosunu güç anahtarının "açık" tarafına lehimledim, böylece yazıcı açılıp kapandığında Pi'nin açılıp kapanmasını sağladım. Bir multimetre kullanarak çıktının Pi için güvenli olduğunu doğrulamak için test ettim. Sonra bir mikro usb kablosuna lehimledim ve onu Pi'ye bağladım. Kabloyu yazıcıya taktıktan ve anahtarı çevirdikten sonra hem yazıcı hem de Pi açıldı!

Son olarak, USB kablosunu Pi'den yazıcıya bağlamak için bir delik açtım. 5v regülatörü ve Pi'yi yazıcı kasasının içine koyacak bir yer buldum ve ardından her şeyi tekrar bir araya getirdim. Artık yazıcının kendi kendine yeten web sunucusu da var!

Adım 7: Daha İleriye Gitmek

Daha da ileri götürmek
Daha da ileri götürmek

Eğer "Eğer Bu O Zaman"a bir göz atabilseydiniz, muhtemelen bağlanmak için tonlarca farklı web servisi olduğunu fark etmişsinizdir. Yani bir Alexa'nız yoksa veya kullanmak istemiyorsanız, bu projeyi Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress gibi hemen hemen her şeyden yazdırmak için kullanabilirsiniz. vb. Tweetleri yazdırmak için kodumu Github sayfamda bulabilirsiniz. Şimdi git ve ne bulabileceğini gör!

IoT Mücadelesi
IoT Mücadelesi
IoT Mücadelesi
IoT Mücadelesi

IoT Challenge'da Birincilik Ödülü

Önerilen: