Skip to content

Commit

Permalink
feat: Somewhat stable system
Browse files Browse the repository at this point in the history
  • Loading branch information
TomsBicans committed Jan 18, 2023
1 parent 413d841 commit efb00ac
Show file tree
Hide file tree
Showing 9 changed files with 340 additions and 82 deletions.
Binary file added datasheets/24C32.pdf
Binary file not shown.
Binary file added datasheets/DS3231.pdf
Binary file not shown.
Binary file added datasheets/HYLD 9767 Specification.pdf
Binary file not shown.
Binary file added datasheets/MTP40-F_Dec.pdf
Binary file not shown.
42 changes: 42 additions & 0 deletions log/log.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import sys
import os
import serial
import threading
import time


def monitor(comport: str, baudrate: int):

ser = serial.Serial(comport, baudrate, timeout=0)

while (1):
line = ser.readline()
# print(line, type(line))
if (line != b''):
# line = line.decode("ascii")
line = line.decode()
print(line)
# print line[:-1] # strip \n
# fields = line[:-1].split('; ')

# ID = fields[0]
# TIME = int(fields[1])
# print fields
# print("device ID: ", ID)
# write to file
text_file = open("Pdata.log", "a")
# line = str(TIME) + ": " + str(CT) + "\n"
text_file.write(line)
text_file.close()
time.sleep(0.01)

# do some other things here

print("Stop Monitoring")


if __name__ == "__main__":
print("Start Serial Monitor")
COMPORT = "COM9"
BAUDRATE = 9600
monitor(COMPORT, BAUDRATE)
57 changes: 56 additions & 1 deletion main/Measurement.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace measurement {
UNKNOWN
};
struct entry {
float time = 0;
unsigned long time = 0;
float atm_temperature = NOVAL;
float atm_humidity = NOVAL;
float atm_air_pressure = NOVAL;
Expand All @@ -21,6 +21,7 @@ namespace measurement {
};
entry operator+(const entry& e1, const entry& e2){
entry result;
result.time = e1.time;
result.atm_temperature = e1.atm_temperature + e2.atm_temperature;
result.atm_humidity = e1.atm_humidity + e2.atm_humidity;
result.atm_air_pressure = e1.atm_air_pressure + e2.atm_air_pressure;
Expand All @@ -35,6 +36,7 @@ namespace measurement {
}
entry operator/(const entry& e, const int num){
entry result;
result.time = e.time;
result.atm_temperature = e.atm_temperature / num;
result.atm_humidity = e.atm_humidity / num;
result.atm_air_pressure = e.atm_air_pressure / num;
Expand All @@ -47,4 +49,57 @@ namespace measurement {
result.quality_rating = e.quality_rating / num;
return result;
}
void print_entry_binary(entry e) {
Serial.write((byte*)&e, sizeof(e));
}
void print_entry(entry e) {
Serial.print(e.time);
Serial.print(",");
Serial.print(e.atm_temperature);
Serial.print(",");
Serial.print(e.atm_humidity);
Serial.print(",");
Serial.print(e.atm_air_pressure);
Serial.print(",");
Serial.print(e.atm_air_particle);
Serial.print(",");
Serial.print(e.atm_air_smoke);
Serial.print(",");
Serial.print(e.atm_CO2_ammount);
Serial.print(",");
Serial.print(e.atm_sound_pressure);
Serial.print(",");
Serial.print(e.light_intensity);
Serial.print(",");
Serial.print(e.UV_intensity);
Serial.print(",");
Serial.print(e.quality_rating);
Serial.print(",");
Serial.println(e.user_likes);
}

void print_headers() {
Serial.print("time");
Serial.print(",");
Serial.print("atm_temperature");
Serial.print(",");
Serial.print("atm_humidity");
Serial.print(",");
Serial.print("atm_air_pressure");
Serial.print(",");
Serial.print("atm_air_particle");
Serial.print(",");
Serial.print("atm_air_smoke");
Serial.print(",");
Serial.print("atm_CO2_ammount");
Serial.print(",");
Serial.print("atm_sound_pressure");
Serial.print(",");
Serial.print("light_intensity");
Serial.print(",");
Serial.print("UV_intensity");
Serial.print(",");
Serial.println("quality_rating,user_likes");
}

};
2 changes: 0 additions & 2 deletions main/Messages.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// File: MyCharArrays.h

#ifndef MY_MESSAGES_H
#define MY_MESSAGES_H

Expand Down
106 changes: 87 additions & 19 deletions main/Test.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,46 @@
#include "HardwareSerial.h"
#include <assert.h>
#include "LinkedList.h"
#include "Queue.h"
#include "Timer.h"
#include "Measurement.h"

void test_print_entry(measurement::entry &e){
Serial.print("time: ");
Serial.println(e.time);
Serial.print("atm_temperature: ");
Serial.println(e.atm_temperature);
Serial.print("atm_humidity: ");
Serial.println(e.atm_humidity);
Serial.print("atm_air_pressure: ");
Serial.println(e.atm_air_pressure);
Serial.print("atm_air_particle: ");
Serial.println(e.atm_air_particle);
Serial.print("atm_air_smoke: ");
Serial.println(e.atm_air_smoke);
Serial.print("atm_CO2_ammount: ");
Serial.println(e.atm_CO2_ammount);
Serial.print("atm_sound_pressure: ");
Serial.println(e.atm_sound_pressure);
Serial.print("light_intensity: ");
Serial.println(e.light_intensity);
Serial.print("UV_intensity: ");
Serial.println(e.UV_intensity);
Serial.print("quality_rating: ");
Serial.println(e.quality_rating);
Serial.print("user_likes: ");
Serial.println(e.user_likes);
delay(3000);
}

bool test_float_compare(float x, float y, float tolerance) {
if (abs(x - y) < tolerance) {
return true;
} else {
return false;
}
}

// Test the queue class implementation
bool testQueue()
{
Expand Down Expand Up @@ -114,23 +151,51 @@ bool testLinkedList(){

void test_entry_struct() {
// create an entry struct
measurement::entry e{};
measurement::entry e = measurement::entry{};
Serial.print("test_entry_struct ");
// Serial.print("time: ");
// Serial.println(e.time);
// Serial.print("atm_temperature: ");
// Serial.println(e.atm_temperature);
// Serial.print("atm_humidity: ");
// Serial.println(e.atm_humidity);
// Serial.print("atm_air_pressure: ");
// Serial.println(e.atm_air_pressure);
// Serial.print("atm_air_particle: ");
// Serial.println(e.atm_air_particle);
// Serial.print("atm_air_smoke: ");
// Serial.println(e.atm_air_smoke);
// Serial.print("atm_CO2_ammount: ");
// Serial.println(e.atm_CO2_ammount);
// Serial.print("atm_sound_pressure: ");
// Serial.println(e.atm_sound_pressure);
// Serial.print("light_intensity: ");
// Serial.println(e.light_intensity);
// Serial.print("UV_intensity: ");
// Serial.println(e.UV_intensity);
// Serial.print("quality_rating: ");
// Serial.println(e.quality_rating);
// Serial.print("user_likes: ");
// Serial.println(e.user_likes);
// delay(3000);

// check that the fields are set to the expected default values
assert(e.atm_temperature == measurement::NOVAL);
assert(e.atm_air_pressure == measurement::NOVAL);
assert(e.atm_air_particle == measurement::NOVAL);
assert(e.atm_CO2_ammount == measurement::NOVAL);
Serial.print(".");
assert(e.atm_sound_pressure == measurement::NOVAL);
assert(e.UV_intensity == measurement::NOVAL);
assert(e.quality_rating == 100);
assert(e.user_likes == measurement::LIKES::UNKNOWN);
// assert(e.user_likes == measurement::LIKES::UNKNOWN);
Serial.print(".");
return true;
}

void test_entry_struct_values() {
// create an entry struct
measurement::entry e{};
measurement::entry e = measurement::entry{};

// set the values of some of the fields
e.atm_temperature = 15.5;
Expand All @@ -140,24 +205,25 @@ void test_entry_struct_values() {
e.atm_sound_pressure = 70;

// check that the fields have the expected values
assert(e.atm_temperature == 15.5);
assert(e.atm_air_pressure == 1013.2);
assert(e.atm_air_particle == 0.8);
assert(e.atm_CO2_ammount == 400);
assert(e.atm_sound_pressure == 70);
assert(test_float_compare(e.atm_temperature, 15.5, 1));
assert(test_float_compare(e.atm_air_pressure, 1013.2, 1));
assert(test_float_compare(e.atm_air_particle, 0.8, 1));
assert(test_float_compare(e.atm_CO2_ammount, 400, 1));
assert(test_float_compare(e.atm_sound_pressure, 70, 1));
// Serial.print(".");

// check that the other fields still have the default values
assert(e.UV_intensity == measurement::NOVAL);
assert(e.quality_rating == 100);
assert(e.user_likes == measurement::LIKES::UNKNOWN);
assert(test_float_compare(e.UV_intensity, measurement::NOVAL, 1));
assert(test_float_compare(e.quality_rating, 100, 1));
// assert(e.user_likes == measurement::UNKNOWN);
return true;
}

void test_entry_struct_addition() {
// create an entry struct
measurement::entry e1{};
measurement::entry e2{};
measurement::entry e3{};
measurement::entry e1 = measurement::entry{};
measurement::entry e2 = measurement::entry{};
measurement::entry e3 = measurement::entry{};
// set the values of some of the fields
e1.atm_temperature = 50;
e1.atm_air_pressure = 50;
Expand All @@ -172,13 +238,15 @@ void test_entry_struct_addition() {
e2.atm_sound_pressure = 50;

e3 = e1 + e2;
// print_entry(e3);

// check that the fields have the expected values
assert(e1.atm_temperature == 100);
assert(e1.atm_air_pressure == 100);
assert(e1.atm_air_particle == 100);
assert(e1.atm_CO2_ammount == 100);
assert(e1.atm_sound_pressure == 100);

assert(test_float_compare(e3.atm_temperature, 100, 1));
assert(test_float_compare(e3.atm_air_pressure, 100, 1));
assert(test_float_compare(e3.atm_air_particle, 100, 1));
assert(test_float_compare(e3.atm_CO2_ammount, 100, 1));
assert(test_float_compare(e3.atm_sound_pressure, 100, 1));
return true;
}

Loading

0 comments on commit efb00ac

Please sign in to comment.