Sisällysluettelo:

Alexa -tulostin - Uudistettu kuittitulostin: 7 vaihetta (kuvien kanssa)
Alexa -tulostin - Uudistettu kuittitulostin: 7 vaihetta (kuvien kanssa)

Video: Alexa -tulostin - Uudistettu kuittitulostin: 7 vaihetta (kuvien kanssa)

Video: Alexa -tulostin - Uudistettu kuittitulostin: 7 vaihetta (kuvien kanssa)
Video: Alok & Ava Max – Car Keys (Ayla) Official Video 2024, Marraskuu
Anonim
Image
Image
Alexa -tulostin | Uusittu kuittitulostin
Alexa -tulostin | Uusittu kuittitulostin

Kannatan vanhan tekniikan kierrättämistä ja sen hyödyntämistä uudelleen. Jonkin aikaa sitten olin hankkinut vanhan, halvan lämpökupitulostimen ja halusin hyödyllisen tavan käyttää sitä uudelleen. Sitten, jouluna, minulle annettiin lahjaksi Amazon Echo Dot, ja yksi ominaisuuksista, joita käytin eniten, oli päivittäistavaroiden lisääminen ostoslistaani. Joten ajattelin, että olisi hienoa yhdistää nämä kaksi ja käyttää kuittitulostinta IOT -tulostimena Alexalle (tai Google Homelle tai Sirille jne.). Katsotaan, mitä tarvitaan tämän idean toteuttamiseksi.

Tarvikkeet

Tässä osia, joita käytän tähän projektiin:

  1. Halpa geneerinen kuittitulostin (tarvitsee ESC-POS-tuen)
  2. Amazon Alexa -laite (muut "kotiapulaitteet" toimivat todennäköisesti myös)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v säädin
  5. 10μf kondensaattori
  6. 1μf kondensaattori

Muita asioita, joita käytän tässä projektissa, ovat:

  1. Jos tämä sitten se (IFTTT.com)
  2. Juotoslaitteet

Vaihe 1: Asenna Raspberry Pi Zero W

Raspberry Pi Zero W: n asentaminen
Raspberry Pi Zero W: n asentaminen
Raspberry Pi Zero W: n asentaminen
Raspberry Pi Zero W: n asentaminen
Raspberry Pi Zero W: n asentaminen
Raspberry Pi Zero W: n asentaminen

Ensimmäinen vaihe on saada vanha kuittitulostin tulostamaan uudelleen. Päätin käyttää Raspberry Pi Zero W: tä ohjaimena, koska se on halpa hinta ja pieni koko. Se on itse asiassa tarpeeksi pieni mahtuakseen kuittitulostimen koteloon, joten ulkoisia yhteyksiä ei ole! Pi Zero W: ssä on myös sisäänrakennettu Wifi, joten kaikki on pohjimmiltaan integroitu pieneen kokoon.

Jotta Pi saataisiin käyttöön, meidän on ladattava Raspbian -käyttöjärjestelmä ja poltettava se microSD -kortille Etcherin kaltaisen ohjelman avulla. Aseta se Pi -laitteeseen HDMI -kaapelin, näppäimistön, hiiren ja sitten virran kanssa.

Kun Pi käynnistyy ja olet työpöydän käyttöliittymässä, voit muodostaa yhteyden langattomaan verkkoon napsauttamalla langattoman yhteyden kuvaketta oikeassa yläkulmassa ja valitsemalla langattoman yhteyden nimen. Jos napsautat hiiren kakkospainikkeella samaa langattoman yhteyden kuvaketta, voit siirtyä verkkoasetuksiin ja asettaa staattisen IP -osoitteen, jotta voimme muodostaa yhteyden siihen helposti verkon kautta. Lopuksi haluat napsauttaa päävalikkoa ja valita "Raspbian Configuration Editor" ja varmista, että "Interfaces" -välilehdessä SSH on käytössä. Tallenna se ja käynnistä Pi uudelleen.

Vaihe 2: Tulostaminen Pi -laitteesta

Tulostaminen Pi: stä
Tulostaminen Pi: stä
Tulostaminen Pi: stä
Tulostaminen Pi: stä

Kun Raspbery Pi on käynnistetty uudelleen, se on yhdistettävä langattomaan verkkoon staattisella IP -osoitteella ja SSH -toiminnolla. Joten nyt meidän pitäisi pystyä muodostamaan yhteys etäyhteydellä mistä tahansa toisesta tietokoneesta. Tätä varten tarvitset SSH -asiakkaan. Windowsille hyvä asiakas on Putty. Voit muodostaa yhteyden siihen käyttämällä Pi: n staattista IP -osoitetta, jonka asetimme aiemmin. Sitten voit kirjautua sisään käyttämällä "pi" -käyttäjänimeä ja "vadelma" -salasanaa.

Onnistuneen kirjautumisen jälkeen meidän pitäisi nyt olla Pi: n päätelaitteessa. Täällä voimme kirjoittaa komentoja, jotka suoritetaan Raspberry Pi: llä. Esimerkiksi yksi ensimmäisistä asioista, jotka haluamme tehdä, on varmistaa, että Pi -ohjelmisto on ajan tasalla. Joten päätelaitteeseen voimme kirjoittaa:

sudo apt-get päivitys

Tämä komento päivittää Pi: n ohjelmistovarastot. Seuraavaksi voimme asentaa ESC-POS-tulostinohjelmiston ja tarvittavat kirjastot.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-päivitä pip sudo pip3 asenna python-escpos

Kun tämä on tehty, voimme nyt kytkeä tulostimen Pi: n Micro-USB-porttiin (sovittimen avulla) ja käynnistää sen. Sitten päätelaitteessamme voimme luoda pienen python -komentosarjan

nano hello_world.py

Ja siihen voimme lisätä tämän python -koodin

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

Lopeta se (CTRL-X), tallenna se (CTRL-Y) ja testaa se suorittamalla se

python3 hello_world.py

Vaihe 3: Yhteyden muodostaminen esineiden Internetiin (osa 1)

Yhteyden muodostaminen esineiden Internetiin (osa 1)
Yhteyden muodostaminen esineiden Internetiin (osa 1)
Yhteyden muodostaminen esineiden Internetiin (osa 1)
Yhteyden muodostaminen esineiden Internetiin (osa 1)
Yhteyden muodostaminen esineiden Internetiin (osa 1)
Yhteyden muodostaminen esineiden Internetiin (osa 1)
Yhteyden muodostaminen esineiden Internetiin (osa 1)
Yhteyden muodostaminen esineiden Internetiin (osa 1)

Mitä hyötyä tulostimesta olisi ilman tulostettavaa? Halusin ottaa toiminnot käyttöön eri Internet -palveluista, kuten Alexasta. Joten miten voin saavuttaa sen? Yksi vaihtoehto on valita tietty Internet -palvelu, jäljittää niiden sovellusliittymädokumentaatio ja kirjoittaa sovellus niiden sovellusliittymän perusteella. Mutta päätän mennä laiskalle tielle…

Siellä on loistava verkkosivusto nimeltä "If This then That", joka käynnistää toimia eri Internet -palveluille (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter jne.) Kriteerien perusteella. Esimerkiksi "jos" postitan Facebookiin (tämä), "Sitten" lähetä minulle sähköpostiviesti (tuo).

Joten tämän ensimmäisen puoliskon aikana rekisteröin ilmaisen tilin, voit aloittaa uuden "sovelman" luomisen eri palveluille, jotka haluat käynnistää. Appletin "Tämä" osa on Alexa. Valittavana on paljon Alexa -laukaisimia, mutta aion valita sen, joka sanoo "Kysy ostoslistaltasi". Ja haluamme lopulta, että se käynnistää Python -komentosarjan Raspberry Pi -laitteessa, joten haluamme valita skriptin "Tuo" -osalle Webhooks.

Webhooks -vaihtoehtoon voimme lisätä URL -osoitteen, joka osoittaa Pi: hen, johon palaamme myöhemmin. Voimme jättää Method -kentän tilaan "Get" ja valita sisältötyypiksi "Plain Text". Napsauta Runko -kentässä "Lisää ainesosa" ja valitse "Koko luettelo". Tämä lähettää koko ostoslistan hakupyynnönä.

Vaihe 4: Yhteyden muodostaminen esineiden Internetiin (osa 2)

Yhteyden muodostaminen esineiden Internetiin (osa 2)
Yhteyden muodostaminen esineiden Internetiin (osa 2)
Yhteyden muodostaminen esineiden Internetiin (osa 2)
Yhteyden muodostaminen esineiden Internetiin (osa 2)

Edellinen vaihe hoitaa "Internet" -osan, joten nyt voimme käsitellä "asiat" -osaa Raspberry Pi: n avulla. Voidaksemme kommunikoida "If This Then That" webhooks -apletin kanssa meidän on määritettävä Web -palvelin Raspberry Pi -laitteeseen. Verkkopalvelimen voi perustaa monella eri tavalla, mutta koska haluan lopulta suorittaa Python -komentosarjan, päätin käyttää Pythonin Flask -palvelinta.

Pi-laitteeseen on esiasennettu kaikki Flask-kirjastot, joten meidän tarvitsee vain aloittaa testiskriptin kirjoittaminen:

nano flask_test.py

Ja siihen lisätään koodi, joka palvelee yksinkertaista verkkosivua.

#! flask/bin/python #IMPORT FLASK LIBRARIES from pullo import Flask, request #CREATE FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' SIVU @app.route ('/') def index (): palauta 'Pullo -palvelimesi toimii!' #SUORITA OHJELMA, jos _nimi_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Tallenna ohjelma ja suorita se tällä komennolla:

sudo python3 flask_test.py

Komentovastauksesta näet, että oletusportti, jolla Flask toimii, on portti 5000. Joten jos kirjoitat verkkoselaimessa Pi: n IP -osoitteen: 5000, sinun pitäisi nähdä teksti "Flask -palvelimesi toimii!"

Meillä on aikaisempi testipython -koodimme, joka tulostaa kuittitulostimeemme, ja meillä on testipullo -palvelin. Joten seuraavaksi meidän on yhdistettävä ne ja sisällytettävä koodi, joka hakee tiedot Webhook -sovelmastamme. Luodaan uusi Python -tiedosto:

nano iot_print_server.py

Ja lisää siihen seuraava koodi:

#! flask/bin/python #IMPORT FLASK AND PRINTER LIBRARIES from pullo import Flask, request from escpos.printer import Usb #ASSIGN MUUTTAJAT TULOSTIMELLE JA FLASKILLE p = Usb (0x0416, 0x5011) app = Pullo (_ name_) #CREATE 'INDEX' PAGE @app.route ('/') def index (): return 'Pullo -palvelimesi toimii!' #CREATE "PAGE" CALLED "LIST" ALEXA OSTOLISTAN TULOSTAMISEKSI @app.route ('/list') def list (): #CAPTURE "GET" DATA IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (content) #DIVIDE Data INTOERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO UUS LIST newlist = sanalle str_split: word = word.split (',') newlist.extend (sana) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Ostoslista / n") p.text ("Ostoslista: / n ") #LUETTELOI JA TULOSTA KUIN LUETTELOSSA R = 1 x: lle rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #PALAUTA TULOKSET palauttaa 'x' #KÄYTÄ OHJELMA, jos _nimi_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Voit suorittaa sen nähdäksesi, palauttaako se virheitä, mutta se ei vielä toimi webhookimme kanssa, koska palvelin toimii tällä hetkellä vain paikallisesti. Webhookilla ei voi vielä muodostaa ulkoista URL -osoitetta. Voisimme määrittää portin edelleenlähetyksen reitittimellemme ja käyttää vain ulkoista IP -osoitettamme, mutta se ei ole oikeastaan liian turvallista. Vaihtoehtoisesti päätän mennä NGROKin kanssa.

Vaihe 5: Ulkoisen käyttöoikeuden määrittäminen Ngrokin avulla

Ulkoisen käytön määrittäminen Ngrokin avulla
Ulkoisen käytön määrittäminen Ngrokin avulla
Ulkoisen käytön määrittäminen Ngrokin avulla
Ulkoisen käytön määrittäminen Ngrokin avulla

Ngrok muodostaa suojatun yhteyden verkkoon ilman, että sinun tarvitsee paljastaa ulkoista IP -osoitettasi tai sotkea porttien uudelleenohjausta. Kun olet rekisteröinyt ilmaisen tilin, se antaa sinulle valtuutusmerkin. Sitten voit ladata sen Raspberry Pi -laitteestasi, purkaa sen, purkaa sen, liittää todennustunnuksesi ja suorittaa sen sitten portilla 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stabiil-linux-arm./ngrok authtoken [lisää todennustunnuksesi tähän]./ngrok http 5000

*** TÄRKEÄÄ *** Ngrokin ilmainen versio ei anna staattista osoitetta, joten joka kerta kun käynnistät Ngrokin uudelleen, se antaa sinulle toisen osoitteen. Jos haluat pysyvän osoitteen, jotta sinun ei tarvitse jatkaa Webhookin muokkaamista, sinun on maksettava päivitetystä tilistä.

Ilmainen vaihtoehto Ngrokille, joka tarjoaa staattisia IP -osoitteita, on nimeltään "Serveo" osoitteessa www.serveo.net

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

Tuloksena olevassa näytössä se antaa sinulle edelleenlähetysosoitteen (https://random-string.ngrok.io), jota voimme käyttää Webhook-sovelmassamme. Joten palataksesi kohtaan "Jos tämä sitten", kirjoita URL -kenttään Ngrok -edelleenlähetysosoitteesi ja osoita se Flask -palvelimemme "luettelosivulle". Sen pitäisi näyttää tältä

random_string.ngrok.io/list

Jatka sitten ja tallenna muutokset.

Testaa se pitämällä Ngrok käynnissä, avaamalla uusi pääte ja suorittamalla python -skriptimme. Kun molemmat kohteet ovat käynnissä, kysy Alexalta, mitä ostoslistallasi on. Minuutin tai kahden kuluttua sen pitäisi tulostaa tulokset. Jos haluat sen tulostuvan heti, siirry IFTTT -sovellukseesi ja napsauta "Tarkista nyt". Jos kaikki menee hyvin, kuittitulostimen pitäisi tulostaa ostoslistaasi! Viimeinen lisättävä koodi on tapa käynnistää ngrok ja pullo -palvelimemme automaattisesti joka kerta, kun Pi käynnistyy. Voimme tehdä sen helposti tekemällä Python -skriptimme suoritettavaksi:

chmod +x iot_print_server.py

Sitten voimme muokata /etc/rc.local -tiedostoamme siten, että se näyttää tältä:

## Oletuksena tämä skripti ei tee mitään. # Tulosta IP -osoite _IP = $ (isäntänimi -I) || tosi jos ["$ _IP"]; sitten printf "IP -osoitteeni on %s / n" "$ _IP" fi #autostart ngrok ja osoita se todennustiedostoosi./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #käynnistä tulostin python -komentosarja sudo python3 /home/pi/iot_receipt_printer.py & exit 0

Vaihe 6: Pi: n lisääminen tulostimeen

Pi: n lisääminen tulostimeen
Pi: n lisääminen tulostimeen
Pi: n lisääminen tulostimeen
Pi: n lisääminen tulostimeen
Pi: n lisääminen tulostimeen
Pi: n lisääminen tulostimeen
Pi: n lisääminen tulostimeen
Pi: n lisääminen tulostimeen

Kuittitulostimessa on paljon tyhjää tilaa kotelon sisällä. Ja koska Raspberry Pi Zero on niin pieni kuin se on, ajattelin, että olisi hienoa piilottaa se kuittitulostimeen niin, että se näyttää yhdeltä laitteelta. Ainoa ongelma on, että kuittitulostin toimii 12 voltilla ja Pi 5 voltilla. Joten jos haluamme vain yhden virtakaapelin molempien virran saamiseksi, meidän on poistettava tämä 12 voltin virtalähde 5 volttiin.

Käyttämällä 7805 -jännitesäädintä, 1uf -kondensaattoria ja 10uf -kondensaattoria pystyin luomaan yksinkertaisen 5v -säätimen, jonka liitin kuittitulostimen logiikkakorttiin. Juotin "-" -johdon yhteiseen maahan ja sitten "+" -johdon virtakytkimen "on" -puolelle, jotta Pi kytkeytyy päälle ja pois päältä, kun tulostin kytketään päälle ja pois. Monimittaria käyttämällä testasin vahvistaakseni, että lähtö oli turvallinen Pi: lle. Sitten juotin mikro-usb-kaapelin ja liitin sen Pi: hen. Kun olet kytkenyt kaapelin tulostimeen ja kääntänyt kytkimen, sekä tulostin että Pi kytkeytyivät päälle!

Lopuksi porasin reiän USB -kaapelin liittämiseksi Pi: stä tulostimeen. Löysin paikan laittaa 5v -säädin ja Pi tulostinkotelon sisään, ja sitten laitoin kaiken takaisin yhteen. Joten nyt tulostimella on myös oma itsenäinen verkkopalvelin!

Vaihe 7: Vie eteenpäin

Vie sitä pidemmälle
Vie sitä pidemmälle

Jos pystyit katsomaan "Jos tämä sitten sitä", olet todennäköisesti huomannut, että sillä on tonnia erilaisia verkkopalveluja, joihin voi muodostaa yhteyden. Joten jos sinulla ei ole Alexaa tai et halua käyttää sitä, voit käyttää tätä projektia tulostamaan melkein mistä tahansa, kuten Facebookista, Twitteristä, Gmailista, Google Home, Evernote, Tumblr, Flickr, Wordpress, jne. Löydät koodini tweettien tulostamiseen Github -sivultani. Mene nyt katsomaan mitä keksit!

IoT -haaste
IoT -haaste
IoT -haaste
IoT -haaste

Ensimmäinen palkinto IoT Challengessa

Suositeltava: