Innehållsförteckning:

Alexa -skrivare - Uppskriven kvittoskrivare: 7 steg (med bilder)
Alexa -skrivare - Uppskriven kvittoskrivare: 7 steg (med bilder)

Video: Alexa -skrivare - Uppskriven kvittoskrivare: 7 steg (med bilder)

Video: Alexa -skrivare - Uppskriven kvittoskrivare: 7 steg (med bilder)
Video: Hp Deskjet Ink Advantage 6075 Unboxing & Review in tamil | Best Student Printer | Disadvantages | 2024, Juni
Anonim
Image
Image
Alexa -skrivare | Uppskriven kvittoskrivare
Alexa -skrivare | Uppskriven kvittoskrivare

Jag är ett fan av att återvinna gammal teknik och göra den användbar igen. För ett tag sedan hade jag skaffat mig en gammal, billig termisk kvittoskrivare, och jag ville ha ett användbart sätt att göra det på nytt. Under semestern fick jag en Amazon Echo Dot, och en av de funktioner jag använde mest var att lägga till mat till min inköpslista. Så jag tänkte att det skulle vara häftigt att kombinera de två och använda kvittoskrivaren som en IOT -skrivare för Alexa (eller Google Home eller Siri, etc). Låt oss se vad som krävs för att göra denna idé till verklighet.

Tillbehör

Här är de delar jag använder för detta projekt:

  1. Billig generisk termisk kvittoskrivare (behöver stöd för ESC-POS)
  2. Amazon Alexa Device (andra "hemassistent" -enheter fungerar förmodligen också)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v Regulator
  5. 10μf kondensator
  6. 1μf kondensator

Andra saker jag använder för detta projekt är:

  1. If This Then That (IFTTT.com)
  2. Lödutrustning

Steg 1: Konfigurera Raspberry Pi Zero W

Konfigurera Raspberry Pi Zero W
Konfigurera Raspberry Pi Zero W
Konfigurera Raspberry Pi Zero W
Konfigurera Raspberry Pi Zero W
Konfigurera Raspberry Pi Zero W
Konfigurera Raspberry Pi Zero W

Det första steget är att få ut den gamla kvittoskrivaren igen. Jag valde att använda Raspberry Pi Zero W som styrenhet på grund av det billiga priset och den lilla storleken. Det är faktiskt tillräckligt litet för att passa inuti själva kvittoskrivarfodralet, så det finns inga externa anslutningar! Pi Zero W har också inbyggd Wifi så allt är i princip integrerat i den lilla storleken.

För att få igång Pi måste vi ladda ner Raspbian OS och bränna det till ett microSD -kort med ett program som Etcher. Sätt i den i Pi tillsammans med en HDMI -kabel, tangentbord, mus och sedan ström.

När Pi startar upp och du är på skrivbordets gränssnitt kan du ansluta till ditt trådlösa nätverk genom att klicka på ikonen trådlöst uppe till höger och välja namnet på din trådlösa anslutning. Om du sedan högerklickar på samma trådlösa ikon kan du gå till nätverksinställningarna och ställa in en statisk IP -adress så att vi enkelt kan ansluta till den via nätverket. Slutligen vill du klicka på huvudmenyn och välja "Raspbian Configuration Editor" och under fliken "Gränssnitt", se till att SSH är aktiverat. Spara sedan den och starta om din Pi.

Steg 2: Skriva ut från Pi

Utskrift från Pi
Utskrift från Pi
Utskrift från Pi
Utskrift från Pi

När Raspbery Pi har startats om bör den vara ansluten till ditt trådlösa nätverk med en statisk IP och SSH -aktiverad. Så nu borde vi kunna ansluta till den på distans från vilken annan dator som helst. För att göra det behöver du en SSH -klient. För Windows är en bra klient Putty. Du kan ansluta till den med Pi: s statiska IP -adress som vi ställde in tidigare. Sedan kan du logga in med "pi" som användarnamn och "hallon" som lösenord.

Efter en lyckad inloggning borde vi nu vara på Pi: s terminalgränssnitt. Här kan vi skriva in kommandon som kommer att köras på Raspberry Pi. Till exempel, en av de första sakerna vi vill göra är att se till att programvaran på Pi är uppdaterad. Så i terminalen kan vi skriva:

sudo apt-get uppdatering

Detta kommando kommer att uppdatera programvaruförråd på Pi. Därefter kan vi installera ESC-POS skrivarprogramvara och nödvändiga bibliotek.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-uppgradera pip sudo pip3 installera python-escpos

Med det gjort kan vi nu ansluta skrivaren till Pi: s Micro-USB-port (med hjälp av en adapter) och slå på den. Sedan i vår terminal kan vi skapa ett litet python -skript

nano hello_world.py

Och i den kan vi lägga till den här pythonkoden

#!/usr/bin/pythonfrån escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT -skrivare / n") p.close ()

Avsluta den (CTRL-X), spara den (CTRL-Y) och kör den för att testa den

python3 hello_world.py

Steg 3: Ansluta till sakernas internet (del 1)

Ansluta till sakernas internet (del 1)
Ansluta till sakernas internet (del 1)
Ansluta till sakernas internet (del 1)
Ansluta till sakernas internet (del 1)
Ansluta till sakernas internet (del 1)
Ansluta till sakernas internet (del 1)
Ansluta till sakernas internet (del 1)
Ansluta till sakernas internet (del 1)

Vad skulle en skrivare vara bra utan att skriva ut? Jag ville aktivera funktionaliteten för att skriva ut från olika internettjänster, till exempel Alexa. Så hur kan jag åstadkomma det? Ett alternativ är att välja en specifik internettjänst, spåra deras API -dokumentation och skriva ett program baserat på deras API. Men jag väljer att gå den lata vägen …

Det finns en bra webbplats som heter "If This Then That" som utlöser åtgärder för olika internettjänster (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, etc.) baserat på en uppsättning kriterier. Till exempel, "om" jag postar till Facebook (detta), "Då" skicka mig ett e-postmeddelande (det).

Så under den första halvan av detta registrerade jag mig för ett gratis konto, du kan börja skapa en ny "applet" för de olika tjänsterna du vill utlösa. "Den här" delen av min applet kommer att vara Alexa. Det finns många Alexa -triggers att välja mellan, men jag kommer att välja den som säger "Fråga vad som finns på din inköpslista". Och vi vill slutligen att det ska utlösa ett Python -skript på Raspberry Pi, så för "Den" delen av manuset vill vi välja Webhooks.

I alternativet Webhooks kan vi lägga till en URL som pekar på vår Pi, som vi återkommer till senare. Vi kan lämna metodfältet som "Hämta", och för innehållstypen väljer du "Vanlig text". För kroppsfältet, klicka på "Lägg till ingrediens" och välj "Hela listan". Detta skickar hela inköpslistan som en begäran om att få.

Steg 4: Anslutning till sakernas internet (del 2)

Ansluta till sakernas internet (del 2)
Ansluta till sakernas internet (del 2)
Ansluta till sakernas internet (del 2)
Ansluta till sakernas internet (del 2)

Det föregående steget tar hand om "Internet" -delen, så nu kan vi arbeta med "saker" -delen med Raspberry Pi. För att kunna kommunicera med "If This Then That" webhooks -appleten måste vi skapa en webbserver på Raspberry Pi. Det finns många olika sätt att konfigurera en webbserver, men med tanke på att jag slutligen vill köra ett Python -skript bestämde jag mig för att använda Pythons Flask -server.

Pi har alla Flask-bibliotek förinstallerade, så allt vi behöver göra är att börja skriva ett testskript:

nano flask_test.py

Och i det, låt oss lägga till lite kod som serverar en enkel webbsida.

#! kolv/bin/python #IMPORTERA FLASKBibliotek från kolvimportkolv, begär #SKAPA EN FLASKVARIABEL app = Kolv (_ namn_) #SKAPA EN 'INDEX' SIDA @app.route ('/') def index (): return 'Din kolvserver fungerar!' #KÖR PROGRAMMET om _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Nu är det bara att spara programmet och köra det med det här kommandot:

sudo python3 flask_test.py

Du kommer att se med kommandosvaret att standardporten som Flask körs på är port 5000. Så i en webbläsare, om du skriver in din Pi: s IP -adress: 5000, ska du se texten "Din kolvserver fungerar!"

Vi har vår test -Python -kod från tidigare som skrivs ut till vår kvittoskrivare, och vi har vår testkolvserver. Så nästa måste vi kombinera dem och införliva någon kod som hämtar data från vår Webhook -applet. Låt oss skapa en ny Python -fil:

nano iot_print_server.py

Och i den lägger du till följande kod:

#! kolv/behållare/pyton #IMPORTERA FLASK- OCH SKRIVARBiblioteken från kolvimportkolv, begäran från escpos.printer import Usb #TILLVERKNINGSVARIABLER FÖR SKRIVAREN OCH FLASK p = Usb (0x0416, 0x5011) app = Kolv (_ namn_) #SKAPA 'INDEX' PAGE @app.route ('/') def index (): return 'Din kolvserver fungerar!' #SKAPA "PAGE" KALLAD "LIST" FÖR UTSKRIFT AV ALEXA SHOPPING LIST @app.route ('/list') def lista (): #CAPTURE "Hämta" DATA FRÅN IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (content) #DIVIDE DATA INTO SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO A NEW LIST newlist = for word in str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") för s i newlist] #PRINT HEADER #print ("Shopping List / n") p.text ("Shopping List: / n ") #ENUMERERA OCH SKRIV UT VARJE POST I LISTAN r = 1 för x i rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN RESULTAT returnerar 'x' #KÖR PROGRAMMET om _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Du kan köra det för att se om det returnerar några fel, men det fungerar inte med vår webhook ännu, eftersom servern bara körs lokalt. Det finns ingen extern webbadress för webhooken att ansluta till ännu. Vi kan ställa in port forwarding på vår router och bara använda vår externa IP -adress, men det är inte riktigt för säkert. Som ett alternativ bestämmer jag mig för att gå med NGROK.

