Obsah:

Tlačiareň Alexa - Upcyklovaná tlačiareň účteniek: 7 krokov (s obrázkami)
Tlačiareň Alexa - Upcyklovaná tlačiareň účteniek: 7 krokov (s obrázkami)

Video: Tlačiareň Alexa - Upcyklovaná tlačiareň účteniek: 7 krokov (s obrázkami)

Video: Tlačiareň Alexa - Upcyklovaná tlačiareň účteniek: 7 krokov (s obrázkami)
Video: Tie-Fighter Alexa Time-lapse 2024, Jún
Anonim
Image
Image
Tlačiareň Alexa | Upcyklovaná tlačiareň účteniek
Tlačiareň Alexa | Upcyklovaná tlačiareň účteniek

Som fanúšikom recyklácie starých technológií a ich opätovného použitia. Pred nejakým časom som získal starú, lacnú termálnu tlačiareň účteniek a chcel som užitočný spôsob, ako ju znova použiť. Potom som cez prázdniny dostal darček Amazon Echo Dot a jednou z funkcií, ktoré som najčastejšie používal, bolo pridávanie potravín do nákupného zoznamu. A tak som si povedal, že by bolo skvelé skombinovať tieto dve a použiť tlačiareň účteniek ako tlačiareň IOT pre Alexa (alebo Google Home alebo Siri atď.). Pozrime sa, čo bude potrebné na to, aby sa táto myšlienka stala skutočnosťou.

Zásoby

Tu sú diely, ktoré používam pre tento projekt:

  1. Lacná generická termálna tlačiareň účteniek (musí podporovať ESC-POS)
  2. Zariadenie Amazon Alexa (pravdepodobne budú fungovať aj ďalšie zariadenia „domáceho asistenta“)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v regulátor
  5. 10μf kondenzátor
  6. 1μf kondenzátor

Ďalšie veci, ktoré pre tento projekt používam, sú:

  1. Ak toto, potom to (IFTTT.com)
  2. Spájkovacie zariadenie

Krok 1: Nastavenie Raspberry Pi Zero W

Nastavenie Raspberry Pi Zero W
Nastavenie Raspberry Pi Zero W
Nastavenie Raspberry Pi Zero W
Nastavenie Raspberry Pi Zero W
Nastavenie Raspberry Pi Zero W
Nastavenie Raspberry Pi Zero W

Prvým krokom je opätovné vytlačenie starej tlačiarne účteniek. Ako ovládač som sa rozhodol použiť Raspberry Pi Zero W, pretože je to nízka cena a malé rozmery. V skutočnosti je dostatočne malý na to, aby sa zmestil do samotného kufríka tlačiarne, takže nie je potrebné žiadne externé pripojenie! Pi Zero W má tiež vstavané Wifi, takže všetko je v podstate integrované do malých rozmerov.

Aby sme Pi uviedli do prevádzky, musíme si stiahnuť Raspbian OS a napáliť ho na kartu microSD pomocou programu, akým je napríklad Etcher. Vložte ho do Pi spolu s káblom HDMI, klávesnicou, myšou a potom napájaním.

Keď sa Pi spustí a budete na rozhraní pracovnej plochy, môžete sa pripojiť k bezdrôtovej sieti kliknutím na ikonu bezdrôtového pripojenia v pravom hornom rohu a výberom názvu bezdrôtového pripojenia. Potom ak pravým tlačidlom myši kliknete na rovnakú ikonu bezdrôtového pripojenia, môžete prejsť na nastavenia siete a nastaviť statickú adresu IP, aby sme sa k nej mohli ľahko pripojiť prostredníctvom siete. Nakoniec chcete kliknúť na hlavnú ponuku, vybrať „Editor konfigurácie Raspbian“a na karte „Rozhrania“skontrolujte, či je povolené SSH. Potom ho uložte a reštartujte počítač Pi.

Krok 2: Tlač z Pi

Tlač z Pi
Tlač z Pi
Tlač z Pi
Tlač z Pi

Akonáhle je Raspbery Pi reštartovaný, mal by byť pripojený k vašej bezdrôtovej sieti so statickou IP a so zapnutým SSH. Teraz by sme sa teda k nemu mali mať možnosť vzdialene pripojiť z akéhokoľvek iného počítača. Na to budete potrebovať klienta SSH. V prípade systému Windows je dobrým klientom tmel. Môžete sa k nemu pripojiť pomocou statickej IP adresy Pi, ktorú sme nastavili predtým. Potom sa môžete prihlásiť pomocou „pi“ako používateľského mena a „raspberry“ako hesla.

Po úspešnom prihlásení by sme teraz mali byť na rozhraní terminálu Pi. Tu môžeme zadať príkazy, ktoré sa budú vykonávať na Raspberry Pi. Jednou z prvých vecí, ktoré by sme chceli urobiť, je napríklad zaistiť, aby bol softvér na zariadení Pi aktuálny. Do terminálu teda môžeme napísať:

sudo apt-get aktualizácia

Tento príkaz aktualizuje archívy softvéru na zariadení Pi. Ďalej môžeme nainštalovať softvér tlačiarne ESC-POS a požadované knižnice.

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

Keď to bude hotové, teraz môžeme tlačiareň pripojiť k portu Micro-USB Pi (pomocou adaptéra) a zapnúť. Potom v našom termináli môžeme vytvoriť malý pythonový skript

nano hello_world.py

A do neho môžeme pridať tento kód pythonu

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

Ukončite ho (CTRL-X), uložte ho (CTRL-Y) a spustením ho otestujte

python3 hello_world.py

Krok 3: Pripojenie k internetu vecí (časť 1)

Pripojenie k internetu vecí (časť 1)
Pripojenie k internetu vecí (časť 1)
Pripojenie k internetu vecí (časť 1)
Pripojenie k internetu vecí (časť 1)
Pripojenie k internetu vecí (časť 1)
Pripojenie k internetu vecí (časť 1)
Pripojenie k internetu vecí (časť 1)
Pripojenie k internetu vecí (časť 1)

Na čo by bola tlačiareň bez niečoho, čo by bolo možné vytlačiť? Chcel som povoliť funkciu na tlač z rôznych internetových služieb, napríklad z Alexa. Ako to teda môžem dosiahnuť? Jednou z možností je vybrať si konkrétnu internetovú službu, sledovať ich dokumentáciu API a napísať aplikáciu na základe ich API. Rozhodol som sa však ísť lenivou cestou …

Existuje skvelá webová stránka „If This Then That“, ktorá spúšťa akcie pre rôzne internetové služby (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter atď.) Na základe súboru kritérií. Napríklad „ak“uverejním príspevok na Facebooku (toto), „Potom“mi pošlite e-mail (ten).

V prvej polovici tohto roka som si teda zaregistroval bezplatný účet a môžete začať vytvárať nový „applet“pre rôzne služby, ktoré chcete spustiť. „Táto“časť môjho apletu bude Alexa. Na výber je veľa spúšťačov Alexa, ale ja vyberiem ten, ktorý hovorí „Opýtajte sa, čo je vo vašom nákupnom zozname“. A v konečnom dôsledku chceme, aby to spustilo skript Python na Raspberry Pi, takže pre časť „Toho“skriptu chceme vybrať Webhooks.

Do možnosti Webhooks môžeme pridať adresu URL, ktorá ukazuje na naše Pi, ku ktorej sa ešte vrátime. Pole Metóda môžeme nechať ako „Získať“a pre typ obsahu vyberte „Obyčajný text“. V poli Telo kliknite na „Pridať prísadu“a vyberte „Celý zoznam“. Tým sa odošle celý nákupný zoznam ako požiadavka na získanie.

Krok 4: Pripojenie k internetu vecí (časť 2)

Pripojenie k internetu vecí (časť 2)
Pripojenie k internetu vecí (časť 2)
Pripojenie k internetu vecí (časť 2)
Pripojenie k internetu vecí (časť 2)

Predchádzajúci krok sa stará o časť „Internet“, takže teraz môžete pracovať na časti „veci“pomocou Raspberry Pi. Aby sme mohli komunikovať s apletom „If This Then That“webhooks, musíme na Raspberry Pi nastaviť webový server. Existuje mnoho rôznych spôsobov nastavenia webového servera, ale vzhľadom na to, že v konečnom dôsledku chcem spustiť skript Python, rozhodol som sa použiť server Python Flask.

Pi má predinštalované všetky knižnice Flask, takže musíme začať písať testovací skript:

nano flask_test.py

A do nej pridáme nejaký kód, ktorý slúži jednoduchej webovej stránke.

#! flask/bin/python #IMPORTUJTE FLASKOVÉ KNIŽNICE z banky importujúcej banku, požiadavka #VYTVORTE VARIABILNÚ FLASK aplikáciu = Flask (_ name_) #VYTVORTE STRÁNKU „INDEX“@app.route ('/') def index (): return 'Váš server na fľaškách funguje!' #RUN PROGRAM if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Teraz stačí uložiť program a spustiť ho pomocou tohto príkazu:

sudo python3 flask_test.py

V odpovedi príkazu uvidíte, že predvolený port, na ktorom Flask beží, je port 5000. Ak teda vo webovom prehliadači zadáte adresu IP svojho zariadenia Pi: 5000, mal by sa vám zobraziť text „Váš server Flask funguje!“

Máme testovací kód Python z minulosti, ktorý sa tlačí na našu tlačiareň účteniek, a máme server testovacej banky. Ďalej ich teda musíme skombinovať a začleniť nejaký kód, ktorý sťahuje údaje z nášho apletu Webhook. Vytvorme nový súbor Python:

nano iot_print_server.py

A do neho pridajte nasledujúci kód:

#! flask/bin/python #IMPORT FLASKOVÝCH A TLAČIARNICKÝCH KNIŽNICÍ z bankového importu Banka, požiadavka od escpos.printer import USB #ASIGN VARIABILY PRE TLAČIAREŇ A FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE STRÁNKA „INDEX“@app.route ('/') def index (): return 'Váš server Flask funguje!' #CREATE "PAGE" CALLED "LIST" FOR PRINTING ALEXA SHOPPING LIST @app.route ('/list') def list (): #CAPTURE "GET" DATA FROM IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (obsah) #ROZDELIŤ ÚDAJE DO ODDELENÝCH RIADKOV str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO a NEW LIST newlist = for word in str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Shopping List / n") p.text ("Shopping List: / n ") #ENUMERUJTE A VYTLAČTE KAŽDÚ POLOŽKU v ZOZNAME r = 1 pre x v rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #VÝSLEDKY NÁVRATU vrátiť 'x' #RUN PROGRAM, ak _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Môžete to spustiť, aby ste zistili, či vracia chyby, ale s naším webhookom to zatiaľ nebude fungovať, pretože server momentálne beží iba lokálne. Webhook, na ktorý by sa dalo pripojiť, zatiaľ neexistuje žiadna externá adresa URL. Na našom smerovači by sme mohli nastaviť presmerovanie portov a použiť iba externú IP adresu, ale to nie je príliš bezpečné. Ako alternatívu som sa rozhodol ísť s NGROK.

Krok 5: Nastavenie externého prístupu pomocou programu Ngrok

Nastavenie externého prístupu pomocou programu Ngrok
Nastavenie externého prístupu pomocou programu Ngrok
Nastavenie externého prístupu pomocou programu Ngrok
Nastavenie externého prístupu pomocou programu Ngrok

Ngrok nastavuje zabezpečené pripojenie k vašej sieti bez toho, aby ste museli vystavovať svoju externú IP adresu alebo neporiadok s presmerovaním portov. Po registrácii bezplatného účtu vám poskytne autorizačný token. Potom si ho na svojom Raspberry Pi môžete stiahnuť, rozbaliť, pripojiť svoj autorizačný token a potom ho spustiť na porte 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… rozbaliť ngrok-stable-linux-arm./ngrok authtoken [sem vložte svoj autorizačný token]./ngrok http 5000

*** DÔLEŽITÉ *** Bezplatná verzia programu Ngrok vám neposkytne statickú adresu, takže pri každom opätovnom spustení programu Ngrok vám poskytne inú adresu. Ak chcete statickú adresu, aby ste nemuseli neustále upravovať svoj webhook, budete musieť za aktualizovaný účet zaplatiť.

Bezplatná alternatíva k Ngrok, ktorá ponúka statické adresy IP, sa na www.serveo.net nazýva „Serveo“

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

Na výslednej obrazovke vám poskytne adresu na presmerovanie (https://random-string.ngrok.io), ktorú môžeme použiť v našom aplete Webhook. Vráťme sa teda k časti „If This Then That“, do poľa pre URL zadajte svoju adresu na presmerovanie Ngrok a presmerujte ju na stránku „zoznam“na našom serveri Flask. Malo by to vyzerať asi takto

random_string.ngrok.io/list

Potom pokračujte a uložte zmeny.

Ak to chcete vyskúšať, nechajte Ngrok spustený, otvorte nový terminál a spustite náš skript python. Keď sú obe položky spustené, opýtajte sa Alexa, čo je vo vašom nákupnom zozname. Po minúte alebo dvoch by to malo vytlačiť výsledky. Ak chcete, aby sa ihneď vytlačil, choďte na IFTTT do svojho apletu a kliknite na „Skontrolovať teraz“. Ak všetko pôjde dobre, tlačiareň účteniek by mala vytlačiť, čo je vo vašom nákupnom zozname! Posledný bit kódu, ktorý musíme pridať, je spôsob, ako automaticky spustiť ngrok a náš bankový server pri každom spustení Pi. Môžeme to ľahko urobiť tak, že spustíme náš skript Python:

chmod +x iot_print_server.py

Potom môžeme náš súbor /etc/rc.local upraviť tak, aby vyzeral takto:

## Štandardne tento skript nerobí nič. # Vytlačte IP adresu _IP = $ (názov hostiteľa -I) || true if ["$ _IP"]; potom vytlačte „Moja IP adresa je %s / n“„$ _IP“fi #autostart ngrok a nasmerujte ju do svojho súboru./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart tlačiareň skript python sudo python3 /home/pi/iot_receipt_printer.py & exit 0

Krok 6: Pridanie čísla Pi do tlačiarne

Pridanie čísla Pi do tlačiarne
Pridanie čísla Pi do tlačiarne
Pridanie čísla Pi do tlačiarne
Pridanie čísla Pi do tlačiarne
Pridanie čísla Pi do tlačiarne
Pridanie čísla Pi do tlačiarne
Pridanie čísla Pi do tlačiarne
Pridanie čísla Pi do tlačiarne

Tlačiareň účteniek, ktorú mám, má vo vnútri krytu veľa prázdneho miesta. A keďže je Raspberry Pi Zero tak malý, ako je, myslel som si, že by bolo skvelé ho skryť do tlačiarne účteniek, aby vyzeral ako jedno zariadenie. Jediným problémom je, že tlačiareň potvrdení funguje na 12 V a Pi na 5 V. Ak teda chceme napájať obidva iba jedným napájacím káblom, budeme musieť znížiť napájanie 12 V na 5 V.

Pomocou regulátora napätia 7805, kondenzátora 1uf a kondenzátora 10uf som dokázal vytvoriť jednoduchý 5v regulátor, ktorý som pripojil k logickej doske tlačiarne účteniek. Vodič „-“som spájkoval na spoločnú zem a potom som vodič „+“spájkoval na „zapnutú“stranu vypínača, aby sa Pi zapínal a vypínal pri zapnutí a vypnutí tlačiarne. Pomocou multimetra som testoval, aby som potvrdil, že výstup je pre Pi bezpečný. Potom som spájkoval na micro-USB kábli a pripojil ho k Pi. Po zapojení kábla do tlačiarne a prepnutí prepínača sa tlačiareň aj Pi zapli!

Nakoniec som vyvŕtal otvor na pripojenie kábla USB z Pi k tlačiarni. Našiel som miesto, kde vložím 5v regulátor a Pi do skrinky tlačiarne, a potom som dal všetko dohromady. Teraz má tlačiareň svoj vlastný samostatný webový server!

Krok 7: Posunutie ďalej

Posúvať to ďalej
Posúvať to ďalej

Ak ste sa mohli pozrieť na „If This Then That“, pravdepodobne ste si všimli, že ponúka mnoho rôznych webových služieb, ku ktorým sa môžete pripojiť. Ak teda nemáte Alexa, alebo ho nechcete používať, môžete pomocou tohto projektu tlačiť z čohokoľvek, napríklad z Facebooku, Twitteru, Gmailu, Google Home, Evernote, Tumblr, Flickr, Wordpress, atď. Môj kód na vytlačenie tweetov nájdete na mojej stránke Github. Teraz sa pozrite, čo môžete vymyslieť!

IoT výzva
IoT výzva
IoT výzva
IoT výzva

Prvá cena v súťaži IoT Challenge

Odporúča: