BeagleBoard/GSoC/Seismometer

=BeagleBone Remote Seismometer Node =

Student: Mariya Tsvarkaleva Mentors: Stephanie Lockwood-Childs, Steve Arnold Code: https://github.com/mariyagcv/Seismometer Wiki: http://elinux.org/BeagleBoard/GSoC/Seismometer GSoC: Not Applicable

=Status= This project is currently just a proposal.

=Proposal= Tasks completed: 1. Created accounts on Github, eLinux, Freenode and Google Groups. 2. Created a "Hello World" application, cross-compiled and executed. Generated a pull request, link here

About you
IRC: mariyagcv Github: https://github.com/mariyagcv School: University of Manchester Country: UK Primary language (We have mentors who speak multiple languages): English Typical work hours (We have mentors in various time zones): 8AM-5PM BST Previous GSoC participation: No previous experience.

About your project
Project name: BeagleBone Remote Seismometer Node

Description
This project's main goal is to develop a low-cost interconnected system that will detect seismic activity and help us understand the nature of earthquakes better, and possibly predict minor shocks. This will be implemented by using a system of multiple BeagleBone Remote Seismometer Nodes, whose primary function will be to log data, send it to a centralized server and display it as a web interface. As this will be network of nodes, more than one device would be required for the project, and if it's not possible for the company to provide them, I would be happy to personally purchase the extra nodes. The following modules will form the project: Modules 1. "The nodes": a BeagleBone board with various sensors, but most importantly an accelerometer. As an additional idea, it would be very interesting to experiment with adding other types of sensors, such as temperature, pressure and humidity. I have found a project from last year which could be a good starting point [1]. I am planning on evaluating its performance as soon as I have access to a development board, and discuss this with my mentor.

In terms of programming, there will be code for accessing the accelerometer and sending data to the server. Data will also need to be compressed and sent in packages rather than requests each time new data is available, in order to avoid network and server overloading. I will need to perform tests under different network conditions in order to optimise data transfer. Most of the coding for this module will be done in JavaScript / node.js.

Testing such a project is perhaps one of the hardest tasks - waiting for an earthquake to happen is not a particularly efficient option. For accurate testing purposes, I will build a device that will move the sensor in a controlled manner, so that accuracy of different types of accelerometers can be evaluated. I will attempt building a minimal version of the testing setup presented in [2]. [4] seems to be a much more interesting approach to implement, and I shall try to experiment with introducing concepts from there, but I probably lack the resources to be able to reproduce such a complex setup, and it would most likely end up as a rather expensive device. Nonetheless, it would be an interesting experiment. Ideally one should be able to provide a magnitude and the device should be able to simulate what the node might experience during a real earthquake (including simulating noise). This device will consist of another BeagleBoard controlling servo motors that will move a platform on which the node will be placed.

2. A server that integrates with QCN client software and also sends processed data to a user interface. Python seems like a good option for this due to flexibility and the various signal processing libraries it offers. As a further development of the project, an API could be built for accessing meaningful statistics. Some ideas in terms of 3. A user interface allowing for the data to be visualized. This will include graphs, using Chart.js [3] and easy access to statistics from aggregated data. I will make use of various web tools, such as HTML, CSS and JavaScript.

Timeline
2018-04-23 - 2018-05-14: Community Bonding Period Getting more involved in the community, checking out different projects and learning about development on BeagleBoard. Discussing the workflow with mentors and splitting work into smaller deliverable parts.

2018-05-21: Milestone #1

Evaluating [1] on an actual board, documenting any issues that I run into with installing the module. If the module works well, start turning it into a proper npm package, so that it’s easily installable.

2018-05-28: Milestone #2

Build the earthquake simulator platform for testing the device.

2018-06-04: Milestone #3

Write unit and integration tests that integrate the testing device with the node. Jointly evaluate their accuracy

2018-06-11: Milestone #4

Build a basic web interface and ensure that there’s a full pipeline. Deliverables for first evaluation: code for one node, installable as a node package, schematics and code for the earthquake simulator.

2018-06-18: Milestone #5

Try a few different accelerometers and work on compression for accelerometer data, test under various network speeds.

2018-06-25: Milestone #6

Add multiple nodes and make sure that data from each node is being sent through; test the nodes under different network speeds. Work on registering devices with QCN. Set up automatic deployment to all nodes registered to one user.

2018-07-02: Milestone #7

Offer a more complex web interface where all nodes can be monitored, with live graphs for each of the nodes.

2018-07-09: Milestone #8

Document, refactor and test existing code and schematics. Produce a video of the work to that point. Deliverables for the second evaluation period:

2018-07-16: Milestone #9

Work on processing signal and try to find interesting correlations and validate ideas. Test multiple nodes on the earthquake simulator, with different placements on the platform and try to correlate the signals. Adding other objects on the earthquake test platform and add objects under the nodes, noting how this influences the readings.

2018-07-23: Milestone #10

Allow users to remotely control the node via the web interface. Offer options to reset certain modules or the nodes themselves. Produce a module that attempts to locate the “epicenter of an earthquake” on the earthquake simulator.

2018-07-30: Milestone #11

Produce a full log after each “earthquake”, computing the scale of the earthquake, expected damage, affected areas and epicenter using the platform as a reference. Display this on a “topological map” of the earthquake simulator.

2018-08-06: Milestone #12 Used as a padding week, in case the existing repository turns out to be unfit for what we need. Here expecting to finish writing the project report, documentation and any code refactoring needed, as well as lay out a path and document project ideas for other people who might want to get involved.

Experience and approach
I am currently a student at the University of Manchester doing a BSc in Computer Science. I have always been fond of dealing with both hardware and software, and as the nature of this project makes it necessary to be skilled at both, I am extremely excited to work on this,. One source of inspiration for me to start exploring hardware has been other students' projects at the university, which in turn motivated me to built a hardware hack at a hackathon in Edinburgh. For my project I implemented the use of an Arduino board with the final goal of building a remotely controlled device that functions as an instrument made out of air pumps and bottles filled with water, each tuned to a specific frequency, resulting in the reproduction of a range of musical notes. In addition to this, I've also worked on projects using Raspberry Pi and FPGA boards. The former was used in a team environment for the creation of a web application while the latter for the design of a simple MU0 processor. When it comes to software, I am confident that I can contribute to working products using various programming languages, as I am experienced with using web development tools to build web applications. I am very motivated and having no other commitments during the summer, I am doing this to learn as much as possible and get involved with the open-source community. However, I would like to mention that I won't be able to work full-time on the project until after the first two weeks, as they coincide with my exam period. I am happy to put in more time, and perhaps weekends, if needed to catch up with the timeline and make up for the first two weeks, but there will be some amount of development happening during that period.

Contingency
I will make sure to keep in touch with the mentor regularly and avoid miscommunication, but in case I find myself stuck and no mentor is available, I will make use of BeagleBoard's strong community support. In addition, I think there’s a lot of supporting information available alongside some very good documentation.

Benefit
Developing a BeagleBone Remote Seismometer Node network will benefit in detecting and better understanding earthquakes. Being portable and inexpensive, BeagleBoard nodes can be easily deployed around the world and create an efficient and powerful monitoring system. The project also has a lot of room for growth, as many additional functionalities can be implemented, such as multiple types of sensors for detecting temperature, pressure, and humidity, and many more.