Turinys:

„Alexa“spausdintuvas - Atnaujintas kvito spausdintuvas: 7 žingsniai (su paveikslėliais)
„Alexa“spausdintuvas - Atnaujintas kvito spausdintuvas: 7 žingsniai (su paveikslėliais)

Video: „Alexa“spausdintuvas - Atnaujintas kvito spausdintuvas: 7 žingsniai (su paveikslėliais)

Video: „Alexa“spausdintuvas - Atnaujintas kvito spausdintuvas: 7 žingsniai (su paveikslėliais)
Video: Tie-Fighter Alexa Time-lapse 2024, Birželis
Anonim
Image
Image
„Alexa“spausdintuvas | Atnaujintas kvito spausdintuvas
„Alexa“spausdintuvas | Atnaujintas kvito spausdintuvas

Aš gerbiu senų technologijų perdirbimą ir vėl naudą. Prieš kurį laiką įsigijau seną, pigų šiluminių kvitų spausdintuvą ir norėjau naudingo būdo jį pakeisti. Tada per šventes man buvo padovanotas „Amazon Echo Dot“, o viena iš funkcijų, kurią dažniausiai naudojau, buvo maisto produktų įtraukimas į pirkinių sąrašą. Taigi aš maniau, kad būtų šaunu sujungti abu ir naudoti kvitų spausdintuvą kaip „Alexa“(arba „Google Home“, „Siri“ir tt) IOT spausdintuvą. Pažiūrėkime, ko reikės, kad ši idėja taptų realybe.

Prekės

Štai dalys, kurias naudoju šiam projektui:

  1. Pigus bendras šiluminių kvitų spausdintuvas (reikia palaikyti ESC-POS)
  2. „Amazon Alexa Device“(tikriausiai veiks ir kiti „namų asistento“įrenginiai)
  3. „Raspberry Pi Zero Wireless“
  4. 7805 5v reguliatorius
  5. 10μf kondensatorius
  6. 1μf kondensatorius

Kiti dalykai, kuriuos naudoju šiam projektui:

  1. Jei tai tada tai (IFTTT.com)
  2. Litavimo įranga

1 veiksmas: nustatykite „Raspberry Pi Zero W“

„Raspberry Pi Zero W“nustatymas
„Raspberry Pi Zero W“nustatymas
„Raspberry Pi Zero W“nustatymas
„Raspberry Pi Zero W“nustatymas
„Raspberry Pi Zero W“nustatymas
„Raspberry Pi Zero W“nustatymas

Pirmasis žingsnis yra vėl spausdinti seną kvitų spausdintuvą. Aš pasirinkau naudoti „Raspberry Pi Zero W“kaip valdiklį dėl pigios kainos ir mažo dydžio. Jis iš tikrųjų yra pakankamai mažas, kad tilptų į kvitų spausdintuvo dėklą, todėl nėra jokių išorinių jungčių! „Pi Zero W“taip pat turi įmontuotą „Wifi“, todėl viskas iš esmės yra integruota į mažą dydį.

Norėdami pradėti „Pi“paleisti, turime atsisiųsti „Raspbian“OS ir įrašyti ją į „microSD“kortelę naudodami tokią programą kaip „Etcher“. Įdėkite jį į „Pi“kartu su HDMI kabeliu, klaviatūra, pele ir tada įjunkite maitinimą.

Kai „Pi“įsijungia ir esate prie darbalaukio sąsajos, galite prisijungti prie belaidžio ryšio spustelėję belaidžio ryšio piktogramą viršutiniame dešiniajame kampe ir pasirinkę belaidžio ryšio pavadinimą. Tada, jei dešiniuoju pelės mygtuku spustelėkite tą pačią belaidžio ryšio piktogramą, galite pereiti prie tinklo nustatymų ir nustatyti statinį IP adresą, kad galėtume lengvai prisijungti prie tinklo. Galiausiai norite spustelėti pagrindinį meniu ir pasirinkti „Raspbian Configuration Editor“, o skirtuke „Sąsajos“įsitikinkite, kad SSH įjungtas. Tada išsaugokite jį ir iš naujo paleiskite „Pi“.

2 žingsnis: Spausdinimas iš „Pi“

Spausdinimas iš „Pi“
Spausdinimas iš „Pi“
Spausdinimas iš „Pi“
Spausdinimas iš „Pi“

Kai „Raspbery Pi“bus paleistas iš naujo, jis turėtų būti prijungtas prie belaidžio tinklo naudojant statinį IP ir įjungus SSH. Taigi dabar turėtume turėti galimybę prie jo prisijungti nuotoliniu būdu iš bet kurio kito kompiuterio. Norėdami tai padaryti, jums reikia SSH kliento. „Windows“geras klientas yra „Putty“. Galite prisijungti prie jo naudodami Pi statinį IP adresą, kurį nustatėme anksčiau. Tada galite prisijungti naudodami „pi“kaip vartotojo vardą ir „aviečių“kaip slaptažodį.

Po sėkmingo prisijungimo dabar turėtume būti „Pi“terminalo sąsajoje. Čia galime įvesti komandas, kurios bus vykdomos „Raspberry Pi“. Pavyzdžiui, vienas iš pirmųjų dalykų, kuriuos norime padaryti, yra įsitikinti, kad „Pi“programinė įranga yra atnaujinta. Taigi, terminale galime įvesti:

sudo apt-get atnaujinimas

Ši komanda atnaujins „Pi“programinės įrangos saugyklas. Tada galime įdiegti ESC-POS spausdintuvo programinę įrangą ir reikalingas bibliotekas.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-atnaujinti pip sudo pip3 įdiegti python-escpos

Tai padarę, dabar galime prijungti spausdintuvą prie „Pi“„Micro-USB“prievado (naudodami adapterį) ir jį įjungti. Tada mūsų terminale galime sukurti nedidelį python scenarijų

nano hello_world.py

Ir jame galime pridėti šį python kodą

#!/usr/bin/pythonfrom escpos.printer importuoti Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT spausdintuvas / n") p.close ()

Išeikite iš jo (CTRL-X), išsaugokite (CTRL-Y) ir paleiskite, kad išbandytumėte

python3 hello_world.py

3 žingsnis: Prisijunkite prie daiktų interneto (1 dalis)

Prisijungimas prie daiktų interneto (1 dalis)
Prisijungimas prie daiktų interneto (1 dalis)
Prisijungimas prie daiktų interneto (1 dalis)
Prisijungimas prie daiktų interneto (1 dalis)
Prisijungimas prie daiktų interneto (1 dalis)
Prisijungimas prie daiktų interneto (1 dalis)
Prisijungimas prie daiktų interneto (1 dalis)
Prisijungimas prie daiktų interneto (1 dalis)

Kuo naudingas būtų spausdintuvas, jei nebūtų ką spausdinti? Norėjau įgalinti funkcionalumą spausdinti iš įvairių interneto paslaugų, tokių kaip „Alexa“. Taigi kaip aš galiu tai pasiekti? Viena iš galimybių yra pasirinkti konkrečią interneto paslaugą, susekti jų API dokumentus ir parašyti programą pagal jų API. Bet aš pasirenku eiti tingiu keliu …

Yra puiki svetainė, pavadinta „Jei tai tada“, kuri suaktyvina veiksmus įvairioms interneto paslaugoms („Alexa“, „Google Home“, „Gmail“, „Facebook“, „Instagram“, „Twitter“ir kt.), Remiantis kriterijais. Pavyzdžiui, „jei“aš skelbiu „Facebook“(tai), „Tada“atsiųskite man el. Laišką (tą).

Taigi pirmą šios pusės pusę užsiregistravau nemokamai paskyrai, galite pradėti kurti naują „programėlę“įvairioms paslaugoms, kurias norite suaktyvinti. Mano programėlės „Ši“dalis bus „Alexa“. Yra daug „Alexa“aktyviklių, iš kurių galima rinktis, tačiau aš pasirinksiu tą, kuriame sakoma „Paklauskite, kas yra jūsų pirkinių sąraše“. Ir mes galiausiai norime, kad jis suaktyvintų „Python“scenarijų „Raspberry Pi“, todėl scenarijaus „Tai“daliai norime pasirinkti „Webhooks“.

Parinktyje „Webhooks“galime pridėti URL, nurodantį mūsų „Pi“, prie kurio grįšime vėliau. Metodo lauką galime palikti kaip „Gauti“, o turinio tipui pasirinkite „Paprastas tekstas“. Lauke „Kūnas“spustelėkite „Pridėti ingredientą“ir pasirinkite „Visas sąrašas“. Visas pirkinių sąrašas bus išsiųstas kaip gavimo užklausa.

4 žingsnis: Prisijunkite prie daiktų interneto (2 dalis)

Prisijungimas prie daiktų interneto (2 dalis)
Prisijungimas prie daiktų interneto (2 dalis)
Prisijungimas prie daiktų interneto (2 dalis)
Prisijungimas prie daiktų interneto (2 dalis)

Ankstesnis žingsnis rūpinasi „interneto“dalimi, todėl dabar leiskite dirbti su „daiktų“dalimi naudodami „Raspberry Pi“. Kad galėtume bendrauti su „Webhooks“programėle „If This Then That“, turime nustatyti „Raspberry Pi“žiniatinklio serverį. Yra daug skirtingų būdų, kaip nustatyti žiniatinklio serverį, tačiau, kadangi galiausiai noriu paleisti „Python“scenarijų, nusprendžiau naudoti „Python“kolbos serverį.

„Pi“yra iš anksto įdiegtos visos „Flask“bibliotekos, todėl viskas, ką mums reikia padaryti, yra pradėti rašyti bandomąjį scenarijų:

nano flask_test.py

Jame pridėkime kodą, kuris tarnauja paprastam tinklalapiui.

#! kolba/šiukšliadėžė/python #IMPORTUOTI KOLBŲ BIBLIOTEKAS iš kolbos importo kolbos, prašyti #CREATE A FLASK FARIABLE app = Kolba (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): grįžti 'Jūsų kolbos serveris veikia!' #VYKDYTI PROGRAMĄ, jei _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Dabar tiesiog išsaugokite programą ir paleiskite ją naudodami šią komandą:

sudo python3 flask_test.py

Pagal komandinį atsakymą pamatysite, kad numatytasis prievadas, kuriame veikia „Flask“, yra 5000 prievadas. Taigi žiniatinklio naršyklėje, jei įvedate savo „Pi“IP adresą: 5000, turėtumėte pamatyti tekstą „Jūsų kolbos serveris veikia!“.

Turime ankstesnį bandomąjį „Python“kodą, kuris išspausdinamas į kvitų spausdintuvą, ir turime bandomąjį kolbos serverį. Taigi toliau turime juos sujungti ir įtraukti tam tikrą kodą, kuris ištraukia duomenis iš mūsų „Webhook“programėlės. Sukurkime naują „Python“failą:

nano iot_print_server.py

Ir jo viduje pridėkite šį kodą:

#! kolba/šiukšliadėžė/python #IMPORTUOKITE KOLBIŲ IR Spausdintuvų BIBLIOTEKAS iš kolbos importo Kolba, prašymas iš escpos.printer import Usb #PASKIRTI KINTUVUS Spausdintuvui ir kolbai p = Usb (0x0416, 0x5011) app = Kolba (_ pavadinimas_) #CREATE „INDEX“PAGE @app.route ('/') def index (): grąžinkite „Jūsų kolbos serveris veikia!“#CREATE "PAGE" CALLED "SISTEMA" ALEXA PIRKIMŲ SĄRAŠAS Spausdinti @app.route ('/list') def list (): #CAPTURE "GET" DATA I IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (content) #DIVIDE DATA IN SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA IR PRIDĖTI Į NAUJĄ SĄRAŠĄ newlist = žodžiui str_split: word = word.split (',') newlist.extend (žodis) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Pirkinių sąrašas / n") p.text ("Pirkinių sąrašas: / n ") #SKAIČIUOTI IR Spausdinti kiekvieną elementą sąraše r = 1 x x rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #GRETURN REZULTATAI grąžina 'x' #VYKDYTI PROGRAMĄ, jei _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Galite paleisti, kad pamatytumėte, ar nepateikia jokių klaidų, tačiau jis dar neveiks su mūsų „webhook“, nes šiuo metu serveris veikia tik vietoje. Kol kas nėra išorinio URL, prie kurio būtų galima prisijungti. Galėtume nustatyti maršrutizatoriaus prievadų persiuntimą ir tiesiog naudoti išorinį IP adresą, tačiau tai tikrai nėra per daug saugu. Kaip alternatyvą nusprendžiu eiti su NGROK.

5 veiksmas: išorinės prieigos nustatymas naudojant „Ngrok“

Išorinės prieigos nustatymas naudojant „Ngrok“
Išorinės prieigos nustatymas naudojant „Ngrok“
Išorinės prieigos nustatymas naudojant „Ngrok“
Išorinės prieigos nustatymas naudojant „Ngrok“

„Ngrok“sukuria saugų ryšį su jūsų tinklu, neatskleisdamas išorinio IP ar netvarkydamas prievadų peradresavimo. Užsiregistravus nemokamai paskyrai, suteikiamas autorizacijos ženklas. Tada „Raspberry Pi“galite jį atsisiųsti, išpakuoti, prijungti autentifikavimo žetoną ir tada paleisti 5000 prievadą:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok -table-linux-arm./ngrok authtoken [įterpkite čia savo autentifikavimo žetoną]./ngrok http 5000

*** SVARBU *** Nemokama „Ngrok“versija nesuteikia jums statinio adreso, todėl kiekvieną kartą iš naujo paleidus „Ngrok“, jis suteiks jums kitą adresą. Jei norite statinio adreso, kad nereikėtų nuolat redaguoti „Webhook“, turėsite sumokėti už naujovintą paskyrą.

Nemokama alternatyva „Ngrok“, siūlanti statinius IP, www.serveo.net vadinama „Serveo“

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

Gautame ekrane jis pateikia persiuntimo adresą (https://random-string.ngrok.io), kurį galime naudoti savo „Webhook“programėlėje. Taigi grįždami prie „Jei tai tada“, URL lauke įveskite savo „Ngrok“peradresavimo adresą ir nukreipkite jį į „kolbų“serverio puslapį „sąrašas“. Tai turėtų atrodyti maždaug taip

random_string.ngrok.io/list

Tada eikite į priekį ir išsaugokite pakeitimus.

Norėdami tai išbandyti, paleiskite „Ngrok“, atidarykite naują terminalą ir paleiskite mūsų „python“scenarijų. Kai abu elementai veikia, paklauskite „Alexa“, kas yra jūsų pirkinių sąraše. Po minutės ar dviejų jis turėtų atsispausdinti rezultatus. Jei norite, kad jis būtų išspausdintas iš karto, tiesiog eikite į savo programėlę IFTTT ir spustelėkite „Tikrinti dabar“. Jei viskas gerai, kvitų spausdintuvas turėtų atsispausdinti tai, kas yra jūsų pirkinių sąraše! Paskutinis kodo bitas, kurį turime pridėti, yra būdas automatiškai paleisti „ngrok“ir mūsų kolbos serverį kiekvieną kartą, kai „Pi“paleidžiama. Tai galime lengvai padaryti padarę mūsų „Python“scenarijų vykdomąjį:

chmod +x iot_print_server.py

Tada galime redaguoti savo /etc/rc.local failą taip, kad jis atrodytų taip:

## Pagal numatytuosius nustatymus šis scenarijus nieko nedaro. # Atspausdinkite IP adresą _IP = $ (pagrindinio kompiuterio pavadinimas -I) || tiesa, jei ["$ _IP"]; tada printf "Mano IP adresas yra %s / n" "$ _IP" fi #autostart ngrok ir nukreipkite jį į savo autentifikavimo failą./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart spausdintuvo python scenarijaus sudo python3 /home/pi/iot_receipt_printer.py & exit 0

6 veiksmas: pridėkite „Pi“prie spausdintuvo

Pi pridėjimas prie spausdintuvo
Pi pridėjimas prie spausdintuvo
Pi pridėjimas prie spausdintuvo
Pi pridėjimas prie spausdintuvo
Pi pridėjimas prie spausdintuvo
Pi pridėjimas prie spausdintuvo
Pi pridėjimas prie spausdintuvo
Pi pridėjimas prie spausdintuvo

Mano turimame kvitų spausdintuve korpuso viduje yra daug tuščios vietos. Kadangi „Raspberry Pi Zero“yra toks mažas, koks jis yra, maniau, kad būtų šaunu tiesiog paslėpti jį kvitų spausdintuve, kad jis atrodytų kaip vienas įrenginys. Vienintelė problema yra ta, kad kvito spausdintuvas veikia 12 V, o „Pi“- 5 V. Taigi, jei norime, kad abu maitintų tik vienas maitinimo kabelis, turėsime sumažinti 12 voltų maitinimo šaltinį iki 5 voltų.

Naudodamas 7805 įtampos reguliatorių, 1uf kondensatorių ir 10uf kondensatorių, galėjau sukurti paprastą 5v reguliatorių, kurį prijungiau prie kvito spausdintuvo loginės plokštės. Lituodavau „-“laidą prie bendros žemės, o tada „+“laidą lituodavau prie maitinimo jungiklio „į“pusės, kad „Pi“įsijungtų ir išsijungtų įjungus ir išjungus spausdintuvą. Naudodamas kelių metrų matuoklį, aš patikrinau, ar „Pi“išvestis yra saugi. Tada lituodavau ant mikro-USB kabelio ir prijungdavau jį prie „Pi“. Prijungę kabelį prie spausdintuvo ir pasukę jungiklį, tiek spausdintuvas, tiek „Pi“įsijungė!

Galiausiai išgręžiau skylę USB kabeliui iš „Pi“prijungti prie spausdintuvo. Radau vietą, kur įdėti 5v reguliatorių ir Pi į spausdintuvo dėklą, ir tada viską vėl sudėjau. Taigi dabar spausdintuvas taip pat turi savo autonominį žiniatinklio serverį!

7 veiksmas: toliau

Toliau
Toliau

Jei sugebėjote pažvelgti į „Jei tai tada“, tikriausiai pastebėjote, kad jame yra daugybė skirtingų žiniatinklio paslaugų, prie kurių galima prisijungti. Taigi, jei neturite „Alexa“arba nenorite jo naudoti, galite naudoti šį projektą, norėdami spausdinti iš beveik bet ko, pvz., „Facebook“, „Twitter“, „Gmail“, „Google Home“, „Evernote“, „Tumblr“, „Flickr“, „Wordpress“, ir tt Mano kodą, skirtą „Tweets“spausdinti, rasite mano „Github“puslapyje. Dabar eik ir pažiūrėk, ką gali sugalvoti!

IoT iššūkis
IoT iššūkis
IoT iššūkis
IoT iššūkis

Pirmasis prizas daiktų interneto iššūkyje

Rekomenduojamas: