- Nepieciešamo Bluetooth sakaru pakotņu instalēšana:
- Ierīču savienošana pārī ar Raspberry Pi, izmantojot Bluetooth:
- Rotaļlietu automašīnas izvēle:
- Shēmas shēma un skaidrojums:
- Automašīnas tālvadība ar Android App BlueTerm:
- Python programmēšana:
Aveņu Pi ir ļoti populāra IoT projektos, jo tā nodrošina bezvadu sakarus internetā. Raspberry Pi 3 ir iebūvēts Wi-Fi un Bluetooth, un Bluetooth ir ļoti populārs bezvadu sakaru protokols. Šodien mēs būvēsim tālvadāmu automašīnu, izmantojot Raspberry Pi 3 un Bluetooth, šeit mēs izmantosim viedtālruni kā tālvadības pulti, lai vadītu automašīnu. Iepriekš mēs esam izveidojuši šo RC automašīnu, izmantojot Arduino.
Šeit mēs izmantojam Raspberry Pi 3, kurā ir iebūvēts Bluetooth, tāpēc mums nav jāizmanto neviens ārējs USB Bluetooth dongle. Šeit bezvadu sakariem mēs izmantojam RFCOMM Bluetooth protokolu.
Programmēšana Bluetooth pakalpojumā Python notiek pēc ligzdas programmēšanas modeļa, un saziņa starp Bluetooth ierīcēm notiek caur RFCOMM ligzdu. RFCOMM (radiofrekvenču komunikācija) ir Bluetooth protokols, kas nodrošināja emulētus RS-232 sērijas portus un ko sauc arī par seriālo portu emulāciju. Bluetooth sērijas porta profils ir balstīts uz šo protokolu. RFCOMM ir ļoti populārs Bluetooth lietojumprogrammās, jo tam ir plašs atbalsts un publiski pieejama API. Tas ir saistīts ar L2CAP protokolu.
Ja jums ir Raspberry Pi 2, jums jāizmanto vai nu ārējais Bluetooth dongle, vai Bluetooth modulis HC-06. Pārbaudiet mūsu iepriekšējos projektus par šo ārējo Bluetooth ierīču izmantošanu: Raspberry Pi GPIO kontrolēšana, izmantojot Android App, izmantojot Bluetooth un Raspberry Pi kontrolētu sadzīves tehniku.
Nepieciešamo Bluetooth sakaru pakotņu instalēšana:
Pirms sākšanas mums jāinstalē programmatūra Bluetooth komunikācijas iestatīšanai Raspberry Pi. Jums vajadzētu būt gatavai Raspbian Jessie instalētai atmiņas kartei ar Raspberry Pi. Pārbaudiet šo rakstu, lai instalētu Raspbian OS un sāktu darbu ar Raspberry Pi. Tāpēc tagad mums vispirms jāatjaunina Raspbian, izmantojot zemāk norādītās komandas:
sudo apt-get update sudo apt-get jauninājums
Tad mums jāinstalē dažas ar Bluetooth saistītas paketes:
sudo apt-get instalēt bluetooth blueman bluez
Pēc tam restartējiet Raspberry Pi:
sudo atsāknēšana
BlueZ ir atvērtā koda projekts un oficiāla Linux Linux protokola kaudze. Tas atbalsta visus galvenos Bluetooth protokolus un tagad kļūst par daļu no oficiālā Linux kodola.
Blueman nodrošina darbvirsmas saskarni, lai pārvaldītu un kontrolētu Bluetooth ierīces.
Visbeidzot, mums ir nepieciešama python bibliotēka Bluetooth saziņai, lai mēs varētu nosūtīt un saņemt datus, izmantojot RFCOMM, izmantojot Python valodu:
sudo apt-get instalēt python-bluetooth
Instalējiet arī Raspberry Pi GPIO atbalsta bibliotēkas:
sudo apt-get instalēt python-rpi.gpio
Tagad mēs esam paveikuši nepieciešamo Bluetooth sakaru paku instalēšanu Raspberry Pi.
Ierīču savienošana pārī ar Raspberry Pi, izmantojot Bluetooth:
Savienot Bluetooth ierīces, piemēram, mobilo tālruni, ar Raspberry Pi ir ļoti vienkārši. Šeit mēs esam savienojuši pārī savu Android viedtālruni ar Raspberry Pi. Mēs jau iepriekš esam instalējuši BlueZ Pi, kas nodrošina komandrindas utilītu ar nosaukumu “bluetoothctl”, lai pārvaldītu mūsu Bluetooth ierīces.
Tagad atveriet bluetoothctl utilītu, izmantojot komandu zemāk:
sudo bluetoothctl
Jūs varat pārbaudīt visas bluetoothctl utilītas komandas, ierakstot "help" . Pagaidām mums jāievada zemāk norādītās komandas noteiktā secībā:
# ieslēgts # aģents ieslēgts # atklājams # savienojams pārī ar # skenēšanu
Pēc pēdējās komandas “scan on” sarakstā redzēsiet savu Bluetooth ierīci (mobilo tālruni). Pārliecinieties, vai jūsu mobilajā tālrunī ir ieslēgts Bluetooth un vai tas ir redzams tuvumā esošajām ierīcēm. Pēc tam nokopējiet ierīces MAC adresi un savienojiet to pārī, izmantojot norādīto komandu:
pāris
Pēc tam jums tiks lūgts ievadīt piekļuves kodu vai piespraudi savā termināļa konsolē, pēc tam ierakstiet piekļuves kodu un nospiediet taustiņu Enter. Pēc tam, kad tiek prasīts, ierakstiet to pašu piekļuves kodu savā mobilajā tālrunī, un tagad esat veiksmīgi savienots pārī ar Raspberry Pi. Visu šo procesu mēs esam izskaidrojuši arī iepriekšējā GPIO vadības apmācībā sniegtajā videoklipā. Šeit ir tiešā YouTube saite.
Kā stāstīts iepriekš, mobilā tālruņa savienošanai pārī varat izmantot arī darbvirsmas saskarni. Pēc Blueman instalēšanas Raspberry Pi darbvirsmas labajā pusē redzēsiet Bluetooth ikonu, kā parādīts zemāk, izmantojot kuru jūs varat viegli veikt savienošanu pārī.
Rotaļlietu automašīnas izvēle:
Šajā Raspberry Pi kontrolētās automašīnas projektā mēs demonstrēšanai izmantojām rotaļu automašīnu. Šeit mēs esam izvēlējušies RF rotaļu automašīnu ar kustīgu kreisās un labās stūres funkciju. Pēc šīs automašīnas iegādes mēs esam nomainījuši tās RF shēmu ar mūsu Aveņu shēmu. Šai automašīnai ir divi līdzstrāvas motori, no kuriem viens rotē divus priekšējos riteņus, bet otrs - divus aizmugurējos riteņus. Priekšējais sānu motors tiek izmantots automašīnas virziena norādīšanai, kas nozīmē pagriezienu pa kreisi vai pa labi (tāpat kā reāla automašīnas stūrēšanas funkcija). Aizmugures sānu motors tiek izmantots automašīnas braukšanai uz priekšu un atpakaļ. Aveņu Bluetooth tiek izmantots, lai bez vadiem saņemtu komandu no android tālruņa, lai vadītu automašīnu.
Lai pagrieztu priekšējos un aizmugurējos riteņus, varat izmantot jebkuru rotaļu automašīnu, kurai ir divi līdzstrāvas motori.
Shēmas shēma un skaidrojums:
Šajā tālvadības automašīnā mums Raspberry Pi jāpieslēdz tikai ar diviem motoriem, izmantojot moduli L293D. Lai darbinātu Raspberry Pi un automašīnu, mēs izmantojām mobilo enerģijas banku. Mobilā jaudas banka ir pietiekama, lai darbinātu Raspberry Pi un automašīnas motorus, bet, ja mēs novietojam spēka banku virs automašīnas, tad mobilās jaudas bankas smagā svara dēļ tā nevarētu pareizi pārvietoties. Tāpēc sistēmas darbināšanai iesakām izmantot maza svara barošanas avotu vai litija baterijas. Visi savienojumi ir parādīti zemāk esošajā shēmā. Pārbaudiet arī mūsu sadaļu Robotika, lai uzzinātu vairāk par Motoru vadību ar dažādām tehnoloģijām.
Piezīme: nelieciet vairāk par 5v pie aveņu pī.
Šī shēma šim projektam ir izveidota uz Perf Board, lai automašīnai būtu mazāks svars.
Automašīnas tālvadība ar Android App BlueTerm:
Pēc visu lietu iestatīšanas un veiksmīga mēģinājuma izveidot viedtālruni, izmantojot Bluetooth, mums jāinstalē Android lietotne saziņai ar Raspberry Pi, izmantojot Bluetooth sērijas adapteri, lai mēs varētu kontrolēt Raspberry Pi GPIO tapas. Kā stāstīts iepriekš, RFCOMM / SPP protokols atdarina sērijveida sakarus, izmantojot Bluetooth, tāpēc mēs šeit instalējām BlueTerm App, kas atbalsta šo protokolu.
Varat arī izmantot jebkuru citu Bluetooth Terminal lietotni, kas atbalsta saziņu, izmantojot RFCOMM ligzdu.
Tagad pēc lejupielādējot un instalējot BlueTerm App, palaidiet tālāk doto Python programmu no termināla un savienot pārī savienoto Raspberry Pi ierīci no BlueTerm App, tajā pašā laikā.
Pēc veiksmīga savienojuma izveidošanas jūs redzēsiet savienojumu: raspberrypi lietotnes augšējā labajā stūrī, kā parādīts zemāk:
Tagad varat vienkārši ievadīt šādas BlueTerm lietotnes komandas, lai automašīna pārvietotos vēlamajā virzienā. Nospiediet taustiņu q, lai izietu no programmas. Lai vadītu šo automašīnu, izmantojot balsi, varat izmantot Google balss rakstīšanas tastatūru. Pārbaudiet visu demonstrāciju videoklipā, kas sniegts beigās.
Komandas:
F - virzīties uz priekšu
B - Pārvietoties atpakaļ
S - apstājies
L - virzīties uz priekšu pa kreisi
R - virzīties uz priekšu pa labi
A - Pārvietoties atpakaļ pa kreisi
P - virzīties atpakaļ pa labi
J - atmest
Python programmēšana:
Python programma Raspberry Pi GPIO kontrolēšanai ar Android App ir ļoti vienkārša un pašsaprotama. Tikai mums ir mazliet jāapgūst kods, kas saistīts ar Bluetooth RFCOMM komunikāciju. Pretējā gadījumā tas pats, piemēram, jebkura robota vai automašīnas vadīšana, padarot motora tapu augstu vai zemu. Pilna programma ir sniegta zemāk sadaļā Kods.
Pirmkārt, mums jāimportē Bluetooth kontaktligzdu bibliotēka, kas ļauj mums kontrolēt Bluetooth ar Python valodu; mēs esam instalējuši bibliotēku par to pašu iepriekšējā sadaļā.
importēt Bluetooth
Tad mēs iekļāvām vēl dažus galvenes failus un definējām tapas motoriem, kas tos noklusēja zemu.
importēt Bluetooth importēšanas laiku importēt RPi.GPIO kā 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. Izeja (m22, 0)
Zemāk ir kods, kas atbild par Bluetooth komunikāciju:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) ports = 1 server_socket.bind (("", ports)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Pieņemts savienojums no", adrese
Šeit mēs tos varam saprast pa rindai:
server_socket = bluetooth. BluetoothSocket (bluetooth.RFCOMM): ligzdas izveide Bluetooth RFCOMM saziņai.
server_socket.bind (("", ports): - Serveris saista skriptu resursdatorā '' ar portu.
server_socket.listen (1): serveris klausās, vai vienlaikus tiek pieņemts viens savienojums.
klienta ligzda, adrese = servera_ligzda.accept (): serveris pieņem klienta savienojuma pieprasījumu un piešķir mainīgā adresei mac adresi, klienta ligzda ir klienta ligzda
Pēc tam mēs esam izveidojuši dažas funkcijas, kas ir atbildīgas par automašīnas pārvietošanos vēlamajā virzienā: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Šīs funkcijas tiks izsauktas attiecīgi, kad no Mobile blueTerm lietotnes nospiedīsim L, R, F, A, P, B, S, un automašīna attiecīgi pārvietosies.
data = "" kamēr 1: data = client_socket.recv (1024) print "Saņemts:% s"% data if (data == "F"): uz priekšu () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): reverse () elif (data == "A"): left_side_reverse () elif (data == "P"): right_side_reverse () elif data == "S": stop () elif (data == "Q"): drukāt ("Quit") pārtraukt klienta_socket.close () server_socket.close ()
dati = klienta ligzda.recv (1024): saņemiet datus caur klienta kontaktligzdu klienta ligzda un piešķiriet tos mainīgajiem datiem. Vienlaikus var saņemt ne vairāk kā 1024 rakstzīmes.
Visbeidzot, pēc visas programmēšanas, aizveriet klienta un servera savienojumu, izmantojot zemāk esošo kodu:
client_socket.close () server_socket.close ()