Giter Site home page Giter Site logo

leon-thomm / nus-cs3237-iot-buoys Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 1.0 27.39 MB

C++ 29.90% Kotlin 0.06% Ruby 0.63% Swift 0.19% Objective-C 0.02% Dart 7.96% HTML 3.87% CMake 4.36% C 0.34% Dockerfile 0.19% Python 9.08% JavaScript 2.58% PureBasic 24.44% TeX 16.39%

nus-cs3237-iot-buoys's Introduction

nus-cs3237-iot-buoys

Project Proposal

Team Members:

  • Pinkl Constantin Maxime (A0260806H),
  • Teo Chuan Kai (A0174217H),
  • Thomm Leon Felix (A0262962X),
  • Wong Chee Hong (A0217558W),
  • Lai Yu Heem (A0201317X)

Project/Team Title: Underwater Weather Forecast

Introduction / Problem Statement:

Weather forecasts are generally used to predict weather conditions for a wide range of applications, such as outdoor activities. For marine sports such as surfing or scuba diving, weather forecasts are useful but may not be sufficient in predicting the current conditions of the sea. Weather forecasts do not provide localized information about how turbulent or visible the sea may be. Such data collected may also be applicable in the long-term for climate scientists that are studying patterns between weather conditions and sea conditions over time.

Proposed IoT Solution:

We develop buoys which collect information about the current water conditions such as water turbulence (waves), water visibility and water temperature. A single buoy can be generalized to multiple buoys to scale. Each buoy may intermittently communicate with neighboring buoys to wake up sleeping buoys for better energy management when it detects some change of interest (certain threshold).

For the project we will be demonstrating the solution with two buoys.

Sensors/Actuators/Hardware Used:

Sensors/devices used per buoy:

  • Phone (Accelerometer, Camera, Flashlight, GPS, Internet)
  • A portable power bank acting as a power source
  • WeMOS D1
  • Temperature sensor
  • Photoresistor
  • Accelerometer (waves)
  • IR sensor

Physical items:

  • A large tub to hold water for simulation purposes.
  • Waterproof container for buoy

Machine Learning Models:

  • Classifier for defining underwater visibility based on light intensity
  • Classifier for defining water turbulence based on accelerometer data
  • Classifier to predict future visibility underwater using all data provided by the Buoy.

System Architecture:

Phone app combined with WeMOS controller and sensors that collects data and sends it to the cloud.

Multiple buoys collect data that they send to the cloud, where it is processed.

Predicted future data and real time data can be accessed through a web interface.

Other Cool Features:

  • Building a real-time web interface
  • Creating a water-proof enclosure for our sensors and phones

Possible Limitations or Challenges:

  • Demonstrating the system may have to be attempted at a reduced scale, such as using a container to replicate the ocean.
  • Existing data for parameters such as wave movements, water temperature of a certain location may be difficult to access, making collection of data to train a ML model difficult.
  • In order to utilise the accelerometers from our phones, we may have to develop applications that communicate with the sensors within the phone.
  • Waterproofing our enclosures.

Timeline:

Until 15 October (Check In 1): [two weeks]

- Figuring out all the sensors we want to use (underwater temperature, IR, accelerometer, light detector, etc.). 
- Writing some functions for using the sensors in our setup. 

Until 29 October (Check in 2): [two weeks]

- Get all equipment to build the buoy. 
- Assemble the buoys. 
- Start collecting data. 

Until 7 November (Presentation Week): [one week]

- Collect data, train models, make predictions. 
- Finish project 

Until 20 November (Submission): [two weeks]

- Submit Report 

nus-cs3237-iot-buoys's People

Contributors

cheehongw avatar exetr avatar leon-thomm avatar tino3141 avatar yuheem avatar

Watchers

 avatar  avatar  avatar

Forkers

cheehongw

nus-cs3237-iot-buoys's Issues

power management and wake up

To include some type of realtime component, we thought of implementing a wake up mechanism, where a WeMOS sensing some significant change in data can wake up others to pull everyone in an awake mode, causing them to record with higher frequency.

power management

The above implies at least two different modes of operation for the WeMOS. Unfortunately, it seems like putting the WeMOS into an actual sleep mode is not very useful, as it will probably break the WiFi connection, and reconnecting to WiFi is 1. unreliable and can 2. strongly vary in delay. Therefore, for now, we keep the WeMOS awake and just use simple delays.

resources:

wake up

We will try to simply use a dedicated MQTT channel to which every WeMOS subscribes and publishes to.

Check-in 2 Pointers

  • Seek advice from prof about drilling into the plastic container - is it advisable or should try alternative means (EG hot rod for incisions)
  • Potential for waterproof temperature sensors (hot-gluing the sensors directly may have damaged them)

Prof briefing 1

  1. narrow down the use case - what state/s exactly do we want to predict, and how?
  2. notice the additional accelerometer in the set, it is much lighter than the phone
  3. it's ok to pull in additional data sources to feed the models, such as OpenWeatherMap API
  4. architecture seems good
  5. finish POC in two weeks from now

Cloud Servers

Add SSH public keys here for access to hosts.

104.248.98.70 (iot.ckteo.com)

Data collection endpoint, stores data within postgresql & mongodb

SSH into respective accounts (ch, ck, yh, tino, leon; all accounts have sudo rights already) at port 3237.

  • MQTT Server
  • HTTP Endpoint

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.