-
Notifications
You must be signed in to change notification settings - Fork 0
Raspberry Pi Model 3
Rajanikant Deshmukh edited this page Jul 7, 2019
·
1 revision
First, you will need to install python Bluetooth packages in Raspbian.
Open terminal and type/paste this command sudo apt-get install bluez python-bluez
.
Then, put the following code in any accessible file, say blubot-server.py
.
Sudo permission is needed to run this code. Run it by sudo python blubot-server.py
.
import bluetooth as bt
SERVER_MAC_ADDRESS = "B8:27:EB:2F:69:A3"
BACKLOG = 1
UUID = "00001101-0000-1000-8000-00805F9B34FB"
COMMANDS = {
0x0A : 'a',
0x0B : 'b',
0x0C : 'c',
0x0D : 'd',
0x01 : 'up',
0x02 : 'down',
0x03 : 'left',
0x04 : 'right',
0x00 : 'zero',
0xFF : 'close'
}
def execute_command(cmd):
# Pint received command
print "Command received '%s'" %cmd
if cmd == 'a':
# TODO: Implement command 'a'
pass
elif cmd == 'b':
# TODO: Implement command 'b'
pass
elif cmd == 'c':
# TODO: Implement command 'c'
pass
elif cmd == 'd':
# TODO: Implement command 'd'
pass
elif cmd == 'up':
# TODO: Implement command 'up'
pass
elif cmd == 'down':
# TODO: Implement command 'down'
pass
elif cmd == 'left':
# TODO: Implement command 'left'
pass
elif cmd == 'right':
# TODO: Implement command 'right'
pass
elif cmd == 'zero':
# TODO: Implement command 'zero'
pass
def server():
# Create server socket
server_sock = bt.BluetoothSocket(bt.RFCOMM)
print 'Created Server Socket'
# Start listning
server_sock.bind((SERVER_MAC_ADDRESS, bt.PORT_ANY))
server_sock.listen(BACKLOG)
# Set UUID
bt.advertise_service(server_sock, "BluBotServer",
service_id = UUID,
service_classes = [UUID, bt.SERIAL_PORT_CLASS],
profiles = [bt.SERIAL_PORT_PROFILE])
while True:
print "Accepting connections now.."
try:
# Accept conection
client_sock, address = server_sock.accept()
print "Accepted Conection from :", str(address)
print "Startted listning to commands."
while True:
try:
data = client_sock.recv(4)
print data
if len(data) == 0:
continue;
signal = int(data, base = 16)
execute_command(COMMANDS[signal])
# Break the loop if command is 'close'
if COMMANDS[signal] == 'close':
break
except Exception as e:
print 'Error receiving signal :', e
except KeyboardInterrupt:
if not client_sock:
client_sock.close()
server_sock.close()
break
except:
# Close client socket
if not client_sock:
client_sock.close()
finally:
# Close server socket
if not server_sock:
server.sock.close()
def main():
server()
if __name__ == '__main__':
main()
TODO