Bird
Raised Fist0
IOT Protocolsdevops~10 mins

BLE for wearables and beacons in IOT Protocols - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to start scanning for BLE devices.

IOT Protocols
ble_scanner.start_scan([1])
Drag options to blanks, or click blank then click option'
Apower=3
Btimeout=10
Cduration=5
Dinterval=20
Attempts:
3 left
💡 Hint
Common Mistakes
Using timeout instead of duration
Confusing interval with scan time
2fill in blank
medium

Complete the code to advertise a BLE beacon with a specific UUID.

IOT Protocols
beacon.advertise(uuid=[1])
Drag options to blanks, or click blank then click option'
A"beacon-uuid"
B123e4567-e89b-12d3-a456-426614174000
Cuuid-1234
D"123e4567-e89b-12d3-a456-426614174000"
Attempts:
3 left
💡 Hint
Common Mistakes
Not using quotes around the UUID
Using an invalid UUID format
3fill in blank
hard

Fix the error in the code to connect to a BLE device by address.

IOT Protocols
device = ble.connect([1])
Drag options to blanks, or click blank then click option'
Adevice_address
B"device_address"
Caddress
Ddevice.addr
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a variable name instead of a string
Missing quotes around the address
4fill in blank
hard

Fill both blanks to create a dictionary of beacon names and their RSSI values.

IOT Protocols
beacon_data = {device.[1]: device.[2] for device in scanned_devices}
Drag options to blanks, or click blank then click option'
Aname
Brssi
Caddress
Duuid
Attempts:
3 left
💡 Hint
Common Mistakes
Using address instead of name
Using uuid instead of rssi
5fill in blank
hard

Fill all three blanks to filter scanned devices with RSSI stronger than -70 and create a dictionary with their UUIDs and names.

IOT Protocols
filtered = {device.[1]: device.[2] for device in scanned_devices if device.[3] > -70}
Drag options to blanks, or click blank then click option'
Auuid
Bname
Crssi
Daddress
Attempts:
3 left
💡 Hint
Common Mistakes
Using address instead of uuid
Filtering by name instead of rssi

Practice

(1/5)
1. What is the main advantage of using BLE (Bluetooth Low Energy) for wearables and beacons?
easy
A. It requires no pairing or security.
B. It provides very high data transfer speeds.
C. It uses very little power, extending battery life.
D. It works only with smartphones.

Solution

  1. Step 1: Understand BLE's design goal

    BLE is designed to use minimal power to keep small devices running longer on batteries.
  2. Step 2: Compare options

    High speed is not BLE's focus, pairing is often needed, and BLE works with many devices, not just smartphones.
  3. Final Answer:

    It uses very little power, extending battery life. -> Option C
  4. Quick Check:

    Low power = A [OK]
Hint: Remember BLE is for low power, not high speed [OK]
Common Mistakes:
  • Confusing BLE with classic Bluetooth speed
  • Thinking BLE needs no pairing always
  • Assuming BLE only works with phones
2. Which of the following is the correct BLE advertising packet type used by beacons to broadcast data without connection?
easy
A. Connectable Directed Advertising
B. Extended Advertising
C. Scan Response Advertising
D. Non-Connectable Undirected Advertising

Solution

  1. Step 1: Identify advertising types

    Beacons typically use Non-Connectable Undirected Advertising to broadcast data without needing a connection.
  2. Step 2: Eliminate other options

    Connectable Directed requires connection, Scan Response is a reply to scans, Extended Advertising is newer but not typical for simple beacons.
  3. Final Answer:

    Non-Connectable Undirected Advertising -> Option D
  4. Quick Check:

    Beacon broadcasts = Non-Connectable Undirected [OK]
Hint: Beacons broadcast without connection using non-connectable packets [OK]
Common Mistakes:
  • Choosing connectable advertising for beacons
  • Confusing scan response with advertising
  • Assuming extended advertising is always used
3. Given this Python snippet using a BLE library to scan for devices, what will be printed if a beacon advertising with name 'Beacon123' is found?
devices = scanner.scan(5)
for dev in devices:
    if dev.getValueText(9) == 'Beacon123':
        print(f"Found: {dev.addr}")
medium
A. Found:
B. Found: Beacon123
C. Error: getValueText is not a function
D. No output

Solution

  1. Step 1: Understand the code logic

    The code scans for 5 seconds, then checks each device's advertised name (type 9) for 'Beacon123'.
  2. Step 2: Analyze the print statement

    If found, it prints 'Found: ' plus the device's address, not the name itself.
  3. Final Answer:

    Found: <device address> -> Option A
  4. Quick Check:

    Print device address when name matches [OK]
Hint: Check what is printed: address, not name [OK]
Common Mistakes:
  • Expecting the name printed instead of address
  • Thinking getValueText is invalid
  • Assuming no output if beacon found
4. You try to connect to a wearable device using its BLE address but get a connection timeout error. Which of these is the most likely cause?
medium
A. The device is advertising as non-connectable only.
B. The device address is invalid format.
C. The scanning duration was too long.
D. The device uses classic Bluetooth, not BLE.

Solution

  1. Step 1: Understand connection timeout causes

    If a device advertises as non-connectable, it will not accept connection requests, causing timeout.
  2. Step 2: Evaluate other options

    Invalid address would cause immediate error, scanning duration doesn't affect connection, classic Bluetooth devices won't appear in BLE scan.
  3. Final Answer:

    The device is advertising as non-connectable only. -> Option A
  4. Quick Check:

    Non-connectable device causes timeout [OK]
Hint: Non-connectable advertising means no connections allowed [OK]
Common Mistakes:
  • Confusing scanning time with connection issues
  • Assuming invalid address causes timeout instead of error
  • Mixing classic Bluetooth with BLE scanning
5. You want to read the heart rate data from a wearable using BLE. Which sequence of steps correctly describes the process?
hard
A. Discover GATT services -> Scan for devices -> Connect to device -> Read heart rate characteristic -> Disconnect
B. Scan for devices -> Connect to device -> Discover GATT services -> Read heart rate characteristic using UUID -> Disconnect
C. Connect to device -> Scan for devices -> Read heart rate characteristic -> Discover GATT services -> Disconnect
D. Read heart rate characteristic -> Scan for devices -> Connect to device -> Discover GATT services -> Disconnect

Solution

  1. Step 1: Understand BLE data reading workflow

    First, scan to find the device, then connect to it to access its data.
  2. Step 2: Discover GATT services and read characteristic

    After connecting, discover services to find the heart rate characteristic by UUID, then read it.
  3. Step 3: Disconnect after reading

    Once data is read, disconnect to save power and free resources.
  4. Final Answer:

    Scan for devices -> Connect to device -> Discover GATT services -> Read heart rate characteristic using UUID -> Disconnect -> Option B
  5. Quick Check:

    Scan -> Connect -> Discover -> Read -> Disconnect [OK]
Hint: Follow BLE steps in order: scan, connect, discover, read, disconnect [OK]
Common Mistakes:
  • Trying to read before connecting
  • Discovering services before connecting
  • Skipping disconnect step
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard