Բովանդակություն:

Alexa տպիչ - Upcycled անդորրագիր տպիչ. 7 քայլ (նկարներով)
Alexa տպիչ - Upcycled անդորրագիր տպիչ. 7 քայլ (նկարներով)

Video: Alexa տպիչ - Upcycled անդորրագիր տպիչ. 7 քայլ (նկարներով)

Video: Alexa տպիչ - Upcycled անդորրագիր տպիչ. 7 քայլ (նկարներով)
Video: Repurposing 1st Generation iPad in 2023 | Keyboard Maestro + TouchOSC 2024, Հունիսի
Anonim
Image
Image
Alexa տպիչ | Upcycled անդորրագիր տպիչ
Alexa տպիչ | Upcycled անդորրագիր տպիչ

Ես հին տեխնիկայի վերամշակման և այն կրկին օգտակար դարձնելու երկրպագու եմ: Քիչ առաջ ես ձեռք էի բերել հին, էժան ջերմային անդորրագրի տպիչ, և ցանկանում էի օգտակար միջոց օգտագործել այն նորից նպատակաուղղելու համար: Հետո, արձակուրդներին, ինձ նվիրեցին Amazon Echo Dot- ը, և այն հատկություններից մեկը, որն ամենից շատ օգտագործեցի, գնումների ցուցակում ապրանքներ ավելացնելն էր: Այսպիսով, ես մտածեցի, որ լավ կլինի համատեղել երկուսը և օգտագործել ստացողի տպիչը որպես Alexa- ի IOT տպիչ (կամ Google Home, կամ Siri և այլն): Տեսնենք, թե ինչ կպահանջվի այս գաղափարն իրականություն դարձնելու համար:

Պարագաներ

Ահա այն հատվածները, որոնք ես օգտագործում եմ այս նախագծի համար.

  1. Էժան ընդհանուր ջերմային ստացողի տպիչ (անհրաժեշտ է աջակցել ESC-POS)
  2. Amazon Alexa սարք (հավանաբար կաշխատեն նաև «տան օգնականի» այլ սարքեր)
  3. Raspberry Pi Zero Wireless
  4. 7805 5 վ կարգավորիչ
  5. 10μf կոնդենսատոր
  6. 1μf կոնդենսատոր

Այլ բաներ, որոնք ես օգտագործում եմ այս նախագծի համար.

  1. Եթե սա ուրեմն այն (IFTTT.com)
  2. Oldոդման սարքավորումներ

Քայլ 1. Ազնվամորու Pi Zero W- ի կարգավորում

Ազնվամորու Pi Zero W- ի կարգավորում
Ազնվամորու Pi Zero W- ի կարգավորում
Ազնվամորու Pi Zero W- ի կարգավորում
Ազնվամորու Pi Zero W- ի կարգավորում
Ազնվամորու Pi Zero W- ի կարգավորում
Ազնվամորու Pi Zero W- ի կարգավորում

Առաջին քայլը հին անդորրագրի տպիչով նորից տպելն է: Ես ընտրեցի օգտագործել Raspberry Pi Zero W- ը որպես վերահսկիչ, քանի որ դա էժան գին է և փոքր չափս: Այն իրականում այնքան փոքր է, որ տեղավորվում է ստացողի տպիչի պատյանում, այնպես որ արտաքին կապեր չկան: Pi Zero W- ն նաև ներկառուցված է Wifi- ում, ուստի ամեն ինչ հիմնականում ինտեգրված է իր փոքր չափին:

Pi- ն գործարկելու համար մենք պետք է ներբեռնենք Raspbian OS- ն և այն այրենք microSD քարտի վրա ՝ օգտագործելով այնպիսի ծրագիր, ինչպիսին է Etcher- ը: Տեղադրեք այն Pi- ի հետ ՝ HDMI մալուխի, ստեղնաշարի, մկնիկի և միացման միջոցով:

Երբ Pi- ն բարձրանում է, և դուք գտնվում եք աշխատասեղանի ինտերֆեյսում, կարող եք միանալ ձեր անլար ցանցին ՝ վերևի աջ անկյունում սեղմելով անլար պատկերակի վրա և ընտրելով ձեր անլար կապի անունը: Այնուհետև, եթե աջ սեղմեք նույն անլար պատկերակի վրա, կարող եք գնալ ցանցի կարգավորումներ և սահմանել ստատիկ IP հասցե, որպեսզի մենք կարողանանք հեշտությամբ միանալ դրան ցանցի միջոցով: Ի վերջո, ցանկանում եք սեղմել հիմնական ընտրացանկի վրա և ընտրել «Raspbian Configuration Editor», իսկ «Ինտերֆեյսեր» ներդիրում համոզվեք, որ SSH- ն միացված է: Այնուհետև պահեք այն և վերագործարկեք ձեր Pi- ն:

Քայլ 2: Տպում Pi- ից

Տպագրություն Pi- ից
Տպագրություն Pi- ից
Տպագրություն Pi- ից
Տպագրություն Pi- ից

Raspbery Pi- ի վերագործարկվելուց հետո այն պետք է միացված լինի ձեր անլար ցանցին ստատիկ IP- ով և միացված SSH- ով: Այսպիսով, այժմ մենք պետք է կարողանանք դրան հեռակա կերպով միանալ ցանկացած այլ համակարգչից: Դա անելու համար ձեզ հարկավոր է SSH հաճախորդ: Windows- ի համար լավ հաճախորդը tyեփամածիկն է: Դուք կարող եք միանալ դրան ՝ օգտագործելով Pi- ի ստատիկ IP հասցեն, որը մենք ավելի վաղ սահմանել էինք: Այնուհետև կարող եք մուտք գործել ՝ օգտագործելով «pi» - ն որպես օգտվողի անուն և «ազնվամորի» ՝ որպես գաղտնաբառ:

Հաջող մուտքից հետո մենք այժմ պետք է լինենք Pi- ի տերմինալային միջերեսում: Այստեղ մենք կարող ենք մուտքագրել հրամաններ, որոնք գործարկվելու են Raspberry Pi- ի վրա: Օրինակ, առաջին բաներից մեկը, որ մենք ուզում ենք անել, համոզվելն է, որ Pi- ի ծրագրակազմը արդիական է: Այսպիսով, տերմինալում մենք կարող ենք մուտքագրել.

sudo apt-get թարմացում

Այս հրամանը կթարմացնի ծրագրակազմի պահոցները Pi- ում: Հաջորդը, մենք կարող ենք տեղադրել ESC-POS տպիչի ծրագրակազմը և անհրաժեշտ գրադարանները:

sudo apt-get տեղադրել python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-upgrade pip sudo pip3 տեղադրել python-escpos

Ավարտելով դա, մենք այժմ կարող ենք տպիչը միացնել Pi- ի Micro-USB պորտին (ադապտեր օգտագործելով) և միացնել այն: Այնուհետև մեր տերմինալում մենք կարող ենք ստեղծել փոքրիկ պիթոնի սցենար

nano hello_world.py

Եվ դրանում մենք կարող ենք ավելացնել այս պիթոնի ծածկագիրը

#!/usr/bin/python escpos.printer ներմուծում Usb p = Usb (0x0416, 0x5011) էջ. տեքստ («Mini IOT տպիչ / n») էջ.

Դուրս եկեք այն (CTRL-X), պահեք այն (CTRL-Y) և գործարկեք այն փորձարկելու համար

python3 hello_world.py

Քայլ 3. Իրերի ինտերնետին միանալը (մաս 1)

Իրերի ինտերնետին միանալը (մաս 1)
Իրերի ինտերնետին միանալը (մաս 1)
Իրերի ինտերնետին միանալը (մաս 1)
Իրերի ինտերնետին միանալը (մաս 1)
Իրերի ինտերնետին միանալը (մաս 1)
Իրերի ինտերնետին միանալը (մաս 1)
Իրերի ինտերնետին միանալը (մաս 1)
Իրերի ինտերնետին միանալը (մաս 1)

Ի՞նչ օգուտ կարող է ունենալ տպիչը, եթե տպելու բան չկա: Ես ուզում էի հնարավորություն ընձեռել տարբեր ինտերնետային ծառայություններից, օրինակ ՝ Alexa- ից տպագրելու ֆունկցիոնալությունը: Այսպիսով, ինչպես կարող եմ դա իրականացնել: Տարբերակներից մեկն այն է, որ ընտրել որոշակի ինտերնետային ծառայություն, հետևել դրանց API փաստաթղթերին և գրել ծրագիր `հիմնված իրենց API- ի վրա: Բայց ես ընտրում եմ ծույլ ճանապարհը…

Կա մի հիանալի կայք, որը կոչվում է «Եթե սա այն է», որը մի շարք չափանիշների հիման վրա գործողություններ է առաջացնում տարբեր ինտերնետ ծառայությունների համար (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter և այլն): Օրինակ, «եթե» -ը տեղադրում եմ Facebook (սա), «Հետո» ուղարկեք ինձ էլ. Նամակ (այն):

Այսպիսով, դրա առաջին կեսի համար ես գրանցվեցի անվճար հաշվի համար, կարող եք սկսել ստեղծել նոր «հավելված» տարբեր ծառայությունների համար, որոնք ցանկանում եք գործարկել: Իմ հավելվածի «Այս» մասը կլինի Alexa- ն: Alexa- ի բազմաթիվ գործարկիչներ կան ընտրելու համար, բայց ես կընտրեմ այն մեկը, որն ասում է «Հարցրեք, թե ինչ կա ձեր գնումների ցուցակում»: Եվ մենք, ի վերջո, ցանկանում ենք, որ այն գործի դնի Python սցենարը Raspberry Pi- ի վրա, ուստի սցենարի «Դա» հատվածի համար մենք ցանկանում ենք ընտրել Webhooks:

Webhooks տարբերակում մենք կարող ենք ավելացնել URL, որը մատնանշում է մեր Pi- ին, որին կանդրադառնանք ավելի ուշ: Մեթոդի դաշտը կարող ենք թողնել որպես «Ստանալ», իսկ բովանդակության տեսակի համար ընտրել «Պարզ տեքստ»: Մարմնի դաշտի համար կտտացրեք «Ավելացնել բաղադրիչ» և ընտրեք «Ամբողջ ցուցակ»: Սա կուղարկի գնումների ամբողջ ցուցակը որպես Ստանալու հարցում:

Քայլ 4: Իրերի ինտերնետին միանալը (մաս 2)

Իրերի ինտերնետին միանալը (մաս 2)
Իրերի ինտերնետին միանալը (մաս 2)
Իրերի ինտերնետին միանալը (մաս 2)
Իրերի ինտերնետին միանալը (մաս 2)

Նախորդ քայլը վերաբերում է «Ինտերնետ» հատվածին, ուստի այժմ թույլ տվեք աշխատել «իրեր» մասի վրա ՝ օգտագործելով Raspberry Pi- ն: «If This Then That» վեբհուկերի հավելվածի հետ շփվելու համար մենք պետք է վեբ սերվեր ստեղծենք Raspberry Pi- ի վրա: Վեբ սերվեր ստեղծելու շատ տարբեր եղանակներ կան, բայց հաշվի առնելով, որ ես ի վերջո ցանկանում եմ Python սցենար գործարկել, որոշեցի օգտագործել Python's Flask սերվերը:

Pi- ում նախապես տեղադրված են Flask գրադարանները, ուստի այն ամենը, ինչ մեզ անհրաժեշտ է, սկսել է գրել թեստային սցենար.

nano flask_test.py

Եվ դրանում եկեք ավելացնենք մի շարք կոդեր, որոնք սպասարկում են պարզ վեբ էջ:

#! flask/bin/python #ՆԵՐՄՈՆԵԼ ՖԼԱՍԻ ԳՐԱԴԱՐԱՆՆԵՐԸ տափաշիշից ներմուծում Ֆլասկա, պահանջեք #Ստեղծել ՖԼԱՍԻ ՓՈՓՈՓԱԿԱՆ հավելված = Ֆլասկա (_ անուն_) #Ստեղծեք «INDEX» ԷAGE @app.route ('/') def index (): return 'Ձեր Flask սերվերն աշխատում է:' #ՎԱՐԿԵԼ PROՐԱԳԻՐԸ, եթե _name_ == '_main_': app.run (վրիպազերծում = True, host = '0.0.0.0')

Այժմ պարզապես պահեք ծրագիրը և գործարկեք այն ՝ օգտագործելով այս հրամանը.

sudo python3 flask_test.py

Հրամանի պատասխանից կտեսնեք, որ կանխադրված նավահանգիստը, որի վրա աշխատում է Flask- ը, 5000 նավահանգիստն է: Այսպիսով, վեբ դիտարկիչում, եթե մուտքագրեք ձեր Pi- ի IP հասցեն ՝ 5000, ապա պետք է տեսնեք «Your Flask server is working» տեքստը:

Մենք ունենք մեր փորձնական Python ծածկագիրը, որը տպվում է մեր ստացողի տպիչին, և մենք ունենք մեր փորձարկման Flask սերվերը: Հետևաբար, մենք պետք է դրանք միավորենք և միացնենք մի կոդ, որը տվյալները վերցնում է մեր Webhook հավելվածից: Եկեք ստեղծենք նոր Python ֆայլ.

nano iot_print_server.py

Եվ դրա ներսում ավելացրեք հետևյալ ծածկագիրը.

#! flask/bin/python #IMPORT THE FLASK AND PRINTER GIBRARIES from flask import Flask, request from escpos.printer import Usb #ASSIGN VARIABLES FOR THE PRINTER and FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CRE 'INDEX' PAGE @app.route ('/') def index (): return 'Your Flask server is working!' #ՍՏԵԵԼ «ԷAGE», ԱՆՎԱՆՈ "Մ «ISTԱՆԿ» ԱԼԵՔՍԱ ԽԱՆՈԹՆԵՐԻ ISTԱՆԿԸ ՏԵՍԵԼՈ app @app.route ('/list') def list (): #CAPTURE "GET" Data from IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (բովանդակություն) #ՏԱՐԱԵԼ ՏՎՅԱԼՆԵՐԸ ՄԻPԱՎՈՐ ԳՈՅՆԵՐՈ strՄ str_split = str_content.splitlines () #EPԱՆԿԱԱ W ԽՈՍՔԵՐ ԿՈՄՄԱՅՈՄ ԵՎ ԼՐԱԵԼ ՆՈՐ LԱՆԿՈՄ նոր ցուցակ = բառի համար str_split: word = word.split (',') newlist.extend (word) #ՌԵՄՈՎ ՁԵՎԱՎՈՐՄԱՆ նշաններ rmv_marks = [s.strip ("b" "for s in newlist] #PRINT HEADER #print (" Shopping List / n ") p.text (" Shopping List: / n ") #ԳՆԱՀԱՏԵԼ ԵՎ INԱՆԿՈԹՅԱՆ ACԱՆԿԱԱ IT ՆՅՈԹ r = 1 x- ի համար rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN ԱՐԴՅՈՆՔԵՐ վերադարձնել 'x' #ՎԱՐUNԵԼ ՐԱԳԻՐԸ, եթե _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Կարող եք այն գործարկել ՝ տեսնելու համար, թե արդյոք այն տալիս է որևէ սխալ, բայց այն դեռ չի աշխատի մեր վեբհուկի հետ, քանի որ այս պահի դրությամբ սերվերը գործում է միայն տեղական մակարդակում: Վեբհուքին միանալու արտաքին URL դեռ չկա: Մենք կարող ենք նավահանգստի վերահասցեավորում տեղադրել մեր երթուղղիչի վրա և պարզապես օգտագործել մեր արտաքին IP հասցեն, բայց դա իրականում այնքան էլ անվտանգ չէ: Որպես այլընտրանք, ես որոշում եմ գնալ NGROK- ի հետ:

Քայլ 5: Արտաքին մուտքի կարգավորում Ngrok- ով

Արտաքին մուտքի կարգավորում Ngrok- ով
Արտաքին մուտքի կարգավորում Ngrok- ով
Արտաքին մուտքի կարգավորում Ngrok- ով
Արտաքին մուտքի կարգավորում Ngrok- ով

Ngrok- ը ապահով կապ է ստեղծում ձեր ցանցի հետ ՝ առանց արտաքին IP- ի բացահայտման կամ նավահանգստի փոխանցման հետ կապված խառնաշփոթի: Անվճար հաշվին գրանցվելուց հետո այն տալիս է ձեզ լիազորագրի նշան: Այնուհետև ձեր Raspberry Pi- ի վրա կարող եք ներբեռնել այն, բացել այն, միացնել ձեր հեղինակային նշանը, այնուհետև այն գործարկել 5000 նավահանգստում.

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [տեղադրեք ձեր հեղինակային նշանը այստեղ]./ngrok http 5000

*** ԿԱՐԵՎՈՐ *** Ngrok- ի անվճար տարբերակը ձեզ չի տալիս ստատիկ հասցե, այնպես որ ամեն անգամ, երբ վերագործարկեք Ngrok- ը, այն ձեզ կտա այլ հասցե: Եթե ցանկանում եք ստատիկ հասցե, որպեսզի ստիպված չլինեք շարունակել վերափոխել ձեր Webhook- ը, ապա պետք է վճարեք արդիականացված հաշվի համար:

Ngrok- ի անվճար այլընտրանքը, որն առաջարկում է ստատիկ IP- ներ, կոչվում է «Serveo» ՝ www.serveo.net կայքում

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

Ստացված էկրանին այն տալիս է ձեզ փոխանցման հասցե (https://random-string.ngrok.io), որը կարող եք օգտագործել մեր Webhook հավելվածում: Այսպիսով, վերադառնալով «Եթե սա այն է», URL դաշտում մուտքագրեք ձեր Ngrok վերահասցեավորման հասցեն և մատնանշեք այն մեր ցուցասրահի «ցուցակ» էջին: Այն պետք է նման տեսք ունենա

random_string.ngrok.io/list

Այնուհետև շարունակեք և պահպանեք փոփոխությունները:

Այն փորձարկելու համար շարունակեք Ngrok- ը գործարկել, բացեք նոր տերմինալ և գործարկեք մեր պիթոնի սցենարը: Երկու պարագաների գործադրմամբ էլ հարցրեք Ալեքսային, թե ինչ կա ձեր գնումների ցուցակում: Մեկ -երկու րոպե անց այն պետք է տպի արդյունքները: Եթե ցանկանում եք, որ այն անմիջապես տպվի, պարզապես գնացեք ձեր Applet IFTTT- ում և կտտացրեք «Ստուգել հիմա»: Եթե ամեն ինչ լավ է ընթանում, անդորրագրի տպիչը պետք է տպի այն, ինչ կա ձեր գնումների ցուցակում: Կոդի վերջնական բիթը, որը մենք պետք է ավելացնենք, ամեն անգամ, երբ Pi- ն գործարկում է, ինքնաբերաբար սկսում ենք տաքացնել և մեր ֆոլսկ սերվերը: Մենք կարող ենք դա հեշտությամբ անել ՝ դարձնելով մեր Python սցենարը գործարկելի.

chmod +x iot_print_server.py

Այնուհետև մենք կարող ենք խմբագրել մեր /etc/rc.local ֆայլը, որպեսզի այն ունենա հետևյալ տեսքը.

## Լռելյայն այս սցենարը ոչինչ չի անում: # Տպեք IP հասցեն _IP = $ (hostname -I) || ճիշտ է, եթե ["$ _IP"]; ապա printf "Իմ IP հասցեն է %s / n" "$ _IP" fi #autostart ngrok և մատնանշեք այն ձեր հեղինակային ֆայլին:/home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart the printer python script sudo python3 /home/pi/iot_receipt_printer.py և ելք 0

Քայլ 6. Pi- ի ավելացում տպիչին

Pi- ի ավելացում տպիչին
Pi- ի ավելացում տպիչին
Pi- ի ավելացում տպիչին
Pi- ի ավելացում տպիչին
Pi- ի ավելացում տպիչին
Pi- ի ավելացում տպիչին
Pi- ի ավելացում տպիչին
Pi- ի ավելացում տպիչին

Իմ մոտ եղած անդորրագրի տպիչը պատյանի ներսում շատ դատարկ տարածք ունի: Եվ քանի որ Raspberry Pi Zero- ն այդքան փոքր էր, ես մտածեցի, որ լավ կլինի պարզապես այն թաքցնել անդորրագրի տպիչի մեջ, որպեսզի այն նման լինի մեկ սարքի: Միակ խնդիրն այն է, որ Receipt տպիչն աշխատում է 12 վ -ով, իսկ Pi- ն ՝ 5 վ -ով: Այսպիսով, եթե մենք ցանկանում ենք, որ երկուսն էլ սնուցի միայն մեկ հոսանքի մալուխ, մենք ստիպված կլինենք անջատել այդ 12 վ լարման սնուցումը մինչև 5 վ:

Օգտագործելով 7805 լարման կարգավորիչ, 1uf կոնդենսատոր և 10uf կոնդենսատոր, ես կարողացա ստեղծել պարզ 5 վ կարգավորիչ, որը միացրեցի ստացողի տպիչի տրամաբանական տախտակին: Ես ամրացրեցի «-» մետաղալարը ընդհանուր գետնին, այնուհետև «+» մետաղալարը միացրեցի հոսանքի անջատիչի «միացված» կողմը, որպեսզի տպիչը միացնել-անջատելիս Pi- ն միանա և անջատվի: Օգտագործելով բազմաչափ, ես փորձարկեցի ՝ հաստատելու համար, որ ելքը անվտանգ է Pi- ի համար: Հետո միացա միկրո-USB մալուխի վրա և միացրեցի այն Pi- ին: Մալուխը տպիչին միացնելուց և անջատիչը շրջելուց հետո և տպիչը, և Pi- ն միացված են:

Վերջապես, ես անցք բացեցի ՝ USB մալուխը Pi- ից տպիչին միացնելու համար: Ես գտա 5V կարգավորիչը և Pi- ն տպիչի պատյանում տեղադրելու տեղ, այնուհետև ամեն ինչ նորից հավաքեցի: Այսպիսով, այժմ տպիչն ունի նաև սեփական վեբ սերվեր:

Քայլ 7: Դա ավելի առաջ տանելը

Հետագա տանել
Հետագա տանել

Եթե կարողացաք դիտել «Եթե սա ուրեմն այն» -ը, հավանաբար նկատեցիք, որ այն ունի մի շարք տարբեր վեբ ծառայություններ, որոնց կարելի է միանալ: Այսպիսով, եթե դուք չունեք Alexa կամ մտադիր չեք այն օգտագործել, կարող եք այս նախագիծը տպել գրեթե ամեն ինչից, ինչպիսիք են Facebook- ը, Twitter- ը, Gmail- ը, Google Home- ը, Evernote- ը, Tumblr- ը, Flickr- ը, Wordpress- ը, և այլն: Իմ Github էջում կարող եք գտնել Թվիթերը տպելու իմ կոդը: Հիմա գնացեք և տեսեք, թե ինչ կարող եք գալ:

IoT մարտահրավեր
IoT մարտահրավեր
IoT մարտահրավեր
IoT մարտահրավեր

Առաջին մրցանակ IoT մարտահրավերում

Խորհուրդ ենք տալիս: