Talaan ng mga Nilalaman:

Alexa Printer - Upcycled Receipt Printer: 7 Hakbang (na may Mga Larawan)
Alexa Printer - Upcycled Receipt Printer: 7 Hakbang (na may Mga Larawan)

Video: Alexa Printer - Upcycled Receipt Printer: 7 Hakbang (na may Mga Larawan)

Video: Alexa Printer - Upcycled Receipt Printer: 7 Hakbang (na may Mga Larawan)
Video: Amazon Sticky Note Printer - Was it worth the wait? // Smart Alexa Day One Device 2024, Hunyo
Anonim
Image
Image
Alexa Printer | Upcycled Receipt Printer
Alexa Printer | Upcycled Receipt Printer

Ako ay isang tagahanga ng pag-recycle ng lumang tech at ginagawa itong kapaki-pakinabang muli. Ilang sandali ang nakaraan, nakakuha ako ng isang luma, murang thermal resibo ng printer, at nais ko ng isang kapaki-pakinabang na paraan upang muling layunin ito. Pagkatapos, sa mga kapaskuhan, binigyan ako ng isang Amazon Echo Dot, at ang isa sa mga tampok na pinaka ginamit ko ay pagdaragdag ng mga groseri sa aking listahan ng pamimili. Kaya naisip ko na magiging cool na pagsamahin ang dalawa at gamitin ang resibo ng printer bilang isang IOT printer para sa Alexa (o Google Home, o Siri, atbp). Tingnan natin kung ano ang aabutin upang gawin ang ideyang ito na isang katotohanan.

Mga gamit

Narito ang mga bahagi na ginagamit ko para sa proyektong ito:

  1. Murang generic na resibo ng thermal resibo (kailangang suportahan ang ESC-POS)
  2. Ang Amazon Alexa Device (iba pang mga aparato na "katulong sa bahay" ay maaaring gumana din)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v Regulator
  5. 10μf Capacitor
  6. 1μf Capacitor

Ang iba pang mga bagay na ginagamit ko para sa proyektong ito ay:

  1. Kung Ito Noon (IFTTT.com)
  2. Kagamitan sa Paghinang

Hakbang 1: Pag-set up ng Raspberry Pi Zero W

Pag-set up ng Raspberry Pi Zero W
Pag-set up ng Raspberry Pi Zero W
Pag-set up ng Raspberry Pi Zero W
Pag-set up ng Raspberry Pi Zero W
Pag-set up ng Raspberry Pi Zero W
Pag-set up ng Raspberry Pi Zero W

Ang unang hakbang ay upang makuha muli ang lumang pag-print ng resibo ng printer. Pinili kong gamitin ang Raspberry Pi Zero W bilang tagapamahala dahil sa murang presyo at maliit na sukat. Ito ay talagang sapat na maliit upang magkasya sa loob ng kaso ng resibo ng printer mismo, kaya walang mga panlabas na koneksyon! Ang Pi Zero W ay naka-built din sa Wifi kaya ang lahat ay karaniwang isinama sa maliit na sukat na ito.

Upang maiayos ang Pi, kailangan naming i-download ang Raspbian OS at sunugin ito sa isang microSD card gamit ang isang programa tulad ng Etcher. Ipasok ito sa Pi kasama ang isang HDMI cable, keyboard, mouse, at pagkatapos ay ang lakas.

Kapag nag-boot ang Pi at nasa interface ka ng desktop, maaari kang kumonekta sa iyong wireless sa pamamagitan ng pag-click sa wireless na icon sa kanang itaas at piliin ang pangalan ng iyong wireless na koneksyon. Pagkatapos kung mag-right click ka sa parehong wireless icon na iyon, maaari kang pumunta sa mga setting ng network at magtakda ng isang static IP address upang madali kaming makakonekta dito sa network. Sa wakas, nais mong mag-click sa pangunahing menu at piliin ang "Raspbian Configuration Editor" at sa ilalim ng tab na "Mga Interface," siguraduhin na ang SSH ay pinagana. Pagkatapos ay i-save ito at i-reboot ang iyong Pi.

Hakbang 2: Pagpi-print Mula sa Pi

Pagpi-print Mula sa Pi
Pagpi-print Mula sa Pi
Pagpi-print Mula sa Pi
Pagpi-print Mula sa Pi

Kapag na-reboot ang Raspbery Pi, dapat itong konektado sa iyong wireless network na may isang static IP at pinagana ang SSH. Kaya ngayon dapat na makakonekta namin ito mula sa malayo mula sa anumang iba pang computer. Upang magawa iyon, kakailanganin mo ng isang SSH client. Para sa Windows, isang mahusay na kliyente si Putty. Maaari kang kumonekta dito gamit ang static IP address ng Pi na itinakda namin nang mas maaga. Pagkatapos ay maaari kang mag-login gamit ang "pi" bilang username at "raspberry" bilang password.

Matapos ang isang matagumpay na pag-login, dapat ay nasa terminal interface na kami ng Pi. Dito maaari naming mai-type ang mga utos na isasagawa sa Raspberry Pi. Halimbawa, ang isa sa mga unang bagay na nais naming gawin ay tiyakin na ang software sa Pi ay napapanahon. Kaya, sa terminal maaari kaming mag-type:

sudo apt-get update

I-a-update ng utos na ito ang mga repository ng software sa Pi. Susunod, maaari naming mai-install ang ESC-POS printer software at kinakailangang mga library.

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

Sa tapos na, maaari na nating maiugnay ang Printer sa Pi-Micro-USB port (gamit ang isang adapter) at i-on ito. Pagkatapos sa aming terminal maaari kaming lumikha ng isang maliit na script ng sawa

nano hello_world.py

At sa loob nito maaari naming idagdag ang python code na ito

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

Lumabas ito (CTRL-X), i-save ito (CTRL-Y) at patakbuhin ito upang subukan ito

python3 hello_world.py

Hakbang 3: Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)

Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 1)

Ano ang buti ng isang printer kung walang mai-print? Nais kong paganahin ang pag-andar upang mag-print mula sa iba't ibang mga serbisyo sa internet, tulad ng Alexa. Kaya paano ko magagawa iyon? Ang isang pagpipilian ay ang pumili ng isang tukoy na serbisyo sa internet, subaybayan ang kanilang dokumentasyon ng API at magsulat ng isang application batay sa kanilang API. Ngunit pipiliin kong puntahan ang tamad na ruta …

Mayroong isang mahusay na website na tinatawag na "Kung Ito Pagkatapos Iyon" na nagpapalitaw ng mga pagkilos para sa iba't ibang mga serbisyo sa internet (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, atbp) batay sa isang hanay ng mga pamantayan. Halimbawa, "kung" nag-post ako sa Facebook (ito), "Kung gayon" padalhan ako ng isang e-mail (na).

Kaya para sa unang kalahati nito, nag-sign up ako para sa isang libreng account, maaari mong simulang lumikha ng isang bagong "applet" para sa iba't ibang mga serbisyo na nais mong mag-trigger. Ang "Ito" na bahagi ng aking applet ay magiging Alexa. Mayroong maraming mga pag-trigger ng Alexa upang pumili mula sa, ngunit pipiliin ko ang isa na nagsasabing "Itanong kung ano ang nasa iyong listahan ng pamimili". At sa huli nais namin itong mag-trigger ng isang script ng Python sa Raspberry Pi, kaya para sa bahaging "Iyon" ng script, nais naming pumili ng Webhooks.

Sa pagpipiliang Webhooks, maaari kaming magdagdag ng isang URL na tumuturo sa aming Pi, na babalik kami sa paglaon. Maaari nating iwan ang patlang ng Paraan bilang "Kumuha", at para sa uri ng nilalaman piliin ang "Plain Text". Para sa patlang na Katawan, i-click ang "Magdagdag ng Sangkap" at piliin ang "Buong Listahan". Ipapadala nito ang buong listahan ng pamimili bilang isang kahilingan sa Kumuha.

Hakbang 4: Pagkonekta sa Internet ng Mga Bagay (Bahagi 2)

Pagkonekta sa Internet ng Mga Bagay (Bahagi 2)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 2)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 2)
Pagkonekta sa Internet ng Mga Bagay (Bahagi 2)

Ang nakaraang hakbang ay nangangalaga sa bahagi ng "Internet", kaya't hinahayaan na ngayong gumana ang "mga bagay" na bahagi gamit ang Raspberry Pi. Upang makipag-usap sa "Kung Ito Pagkatapos Na" webhooks applet, kailangan naming mag-set up ng isang web server sa Raspberry Pi. Maraming iba't ibang mga paraan upang mag-set up ng isang web server, ngunit isinasaalang-alang nais kong magpatakbo ng isang script ng Python, nagpasya akong gamitin ang Flask server ng Python.

Ang Pi ay may pre-install na lahat ng mga aklatan ng Flask, kaya ang kailangan lang nating gawin ay magsimulang magsulat ng isang script ng pagsubok:

nano flask_test.py

At sa loob nito, magdagdag tayo ng ilang code na naghahatid ng isang simpleng web page.

#! flask / bin / python # IMPORT THE FLASK LIBRARIES from flask import Flask, request #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @ app.route ('/') def index (): ibalik 'Gumagana ang iyong Flask server!' #RUN THE PROGRAM if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

I-save lamang ang programa at patakbuhin ito gamit ang utos na ito:

sudo python3 flask_test.py

Makikita mo sa pamamagitan ng tugon ng utos na ang default na port na pinapatakbo ng Flask ay port 5000. Kaya sa isang web browser, kung nagta-type ka sa IP Address ng iyong Pi: 5000, dapat mong makita ang teksto na "Gumagana ang iyong Flask server!"

Mayroon kaming aming pagsubok na Python code mula nang mas maaga na naka-print sa aming resibo ng printer, at mayroon kaming aming pagsubok na Flask server. Kaya sa susunod kailangan naming pagsamahin ang mga ito at isama ang ilang code na kumukuha ng data mula sa aming Webhook applet. Lumikha tayo ng isang bagong file ng Python:

nano iot_print_server.py

At sa loob nito, idagdag ang sumusunod na code:

#! flask / bin / python # IMPORT THE FLASK AND PRINTER LIBRARIES from flask import Flask, request from escpos.printer import Usb #ASSIGN VARIABLES FOR THE PRINTER AND FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE 'INDEX' PAGE @ app.route ('/') def index (): ibalik 'Gumagana ang iyong Flask server!' # Lumikha ng "PAGE" TINAWAG "LIST" PARA SA PRINTING ALEXA SHOPPING LIST @ app.route ('/ list') listahan ng def (): #CAPTURE "GET" DATA MULA SA IFTTT WEBOOKS nilalaman = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (nilalaman) #DIVIDE DATA SA SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS NG COMMA AT Idagdag SA BAGONG Listahan newlist = para sa salita sa str_split: word = word.split (',') newlist.extend (salita) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Shopping List / n") p.text ("Shopping List: / n ") #ENUMERATE AND PRINT EACH ITEM IN LIST r = 1 for x in rmv_marks: #print (str (r) +". "+ X +" / n ") p.text (str (r) +". "+ x + "\ n") r + = 1 #RETURN RESULTS ibalik 'x' #RUN THE PROGRAM if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Maaari mong patakbuhin ito upang makita kung nagbabalik ito ng anumang mga error, ngunit hindi ito gagana sa aming webhook dahil sa ngayon, ang server ay tumatakbo lamang nang lokal. Wala pang panlabas na URL para kumonekta sa webhook. Maaari naming i-set up ang pagpapasa ng port sa aming router at gamitin lamang ang aming panlabas na nakaharap sa IP address, ngunit hindi talaga iyon masyadong ligtas. Bilang kahalili, nagpasya akong sumama sa NGROK.

Hakbang 5: Pag-set up ng Panlabas na Pag-access Sa Ngrok

Pag-set up ng Panlabas na Pag-access Sa Ngrok
Pag-set up ng Panlabas na Pag-access Sa Ngrok
Pag-set up ng Panlabas na Pag-access Sa Ngrok
Pag-set up ng Panlabas na Pag-access Sa Ngrok

Nagse-set up ang Ngrok ng isang ligtas na koneksyon sa iyong network nang hindi na inilalantad ang iyong panlabas na IP o gulo sa pagpapasa ng port. Matapos mag-sign up para sa isang libreng account, bibigyan ka nito ng isang token ng pahintulot. Pagkatapos sa iyong Raspberry Pi, maaari mo itong i-download, i-unzip ito, ikonekta ang iyong token ng auth, at pagkatapos ay patakbuhin ito sa port 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… i-unzip ngrok-stable-linux-arm./ngrok authtoken [ipasok ang iyong token ng auth dito]./ngrok http 5000

*** MAHALAGA *** Ang libreng bersyon ng Ngrok ay hindi magbibigay sa iyo ng isang static na address, kaya sa tuwing pinatakbo mo muli ang Ngrok, bibigyan ka nito ng ibang address. Kung nais mo ang isang static na address upang hindi mo na patuloy na muling mai-edit ang iyong Webhook, kakailanganin mong magbayad para sa isang na-upgrade na account.

Ang isang libreng kahalili sa Ngrok na nag-aalok ng static IP's ay tinatawag na "Serveo" sa www.serveo.net

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

