Satura rādītājs:

Alexa printeris - Atjaunots kvīšu printeris: 7 soļi (ar attēliem)
Alexa printeris - Atjaunots kvīšu printeris: 7 soļi (ar attēliem)

Video: Alexa printeris - Atjaunots kvīšu printeris: 7 soļi (ar attēliem)

Video: Alexa printeris - Atjaunots kvīšu printeris: 7 soļi (ar attēliem)
Video: HP Tango Printer connected to Amazon Alexa from Best Buy 2024, Jūnijs
Anonim
Image
Image
Alexa printeris | Pārstrādāts kvīšu printeris
Alexa printeris | Pārstrādāts kvīšu printeris

Es esmu veco tehnoloģiju pārstrādes cienītājs un atkal to padarīt noderīgu. Pirms kāda laika es biju iegādājies vecu, lētu termisko kvīšu printeri, un es vēlējos noderīgu veidu, kā to atkārtoti izmantot. Tad brīvdienās man tika uzdāvināts Amazon Echo Dot, un viena no funkcijām, ko izmantoju visvairāk, bija pārtikas preču pievienošana iepirkumu sarakstam. Tāpēc es domāju, ka būtu forši apvienot abus un izmantot kvīšu printeri kā IOT printeri Alexa (vai Google Home, vai Siri utt.). Apskatīsim, kas būs nepieciešams, lai šī ideja kļūtu par realitāti.

Piegādes

Šeit ir daļas, kuras es izmantoju šim projektam:

  1. Lēts vispārējs termisko kvīšu printeris (jāatbalsta ESC-POS)
  2. Amazon Alexa ierīce (iespējams, darbosies arī citas mājas palīga ierīces)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v regulators
  5. 10μf kondensators
  6. 1μf kondensators

Citas lietas, ko izmantoju šim projektam, ir šādas:

  1. Ja tas ir tad (IFTTT.com)
  2. Lodēšanas iekārtas

1. darbība. Raspberry Pi Zero W iestatīšana

Raspberry Pi Zero W iestatīšana
Raspberry Pi Zero W iestatīšana
Raspberry Pi Zero W iestatīšana
Raspberry Pi Zero W iestatīšana
Raspberry Pi Zero W iestatīšana
Raspberry Pi Zero W iestatīšana

Pirmais solis ir atkal izdrukāt veco kvīšu printeri. Es izvēlējos izmantot Raspberry Pi Zero W kā kontrolieri, jo tā ir lēta cena un mazs izmērs. Tas faktiski ir pietiekami mazs, lai ietilptu pašā kvīšu printera korpusā, tāpēc nav ārēju savienojumu! Pi Zero W ir arī iebūvēts Wifi, tāpēc viss būtībā ir integrēts tā mazajā izmērā.

Lai Pi sāktu darboties, mums ir jālejupielādē Raspbian OS un jāsadedzina tā microSD kartē, izmantojot tādu programmu kā Etcher. Ievietojiet to Pi kopā ar HDMI kabeli, tastatūru, peli un pēc tam barojiet.

Kad Pi sāk darboties un atrodaties darbvirsmas saskarnē, varat izveidot savienojumu ar bezvadu tīklu, noklikšķinot uz bezvadu savienojuma ikonas augšējā labajā stūrī un atlasot bezvadu savienojuma nosaukumu. Tad, ar peles labo pogu noklikšķinot uz tās pašas bezvadu ikonas, varat doties uz tīkla iestatījumiem un iestatīt statisku IP adresi, lai mēs varētu viegli izveidot savienojumu ar to tīklā. Visbeidzot, jūs vēlaties noklikšķināt uz galvenās izvēlnes un atlasīt "Raspbian konfigurācijas redaktors" un cilnē "Saskarnes" pārliecinieties, vai SSH ir iespējots. Pēc tam saglabājiet to un pārstartējiet Pi.

2. darbība. Drukāšana no Pi

Drukāšana no Pi
Drukāšana no Pi
Drukāšana no Pi
Drukāšana no Pi

Kad Raspbery Pi ir atsāknēts, tam jābūt savienotam ar bezvadu tīklu ar statisku IP un ar iespējotu SSH. Tāpēc tagad mums vajadzētu būt iespējai izveidot savienojumu ar to attālināti no jebkura cita datora. Lai to izdarītu, jums būs nepieciešams SSH klients. Operētājsistēmai Windows labs klients ir Putty. Jūs varat izveidot savienojumu ar to, izmantojot Pi statisko IP adresi, kuru mēs iestatījām iepriekš. Tad jūs varat pieteikties, izmantojot lietotājvārdu “pi” un paroli “aveņu”.

Pēc veiksmīgas pieteikšanās mums tagad vajadzētu būt Pi termināļa saskarnē. Šeit mēs varam ierakstīt komandas, kas tiks izpildītas Raspberry Pi. Piemēram, viena no pirmajām lietām, ko mēs vēlamies darīt, ir pārliecināties, vai Pi programmatūra ir atjaunināta. Tātad terminālī mēs varam ierakstīt:

sudo apt-get update

Šī komanda atjauninās Pi programmatūras krātuves. Tālāk mēs varam instalēt ESC-POS printera programmatūru un nepieciešamās bibliotēkas.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 instalēt-atjaunināt pip sudo pip3 instalēt python-escpos

Kad tas ir izdarīts, mēs tagad varam savienot printeri ar Pi mikro-USB portu (izmantojot adapteri) un to ieslēgt. Tad mūsu terminālī mēs varam izveidot nelielu python skriptu

nano hello_world.py

Un tajā mēs varam pievienot šo pitona kodu

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

Iziet no tā (CTRL-X), saglabājiet to (CTRL-Y) un palaidiet to, lai to pārbaudītu

python3 hello_world.py

3. darbība. Savienojuma izveide ar lietu internetu (1. daļa)

Savienojuma izveide ar lietu internetu (1. daļa)
Savienojuma izveide ar lietu internetu (1. daļa)
Savienojuma izveide ar lietu internetu (1. daļa)
Savienojuma izveide ar lietu internetu (1. daļa)
Savienojuma izveide ar lietu internetu (1. daļa)
Savienojuma izveide ar lietu internetu (1. daļa)
Savienojuma izveide ar lietu internetu (1. daļa)
Savienojuma izveide ar lietu internetu (1. daļa)

Kāds labums būtu printerim, ja nebūtu ko izdrukāt? Es vēlējos iespējot funkcionalitāti, lai drukātu no dažādiem interneta pakalpojumiem, piemēram, Alexa. Tātad, kā es varu to paveikt? Viena iespēja ir izvēlēties konkrētu interneta pakalpojumu, izsekot viņu API dokumentācijai un uzrakstīt lietojumprogrammu, pamatojoties uz viņu API. Bet es izvēlos iet slinko ceļu …

Ir lieliska vietne ar nosaukumu “If This then That”, kas izraisa darbības dažādiem interneta pakalpojumiem (Alexa, Google sākumlapa, Gmail, Facebook, Instagram, Twitter utt.), Pamatojoties uz kritēriju kopumu. Piemēram, "ja" es ievietoju Facebook (šis), "Tad" nosūtiet man e-pastu (tas).

Tā pirmajā pusgadā es piereģistrējos bezmaksas kontam, jūs varat sākt izveidot jaunu “sīklietotni” dažādiem pakalpojumiem, kurus vēlaties aktivizēt. Manas sīklietotnes "Šī" daļa būs Alexa. Ir daudz Alexa aktivizētāju, no kuriem izvēlēties, bet es izvēlos to, kas saka: “Jautājiet, kas ir jūsu iepirkumu sarakstā”. Un galu galā mēs vēlamies, lai tas Raspberry Pi aktivizētu Python skriptu, tāpēc skripta daļai “That” mēs vēlamies izvēlēties Webhooks.

Opcijā Webhooks mēs varam pievienot URL, kas norāda uz mūsu Pi, pie kura mēs atgriezīsimies vēlāk. Lauku Metode varam atstāt kā “Iegūt” un satura tipam atlasīt “Vienkāršs teksts”. Laukā Pamatteksts noklikšķiniet uz "Pievienot sastāvdaļu" un atlasiet "Viss saraksts". Tas nosūtīs visu iepirkumu sarakstu kā pieprasījumu.

4. darbība. Savienojuma izveide ar lietisko internetu (2. daļa)

Savienojuma izveide ar lietisko internetu (2. daļa)
Savienojuma izveide ar lietisko internetu (2. daļa)
Savienojuma izveide ar lietisko internetu (2. daļa)
Savienojuma izveide ar lietisko internetu (2. daļa)

Iepriekšējais solis rūpējas par "interneta" daļu, tāpēc tagad ļaujiet strādāt pie "lietu" daļas, izmantojot Raspberry Pi. Lai sazinātos ar webhooks sīklietotni "If This Then That", mums ir jāiestata tīmekļa serveris Raspberry Pi. Tīmekļa servera iestatīšanai ir daudz dažādu veidu, taču, ņemot vērā, ka galu galā vēlos palaist Python skriptu, es nolēmu izmantot Python's Flask serveri.

Pi ir iepriekš instalētas visas kolbu bibliotēkas, tāpēc viss, kas mums jādara, ir jāsāk rakstīt testa skripts:

nano flask_test.py

Un tajā pievienosim kādu kodu, kas kalpo vienkāršai tīmekļa lapai.

#! kolba/bin/python #IMPORTĒT KOLBU BIBLIOTĒKAS no kolbas importēšanas Kolbas, pieprasiet #CREATE A FLASK MAINĪGU lietotni = Kolba (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): atgrieziet 'Jūsu kolbas serveris darbojas!' #RUN PROGRAMM, ja _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Tagad vienkārši saglabājiet programmu un palaidiet to, izmantojot šo komandu:

sudo python3 flask_test.py

Pēc komandas atbildes jūs redzēsit, ka noklusējuma ports, kurā darbojas kolba, ir ports 5000. Tātad, ja tīmekļa pārlūkprogrammā ierakstāt sava Pi IP adresi: 5000, jums vajadzētu redzēt tekstu "Jūsu kolbas serveris darbojas!"

Mums ir iepriekšējais testa Python kods, kas tiek izdrukāts uz mūsu kvīšu printeri, un mums ir mūsu pārbaudes kolbas serveris. Tālāk mums tie ir jāapvieno un jāiekļauj kods, kas iegūst datus no mūsu Webhook sīklietotnes. Izveidosim jaunu Python failu:

nano iot_print_server.py

Un tajā pievienojiet šādu kodu:

#! kolba/tvertne/python #IMPORTĒT KOLBU UN PRINTERU BIBLIOTĒKAS no kolbas importēšanas Kolba, pieprasījums no escpos.printer importa USB #PIEVIENOJUMA MAINĪTĀJI PRINTERAM UN KLASTIKAI p = Usb (0x0416, 0x5011) app = Kolba (_ name_) #CREATE "INDEX" PAGE @app.route ('/') def index (): atgrieziet 'Jūsu kolbas serveris darbojas!' #CREATE "PAGE" CALLED "LIST" ALEXA IEPIRKUMU SARAKSTA IESPIEŠANAI @app.route ('/list') def list (): #CAPTURE "IEGŪT" DATUS NO IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (saturs) #SADALĪT DATUS ATKARĪGĀS LĪNIJĀS str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO NEW LIST newlist = vārdam str_split: word = word.split (',') newlist.extend (vārds) #REMVE FORMATTING MARKS rmv_marks = [s.strip ("b '") s jaunajā sarakstā] #PRINT HEADER #print ("Iepirkumu saraksts / n") p.text ("Iepirkumu saraksts: / n ") #APSKAITOT UN IESPIEDZIET KATRU PUNKTU SARAKSTĀ r = 1 x x rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #ATGRIEŠANAS REZULTĀTI atgriež 'x' #RUN PROGRAMMU, ja _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Varat to palaist, lai redzētu, vai tas neatgriež kļūdas, taču tas vēl nedarbosies ar mūsu tīmekļa aizķeri, jo pašlaik serveris darbojas tikai lokāli. Tīmekļa āķim, ar kuru izveidot savienojumu, vēl nav ārēja URL. Mēs varētu iestatīt portu pāradresāciju mūsu maršrutētājā un vienkārši izmantot mūsu ārējo IP adresi, taču tā nav pārāk droša. Kā alternatīvu es nolemju doties kopā ar NGROK.

5. darbība: ārējās piekļuves iestatīšana, izmantojot Ngrok

Ārējās piekļuves iestatīšana, izmantojot Ngrok
Ārējās piekļuves iestatīšana, izmantojot Ngrok
Ārējās piekļuves iestatīšana, izmantojot Ngrok
Ārējās piekļuves iestatīšana, izmantojot Ngrok

Ngrok izveido drošu savienojumu ar jūsu tīklu, neizpaužot ārējo IP vai nejaucot portu pāradresāciju. Pēc reģistrēšanās bezmaksas kontam tas dod jums autorizācijas marķieri. Pēc tam savā Raspberry Pi varat to lejupielādēt, izpakot, savienot autentifikācijas marķieri un pēc tam palaist to ostā 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok -table-linux-arm./ngrok authtoken [ievietojiet savu autentifikācijas marķieri šeit]./ngrok http 5000

*** SVARĪGI *** Ngrok bezmaksas versija nedod jums statisku adresi, tāpēc katru reizi, kad atkārtoti palaižat Ngrok, tā jums piešķirs citu adresi. Ja vēlaties statisku adresi, lai jums nebūtu jāturpina rediģēt Webhook, jums būs jāmaksā par jaunināto kontu.

Bezmaksas alternatīva Ngrok, kas piedāvā statiskus IP, tiek saukta par "Serveo" vietnē www.serveo.net

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

Ekrānā tiek parādīta pāradresācijas adrese (https://random-string.ngrok.io), kuru varat izmantot mūsu Webhook sīklietotnē. Tātad, atgriežoties pie "Ja šis tad tas", URL laukā ievadiet savu Ngrok pāradresācijas adresi un norādiet to uz mūsu kolbas servera lapu "saraksts". Tam vajadzētu izskatīties apmēram šādi

random_string.ngrok.io/list

Pēc tam turpiniet un saglabājiet izmaiņas.

Lai to pārbaudītu, turpiniet Ngrok darbību, atveriet jaunu termināli un palaidiet mūsu python skriptu. Kad abi vienumi darbojas, jautājiet Alexa, kas ir jūsu iepirkumu sarakstā. Pēc minūtes vai divām tai vajadzētu izdrukāt rezultātus. Ja vēlaties, lai tas tiktu drukāts nekavējoties, vienkārši dodieties uz savu sīklietotni IFTTT un noklikšķiniet uz "Pārbaudīt tūlīt". Ja viss notiek labi, kvīšu printerim vajadzētu izdrukāt to, kas ir jūsu iepirkumu sarakstā! Pēdējais koda bits, kas mums jāpievieno, ir veids, kā automātiski ieslēgt ngrok un mūsu kolbas serveri katru reizi, kad sākas Pi. Mēs to varam viegli izdarīt, padarot mūsu Python skriptu izpildāmu:

chmod +x iot_print_server.py

Tad mēs varam rediģēt mūsu /etc/rc.local failu tā, lai tas izskatās šādi:

## Pēc noklusējuma šis skripts neko nedara. # Izdrukājiet IP adresi _IP = $ (resursdatora nosaukums -I) || taisnība, ja ["$ _IP"]; tad printf "Mana IP adrese ir %s / n" "$ _IP" fi #autostart ngrok un norādiet to uz savu autentifikācijas failu./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart printera python skriptu sudo python3 /home/pi/iot_receipt_printer.py & exit 0

6. darbība. Pi pievienošana printerim

Pi pievienošana printerim
Pi pievienošana printerim
Pi pievienošana printerim
Pi pievienošana printerim
Pi pievienošana printerim
Pi pievienošana printerim
Pi pievienošana printerim
Pi pievienošana printerim

Manā kvīšu printerī korpusa iekšpusē ir daudz tukšas vietas. Un tā kā Raspberry Pi Zero ir tik mazs, cik tas ir, es domāju, ka būtu forši to vienkārši paslēpt kvīšu printerī, lai tas izskatās kā viena ierīce. Vienīgā problēma ir tā, ka kvīts printeris darbojas ar 12 V, un Pi darbojas ar 5 V. Tātad, ja mēs vēlamies, lai abiem darbotos tikai viens strāvas kabelis, mums būs jāatkāpjas no 12 voltu barošanas avota līdz 5 voltiem.

Izmantojot 7805 sprieguma regulatoru, 1uf kondensatoru un 10uf kondensatoru, es varēju izveidot vienkāršu 5v regulatoru, ko savienoju ar kvīts printera loģisko plāksni. Es pielodēju vadu "-" uz kopējo zemi, un tad es pielodēju "+" vadu pie barošanas slēdža "uz" pusi, lai Pi ieslēgtos un izslēgtos, kad printeris tika ieslēgts un izslēgts. Izmantojot daudzmetru, es pārbaudīju, lai apstiprinātu, ka izvade ir droša Pi. Tad es lodēju uz mikro-usb kabeļa un pievienoju to Pi. Pēc kabeļa pievienošanas printerim un slēdža pagriešanas ieslēdzās gan printeris, gan Pi!

Visbeidzot, es izurbju caurumu, lai savienotu USB kabeli no Pi ar printeri. Es atradu vietu, kur ievietot 5v regulatoru un Pi printera korpusā, un pēc tam visu saliku kopā. Tagad printerim ir arī savs tīmekļa serveris!

7. solis: turpiniet

Ņemot to tālāk
Ņemot to tālāk

Ja jums izdevās apskatīt sadaļu “Ja šis tad tas”, jūs droši vien pamanījāt, ka tai ir daudz dažādu tīmekļa pakalpojumu, ar kuriem izveidot savienojumu. Tātad, ja jums nav Alexa vai nevēlaties to izmantot, varat izmantot šo projektu, lai drukātu no gandrīz jebkura materiāla, piemēram, Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, utt. Jūs varat atrast manu kodu tvītu drukāšanai manā Github lapā. Tagad ej un paskaties, ko vari izdomāt!

IoT izaicinājums
IoT izaicinājums
IoT izaicinājums
IoT izaicinājums

Pirmā balva IoT izaicinājumā

Ieteicams: