Indholdsfortegnelse:

Alexa printer - Upcycled kvitteringsprinter: 7 trin (med billeder)
Alexa printer - Upcycled kvitteringsprinter: 7 trin (med billeder)

Video: Alexa printer - Upcycled kvitteringsprinter: 7 trin (med billeder)

Video: Alexa printer - Upcycled kvitteringsprinter: 7 trin (med billeder)
Video: This IKEA hack is insane 🤯 #shorts #furniture #ikeahack #ikea 2024, Juni
Anonim
Image
Image
Alexa printer | Upcycled kvitteringsprinter
Alexa printer | Upcycled kvitteringsprinter

Jeg er fan af at genbruge gammel teknologi og gøre den nyttig igen. For et stykke tid siden havde jeg anskaffet mig en gammel, billig termisk kvitteringsprinter, og jeg ville have en nyttig måde at genbruge den på. I løbet af ferien fik jeg en Amazon Echo Dot, og en af de funktioner, jeg brugte mest, var at tilføje dagligvarer til min indkøbsliste. Så jeg tænkte, at det ville være fedt at kombinere de to og bruge kvitteringsprinteren som en IOT -printer til Alexa (eller Google Home eller Siri osv.). Lad os se, hvad der skal til for at gøre denne idé til virkelighed.

Forbrugsvarer

Her er de dele, jeg bruger til dette projekt:

  1. Billig generisk termisk kvitteringsprinter (skal understøtte ESC-POS)
  2. Amazon Alexa -enhed (andre "hjemmeassistent" -enheder fungerer sandsynligvis også)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v regulator
  5. 10μf kondensator
  6. 1μf kondensator

Andre ting jeg bruger til dette projekt er:

  1. If This Then That (IFTTT.com)
  2. Loddeudstyr

Trin 1: Opsætning af Raspberry Pi Zero W

Opsætning af Raspberry Pi Zero W
Opsætning af Raspberry Pi Zero W
Opsætning af Raspberry Pi Zero W
Opsætning af Raspberry Pi Zero W
Opsætning af Raspberry Pi Zero W
Opsætning af Raspberry Pi Zero W

Det første trin er at få den gamle kvitteringsprinter udskrevet igen. Jeg valgte at bruge Raspberry Pi Zero W som controller på grund af den billige pris og lille størrelse. Den er faktisk lille nok til at passe ind i selve kvitteringsprinterkassen, så der er ingen eksterne forbindelser! Pi Zero W har også indbygget Wifi, så alt er dybest set integreret i den lille størrelse.

For at få Pi'en i gang, skal vi downloade Raspbian OS og brænde den til et microSD -kort ved hjælp af et program som Etcher. Indsæt den i Pi sammen med et HDMI -kabel, tastatur, mus og derefter strøm.

Når Pi starter op, og du er på skrivebordets grænseflade, kan du oprette forbindelse til dit trådløse netværk ved at klikke på ikonet for trådløs i øverste højre hjørne og vælge navnet på din trådløse forbindelse. Hvis du derefter højreklikker på det samme trådløse ikon, kan du gå til netværksindstillingerne og angive en statisk IP -adresse, så vi let kan oprette forbindelse til det via netværket. Endelig vil du klikke på hovedmenuen og vælge "Raspbian Configuration Editor" og under fanen "Interfaces" skal du sørge for, at SSH er aktiveret. Gem det derefter, og genstart din Pi.

Trin 2: Udskrivning fra Pi

Udskrivning fra Pi
Udskrivning fra Pi
Udskrivning fra Pi
Udskrivning fra Pi

Når Raspbery Pi er blevet genstartet, skal den være forbundet til dit trådløse netværk med en statisk IP og med SSH aktiveret. Så nu burde vi kunne oprette forbindelse til det eksternt fra enhver anden computer. For at gøre det skal du bruge en SSH -klient. For Windows er en god klient Putty. Du kan oprette forbindelse til den ved hjælp af Pi's statiske IP -adresse, som vi har angivet tidligere. Derefter kan du logge ind med "pi" som brugernavn og "hindbær" som adgangskode.

Efter et vellykket login skulle vi nu være på Pi's terminalgrænseflade. Her kan vi indtaste kommandoer, der vil blive udført på Raspberry Pi. For eksempel er en af de første ting, vi vil gøre, at softwaren på Pi er opdateret. Så i terminalen kan vi skrive:

sudo apt-get opdatering

Denne kommando opdaterer softwarelagrene på Pi. Dernæst kan vi installere ESC-POS-printersoftwaren og nødvendige biblioteker.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-opgrader pip sudo pip3 installer python-escpos

Når det er gjort, kan vi nu slutte printeren til Pi's Micro-USB-port (ved hjælp af en adapter) og tænde den. Så i vores terminal kan vi oprette et lille python -script

nano hello_world.py

Og i det kan vi tilføje denne python -kode

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

Afslut den (CTRL-X), gem den (CTRL-Y), og kør den for at teste den

python3 hej_verden.py

Trin 3: Oprettelse af forbindelse til tingenes internet (del 1)

Oprettelse af forbindelse til tingenes internet (del 1)
Oprettelse af forbindelse til tingenes internet (del 1)
Oprettelse af forbindelse til tingenes internet (del 1)
Oprettelse af forbindelse til tingenes internet (del 1)
Oprettelse af forbindelse til tingenes internet (del 1)
Oprettelse af forbindelse til tingenes internet (del 1)
Oprettelse af forbindelse til tingenes internet (del 1)
Oprettelse af forbindelse til tingenes internet (del 1)

Hvad nytter en printer uden noget at udskrive? Jeg ville aktivere funktionalitet til at udskrive fra forskellige internettjenester, f.eks. Alexa. Så hvordan kan jeg opnå det? En mulighed er at vælge en bestemt internettjeneste, spore deres API -dokumentation og skrive en applikation baseret på deres API. Men jeg vælger at gå den dovne vej …

Der er et fantastisk websted kaldet "If This Then That", der udløser handlinger for forskellige internettjenester (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter osv.) Baseret på et sæt kriterier. For eksempel "hvis" jeg sender til Facebook (dette), "Så" send mig en e-mail (det).

Så i første halvdel af dette tilmeldte jeg mig en gratis konto, du kan begynde at oprette en ny "applet" til de forskellige tjenester, du vil udløse. "Denne" del af min applet vil være Alexa. Der er mange Alexa -triggere at vælge imellem, men jeg vil vælge den, der siger "Spørg, hvad der er på din indkøbsliste". Og vi vil i sidste ende have det til at udløse et Python -script på Raspberry Pi, så for "Den" del af scriptet vil vi vælge Webhooks.

I indstillingen Webhooks kan vi tilføje en URL, der peger på vores Pi, som vi vender tilbage til senere. Vi kan forlade feltet Metode som "Hent", og vælg "Almindelig tekst" for indholdstypen. I feltet Brødtekst skal du klikke på "Tilføj ingrediens" og vælge "Hele listen". Dette sender hele indkøbslisten som en Get -forespørgsel.

Trin 4: Oprettelse af forbindelse til tingenes internet (del 2)

Oprettelse af forbindelse til tingenes internet (del 2)
Oprettelse af forbindelse til tingenes internet (del 2)
Oprettelse af forbindelse til tingenes internet (del 2)
Oprettelse af forbindelse til tingenes internet (del 2)

Det foregående trin tager sig af "Internettet" -delen, så nu kan vi arbejde på "ting" -delen ved hjælp af Raspberry Pi. For at kommunikere med "If This Then That" webhooks -appletten skal vi oprette en webserver på Raspberry Pi. Der er mange forskellige måder at oprette en webserver på, men da jeg i sidste ende ønsker at køre et Python -script, besluttede jeg mig for at bruge Pythons Flask -server.

Pi har alle Flask-bibliotekerne forudinstalleret, så alt hvad vi skal gøre er at begynde at skrive et test script:

nano flask_test.py

Og i det, lad os tilføje nogle kode, der tjener en simpel webside.

#! kolbe/bin/python #IMPORT FLASK -BIBLIOTEKERNE fra kolbeimportkolbe, anmod # #Opret en FLASKVARIABEL app = Kolbe (_ navn_) #Opret en 'INDEX' SIDE @app.route ('/') def index (): return 'Din kolbe server fungerer!' #KØR PROGRAMMET, hvis _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Gem nu bare programmet og kør det ved hjælp af denne kommando:

sudo python3 flask_test.py

Du vil se ved kommandosvaret, at standardporten, som Flask kører på, er port 5000. Så i en webbrowser, hvis du indtaster din Pi's IP -adresse: 5000, skal du se teksten "Din kolbe -server virker!"

Vi har vores test Python -kode fra tidligere, der udskrives til vores kvitteringsprinter, og vi har vores testflaskeserver. Så næste skal vi kombinere dem og indarbejde en kode, der trækker dataene fra vores Webhook -applet. Lad os oprette en ny Python -fil:

nano iot_print_server.py

Og inden for den skal du tilføje følgende kode:

#! kolbe/bin/python #IMPORT FLASK- OG PRINTERBibliotekerne fra kolbeimportkolbe, anmodning fra escpos.printerimport Usb #ASSIGNVARIABLES TIL PRINTEREN OG FLASK p = Usb (0x0416, 0x5011) app = Kolbe (_ navn_) #OPRET 'INDEX' PAGE @app.route ('/') def index (): return 'Din kolbe server fungerer!' #OPRET "SIDE" OPKALDT "LISTE" TIL UDSKRIVNING AF ALEXA SHOPPING LIST @app.route ('/list') def liste (): #CAPTURE "HENT" DATA FRA IFTTT WEBOOKS indhold = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (indhold) #DIVIDE DATA I SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND FØJ TIL EN NY LISTE ny liste = for ord i str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Shopping List / n") p.text ("Shopping List: / n ") #ENUMERER OG UDSKRIV HVER ELEMENT I LISTEN r = 1 for x i rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN RESULTATER returnerer 'x' #KØR PROGRAMMET, hvis _navn_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Du kan køre det for at se, om det returnerer nogen fejl, men det fungerer ikke med vores webhook endnu, for lige nu kører serveren kun lokalt. Der er ingen ekstern URL til webhook at oprette forbindelse til endnu. Vi kunne konfigurere port forwarding på vores router og bare bruge vores eksterne IP -adresse, men det er egentlig ikke for sikkert. Som et alternativ beslutter jeg mig for at gå med NGROK.

Trin 5: Opsætning af ekstern adgang med Ngrok

Opsætning af ekstern adgang med Ngrok
Opsætning af ekstern adgang med Ngrok
Opsætning af ekstern adgang med Ngrok
Opsætning af ekstern adgang med Ngrok

Ngrok opretter en sikker forbindelse til dit netværk uden at skulle udsætte din eksterne IP eller rode med portvideresendelse. Efter tilmelding til en gratis konto giver det dig et autorisationstoken. Derefter på din Raspberry Pi kan du downloade den, pakke den ud, tilslutte dit godkendelsestoken og derefter køre den på port 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [indsæt dit autorisationstoken her]./ngrok http 5000

*** VIGTIGT *** Den gratis version af Ngrok giver dig ikke en statisk adresse, så hver gang du kører Ngrok igen, får du en anden adresse. Hvis du vil have en statisk adresse, så du ikke behøver at blive ved med at redigere din Webhook igen, skal du betale for en opgraderet konto.

Et gratis alternativ til Ngrok, der tilbyder statiske IP'er, kaldes "Serveo" på www.serveo.net

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

På den resulterende skærm giver det dig en videresendelsesadresse (https://random-string.ngrok.io), som du kan bruge i vores Webhook-applet. Så gå tilbage til "If This Then That", i URL -feltet, indtast din Ngrok -videresendelsesadresse og peg den på "list" -siden på vores Flask -server. Det skal se sådan ud

random_string.ngrok.io/list

Fortsæt derefter og gem ændringerne.

For at teste det, skal du holde Ngrok kørende, åbne en ny terminal og køre vores python -script. Mens begge varer kører, skal du spørge Alexa, hvad der er på din indkøbsliste. Efter et minut eller to skal det udskrive resultaterne. Hvis du vil have den til at udskrive med det samme, skal du bare gå til din Applet på IFTTT og klikke på "Check Now". Hvis alt går godt, skal kvitteringsprinteren udskrive, hvad der er på din indkøbsliste! Den sidste bit kode, vi skal tilføje, er en måde at autostarte ngrok og vores kolbe -server, hver gang Pi starter. Vi kan let gøre det ved at gøre vores Python -script eksekverbart:

chmod +x iot_print_server.py

Derefter kan vi redigere vores /etc/rc.local -fil, så den ser sådan ud:

## Som standard gør dette script ingenting. # Udskriv IP -adressen _IP = $ (værtsnavn -I) || true if ["$ _IP"]; derefter printf "Min IP -adresse er %s / n" "$ _IP" fi #autostart ngrok og peg den på din auth -fil./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart printerens python -script sudo python3 /home/pi/iot_receipt_printer.py og afslut 0

Trin 6: Tilføjelse af Pi til printeren

Tilføjelse af Pi til printeren
Tilføjelse af Pi til printeren
Tilføjelse af Pi til printeren
Tilføjelse af Pi til printeren
Tilføjelse af Pi til printeren
Tilføjelse af Pi til printeren
Tilføjelse af Pi til printeren
Tilføjelse af Pi til printeren

Den kvitteringsprinter, jeg har, har meget tom plads inde i kabinettet. Og da Raspberry Pi Zero var så lille som den er, tænkte jeg, at det ville være fedt bare at skjule den i kvitteringsprinteren, så den ligner en enhed. Det eneste problem er, at kvitteringsprinteren kører på 12v, og Pi kører på 5v. Så hvis vi kun vil have et strømkabel til at forsyne dem begge, bliver vi nødt til at trække den 12v strømforsyning ned til 5v.

Ved hjælp af en 7805 spændingsregulator, en 1uf kondensator og en 10uf kondensator kunne jeg oprette en enkel 5v regulator, som jeg tilsluttede logikkortet på kvitteringsprinteren. Jeg lodde "-"-ledningen til den fælles jord, og derefter lodde jeg "+"-ledningen til "on"-siden af afbryderen, så Pi'en ville tænde og slukke, når printeren blev tændt og slukket. Ved hjælp af en multi-meter testede jeg for at bekræfte, at output var sikkert for Pi. Derefter lodde jeg på et mikro-usb-kabel og sluttede det til Pi. Efter at have tilsluttet kablet til printeren og vendt kontakten, tændte både printeren og Pi!

Endelig borede jeg et hul for at tilslutte USB -kablet fra Pi til printeren. Jeg fandt et sted at sætte 5v -regulatoren og Pi inde i printerkassen, og så satte jeg alt sammen igen. Så nu har printeren også sin egen, selvstændige webserver!

Trin 7: Tag det videre

Tager det videre
Tager det videre

Hvis du var i stand til at se på "If This Then That", har du sikkert bemærket, at den har masser af forskellige webtjenester at oprette forbindelse til. Så hvis du ikke har en Alexa eller ikke er interesseret i at bruge en, kan du bruge dette projekt til at udskrive fra næsten alt, f.eks. Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, osv. Du kan finde min kode til udskrivning af tweets på min Github -side. Gå nu og se, hvad du kan finde på!

IoT -udfordring
IoT -udfordring
IoT -udfordring
IoT -udfordring

Første præmie i IoT Challenge

Anbefalede: