S18: Rahee

From Embedded Systems Learning Academy
Revision as of 23:00, 23 May 2018 by Proj user6 (talk | contribs) (Hardware Interface)

Jump to: navigation, search

Grading Criteria

  • How well is Software & Hardware Design described?
  • How well can this report be used to reproduce this project?
  • Code Quality
  • Overall Report Quality:
    • Software Block Diagrams
    • Hardware Block Diagrams
      Schematic Quality
    • Quality of technical challenges and solutions adopted.

Rahee

Abstract

Bikes are being widely adopted as a either a leisure sport or as a mode of transportation. In 2015, in USA alone 14.5 million bikes were sold. The world is following as well. Even with such a high number of users, there has been a dearth of smart accessories for bikes to enhance the experience of owning them. Moreover, it will not break news if anyone reports a bike theft. The adoption of bikes as a mode of transportation is on a constant rise, but no single accessory addresses these issues. To make a bike smarter and to address the issues which have so far been omnipresent in the bike industry, we propose Rahee- a solution towards making bike riding safe and bikes secure. The smartness of this device lies in its ability to connect to your phone via Bluetooth. This battery-operated device can be mounted on the handlebar of any bike. It will be capable of doing five different things that will help make the bike smart – navigation, smart headlight,an anti-theft alarm and a fitness tracker. The most important feature of this device is the navigation and its anti-theft capability (which actually works). It will also connect with the Google Maps on the smartphone and will receive and indicate information about how we need to reach a destination point.

Objectives & Introduction

Rahee aims at enhancing the overall experience of using a bike.

The main objectives of this project are as follows:

  • Develop a multi-purpose bike accessory with features like Navigation assistance, Automatic headlamp and Anti-theft Alarm
  • Provide a smarter and safer device as compared to conventional bike accessories
  • Develop user friendly Android application for the user to interact with the device

Team Members & Responsibilities

  • Tanmay Shinde
    • Automatic Headlamp Driver
    • PCB Designing
  • Ankith Shetty
    • LED Indicator Display Driver
  • Siddharth Chawla
    • Android App
    • PCB Designing
  • Akshay Ghodke
    • Driver and circuit for Speaker
    • Anti theft feature
  • Ashish Lele
    • Bluetooth Communication Bridge
    • Product enclosure design

Schedule

Week# Date Task Description Challenges Status
1 4/3/18 Project Discussion- Involved detailed discussion of the project. Tasks were identified, allocation was decided according to the difficulty of the task.

Components choice was defined. The key parameters in the decision were power consumption, lumens(in case of LEDs) and form factor.

NA Completed
2 4/10/18 Component List/ Ordering Vendors were selected based on the quality of documentation and support available. NA Completed
3 4/17/18 Basic Android App To prepare a basic layout of the app, which describes how the data will flow among different activities and also what data will be communicated to the MCU. This helped in narrowing down the scope of development and enabled the respective developers with better understanding of the design. NA Completed
4 4/24/18 Embedding Navigation in LED Matrix The heart of the accessory lies in its navigation and driving the LED using this data. The Led Matrix employs the use of PWM in order to drive various segments of it. e.g. a right turn in the app will illuminate the right half of the matrix. PWM posed a serious challenge when driving multiple pixels at once. This led to change our initial design philosophy from PWM to GPIO. Completed
5 4/24/18 Developing Anti-theft device The Anti-theft device feature makes use of the accelerometer built-in the SJOne board. It also employs the use of a mp3 decoder and a speaker. Calibrating the accelerometer and synhronizing the different tasks(Playing Sound) which it will trigger, yielded a small challenge. Completed
6 05/10/18 Automating the Headlamp The Headlamp uses the Light sensor which is placed in the enclosure. It will illuminate based on the lighting conditions of the environment and will have a blinking feature. The current dropper by a factor of 30 when PWM port was driving the headlamp. Completed
7 5/1/18 Finalize PCB Design EAGLE software was used to draw schematic and board diagrams for every module of our project before integrating it on a single chip Finalizing among various designs and choosing the optimum form factor was a challenge. Design completed
8 5/8/18 Integration This task involved integrating all the modules together and maintain synchronization between them. None In Progress
9 5/15/18 Testing TBA

Parts List & Cost

ProductID Product Vendor Quantity Cost
SJONE LPC 1758 PreetPal Kang 1 $80.00
07040-PW750-N Luxeon White Rubel LEDs LED Supply 2 $7.98
10048 Carclo Lens- Plain Tight Spot LED Optic LED Supply 2 $3.18
B0130LMJ4K Generic MP3 Decoder Amazon 1 $8.00
2748 Analog Light Sensor Breakout Adafruit 2 $2.50
2862 NeoPixel Ring - 24 x 5050 RGBW LEDs Adafruit 1 $20.50
10732 Carclo Lens Holder LED SUPPLY 5 $0.23
hc05 Arduino Wireless Bluetooth Module Amazon 1 $10.57

Design & Implementation

Hardware Design

The hardware employs the use of multiple sensors in order to interact with its surrounding environment. The sensors are used to control the two essential feature of this accessory- automatic headlamp and anti theft device. The automatic headlamp is toggled based on the light value detected by the light sensors. An accelerometer is used to implement the anti-theft feature by detecting sudden motion which enables us to trigger the alarm. The device communicates with the Mobile Application using Bluetooth.

Hardware Design

DFP player Mini Module

The DFPlayer Mini is a MP3 module with a simplified output, which can be directly connected to a speaker. This module can be used as a stand alone module with attached battery, speaker and push buttons or also can be used with any Micro-controller with RX/TX capabilities. A variety of control modes, I/O control mode, serial mode, AD button control mode can be interfaced with DFP player MP3 decoder.

DFPlayer Top
DFPlayer Bottom

ALS-PT19 Analog Light Sensor Breakout

It is an analog sensor with a 2.5-5.5 V DC input signal which is proportionate to the brightness of the incoming light.This sensor contains both Infrared and full spectrum diodes. The output can be read on an analog pin of the micro-controller. This sensor is logarithmic over a large dynamic range of 3 to 55,000 Lux, so it has a lot of sensitivity at low light levels.

ALS-PT19 Light Sensor

ADXL362 Triple Axis Accelerometer Breakout

It is a complete 3-axis MEMS acceleration measurement system with low power consumption. It can measure dynamic shock resulting from shock. It communicates over SPI and built-in logic generates an interrupt if shock is detected at a certain sensitivity

ADXL362 Accelerometer

Product Enclosure

Rahee is a device which aims to replace a conventional bike accessory and irrespective of the multiple sensors it employs, it should be a bike mountable accessory after all. So to facilitate this we 3D printed a basic enclosure, which is big enough to accommodate the MCU and all the sensors, but small enough to be a mountable accessory. We needed to put together all components in a single enclosure. The enclosure includes the spacing for headlamp at the front, the anti-theft alarm speaker at the rear and slots for light sensors at the bottom left and right. The LED ring for navigation is mounted at the top of the enclosure. The device can be easily installed or removed from the bike using a velcro strap.

Enclosure Front View
Enclosure Rear View

Hardware Interface

In this section, you can describe how your hardware communicates, such as which BUSes used. You can discuss your driver implementation here, such that the Software Design section is isolated to talk about high level workings rather than inner working of your project.

The sensors are communicating with the Master controller using their designated BUSes. The Bus map is as follows-

1.The accelerometer is communicating with the master controller using the SPI bus.

2.The Bluetooth and the DFPlayer is using the UART bus to communicate with the microcontroller and the peer device.

3. The light sensor uses an analog pin to record raw values, which are converted to digital values using ADC.

Software Design

The software design of the project will be broken into segments

a. MCU firmware design

b. Android App design

Since, the firmware is the essential part of this project, it will be discussed first.

MCU firmware design

The StateMachine below captures the flow of the tasks.

Software State Machine.jpg

1. DirectionTask

The directionTask is the highest priority task and which starts executing as soon as the peer device is connected with the MCU. The state machine shown above captures this transition perfectly.The Direction Task drives the neopixel using the navigation data from the Rahee Android App. Priority->Highest. This priority is justified by the need of nanoseconds accuracy of the delay needed to drive the NeoPixel ring. Pseudo Code-

 a. Bluetooth module state pin is continuously monitored in this task and set to bike_lock variable
 b. Direction task will only run in case the Bluetooth module is connected
 c. If the bike_lock = 1, directionTask is executed as follows:
     i. Suspends AntitheftTask 
    ii. Direction variable continuously receives the signal from an Android App in toggleHeadlightTask 
   iii. This Direction variable is used in a switch case to identify which direction to be displayed on the NeoPixel ring
 d. If the bike_lock = 0:
     i. Resumes Antitheft Task
    ii. DirectionTask skips and is suspended along with the toggleHeadlightTask.

// NOTE: The Direction variable is monitored in toggleHeadlightTask on purpose since this being a critical task!

2. Toggle Headlight

This task controls the headlight. It polls the two light sensors in order to get an accurate value and drive the headlamp. The light sensors are sampled on an analog pin and using ADC, these raw values are being converted into meaningful data. Priority -> Medium. Pseudo Code-

 a. This Task monitors the Direction values from the Android App and the light sensor values continuously
 b. Depending upon the values on ADC( ambient brightness ), the headlight would toggle
 c. If lightValue < 50:
    i. the headlight turns ON
 d. Else
    i. the headlight remains OFF 

3. Antitheft

The Antitheft device can be broken down in two tasks, one which monitors the accelerometer values and then the other which plays an alert sound. The latter task comes into the picture, only if there is a jerk on the bicycle. The sensitivity of the accelerometer can be calibrated and can detect range on motions. Psuedo code-

 a. Continuously checks the the sate pin for connection
 b. If connected, i.e bike_lock = 1:
    i. The directionTask and toggleHeadlightTask are resumed
 c. If not connected, i.e bike_lock = 0:  
    i. Initial ADXL362 accelerometer 3-axis values are stored as a reference in the X, Y, Z variables
   ii. This task monitors the current accelerometer values continuously
  iii. Relative difference is calculated to identify a jerk on the bike when it is locked.
   iv. If the jerk is beyond the set threshold: 
       1. new reference values are set
       2. semaphore is given to the alert task:
    v. If the jerk is tolerable
       1. Continues to monitor 

4. Alert Task

This task waits on a semaphore from the AntiTheft device and using the DFplayer plays the alert sound. The DF player drives the UART bus which is connected to the speaker input. Pseudo Code-

 a. Alert task sleeps on the semaphore take for portMAXDELAY
 b. If the antiTheft task gives the semaphore
    i. Alert is generated and speakers produce a theft alarm
 c. If there is no semaphore given by the Antitheft task
    i. Continues to sleep on semaphore 

Android App design

The Android App provides a simple interface for the user to communicate with the controller. It consists of two activities - Main Activity and Google Maps Activity The Main Activity enables users to Connect/Disconnect with Rahee by tapping on the Connect/Disconnect button. As soon as the app connects to the device, Google Maps Activity is launched. The user can then input the destination and get directions to there from the current location.

The activities are described in detail below:

1. Main Activity

The Main Activity allows users to Connect/ Disconnect with the device through Bluetooth. Once the user taps on the Connect button, it confirms if the Bluetooth was turned on and searches for the MAC address of Rahee in the list of active paired devices. Once the MAC address is found, it automatically launches the Google Maps Activity using an Intent. While launching the Google Maps Activity it also passes the BluetoothDevice object to enable communication in the other activity.

Android Application Main Activity Flow Diagram
Android Application Main Activity


2. Google Maps Activity

The Google Maps Activity initially displays the current location of the user. It allows the user to enter a destination address to navigate to by entering it in the Text View widget at the top of the screen. Once the destination address is entered the user can tap on the Navigate button to launch Google Maps Directions. The Google Maps Directions are configured to operate in Bike Mode and avoid Highways keeping in mind the convenience and safety. The directions also send turn by turn navigation commands over Bluetooth which is used to display directions on the LED ring on the device.

Google Maps Activity Flow Diagram
Google Maps Activity
Navigation

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Testing & Technical Challenges

1. PWM to drive the Neopixel LED

The initial design philosophy to drive the neoPixel was using PWM. However, due to the stringent timing constraints of the neopixel and the cascading effect, the PWM design was replaced with a GPIO.

Advise- understanding the PWM interrupts and using to drive the LED could have worked. It would be a good place to explore for driving the Neopixel Ring.

2. GPIO current drop

The Headlamp Led, when connected with the VCC drew 300mA, however this dropped by a factor of 30 when it was being driven by the GPIO. WorkAround- to add a gain, we used a BJT as a current amplifier.

Advise- the circuit is basic in nature and could be evolved to do more heavy lifting.

3. BLE to Bluetooth

Though BLE is almost as same as Bluetooth in functionality,but BLE can offer a considerable reduction in the power consumption. The module nrf8100 has the best documentation till date, but offers no library for the ARM-m3 series(We were not able to find one). The major challenge came when even after many attempts, the common handshake was erroneous. So instead of spending our effort to get it working, we switched to Bluetooth which is really simple to use.

Advise- to use nrf8100, the endianness is different from the LPC's SSP controller. This is a good start to figure out before working on the handshake.


<Bug/issue name>

1. Bluetooth

Conclusion

Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?

Project Video

Upload a video of your project and post the link here.

Project Source Code

References

Acknowledgement

References Used

Appendix