From 44bced98d6381ad9507696a0d29096d001623f9d Mon Sep 17 00:00:00 2001 From: Aaron John Sabu <aaronjohnsabu1999@gmail.com> Date: Sun, 10 Oct 2021 16:25:22 -0700 Subject: [PATCH] Added basic barometer code --- .../Barometer_Code/Barometer Readings 01.xlsx | Bin 0 -> 58921 bytes .../Barometer_Code/Barometer_Code.ino | 33 ++ Code/OpenMV Code/Test_code/new_main.py | 316 +++++++++--------- 3 files changed, 191 insertions(+), 158 deletions(-) create mode 100644 Code/Barometer_Code/Barometer Readings 01.xlsx create mode 100644 Code/Barometer_Code/Barometer_Code/Barometer_Code.ino diff --git a/Code/Barometer_Code/Barometer Readings 01.xlsx b/Code/Barometer_Code/Barometer Readings 01.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ac349e9970fe008da8de06d565080d87d2dd9ee7 GIT binary patch literal 58921 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≫k>kO;J=DGBn#6GOU=*Un-%* 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 Bl0yIh literal 0 HcmV?d00001 diff --git a/Code/Barometer_Code/Barometer_Code/Barometer_Code.ino b/Code/Barometer_Code/Barometer_Code/Barometer_Code.ino new file mode 100644 index 0000000..8a42d27 --- /dev/null +++ b/Code/Barometer_Code/Barometer_Code/Barometer_Code.ino @@ -0,0 +1,33 @@ +// Install Adafruit MPL3115A2 Library +#include <Adafruit_MPL3115A2.h> + +Adafruit_MPL3115A2 baro; + +void setup() { + Serial.begin(115200); + while(!Serial); + Serial.println("Adafruit_MPL3115A2 test!"); + + if (!baro.begin()) { + Serial.println("Could not find sensor. Check wiring."); + while(1); + } + + // use to set sea level pressure for current location + // this is needed for accurate altitude measurement + // STD SLP = 1013.26 hPa + baro.setSeaPressure(1016); +} + +void loop() { + float pressure = baro.getPressure(); + float altitude = baro.getAltitude(); + float temperature = baro.getTemperature(); + + Serial.println("-----------------"); + Serial.print("pressure = "); Serial.print(pressure); Serial.println(" hPa"); + Serial.print("altitude = "); Serial.print(altitude); Serial.println(" m"); + Serial.print("temperature = "); Serial.print(temperature); Serial.println(" C"); + + delay(100); +} diff --git a/Code/OpenMV Code/Test_code/new_main.py b/Code/OpenMV Code/Test_code/new_main.py index 034ee9b..4f2313a 100644 --- a/Code/OpenMV Code/Test_code/new_main.py +++ b/Code/OpenMV Code/Test_code/new_main.py @@ -25,182 +25,182 @@ f_y = (2.8 / 2.738) * YRES c_x = XRES * 0.5 c_y = YRES * 0.5 def draw_detections(img, dects): - for d in dects: - c = d.corners() - l = len(c) - for i in range(l): img.draw_line(c[(i+0)%l] + c[(i+1)%l], color = (0, 255, 0)) - img.draw_rectangle(d.rect(), color = (255, 0, 0)) + for d in dects: + c = d.corners() + l = len(c) + for i in range(l): img.draw_line(c[(i+0)%l] + c[(i+1)%l], color = (0, 255, 0)) + img.draw_rectangle(d.rect(), color = (255, 0, 0)) def face_detection(data): - sensor.set_pixformat(sensor.GRAYSCALE) - sensor.set_framesize(sensor.QVGA) - faces = sensor.snapshot().gamma_corr(contrast=1.5).find_features(image.HaarCascade("frontalface")) - if not faces: return struct.pack("<HHHH", 0, 0, 0, 0) - for f in faces: sensor.get_fb().draw_rectangle(f, color = (255, 255, 255)) - out_face = max(faces, key = lambda f: f[2] * f[3]) - return struct.pack("<HHHH", out_face[0], out_face[1], out_face[2], out_face[3]) + sensor.set_pixformat(sensor.GRAYSCALE) + sensor.set_framesize(sensor.QVGA) + faces = sensor.snapshot().gamma_corr(contrast=1.5).find_features(image.HaarCascade("frontalface")) + if not faces: return struct.pack("<HHHH", 0, 0, 0, 0) + for f in faces: sensor.get_fb().draw_rectangle(f, color = (255, 255, 255)) + out_face = max(faces, key = lambda f: f[2] * f[3]) + return struct.pack("<HHHH", out_face[0], out_face[1], out_face[2], out_face[3]) def find_position(box): - x = box[0] - y = box[1] - w = box[2] - h = box[3] - cx = x + w/2 - cy = y + h/2 - frame_cx = sensor.width()/2 - frame_cy = sensor.height()/2 - if cx < frame_cx: - if cy < frame_cy: - pos = "UL" - else: - pos = "LL" - else: - if cy < frame_cy: - pos = "UR" - else: - pos = "LR" - x_diff = cx - frame_cx - y_diff = cy - frame_cy - area = w*h - return pos + x = box[0] + y = box[1] + w = box[2] + h = box[3] + cx = x + w/2 + cy = y + h/2 + frame_cx = sensor.width()/2 + frame_cy = sensor.height()/2 + if cx < frame_cx: + if cy < frame_cy: + pos = "UL" + else: + pos = "LL" + else: + if cy < frame_cy: + pos = "UR" + else: + pos = "LR" + x_diff = cx - frame_cx + y_diff = cy - frame_cy + area = w*h + return pos def find_dist(box, w_actual, l_actual): - w_dist = w_actual*2.8/box[2] - l_dist = l_actual*2.8/box[3] - dist = (w_dist+l_dist)/2 - return dist*100 + w_dist = w_actual*2.8/box[2] + l_dist = l_actual*2.8/box[3] + dist = (w_dist+l_dist)/2 + return dist*100 ignore_blue = (0, 0, sensor.width(), sensor.height()) def color_detection(thresholds): - sensor.set_pixformat(sensor.RGB565) - sensor.set_framesize(sensor.QVGA) - sensor.set_auto_gain(False) - sensor.set_auto_whitebal(False) - thresholdss = struct.unpack("<bbbbbb", thresholds) - img = sensor.snapshot() - blobs = [0,0,0,0,0,0,0,0,0,0,0,0] - n_blobs = 0 - for blob in img.find_blobs([thresholdss], pixels_threshold=200, area_threshold=200, merge=True): - img.draw_edges(blob.min_corners(), color=(0,0,255)) - item = blob.rect() - area = item[2] * item[3] - if n_blobs < MAX_BLOBS: - blobs[0 + (n_blobs*3): 2 + (n_blobs*3)] = [int(blob.cx()), int(blob.cy()), int(area)] - n_blobs += 1 - print(blobs) - return struct.pack("<hhhhhhhhh", blobs[0], blobs[1], blobs[2], blobs[3], blobs[4], blobs[5], blobs[6], - blobs[7], blobs[8]) + sensor.set_pixformat(sensor.RGB565) + sensor.set_framesize(sensor.QVGA) + sensor.set_auto_gain(False) + sensor.set_auto_whitebal(False) + thresholdss = struct.unpack("<bbbbbb", thresholds) + img = sensor.snapshot() + blobs = [0,0,0,0,0,0,0,0,0,0,0,0] + n_blobs = 0 + for blob in img.find_blobs([thresholdss], pixels_threshold=200, area_threshold=200, merge=True): + img.draw_edges(blob.min_corners(), color=(0,0,255)) + item = blob.rect() + area = item[2] * item[3] + if n_blobs < MAX_BLOBS: + blobs[0 + (n_blobs*3): 2 + (n_blobs*3)] = [int(blob.cx()), int(blob.cy()), int(area)] + n_blobs += 1 + print(blobs) + return struct.pack("<hhhhhhhhh", blobs[0], blobs[1], blobs[2], blobs[3], blobs[4], blobs[5], blobs[6], + blobs[7], blobs[8]) def color_detection_single(data): - red_led.off() - green_led.on() - sensor.set_pixformat(sensor.RGB565) - sensor.set_framesize(sensor.QVGA) - thresholds = struct.unpack("<bbbbbb", data) - print(thresholds) - blobs = sensor.snapshot().find_blobs([thresholds], - pixels_threshold=500, - area_threshold=500, - merge=True, - margin=20) - if not blobs: return struct.pack("<HH", 0, 0) - for b in blobs: - sensor.get_fb().draw_rectangle(b.rect(), color = (255, 0, 0)) - sensor.get_fb().draw_cross(b.cx(), b.cy(), color = (0, 255, 0)) - out_blob = max(blobs, key = lambda b: b.density()) - red_led.on() - green_led.off() - return struct.pack("<HH", out_blob.cx() , out_blob.cy()) + red_led.off() + green_led.on() + sensor.set_pixformat(sensor.RGB565) + sensor.set_framesize(sensor.QVGA) + thresholds = struct.unpack("<bbbbbb", data) + print(thresholds) + blobs = sensor.snapshot().find_blobs([thresholds], + pixels_threshold=500, + area_threshold=500, + merge=True, + margin=20) + if not blobs: return struct.pack("<HH", 0, 0) + for b in blobs: + sensor.get_fb().draw_rectangle(b.rect(), color = (255, 0, 0)) + sensor.get_fb().draw_cross(b.cx(), b.cy(), color = (0, 255, 0)) + out_blob = max(blobs, key = lambda b: b.density()) + red_led.on() + green_led.off() + return struct.pack("<HH", out_blob.cx() , out_blob.cy()) def recalibration(): - img = sensor.snapshot() - for blob in img.find_blobs(thresholds[2], invert=True, pixels_threshold=200, area_threshold=200, merge=True): - img.draw_edges(blob.min_corners(), color=(0,0,255)) - ignore_blue = (blob.x(), blob.y(), blob.w(), blob.h()) + img = sensor.snapshot() + for blob in img.find_blobs(thresholds[2], invert=True, pixels_threshold=200, area_threshold=200, merge=True): + img.draw_edges(blob.min_corners(), color=(0,0,255)) + ignore_blue = (blob.x(), blob.y(), blob.w(), blob.h()) def change_tag_size(size): - TAG_SIZE = size + TAG_SIZE = size def degrees(radians): - return (180 * radians) / math.pi + return (180 * radians) / math.pi def dist_conversion(z): - z = z*100*2 - scale = TAG_SIZE/138 - res_scale = (240/X_RES + 240/Y_RES)/2 - return z*scale*res_scale + z = z*100*2 + scale = TAG_SIZE/138 + res_scale = (240/X_RES + 240/Y_RES)/2 + return z*scale*res_scale def xy_to_mm(tag1_cx, tag1_cy, tag2_cx, tag2_cy, tag3_cx, tag3_cy): - mm_distx = 590 - mm_disty = 1 - pixel_distx = tag1_cx - tag2_cx - pixel_disty = tag1_cy - tag2_cy - target_distx = tag1_cx - tag3_cx - target_disty = tag1_cy - tag3_cy - distx = target_distx*mm_distx/pixel_distx/2.8 - disty = target_disty*mm_disty/pixel_disty/2.8 - return (distx, disty) + mm_distx = 590 + mm_disty = 1 + pixel_distx = tag1_cx - tag2_cx + pixel_disty = tag1_cy - tag2_cy + target_distx = tag1_cx - tag3_cx + target_disty = tag1_cy - tag3_cy + distx = target_distx*mm_distx/pixel_distx/2.8 + disty = target_disty*mm_disty/pixel_disty/2.8 + return (distx, disty) def apriltags(data): - red_led.off() - green_led.on() - sensor.set_pixformat(sensor.RGB565) - sensor.set_framesize(sensor.QQVGA) - sensor.set_auto_gain(False) - sensor.set_auto_whitebal(False) - LENS_MM = 2.8 - LENS_TO_CAM_MM = 22 - datas = struct.unpack("<bb", data) - id1 = datas[0] - tagsize1 = 138 - if id1 == 0: - tagsize1 = 138 - img = sensor.snapshot() - f_x = (LENS_MM / 3.984) * X_RES - f_y = (LENS_MM / 2.952) * Y_RES - c_x = X_RES * 0.5 - c_y = Y_RES * 0.5 - tags = [0, 0, 0] - for tag in img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y): - img.draw_rectangle(tag.rect(), color = (255, 0, 0)) - img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0)) - dist = dist_conversion(tag.z_translation()) - img.draw_string(tag.cx(), tag.cy(), str(dist)) - if tag.id() == id1: - print(tag.id()) - TAG_SIZE = tagsize1 - tags[0:2] = [int(tag.cx()), int(tag.cy()), int(degrees(tag.z_rotation()))] - red_led.on() - green_led.off() - return struct.pack("<hhh", tags[0], tags[1], tags[2]) + red_led.off() + green_led.on() + sensor.set_pixformat(sensor.RGB565) + sensor.set_framesize(sensor.QQVGA) + sensor.set_auto_gain(False) + sensor.set_auto_whitebal(False) + LENS_MM = 2.8 + LENS_TO_CAM_MM = 22 + datas = struct.unpack("<bb", data) + id1 = datas[0] + tagsize1 = 138 + if id1 == 0: + tagsize1 = 138 + img = sensor.snapshot() + f_x = (LENS_MM / 3.984) * X_RES + f_y = (LENS_MM / 2.952) * Y_RES + c_x = X_RES * 0.5 + c_y = Y_RES * 0.5 + tags = [0, 0, 0] + for tag in img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y): + img.draw_rectangle(tag.rect(), color = (255, 0, 0)) + img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0)) + dist = dist_conversion(tag.z_translation()) + img.draw_string(tag.cx(), tag.cy(), str(dist)) + if tag.id() == id1: + print(tag.id()) + TAG_SIZE = tagsize1 + tags[0:2] = [int(tag.cx()), int(tag.cy()), int(degrees(tag.z_rotation()))] + red_led.on() + green_led.off() + return struct.pack("<hhh", tags[0], tags[1], tags[2]) def qrcode_detection(data): - sensor.set_pixformat(sensor.RGB565) - sensor.set_framesize(sensor.VGA) - sensor.set_windowing((320, 240)) - codes = sensor.snapshot().find_qrcodes() - if not codes: return bytes() - draw_detections(sensor.get_fb(), codes) - return str(codes).encode() + sensor.set_pixformat(sensor.RGB565) + sensor.set_framesize(sensor.VGA) + sensor.set_windowing((320, 240)) + codes = sensor.snapshot().find_qrcodes() + if not codes: return bytes() + draw_detections(sensor.get_fb(), codes) + return str(codes).encode() def ATDistance(val,size): - new_val = -10*val*size/16.3 - return new_val + new_val = -10*val*size/16.3 + return new_val def goalfinder(data): - green_led.on() - sensor.set_pixformat(sensor.RGB565) - sensor.set_framesize(sensor.QVGA) - sensor.set_auto_gain(False) - sensor.set_auto_whitebal(False) - goal_id = struct.unpack("<bbb", data) - nearest_tag = [0,0,0,10000,0,0,0] - img = sensor.snapshot() - for tag in img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y): - img.draw_rectangle(tag.rect(), color = (255, 0, 0)) - img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0)) - for i in goal_id: - if tag.id() == i and ATDistance(tag.z_translation(),SIZE) < nearest_tag[3]: - nearest_tag[0] = int(tag.id()) - nearest_tag[1] = int(tag.cx()) - nearest_tag[2] = int(tag.cy()) - nearest_tag[3] = int(ATDistance(tag.z_translation(),SIZE)) - nearest_tag[4] = int(tag.x_rotation()) - nearest_tag[5] = int(tag.y_rotation()) - nearest_tag[6] = int(tag.z_rotation()) - red_led.on() - green_led.off() - return struct.pack("<hhhhhhh", nearest_tag[0],nearest_tag[1],nearest_tag[2],nearest_tag[3],nearest_tag[4],nearest_tag[5],nearest_tag[6]) + green_led.on() + sensor.set_pixformat(sensor.RGB565) + sensor.set_framesize(sensor.QVGA) + sensor.set_auto_gain(False) + sensor.set_auto_whitebal(False) + goal_id = struct.unpack("<bbb", data) + nearest_tag = [0,0,0,10000,0,0,0] + img = sensor.snapshot() + for tag in img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y): + img.draw_rectangle(tag.rect(), color = (255, 0, 0)) + img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0)) + for i in goal_id: + if tag.id() == i and ATDistance(tag.z_translation(),SIZE) < nearest_tag[3]: + nearest_tag[0] = int(tag.id()) + nearest_tag[1] = int(tag.cx()) + nearest_tag[2] = int(tag.cy()) + nearest_tag[3] = int(ATDistance(tag.z_translation(),SIZE)) + nearest_tag[4] = int(tag.x_rotation()) + nearest_tag[5] = int(tag.y_rotation()) + nearest_tag[6] = int(tag.z_rotation()) + red_led.on() + green_led.off() + return struct.pack("<hhhhhhh", nearest_tag[0],nearest_tag[1],nearest_tag[2],nearest_tag[3],nearest_tag[4],nearest_tag[5],nearest_tag[6]) interface.register_callback(face_detection) interface.register_callback(color_detection) interface.register_callback(apriltags) interface.register_callback(color_detection_single) interface.register_callback(recalibration) interface.register_callback(goalfinder) -interface.loop() \ No newline at end of file +interface.loop() -- GitLab