Мазмуну:

Alexa принтер - Upcycled квитанция принтери: 7 кадам (сүрөттөр менен)
Alexa принтер - Upcycled квитанция принтери: 7 кадам (сүрөттөр менен)

Video: Alexa принтер - Upcycled квитанция принтери: 7 кадам (сүрөттөр менен)

Video: Alexa принтер - Upcycled квитанция принтери: 7 кадам (сүрөттөр менен)
Video: Утилизируйте термобумагу для чеков! Зарегистрируйте квитанцию! 2024, Июнь
Anonim
Image
Image
Alexa принтер | Upcycled дүмүрчөк принтери
Alexa принтер | Upcycled дүмүрчөк принтери

Мен эски технологияны кайра иштетүүнүн жана аны кайра пайдалуу кылуунун күйөрманымын. Бир аз мурун, мен эски, арзан термикалык квитанция принтерин сатып алдым жана аны кайра максатка ылайыктуу жолун кааладым. Андан кийин, каникул учурунда мага Amazon Echo Dot белек кылышты жана мен эң көп колдонгон өзгөчөлүктөрдүн бири дүкөндөр тизмегиме азык -түлүктөрдү кошуу болду. Ошентип, экөөнү бириктирип, дүмүрчөк принтерин Alexa (же Google Home, же Siri ж.б.) үчүн IOT принтери катары колдонуу жакшы болот деп ойлодум. Келгиле, бул идеяны ишке ашыруу үчүн эмне кылуу керек экенин көрөлү.

Жабдуулар

Мына мен бул долбоор үчүн колдонгон бөлүктөр:

  1. Арзан жалпы термикалык квитанция принтери (ESC-POS колдоосу керек)
  2. Amazon Alexa Device (башка "үй жардамчысы" түзмөктөрү да иштеши мүмкүн)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v регулятору
  5. 10μf Capacitor
  6. 1μf Capacitor

Мен бул долбоор үчүн колдонгон башка нерселер:

  1. Эгерде бул ошондо (IFTTT.com)
  2. Soldering Equipment

1 -кадам: Raspberry Pi Zero W орнотуу

Raspberry Pi Zero W орнотуу
Raspberry Pi Zero W орнотуу
Raspberry Pi Zero W орнотуу
Raspberry Pi Zero W орнотуу
Raspberry Pi Zero W орнотуу
Raspberry Pi Zero W орнотуу

Биринчи кадам - эски дүмүрчөк принтерин кайра басып чыгаруу. Мен Raspberry Pi Zero Wди контролер катары колдонууну тандадым, анткени анын баасы арзан жана кичине. Бул чындыгында дүмүрчөктүн принтер корпусунун ичине батыш үчүн кичине, андыктан тышкы байланыштар жок! Pi Zero W ошондой эле Wifi -да курулган, андыктан бардыгы негизинен кичинекей өлчөмүнө интеграцияланган.

Pi'ни иштетүү үчүн биз Raspbian OSти жүктөп алып, Etcher сыяктуу программаны колдонуп microSD картасына өрттөшүбүз керек. Аны HDMI кабели, клавиатура, чычкан жана андан кийин кубат менен бирге Pi'ге салыңыз.

Pi жүктөлгөндө жана рабочий интерфейсинде болгондо, жогорку оң жактагы зымсыз сүрөтчөсүн чыкылдатып, зымсыз туташууңуздун атын тандоо менен зымсыз туташууңузга туташа аласыз. Эгерде сиз ошол эле зымсыз сүрөтчөнү оң бассаңыз, анда тармактын жөндөөлөрүнө өтүп, статикалык IP дарегин орнотсоңуз болот, биз ага тармак аркылуу оңой туташа алабыз. Акыр -аягы, сиз негизги менюну чыкылдатып, "Raspbian Configuration Editor" тандап, "Interfaces" өтмөгүнүн астынан SSH иштетилгенин текшериңиз. Андан кийин аны сактап, Piңизди өчүрүп күйгүзүңүз.

2 -кадам: Piден басып чыгаруу

Piден басып чыгаруу
Piден басып чыгаруу
Piден басып чыгаруу
Piден басып чыгаруу

Raspbery Pi кайра жүктөлгөндөн кийин, ал зымсыз тармагыңызга статикалык IP жана SSH иштетилген менен туташтырылышы керек. Эми биз ага башка компьютерден алыстан туташа алышыбыз керек. Бул үчүн сизге SSH кардары керек. Windows үчүн жакшы кардар Putty болуп саналат. Сиз буга биз орноткон Пи статикалык IP дарегин колдонуп туташа аласыз. Андан кийин сиз колдонуучунун аты катары "pi" жана сырсөз катары "малина" менен кире аласыз.

Ийгиликтүү кирүүдөн кийин, биз азыр Пинин терминалдык интерфейсинде болушубуз керек. Бул жерде биз Raspberry Piде аткарыла турган буйруктарды тере алабыз. Мисалы, биз эң биринчи кылгысы келген нерселердин бири - бул Пидеги программалык камсыздоонун жаңыртылгандыгын текшерүү. Ошентип, терминалда биз тере алабыз:

sudo apt-get update

Бул буйрук Piдеги программалык камсыздоо кампаларын жаңыртат. Андан кийин, биз ESC-POS принтер программасын жана керектүү китепканаларды орното алабыз.

sudo apt-get python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 орнотуу-pip sudo pip3 орнотуу python-escpos орнотуу

Муну менен биз азыр принтерди Pi'дин Micro-USB портуна туташтырып (адаптер аркылуу) жана күйгүзө алабыз. Анан биздин терминалда кичине питон скриптин түзө алабыз

nano hello_world.py

Жана биз бул питон кодун кошо алабыз

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

Андан чыгуу (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, ж. Мисалы, "эгерде" мен Фейсбукка пост жазсам (бул), "Анда" мага электрондук кат жөнөтөт (тигил).

Ошентип, мунун биринчи жарымында мен бекер эсепке жазылдым, сиз иштетүүнү каалаган ар кандай кызматтар үчүн жаңы "апплет" түзүүнү баштасаңыз болот. Менин апплетимдин "Бул" бөлүгү Alexa болот. Тандоо үчүн көптөгөн Alexa триггерлери бар, бирок мен "Соода тизмеңизде эмне бар экенин сураңыз" дегенди тандайм. Биз акыры анын Raspberry Piдеги Python скриптин иштетүүсүн каалайбыз, ошондуктан сценарийдин "тигил" бөлүгү үчүн биз Webhooksту тандап алгыбыз келет.

Webhooks тандоосунда, биз Piге багытталган URLди кошо алабыз, ага кийинчерээк кайрылабыз. Метод талаасын "Get" деп калтырып, мазмундун түрү үчүн "Жөнөкөй текстти" тандап алабыз. Дене талаасы үчүн "Ингредиентти кошуу" баскычын чыкылдатып, "Бүтүндөй тизме" тандаңыз. Бул бардык сатып алуулар тизмесин Get сурамы катары жөнөтөт.

4 -кадам: нерселердин Интернетине туташуу (2 -бөлүк)

Заттардын Интернетине туташуу (2 -бөлүк)
Заттардын Интернетине туташуу (2 -бөлүк)
Заттардын Интернетине туташуу (2 -бөлүк)
Заттардын Интернетине туташуу (2 -бөлүк)

Мурунку кадам "Интернет" бөлүгүнө кам көрөт, андыктан азыр Raspberry Pi менен "нерселер" бөлүгүндө иштөөгө уруксат бериңиз. "If This That That" webhooks апплети менен байланышуу үчүн, Raspberry Piде веб -серверди орнотушубуз керек. Веб -серверди орнотуунун ар кандай жолдору бар, бирок мен акыры Python скриптин иштетүүнү каалап жаткандыгымды эске алып, Python Flask серверин колдонууну чечтим.

Pi бардык Flask китепканаларын алдын ала орноткон, андыктан тесттик сценарийди жазууну баштоо керек:

nano flask_test.py

Жана анда жөнөкөй веб -баракчаны тейлеген кодду кошолу.

#! flask/bin/python #Flask CIBRARIES'ти колбадан импорттоо Колбасынан импорттоо, #FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): кайтуу 'Сиздин колбаңыздын сервери иштеп жатат!' #ПРОГРАММАНЫ ИШТЕТ, эгер _name_ == '_main_': app.run (мүчүлүштүктөрдү чыгаруу = Чын, хост = '0.0.0.0')

Эми программаны сактап, ушул буйрукту колдонуп иштетиңиз:

sudo python3 flask_test.py

Сиз буйруктун жообу менен Flask иштеген демейки порт 5000 порту экенин көрөсүз. Ошентип, веб -браузерде, эгер сиз Пиңиздин IP дарегин терсеңиз: 5000, сиз "Сиздин колбаңыздагы сервер иштеп жатат!" Деген текстти көрүшүңүз керек.

Бизде мурдагы Python коду бар, бул биздин квитанция принтерибизде басылып чыгат жана бизде Flask тесттик серверибиз бар. Ошентип, кийинкиде биз аларды айкалыштырып, Webhook апплетибизден маалыматтарды тарткан кээ бир коддорду киргизишибиз керек. Келгиле, жаңы Python файлын түзөлү:

нано iot_print_server.py

Жана анын ичинде төмөнкү кодду кошуңуз:

#! flask/bin/python #Колбаны импорттоо Колбадан флэш жана принтер китепканаларын импорттоо, escpos.printerден импорт Usb #ПРИНТЕР ЖАНА ФЛАСКА ӨЗГӨРҮЛҮШТӨРҮ p = Usb (0x0416, 0x5011) app = Flask (_ name_) #C 'INDEX' БАРАКЧАСЫ @app.route ('/') def index (): return 'Flask server is working!' #БЕТТИ АЛЕКСА САТУУ ТИЗМЕСИН ЧЫГАРУУ ҮЧҮН "ТИЗМЕ" ТҮЗҮҢҮЗ @app.route ('/list') def list (): #CAPTURE "Get" DATA from IFTTT WEBOOKS content = request.get_data () #RAW DATA TO CONVERT RAW DATA TO STRING str_content = str (мазмунун) #БӨЛҮНҮШТҮН БӨЛҮНДӨРҮН БӨЛҮҢҮЗ str_split = str_content.splitlines () #ҮЙРӨТМӨЛҮК ЖАНА ЖАҢЫ ТИЗМЕГЕ КОШУУ ҮЧҮН ЖЫЛДАМДУУ СӨЗДӨР newlist = str_split: word = word.split (',') newlist.extend (сөз) #FORMATTING BARKSти алып салуу rmv_marks = [s.strip ("b '") for s new list] #PRINT HEADER #print ("Shopping List / n") p.text ("Shopping List: / n ") #ТИЗМЕДЕГИ АР БИР ИДЕНДИ ЧЫГАРЫП ЧЫГАРЫҢЫЗ r = 1 rmv_marks үчүн x үчүн: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #КАЙТАРУУ ЖЫЙЫНТЫКТАРЫ 'x' #ПРОГРАММАСЫН ИШТЕТ, эгер _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Сиз аны кандайдыр бир каталарды кайтарып береби же жокпу билиш үчүн иштете аласыз, бирок ал азырынча биздин веб -хук менен иштебейт, анткени азырынча сервер жергиликтүү деңгээлде гана иштеп жатат. Азырынча туташуу үчүн webhookтун тышкы 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… ungip ngrok-stabil-linux-arm.

*** МААНИЛҮҮ *** Ngrokтун бекер версиясы сизге статикалык даректи бербейт, андыктан Ngrokту кайра иштеткен сайын, ал сизге башка даректи берет. Эгерде сиз Webhookту кайра оңдой бербөө үчүн статикалык даректи кааласаңыз, анда жакшыртылган эсеп үчүн төлөшүңүз керек болот.

Статикалык IP сунуштаган Ngrokтун акысыз альтернативасы "Serveo" деп аталат www.serveo.net

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

Алынган экранда ал сизге Webhook апплетибизде колдоно турган багыттоочу даректи берет (https://random-string.ngrok.io). Ошентип, "Эгерде бул анда" дегенге кайтып барсаңыз, URL талаасына Ngrok багыттоочу дарегиңизди киргизиңиз жана аны Flask серверибиздеги "тизме" барагына көрсөтүңүз. Бул окшош нерсеге окшош болушу керек

random_string.ngrok.io/list

Андан кийин улантыңыз жана өзгөртүүлөрдү сактаңыз.

Муну текшерүү үчүн, Ngrokтун иштешин улантыңыз, жаңы терминалды ачыңыз жана биздин питон скриптин иштетиңиз. Эки нерсе тең иштеп жатканда, Alexaдан соода тизмеңизде эмне бар экенин сураңыз. Бир -эки мүнөттөн кийин ал жыйынтыктарды басып чыгарышы керек. Эгерде сиз аны дароо басып чыгарууну кааласаңыз, IFTTTдеги Апплетиңизге барып, "Азыр текшерүү" баскычын басыңыз. Эгерде баары ойдогудай болсо, дүмүрчөк принтери сиздин соода тизмеңиздегини басып чыгарышы керек! Биз кошуубуз керек болгон коддун акыркы бөлүгү ngrokту жана флэш серверибизди Pi башталган сайын автоматтык түрдө баштоонун жолу. Биз муну Python скриптибизди аткарылуучу кылып оңой эле жасай алабыз:

chmod +x iot_print_server.py

Андан кийин биз /etc/rc.local файлды түзөтө алабыз, ал мындай көрүнөт:

## Демейки боюнча бул скрипт эч нерсе кылбайт. # IP адресин басып чыгарыңыз _IP = $ (хосттун аты -I) || эгер туура болсо "" $ _IP "]; анда printf "Менин IP дарегим %s / n" "$ _IP" fi #autostart ngrok жана аны автордук файлыңызга көрсөтүңүз./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #принтердин python скриптин автоматтык түрдө баштоо sudo python3 /home/pi/iot_receipt_printer.py & чыгуу 0

6 -кадам: Принтерге Pi кошуу

Принтерге Pi кошуу
Принтерге Pi кошуу
Принтерге Pi кошуу
Принтерге Pi кошуу
Принтерге Pi кошуу
Принтерге Pi кошуу
Принтерге Pi кошуу
Принтерге Pi кошуу

Мендеги квитанция принтеринде корпустун ичинде бош орун көп. Жана Raspberry Pi Zero кичинекей болгондуктан, мен аны бир дүмүрчөк принтерине катып койсом сонун болмок деп ойлодум, ал бир эле түзмөккө окшош. Жалгыз көйгөй - бул дүмүрчөктүн принтери 12v жана Pi 5v менен иштейт. Ошентип, эгерде биз экөөнө тең бир гана кубат кабелин кааласак, анда биз 12в кубаттуулукту 5v чейин өчүрүшүбүз керек.

7805 чыңалуу жөндөгүчүн, 1 уф конденсаторун жана 10 уф конденсаторун колдонуп, мен квитанция принтеринин логикалык тактасына туташкан 5V жөндөгүчтү түзө алдым. Мен "-" зымын жалпы жерге ширеттим, анан "+" зымын кубат которгучтун "жактагы" тарабына коштум, ошондо принтер күйүп-өчкөндө Pi күйүп, өчүп калат. Мультиметрди колдонуп, мен Pi үчүн коопсуз экенин тастыктоо үчүн тестирледим. Анан мен микро-USB кабелине ширетип, аны Пи-ге туташтырдым. Кабелди принтерге туташтырып, которгучту которгондон кийин, принтер да, Pi да күйгүзүлдү!

Акыры, мен USB кабелин Piден принтерге туташтыруу үчүн тешик жасадым. Мен принтер корпусунун ичине 5v жөндөгүчтү жана Пиди коё турган жер таптым, анан баарын кайра бириктирдим. Ошентип, азыр принтердин өзүнүн жеке веб -сервери бар!

7 -кадам: Аны андан ары алуу

Аны андан ары алуу
Аны андан ары алуу

Эгерде сиз "Эгерде бул ошондо" дегенди карай алсаңыз, анда туташуу үчүн көптөгөн түрдүү веб кызматтары бар экенин байкаган чыгарсыз. Эгерде сизде Alexa жок болсо, же аны колдонуунун кажети жок болсо, анда бул долбоорду Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress сыяктуу дээрлик бардык нерселерден басып чыгаруу үчүн колдонсоңуз болот. ж.б.. Менин Github баракчамдан Твиттерди басып чыгаруу үчүн менин кодумду таба аласыз. Эми барып, эмнени ойлоп таба аларыңызды көрүңүз!

IoT Challenge
IoT Challenge
IoT Challenge
IoT Challenge

IoT чакырыгынын биринчи сыйлыгы

Сунушталууда: