May 12, 2017

Our team members at the final public demo!

Updates made from the previous week are described below:

    Signal Processing and Fill Level Classification, Including Machine Learning Exploration - We developed a couple of different ways to do fill level classification during the week, including testing accuracy with the k Nearest Neighbor algorithm using Python's Scikit Learn library. Additionally, we tested further accuracy with the mini keg and our current algorithm using different placements of the transducer and piezoelectric sensor.
    Web Application Graph Improvements - Our graphs on the main dashboard page were modified.
    Assembly of 3D Printed Case - The casing for the CC3200 and breakout board was 3D printed and utilized for the duration of our public demo.

May 6, 2017

Here are some images from the private demo:
The overall system with the container, transducer, and piezo sensor
Detached version of the PCB design inspired by the LaunchPad
Image of the TI CC3200 and custom breakout board
View of the main dashboard of our front-end web application
Photo Credits go to our TA, Artur!

Updates made from the previous week are described below:

    PCB Assembly and Installation - The custom PCBs were assembled. Due to a short in the major board, we ended up using the breakout board in conjunction with our CC3200 to make it easier to connect the transducer and piezoelectric sensor.
    Signal Processing and Fill Level Classification - We continued developing a comprehensive testing suite that was able to determine the accuracy of our algorithm while proceeding to connect our backend Python scripts to the remainder of the pipeline.
    Front-End Web Application Graphs and Notification Feature - Now that the front-end was able to read classifications and fill levels over time, we were able to incorporate a couple of additional features to improve our user experience, such as showing a graph of container fill levels over time and showing a container fill level history with timestamps.
    CC3200 Platform Development - The CC3200 is able to send packets to the backend Node server, which proceeds to do the signal processing calculations necessary to do fill level classification.
    Casing Development - We developed a casing to enclose the CC3200 and breakout board, which was 3D printed for the public demo.

April 17, 2017

    PCB Design - The first iteration of development of a custom circuit board inspired by the TI CC3200 was completed. In addition, the design of a small breakout board to interface with the TI chip, surface transducer, and piezoelectric sensor was developed.
    Signal Processing and Fill Level Classification - All of the current algorithms for signal processing and fill level classification were transferred over from the Raspberry Pi to the TI CC3200.
    CC3200 Platform Development - The TI CC3200 chip was integrated with our current signal processing algorithm on the backend of the web server.

April 10, 2017

    PCB Design - Development on a custom circuit board inspired by the TI CC3200 LaunchPad continued.
    Signal Processing and Fill Level Classification - The Raspberry Pi allows a variety of frequencies to be swept, where we perform the FFT and data aggregation on each response from the piezoelectric sensor. Using a weighted aggregation of data, we are able to estimate the fill level with reasonable (>50% accuracy). In addition, we experimented with a number of different transducer and piezoelectric sensor orientations, and we found that our metal water bottle worked best when on its side, with the transducer on the bottom and the piezoelectric sensor on the side somewhere, as long as it was off the axis of symmetry.
    CC3200 Platform Development - Development continued on the TI CC3200 chip to prepare it to send packets over UDP to the web application, which is where the data processing and front-end will display the classification results.

April 3, 2017

    PCB Design - Development on a custom circuit board inspired by the TI CC3200 LaunchPad continued.
    Signal Processing and Fill Level Classification - We used the ADC values that we were getting from the piezoelectric sensor, performed an FFT on them and developed a simple guessing algorithm for the Raspberry Pi to predict the container's fill level based on characteristics of the FFT for each fill level that we had picked up on.
    CC3200 Setup - We began working with Code Composer Studio and learning to interface with the CC3200 by running sample programs on it.

March 27, 2017

    PCB Design - Further development has taken place to develop the schematics for our custom PCB.
    Signal Processing - This week, we created a working demo that is able to vibrate a transducer using the Raspberry Pi and read values using the piezoelectric sensor and an ADC.
    Web Endpoint UI Updates - A responsive web endpoint has been updated to include imagery of a container with fill level.

March 20, 2017

    PCB Design - For our final prototype at the end of the semester, StreamFi will have a custom PCB with a Texas Instruments CC3200 chip, which can be found in the PCB design.
    Raspberry Pi Setup/Interfacing - We have developed a Python program to interface with and test the GPIO pins on our first prototype board, a Raspberry Pi 3.
    Signal Processing/SVM Classification Setup - To determine liquid levels, our initial plan is to develop a program that performs a Fast Fourier Transform (FFT) on data that we receive from an audio sensor, and then use SVM within Python's SciKit Learn library to classify frequency responses as a certain liquid level.
    Web Endpoint Creation - A responsive web endpoint has been created using Node, allowing the user to interact with a web interface. Once the prototype is completed, a StreamFi device will communicate with this web endpoint to display liquid levels to the user.

March 6, 2017

    Bill of Materials - Here is our initial bill of materials for hardware that we will be using for the development of StreamFi, including a discretionary budget for any extra materials that we will need to purchase.
    Research Paper Analysis - We have analyzed a number of research papers out in the field about similar sensing techniques, such as touch sensing using acoustics and water level sensing. In addition to reading these papers, we have also analyzed their development methods and recorded ideas to keep in mind for StreamFi.
    Software Stack - This indicates what the software stack will look like between the user and our server. There are two different stacks included: one involving computation on an exported CSV file, and one involving data storage and computation on the AWS S3/Lambda platforms.
    System Backup Analysis - In the event that we are unable to use acoustic sensing with a transducer and piezo element to detect liquid levels outside of the container, we have prepared an alternative plan for how our liquid sensing system can be implemented.