- การติดตั้งแพ็คเกจที่จำเป็นสำหรับการสื่อสาร Bluetooth:
- การจับคู่อุปกรณ์กับ Raspberry Pi ผ่านบลูทู ธ :
- แผนภูมิวงจรรวม:
- การควบคุม LED ด้วย Android App BlueTerm:
- คำอธิบายการเขียนโปรแกรม:
Raspberry Pi เป็นที่นิยมอย่างมากสำหรับโครงการ IoT เนื่องจากความสามารถในการสื่อสารไร้สายผ่านอินเทอร์เน็ตได้อย่างราบรื่น Raspberry Pi 3 มี Wi-Fi และ Bluetooth ในตัวและ Bluetooth เป็นโปรโตคอลการสื่อสารไร้สายที่ได้รับความนิยมอย่างมาก ดังนั้นวันนี้เราจะไปควบคุม Raspberry Pi GPIO Pin ผ่าน app Android ที่ใช้บลูทู ธ
ที่นี่เราจะใช้ราสเบอร์รี่ 2 ชิ้นรุ่น B ที่ไม่ได้มีบลูทู ธ inbuilt ดังนั้นเราจะใช้ง่ายdongle USB บลูทู ธ นอกเหนือจากนั้นเราต้องการเพียงตัวต้านทาน (220R) และ LED เพื่อแสดงการควบคุม GPIO ที่นี่เรากำลังใช้โปรโตคอล RFCOMM Bluetooth สำหรับการสื่อสารไร้สาย
การเขียนโปรแกรมสำหรับ Bluetooth ใน Python เป็นไปตามรูปแบบการเขียนโปรแกรมซ็อกเก็ตและการสื่อสารระหว่างอุปกรณ์บลูทู ธ ทำได้ผ่านซ็อกเก็ต RFCOMM RFCOMM (การสื่อสารด้วยคลื่นความถี่วิทยุ) เป็นโปรโตคอลบลูทู ธ ที่ให้พอร์ตอนุกรม RS-232 จำลองและเรียกอีกอย่างว่า Serial Port Emulation โปรไฟล์พอร์ตอนุกรมบลูทู ธ ขึ้นอยู่กับโปรโตคอลนี้ RFCOMM ได้รับความนิยมอย่างมากในแอปพลิเคชันบลูทู ธ เนื่องจากมีการสนับสนุนที่กว้างขวางและ API ที่เผยแพร่สู่สาธารณะ ถูกผูกไว้กับโปรโตคอล L2CAP
นอกจากนี้เรายังใช้โมดูลบลูทู ธ HC-06 ในโครงการก่อนหน้านี้ด้วย: LED ที่ควบคุมด้วยเสียงโดยใช้ Raspberry Pi ตรวจสอบโครงการ Raspberry Pi ก่อนหน้าของเราพร้อมกับโครงการ IoT ที่ดี
การติดตั้งแพ็คเกจที่จำเป็นสำหรับการสื่อสาร Bluetooth:
ก่อนที่จะเริ่มเราจำเป็นต้องติดตั้งโปรแกรมบางอย่างสำหรับการตั้งค่าบลูทู ธ ในการสื่อสารราสเบอร์รี่ Pi คุณควรติดตั้งการ์ดหน่วยความจำ Raspbian Jessie พร้อมกับ Raspberry Pi ตรวจสอบบทความนี้เพื่อติดตั้ง Raspbian OS และเริ่มต้นกับ Raspberry Pi ดังนั้นตอนนี้เราต้องอัปเดต Raspbian โดยใช้คำสั่งด้านล่างก่อน:
sudo apt-get update sudo apt-get upgrade
จากนั้นเราต้องติดตั้งแพ็คเกจที่เกี่ยวข้องกับบลูทู ธ บางส่วน:
sudo apt-get ติดตั้งบลูทู ธ blueman bluez
จากนั้นรีบูต Raspberry Pi:
sudo รีบูต
BlueZเป็นโครงการโอเพ่นซอร์สและสแต็กโปรโตคอล Linux Bluetooth อย่างเป็นทางการ รองรับโปรโตคอล Bluetooth หลักทั้งหมดและตอนนี้กลายเป็นส่วนหนึ่งของ Linux Kernel อย่างเป็นทางการ
Bluemanมีอินเทอร์เฟซเดสก์ท็อปเพื่อจัดการและควบคุมอุปกรณ์บลูทู ธ
ในที่สุดเราก็ต้องการpython Library สำหรับการสื่อสารบลูทู ธเพื่อให้เราสามารถส่งและรับข้อมูลผ่าน RFCOMM โดยใช้ภาษา Python:
sudo apt-get ติดตั้ง python-bluetooth
ติดตั้งไลบรารีรองรับ GPIO สำหรับ Raspberry Pi ด้วย:
sudo apt-get ติดตั้ง python-rpi.gpio
ตอนนี้เราได้ติดตั้งแพ็คเกจที่จำเป็นสำหรับการสื่อสาร Bluetooth ใน Raspberry Pi เรียบร้อยแล้ว
การจับคู่อุปกรณ์กับ Raspberry Pi ผ่านบลูทู ธ:
การจับคู่อุปกรณ์บลูทู ธ เช่นโทรศัพท์มือถือกับ Raspberry Pi นั้นง่ายมาก ที่นี่เราได้จับคู่โทรศัพท์ Android สมาร์ทของเรากับราสเบอร์รี่ Pi ก่อนหน้านี้เราได้ติดตั้ง BlueZ ใน Pi ซึ่งมียูทิลิตี้บรรทัดคำสั่งที่เรียกว่า "bluetoothctl" เพื่อจัดการอุปกรณ์บลูทู ธ ของเรา แต่ก่อนหน้านั้นให้เชื่อมต่อดองเกิล USB Bluetooth ของคุณกับ Raspberry Pi และตรวจสอบว่าตรวจพบหรือไม่โดยใช้คำสั่งด้านล่าง:
lsusb
ตอนนี้เปิดยูทิลิตี้ bluetoothctl ตามคำสั่งด้านล่าง:
sudo bluetoothctl
คุณสามารถตรวจสอบคำสั่งทั้งหมดของ bluetoothctl ยูทิลิตี้โดยพิมพ์'ช่วย' ตอนนี้เราต้องป้อนคำสั่งด้านล่างตามลำดับที่กำหนด:
# เปิดเครื่อง # ตัวแทนบน # ค้นพบบน # จ่ายได้ใน # สแกนบน
หลังจากคำสั่งสุดท้าย “ scan on” คุณจะเห็นอุปกรณ์ Bluetooth (โทรศัพท์มือถือ) ของคุณในรายการ ตรวจสอบให้แน่ใจว่ามือถือของคุณเปิดบลูทู ธ และอุปกรณ์ใกล้เคียงมองเห็นได้ จากนั้นคัดลอกที่อยู่ MAC ของอุปกรณ์ของคุณและจับคู่โดยใช้คำสั่งที่กำหนด:
คู่
จากนั้นคุณจะได้รับแจ้งให้ป้อนรหัสหรือพินในคอนโซลเทอร์มินัลจากนั้นพิมพ์รหัสผ่านที่นั่นแล้วกด Enter จากนั้นพิมพ์รหัสผ่านเดียวกันในโทรศัพท์มือถือของคุณเมื่อได้รับแจ้งและคุณจับคู่กับ Raspberry Pi เรียบร้อยแล้ว เราได้อธิบายกระบวนการทั้งหมดนี้ไว้ในวิดีโอของเราในตอนท้าย
ตามที่บอกไว้ก่อนหน้านี้คุณยังสามารถใช้อินเทอร์เฟซเดสก์ท็อปเพื่อจับคู่โทรศัพท์มือถือได้ หลังจากติดตั้ง Blueman แล้วคุณจะเห็นไอคอน Bluetooth ทางด้านขวาของเดสก์ท็อป Raspberry Pi ดังที่แสดงด้านล่างซึ่งคุณสามารถจับคู่ได้อย่างง่ายดาย
แผนภูมิวงจรรวม:
แผนภาพวงจรนั้นง่ายมากเราเพิ่งเชื่อมต่อ LED กับ PIN 40 (GPIO 21) ของ Raspberry Pi ด้วยตัวต้านทาน 220 โอห์ม:
การควบคุม LED ด้วย Android App BlueTerm:
ตอนนี้หลังจากปอกเปลือกโทรศัพท์มือถือที่เราจำเป็นต้องติดตั้งApp Android สำหรับการสื่อสารกับราสเบอร์รี่ Pi โดยใช้อะแดปเตอร์บลูทู ตามที่บอกไว้ก่อนหน้านี้โปรโตคอล RFCOMM / SPP เลียนแบบการสื่อสารแบบอนุกรมผ่านบลูทู ธ ดังนั้นเราจึงติดตั้งแอพ BlueTermที่นี่ซึ่งรองรับโปรโตคอลนี้
คุณยังสามารถใช้แอพ Bluetooth Terminal อื่น ๆ ที่รองรับการสื่อสารผ่านซ็อกเก็ต RFCOMM
หลังจากดาวน์โหลดและติดตั้งแอพ BlueTerm แล้วให้เรียกใช้โปรแกรม Python ด้านล่างจากเทอร์มินัลและเชื่อมต่ออุปกรณ์ raspberrypi ที่ จับคู่จากแอพ BlueTerm ในเวลาเดียวกัน
หลังจากเชื่อมต่อสำเร็จคุณจะเห็นการ เชื่อมต่อ: raspberrypi ที่มุมขวาบนของแอพดังที่แสดงด้านล่าง:
ตอนนี้คุณสามารถป้อน '1' หรือ '0' จากแอพ BlueTerm เพื่อทำให้ GPIO พิน HIGH และ LOWตามลำดับซึ่งจะเปิดและปิด LED ที่เชื่อมต่อกับพินนี้ กด 'q' เพื่อออกจากโปรแกรม คุณสามารถ ใช้แป้นพิมพ์การพิมพ์ด้วยเสียงของ Google เพื่อควบคุม GPIO โดยใช้เสียงของคุณ ตรวจสอบการสาธิตทั้งหมดในวิดีโอที่ให้ไว้ในตอนท้าย
ดังนั้นนี้เป็นวิธีที่คุณสามารถแบบไร้สายควบคุม GPIO Pin ใช้ App Android: บลูทู ธ ตรวจสอบวิธีใช้บลูทู ธ กับ Arduino ด้วย
คำอธิบายการเขียนโปรแกรม:
โปรแกรม Python สำหรับควบคุม Raspberry Pi GPIO ด้วย Android Appนั้นง่ายมากและอธิบายได้ด้วยตนเอง เพียง แต่เราต้องเรียนรู้เล็กน้อยเกี่ยวกับรหัสที่เกี่ยวข้องกับการสื่อสาร Bluetooth RFCOMM ก่อนอื่นเราต้องนำเข้าไลบรารีซ็อกเก็ตบลูทู ธ ซึ่งช่วยให้เราสามารถควบคุมบลูทู ธ ด้วยภาษา Python เราได้ติดตั้งไลบรารีสำหรับสิ่งเดียวกันในส่วนก่อนหน้านี้
นำเข้าบลูทู ธ
ด้านล่างนี้เป็นรหัสที่รับผิดชอบในการสื่อสารด้วย Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () พิมพ์ "ยอมรับการเชื่อมต่อจาก" ที่อยู่ในขณะที่ 1: ข้อมูล = client_socket.recv (1024)
ที่นี่เราสามารถเข้าใจพวกเขาทีละบรรทัด:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): การสร้างซ็อกเก็ตสำหรับการสื่อสาร Bluetooth RFCOMM
server_socket.bind (("", พอร์ต): - เซิร์ฟเวอร์ผูกสคริปต์บนโฮสต์ '' กับพอร์ต
server_socket.listen (1) : เซิร์ฟเวอร์จะรับฟังการเชื่อมต่อทีละรายการ
client_socket ที่อยู่ = server_socket.accept () : เซิร์ฟเวอร์ยอมรับคำขอเชื่อมต่อของไคลเอ็นต์และกำหนดที่อยู่ mac ให้กับที่ อยู่ ตัวแปร client_socket คือซ็อกเก็ตของไคลเอนต์
ข้อมูล = client_socket.recv (1024): รับข้อมูลผ่านซ็อกเก็ตลูกค้า client_socket และกำหนดให้ตัวแปร ข้อมูล สามารถรับอักขระได้สูงสุด 1024 ตัวต่อครั้ง
ในที่สุดหลังจากการเขียนโปรแกรมทั้งหมดให้ปิดการเชื่อมต่อไคลเอนต์และเซิร์ฟเวอร์โดยใช้รหัสด้านล่าง:
client_socket.close () server_socket.close ()
รหัสอื่น ๆ ทั้งหมดนั้นง่ายและอธิบายได้ด้วยตนเอง ตรวจสอบรหัสเต็มด้านล่าง ลองแก้ไขโครงการนี้และคุณสามารถใช้เพื่อควบคุมสิ่งอื่น ๆ แบบไร้สายได้เช่นการใช้รีเลย์คุณสามารถควบคุมเครื่องใช้ภายในบ้านหรือควบคุมรถหุ่นยนต์ผ่านโทรศัพท์ Android ได้