Sa nagresultang screen, binibigyan ka nito ng isang pagpapasa ng address (https://random-string.ngrok.io) na maaari mong magamit sa aming Webhook applet. Kaya't babalik sa "Kung Ito Pagkatapos Iyon", sa patlang ng URL, ipasok ang iyong pagpapasahang address ng Ngrok at ituro ito sa pahina ng "listahan" sa aming Flask server. Dapat magmukhang ganito

random_string.ngrok.io/list

Pagkatapos ay magpatuloy at i-save ang mga pagbabago.

Upang subukan ito, panatilihing tumatakbo ang Ngrok, magbukas ng isang bagong terminal, at patakbuhin ang aming script sa sawa. Sa parehong mga item na tumatakbo, tanungin ang Alexa kung ano ang nasa iyong listahan ng pamimili. Pagkatapos ng isang minuto o dalawa, dapat itong mag-print ng mga resulta. Kung nais mo itong mai-print kaagad, pumunta lamang sa iyong Applet sa IFTTT at i-click ang "Suriin Ngayon". Kung maayos ang lahat, dapat i-print ng resibo ng printer ang nasa iyong listahan ng pamimili! Ang huling piraso ng code na kailangan naming idagdag ay isang paraan upang ma-autostart ngrok at ang aming flask server sa tuwing magsisimula ang Pi. Madali nating magagawa iyon sa pamamagitan ng pagpapaandar ng aming Python script:

chmod + x iot_print_server.py

Pagkatapos ay mai-e-edit namin ang aming /etc/rc.local file upang ganito ang hitsura:

## Bilang default ang script na ito ay walang ginagawa. # I-print ang IP address _IP = $ (hostname -ako) || totoo kung ["$ _IP"]; pagkatapos printf "Ang aking IP address ay% s / n" "$ _IP" fi #autostart ngrok at ituro ito sa iyong auth file./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 #autostart ang printer python script sudo python3 /home/pi/iot_receipt_printer.py & exit 0

Hakbang 6: Pagdaragdag ng Pi sa Printer

Pagdaragdag ng Pi sa Printer
Pagdaragdag ng Pi sa Printer
Pagdaragdag ng Pi sa Printer
Pagdaragdag ng Pi sa Printer
Pagdaragdag ng Pi sa Printer
Pagdaragdag ng Pi sa Printer
Pagdaragdag ng Pi sa Printer
Pagdaragdag ng Pi sa Printer

Ang resibo ng printer na mayroon ako ay may maraming walang laman na puwang sa loob ng pambalot. At sa Raspberry Pi Zero na napakaliit nito, naisip kong maging cool lang upang maitago ito sa printer ng resibo upang ang hitsura nito ay isang aparato. Ang nag-iisa lamang na problema ay tumatakbo ang printer ng Resibo sa 12v at ang Pi ay tumatakbo sa 5v. Kaya't kung nais lamang natin ang isang power cable upang mapagana ang pareho sa kanila, kakailanganin nating ibaba ang 12v power supply sa 5v.

Gamit ang isang 7805 boltahe regulator, isang 1uf capacitor, at isang 10uf capacitor, nagawa kong lumikha ng simpleng 5v regulator na konektado ako sa lohika board ng resibo ng printer. Inhinang ko ang "-" wire sa karaniwang lupa, at pagkatapos ay hinangin ko ang "+" wire sa "sa" gilid ng switch ng kuryente upang ang Pi ay mag-on at patayin kapag ang printer ay nakabukas at naka-off. Gamit ang isang multi-meter, sinubukan ko upang kumpirmahing ang output ay ligtas para sa Pi. Pagkatapos ay naghinang ako sa isang micro-usb cable at ikinonekta ito sa Pi. Matapos isaksak ang cable sa printer at i-flip ang switch, parehong naka-on ang printer at ang Pi!

Sa wakas, nag-drill ako ng isang butas upang ikonekta ang USB cable mula sa Pi sa printer. Nakahanap ako ng isang lugar upang ilagay ang 5v regulator at Pi sa loob ng case ng printer, at pagkatapos ay ibinalik ko ang lahat. Kaya ngayon ang printer ay mayroong sarili nitong nilalaman na web server din!

Hakbang 7: Kinukuha Pa Ito

Kinukuha Pa Ito
Kinukuha Pa Ito

Kung nagawa mong tingnan ang "Kung Ito Pagkatapos Iyon", malamang na napansin mo na mayroon itong tone-toneladang iba't ibang mga serbisyo sa web upang kumonekta. Kaya't kung wala kang isang Alexa, o walang pakialam na gumamit ng isa, maaari mong gamitin ang proyektong ito upang mag-print mula sa anumang bagay, tulad ng Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, atbp Maaari mong makita ang aking code para sa pag-print ng mga Tweet sa aking pahina ng Github. Ngayon pumunta at tingnan kung ano ang maaari mong makabuo!

IoT Hamon
IoT Hamon
IoT Hamon
IoT Hamon

Unang Gantimpala sa IoT Hamon

Inirerekumendang: