INHOUDSOPGAWE:

Alexa -drukker - Opgedrukte kwitansie -drukker: 7 stappe (met foto's)
Alexa -drukker - Opgedrukte kwitansie -drukker: 7 stappe (met foto's)

Video: Alexa -drukker - Opgedrukte kwitansie -drukker: 7 stappe (met foto's)

Video: Alexa -drukker - Opgedrukte kwitansie -drukker: 7 stappe (met foto's)
Video: БОЛЬШОЙ ФИЛЬМ ПРО ДАГЕСТАН: Махачкала. Жизнь в горных аулах. Сулакский каньон. Шамильский район 2024, Junie
Anonim
Image
Image
Alexa -drukker | Opgedrukte kwitansie -drukker
Alexa -drukker | Opgedrukte kwitansie -drukker

Ek is 'n fan daarvan om ou tegnologie te herwin en dit weer nuttig te maak. Ek het 'n rukkie gelede 'n ou, goedkoop termiese kwitansie-drukker aangeskaf, en ek wou 'n nuttige manier hê om dit weer te gebruik. Toe, gedurende die vakansie, kry ek 'n Amazon Echo Dot, en een van die funksies wat ek die meeste gebruik het, was om kruideniersware by my inkopielys te voeg. Daarom het ek gedink dit sal gaaf wees om die twee te kombineer en die kwitansie -drukker te gebruik as 'n IOT -drukker vir Alexa (of Google Home, of Siri, ens.). Kom ons kyk wat nodig is om hierdie idee te laat realiseer.

Voorrade

Hier is die dele wat ek vir hierdie projek gebruik:

  1. Goedkoop generiese termiese kwitansie drukker (moet ESC-POS ondersteun)
  2. Amazon Alexa -toestel (ander "huisassistente" -toestelle sal waarskynlik ook werk)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v Reguleerder
  5. 10μf kondensator
  6. 1μf kondensator

Ander dinge wat ek vir hierdie projek gebruik, is:

  1. As dit dan is (IFTTT.com)
  2. Soldeertoerusting

Stap 1: Die opstel van die Raspberry Pi Zero W

Die opstel van die Raspberry Pi Zero W
Die opstel van die Raspberry Pi Zero W
Die opstel van die Raspberry Pi Zero W
Die opstel van die Raspberry Pi Zero W
Die opstel van die Raspberry Pi Zero W
Die opstel van die Raspberry Pi Zero W

Die eerste stap is om die ou kwitansie -drukker weer te laat druk. Ek het gekies om die Raspberry Pi Zero W as die beheerder te gebruik vanweë die goedkoop prys en die klein grootte. Dit is eintlik klein genoeg om in die kassade van die drukkers self te pas, so daar is geen eksterne verbindings nie! Die Pi Zero W het ook ingeboude Wifi, sodat alles basies in sy klein grootte geïntegreer is.

Om die Pi aan die gang te kry, moet ons die Raspbian OS aflaai en dit met 'n program soos Etcher op 'n microSD -kaart verbrand. Steek dit in die Pi saam met 'n HDMI -kabel, sleutelbord, muis en dan krag.

As die Pi opstart en u op die lessenaarkoppelvlak is, kan u met u draadlose verbinding koppel deur op die ikoon regs bo te klik en die naam van u draadlose verbinding te kies. As u dan met die rechtermuisknop op dieselfde draadlose ikoon klik, kan u na die netwerkinstellings gaan en 'n statiese IP -adres instel sodat ons dit maklik via die netwerk kan maak. Uiteindelik wil u op die hoofkieslys klik en die "Raspbian Configuration Editor" kies en onder die oortjie "Interfaces" seker maak dat SSH aangeskakel is. Stoor dit dan en herlaai u Pi.

Stap 2: Druk vanaf die Pi

Druk vanaf die Pi
Druk vanaf die Pi
Druk vanaf die Pi
Druk vanaf die Pi

Nadat die Raspbery Pi herlaai is, moet dit gekoppel wees aan u draadlose netwerk met 'n statiese IP en met SSH aangeskakel. Ons moet dus op afstand vanaf enige ander rekenaar daaraan kan koppel. Om dit te kan doen, benodig u 'n SSH -kliënt. Vir Windows is Putty 'n goeie kliënt. U kan daarby koppel deur die statiese IP -adres van die Pi wat ons vroeër gestel het, te gebruik. Dan kan u aanmeld met 'pi' as gebruikersnaam en 'framboos' as wagwoord.

Na 'n suksesvolle aanmelding, behoort ons nou by die terminale koppelvlak van die Pi te wees. Hier kan ons opdragte invoer wat op die Raspberry Pi uitgevoer sal word. Een van die eerste dinge wat ons wil doen, is byvoorbeeld om seker te maak dat die sagteware op die Pi op datum is. Dus, in die terminale kan ons tik:

sudo apt-get update

Hierdie opdrag sal die sagteware bewaarplekke op die Pi opdateer. Vervolgens kan ons die ESC-POS-drukkersagteware en vereiste biblioteke installeer.

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

As dit klaar is, kan ons die drukker nou aansluit op die mikro-USB-poort van die Pi (met behulp van 'n adapter) en dit aanskakel. Dan kan ons in ons terminale 'n klein python -script skep

nano hello_world.py

En daarin kan ons hierdie python -kode byvoeg

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

Verlaat dit (CTRL-X), stoor dit (CTRL-Y) en voer dit uit om dit te toets

python3 hello_world.py

Stap 3: Koppel aan die internet van dinge (deel 1)

Koppel aan die internet van dinge (deel 1)
Koppel aan die internet van dinge (deel 1)
Koppel aan die internet van dinge (deel 1)
Koppel aan die internet van dinge (deel 1)
Koppel aan die internet van dinge (deel 1)
Koppel aan die internet van dinge (deel 1)
Koppel aan die internet van dinge (deel 1)
Koppel aan die internet van dinge (deel 1)

Wat help 'n drukker sonder om iets te druk? Ek wou funksionaliteit moontlik maak om vanaf verskillende internetdienste, soos Alexa, te druk. So, hoe kan ek dit bereik? Een opsie is om 'n spesifieke internetdiens te kies, hul API -dokumentasie op te spoor en 'n toepassing op grond van hul API te skryf. Maar ek kies om die lui pad te loop …

Daar is 'n wonderlike webwerf genaamd "If This Then That" wat aksies vir verskillende internetdienste (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, ens) veroorsaak, gebaseer op 'n stel kriteria. Byvoorbeeld, "as" ek op Facebook plaas (hierdie), "Dan" stuur vir my 'n e-pos (dit).

Dus, vir die eerste helfte hiervan, het ek aangemeld vir 'n gratis rekening; u kan 'n nuwe 'applet' begin skep vir die verskillende dienste wat u wil aktiveer. Die 'Hierdie' deel van my applet is Alexa. Daar is baie Alexa -snellers om uit te kies, maar ek gaan die een kies wat sê "Vra wat op u inkopielys is". En uiteindelik wil ons hê dat dit 'n Python -script op die Raspberry Pi moet aktiveer, dus vir die 'That' gedeelte van die script wil ons Webhooks kies.

In die Webhooks -opsie kan ons 'n URL byvoeg wat na ons Pi verwys, waarna ons later sal terugkeer. Ons kan die veld Metode as "Get" verlaat, en kies vir die inhoudstipe "Plain Text". Klik in die liggaam -veld op "Voeg bestanddeel by" en kies "Hele lys". Dit stuur die hele inkopielys as 'n Kry -versoek.

Stap 4: Koppel aan die internet van dinge (deel 2)

Koppel aan die internet van dinge (deel 2)
Koppel aan die internet van dinge (deel 2)
Koppel aan die internet van dinge (deel 2)
Koppel aan die internet van dinge (deel 2)

Die vorige stap sorg vir die gedeelte "Internet", sodat ons nou kan werk aan die "dinge" -deel met behulp van die Raspberry Pi. Om met die "If This Then That That" webhooks -applet te kommunikeer, moet ons 'n webbediener op die Raspberry Pi opstel. Daar is baie verskillende maniere om 'n webbediener op te stel, maar omdat ek uiteindelik 'n Python -script wil uitvoer, het ek besluit om Python's Flask -bediener te gebruik.

Die Pi het al die Flask-biblioteke vooraf geïnstalleer, dus al wat ons hoef te doen is om 'n toetsskrif te begin skryf:

nano flask_test.py

En laat ons 'n kode byvoeg wat 'n eenvoudige webwerf bedien.

#! fles/bak/luislang #INVOER DIE FLESBiblioteke van flesinvoerfles, versoek #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): terug 'Jou kolfbediener werk!' #RUN DIE PROGRAM as _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Stoor nou net die program en voer dit uit met hierdie opdrag:

sudo python3 flask_test.py

U sal met die opdragreaksie sien dat die standaardpoort waarop Flask werk, poort 5000 is. As u in u webblaaier die IP -adres van u Pi tik: 5000, moet u die teks sien "U Flask -bediener werk!"

Ons het ons toets Python -kode van vroeër wat na ons kwitansie -drukker gedruk word, en ons het ons toetsfles -bediener. Ons moet dit vervolgens kombineer en 'n kode bevat wat die data uit ons Webhook -applet haal. Kom ons skep 'n nuwe Python -lêer:

nano iot_print_server.py

Voeg daarby die volgende kode:

#! kolf/bak/luislang #INVOER DIE KOLF EN DRUKKERBiblioteke van flesinvoerfles, versoek van escpos.printer invoer Usb #TEKEN VARIABELE VIR DIE DRUK EN KOLF p = Usb (0x0416, 0x5011) app = Fles (_ naam_) #SKEP 'INDEX' PAGE @app.route ('/') def index (): return 'Jou kolfbediener werk!' #SKEP "BLADSY" GENOEM "LYS" VIR AFDRUKKING VAN ALEXA WINKELLYS @app.route ('/list') def list (): #CAPTURE "KRY" GEGEVENS VAN IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA AAN STRING str_content = str (inhoud) #DIVIDE DATA IN SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND TO AD TO A NEW LIST newlist = for word in str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING PUNTE rmv_marks = [s.strip ("b '") vir s in newlist] #PRINT HEADER #print ("Shopping List / n") p.text ("Inkopielys: / n ") #ENUMEREER EN DRUK ELKE PUNT OP LYS r = 1 vir x in rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #TERUGRESULTATE lewer 'x' #RUN DIE PROGRAM as _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

U kan dit uitvoer om te sien of dit foute oplewer, maar dit werk nog nie met ons webhook nie, want op die oomblik werk die bediener slegs plaaslik. Daar is nog geen eksterne URL vir die webhook om aan te sluit nie. Ons kan poort -forwarding op ons router instel en net ons eksterne IP -adres gebruik, maar dit is nie regtig te veilig nie. As alternatief besluit ek om saam met NGROK te gaan.

Stap 5: Stel eksterne toegang op met Ngrok

Stel eksterne toegang op met Ngrok
Stel eksterne toegang op met Ngrok
Stel eksterne toegang op met Ngrok
Stel eksterne toegang op met Ngrok

Ngrok skep 'n veilige verbinding met u netwerk sonder om u eksterne IP bloot te stel of poortverstuur te mors. Nadat u aangesluit het vir 'n gratis rekening, gee dit u 'n magtigingsteken. Dan kan u dit op u Raspberry Pi aflaai, dit uitpak, u authentic -token koppel en dit dan op poort 5000 laat loop:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [plaas u outyktoken hier]./ngrok http 5000

*** BELANGRIK *** Die gratis weergawe van Ngrok gee u nie 'n statiese adres nie, dus elke keer as u Ngrok herlaai, kry u 'n ander adres. As u 'n statiese adres wil hê sodat u nie u Webhook hoef te redigeer nie, moet u betaal vir 'n opgegradeerde rekening.

'N Gratis alternatief vir Ngrok wat statiese IP's bied, word "Serveo" op www.serveo.net genoem

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

Op die gevolglike skerm gee dit u 'n aanstuuradres (https://random-string.ngrok.io) wat u in ons Webhook-applet kan gebruik. Gaan dus terug na "If This Then That", in die URL -veld, voer u Ngrok -aanstuuradres in en wys dit na die "lys" -bladsy op ons Flask -bediener. Dit moet so iets lyk

random_string.ngrok.io/list

Gaan dan voort en stoor die veranderinge.

Om dit te toets, hou Ngrok aan die gang, maak 'n nuwe terminale oop en voer ons python -script uit. Terwyl albei items hardloop, vra Alexa wat op u inkopielys is. Na 'n minuut of twee moet die resultate gedruk word. As u wil hê dat dit onmiddellik moet druk, gaan dan na u Applet op IFTTT en klik op "Check Now". As alles goed verloop, moet die kwitansie -drukker dit wat op u inkopielys is, afdruk! Ons kan dit maklik doen deur ons Python -script uitvoerbaar te maak:

chmod +x iot_print_server.py

Dan kan ons ons /etc/rc.local lêer wysig sodat dit so lyk:

## Hierdie skrip doen standaard niks. # Druk die IP -adres af _IP = $ (gasheernaam -I) || waar as ["$ _IP"]; druk dan "My IP -adres is %s / n" "$ _IP" fi #autostart ngrok en wys dit na u outitielêer./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #begin die python -script van die printer outomaties sudo python3 /home/pi/iot_receipt_printer.py en verlaat 0

Stap 6: Voeg die Pi by die drukker

Voeg die Pi by die drukker
Voeg die Pi by die drukker
Voeg die Pi by die drukker
Voeg die Pi by die drukker
Voeg die Pi by die drukker
Voeg die Pi by die drukker
Voeg die Pi by die drukker
Voeg die Pi by die drukker

Die kwitansie -drukker wat ek het, het baie leë ruimte in die omhulsel. En omdat die Raspberry Pi Zero so klein was, het ek gedink dit sal gaaf wees om dit net in die kwitansiedrukker te verberg, sodat dit soos een toestel lyk. Die enigste probleem is dat die kwitansie -drukker op 12v werk en die Pi op 5v. As ons dus net een kragkabel wil hê, moet ons die 12V -kragtoevoer na 5V verminder.

Met behulp van 'n 7805 spanningsreguleerder, 'n 1uf -kapasitor en 'n 10uf -kondensator kon ek 'n eenvoudige 5v -reguleerder skep wat ek aan die logika van die kwitansie -drukker gekoppel het. Ek het die "-" draad aan die gemeenskaplike grond gesoldeer, en dan het ek die "+" draad aan die "aan" kant van die aan / uit-skakelaar gesoldeer sodat die Pi aan en af sou draai as die drukker aan en af was. Met 'n multi-meter het ek getoets om te bevestig dat die uitset veilig was vir die Pi. Toe soldeer ek aan 'n mikro-usb-kabel en koppel dit aan die Pi. Nadat u die kabel in die drukker gekoppel het en die skakelaar omgedraai het, het beide die drukker en die Pi aangeskakel!

Uiteindelik het ek 'n gat geboor om die USB -kabel van die Pi aan die drukker te koppel. Ek het 'n plek gekry om die 5v -reguleerder en Pi in die drukkas te sit, en toe sit ek alles weer bymekaar. So nou het die drukker ook sy eie webbediener!

Stap 7: Neem dit verder

Neem dit verder
Neem dit verder

As u na 'If This Then That' kon kyk, het u waarskynlik opgemerk dat dit baie verskillende webdienste het om aan te sluit. As u dus nie 'n Alexa het nie, of nie omgee om dit te gebruik nie, kan u hierdie projek gebruik om van alles te druk, soos Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, ens. U kan my kode vir die druk van tweets op my Github -bladsy vind. Gaan kyk nou wat u kan bedink!

IoT -uitdaging
IoT -uitdaging
IoT -uitdaging
IoT -uitdaging

Eerste prys in die IoT -uitdaging

Aanbeveel: