Skip to content

Raspberry Pi Model 3

Rajanikant Deshmukh edited this page Jul 7, 2019 · 1 revision

Raspberry Pi Model 3

Raspbian Stretch

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()

Android Things

TODO

Clone this wiki locally