Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Asenna Raspberry Pi Zero W
- Vaihe 2: Tulostaminen Pi -laitteesta
- Vaihe 3: Yhteyden muodostaminen esineiden Internetiin (osa 1)
- Vaihe 4: Yhteyden muodostaminen esineiden Internetiin (osa 2)
- Vaihe 5: Ulkoisen käyttöoikeuden määrittäminen Ngrokin avulla
- Vaihe 6: Pi: n lisääminen tulostimeen
- Vaihe 7: Vie eteenpäin
Video: Alexa -tulostin - Uudistettu kuittitulostin: 7 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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:
- Halpa geneerinen kuittitulostin (tarvitsee ESC-POS-tuen)
- Amazon Alexa -laite (muut "kotiapulaitteet" toimivat todennäköisesti myös)
- Raspberry Pi Zero Wireless
- 7805 5v säädin
- 10μf kondensaattori
- 1μf kondensaattori
Muita asioita, joita käytän tässä projektissa, ovat:
- Jos tämä sitten se (IFTTT.com)
- Juotoslaitteet
Vaihe 1: Asenna Raspberry Pi Zero W
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
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)
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)
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
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
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
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!
Ensimmäinen palkinto IoT Challengessa
Suositeltava:
Infrapuna -anturin käyttäminen Arduinon kanssa: 8 vaihetta (kuvien kanssa)
Infrapuna -anturin käyttäminen Arduinon kanssa: Mikä on infrapuna -anturi? . IR -signaali
Automaattinen lataus (tyhjiö) -kytkin ACS712: n ja Arduinon kanssa: 7 vaihetta (kuvien kanssa)
Automaattinen kuorman (tyhjiö) kytkin ACS712: n ja Arduinon kanssa: Hei kaikki! Sähkötyökalun käyttäminen suljetussa tilassa on kiire, koska kaikki ilmassa oleva pöly ja ilmassa oleva pöly tarkoittaa pölyä keuhkoissasi. Vac -myymälän suorittaminen voi poistaa osan tästä riskistä, mutta kytkeä sen päälle ja pois päältä joka kerta
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: 7 vaihetta (kuvien kanssa)
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: Tässä projektissa olen osoittanut, kuinka liittää GPS-moduuli Arduino UNO: n kanssa. Pituus- ja leveysasteiden tiedot näkyvät nestekidenäytössä ja sijaintia voi tarkastella sovelluksessa. Luettelo materiaalista Arduino Uno == > 8 dollarin Ublox NEO-6m GPS -moduuli == > 15 dollaria 16x
Kuvien tallentaminen tehtävää varten: 4 vaihetta (kuvien kanssa)
Kuvien tallentaminen tehtävää varten: 1. Avaa uusi Google -asiakirja ja suojaa kuvat tällä sivulla. Käytä ctrl (ohjaus) ja " c " kopioitava näppäin 3. Käytä ctrl (control) ja " v " liitettävä avain
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): 11 vaihetta (kuvien kanssa)
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): Jos yrität "Tee saumaton" -laajennusta GIMP: ssä, se tekee kuvasta saumattoman sekä vaaka- että pystysuunnassa samanaikaisesti. Se ei salli sinun tehdä siitä saumatonta vain yhdessä ulottuvuudessa. Tämä ohje auttaa sinua saamaan kuvan