Orodha ya maudhui:

Printa ya Alexa - Printa ya Stakabadhi ya Upcycled: Hatua 7 (na Picha)
Printa ya Alexa - Printa ya Stakabadhi ya Upcycled: Hatua 7 (na Picha)

Video: Printa ya Alexa - Printa ya Stakabadhi ya Upcycled: Hatua 7 (na Picha)

Video: Printa ya Alexa - Printa ya Stakabadhi ya Upcycled: Hatua 7 (na Picha)
Video: Как устроена IT-столица мира / Russian Silicon Valley (English subs) 2024, Novemba
Anonim
Image
Image
Printa ya Alexa | Printa ya Stakabadhi ya Upcycled
Printa ya Alexa | Printa ya Stakabadhi ya Upcycled

Mimi ni shabiki wa kuchakata tena teknolojia ya zamani na kuifanya iwe muhimu tena. Muda mfupi uliopita, nilikuwa nimepata printa ya zamani, ya bei rahisi ya risiti, na nilitaka njia nzuri ya kuijenga tena. Halafu, wakati wa likizo, nilipewa zawadi ya Amazon Echo Dot, na moja ya huduma nilizotumia zaidi ilikuwa kuongeza vyakula kwenye orodha yangu ya ununuzi. Kwa hivyo nilidhani itakuwa nzuri kuchanganya hizo mbili na kutumia printa ya risiti kama printa ya IOT ya Alexa (au Google Home, au Siri, nk). Wacha tuone ni nini kitachukua kuchukua ili kufanya wazo hili kuwa kweli.

Vifaa

Hapa kuna sehemu ninazotumia kwa mradi huu:

  1. Printa ya risiti ya bei rahisi ya bei rahisi (inahitaji kuunga mkono ESC-POS)
  2. Kifaa cha Alexa cha Alexa (vifaa vingine vya "msaidizi wa nyumbani" vitafanya kazi pia)
  3. Raspberry Pi Zero isiyo na waya
  4. Mdhibiti wa 7805 5v
  5. 10μf Capacitor
  6. 1μf Capacitor

Vitu vingine ninavyotumia kwa mradi huu ni:

  1. Ikiwa Hii Basi Hiyo (IFTTT.com)
  2. Vifaa vya Soldering

Hatua ya 1: Kuweka Raspberry Pi Zero W

Kuanzisha Raspberry Pi Zero W
Kuanzisha Raspberry Pi Zero W
Kuanzisha Raspberry Pi Zero W
Kuanzisha Raspberry Pi Zero W
Kuanzisha Raspberry Pi Zero W
Kuanzisha Raspberry Pi Zero W

Hatua ya kwanza ni kupata tena uchapishaji wa printa ya risiti tena. Nilichagua kutumia Raspberry Pi Zero W kama mtawala kwa sababu ya bei rahisi na saizi ndogo. Kwa kweli ni ndogo ya kutosha kutoshea ndani ya kesi ya printa ya risiti yenyewe, kwa hivyo hakuna unganisho la nje! Pi Zero W pia imejenga Wifi kwa hivyo kila kitu kimsingi kimejumuishwa kwa saizi yake ndogo.

Ili kupata Pi na kufanya kazi, tunahitaji kupakua OS ya Raspbian na kuichoma kwenye kadi ya MicroSD ukitumia programu kama Etcher. Ingiza ndani ya Pi pamoja na kebo ya HDMI, kibodi, panya, na kisha nguvu.

Wakati Pi inapoinuka na uko kwenye kiolesura cha eneo-kazi, unaweza kuungana na waya yako kwa kubofya ikoni isiyo na waya upande wa juu kulia na kuchagua jina la muunganisho wako wa waya. Halafu ukibonyeza kulia kwenye ikoni hiyo hiyo isiyo na waya, unaweza kwenda kwenye mipangilio ya mtandao na kuweka anwani ya IP tuli ili tuweze kuungana nayo kwa urahisi juu ya mtandao. Mwishowe, unataka kubofya kwenye menyu kuu na uchague "Mhariri wa Usanidi wa Raspbian" na chini ya kichupo cha "Maingiliano", hakikisha SSH imewezeshwa. Kisha ihifadhi na uwashe tena Pi yako.

Hatua ya 2: Kuchapa Kutoka kwa Pi

Kuchapa Kutoka kwa Pi
Kuchapa Kutoka kwa Pi
Uchapishaji Kutoka kwa Pi
Uchapishaji Kutoka kwa Pi

Mara tu Raspbery Pi imewashwa tena, inapaswa kushikamana na mtandao wako wa wireless na IP tuli na kuwezeshwa kwa SSH. Kwa hivyo sasa tunapaswa kuwa na uwezo wa kuungana nayo kwa mbali kutoka kwa kompyuta nyingine yoyote. Ili kufanya hivyo, utahitaji mteja wa SSH. Kwa Windows, mteja mzuri ni Putty. Unaweza kuungana nayo kwa kutumia anwani ya IP tuli ya IP ambayo tuliweka mapema. Basi unaweza kuingia ukitumia "pi" kama jina la mtumiaji na "rasipberry" kama nywila.

Baada ya kuingia kwa mafanikio, tunapaswa sasa kuwa kwenye kiunga cha terminal cha Pi. Hapa tunaweza kuchapa amri ambazo zitatekelezwa kwenye Raspberry Pi. Kwa mfano, moja ya mambo ya kwanza tunayotaka kufanya ni kuhakikisha programu kwenye Pi imesasishwa. Kwa hivyo, kwenye terminal tunaweza kuchapa:

Sudo apt-pata sasisho

Amri hii itasasisha hazina za programu kwenye Pi. Ifuatayo, tunaweza kusanikisha programu ya printa ya ESC-POS na maktaba zinazohitajika.

Sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-dev

Kwa kufanya hivyo, sasa tunaweza kuunganisha Printa kwenye bandari ya Micro-USB ya Pi (kwa kutumia adapta) na kuiwasha. Kisha katika kituo chetu tunaweza kuunda hati ndogo ya chatu

nano hello_world.py

Na ndani yake tunaweza kuongeza nambari hii ya chatu

#! / usr / bin / pythonfrom escpos.printer kuagiza Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p. karibu ()

Toka (CTRL-X), ihifadhi (CTRL-Y) na uikimbie ili ujaribu

python3 hello_world.py

Hatua ya 3: Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)

Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 1)

Je! Printa itakuwa nzuri bila kitu cha kuchapisha? Nilitaka kuwezesha utendaji kuchapisha kutoka kwa huduma tofauti za mtandao, kama vile Alexa. Kwa hivyo ninawezaje kutimiza hilo? Chaguo moja ni kuchagua huduma maalum ya mtandao, kufuatilia nyaraka zao za API na kuandika programu kulingana na API yao. Lakini mimi huchagua kwenda kwa njia ya uvivu…

Kuna tovuti nzuri inayoitwa "Ikiwa Hii Halafu Hiyo" ambayo husababisha vitendo kwa huduma tofauti za mtandao (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, nk) kulingana na vigezo. Kwa mfano, "ikiwa" ninachapisha kwenye Facebook (hii), "Kisha" nitumie barua-pepe (hiyo).

Kwa hivyo kwa nusu ya kwanza ya hii, nilijiandikisha kwa akaunti ya bure, unaweza kuanza kuunda "applet" mpya kwa huduma tofauti unayotaka kuchochea. Sehemu ya "Hii" ya applet yangu itakuwa Alexa. Kuna vichocheo vingi vya Alexa vya kuchagua, lakini nitachagua ile inayosema "Uliza kilicho kwenye orodha yako ya ununuzi". Na sisi hatimaye tunataka ichochea hati ya Python kwenye Raspberry Pi, kwa hivyo kwa sehemu ya "Hiyo" ya hati, tunataka kuchagua Webhooks.

Katika chaguo la Webhooks, tunaweza kuongeza URL inayoelekeza kwa Pi yetu, ambayo tutarudi baadaye. Tunaweza kuondoka kwenye uwanja wa Njia kama "Pata", na kwa aina ya yaliyomo chagua "Nakala wazi". Kwa uwanja wa Mwili, bonyeza "Ongeza Kiunga" na uchague "Orodha Yote". Hii itatuma orodha nzima ya ununuzi kama Pata ombi.

Hatua ya 4: Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 2)

Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 2)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 2)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 2)
Kuunganisha kwenye Mtandao wa Vitu (Sehemu ya 2)

Hatua ya awali hutunza sehemu ya "Mtandao", kwa hivyo sasa inafanya kazi kwenye sehemu ya "vitu" ukitumia Raspberry Pi. Ili kuwasiliana na "Kama Hii Halafu Hiyo" applet ya webhooks, tunahitaji kuanzisha seva ya wavuti kwenye Raspberry Pi. Kuna njia nyingi tofauti za kuanzisha seva ya wavuti, lakini kwa kuzingatia kwamba mwishowe ninataka kutumia hati ya Python, niliamua kutumia seva ya Flask ya Python.

Pi ina maktaba zote za Flask zilizowekwa mapema, kwa hivyo tunachohitaji kufanya ni kuanza kuandika hati ya mtihani:

nano flask_test.py

Na ndani yake, wacha tuongeze nambari ambayo hutumikia ukurasa rahisi wa wavuti.

#! chupa / pipa / chatu # Ingiza MAKTABA ZA KIWANGO kutoka kwenye chupa ya kuingiza chupa, ombi #UUNDA programu ya MBALIMBALI MBALIMBALI = Flask (_ name_) #TENGENEZA UKURASA WA 'INDEX' @ app.route ('/') def index (): kurudi 'Seva yako ya Flask inafanya kazi!' #KIMBIA PROGRAMU ikiwa _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Sasa tu salama programu na uitumie kwa kutumia amri hii:

Sudo python3 flask_test.py

Utaona kwa jibu la amri kwamba bandari chaguo-msingi ambayo Flask inaendesha ni bandari ya 5000. Kwa hivyo kwenye kivinjari, ikiwa unachapa Anwani ya IP ya Pi: 5000, unapaswa kuona maandishi "Seva yako ya Flask inafanya kazi!"

Tunayo nambari yetu ya majaribio ya Python kutoka hapo awali ambayo inachapisha printa yetu ya risiti, na tuna seva yetu ya Jalada la jaribio. Kwa hivyo ijayo tunahitaji kuzichanganya na kuingiza nambari fulani ambayo huvuta data kutoka kwa applet yetu ya Webhook. Wacha tuunde faili mpya ya Python:

nano iot_print_server.py

Na ndani yake, ongeza nambari ifuatayo:

#! chupa / pipa / chatu # INGIA MAKTABA ZA KIWANGO NA ZA PRINTER kutoka kwa chupa ya kuingiza chupa, ombi kutoka kwa escpos.printa kuagiza Usb #BASILI ZA MABADILIKO KWA PRINTER NA FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #RECE 'INDEX' PAGE @ app.route ('/') def index (): rudisha 'Seva yako ya Flask inafanya kazi!' #FUNGA "PAGE" INAITWA "ORODHA" KWA AJILI YA KUCHAPA ORODHA YA ALEXA YA UNunuzi @ app.route ('/ orodha') orodha ya orodha (): #PICHA "PATA" DATA KUTOKA WEBOOKS ZA IFTTT yaliyomo = ombi.pata_data () #Badilisha DATA YA RAW STRING str_content = str (yaliyomo) #DAYIDE DATA KWENYE Mistari SEPERATE str_split = str_content.splitlines () #NENO ZINAZOTUMIWA NA KOMMA NA ONGEZA KWENYE orodha mpya orodha mpya

Unaweza kuiendesha ili uone ikiwa inarudisha makosa yoyote, lakini haitafanya kazi na webokok yetu bado kwa sababu kufikia sasa, seva inaendesha tu ndani ya nchi. Hakuna URL ya nje ya wavuti kuungana nayo bado. Tunaweza kuanzisha usambazaji wa bandari kwenye router yetu na tutumie tu anwani yetu ya nje ya IP, lakini hiyo sio salama sana. Kama mbadala, ninaamua kwenda na NGROK.

Hatua ya 5: Kuweka Upataji wa Nje na Ngrok

Kuanzisha Upataji wa Nje na Ngrok
Kuanzisha Upataji wa Nje na Ngrok
Kuanzisha Upataji wa Nje na Ngrok
Kuanzisha Upataji wa Nje na Ngrok

Ngrok huweka unganisho salama kwa mtandao wako bila ya kufunua IP yako ya nje au fujo na usambazaji wa bandari. Baada ya kujisajili kwa akaunti ya bure, inakupa ishara ya idhini. Halafu kwenye Raspberry Pi yako, unaweza kuipakua, kuifungua, unganisha ishara yako ya auth, kisha uikimbie kwenye bandari 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable ……. unzip ngrok-solid-linux-arm./ngrok authtoken [ingiza ishara yako ya auth hapa]./ngrok http 5000

*** MUHIMU *** Toleo la bure la Ngrok halikupi anwani tuli, kwa hivyo kila wakati utakapoendesha tena Ngrok, itakupa anwani tofauti. Ikiwa unataka anwani tuli ili usiwe na haja ya kuendelea kuhariri Webhook yako, basi utahitaji kulipia akaunti iliyosasishwa.

Njia mbadala ya bure kwa Ngrok ambayo inatoa IP tuli inaitwa "Serveo" kwa www.serveo.net

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

Kwenye skrini inayosababisha, inakupa anwani ya usambazaji (https://random-string.ngrok.io) ambayo tunaweza kutumia katika applet yetu ya Webhook. Kwa hivyo kurudi kwa "Ikiwa Hii Halafu Hiyo", kwenye uwanja wa URL, ingiza anwani yako ya usambazaji ya Ngrok na uielekeze kwenye ukurasa wa "orodha" kwenye seva yetu ya Flask. Inapaswa kuonekana kama hii

random_string.ngrok.io/list

Kisha nenda mbele na uhifadhi mabadiliko.

Ili kuijaribu, endelea Ngrok kukimbia, kufungua kituo kipya, na uendesha hati yetu ya chatu. Pamoja na vitu vyote viwili kukimbia, muulize Alexa ni nini kwenye orodha yako ya ununuzi. Baada ya dakika moja au mbili, inapaswa kuchapisha matokeo. Ikiwa unataka ichapishe mara moja, nenda kwenye Applet yako kwenye IFTTT na ubonyeze "Angalia Sasa". Ikiwa kila kitu kitaenda sawa, printa ya risiti inapaswa kuchapisha kile kilicho kwenye orodha yako ya ununuzi! Nambari ya mwisho ya nambari tunayohitaji kuongeza ni njia ya kuanzisha tena ngrok na seva yetu ya chupa kila wakati Pi inapoanza. Tunaweza kufanya hivyo kwa urahisi kwa kufanya hati yetu ya Python itekelezwe:

chmod + x iot_print_server.py

Kisha tunaweza kuhariri faili yetu ya /etc/rc.local ili iweze kuonekana kama hii:

## Kwa msingi hati hii haifanyi chochote. # Chapisha anwani ya IP _IP = $ (jina la mwenyeji -I) || kweli ikiwa ["$ _IP"]; kisha printf "Anwani yangu ya IP ni% s / n" "$ _IP" fi #autostart ngrok na ielekeze kwa faili yako ya auth./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 # ongeza mchapishaji chatu script sudo python3 / nyumba/pi/iot_receipt_printer.py & exit 0

Hatua ya 6: Kuongeza Pi kwa Printa

Kuongeza Pi kwenye Printa
Kuongeza Pi kwenye Printa
Kuongeza Pi kwenye Printa
Kuongeza Pi kwenye Printa
Kuongeza Pi kwenye Printa
Kuongeza Pi kwenye Printa
Kuongeza Pi kwenye Printa
Kuongeza Pi kwenye Printa

Printa ya risiti ninayo ina nafasi nyingi tupu ndani ya kabati. Na kwa Raspberry Pi Zero kuwa ndogo kama ilivyo, nilidhani itakuwa nzuri tu kuificha kwenye printa ya risiti ili ionekane kama kifaa kimoja. Shida tu ni kwamba printa ya risiti inaendesha 12v na Pi inaendesha 5v. Kwa hivyo ikiwa tunataka tu kebo moja ya nguvu kuzipa nguvu zote mbili, tutalazimika kushuka chini kwa usambazaji wa umeme wa 12v kwa 5v.

Kutumia mdhibiti wa 7805 voltage, 1uf capacitor, na 10uf capacitor, niliweza kuunda mdhibiti rahisi wa 5v ambao niliunganisha kwenye bodi ya mantiki ya printa ya risiti. Niliuza waya "-" kwa uwanja wa kawaida, na kisha nikauza waya "+" kwa upande wa "upande" wa swichi ya umeme ili Pi iweze kuwasha na kuzima wakati printa imewashwa na kuzimwa. Kutumia mita nyingi, nilijaribu kudhibitisha kuwa pato lilikuwa salama kwa Pi. Kisha nikauza kwenye kebo ndogo ya usb na kuiunganisha kwa Pi. Baada ya kuingiza kebo kwenye printa na kupindua swichi, printa na Pi ziliwasha!

Mwishowe, nilichimba shimo kuunganisha kebo ya USB kutoka kwa Pi hadi kwenye printa. Nilipata mahali pa kuweka mdhibiti wa 5v na Pi ndani ya kesi ya printa, halafu nikarudisha kila kitu pamoja. Kwa hivyo sasa printa ina yenyewe iliyo na seva ya wavuti pia!

Hatua ya 7: Kuchukua Zaidi

Kuchukua Ni Zaidi
Kuchukua Ni Zaidi

Ikiwa uliweza kutazama "Ikiwa Hii Halafu Hiyo", labda umeona kuwa ina tani za huduma tofauti za wavuti kuungana nazo. Kwa hivyo ikiwa hauna Alexa, au haujali kutumia moja, unaweza kutumia mradi huu kuchapisha kutoka karibu kila kitu, kama Facebook, Twitter, Gmail, Nyumba ya Google, Evernote, Tumblr, Flickr, Wordpress, nk Unaweza kupata nambari yangu ya kuchapisha Tweets kwenye ukurasa wangu wa Github. Sasa nenda uone ni nini unaweza kuja na!

Changamoto ya IoT
Changamoto ya IoT
Changamoto ya IoT
Changamoto ya IoT

Tuzo ya Kwanza katika Changamoto ya IoT

Ilipendekeza: