Air Quality Sensor Application for Android.
The SensAir App is an open-source air quality sensing app. Interfacing with three sensors, the application allows a user to monitor their air quality in real-time, providing users with alerts, graphs, and air quality gauges (as seen below).
- SpeedView Library for the gauge in the MainActivity
- MP Android Charts for graphing needs
-
HC-05 (v2.0-20100601) Bluetooth Module for bluetooth.
- Bluetooth Address: 35555e (Hex)
- Bluetooth MAC address: 00:18:E4:35:55:5E
- Baud rate: 38400
- All attributes can be changed using AT commands and vary from part to part.
- List of AT Commands
- Before trying AT commands, make sure the LED is blinking slowly (about once every two seconds) If it is not, then cut power to HC-05 and re-power it while holding down the button to toggle AT and Pairing mode.
- Vcc = 5V
-
SparkFun CCS811 Air Quality Breakout Board
- I2C connection
- CCS811 Library & Examples for I2C
- Vcc = 3.3V
- I2C connection
-
SparkFun BME 280 Atmospheric Breakout Board
- I2C connection
- BME 280 Library & Examples for I2C
- Vcc = 3.3V
- I2C connection
-
- Analog sensor
- Vcc = 5V
It is important to implement a consistent naming convention throughout the entire project. Generally, the project will follow classic java-styled notation, where the first word is lowercase and each following word has its first letter in uppercase. For example,
firstSecondThird
- Classes shall be named with the first letter of every word capitalized. Objects shall be named with the same java notation, E.g.
typeDescription
- Object names should be descriptive, where the first word is the item type and the next words are what the item does. E.g.
Button buttonGoToNext = new Button();
DbHelper dbHelper = new DbHelper();
EditText editTextUserName = new EditText();
- Variables shall be named in all uppercase letters if they are final. Otherwise, the variable should follow the classic java style. Variable names should be descriptive and clearly indicate what the variable is doing (except variables with a narrow scope, like in for loops). E.g.
final int MYVARIABLE = 5;
int counter = 0;
string userProfileId = user.getID();
- Functions shall be named with the same java-styled notation. They should be descriptive and describe the functions purpose. Some examples:
void getKey()
double computeAverage()
string getName()