Steg 5: Konfigurera extern åtkomst med Ngrok

Konfigurera extern åtkomst med Ngrok
Konfigurera extern åtkomst med Ngrok
Konfigurera extern åtkomst med Ngrok
Konfigurera extern åtkomst med Ngrok

Ngrok upprättar en säker anslutning till ditt nätverk utan att behöva avslöja din externa IP eller bråka med portvidarebefordran. Efter att du registrerat dig för ett gratis konto ger det dig en auktoriseringstoken. Sedan kan du ladda ner den på din Raspberry Pi, packa upp den, ansluta din autentoken och sedan köra den på port 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… packa upp ngrok-stable-linux-arm./ngrok authtoken [infoga din autentoken här]./ngrok http 5000

*** VIKTIGT *** Den kostnadsfria versionen av Ngrok ger dig ingen statisk adress, så varje gång du kör Ngrok igen får du en annan adress. Om du vill ha en statisk adress så att du inte behöver fortsätta redigera din Webhook måste du betala för ett uppgraderat konto.

Ett gratis alternativ till Ngrok som erbjuder statiska IP: er kallas "Serveo" på www.serveo.net

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

På den resulterande skärmen ger den dig en vidarebefordringsadress (https://random-string.ngrok.io) som du kan använda i vår Webhook-applet. Så gå tillbaka till "If This Then That", i URL -fältet, ange din Ngrok -vidarebefordringsadress och peka den till "listan" -sidan på vår Flask -server. Det ska se ut ungefär så här

random_string.ngrok.io/list

Fortsätt sedan och spara ändringarna.

För att testa det, håll Ngrok igång, öppna en ny terminal och kör vårt python -skript. Med båda artiklarna igång, fråga Alexa vad som står på din inköpslista. Efter en minut eller två bör det skriva ut resultaten. Om du vill att den ska skriva ut omedelbart går du bara till din Applet på IFTTT och klickar på "Kontrollera nu". Om allt går bra ska kvittoskrivaren skriva ut det som finns på din inköpslista! Den sista koden vi behöver lägga till är ett sätt att autostarta ngrok och vår kolvserver varje gång Pi startar. Vi kan enkelt göra det genom att göra vårt Python -skript körbart:

chmod +x iot_print_server.py

Sedan kan vi redigera vår /etc/rc.local -fil så att den ser ut så här:

## Som standard gör detta skript ingenting. # Skriv ut IP -adressen _IP = $ (värdnamn -I) || sant om ["$ _IP"]; skriv sedan ut "Min IP -adress är %s / n" "$ _IP" fi #autostart ngrok och peka den på din autentfil./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart skrivarens python -skript sudo python3 /home/pi/iot_receipt_printer.py & exit 0

Steg 6: Lägga till Pi till skrivaren

Lägga till Pi till skrivaren
Lägga till Pi till skrivaren
Lägga till Pi till skrivaren
Lägga till Pi till skrivaren
Lägga till Pi till skrivaren
Lägga till Pi till skrivaren
Lägga till Pi till skrivaren
Lägga till Pi till skrivaren

Kvittoskrivaren jag har har mycket tomt utrymme inuti höljet. Och med att Raspberry Pi Zero är så liten som den, tänkte jag att det skulle vara häftigt att bara gömma den i kvittoskrivaren så att den ser ut som en enhet. Det enda problemet är att kvittoskrivaren går på 12v och Pi körs på 5v. Så om vi bara vill ha en strömkabel för att driva dem båda, kommer vi att behöva minska den 12V -strömförsörjningen till 5v.

Med en 7805 spänningsregulator, en 1uf kondensator och en 10uf kondensator kunde jag skapa en enkel 5v regulator som jag kopplade till logikkortet på kvittoskrivaren. Jag lödde "-"-kabeln till den gemensamma marken och sedan lodde jag "+"-kabeln till "på" sidan av strömbrytaren så att Pi skulle slå på och av när skrivaren slogs på och av. Med en multimätare testade jag för att bekräfta att utgången var säker för Pi. Sedan lödde jag på en mikro-usb-kabel och kopplade den till Pi. Efter att du kopplat in kabeln i skrivaren och vridit omkopplaren, startade både skrivaren och Pi!

Slutligen borrade jag ett hål för att ansluta USB -kabeln från Pi till skrivaren. Jag hittade en plats att sätta 5v -regulatorn och Pi inuti skrivarfodralet och sedan satte jag ihop allt igen. Så nu har skrivaren också en egen webbserver!

Steg 7: Ta det vidare

Tar det vidare
Tar det vidare

Om du kunde titta på "If This Then That", har du förmodligen märkt att den har massor av olika webbtjänster att ansluta till. Så om du inte har en Alexa, eller inte bryr dig om att använda en, kan du använda det här projektet för att skriva ut från nästan vad som helst, till exempel Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, etc. Du hittar min kod för att skriva ut tweets på min Github -sida. Gå nu och se vad du kan hitta på!

IoT -utmaning
IoT -utmaning
IoT -utmaning
IoT -utmaning

Första priset i IoT Challenge

Rekommenderad: