- Memasang Pakej Yang Diperlukan untuk Komunikasi Bluetooth:
- Memasangkan Peranti dengan Raspberry Pi melalui Bluetooth:
- Memilih Mainan Kereta:
- Rajah dan Penjelasan Litar:
- Mengendalikan Kereta dari jauh dengan Aplikasi Android BlueTerm:
- Pengaturcaraan Python:
Raspberry Pi sangat popular untuk projek IoT kerana kemampuan komunikasi tanpa wayar yang lancar melalui internet. Raspberry Pi 3 mempunyai Wi-Fi dan Bluetooth terbina dalam, dan Bluetooth adalah Protokol komunikasi tanpa wayar yang sangat popular. Hari ini kita akan membina sebuah Kereta Kawalan Jauh menggunakan Raspberry Pi 3 dan Bluetooth, di sini kita akan menggunakan Telefon Pintar sebagai alat kawalan jauh untuk mengawal kereta. Kami sebelum ini membuat kereta RC ini dengan menggunakan Arduino.
Di sini kita menggunakan Raspberry Pi 3 yang mempunyai Bluetooth bawaan, jadi kita tidak perlu menggunakan dongle Bluetooth USB luaran. Di sini kami menggunakan protokol Bluetooth RFCOMM untuk komunikasi tanpa wayar.
Pengaturcaraan untuk Bluetooth di Python mengikuti model pengaturcaraan soket dan komunikasi antara peranti Bluetooth dilakukan melalui soket RFCOMM. RFCOMM (Radio Frequency Communication) adalah Protokol Bluetooth yang menyediakan port bersiri RS-232 yang ditiru dan juga disebut sebagai Serial Port Emulation. Profil port bersiri Bluetooth berdasarkan protokol ini. RFCOMM sangat popular dalam aplikasi Bluetooth kerana sokongannya yang luas dan API yang tersedia untuk umum. Ia terikat dengan protokol L2CAP.
Sekiranya anda mempunyai Raspberry Pi 2, anda perlu menggunakan dongle Bluetooth luaran atau modul Bluetooth HC-06. Periksa projek kami sebelumnya untuk menggunakan peranti Bluetooth luaran ini: Mengendalikan Raspberry Pi GPIO menggunakan Aplikasi Android melalui Bluetooth dan Peralatan Rumah Tangga yang dikendalikan Raspberry Pi.
Memasang Pakej Yang Diperlukan untuk Komunikasi Bluetooth:
Sebelum memulakan, kita perlu memasang beberapa perisian untuk menyiapkan komunikasi Bluetooth di Raspberry Pi. Anda harus mempunyai kad memori Raspbian Jessie yang dipasang dengan Raspberry Pi. Lihat artikel ini untuk memasang OS Raspbian dan memulakan Raspberry Pi. Jadi sekarang kita perlu mengemas kini Raspbian menggunakan arahan di bawah:
sudo apt-get update sudo apt-get upgrade
Maka kita perlu memasang beberapa pakej yang berkaitan dengan Bluetooth:
sudo apt-get install bluetooth blueeman bluez
Kemudian reboot Pi Raspberry:
rebo sudo
BlueZ adalah projek sumber terbuka dan timbunan protokol Bluetooth Linux rasmi. Ia menyokong semua protokol Bluetooth teras dan kini menjadi sebahagian daripada Kernel Linux rasmi.
Blueman menyediakan antara muka Desktop untuk mengurus dan mengawal peranti Bluetooth.
Akhirnya kita memerlukan Perpustakaan python untuk komunikasi Bluetooth supaya kita dapat mengirim dan menerima data melalui RFCOMM menggunakan bahasa Python:
sudo apt-get install python-bluetooth
Pasang juga perpustakaan sokongan GPIO untuk Raspberry Pi:
sudo apt-get install python-rpi.gpio
Sekarang kita sudah selesai dengan memasang pakej yang diperlukan untuk komunikasi Bluetooth di Raspberry Pi.
Memasangkan Peranti dengan Raspberry Pi melalui Bluetooth:
Memasangkan Peranti Bluetooth, seperti telefon bimbit, dengan Raspberry Pi sangat mudah. Di sini kami telah memasangkan telefon pintar Android kami dengan Raspberry Pi. Kami sebelumnya telah memasang BlueZ di Pi, yang menyediakan utiliti baris perintah yang disebut "bluetoothctl" untuk menguruskan peranti Bluetooth kami.
Sekarang buka utiliti bluetoothctl dengan arahan di bawah:
sudo bluetoothctl
Anda boleh menyemak semua arahan utiliti bluetoothctl dengan mengetik 'help' . Buat masa ini kita perlu memasukkan perintah di bawah dalam urutan tertentu:
# power on # agent on # ditemui pada # pairable on # scan on
Selepas arahan terakhir "scan on", anda akan melihat peranti Bluetooth anda (telefon bimbit) dalam senarai. Pastikan bahawa telefon bimbit anda telah menghidupkan Bluetooth dan dapat dilihat oleh peranti berdekatan. Kemudian salin alamat MAC peranti anda dan pasangkan dengan menggunakan arahan yang diberikan:
berpasangan
Kemudian anda akan diminta untuk Kod Laluan atau Pin di konsol Terminal anda kemudian taipkan kod laluan di sana dan tekan enter. Kemudian taipkan kod laluan yang sama di telefon bimbit anda apabila diminta dan anda kini berjaya dipasangkan dengan Raspberry Pi. Kami juga telah menjelaskan keseluruhan proses ini dalam Video yang diberikan dalam Tutorial pengendalian GPIO sebelumnya. Berikut adalah pautan YouTube langsung.
Seperti diberitahu sebelumnya, anda juga dapat menggunakan antara muka Desktop untuk memasangkan telefon bimbit. Setelah memasang Blueman, anda akan melihat ikon Bluetooth di sebelah kanan desktop Raspberry Pi anda seperti gambar di bawah, dengan mana anda boleh melakukan pemasangan secara mudah.
Memilih Mainan Kereta:
Dalam projek Raspberry Pi Controlled Car ini kami telah menggunakan kereta mainan untuk demonstrasi. Di sini kami telah memilih kereta mainan RF dengan ciri stereng kiri-kanan yang bergerak. Setelah membeli kereta ini, kami telah mengganti litar RFnya dengan litar Raspberry kami. Kereta ini mempunyai dua motor DC, satu untuk memutar dua roda depan dan satu lagi untuk memutar dua roda belakang. Motor sisi depan digunakan untuk memberi arah kepada kereta bermaksud membelok ke kiri atau kanan (seperti ciri stereng kereta sebenar). Dan motor sisi belakang digunakan untuk memandu kereta ke arah depan dan belakang. Bluetooth Raspberry digunakan untuk menerima arahan secara wayarles dari telefon android untuk mengawal kereta.
Anda boleh menggunakan mana-mana kereta mainan yang mempunyai dua Motor DC untuk memutar roda depan dan Roda Belakang.
Rajah dan Penjelasan Litar:
Dalam Kereta Terkawal Jauh ini, kita hanya perlu menyambungkan Raspberry Pi dengan dua motor menggunakan modul L293D. Untuk menghidupkan Raspberry Pi dan kereta, kami telah menggunakan power bank mudah alih. Bank kuasa mudah alih sudah cukup untuk memberi kuasa kepada Raspberry Pi dan motor kereta tetapi apabila kita meletakkan power bank di atas kereta maka kerana berat kenderaan bank kuasa mudah alih tidak akan dapat bergerak dengan baik. Oleh itu, kami mengesyorkan untuk menggunakan bekalan kuasa berat rendah atau bateri Lithium untuk menghidupkan sistem. Semua sambungan ditunjukkan dalam rajah litar di bawah. Periksa juga bahagian Robotik kami untuk mengetahui lebih lanjut mengenai mengendalikan Motor dengan teknologi yang berbeza.
Catatan: jangan letakkan lebih daripada 5v pada pi raspberry.
Litar ini telah dibuat di Perf Board untuk projek ini, sehingga berat badannya lebih sedikit.
Mengendalikan Kereta dari jauh dengan Aplikasi Android BlueTerm:
Sekarang setelah menyiapkan semua perkara dan berjaya mencuba pemasangan Smart Phone melalui bluetooth, kita perlu memasang Aplikasi Android untuk berkomunikasi dengan Raspberry Pi menggunakan Bluetooth Serial Adapter, sehingga kita dapat mengendalikan pin GPIO Raspberry Pi. Seperti yang diberitahu sebelumnya, protokol RFCOMM / SPP meniru komunikasi bersiri melalui Bluetooth, jadi kami memasang di sini Aplikasi BlueTerm yang menyokong protokol ini.
Anda juga dapat menggunakan Aplikasi Terminal Bluetooth lain yang menyokong komunikasi melalui soket RFCOMM.
Sekarang setelah memuat turun dan memasang Aplikasi BlueTerm, jalankan Program Python yang diberikan di bawah dari terminal dan sambungkan peranti raspberrypi berpasangan dari Aplikasi BlueTerm pada masa yang sama.
Setelah berjaya disambungkan, anda akan melihat sambungan: raspberrypi di sudut kanan atas Aplikasi seperti gambar di bawah:
Sekarang anda hanya boleh memasukkan perintah berikut dari aplikasi BlueTerm untuk membuat kereta bergerak ke arah yang diinginkan. Tekan 'q' untuk keluar dari program. Anda boleh menggunakan Papan Kekunci Penaipan Suara Google untuk mengawal kereta ini menggunakan Suara anda. Lihat demo lengkap dalam Video yang diberikan di akhir.
Perintah:
F - Pergerakan ke Hadapan
B - Bergerak ke belakang
S - Berhenti
L - Gerakkan Kiri ke Hadapan
R - Gerakkan Kanan ke Hadapan
A - Gerak Kiri ke Belakang
P - Gerak Kanan ke Belakang
Q - Berhenti
Pengaturcaraan Python:
Program Python untuk Mengendalikan Raspberry Pi GPIO dengan Aplikasi Android sangat mudah dan cukup jelas. Cuma kita perlu belajar sedikit mengenai kod yang berkaitan dengan komunikasi Bluetooth RFCOMM. Jika tidak, ia sama seperti mengawal robot atau kereta dengan menjadikan pin motor tinggi atau rendah. Program lengkap diberikan di bawah di bahagian Kod.
Pertama, kita perlu mengimport pustaka soket Bluetooth yang membolehkan kita mengawal Bluetooth dengan bahasa Python; kami telah memasang perpustakaan untuk perkara yang sama di bahagian sebelumnya.
import Bluetooth
Kemudian kami memasukkan lebih banyak fail header dan menentukan pin untuk motor meletakkannya rendah.
import masa import bluetooth import RPi.GPIO sebagai GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.setwarnings (Salah) 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.output (m22, 0)
Berikut adalah kod yang bertanggungjawab untuk komunikasi Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () cetak "Sambungan yang diterima dari", alamat
Di sini kita dapat memahaminya mengikut baris:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Membuat soket untuk komunikasi Bluetooth RFCOMM.
server_socket.bind (("", port): - Server mengikat skrip pada host '' ke port.
server_socket.listen (1): Pelayan mendengar untuk menerima satu sambungan pada satu masa.
client_socket, address = server_socket.accept (): Server menerima permintaan sambungan klien dan memberikan alamat mac ke alamat pemboleh ubah, client_socket adalah soket pelanggan
Selepas ini kami telah mencipta beberapa fungsi yang bertanggungjawab untuk menggerakkan kereta ke arah yang diinginkan: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop ()). Fungsi-fungsi ini akan dipanggil masing-masing ketika kita menekan L, R, F, A, P, B, S dari aplikasi Mobile blueTerm dan kereta akan bergerak dengan sewajarnya.
data = "" while 1: data = client_socket.recv (1024) print "Received:% s"% data if (data == "F"): maju () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): terbalik () elif (data == "A"): left_side_reverse () elif (data == "P"): right_side_reverse () elif data == "S": stop () elif (data == "Q"): print ("Quit") break client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Menerima data melalui soket client_socket dan menetapkannya ke data pemboleh ubah. Maksimum 1024 aksara dapat diterima dalam satu masa.
Akhirnya, setelah semua pengaturcaraan, tutup sambungan pelanggan dan pelayan menggunakan kod di bawah:
client_socket.close () server_socket.close ()