- Vaadittavien pakettien asentaminen Bluetooth-viestintää varten:
- Laitteiden pariliitos Vadelma Pi: n kanssa Bluetoothin kautta:
- Leluauton valitseminen:
- Piirikaavio ja selitys:
- Auton etähallinta Android-sovelluksella BlueTerm:
- Python-ohjelmointi:
Vadelma Pi on erittäin suosittu IoT-hankkeissa, koska sillä on saumaton kyky langattomaan viestintään Internetissä. Raspberry Pi 3: ssa on sisäänrakennettu Wi-Fi ja Bluetooth, ja Bluetooth on erittäin suosittu langattoman viestinnän protokolla. Tänään aiomme rakentaa kauko-ohjattavan auton käyttäen Raspberry Pi 3: ta ja Bluetoothia, tässä käytämme älypuhelinta kauko- ohjaimena auton hallintaan. Olemme aiemmin rakentaneet tämän RC-auton käyttämällä Arduinoa.
Tässä käytämme Raspberry Pi 3: ta, joka on sisäänrakennettu Bluetooth, joten meidän ei tarvitse käyttää ulkoista USB-Bluetooth-sovitinta. Tässä käytämme RFCOMM Bluetooth -protokollaa langattomaan viestintään.
Pythonin Bluetooth- ohjelmointi seuraa pistorasian ohjelmointimallia ja Bluetooth-laitteiden välinen viestintä tapahtuu RFCOMM-liitännän kautta. RFCOMM (radiotaajuusviestintä) on Bluetooth-protokolla, joka tarjosi emuloituja RS-232-sarjaportteja ja jota kutsutaan myös sarjaporttimulaationa. Bluetooth-sarjaporttiprofiili perustuu tähän protokollaan. RFCOMM on erittäin suosittu Bluetooth-sovelluksissa, koska sillä on laaja tuki ja julkisesti saatavilla oleva sovellusliittymä. Se on sidottu L2CAP-protokollaan.
Jos sinulla on Raspberry Pi 2, sinun on joko käytettävä ulkoista Bluetooth-sovitinta tai Bluetooth-moduulia HC-06. Tarkista aikaisemmat projektimme näiden ulkoisten Bluetooth-laitteiden käytöstä: Raspberry Pi GPIO: n hallinta Android-sovelluksella Bluetooth- ja Raspberry Pi -ohjattujen kodinkoneiden kautta.
Vaadittavien pakettien asentaminen Bluetooth-viestintää varten:
Ennen aloittamista meidän on asennettava joitain ohjelmistoja Bluetooth-yhteyden luomiseksi Raspberry Pi -palveluun. Sinulla on oltava asennettuna Raspbian Jessie -muistikortti, jossa on Raspberry Pi. Tarkista tämä artikkeli, jos haluat asentaa Raspbian-käyttöjärjestelmän ja aloittaa Raspberry Pi -ohjelman käytön. Joten nyt meidän on ensin päivitettävä Raspbian käyttämällä alla olevia komentoja:
sudo apt-get päivitys sudo apt-get päivitys
Sitten meidän on asennettava muutama Bluetooth-paketti:
sudo apt-get install bluetooth blueman bluez
Käynnistä sitten Raspberry Pi uudelleen:
sudo uudelleenkäynnistä
BlueZ on avoimen lähdekoodin projekti ja virallinen Linux-Bluetooth-protokollapino. Se tukee kaikkia keskeisiä Bluetooth-protokollia ja on nyt osa virallista Linux-ydintä.
Blueman tarjoaa työpöydän käyttöliittymän Bluetooth-laitteiden hallintaan ja hallintaan.
Lopuksi tarvitsemme python-kirjaston Bluetooth-viestintään, jotta voimme lähettää ja vastaanottaa tietoja RFCOMM: n kautta Python-kieltä käyttäen:
sudo apt-get asenna python-bluetooth
Asenna myös Raspberry Pi: n GPIO-tukikirjastot:
sudo apt-get install python-rpi.gpio
Nyt olemme asentaneet tarvittavat paketit Bluetooth-viestintään Raspberry Pi: ssä.
Laitteiden pariliitos Vadelma Pi: n kanssa Bluetoothin kautta:
Bluetooth-laitteiden, kuten matkapuhelimen, yhdistäminen Raspberry Pi: n kanssa on erittäin helppoa. Tässä olemme yhdistäneet Android-älypuhelimemme Raspberry Pi: n kanssa. Olemme aiemmin asentaneet BlueZin Piin, joka tarjoaa komentorivin apuohjelman nimeltä bluetoothctl Bluetooth-laitteidemme hallintaan.
Avaa nyt bluetoothctl- apuohjelma alla olevalla komennolla:
sudo bluetoothctl
Voit tarkistaa kaikki bluetoothctl- apuohjelman komennot kirjoittamalla 'help' . Nyt meidän on annettava alla olevat komennot määrätyssä järjestyksessä:
# virta päällä # agentti päällä # löydettävissä # yhdistettävissä # skannaus päällä
Viimeisen "scan on" -komennon jälkeen näet Bluetooth-laitteesi (matkapuhelin) luettelossa. Varmista, että matkapuhelimessasi on Bluetooth päällä ja lähellä olevat laitteet näkevät sen. Kopioi sitten laitteesi MAC-osoite ja pariliitä se käyttämällä annettua komentoa:
pari
Sitten sinua pyydetään antamaan pääsykoodi tai PIN-koodi päätelaitteessa, kirjoita salasana sinne ja paina Enter. Kirjoita sitten sama salasana matkapuhelimeesi pyydettäessä ja pariliitos Raspberry Pi: n kanssa on nyt onnistunut. Olemme myös selittäneet koko tämän prosessin edellisessä GPIO-ohjausoppaassa annetussa videossa. Tässä on suora YouTube-linkki.
Kuten aiemmin kerrottiin, voit käyttää matkapuhelimen pariliitosta myös työpöydän käyttöliittymän avulla. Kun olet asentanut Blueman, näet Bluetooth-kuvakkeen Raspberry Pi -työpöydän oikealla puolella alla olevan kuvan mukaisesti, jonka avulla voit tehdä pariliitoksen helposti.
Leluauton valitseminen:
Tässä Vadelma Pi -ohjattu auto -projektissa olemme käyttäneet leluautoa esittelyyn. Tässä olemme valinneet RF- leluauton, jossa on liikkuva vasen-oikea-ohjaustoiminto. Ostettuamme tämän auton olemme korvanneet sen RF-piirin Vadelma-piirillä. Tässä autossa on kaksi tasavirtamoottoria, yksi pyörittää kahta etupyörää ja toinen pyörittää kahta takapyörää. Etuosan moottoria käytetään suunnan antamiseen autolle, mikä tarkoittaa kääntymistä vasemmalle tai oikealle puolelle (kuten todellinen auton ohjaustoiminto). Ja takasivumoottoria käytetään auton ajamiseen eteen- ja taaksepäin. Vadelman Bluetoothia käytetään komentojen vastaanottamiseen langattomasti Android-puhelimesta auton ohjaamiseksi.
Voit käyttää mitä tahansa leluautoa, jossa on kaksi tasavirtamoottoria, etu- ja takapyörän pyörittämiseen.
Piirikaavio ja selitys:
Tässä kauko-ohjattavassa autossa meidän on liitettävä Raspberry Pi vain kahdella L293D-moduulia käyttävällä moottorilla. Raspberry Pi: n ja auton virtalähteeksi olemme käyttäneet mobiilivoimapankkia. Matkapuhelimen tehopankki riittää Vadelma Pi: n ja auton moottoreiden käyttämiseen, mutta kun laitamme virtapankin autoon, mobiilivoimapankin raskaan painon vuoksi se ei pystyisi liikkumaan kunnolla. Joten suosittelemme käyttämään järjestelmän virtalähteeksi pienipainoista virtalähdettä tai litiumparistoja. Kaikki liitännät on esitetty alla olevassa piirikaaviossa. Katso myös Robotiikka-osiosta lisätietoja moottoreiden ohjaamisesta eri tekniikoilla.
Huomaa: älä laita vadelmapiiriin enempää kuin 5 V.
Tämä piiri on tehty Perf Boardille tätä projektia varten, jotta autolla olisi vähemmän painoa.
Auton etähallinta Android-sovelluksella BlueTerm:
Nyt kun olet määrittänyt kaikki asiat ja yrittänyt onnistuneesti muodostaa älypuhelimen Bluetooth- yhteyden kautta, meidän on asennettava Android-sovellus yhteydenpitoon Raspberry Pi: n kanssa Bluetooth-sarjasovittimella, jotta voimme hallita Raspberry Pi: n GPIO-nastoja. Kuten aiemmin kerrottiin, RFCOMM / SPP-protokolla emuloi sarjaliikennettä Bluetoothin kautta, joten asensimme tähän BlueTerm-sovelluksen, joka tukee tätä protokollaa.
Voit käyttää myös mitä tahansa muuta Bluetooth-päätelaitesovellusta, joka tukee viestintää RFCOMM-liitännän kautta.
Kun olet ladannut ja asentanut BlueTerm-sovelluksen, suorita alla oleva Python-ohjelma päätelaitteesta ja yhdistä pariliitetty vadelma- laite samanaikaisesti BlueTerm-sovelluksesta.
Kun yhteys on muodostettu onnistuneesti, näet yhdistetyn: vadelman sovelluksen oikeassa yläkulmassa alla olevan kuvan mukaisesti:
Nyt voit antaa vain seuraavat komennot BlueTerm-sovelluksesta, jotta auto liikkuu haluttuun suuntaan. Poistu ohjelmasta painamalla 'q'. Voit käyttää tätä autoa Google Voice -tyyppisen näppäimistön avulla äänelläsi. Tarkista koko demo lopussa olevasta videosta.
Komennot:
F - Siirrä eteenpäin
B - Taaksepäin liikkuminen
S - Lopeta
L - Siirrä eteenpäin vasemmalle
R - eteenpäin oikealle
A - Taaksepäin vasemmalle
P - Siirry taaksepäin oikealle
Q - Lopeta
Python-ohjelmointi:
Python-ohjelma Raspberry Pi GPIO: n hallitsemiseksi Android-sovelluksella on hyvin yksinkertainen ja itsestään selvä. Vain meidän on opittava vähän Bluetooth RFCOMM -yhteyteen liittyvästä koodista. Muuten se on sama kuin minkä tahansa robotin tai auton ohjaaminen tekemällä moottorin tappi korkealle tai matalalle. Koko ohjelma on annettu alla Koodi-osassa.
Ensinnäkin meidän on tuotava Bluetooth-liitäntäkirjasto, jonka avulla voimme hallita Bluetoothia Python-kielellä; olemme asentaneet samalle kirjaston edellisessä osassa.
tuo Bluetooth
Sitten sisällytimme lisää otsikkotiedostoja ja määritimme moottoreiden nastat asettamaan ne oletuksena mataliksi.
tuonti bluetooth tuonti aika tuonti RPi.GPIO muodossa GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) GPIO.setup (m11, GPIO.OUT) GPIO.setup (m12, GPIO.OUT) GPIO.setup (m21, GPIO.OUT) GPIO.setup (m22, GPIO.OUT) GPIO.output (m11, 0) GPIO.output (m12, 0) GPIO.output (m21, 0) GPIO. Tuotos (m22, 0)
Alla on koodi, joka vastaa Bluetooth-viestinnästä:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) -portti = 1 server_socket.bind (("", portti)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Hyväksytty yhteys mistä", osoite
Täällä voimme ymmärtää ne rivi riviltä:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Luodaan liitäntä Bluetooth RFCOMM -yhteydelle.
server_socket.bind (("", portti): - Palvelin sitoo isännän '' komentosarjan porttiin.
server_socket.listen (1): Palvelin kuuntelee hyväksyvänsä yhden yhteyden kerrallaan.
client_socket, address = server_socket.accept (): Palvelin hyväksyy asiakkaan yhteyspyynnön ja määrittää mac-osoitteen muuttujan osoitteeseen, client_socket on asiakkaan socket
Tämän jälkeen olemme luoneet joitain toimintoja, jotka vastaavat auton liikkumisesta haluttuun suuntaan: vasemmanpuoleinen eteenpäin (), oikealle sivulle eteenpäin (), eteenpäin eteenpäin (), vasemmalle sivulle taaksepäin (), oikealle puolelle taaksepäin (), peruutus taaksepäin () def pysäytys (). Näitä toimintoja kutsutaan vastaavasti, kun painamme L, R, F, A, P, B, S Mobile blueTerm -sovelluksesta ja auto liikkuu vastaavasti.
data = "" kun 1: data = client_socket.recv (1024) tulostaa "Vastaanotettu:% s"% data if (data == "F"): eteenpäin () elif (data == "L"): left_side_forward () elif (data == "R"): oikealle puolelle eteenpäin () elif (data == "B"): taaksepäin () elif (data == "A"): vasemmalle sivulle () elif data == "S": stop () elif (data == "Q"): tulosta ("Lopeta") tauko client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Vastaanota tietoja asiakassovelluksen client_socket kautta ja määritä se muuttujatietoihin. Kerralla voidaan vastaanottaa enintään 1024 merkkiä.
Lopuksi, ohjelmoinnin jälkeen, sulje asiakas- ja palvelinkytkentä alla olevalla koodilla:
client_socket.close () server_socket.close ()