This project was done as part of Microprocessor course. The goal of the project
was
to design and develop an Internet-of-Things system composed of multiple embedded devices with
cloud-enabled services.
The system contains four units: STM32F4 Discovery board, STM32F401RE Nucleo board
with an IDB04A1 BLE daughter board, BLE-supported smartphone running Android 6.0, and Amazon S3 with
Lambda. Each unit is able to transmit and receive data, and is connected with other modules via UART,
BLE, or the Internet.
The STM32F4 Discovery board samples orientation data from the onboard
accelerometer.
The raw data is transmitted to Nucleo daughter board via UART connection. The daughter enables the
board
to connect with other devices via Bluetooth Low Energy (BLE). The bundled device acts as a transceiver
that receives accelerometer readings from the Discovery board and transmits them to the phone over
BLE.
After the smartphone obtains data from the Bluetooth transceiver, it saves the
data
in the phone’s external storage. From the Android app, the user is able to select the saved data file
and
upload it to an AWS S3 bucket.
When a new file is uploaded to the bucket, a Lambda function is triggered to
perform
FIR filtering on the raw data, calculate pitch and roll of each entry, and save the processed data to
a
new file in the bucket. From the Android app, the user is able to selected the processed data file and
download it to the phone.
Next, the Android app sends the processed data back to the BLE transceiver, which
then transmits it back to the Discovery board, following the same interfaces. Finally, the Discovery
board convert the digital values to an analog voltage using DAC and the analog signal is measured on
an
oscilloscope for visualization.