Project Name: Buddy Beacon
Project Functional Description:
If you and a group of friends are choosing between camping in the wilderness or going to a crowded music festival, you might encounter the same issue in these two totally different locations. In both locations, you could experience a disruption in cellular service that can make it difficult to reconvene with your group if you get split up. In a remote location, cellular service is highly limited if there is any at all, and on the contrary, in a crowded location, cell service often can’t handle the amount of data that is trying to be transferred by everyone at once.The Buddy Beacon GPS Communicator is a handheld device, with the plastic case measuring roughly 7.2 inches long, 3.7 inches wide, and 1.3 inches thick (dimensions not including antenna). It is designed for outdoor use and is water and dust resistant. The exterior features an OLED screen, an 4x3 alphanumeric keypad, a directional keypad, and a 3-inch foldable antenna extending from the top. It is powered by a disposable 9V alkaline battery which is connected to a buck converter that will step the voltage down to 3.3V.
A Buddy Beacon has an STM32 MCU that interfaces with an OLED screen via an SPI bus, a 4x3 matrix keypad via 7 header pins, and directional keys via 6 header pins. It has an included LoRa chip for local radio communication, a GPS chip for receiving location coordinates, and a 3-axis magnetometer for determining magnetic field direction. These 3 chips interface with the MCU via UART, UART, and I2C respectively.
The OLED screen will display a menu that can be navigated using the directional keys, allowing the user to choose between 3 options: “Your Beacons”, “Your Waypoints”, and “Messages”. In “Your Beacons” mode the user has the option to select a beacon from their saved beacons list and is then able to either locate it or send a message to it. If they choose to find it, the LoRa chip, GPS chip, and magnetometer chip work together to communicate with the beacon, calculate bearing in relation to it, and display an arrow that points to it on the OLED screen. If the user chooses to send a message to it, the user will be able to send up to a 300 character message via the 4x3 keypad to the other beacon. In “Your Waypoints” mode, the user has the option to select a waypoint from their saved waypoints list. Then the coordinates from the GPS chip are used to calculate bearing in relation to saved waypoint coordinates and similarly, display an arrow pointing to the waypoint. In “Messages” mode, the user is able to view text messages that have been sent and received. In all modes, the LoRa chip and antenna make use of AT commands to send and receive messages.
Multiple Buddy Beacons will act as a self-organizing mesh network. If two beacons attempting to communicate are not in range of one another, a third beacon within range of both can act as an intermediary to pass messages, GPS coordinates, and all other data between the two attempting to communicate.
The Buddy Beacon can be put from its normal “on” mode into a low power “sleep” mode by holding the right and left directional keys for 3 seconds, intended for when a user stores the device in a pocket. In this mode, the OLED screen will be off and the keypad is not functional. The device will still be able to store messages from other Buddy Beacons it receives over LoRa. It can also be put into its “off” mode by holding the up and down directional keys for 3 seconds, intended for when the device functions are no longer needed in any capacity. However, it can be woken from “sleep” or “off” modes by pressing the center button for 3 seconds.
There are 5 components drawing power from the microcontroller all at 3.3V. The LoRa module uses ~15mA while idle, ~150mA while transmitting, and ~30mA while receiving. The GPS module uses ~25mA in typical operation and the magnetometer module uses ~1mA in typical operation. The OLED display uses ~345mA on average but can vary within ±30mA depending on the screen brightness. The keypad and the directional keys only draw current when a button is pressed and their power draw is around ~1mA, making it negligible.
If we have extra time, we will implement the ability for the device to notify the user when a message is received by buzzing. The 3V 12000RPM vibration motor will activate in “on” and “sleep” modes, but not in “off” mode. This motor will draw ~55mA while activated.
Project Specific Design Requirements (PSDRs):
- PSDR #1 (Hardware): An ability to communicate between an STM32 microcontroller and LoRa chip via UART.
- PSDR #2 (Hardware): An ability for the microcontroller to interface with an OLED screen via SPI.
- PSDR #3 (Hardware): An ability to use a team designed buck converter to step down battery voltage from 9V to 3.3V.
- PSDR #4 (Software): An ability to send messages less than 200 characters entered by the user to other Buddy Beacons over LoRa.
- PSDR #5 (Software): An ability for multiple Buddy Beacons to act as a self-forming mesh network through distributed new node discovery.
- STRETCH PSDR #1 (Software): An ability to activate a 3V DC vibration motor when the Buddy Beacon receives a message in "on" or "sleep" mode.