Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • akhot2/group-01-phys371-sp2023
  • jl190/group-1-beetle-drone
2 results
Show changes
Commits on Source (93)
Showing
with 3526 additions and 74 deletions
.DS_Store
File moved
#include <Wire.h>
#include <Adafruit_BME680.h>
#include <SD.h>
#include <ArduCAM.h>
//Ultrasonic sensor pins
#define trigPin 30
#define echoPin 31
File dataFile;
// Define hardware serial pins
#define SERIAL_PORT Serial2
// Define data structure
struct GPSData {
float latitude;
float longitude;
float altitude;
float speed;
};
#define SEALEVELPRESSURE_HPA (1013.25) // Define the standard sea level pressure in hPa
Adafruit_BME680 bme; // Create a BME680 object
const int SD_CS = 53;
const int CAM_CS = 49;
ArduCAM myCAM( OV2640, CAM_CS );
void setup() {
Serial.begin(9600);
// Start hardware serial for GPS
SERIAL_PORT.begin(9600);
uint8_t vid, pid;
uint8_t temp;
Wire.begin();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
if (!bme.begin()) {
Serial.println("Could not find a valid BME680 sensor, check wiring!");
while (1);
}
if (!SD.begin(SD_CS)) {
Serial.println("SD initialization failed!");
return;
}
Serial.println("SD initialization successful.");
dataFile = SD.open("data.csv", FILE_WRITE);
if (dataFile) {
dataFile.println("Temperature (C), Humidity (%), Pressure (hPa), Altitude (m), Distance (cm) ,Latitude ,Longitude ,Altitude , Picture");
dataFile.close();
}
else {
Serial.println("Could not open data.csv");
}
Serial.println(F("ArduCAM Start!"));
//set the CS as an output:
pinMode(CAM_CS,OUTPUT);
digitalWrite(CAM_CS, HIGH);
// initialize SPI:
SPI.begin();
//Reset the CPLD
myCAM.write_reg(0x07, 0x80);
delay(100);
myCAM.write_reg(0x07, 0x00);
delay(100);
while(1){
//Check if the ArduCAM SPI bus is OK
myCAM.write_reg(ARDUCHIP_TEST1, 0x55);
temp = myCAM.read_reg(ARDUCHIP_TEST1);
if (temp != 0x55){
Serial.println(F("SPI interface Error!"));
delay(1000);continue;
} else {
Serial.println(F("SPI interface OK."));
break;
}
}
while(1){
//Check if the camera module type is OV2640
myCAM.wrSensorReg8_8(0xff, 0x01);
myCAM.rdSensorReg8_8(OV2640_CHIPID_HIGH, &vid);
myCAM.rdSensorReg8_8(OV2640_CHIPID_LOW, &pid);
if ((vid != 0x26 ) && (( pid != 0x41 ) || ( pid != 0x42 ))){
Serial.println(F("Can't find OV2640 module!"));
delay(1000);continue;
}
else{
Serial.println(F("OV2640 detected."));break;
}
}
myCAM.set_format(JPEG);
myCAM.InitCAM();
myCAM.OV2640_set_JPEG_size(OV2640_1600x1200);
myCAM.OV2640_set_Light_Mode(Sunny);
delay(1000);
}
String picname = "";
void loop() {
float distance = getDistance();
if (distance > 25 & distance < 35) {
GPSData data = readGPSData();
float temperature = bme.readTemperature();
float humidity = bme.readHumidity();
float pressure = bme.readPressure() / 100.0F;
float altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.println(" *C");
Serial.print("Humidity = ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("Pressure = ");
Serial.print(pressure);
Serial.println(" hPa");
Serial.print("Altitude = ");
Serial.print(altitude);
Serial.println(" m");
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
if (SD.exists("data.csv")) {
dataFile = SD.open("data.csv", FILE_WRITE);
if (dataFile) {
dataFile.print(temperature);
dataFile.print(",");
dataFile.print(humidity);
dataFile.print(",");
dataFile.print(pressure);
dataFile.print(",");
dataFile.print(altitude);
dataFile.print(",");
dataFile.print(distance);
// Write GPS data to file
dataFile.print(data.latitude, 6);
dataFile.print(",");
dataFile.print(data.longitude, 6);
dataFile.print(",");
dataFile.print(data.altitude, 2);
dataFile.print(",");
dataFile.println(picname);
dataFile.close();
}
else {
Serial.println("Could not open data.csv");
}
}
else {
Serial.println("data.csv does not exist.");
}
myCAMSaveToSDFile();
} else {
Serial.print("Incorrect Distance, distance is ");
Serial.println((String)distance);
}
}
float getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
return distance;
}
void myCAMSaveToSDFile(){
char str[8];
byte buf[256];
static int i = 0;
static int k = 0;
uint8_t temp = 0,temp_last=0;
uint32_t length = 0;
bool is_header = false;
File outFile;
//Flush the FIFO
myCAM.flush_fifo();
//Clear the capture done flag
myCAM.clear_fifo_flag();
//Start capture
myCAM.start_capture();
Serial.println(F("start Capture"));
while(!myCAM.get_bit(ARDUCHIP_TRIG , CAP_DONE_MASK));
Serial.println(F("Capture Done."));
length = myCAM.read_fifo_length();
Serial.print(F("The fifo length is :"));
Serial.println(length, DEC);
if (length >= MAX_FIFO_SIZE) //384K
{
Serial.println(F("Over size."));
return ;
}
if (length == 0 ) //0 kb
{
Serial.println(F("Size is 0."));
return ;
}
//Construct a file name
k = k + 1;
itoa(k, str, 10);
strcat(str, ".jpg");
picname = str;
Serial.println(picname);
//Open the new file
outFile = SD.open(str, O_WRITE | O_CREAT | O_TRUNC);
if(!outFile){
Serial.println(F("File open faild"));
return;
}
myCAM.CS_LOW();
myCAM.set_fifo_burst();
while ( length-- )
{
temp_last = temp;
temp = SPI.transfer(0x00);
//Read JPEG data from FIFO
if ( (temp == 0xD9) && (temp_last == 0xFF) ) //If find the end ,break while,
{
buf[i++] = temp; //save the last 0XD9
//Write the remain bytes in the buffer
myCAM.CS_HIGH();
outFile.write(buf, i);
//Close the file
outFile.close();
Serial.println(F("Image save OK."));
is_header = false;
i = 0;
}
if (is_header == true)
{
//Write image data to buffer if not full
if (i < 256)
buf[i++] = temp;
else
{
//Write 256 bytes image data to file
myCAM.CS_HIGH();
outFile.write(buf, 256);
i = 0;
buf[i++] = temp;
myCAM.CS_LOW();
myCAM.set_fifo_burst();
}
}
else if ((temp == 0xD8) & (temp_last == 0xFF))
{
is_header = true;
buf[i++] = temp_last;
buf[i++] = temp;
}
}
}
GPSData readGPSData() {
GPSData data;
// Wait until GPS data is available
while (!SERIAL_PORT.available()) {
delay(100);
}
// Parse GPS data
String line = SERIAL_PORT.readStringUntil('\n');
if (line.startsWith("$GPGGA")) {
// Extract latitude, longitude, altitude, and speed from GPS data
String parts[15];
int index = 0;
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < line.length(); i++) {
if (line[i] == ',') {
endIndex = i;
parts[index] = line.substring(startIndex, endIndex);
startIndex = endIndex + 1;
index++;
}
}
data.latitude = parts[2].toFloat();
data.longitude = parts[4].toFloat();
data.altitude = parts[9].toFloat();
data.speed = parts[7].toFloat();
}
return data;
}
File added
File added
File added
File added
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="9.6.2">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="5" unitdist="mil" unit="mil" style="lines" multiple="1" display="yes" altdistance="5" altunitdist="mil" altunit="mil"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="16" fill="1" visible="no" active="no"/>
<layer number="3" name="Route3" color="17" fill="1" visible="no" active="no"/>
<layer number="4" name="Route4" color="18" fill="1" visible="no" active="no"/>
<layer number="5" name="Route5" color="19" fill="1" visible="no" active="no"/>
<layer number="6" name="Route6" color="25" fill="1" visible="no" active="no"/>
<layer number="7" name="Route7" color="26" fill="1" visible="no" active="no"/>
<layer number="8" name="Route8" color="27" fill="1" visible="no" active="no"/>
<layer number="9" name="Route9" color="28" fill="1" visible="no" active="no"/>
<layer number="10" name="Route10" color="29" fill="1" visible="no" active="no"/>
<layer number="11" name="Route11" color="30" fill="1" visible="no" active="no"/>
<layer number="12" name="Route12" color="20" fill="1" visible="no" active="no"/>
<layer number="13" name="Route13" color="21" fill="1" visible="no" active="no"/>
<layer number="14" name="Route14" color="22" fill="1" visible="no" active="no"/>
<layer number="15" name="Route15" color="23" fill="1" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="24" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="58" name="b3D" color="7" fill="1" visible="no" active="no"/>
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="61" name="stand" color="7" fill="1" visible="no" active="no"/>
<layer number="88" name="SimResults" color="9" fill="1" visible="no" active="no"/>
<layer number="89" name="SimProbes" color="9" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
<layer number="102" name="Mittellin" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="fp3" color="7" fill="1" visible="yes" active="yes"/>
<layer number="104" name="Name" color="7" fill="1" visible="yes" active="yes"/>
<layer number="105" name="Beschreib" color="9" fill="1" visible="yes" active="yes"/>
<layer number="106" name="BGA-Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="107" name="BD-Top" color="5" fill="1" visible="yes" active="yes"/>
<layer number="108" name="fp8" color="7" fill="1" visible="yes" active="yes"/>
<layer number="109" name="fp9" color="7" fill="1" visible="yes" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="yes" active="yes"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="113" name="ReferenceLS" color="7" fill="1" visible="no" active="no"/>
<layer number="114" name="Badge_Outline" color="7" fill="1" visible="yes" active="yes"/>
<layer number="115" name="ReferenceISLANDS" color="7" fill="1" visible="yes" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<layer number="117" name="BACKMAAT1" color="7" fill="1" visible="yes" active="yes"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="no" active="no"/>
<layer number="119" name="KAP_TEKEN" color="7" fill="1" visible="yes" active="yes"/>
<layer number="120" name="KAP_MAAT1" color="7" fill="1" visible="yes" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="129" name="Mask" color="7" fill="1" visible="yes" active="yes"/>
<layer number="130" name="SMDSTROOK" color="7" fill="1" visible="yes" active="yes"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="133" name="bottom_silk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="134" name="silk_top" color="7" fill="1" visible="yes" active="yes"/>
<layer number="135" name="silk_bottom" color="7" fill="1" visible="yes" active="yes"/>
<layer number="136" name="silktop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="137" name="silkbottom" color="7" fill="1" visible="yes" active="yes"/>
<layer number="138" name="EEE" color="7" fill="1" visible="yes" active="yes"/>
<layer number="139" name="_tKeepout" color="7" fill="1" visible="yes" active="yes"/>
<layer number="140" name="mbKeepout" color="7" fill="1" visible="yes" active="yes"/>
<layer number="141" name="ASSEMBLY_TOP" color="7" fill="1" visible="yes" active="yes"/>
<layer number="142" name="mbRestrict" color="7" fill="1" visible="yes" active="yes"/>
<layer number="143" name="PLACE_BOUND_TOP" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="145" name="DrillLegend_01-16" color="7" fill="1" visible="yes" active="yes"/>
<layer number="146" name="DrillLegend_01-20" color="7" fill="1" visible="yes" active="yes"/>
<layer number="147" name="PIN_NUMBER" color="7" fill="1" visible="yes" active="yes"/>
<layer number="148" name="mDocument" color="7" fill="1" visible="yes" active="yes"/>
<layer number="149" name="DrillLegend_02-15" color="7" fill="1" visible="yes" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="153" name="FabDoc1" color="6" fill="1" visible="no" active="no"/>
<layer number="154" name="FabDoc2" color="2" fill="1" visible="no" active="no"/>
<layer number="155" name="FabDoc3" color="7" fill="15" visible="no" active="no"/>
<layer number="166" name="AntennaArea" color="7" fill="1" visible="yes" active="yes"/>
<layer number="168" name="4mmHeightArea" color="7" fill="1" visible="yes" active="yes"/>
<layer number="191" name="mNets" color="7" fill="1" visible="yes" active="yes"/>
<layer number="192" name="mBusses" color="7" fill="1" visible="yes" active="yes"/>
<layer number="193" name="mPins" color="7" fill="1" visible="yes" active="yes"/>
<layer number="194" name="mSymbols" color="7" fill="1" visible="yes" active="yes"/>
<layer number="195" name="mNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="196" name="mValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="1" visible="no" active="no"/>
<layer number="202" name="202bmp" color="3" fill="1" visible="no" active="no"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="225" name="225bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="226" name="226bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="227" name="227bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="228" name="228bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="229" name="229bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="230" name="230bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="231" name="Eagle3D_PG1" color="7" fill="1" visible="no" active="no"/>
<layer number="232" name="Eagle3D_PG2" color="7" fill="1" visible="no" active="no"/>
<layer number="233" name="Eagle3D_PG3" color="7" fill="1" visible="no" active="no"/>
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
<layer number="250" name="Descript" color="7" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="7" fill="0" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="-7.62" x2="160" y2="-7.62" width="0" layer="20"/>
<wire x1="160" y1="-7.62" x2="160" y2="100" width="0" layer="20"/>
<wire x1="160" y1="100" x2="0" y2="100" width="0" layer="20"/>
<wire x1="0" y1="100" x2="0" y2="-7.62" width="0" layer="20"/>
<text x="96.139" y="89.408" size="1.778" layer="51">Group 1 - "The Beatles"
PHYS371 - Spring 2023
Lin, Koth, Pavithran, Pasquesi</text>
<text x="86.106" y="-2.413" size="1.778" layer="51">Project in collaboration with
Prof. Spencer (ACES)</text>
<text x="49.911" y="45.339" size="1.778" layer="51" rot="R90">PCB version 1.0
Design done on
February 28th 2023</text>
<text x="17.399" y="1.778" size="1.778" layer="51">JLCJLCJLCJLC</text>
<text x="29.591" y="97.282" size="1.778" layer="51">DS3231 RTC</text>
<text x="2.159" y="90.932" size="1.778" layer="51">Distance Sensor</text>
<text x="1.651" y="9.906" size="1.778" layer="51">Arducam Pinout</text>
<text x="26.67" y="27.178" size="1.778" layer="51">BME680</text>
<text x="52.832" y="-6.604" size="1.778" layer="51">Ultimate GPS</text>
<text x="135.509" y="-2.413" size="1.778" layer="51">MicroSD</text>
<text x="137.033" y="82.423" size="1.778" layer="51">ArduinoMega 2560</text>
</plain>
<libraries>
<library name="GDG_library">
<packages>
<package name="GDG_ARDUINO_MEGA2560_PKG">
<description>Arduino MEGA 2560, component side DOWN</description>
<wire x1="0" y1="53.34" x2="0" y2="0" width="0.1524" layer="51"/>
<wire x1="0" y1="0" x2="96.52" y2="0" width="0.1524" layer="51"/>
<wire x1="96.52" y1="0" x2="99.06" y2="2.54" width="0.1524" layer="51"/>
<wire x1="99.06" y1="2.54" x2="99.06" y2="12.7" width="0.1524" layer="51"/>
<wire x1="101.6" y1="49.53" x2="99.06" y2="52.07" width="0.1524" layer="51"/>
<wire x1="99.06" y1="52.07" x2="99.06" y2="53.34" width="0.1524" layer="51"/>
<wire x1="99.06" y1="53.34" x2="0" y2="53.34" width="0.1524" layer="51"/>
<wire x1="101.6" y1="49.53" x2="101.6" y2="15.24" width="0.1524" layer="51"/>
<wire x1="101.6" y1="15.24" x2="99.06" y2="12.7" width="0.1524" layer="51"/>
<wire x1="0" y1="53.34" x2="0" y2="0" width="0.1524" layer="21"/>
<wire x1="0" y1="0" x2="96.52" y2="0" width="0.1524" layer="21"/>
<wire x1="96.52" y1="0" x2="99.06" y2="2.54" width="0.1524" layer="21"/>
<wire x1="99.06" y1="2.54" x2="99.06" y2="12.7" width="0.1524" layer="21"/>
<wire x1="99.06" y1="12.7" x2="101.6" y2="15.24" width="0.1524" layer="21"/>
<wire x1="101.6" y1="15.24" x2="101.6" y2="49.53" width="0.1524" layer="21"/>
<wire x1="101.6" y1="49.53" x2="99.06" y2="52.07" width="0.1524" layer="21"/>
<wire x1="99.06" y1="52.07" x2="99.06" y2="53.34" width="0.1524" layer="21"/>
<wire x1="99.06" y1="53.34" x2="0" y2="53.34" width="0.1524" layer="21"/>
<wire x1="-6.35" y1="21.2852" x2="9.398" y2="21.2598" width="0.1524" layer="51"/>
<wire x1="9.398" y1="21.2598" x2="9.398" y2="9.398" width="0.1524" layer="51"/>
<wire x1="9.398" y1="9.398" x2="-6.3754" y2="9.398" width="0.1524" layer="51"/>
<wire x1="-6.3754" y1="9.398" x2="-6.35" y2="21.2852" width="0.1524" layer="51"/>
<wire x1="-1.9558" y1="50.1142" x2="11.4808" y2="50.1142" width="0.1524" layer="51"/>
<wire x1="11.4808" y1="50.1142" x2="11.4808" y2="41.0464" width="0.1524" layer="51"/>
<wire x1="11.4808" y1="41.0464" x2="-1.9812" y2="41.0464" width="0.1524" layer="51"/>
<wire x1="-1.9812" y1="41.0464" x2="-1.9558" y2="50.1142" width="0.1524" layer="51"/>
<wire x1="-6.2992" y1="21.2344" x2="9.4234" y2="21.2344" width="0.1524" layer="21"/>
<wire x1="9.4234" y1="21.2344" x2="9.4234" y2="9.4234" width="0.1524" layer="21"/>
<wire x1="9.4234" y1="9.4234" x2="-6.3246" y2="9.3726" width="0.1524" layer="21"/>
<wire x1="-6.3246" y1="9.3726" x2="-6.35" y2="21.2344" width="0.1524" layer="21"/>
<wire x1="-6.3246" y1="21.209" x2="9.398" y2="21.1836" width="0.1524" layer="21"/>
<wire x1="9.398" y1="21.1836" x2="9.4488" y2="9.398" width="0.1524" layer="21"/>
<wire x1="9.4488" y1="9.398" x2="-6.3754" y2="9.398" width="0.1524" layer="21"/>
<wire x1="-6.3754" y1="9.398" x2="-6.3754" y2="21.209" width="0.1524" layer="21"/>
<wire x1="-1.9558" y1="41.0464" x2="-1.9558" y2="50.0888" width="0.1524" layer="21"/>
<wire x1="-1.9558" y1="50.0888" x2="11.5062" y2="50.0888" width="0.1524" layer="21"/>
<wire x1="11.5062" y1="50.0888" x2="11.5062" y2="41.0718" width="0.1524" layer="21"/>
<wire x1="11.5062" y1="41.0718" x2="-1.9558" y2="41.0464" width="0.1524" layer="21"/>
<wire x1="42.545" y1="52.07" x2="43.815" y2="52.07" width="0.1524" layer="21"/>
<wire x1="43.815" y1="52.07" x2="44.45" y2="51.435" width="0.1524" layer="21"/>
<wire x1="44.45" y1="51.435" x2="44.45" y2="50.165" width="0.1524" layer="21"/>
<wire x1="44.45" y1="50.165" x2="43.815" y2="49.53" width="0.1524" layer="21"/>
<wire x1="39.37" y1="51.435" x2="40.005" y2="52.07" width="0.1524" layer="21"/>
<wire x1="40.005" y1="52.07" x2="41.275" y2="52.07" width="0.1524" layer="21"/>
<wire x1="41.275" y1="52.07" x2="41.91" y2="51.435" width="0.1524" layer="21"/>
<wire x1="41.91" y1="51.435" x2="41.91" y2="50.165" width="0.1524" layer="21"/>
<wire x1="41.91" y1="50.165" x2="41.275" y2="49.53" width="0.1524" layer="21"/>
<wire x1="41.275" y1="49.53" x2="40.005" y2="49.53" width="0.1524" layer="21"/>
<wire x1="40.005" y1="49.53" x2="39.37" y2="50.165" width="0.1524" layer="21"/>
<wire x1="42.545" y1="52.07" x2="41.91" y2="51.435" width="0.1524" layer="21"/>
<wire x1="41.91" y1="50.165" x2="42.545" y2="49.53" width="0.1524" layer="21"/>
<wire x1="43.815" y1="49.53" x2="42.545" y2="49.53" width="0.1524" layer="21"/>
<wire x1="34.925" y1="52.07" x2="36.195" y2="52.07" width="0.1524" layer="21"/>
<wire x1="36.195" y1="52.07" x2="36.83" y2="51.435" width="0.1524" layer="21"/>
<wire x1="36.83" y1="51.435" x2="36.83" y2="50.165" width="0.1524" layer="21"/>
<wire x1="36.83" y1="50.165" x2="36.195" y2="49.53" width="0.1524" layer="21"/>
<wire x1="36.83" y1="51.435" x2="37.465" y2="52.07" width="0.1524" layer="21"/>
<wire x1="37.465" y1="52.07" x2="38.735" y2="52.07" width="0.1524" layer="21"/>
<wire x1="38.735" y1="52.07" x2="39.37" y2="51.435" width="0.1524" layer="21"/>
<wire x1="39.37" y1="51.435" x2="39.37" y2="50.165" width="0.1524" layer="21"/>
<wire x1="39.37" y1="50.165" x2="38.735" y2="49.53" width="0.1524" layer="21"/>
<wire x1="38.735" y1="49.53" x2="37.465" y2="49.53" width="0.1524" layer="21"/>
<wire x1="37.465" y1="49.53" x2="36.83" y2="50.165" width="0.1524" layer="21"/>
<wire x1="31.75" y1="51.435" x2="32.385" y2="52.07" width="0.1524" layer="21"/>
<wire x1="32.385" y1="52.07" x2="33.655" y2="52.07" width="0.1524" layer="21"/>
<wire x1="33.655" y1="52.07" x2="34.29" y2="51.435" width="0.1524" layer="21"/>
<wire x1="34.29" y1="51.435" x2="34.29" y2="50.165" width="0.1524" layer="21"/>
<wire x1="34.29" y1="50.165" x2="33.655" y2="49.53" width="0.1524" layer="21"/>
<wire x1="33.655" y1="49.53" x2="32.385" y2="49.53" width="0.1524" layer="21"/>
<wire x1="32.385" y1="49.53" x2="31.75" y2="50.165" width="0.1524" layer="21"/>
<wire x1="34.925" y1="52.07" x2="34.29" y2="51.435" width="0.1524" layer="21"/>
<wire x1="34.29" y1="50.165" x2="34.925" y2="49.53" width="0.1524" layer="21"/>
<wire x1="36.195" y1="49.53" x2="34.925" y2="49.53" width="0.1524" layer="21"/>
<wire x1="27.305" y1="52.07" x2="28.575" y2="52.07" width="0.1524" layer="21"/>
<wire x1="28.575" y1="52.07" x2="29.21" y2="51.435" width="0.1524" layer="21"/>
<wire x1="29.21" y1="51.435" x2="29.21" y2="50.165" width="0.1524" layer="21"/>
<wire x1="29.21" y1="50.165" x2="28.575" y2="49.53" width="0.1524" layer="21"/>
<wire x1="29.21" y1="51.435" x2="29.845" y2="52.07" width="0.1524" layer="21"/>
<wire x1="29.845" y1="52.07" x2="31.115" y2="52.07" width="0.1524" layer="21"/>
<wire x1="31.115" y1="52.07" x2="31.75" y2="51.435" width="0.1524" layer="21"/>
<wire x1="31.75" y1="51.435" x2="31.75" y2="50.165" width="0.1524" layer="21"/>
<wire x1="31.75" y1="50.165" x2="31.115" y2="49.53" width="0.1524" layer="21"/>
<wire x1="31.115" y1="49.53" x2="29.845" y2="49.53" width="0.1524" layer="21"/>
<wire x1="29.845" y1="49.53" x2="29.21" y2="50.165" width="0.1524" layer="21"/>
<wire x1="26.67" y1="51.435" x2="26.67" y2="50.165" width="0.1524" layer="21"/>
<wire x1="27.305" y1="52.07" x2="26.67" y2="51.435" width="0.1524" layer="21"/>
<wire x1="26.67" y1="50.165" x2="27.305" y2="49.53" width="0.1524" layer="21"/>
<wire x1="28.575" y1="49.53" x2="27.305" y2="49.53" width="0.1524" layer="21"/>
<wire x1="45.085" y1="52.07" x2="46.355" y2="52.07" width="0.1524" layer="21"/>
<wire x1="46.355" y1="52.07" x2="46.99" y2="51.435" width="0.1524" layer="21"/>
<wire x1="46.99" y1="51.435" x2="46.99" y2="50.165" width="0.1524" layer="21"/>
<wire x1="46.99" y1="50.165" x2="46.355" y2="49.53" width="0.1524" layer="21"/>
<wire x1="45.085" y1="52.07" x2="44.45" y2="51.435" width="0.1524" layer="21"/>
<wire x1="44.45" y1="50.165" x2="45.085" y2="49.53" width="0.1524" layer="21"/>
<wire x1="46.355" y1="49.53" x2="45.085" y2="49.53" width="0.1524" layer="21"/>
<pad name="NC" x="27.94" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="IOREF" x="30.48" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="RESET" x="33.02" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="3.3V" x="35.56" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="5V1" x="38.1" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="GND1" x="40.64" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="GND2" x="43.18" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="VIN" x="45.72" y="50.8" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="42.926" y1="50.546" x2="43.434" y2="51.054" layer="51"/>
<rectangle x1="40.386" y1="50.546" x2="40.894" y2="51.054" layer="51"/>
<rectangle x1="37.846" y1="50.546" x2="38.354" y2="51.054" layer="51"/>
<rectangle x1="35.306" y1="50.546" x2="35.814" y2="51.054" layer="51"/>
<rectangle x1="32.766" y1="50.546" x2="33.274" y2="51.054" layer="51"/>
<rectangle x1="30.226" y1="50.546" x2="30.734" y2="51.054" layer="51"/>
<rectangle x1="27.686" y1="50.546" x2="28.194" y2="51.054" layer="51"/>
<rectangle x1="45.466" y1="50.546" x2="45.974" y2="51.054" layer="51"/>
<wire x1="65.405" y1="52.07" x2="66.675" y2="52.07" width="0.1524" layer="21"/>
<wire x1="66.675" y1="52.07" x2="67.31" y2="51.435" width="0.1524" layer="21"/>
<wire x1="67.31" y1="51.435" x2="67.31" y2="50.165" width="0.1524" layer="21"/>
<wire x1="67.31" y1="50.165" x2="66.675" y2="49.53" width="0.1524" layer="21"/>
<wire x1="62.23" y1="51.435" x2="62.865" y2="52.07" width="0.1524" layer="21"/>
<wire x1="62.865" y1="52.07" x2="64.135" y2="52.07" width="0.1524" layer="21"/>
<wire x1="64.135" y1="52.07" x2="64.77" y2="51.435" width="0.1524" layer="21"/>
<wire x1="64.77" y1="51.435" x2="64.77" y2="50.165" width="0.1524" layer="21"/>
<wire x1="64.77" y1="50.165" x2="64.135" y2="49.53" width="0.1524" layer="21"/>
<wire x1="64.135" y1="49.53" x2="62.865" y2="49.53" width="0.1524" layer="21"/>
<wire x1="62.865" y1="49.53" x2="62.23" y2="50.165" width="0.1524" layer="21"/>
<wire x1="65.405" y1="52.07" x2="64.77" y2="51.435" width="0.1524" layer="21"/>
<wire x1="64.77" y1="50.165" x2="65.405" y2="49.53" width="0.1524" layer="21"/>
<wire x1="66.675" y1="49.53" x2="65.405" y2="49.53" width="0.1524" layer="21"/>
<wire x1="57.785" y1="52.07" x2="59.055" y2="52.07" width="0.1524" layer="21"/>
<wire x1="59.055" y1="52.07" x2="59.69" y2="51.435" width="0.1524" layer="21"/>
<wire x1="59.69" y1="51.435" x2="59.69" y2="50.165" width="0.1524" layer="21"/>
<wire x1="59.69" y1="50.165" x2="59.055" y2="49.53" width="0.1524" layer="21"/>
<wire x1="59.69" y1="51.435" x2="60.325" y2="52.07" width="0.1524" layer="21"/>
<wire x1="60.325" y1="52.07" x2="61.595" y2="52.07" width="0.1524" layer="21"/>
<wire x1="61.595" y1="52.07" x2="62.23" y2="51.435" width="0.1524" layer="21"/>
<wire x1="62.23" y1="51.435" x2="62.23" y2="50.165" width="0.1524" layer="21"/>
<wire x1="62.23" y1="50.165" x2="61.595" y2="49.53" width="0.1524" layer="21"/>
<wire x1="61.595" y1="49.53" x2="60.325" y2="49.53" width="0.1524" layer="21"/>
<wire x1="60.325" y1="49.53" x2="59.69" y2="50.165" width="0.1524" layer="21"/>
<wire x1="54.61" y1="51.435" x2="55.245" y2="52.07" width="0.1524" layer="21"/>
<wire x1="55.245" y1="52.07" x2="56.515" y2="52.07" width="0.1524" layer="21"/>
<wire x1="56.515" y1="52.07" x2="57.15" y2="51.435" width="0.1524" layer="21"/>
<wire x1="57.15" y1="51.435" x2="57.15" y2="50.165" width="0.1524" layer="21"/>
<wire x1="57.15" y1="50.165" x2="56.515" y2="49.53" width="0.1524" layer="21"/>
<wire x1="56.515" y1="49.53" x2="55.245" y2="49.53" width="0.1524" layer="21"/>
<wire x1="55.245" y1="49.53" x2="54.61" y2="50.165" width="0.1524" layer="21"/>
<wire x1="57.785" y1="52.07" x2="57.15" y2="51.435" width="0.1524" layer="21"/>
<wire x1="57.15" y1="50.165" x2="57.785" y2="49.53" width="0.1524" layer="21"/>
<wire x1="59.055" y1="49.53" x2="57.785" y2="49.53" width="0.1524" layer="21"/>
<wire x1="50.165" y1="52.07" x2="51.435" y2="52.07" width="0.1524" layer="21"/>
<wire x1="51.435" y1="52.07" x2="52.07" y2="51.435" width="0.1524" layer="21"/>
<wire x1="52.07" y1="51.435" x2="52.07" y2="50.165" width="0.1524" layer="21"/>
<wire x1="52.07" y1="50.165" x2="51.435" y2="49.53" width="0.1524" layer="21"/>
<wire x1="52.07" y1="51.435" x2="52.705" y2="52.07" width="0.1524" layer="21"/>
<wire x1="52.705" y1="52.07" x2="53.975" y2="52.07" width="0.1524" layer="21"/>
<wire x1="53.975" y1="52.07" x2="54.61" y2="51.435" width="0.1524" layer="21"/>
<wire x1="54.61" y1="51.435" x2="54.61" y2="50.165" width="0.1524" layer="21"/>
<wire x1="54.61" y1="50.165" x2="53.975" y2="49.53" width="0.1524" layer="21"/>
<wire x1="53.975" y1="49.53" x2="52.705" y2="49.53" width="0.1524" layer="21"/>
<wire x1="52.705" y1="49.53" x2="52.07" y2="50.165" width="0.1524" layer="21"/>
<wire x1="49.53" y1="51.435" x2="49.53" y2="50.165" width="0.1524" layer="21"/>
<wire x1="50.165" y1="52.07" x2="49.53" y2="51.435" width="0.1524" layer="21"/>
<wire x1="49.53" y1="50.165" x2="50.165" y2="49.53" width="0.1524" layer="21"/>
<wire x1="51.435" y1="49.53" x2="50.165" y2="49.53" width="0.1524" layer="21"/>
<wire x1="67.945" y1="52.07" x2="69.215" y2="52.07" width="0.1524" layer="21"/>
<wire x1="69.215" y1="52.07" x2="69.85" y2="51.435" width="0.1524" layer="21"/>
<wire x1="69.85" y1="51.435" x2="69.85" y2="50.165" width="0.1524" layer="21"/>
<wire x1="69.85" y1="50.165" x2="69.215" y2="49.53" width="0.1524" layer="21"/>
<wire x1="67.945" y1="52.07" x2="67.31" y2="51.435" width="0.1524" layer="21"/>
<wire x1="67.31" y1="50.165" x2="67.945" y2="49.53" width="0.1524" layer="21"/>
<wire x1="69.215" y1="49.53" x2="67.945" y2="49.53" width="0.1524" layer="21"/>
<pad name="A0" x="50.8" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A1" x="53.34" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A2" x="55.88" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A3" x="58.42" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A4" x="60.96" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A5" x="63.5" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A6" x="66.04" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A7" x="68.58" y="50.8" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="65.786" y1="50.546" x2="66.294" y2="51.054" layer="51"/>
<rectangle x1="63.246" y1="50.546" x2="63.754" y2="51.054" layer="51"/>
<rectangle x1="60.706" y1="50.546" x2="61.214" y2="51.054" layer="51"/>
<rectangle x1="58.166" y1="50.546" x2="58.674" y2="51.054" layer="51"/>
<rectangle x1="55.626" y1="50.546" x2="56.134" y2="51.054" layer="51"/>
<rectangle x1="53.086" y1="50.546" x2="53.594" y2="51.054" layer="51"/>
<rectangle x1="50.546" y1="50.546" x2="51.054" y2="51.054" layer="51"/>
<rectangle x1="68.326" y1="50.546" x2="68.834" y2="51.054" layer="51"/>
<wire x1="88.265" y1="52.07" x2="89.535" y2="52.07" width="0.1524" layer="21"/>
<wire x1="89.535" y1="52.07" x2="90.17" y2="51.435" width="0.1524" layer="21"/>
<wire x1="90.17" y1="51.435" x2="90.17" y2="50.165" width="0.1524" layer="21"/>
<wire x1="90.17" y1="50.165" x2="89.535" y2="49.53" width="0.1524" layer="21"/>
<wire x1="85.09" y1="51.435" x2="85.725" y2="52.07" width="0.1524" layer="21"/>
<wire x1="85.725" y1="52.07" x2="86.995" y2="52.07" width="0.1524" layer="21"/>
<wire x1="86.995" y1="52.07" x2="87.63" y2="51.435" width="0.1524" layer="21"/>
<wire x1="87.63" y1="51.435" x2="87.63" y2="50.165" width="0.1524" layer="21"/>
<wire x1="87.63" y1="50.165" x2="86.995" y2="49.53" width="0.1524" layer="21"/>
<wire x1="86.995" y1="49.53" x2="85.725" y2="49.53" width="0.1524" layer="21"/>
<wire x1="85.725" y1="49.53" x2="85.09" y2="50.165" width="0.1524" layer="21"/>
<wire x1="88.265" y1="52.07" x2="87.63" y2="51.435" width="0.1524" layer="21"/>
<wire x1="87.63" y1="50.165" x2="88.265" y2="49.53" width="0.1524" layer="21"/>
<wire x1="89.535" y1="49.53" x2="88.265" y2="49.53" width="0.1524" layer="21"/>
<wire x1="80.645" y1="52.07" x2="81.915" y2="52.07" width="0.1524" layer="21"/>
<wire x1="81.915" y1="52.07" x2="82.55" y2="51.435" width="0.1524" layer="21"/>
<wire x1="82.55" y1="51.435" x2="82.55" y2="50.165" width="0.1524" layer="21"/>
<wire x1="82.55" y1="50.165" x2="81.915" y2="49.53" width="0.1524" layer="21"/>
<wire x1="82.55" y1="51.435" x2="83.185" y2="52.07" width="0.1524" layer="21"/>
<wire x1="83.185" y1="52.07" x2="84.455" y2="52.07" width="0.1524" layer="21"/>
<wire x1="84.455" y1="52.07" x2="85.09" y2="51.435" width="0.1524" layer="21"/>
<wire x1="85.09" y1="51.435" x2="85.09" y2="50.165" width="0.1524" layer="21"/>
<wire x1="85.09" y1="50.165" x2="84.455" y2="49.53" width="0.1524" layer="21"/>
<wire x1="84.455" y1="49.53" x2="83.185" y2="49.53" width="0.1524" layer="21"/>
<wire x1="83.185" y1="49.53" x2="82.55" y2="50.165" width="0.1524" layer="21"/>
<wire x1="77.47" y1="51.435" x2="78.105" y2="52.07" width="0.1524" layer="21"/>
<wire x1="78.105" y1="52.07" x2="79.375" y2="52.07" width="0.1524" layer="21"/>
<wire x1="79.375" y1="52.07" x2="80.01" y2="51.435" width="0.1524" layer="21"/>
<wire x1="80.01" y1="51.435" x2="80.01" y2="50.165" width="0.1524" layer="21"/>
<wire x1="80.01" y1="50.165" x2="79.375" y2="49.53" width="0.1524" layer="21"/>
<wire x1="79.375" y1="49.53" x2="78.105" y2="49.53" width="0.1524" layer="21"/>
<wire x1="78.105" y1="49.53" x2="77.47" y2="50.165" width="0.1524" layer="21"/>
<wire x1="80.645" y1="52.07" x2="80.01" y2="51.435" width="0.1524" layer="21"/>
<wire x1="80.01" y1="50.165" x2="80.645" y2="49.53" width="0.1524" layer="21"/>
<wire x1="81.915" y1="49.53" x2="80.645" y2="49.53" width="0.1524" layer="21"/>
<wire x1="73.025" y1="52.07" x2="74.295" y2="52.07" width="0.1524" layer="21"/>
<wire x1="74.295" y1="52.07" x2="74.93" y2="51.435" width="0.1524" layer="21"/>
<wire x1="74.93" y1="51.435" x2="74.93" y2="50.165" width="0.1524" layer="21"/>
<wire x1="74.93" y1="50.165" x2="74.295" y2="49.53" width="0.1524" layer="21"/>
<wire x1="74.93" y1="51.435" x2="75.565" y2="52.07" width="0.1524" layer="21"/>
<wire x1="75.565" y1="52.07" x2="76.835" y2="52.07" width="0.1524" layer="21"/>
<wire x1="76.835" y1="52.07" x2="77.47" y2="51.435" width="0.1524" layer="21"/>
<wire x1="77.47" y1="51.435" x2="77.47" y2="50.165" width="0.1524" layer="21"/>
<wire x1="77.47" y1="50.165" x2="76.835" y2="49.53" width="0.1524" layer="21"/>
<wire x1="76.835" y1="49.53" x2="75.565" y2="49.53" width="0.1524" layer="21"/>
<wire x1="75.565" y1="49.53" x2="74.93" y2="50.165" width="0.1524" layer="21"/>
<wire x1="72.39" y1="51.435" x2="72.39" y2="50.165" width="0.1524" layer="21"/>
<wire x1="73.025" y1="52.07" x2="72.39" y2="51.435" width="0.1524" layer="21"/>
<wire x1="72.39" y1="50.165" x2="73.025" y2="49.53" width="0.1524" layer="21"/>
<wire x1="74.295" y1="49.53" x2="73.025" y2="49.53" width="0.1524" layer="21"/>
<wire x1="90.805" y1="52.07" x2="92.075" y2="52.07" width="0.1524" layer="21"/>
<wire x1="92.075" y1="52.07" x2="92.71" y2="51.435" width="0.1524" layer="21"/>
<wire x1="92.71" y1="51.435" x2="92.71" y2="50.165" width="0.1524" layer="21"/>
<wire x1="92.71" y1="50.165" x2="92.075" y2="49.53" width="0.1524" layer="21"/>
<wire x1="90.805" y1="52.07" x2="90.17" y2="51.435" width="0.1524" layer="21"/>
<wire x1="90.17" y1="50.165" x2="90.805" y2="49.53" width="0.1524" layer="21"/>
<wire x1="92.075" y1="49.53" x2="90.805" y2="49.53" width="0.1524" layer="21"/>
<pad name="A8" x="73.66" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A9" x="76.2" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A10" x="78.74" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A11" x="81.28" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A12" x="83.82" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A13" x="86.36" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A14" x="88.9" y="50.8" drill="1.016" shape="long" rot="R90"/>
<pad name="A15" x="91.44" y="50.8" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="88.646" y1="50.546" x2="89.154" y2="51.054" layer="51"/>
<rectangle x1="86.106" y1="50.546" x2="86.614" y2="51.054" layer="51"/>
<rectangle x1="83.566" y1="50.546" x2="84.074" y2="51.054" layer="51"/>
<rectangle x1="81.026" y1="50.546" x2="81.534" y2="51.054" layer="51"/>
<rectangle x1="78.486" y1="50.546" x2="78.994" y2="51.054" layer="51"/>
<rectangle x1="75.946" y1="50.546" x2="76.454" y2="51.054" layer="51"/>
<rectangle x1="73.406" y1="50.546" x2="73.914" y2="51.054" layer="51"/>
<rectangle x1="91.186" y1="50.546" x2="91.694" y2="51.054" layer="51"/>
<wire x1="83.185" y1="3.81" x2="84.455" y2="3.81" width="0.1524" layer="21"/>
<wire x1="84.455" y1="3.81" x2="85.09" y2="3.175" width="0.1524" layer="21"/>
<wire x1="85.09" y1="3.175" x2="85.09" y2="1.905" width="0.1524" layer="21"/>
<wire x1="85.09" y1="1.905" x2="84.455" y2="1.27" width="0.1524" layer="21"/>
<wire x1="80.01" y1="3.175" x2="80.645" y2="3.81" width="0.1524" layer="21"/>
<wire x1="80.645" y1="3.81" x2="81.915" y2="3.81" width="0.1524" layer="21"/>
<wire x1="81.915" y1="3.81" x2="82.55" y2="3.175" width="0.1524" layer="21"/>
<wire x1="82.55" y1="3.175" x2="82.55" y2="1.905" width="0.1524" layer="21"/>
<wire x1="82.55" y1="1.905" x2="81.915" y2="1.27" width="0.1524" layer="21"/>
<wire x1="81.915" y1="1.27" x2="80.645" y2="1.27" width="0.1524" layer="21"/>
<wire x1="80.645" y1="1.27" x2="80.01" y2="1.905" width="0.1524" layer="21"/>
<wire x1="83.185" y1="3.81" x2="82.55" y2="3.175" width="0.1524" layer="21"/>
<wire x1="82.55" y1="1.905" x2="83.185" y2="1.27" width="0.1524" layer="21"/>
<wire x1="84.455" y1="1.27" x2="83.185" y2="1.27" width="0.1524" layer="21"/>
<wire x1="75.565" y1="3.81" x2="76.835" y2="3.81" width="0.1524" layer="21"/>
<wire x1="76.835" y1="3.81" x2="77.47" y2="3.175" width="0.1524" layer="21"/>
<wire x1="77.47" y1="3.175" x2="77.47" y2="1.905" width="0.1524" layer="21"/>
<wire x1="77.47" y1="1.905" x2="76.835" y2="1.27" width="0.1524" layer="21"/>
<wire x1="77.47" y1="3.175" x2="78.105" y2="3.81" width="0.1524" layer="21"/>
<wire x1="78.105" y1="3.81" x2="79.375" y2="3.81" width="0.1524" layer="21"/>
<wire x1="79.375" y1="3.81" x2="80.01" y2="3.175" width="0.1524" layer="21"/>
<wire x1="80.01" y1="3.175" x2="80.01" y2="1.905" width="0.1524" layer="21"/>
<wire x1="80.01" y1="1.905" x2="79.375" y2="1.27" width="0.1524" layer="21"/>
<wire x1="79.375" y1="1.27" x2="78.105" y2="1.27" width="0.1524" layer="21"/>
<wire x1="78.105" y1="1.27" x2="77.47" y2="1.905" width="0.1524" layer="21"/>
<wire x1="72.39" y1="3.175" x2="73.025" y2="3.81" width="0.1524" layer="21"/>
<wire x1="73.025" y1="3.81" x2="74.295" y2="3.81" width="0.1524" layer="21"/>
<wire x1="74.295" y1="3.81" x2="74.93" y2="3.175" width="0.1524" layer="21"/>
<wire x1="74.93" y1="3.175" x2="74.93" y2="1.905" width="0.1524" layer="21"/>
<wire x1="74.93" y1="1.905" x2="74.295" y2="1.27" width="0.1524" layer="21"/>
<wire x1="74.295" y1="1.27" x2="73.025" y2="1.27" width="0.1524" layer="21"/>
<wire x1="73.025" y1="1.27" x2="72.39" y2="1.905" width="0.1524" layer="21"/>
<wire x1="75.565" y1="3.81" x2="74.93" y2="3.175" width="0.1524" layer="21"/>
<wire x1="74.93" y1="1.905" x2="75.565" y2="1.27" width="0.1524" layer="21"/>
<wire x1="76.835" y1="1.27" x2="75.565" y2="1.27" width="0.1524" layer="21"/>
<wire x1="67.945" y1="3.81" x2="69.215" y2="3.81" width="0.1524" layer="21"/>
<wire x1="69.215" y1="3.81" x2="69.85" y2="3.175" width="0.1524" layer="21"/>
<wire x1="69.85" y1="3.175" x2="69.85" y2="1.905" width="0.1524" layer="21"/>
<wire x1="69.85" y1="1.905" x2="69.215" y2="1.27" width="0.1524" layer="21"/>
<wire x1="69.85" y1="3.175" x2="70.485" y2="3.81" width="0.1524" layer="21"/>
<wire x1="70.485" y1="3.81" x2="71.755" y2="3.81" width="0.1524" layer="21"/>
<wire x1="71.755" y1="3.81" x2="72.39" y2="3.175" width="0.1524" layer="21"/>
<wire x1="72.39" y1="3.175" x2="72.39" y2="1.905" width="0.1524" layer="21"/>
<wire x1="72.39" y1="1.905" x2="71.755" y2="1.27" width="0.1524" layer="21"/>
<wire x1="71.755" y1="1.27" x2="70.485" y2="1.27" width="0.1524" layer="21"/>
<wire x1="70.485" y1="1.27" x2="69.85" y2="1.905" width="0.1524" layer="21"/>
<wire x1="67.31" y1="3.175" x2="67.31" y2="1.905" width="0.1524" layer="21"/>
<wire x1="67.945" y1="3.81" x2="67.31" y2="3.175" width="0.1524" layer="21"/>
<wire x1="67.31" y1="1.905" x2="67.945" y2="1.27" width="0.1524" layer="21"/>
<wire x1="69.215" y1="1.27" x2="67.945" y2="1.27" width="0.1524" layer="21"/>
<wire x1="85.725" y1="3.81" x2="86.995" y2="3.81" width="0.1524" layer="21"/>
<wire x1="86.995" y1="3.81" x2="87.63" y2="3.175" width="0.1524" layer="21"/>
<wire x1="87.63" y1="3.175" x2="87.63" y2="1.905" width="0.1524" layer="21"/>
<wire x1="87.63" y1="1.905" x2="86.995" y2="1.27" width="0.1524" layer="21"/>
<wire x1="85.725" y1="3.81" x2="85.09" y2="3.175" width="0.1524" layer="21"/>
<wire x1="85.09" y1="1.905" x2="85.725" y2="1.27" width="0.1524" layer="21"/>
<wire x1="86.995" y1="1.27" x2="85.725" y2="1.27" width="0.1524" layer="21"/>
<pad name="D14TX3" x="68.58" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D15RX3" x="71.12" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D16TX2" x="73.66" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D17RX2" x="76.2" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D18TX1" x="78.74" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D19RX1" x="81.28" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D20SDA" x="83.82" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D21SCL" x="86.36" y="2.54" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="83.566" y1="2.286" x2="84.074" y2="2.794" layer="51"/>
<rectangle x1="81.026" y1="2.286" x2="81.534" y2="2.794" layer="51"/>
<rectangle x1="78.486" y1="2.286" x2="78.994" y2="2.794" layer="51"/>
<rectangle x1="75.946" y1="2.286" x2="76.454" y2="2.794" layer="51"/>
<rectangle x1="73.406" y1="2.286" x2="73.914" y2="2.794" layer="51"/>
<rectangle x1="70.866" y1="2.286" x2="71.374" y2="2.794" layer="51"/>
<rectangle x1="68.326" y1="2.286" x2="68.834" y2="2.794" layer="51"/>
<rectangle x1="86.106" y1="2.286" x2="86.614" y2="2.794" layer="51"/>
<wire x1="60.325" y1="3.81" x2="61.595" y2="3.81" width="0.1524" layer="21"/>
<wire x1="61.595" y1="3.81" x2="62.23" y2="3.175" width="0.1524" layer="21"/>
<wire x1="62.23" y1="3.175" x2="62.23" y2="1.905" width="0.1524" layer="21"/>
<wire x1="62.23" y1="1.905" x2="61.595" y2="1.27" width="0.1524" layer="21"/>
<wire x1="57.15" y1="3.175" x2="57.785" y2="3.81" width="0.1524" layer="21"/>
<wire x1="57.785" y1="3.81" x2="59.055" y2="3.81" width="0.1524" layer="21"/>
<wire x1="59.055" y1="3.81" x2="59.69" y2="3.175" width="0.1524" layer="21"/>
<wire x1="59.69" y1="3.175" x2="59.69" y2="1.905" width="0.1524" layer="21"/>
<wire x1="59.69" y1="1.905" x2="59.055" y2="1.27" width="0.1524" layer="21"/>
<wire x1="59.055" y1="1.27" x2="57.785" y2="1.27" width="0.1524" layer="21"/>
<wire x1="57.785" y1="1.27" x2="57.15" y2="1.905" width="0.1524" layer="21"/>
<wire x1="60.325" y1="3.81" x2="59.69" y2="3.175" width="0.1524" layer="21"/>
<wire x1="59.69" y1="1.905" x2="60.325" y2="1.27" width="0.1524" layer="21"/>
<wire x1="61.595" y1="1.27" x2="60.325" y2="1.27" width="0.1524" layer="21"/>
<wire x1="52.705" y1="3.81" x2="53.975" y2="3.81" width="0.1524" layer="21"/>
<wire x1="53.975" y1="3.81" x2="54.61" y2="3.175" width="0.1524" layer="21"/>
<wire x1="54.61" y1="3.175" x2="54.61" y2="1.905" width="0.1524" layer="21"/>
<wire x1="54.61" y1="1.905" x2="53.975" y2="1.27" width="0.1524" layer="21"/>
<wire x1="54.61" y1="3.175" x2="55.245" y2="3.81" width="0.1524" layer="21"/>
<wire x1="55.245" y1="3.81" x2="56.515" y2="3.81" width="0.1524" layer="21"/>
<wire x1="56.515" y1="3.81" x2="57.15" y2="3.175" width="0.1524" layer="21"/>
<wire x1="57.15" y1="3.175" x2="57.15" y2="1.905" width="0.1524" layer="21"/>
<wire x1="57.15" y1="1.905" x2="56.515" y2="1.27" width="0.1524" layer="21"/>
<wire x1="56.515" y1="1.27" x2="55.245" y2="1.27" width="0.1524" layer="21"/>
<wire x1="55.245" y1="1.27" x2="54.61" y2="1.905" width="0.1524" layer="21"/>
<wire x1="49.53" y1="3.175" x2="50.165" y2="3.81" width="0.1524" layer="21"/>
<wire x1="50.165" y1="3.81" x2="51.435" y2="3.81" width="0.1524" layer="21"/>
<wire x1="51.435" y1="3.81" x2="52.07" y2="3.175" width="0.1524" layer="21"/>
<wire x1="52.07" y1="3.175" x2="52.07" y2="1.905" width="0.1524" layer="21"/>
<wire x1="52.07" y1="1.905" x2="51.435" y2="1.27" width="0.1524" layer="21"/>
<wire x1="51.435" y1="1.27" x2="50.165" y2="1.27" width="0.1524" layer="21"/>
<wire x1="50.165" y1="1.27" x2="49.53" y2="1.905" width="0.1524" layer="21"/>
<wire x1="52.705" y1="3.81" x2="52.07" y2="3.175" width="0.1524" layer="21"/>
<wire x1="52.07" y1="1.905" x2="52.705" y2="1.27" width="0.1524" layer="21"/>
<wire x1="53.975" y1="1.27" x2="52.705" y2="1.27" width="0.1524" layer="21"/>
<wire x1="45.085" y1="3.81" x2="46.355" y2="3.81" width="0.1524" layer="21"/>
<wire x1="46.355" y1="3.81" x2="46.99" y2="3.175" width="0.1524" layer="21"/>
<wire x1="46.99" y1="3.175" x2="46.99" y2="1.905" width="0.1524" layer="21"/>
<wire x1="46.99" y1="1.905" x2="46.355" y2="1.27" width="0.1524" layer="21"/>
<wire x1="46.99" y1="3.175" x2="47.625" y2="3.81" width="0.1524" layer="21"/>
<wire x1="47.625" y1="3.81" x2="48.895" y2="3.81" width="0.1524" layer="21"/>
<wire x1="48.895" y1="3.81" x2="49.53" y2="3.175" width="0.1524" layer="21"/>
<wire x1="49.53" y1="3.175" x2="49.53" y2="1.905" width="0.1524" layer="21"/>
<wire x1="49.53" y1="1.905" x2="48.895" y2="1.27" width="0.1524" layer="21"/>
<wire x1="48.895" y1="1.27" x2="47.625" y2="1.27" width="0.1524" layer="21"/>
<wire x1="47.625" y1="1.27" x2="46.99" y2="1.905" width="0.1524" layer="21"/>
<wire x1="44.45" y1="3.175" x2="44.45" y2="1.905" width="0.1524" layer="21"/>
<wire x1="45.085" y1="3.81" x2="44.45" y2="3.175" width="0.1524" layer="21"/>
<wire x1="44.45" y1="1.905" x2="45.085" y2="1.27" width="0.1524" layer="21"/>
<wire x1="46.355" y1="1.27" x2="45.085" y2="1.27" width="0.1524" layer="21"/>
<wire x1="62.865" y1="3.81" x2="64.135" y2="3.81" width="0.1524" layer="21"/>
<wire x1="64.135" y1="3.81" x2="64.77" y2="3.175" width="0.1524" layer="21"/>
<wire x1="64.77" y1="3.175" x2="64.77" y2="1.905" width="0.1524" layer="21"/>
<wire x1="64.77" y1="1.905" x2="64.135" y2="1.27" width="0.1524" layer="21"/>
<wire x1="62.865" y1="3.81" x2="62.23" y2="3.175" width="0.1524" layer="21"/>
<wire x1="62.23" y1="1.905" x2="62.865" y2="1.27" width="0.1524" layer="21"/>
<wire x1="64.135" y1="1.27" x2="62.865" y2="1.27" width="0.1524" layer="21"/>
<pad name="D7" x="45.72" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D6" x="48.26" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D5" x="50.8" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D4" x="53.34" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D3" x="55.88" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D2" x="58.42" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D1&lt;-TX" x="60.96" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D0-&gt;RX" x="63.5" y="2.54" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="60.706" y1="2.286" x2="61.214" y2="2.794" layer="51"/>
<rectangle x1="58.166" y1="2.286" x2="58.674" y2="2.794" layer="51"/>
<rectangle x1="55.626" y1="2.286" x2="56.134" y2="2.794" layer="51"/>
<rectangle x1="53.086" y1="2.286" x2="53.594" y2="2.794" layer="51"/>
<rectangle x1="50.546" y1="2.286" x2="51.054" y2="2.794" layer="51"/>
<rectangle x1="48.006" y1="2.286" x2="48.514" y2="2.794" layer="51"/>
<rectangle x1="45.466" y1="2.286" x2="45.974" y2="2.794" layer="51"/>
<rectangle x1="63.246" y1="2.286" x2="63.754" y2="2.794" layer="51"/>
<wire x1="37.846" y1="3.175" x2="38.481" y2="3.81" width="0.1524" layer="21"/>
<wire x1="38.481" y1="3.81" x2="39.751" y2="3.81" width="0.1524" layer="21"/>
<wire x1="39.751" y1="3.81" x2="40.386" y2="3.175" width="0.1524" layer="21"/>
<wire x1="40.386" y1="3.175" x2="40.386" y2="1.905" width="0.1524" layer="21"/>
<wire x1="40.386" y1="1.905" x2="39.751" y2="1.27" width="0.1524" layer="21"/>
<wire x1="39.751" y1="1.27" x2="38.481" y2="1.27" width="0.1524" layer="21"/>
<wire x1="38.481" y1="1.27" x2="37.846" y2="1.905" width="0.1524" layer="21"/>
<wire x1="33.401" y1="3.81" x2="34.671" y2="3.81" width="0.1524" layer="21"/>
<wire x1="34.671" y1="3.81" x2="35.306" y2="3.175" width="0.1524" layer="21"/>
<wire x1="35.306" y1="3.175" x2="35.306" y2="1.905" width="0.1524" layer="21"/>
<wire x1="35.306" y1="1.905" x2="34.671" y2="1.27" width="0.1524" layer="21"/>
<wire x1="35.306" y1="3.175" x2="35.941" y2="3.81" width="0.1524" layer="21"/>
<wire x1="35.941" y1="3.81" x2="37.211" y2="3.81" width="0.1524" layer="21"/>
<wire x1="37.211" y1="3.81" x2="37.846" y2="3.175" width="0.1524" layer="21"/>
<wire x1="37.846" y1="3.175" x2="37.846" y2="1.905" width="0.1524" layer="21"/>
<wire x1="37.846" y1="1.905" x2="37.211" y2="1.27" width="0.1524" layer="21"/>
<wire x1="37.211" y1="1.27" x2="35.941" y2="1.27" width="0.1524" layer="21"/>
<wire x1="35.941" y1="1.27" x2="35.306" y2="1.905" width="0.1524" layer="21"/>
<wire x1="30.226" y1="3.175" x2="30.861" y2="3.81" width="0.1524" layer="21"/>
<wire x1="30.861" y1="3.81" x2="32.131" y2="3.81" width="0.1524" layer="21"/>
<wire x1="32.131" y1="3.81" x2="32.766" y2="3.175" width="0.1524" layer="21"/>
<wire x1="32.766" y1="3.175" x2="32.766" y2="1.905" width="0.1524" layer="21"/>
<wire x1="32.766" y1="1.905" x2="32.131" y2="1.27" width="0.1524" layer="21"/>
<wire x1="32.131" y1="1.27" x2="30.861" y2="1.27" width="0.1524" layer="21"/>
<wire x1="30.861" y1="1.27" x2="30.226" y2="1.905" width="0.1524" layer="21"/>
<wire x1="33.401" y1="3.81" x2="32.766" y2="3.175" width="0.1524" layer="21"/>
<wire x1="32.766" y1="1.905" x2="33.401" y2="1.27" width="0.1524" layer="21"/>
<wire x1="34.671" y1="1.27" x2="33.401" y2="1.27" width="0.1524" layer="21"/>
<wire x1="25.781" y1="3.81" x2="27.051" y2="3.81" width="0.1524" layer="21"/>
<wire x1="27.051" y1="3.81" x2="27.686" y2="3.175" width="0.1524" layer="21"/>
<wire x1="27.686" y1="3.175" x2="27.686" y2="1.905" width="0.1524" layer="21"/>
<wire x1="27.686" y1="1.905" x2="27.051" y2="1.27" width="0.1524" layer="21"/>
<wire x1="27.686" y1="3.175" x2="28.321" y2="3.81" width="0.1524" layer="21"/>
<wire x1="28.321" y1="3.81" x2="29.591" y2="3.81" width="0.1524" layer="21"/>
<wire x1="29.591" y1="3.81" x2="30.226" y2="3.175" width="0.1524" layer="21"/>
<wire x1="30.226" y1="3.175" x2="30.226" y2="1.905" width="0.1524" layer="21"/>
<wire x1="30.226" y1="1.905" x2="29.591" y2="1.27" width="0.1524" layer="21"/>
<wire x1="29.591" y1="1.27" x2="28.321" y2="1.27" width="0.1524" layer="21"/>
<wire x1="28.321" y1="1.27" x2="27.686" y2="1.905" width="0.1524" layer="21"/>
<wire x1="22.606" y1="3.175" x2="23.241" y2="3.81" width="0.1524" layer="21"/>
<wire x1="23.241" y1="3.81" x2="24.511" y2="3.81" width="0.1524" layer="21"/>
<wire x1="24.511" y1="3.81" x2="25.146" y2="3.175" width="0.1524" layer="21"/>
<wire x1="25.146" y1="3.175" x2="25.146" y2="1.905" width="0.1524" layer="21"/>
<wire x1="25.146" y1="1.905" x2="24.511" y2="1.27" width="0.1524" layer="21"/>
<wire x1="24.511" y1="1.27" x2="23.241" y2="1.27" width="0.1524" layer="21"/>
<wire x1="23.241" y1="1.27" x2="22.606" y2="1.905" width="0.1524" layer="21"/>
<wire x1="25.781" y1="3.81" x2="25.146" y2="3.175" width="0.1524" layer="21"/>
<wire x1="25.146" y1="1.905" x2="25.781" y2="1.27" width="0.1524" layer="21"/>
<wire x1="27.051" y1="1.27" x2="25.781" y2="1.27" width="0.1524" layer="21"/>
<wire x1="18.161" y1="3.81" x2="19.431" y2="3.81" width="0.1524" layer="21"/>
<wire x1="19.431" y1="3.81" x2="20.066" y2="3.175" width="0.1524" layer="21"/>
<wire x1="20.066" y1="3.175" x2="20.066" y2="1.905" width="0.1524" layer="21"/>
<wire x1="20.066" y1="1.905" x2="19.431" y2="1.27" width="0.1524" layer="21"/>
<wire x1="20.066" y1="3.175" x2="20.701" y2="3.81" width="0.1524" layer="21"/>
<wire x1="20.701" y1="3.81" x2="21.971" y2="3.81" width="0.1524" layer="21"/>
<wire x1="21.971" y1="3.81" x2="22.606" y2="3.175" width="0.1524" layer="21"/>
<wire x1="22.606" y1="3.175" x2="22.606" y2="1.905" width="0.1524" layer="21"/>
<wire x1="22.606" y1="1.905" x2="21.971" y2="1.27" width="0.1524" layer="21"/>
<wire x1="21.971" y1="1.27" x2="20.701" y2="1.27" width="0.1524" layer="21"/>
<wire x1="20.701" y1="1.27" x2="20.066" y2="1.905" width="0.1524" layer="21"/>
<wire x1="17.526" y1="3.175" x2="17.526" y2="1.905" width="0.1524" layer="21"/>
<wire x1="18.161" y1="3.81" x2="17.526" y2="3.175" width="0.1524" layer="21"/>
<wire x1="17.526" y1="1.905" x2="18.161" y2="1.27" width="0.1524" layer="21"/>
<wire x1="19.431" y1="1.27" x2="18.161" y2="1.27" width="0.1524" layer="21"/>
<wire x1="41.021" y1="3.81" x2="42.291" y2="3.81" width="0.1524" layer="21"/>
<wire x1="42.291" y1="3.81" x2="42.926" y2="3.175" width="0.1524" layer="21"/>
<wire x1="42.926" y1="3.175" x2="42.926" y2="1.905" width="0.1524" layer="21"/>
<wire x1="42.926" y1="1.905" x2="42.291" y2="1.27" width="0.1524" layer="21"/>
<wire x1="41.021" y1="3.81" x2="40.386" y2="3.175" width="0.1524" layer="21"/>
<wire x1="40.386" y1="1.905" x2="41.021" y2="1.27" width="0.1524" layer="21"/>
<wire x1="42.291" y1="1.27" x2="41.021" y2="1.27" width="0.1524" layer="21"/>
<pad name="SCL1" x="18.796" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="SDA1" x="21.336" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="AREF" x="23.876" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="GND3" x="26.416" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D13" x="28.956" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D12" x="31.496" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D11" x="34.036" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D10" x="36.576" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D9" x="39.116" y="2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="D8" x="41.656" y="2.54" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="38.862" y1="2.286" x2="39.37" y2="2.794" layer="51"/>
<rectangle x1="36.322" y1="2.286" x2="36.83" y2="2.794" layer="51"/>
<rectangle x1="33.782" y1="2.286" x2="34.29" y2="2.794" layer="51"/>
<rectangle x1="31.242" y1="2.286" x2="31.75" y2="2.794" layer="51"/>
<rectangle x1="28.702" y1="2.286" x2="29.21" y2="2.794" layer="51"/>
<rectangle x1="26.162" y1="2.286" x2="26.67" y2="2.794" layer="51"/>
<rectangle x1="23.622" y1="2.286" x2="24.13" y2="2.794" layer="51"/>
<rectangle x1="21.082" y1="2.286" x2="21.59" y2="2.794" layer="51"/>
<rectangle x1="18.542" y1="2.286" x2="19.05" y2="2.794" layer="51"/>
<rectangle x1="41.402" y1="2.286" x2="41.91" y2="2.794" layer="51"/>
<wire x1="97.155" y1="1.27" x2="97.79" y2="1.905" width="0.1524" layer="21"/>
<wire x1="97.79" y1="1.905" x2="97.79" y2="3.175" width="0.1524" layer="21"/>
<wire x1="97.79" y1="3.175" x2="97.155" y2="3.81" width="0.1524" layer="21"/>
<wire x1="97.155" y1="3.81" x2="97.79" y2="4.445" width="0.1524" layer="21"/>
<wire x1="97.79" y1="4.445" x2="97.79" y2="5.715" width="0.1524" layer="21"/>
<wire x1="97.79" y1="5.715" x2="97.155" y2="6.35" width="0.1524" layer="21"/>
<wire x1="97.155" y1="6.35" x2="97.79" y2="6.985" width="0.1524" layer="21"/>
<wire x1="97.79" y1="6.985" x2="97.79" y2="8.255" width="0.1524" layer="21"/>
<wire x1="97.79" y1="8.255" x2="97.155" y2="8.89" width="0.1524" layer="21"/>
<wire x1="97.155" y1="8.89" x2="97.79" y2="9.525" width="0.1524" layer="21"/>
<wire x1="97.79" y1="9.525" x2="97.79" y2="10.795" width="0.1524" layer="21"/>
<wire x1="97.79" y1="10.795" x2="97.155" y2="11.43" width="0.1524" layer="21"/>
<wire x1="97.155" y1="11.43" x2="97.79" y2="12.065" width="0.1524" layer="21"/>
<wire x1="97.79" y1="12.065" x2="97.79" y2="13.335" width="0.1524" layer="21"/>
<wire x1="97.79" y1="13.335" x2="97.155" y2="13.97" width="0.1524" layer="21"/>
<wire x1="97.155" y1="13.97" x2="97.79" y2="14.605" width="0.1524" layer="21"/>
<wire x1="97.79" y1="14.605" x2="97.79" y2="15.875" width="0.1524" layer="21"/>
<wire x1="97.79" y1="15.875" x2="97.155" y2="16.51" width="0.1524" layer="21"/>
<wire x1="97.155" y1="1.27" x2="93.345" y2="1.27" width="0.1524" layer="21"/>
<wire x1="93.345" y1="1.27" x2="92.71" y2="1.905" width="0.1524" layer="21"/>
<wire x1="92.71" y1="1.905" x2="92.71" y2="3.175" width="0.1524" layer="21"/>
<wire x1="92.71" y1="3.175" x2="93.345" y2="3.81" width="0.1524" layer="21"/>
<wire x1="93.345" y1="3.81" x2="92.71" y2="4.445" width="0.1524" layer="21"/>
<wire x1="92.71" y1="4.445" x2="92.71" y2="5.715" width="0.1524" layer="21"/>
<wire x1="92.71" y1="5.715" x2="93.345" y2="6.35" width="0.1524" layer="21"/>
<wire x1="93.345" y1="6.35" x2="92.71" y2="6.985" width="0.1524" layer="21"/>
<wire x1="92.71" y1="6.985" x2="92.71" y2="8.255" width="0.1524" layer="21"/>
<wire x1="92.71" y1="8.255" x2="93.345" y2="8.89" width="0.1524" layer="21"/>
<wire x1="93.345" y1="8.89" x2="92.71" y2="9.525" width="0.1524" layer="21"/>
<wire x1="92.71" y1="9.525" x2="92.71" y2="10.795" width="0.1524" layer="21"/>
<wire x1="92.71" y1="10.795" x2="93.345" y2="11.43" width="0.1524" layer="21"/>
<wire x1="93.345" y1="11.43" x2="92.71" y2="12.065" width="0.1524" layer="21"/>
<wire x1="92.71" y1="12.065" x2="92.71" y2="13.335" width="0.1524" layer="21"/>
<wire x1="92.71" y1="13.335" x2="93.345" y2="13.97" width="0.1524" layer="21"/>
<wire x1="93.345" y1="13.97" x2="92.71" y2="14.605" width="0.1524" layer="21"/>
<wire x1="92.71" y1="14.605" x2="92.71" y2="15.875" width="0.1524" layer="21"/>
<wire x1="92.71" y1="15.875" x2="93.345" y2="16.51" width="0.1524" layer="21"/>
<wire x1="93.345" y1="16.51" x2="92.71" y2="17.145" width="0.1524" layer="21"/>
<wire x1="92.71" y1="17.145" x2="92.71" y2="18.415" width="0.1524" layer="21"/>
<wire x1="92.71" y1="18.415" x2="93.345" y2="19.05" width="0.1524" layer="21"/>
<wire x1="93.345" y1="19.05" x2="92.71" y2="19.685" width="0.1524" layer="21"/>
<wire x1="92.71" y1="19.685" x2="92.71" y2="20.955" width="0.1524" layer="21"/>
<wire x1="92.71" y1="20.955" x2="93.345" y2="21.59" width="0.1524" layer="21"/>
<wire x1="93.345" y1="21.59" x2="92.71" y2="22.225" width="0.1524" layer="21"/>
<wire x1="92.71" y1="22.225" x2="92.71" y2="23.495" width="0.1524" layer="21"/>
<wire x1="92.71" y1="23.495" x2="93.345" y2="24.13" width="0.1524" layer="21"/>
<wire x1="93.345" y1="24.13" x2="92.71" y2="24.765" width="0.1524" layer="21"/>
<wire x1="92.71" y1="24.765" x2="92.71" y2="26.035" width="0.1524" layer="21"/>
<wire x1="92.71" y1="26.035" x2="93.345" y2="26.67" width="0.1524" layer="21"/>
<wire x1="93.345" y1="26.67" x2="92.71" y2="27.305" width="0.1524" layer="21"/>
<wire x1="92.71" y1="27.305" x2="92.71" y2="28.575" width="0.1524" layer="21"/>
<wire x1="92.71" y1="28.575" x2="93.345" y2="29.21" width="0.1524" layer="21"/>
<wire x1="93.345" y1="29.21" x2="92.71" y2="29.845" width="0.1524" layer="21"/>
<wire x1="92.71" y1="29.845" x2="92.71" y2="31.115" width="0.1524" layer="21"/>
<wire x1="93.345" y1="31.75" x2="92.71" y2="31.115" width="0.1524" layer="21"/>
<wire x1="93.345" y1="31.75" x2="92.71" y2="32.385" width="0.1524" layer="21"/>
<wire x1="92.71" y1="33.655" x2="92.71" y2="32.385" width="0.1524" layer="21"/>
<wire x1="92.71" y1="33.655" x2="93.345" y2="34.29" width="0.1524" layer="21"/>
<wire x1="93.345" y1="34.29" x2="92.71" y2="34.925" width="0.1524" layer="21"/>
<wire x1="92.71" y1="36.195" x2="92.71" y2="34.925" width="0.1524" layer="21"/>
<wire x1="92.71" y1="36.195" x2="93.345" y2="36.83" width="0.1524" layer="21"/>
<wire x1="93.345" y1="36.83" x2="92.71" y2="37.465" width="0.1524" layer="21"/>
<wire x1="92.71" y1="38.735" x2="92.71" y2="37.465" width="0.1524" layer="21"/>
<wire x1="92.71" y1="38.735" x2="93.345" y2="39.37" width="0.1524" layer="21"/>
<wire x1="93.345" y1="39.37" x2="92.71" y2="40.005" width="0.1524" layer="21"/>
<wire x1="92.71" y1="41.275" x2="92.71" y2="40.005" width="0.1524" layer="21"/>
<wire x1="92.71" y1="41.275" x2="93.345" y2="41.91" width="0.1524" layer="21"/>
<wire x1="93.345" y1="41.91" x2="92.71" y2="42.545" width="0.1524" layer="21"/>
<wire x1="92.71" y1="43.815" x2="92.71" y2="42.545" width="0.1524" layer="21"/>
<wire x1="92.71" y1="43.815" x2="93.345" y2="44.45" width="0.1524" layer="21"/>
<wire x1="93.345" y1="44.45" x2="92.71" y2="45.085" width="0.1524" layer="21"/>
<wire x1="92.71" y1="46.355" x2="92.71" y2="45.085" width="0.1524" layer="21"/>
<wire x1="92.71" y1="46.355" x2="93.345" y2="46.99" width="0.1524" layer="21"/>
<wire x1="97.155" y1="46.99" x2="97.79" y2="46.355" width="0.1524" layer="21"/>
<wire x1="97.79" y1="46.355" x2="97.79" y2="45.085" width="0.1524" layer="21"/>
<wire x1="97.155" y1="44.45" x2="97.79" y2="45.085" width="0.1524" layer="21"/>
<wire x1="97.155" y1="44.45" x2="97.79" y2="43.815" width="0.1524" layer="21"/>
<wire x1="97.79" y1="43.815" x2="97.79" y2="42.545" width="0.1524" layer="21"/>
<wire x1="97.155" y1="41.91" x2="97.79" y2="42.545" width="0.1524" layer="21"/>
<wire x1="97.155" y1="41.91" x2="97.79" y2="41.275" width="0.1524" layer="21"/>
<wire x1="97.79" y1="40.005" x2="97.79" y2="41.275" width="0.1524" layer="21"/>
<wire x1="97.79" y1="40.005" x2="97.155" y2="39.37" width="0.1524" layer="21"/>
<wire x1="97.155" y1="39.37" x2="97.79" y2="38.735" width="0.1524" layer="21"/>
<wire x1="97.79" y1="37.465" x2="97.79" y2="38.735" width="0.1524" layer="21"/>
<wire x1="97.79" y1="37.465" x2="97.155" y2="36.83" width="0.1524" layer="21"/>
<wire x1="97.155" y1="36.83" x2="97.79" y2="36.195" width="0.1524" layer="21"/>
<wire x1="97.79" y1="36.195" x2="97.79" y2="34.925" width="0.1524" layer="21"/>
<wire x1="97.155" y1="34.29" x2="97.79" y2="34.925" width="0.1524" layer="21"/>
<wire x1="97.155" y1="34.29" x2="97.79" y2="33.655" width="0.1524" layer="21"/>
<wire x1="97.79" y1="33.655" x2="97.79" y2="32.385" width="0.1524" layer="21"/>
<wire x1="97.155" y1="31.75" x2="97.79" y2="32.385" width="0.1524" layer="21"/>
<wire x1="97.155" y1="31.75" x2="97.79" y2="31.115" width="0.1524" layer="21"/>
<wire x1="97.79" y1="31.115" x2="97.79" y2="29.845" width="0.1524" layer="21"/>
<wire x1="97.155" y1="29.21" x2="97.79" y2="29.845" width="0.1524" layer="21"/>
<wire x1="97.155" y1="29.21" x2="97.79" y2="28.575" width="0.1524" layer="21"/>
<wire x1="97.79" y1="28.575" x2="97.79" y2="27.305" width="0.1524" layer="21"/>
<wire x1="97.155" y1="26.67" x2="97.79" y2="27.305" width="0.1524" layer="21"/>
<wire x1="97.155" y1="26.67" x2="97.79" y2="26.035" width="0.1524" layer="21"/>
<wire x1="97.79" y1="26.035" x2="97.79" y2="24.765" width="0.1524" layer="21"/>
<wire x1="97.155" y1="24.13" x2="97.79" y2="24.765" width="0.1524" layer="21"/>
<wire x1="97.155" y1="24.13" x2="97.79" y2="23.495" width="0.1524" layer="21"/>
<wire x1="97.79" y1="23.495" x2="97.79" y2="22.225" width="0.1524" layer="21"/>
<wire x1="97.155" y1="21.59" x2="97.79" y2="22.225" width="0.1524" layer="21"/>
<wire x1="97.155" y1="21.59" x2="97.79" y2="20.955" width="0.1524" layer="21"/>
<wire x1="97.79" y1="20.955" x2="97.79" y2="19.685" width="0.1524" layer="21"/>
<wire x1="97.155" y1="19.05" x2="97.79" y2="19.685" width="0.1524" layer="21"/>
<wire x1="97.155" y1="19.05" x2="97.79" y2="18.415" width="0.1524" layer="21"/>
<wire x1="97.79" y1="18.415" x2="97.79" y2="17.145" width="0.1524" layer="21"/>
<wire x1="97.155" y1="16.51" x2="97.79" y2="17.145" width="0.1524" layer="21"/>
<wire x1="93.345" y1="3.81" x2="97.155" y2="3.81" width="0.1524" layer="21"/>
<wire x1="93.345" y1="6.35" x2="97.155" y2="6.35" width="0.1524" layer="21"/>
<wire x1="93.345" y1="8.89" x2="97.155" y2="8.89" width="0.1524" layer="21"/>
<wire x1="93.345" y1="11.43" x2="97.155" y2="11.43" width="0.1524" layer="21"/>
<wire x1="93.345" y1="13.97" x2="97.155" y2="13.97" width="0.1524" layer="21"/>
<wire x1="93.345" y1="16.51" x2="97.155" y2="16.51" width="0.1524" layer="21"/>
<wire x1="93.345" y1="19.05" x2="97.155" y2="19.05" width="0.1524" layer="21"/>
<wire x1="93.345" y1="21.59" x2="97.155" y2="21.59" width="0.1524" layer="21"/>
<wire x1="93.345" y1="24.13" x2="97.155" y2="24.13" width="0.1524" layer="21"/>
<wire x1="93.345" y1="26.67" x2="97.155" y2="26.67" width="0.1524" layer="21"/>
<wire x1="93.345" y1="29.21" x2="97.155" y2="29.21" width="0.1524" layer="21"/>
<wire x1="93.345" y1="31.75" x2="97.155" y2="31.75" width="0.1524" layer="21"/>
<wire x1="93.345" y1="34.29" x2="97.155" y2="34.29" width="0.1524" layer="21"/>
<wire x1="93.345" y1="36.83" x2="97.155" y2="36.83" width="0.1524" layer="21"/>
<wire x1="93.345" y1="39.37" x2="97.155" y2="39.37" width="0.1524" layer="21"/>
<wire x1="93.345" y1="41.91" x2="97.155" y2="41.91" width="0.1524" layer="21"/>
<wire x1="93.345" y1="44.45" x2="97.155" y2="44.45" width="0.1524" layer="21"/>
<wire x1="93.345" y1="46.99" x2="97.155" y2="46.99" width="0.1524" layer="21"/>
<pad name="5V3" x="96.52" y="2.54" drill="1.016" shape="octagon" rot="R90"/>
<pad name="5V2" x="93.98" y="2.54" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D23" x="96.52" y="5.08" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D22" x="93.98" y="5.08" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D25" x="96.52" y="7.62" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D24" x="93.98" y="7.62" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D27" x="96.52" y="10.16" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D26" x="93.98" y="10.16" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D29" x="96.52" y="12.7" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D28" x="93.98" y="12.7" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D31" x="96.52" y="15.24" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D30" x="93.98" y="15.24" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D33" x="96.52" y="17.78" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D32" x="93.98" y="17.78" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D35" x="96.52" y="20.32" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D34" x="93.98" y="20.32" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D37" x="96.52" y="22.86" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D36" x="93.98" y="22.86" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D39" x="96.52" y="25.4" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D38" x="93.98" y="25.4" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D41" x="96.52" y="27.94" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D40" x="93.98" y="27.94" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D43" x="96.52" y="30.48" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D42" x="93.98" y="30.48" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D45" x="96.52" y="33.02" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D44" x="93.98" y="33.02" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D47" x="96.52" y="35.56" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D46" x="93.98" y="35.56" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D49" x="96.52" y="38.1" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D48" x="93.98" y="38.1" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D51" x="96.52" y="40.64" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D50" x="93.98" y="40.64" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D53" x="96.52" y="43.18" drill="1.016" shape="octagon" rot="R90"/>
<pad name="D52" x="93.98" y="43.18" drill="1.016" shape="octagon" rot="R90"/>
<pad name="GND5" x="96.52" y="45.72" drill="1.016" shape="octagon" rot="R90"/>
<pad name="GND4" x="93.98" y="45.72" drill="1.016" shape="octagon" rot="R90"/>
<rectangle x1="96.266" y1="2.286" x2="96.774" y2="2.794" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="2.286" x2="94.234" y2="2.794" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="4.826" x2="94.234" y2="5.334" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="4.826" x2="96.774" y2="5.334" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="7.366" x2="94.234" y2="7.874" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="7.366" x2="96.774" y2="7.874" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="9.906" x2="94.234" y2="10.414" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="12.446" x2="94.234" y2="12.954" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="14.986" x2="94.234" y2="15.494" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="9.906" x2="96.774" y2="10.414" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="12.446" x2="96.774" y2="12.954" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="14.986" x2="96.774" y2="15.494" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="17.526" x2="94.234" y2="18.034" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="17.526" x2="96.774" y2="18.034" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="20.066" x2="94.234" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="20.066" x2="96.774" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="22.606" x2="94.234" y2="23.114" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="22.606" x2="96.774" y2="23.114" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="25.146" x2="94.234" y2="25.654" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="25.146" x2="96.774" y2="25.654" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="27.686" x2="94.234" y2="28.194" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="27.686" x2="96.774" y2="28.194" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="30.226" x2="94.234" y2="30.734" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="30.226" x2="96.774" y2="30.734" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="32.766" x2="94.234" y2="33.274" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="32.766" x2="96.774" y2="33.274" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="35.306" x2="94.234" y2="35.814" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="35.306" x2="96.774" y2="35.814" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="37.846" x2="94.234" y2="38.354" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="37.846" x2="96.774" y2="38.354" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="40.386" x2="94.234" y2="40.894" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="40.386" x2="96.774" y2="40.894" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="42.926" x2="94.234" y2="43.434" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="42.926" x2="96.774" y2="43.434" layer="51" rot="R90"/>
<rectangle x1="93.726" y1="45.466" x2="94.234" y2="45.974" layer="51" rot="R90"/>
<rectangle x1="96.266" y1="45.466" x2="96.774" y2="45.974" layer="51" rot="R90"/>
<text x="38.1" y="24.13" size="1.778" layer="21">Arduino MEGA 2560
components down</text>
<text x="31.115" y="53.975" size="1.778" layer="21" rot="R90">IOREF</text>
<text x="46.99" y="53.975" size="1.778" layer="21" rot="R90">Vin</text>
<text x="69.215" y="53.975" size="1.778" layer="21" rot="R90">A7</text>
<text x="50.8" y="53.975" size="1.778" layer="21" rot="R90">A0</text>
<text x="73.914" y="53.975" size="1.778" layer="21" rot="R90">A8</text>
<text x="92.075" y="53.975" size="1.778" layer="21" rot="R90">A15</text>
<text x="19.431" y="-6.35" size="1.778" layer="21" rot="R90">SCL1</text>
<text x="42.545" y="-3.429" size="1.778" layer="21" rot="R90">D8</text>
<text x="46.609" y="-3.429" size="1.778" layer="21" rot="R90">D7</text>
<text x="64.516" y="-9.144" size="1.778" layer="21" rot="R90">D0-&gt;RX</text>
<text x="69.596" y="-9.398" size="1.778" layer="21" rot="R90">D14TX3</text>
<text x="87.122" y="-9.779" size="1.778" layer="21" rot="R90">D21SCL</text>
<text x="88.011" y="39.624" size="1.778" layer="21">D51</text>
<text x="88.011" y="42.291" size="1.778" layer="21">D53</text>
<text x="88.011" y="22.098" size="1.778" layer="21">D37</text>
<text x="88.011" y="4.064" size="1.778" layer="21">D23</text>
</package>
<package name="GDG_BME680_PKG">
<description>BME680 temperature, pressure, relative humidity, and volatile organic compounds sensor</description>
<circle x="0" y="0" radius="1.27" width="0" layer="21"/>
<wire x1="11.43" y1="0.635" x2="12.065" y2="1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="1.27" x2="13.335" y2="1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="0.635" x2="13.97" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="13.335" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="-1.27" x2="12.065" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="-1.27" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="8.255" y2="1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="1.27" x2="8.89" y2="0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.255" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="-0.635" x2="10.795" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="9.525" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.715" y2="1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="0.635" x2="6.35" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="1.27" x2="3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="3.81" y2="0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="-1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="14.605" y1="1.27" x2="15.875" y2="1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="1.27" x2="16.51" y2="0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="0.635" x2="16.51" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="15.875" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="14.605" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="-1.27" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="12.7" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="7" x="15.24" y="0" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="12.446" y1="-0.254" x2="12.954" y2="0.254" layer="51"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<rectangle x1="14.986" y1="-0.254" x2="15.494" y2="0.254" layer="51"/>
<wire x1="-1.27" y1="-2.54" x2="-1.27" y2="13.97" width="0.1524" layer="51"/>
<wire x1="-1.27" y1="13.97" x2="16.51" y2="13.97" width="0.1524" layer="51"/>
<wire x1="16.51" y1="13.97" x2="16.51" y2="-2.54" width="0.1524" layer="51"/>
<wire x1="16.51" y1="-2.54" x2="-1.27" y2="-2.54" width="0.1524" layer="51"/>
<wire x1="-1.27" y1="-2.54" x2="-1.27" y2="13.97" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="13.97" x2="16.51" y2="13.97" width="0.1524" layer="21"/>
<wire x1="16.51" y1="13.97" x2="16.51" y2="-2.54" width="0.1524" layer="21"/>
<wire x1="16.51" y1="-2.54" x2="-1.27" y2="-2.54" width="0.1524" layer="21"/>
<text x="0" y="3.81" size="1.778" layer="21">BME680
T/P/RH/VOC</text>
<circle x="1.27" y="11.43" radius="1.27" width="0.127" layer="21"/>
<circle x="13.97" y="11.43" radius="1.27" width="0.127" layer="21"/>
<circle x="1.27" y="11.43" radius="1.27" width="0.127" layer="20"/>
<circle x="13.97" y="11.43" radius="1.27" width="0.127" layer="20"/>
<circle x="1.27" y="11.43" radius="1.27" width="0.127" layer="45"/>
<circle x="13.97" y="11.43" radius="1.27" width="0.127" layer="45"/>
<hole x="1.27" y="11.43" drill="2.54"/>
<hole x="13.97" y="11.43" drill="2.54"/>
</package>
<package name="GDG_ULTIMATE_GPS_PKG">
<description>Adafruit "ultimate GPS" breakout board</description>
<wire x1="14.605" y1="1.27" x2="15.875" y2="1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="1.27" x2="16.51" y2="0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="0.635" x2="16.51" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="15.875" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="16.51" y1="0.635" x2="17.145" y2="1.27" width="0.1524" layer="21"/>
<wire x1="17.145" y1="1.27" x2="18.415" y2="1.27" width="0.1524" layer="21"/>
<wire x1="18.415" y1="1.27" x2="19.05" y2="0.635" width="0.1524" layer="21"/>
<wire x1="19.05" y1="0.635" x2="19.05" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="19.05" y1="-0.635" x2="18.415" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="18.415" y1="-1.27" x2="17.145" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="17.145" y1="-1.27" x2="16.51" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="12.065" y2="1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="1.27" x2="13.335" y2="1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="0.635" x2="13.97" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="13.335" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="-1.27" x2="12.065" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="-1.27" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="14.605" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="-1.27" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="8.255" y2="1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="1.27" x2="8.89" y2="0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.255" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="-0.635" x2="10.795" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="9.525" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.715" y2="1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="0.635" x2="6.35" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="1.27" x2="3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="3.81" y2="0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="-1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="19.685" y1="1.27" x2="20.955" y2="1.27" width="0.1524" layer="21"/>
<wire x1="20.955" y1="1.27" x2="21.59" y2="0.635" width="0.1524" layer="21"/>
<wire x1="21.59" y1="0.635" x2="21.59" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="21.59" y1="-0.635" x2="20.955" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="19.685" y1="1.27" x2="19.05" y2="0.635" width="0.1524" layer="21"/>
<wire x1="19.05" y1="-0.635" x2="19.685" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="20.955" y1="-1.27" x2="19.685" y2="-1.27" width="0.1524" layer="21"/>
<pad name="3.3V" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="EN" x="2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="VBAT" x="5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="FIX" x="7.62" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="TX" x="10.16" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="RX" x="12.7" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="GND" x="15.24" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="VIN" x="17.78" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="PPS" x="20.32" y="0" drill="1.016" shape="long" rot="R90"/>
<wire x1="-2.54" y1="-2.032" x2="22.86" y2="-2.032" width="0.1524" layer="21"/>
<wire x1="22.86" y1="-2.032" x2="22.86" y2="32.004" width="0.1524" layer="21"/>
<wire x1="22.86" y1="32.004" x2="-2.54" y2="32.004" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="32.004" x2="-2.54" y2="-2.032" width="0.1524" layer="21"/>
<wire x1="2.032" y1="26.924" x2="2.032" y2="10.16" width="0.1524" layer="21"/>
<wire x1="2.032" y1="10.16" x2="18.288" y2="10.16" width="0.1524" layer="21"/>
<wire x1="18.288" y1="10.16" x2="18.288" y2="26.924" width="0.1524" layer="21"/>
<wire x1="18.288" y1="26.924" x2="2.032" y2="26.924" width="0.1524" layer="21"/>
<text x="6.096" y="16.764" size="1.778" layer="21">Ultimate
GPS</text>
<wire x1="-2.54" y1="-2.032" x2="-2.54" y2="32.004" width="0.1524" layer="51"/>
<wire x1="-2.54" y1="32.004" x2="22.86" y2="32.004" width="0.1524" layer="51"/>
<wire x1="22.86" y1="32.004" x2="22.86" y2="-2.032" width="0.1524" layer="51"/>
<wire x1="22.86" y1="-2.032" x2="-2.54" y2="-2.032" width="0.1524" layer="51"/>
<wire x1="2.032" y1="10.16" x2="2.032" y2="26.924" width="0.1524" layer="51"/>
<wire x1="2.032" y1="26.924" x2="18.288" y2="26.924" width="0.1524" layer="51"/>
<wire x1="18.288" y1="26.924" x2="18.288" y2="10.16" width="0.1524" layer="51"/>
<wire x1="18.288" y1="10.16" x2="2.032" y2="10.16" width="0.1524" layer="51"/>
<text x="6.096" y="16.764" size="1.778" layer="51">Ultimate
GPS</text>
<circle x="0" y="29.464" radius="1.27" width="0.127" layer="21"/>
<circle x="20.32" y="29.464" radius="1.27" width="0.127" layer="21"/>
<circle x="0" y="29.464" radius="1.27" width="0.127" layer="20"/>
<circle x="20.32" y="29.464" radius="1.27" width="0.127" layer="20"/>
<circle x="20.32" y="29.464" radius="1.27" width="0.127" layer="45"/>
<circle x="0" y="29.464" radius="1.27" width="0.127" layer="45"/>
<circle x="0" y="29.464" radius="1.27" width="0.127" layer="51"/>
<circle x="20.32" y="29.464" radius="1.27" width="0.127" layer="51"/>
<hole x="0" y="29.464" drill="2.54"/>
<hole x="20.32" y="29.464" drill="2.54"/>
<circle x="0" y="29.464" radius="1.27" width="0.127" layer="20"/>
<circle x="20.32" y="29.464" radius="1.27" width="0.127" layer="20"/>
<circle x="0" y="29.464" radius="1.27" width="0.127" layer="20"/>
<circle x="20.32" y="29.464" radius="1.27" width="0.127" layer="20"/>
<circle x="0" y="29.464" radius="1.27" width="0.127" layer="20"/>
<circle x="20.32" y="29.464" radius="1.27" width="0.127" layer="20"/>
</package>
<package name="GDG_DS3231_PKG">
<description>DS3231 real time clock with battery backup</description>
<circle x="0" y="0" radius="1.27" width="0" layer="21"/>
<wire x1="-2.54" y1="-2.54" x2="-2.54" y2="15.24" width="0.1016" layer="51"/>
<wire x1="-2.54" y1="15.24" x2="20.447" y2="15.24" width="0.1016" layer="51"/>
<wire x1="20.447" y1="15.24" x2="20.447" y2="-2.54" width="0.1016" layer="51"/>
<wire x1="20.447" y1="-2.54" x2="-2.54" y2="-2.54" width="0.1016" layer="51"/>
<text x="5.08" y="5.08" size="1.778" layer="21">DS3231
RTC</text>
<wire x1="14.605" y1="1.27" x2="15.875" y2="1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="1.27" x2="16.51" y2="0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="0.635" x2="16.51" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="15.875" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="12.065" y2="1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="1.27" x2="13.335" y2="1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="0.635" x2="13.97" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="13.335" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="-1.27" x2="12.065" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="-1.27" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="14.605" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="-1.27" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="8.255" y2="1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="1.27" x2="8.89" y2="0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.255" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="-0.635" x2="10.795" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="9.525" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.715" y2="1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="0.635" x2="6.35" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="1.27" x2="3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="3.81" y2="0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="-1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="17.145" y1="1.27" x2="18.415" y2="1.27" width="0.1524" layer="21"/>
<wire x1="18.415" y1="1.27" x2="19.05" y2="0.635" width="0.1524" layer="21"/>
<wire x1="19.05" y1="0.635" x2="19.05" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="19.05" y1="-0.635" x2="18.415" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="17.145" y1="1.27" x2="16.51" y2="0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="17.145" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="18.415" y1="-1.27" x2="17.145" y2="-1.27" width="0.1524" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="12.7" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="7" x="15.24" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="8" x="17.78" y="0" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="14.986" y1="-0.254" x2="15.494" y2="0.254" layer="51"/>
<rectangle x1="12.446" y1="-0.254" x2="12.954" y2="0.254" layer="51"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<rectangle x1="17.526" y1="-0.254" x2="18.034" y2="0.254" layer="51"/>
<wire x1="-2.54" y1="-2.54" x2="-2.54" y2="15.24" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="15.24" x2="20.447" y2="15.24" width="0.1524" layer="21"/>
<wire x1="20.447" y1="15.24" x2="20.447" y2="-2.54" width="0.1524" layer="21"/>
<wire x1="20.447" y1="-2.54" x2="-2.54" y2="-2.54" width="0.1524" layer="21"/>
<circle x="0" y="12.7" radius="1.27" width="0.127" layer="21"/>
<circle x="17.78" y="12.7" radius="1.27" width="0.127" layer="21"/>
<circle x="0" y="12.7" radius="1.27" width="0.127" layer="20"/>
<circle x="17.78" y="12.7" radius="1.27" width="0.127" layer="20"/>
<circle x="0" y="12.7" radius="1.27" width="0.127" layer="45"/>
<circle x="17.78" y="12.7" radius="1.27" width="0.127" layer="45"/>
<hole x="0" y="12.7" drill="2.54"/>
<hole x="17.78" y="12.7" drill="2.54"/>
</package>
<package name="GDG_MICROSD_PKG">
<description>Adafruit microSD reader breakout board</description>
<circle x="0" y="0" radius="1.27" width="0" layer="21"/>
<wire x1="-3.8354" y1="-1.524" x2="-3.8354" y2="30.226" width="0.1016" layer="51"/>
<wire x1="-3.8354" y1="30.226" x2="21.59" y2="30.226" width="0.1016" layer="51"/>
<wire x1="21.59" y1="30.226" x2="21.59" y2="-1.524" width="0.1016" layer="51"/>
<wire x1="21.59" y1="-1.524" x2="-3.8354" y2="-1.524" width="0.1016" layer="51"/>
<text x="4.445" y="15.875" size="1.778" layer="51">microSD
breakout</text>
<wire x1="14.605" y1="1.27" x2="15.875" y2="1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="1.27" x2="16.51" y2="0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="0.635" x2="16.51" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="15.875" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="12.065" y2="1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="1.27" x2="13.335" y2="1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="0.635" x2="13.97" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="13.335" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="13.335" y1="-1.27" x2="12.065" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="12.065" y1="-1.27" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="14.605" y1="1.27" x2="13.97" y2="0.635" width="0.1524" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="15.875" y1="-1.27" x2="14.605" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="8.255" y2="1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="1.27" x2="8.89" y2="0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.255" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="-0.635" x2="10.795" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="9.525" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.715" y2="1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="0.635" x2="6.35" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="1.27" x2="3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="3.81" y2="0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0.635" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="-1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="17.145" y1="1.27" x2="18.415" y2="1.27" width="0.1524" layer="21"/>
<wire x1="18.415" y1="1.27" x2="19.05" y2="0.635" width="0.1524" layer="21"/>
<wire x1="19.05" y1="0.635" x2="19.05" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="19.05" y1="-0.635" x2="18.415" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="17.145" y1="1.27" x2="16.51" y2="0.635" width="0.1524" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="17.145" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="18.415" y1="-1.27" x2="17.145" y2="-1.27" width="0.1524" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="12.7" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="7" x="15.24" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="8" x="17.78" y="0" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="14.986" y1="-0.254" x2="15.494" y2="0.254" layer="51"/>
<rectangle x1="12.446" y1="-0.254" x2="12.954" y2="0.254" layer="51"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<rectangle x1="17.526" y1="-0.254" x2="18.034" y2="0.254" layer="51"/>
<text x="4.445" y="15.875" size="1.778" layer="21">microSD
breakout</text>
<wire x1="-3.8354" y1="-1.524" x2="-3.8354" y2="30.226" width="0.1524" layer="21"/>
<wire x1="-3.8354" y1="30.226" x2="21.59" y2="30.226" width="0.1524" layer="21"/>
<wire x1="21.59" y1="30.226" x2="21.59" y2="-1.524" width="0.1524" layer="21"/>
<wire x1="21.59" y1="-1.524" x2="-3.8354" y2="-1.524" width="0.1524" layer="21"/>
<circle x="-1.27" y="27.686" radius="1.27" width="0.127" layer="21"/>
<circle x="19.05" y="27.686" radius="1.27" width="0.127" layer="21"/>
<circle x="-1.27" y="7.366" radius="1.27" width="0.127" layer="21"/>
<circle x="19.05" y="7.366" radius="1.27" width="0.127" layer="21"/>
<circle x="-1.27" y="27.686" radius="1.29515" width="0.127" layer="20"/>
<circle x="19.05" y="27.686" radius="1.27" width="0.127" layer="20"/>
<circle x="19.05" y="7.366" radius="1.29515" width="0.127" layer="20"/>
<circle x="-1.27" y="7.366" radius="1.27" width="0.127" layer="20"/>
<circle x="-1.27" y="7.366" radius="1.27" width="0.127" layer="51"/>
<circle x="19.05" y="7.366" radius="1.27" width="0.127" layer="51"/>
<circle x="19.05" y="27.686" radius="1.27" width="0.127" layer="51"/>
<circle x="-1.27" y="27.686" radius="1.27" width="0.127" layer="51"/>
<circle x="-1.27" y="27.686" radius="1.29515" width="0.127" layer="45"/>
<circle x="19.05" y="27.686" radius="1.29515" width="0.127" layer="45"/>
<circle x="19.05" y="7.366" radius="1.29515" width="0.127" layer="45"/>
<circle x="-1.27" y="7.366" radius="1.27" width="0.127" layer="45"/>
<rectangle x1="3.81" y1="30.226" x2="15.24" y2="31.496" layer="51"/>
<rectangle x1="3.81" y1="30.226" x2="15.24" y2="31.496" layer="21"/>
<rectangle x1="3.81" y1="30.226" x2="15.24" y2="31.496" layer="48"/>
<hole x="-1.27" y="27.686" drill="2.54"/>
<hole x="19.05" y="27.686" drill="2.54"/>
<hole x="19.05" y="7.366" drill="2.54"/>
<hole x="-1.27" y="7.366" drill="2.54"/>
</package>
<package name="GDG_5XAA_BATTERY_PKG">
<description>Adafruit 5 x AA battery pack</description>
<wire x1="0" y1="0" x2="58.42" y2="0" width="0.1524" layer="21"/>
<wire x1="58.42" y1="0" x2="58.42" y2="78.74" width="0.1524" layer="21"/>
<wire x1="58.42" y1="78.74" x2="0" y2="78.74" width="0.1524" layer="21"/>
<wire x1="0" y1="78.74" x2="0" y2="0" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="1.27" y2="-1.905" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-1.905" x2="1.27" y2="-3.175" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-3.175" x2="0.635" y2="-3.81" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-1.905" x2="-1.27" y2="-3.175" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="-1.27" y2="-1.905" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-3.175" x2="-0.635" y2="-3.81" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-3.81" x2="-0.635" y2="-3.81" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-1.905" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="3.81" y2="-1.905" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-1.905" x2="3.81" y2="-3.175" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-3.175" x2="3.175" y2="-3.81" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-3.81" x2="1.905" y2="-3.81" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-3.81" x2="1.27" y2="-3.175" width="0.1524" layer="21"/>
<pad name="BATTERY_7.5V" x="0" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="BATTERY_GND" x="2.54" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<circle x="29.21" y="8.8265" radius="1.5875" width="0.1524" layer="21"/>
<circle x="29.21" y="69.7865" radius="1.5875" width="0.1524" layer="21"/>
<wire x1="0" y1="0" x2="0" y2="78.74" width="0.1524" layer="51"/>
<wire x1="0" y1="78.74" x2="58.42" y2="78.74" width="0.1524" layer="51"/>
<wire x1="58.42" y1="78.74" x2="58.42" y2="0" width="0.1524" layer="51"/>
<wire x1="58.42" y1="0" x2="0" y2="0" width="0.1524" layer="51"/>
<text x="7.62" y="40.64" size="3.81" layer="51">5 x AA battery pack</text>
<circle x="29.21" y="8.89" radius="1.626390625" width="0.1524" layer="20"/>
<circle x="29.21" y="69.85" radius="1.70388125" width="0.1524" layer="20"/>
<circle x="29.21" y="69.85" radius="1.626390625" width="0.1524" layer="45"/>
<circle x="29.21" y="8.89" radius="1.626390625" width="0.1524" layer="45"/>
<circle x="29.21" y="8.89" radius="1.70388125" width="0.1524" layer="44"/>
<circle x="29.21" y="69.85" radius="1.70388125" width="0.1524" layer="44"/>
<circle x="29.21" y="69.85" radius="1.70388125" width="0.1524" layer="51"/>
<circle x="29.21" y="8.89" radius="1.70388125" width="0.1524" layer="51"/>
<circle x="29.21" y="69.723" radius="1.887990625" width="0.1524" layer="39"/>
<circle x="29.21" y="8.89" radius="1.80500625" width="0.1524" layer="39"/>
<circle x="29.21" y="8.89" radius="1.80500625" width="0.1524" layer="40"/>
<circle x="29.21" y="69.723" radius="1.887990625" width="0.1524" layer="40"/>
<hole x="29.21" y="69.85" drill="2.54"/>
<hole x="29.21" y="8.89" drill="2.54"/>
</package>
<package name="GDG_RESISTOR_PKG">
<description>resistor</description>
<wire x1="-1.27" y1="-0.635" x2="-1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.27" y2="0" width="0.1524" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51" rot="R90"/>
<wire x1="1.27" y1="0" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.89" y2="0" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0" x2="8.89" y2="0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.1524" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.1524" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="10.795" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="9.525" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="11.43" y1="0.635" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<pad name="2" x="10.16" y="0" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51" rot="R90"/>
<wire x1="1.27" y1="0" x2="2.54" y2="0" width="0.127" layer="21"/>
<wire x1="8.89" y1="0" x2="7.62" y2="0" width="0.127" layer="21"/>
<wire x1="2.54" y1="0" x2="3.175" y2="0.635" width="0.127" layer="21"/>
<wire x1="3.175" y1="0.635" x2="4.445" y2="-0.635" width="0.127" layer="21"/>
<wire x1="4.445" y1="-0.635" x2="5.715" y2="0.635" width="0.127" layer="21"/>
<wire x1="5.715" y1="0.635" x2="6.985" y2="-0.635" width="0.127" layer="21"/>
<wire x1="6.985" y1="-0.635" x2="7.62" y2="0" width="0.127" layer="21"/>
</package>
<package name="GDG_1N5817_PKG">
<description>1N5817 Schottky barrier diode</description>
<wire x1="-2.082" y1="0.92" x2="2.082" y2="0.92" width="0.1524" layer="21"/>
<wire x1="-2.082" y1="0.92" x2="-2.082" y2="-0.92" width="0.1524" layer="21"/>
<wire x1="2.082" y1="-0.92" x2="-2.082" y2="-0.92" width="0.1524" layer="21"/>
<wire x1="2.082" y1="-0.92" x2="2.082" y2="0.92" width="0.1524" layer="21"/>
<wire x1="-3.81" y1="0" x2="-2.494" y2="0" width="0.85" layer="51"/>
<wire x1="3.81" y1="0" x2="2.519" y2="0" width="0.85" layer="51"/>
<wire x1="0.635" y1="0" x2="0" y2="0" width="0.1524" layer="21"/>
<wire x1="-1.016" y1="-0.635" x2="-1.016" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-1.016" y1="0.635" x2="0" y2="0" width="0.1524" layer="21"/>
<wire x1="0" y1="0" x2="-1.524" y2="0" width="0.1524" layer="21"/>
<wire x1="0" y1="0" x2="-1.016" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="0" y1="-0.635" x2="0" y2="0" width="0.1524" layer="21"/>
<wire x1="0" y1="0" x2="0" y2="0.635" width="0.1524" layer="21"/>
<pad name="C" x="3.81" y="0" drill="1.1" diameter="1.7" rot="R180"/>
<pad name="A" x="-3.81" y="0" drill="1.1" diameter="1.7" rot="R180"/>
<text x="-2.032" y="1.651" size="1.27" layer="25" ratio="10">&gt;NAME</text>
<text x="-2.032" y="-2.921" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
<rectangle x1="1.143" y1="-0.92" x2="1.651" y2="0.95" layer="21" rot="R180"/>
<rectangle x1="-2.717" y1="-0.425" x2="-2.082" y2="0.425" layer="21" rot="R180"/>
<rectangle x1="2.082" y1="-0.425" x2="2.717" y2="0.425" layer="21" rot="R180"/>
</package>
<package name="GDG_MOUNTING_HOLE_4MM_PKG">
<text x="-1.27" y="-2.54" size="1.27" layer="25">hole</text>
<text x="1.27" y="-2.54" size="1.27" layer="26" rot="MR0">hole</text>
<circle x="0" y="0" radius="2.032" width="0.127" layer="21"/>
<circle x="0" y="0" radius="2.032" width="0.127" layer="20"/>
<circle x="0" y="0" radius="1.27" width="0.127" layer="45"/>
<hole x="0" y="0" drill="4.064"/>
</package>
</packages>
</library>
<library name="RL_library">
<packages>
<package name="ARDUCAM_MINI">
<description>ARDUCAM MINI</description>
<wire x1="0" y1="0" x2="24.46" y2="0" width="0.127" layer="21"/>
<wire x1="24.46" y1="0" x2="24.46" y2="10" width="0.127" layer="21"/>
<wire x1="24.46" y1="10" x2="0" y2="10" width="0.127" layer="21"/>
<wire x1="0" y1="10" x2="0" y2="0" width="0.125" layer="21"/>
<text x="5.46" y="7.46" size="1.27" layer="21">ARDUCAM_MINI</text>
<wire x1="12.0904" y1="4.445" x2="12.7254" y2="5.08" width="0.1524" layer="21"/>
<wire x1="12.7254" y1="5.08" x2="13.9954" y2="5.08" width="0.1524" layer="21"/>
<wire x1="13.9954" y1="5.08" x2="14.6304" y2="4.445" width="0.1524" layer="21"/>
<wire x1="14.6304" y1="4.445" x2="14.6304" y2="3.175" width="0.1524" layer="21"/>
<wire x1="14.6304" y1="3.175" x2="13.9954" y2="2.54" width="0.1524" layer="21"/>
<wire x1="13.9954" y1="2.54" x2="12.7254" y2="2.54" width="0.1524" layer="21"/>
<wire x1="12.7254" y1="2.54" x2="12.0904" y2="3.175" width="0.1524" layer="21"/>
<wire x1="7.6454" y1="5.08" x2="8.9154" y2="5.08" width="0.1524" layer="21"/>
<wire x1="8.9154" y1="5.08" x2="9.5504" y2="4.445" width="0.1524" layer="21"/>
<wire x1="9.5504" y1="4.445" x2="9.5504" y2="3.175" width="0.1524" layer="21"/>
<wire x1="9.5504" y1="3.175" x2="8.9154" y2="2.54" width="0.1524" layer="21"/>
<wire x1="9.5504" y1="4.445" x2="10.1854" y2="5.08" width="0.1524" layer="21"/>
<wire x1="10.1854" y1="5.08" x2="11.4554" y2="5.08" width="0.1524" layer="21"/>
<wire x1="11.4554" y1="5.08" x2="12.0904" y2="4.445" width="0.1524" layer="21"/>
<wire x1="12.0904" y1="4.445" x2="12.0904" y2="3.175" width="0.1524" layer="21"/>
<wire x1="12.0904" y1="3.175" x2="11.4554" y2="2.54" width="0.1524" layer="21"/>
<wire x1="11.4554" y1="2.54" x2="10.1854" y2="2.54" width="0.1524" layer="21"/>
<wire x1="10.1854" y1="2.54" x2="9.5504" y2="3.175" width="0.1524" layer="21"/>
<wire x1="4.4704" y1="4.445" x2="5.1054" y2="5.08" width="0.1524" layer="21"/>
<wire x1="5.1054" y1="5.08" x2="6.3754" y2="5.08" width="0.1524" layer="21"/>
<wire x1="6.3754" y1="5.08" x2="7.0104" y2="4.445" width="0.1524" layer="21"/>
<wire x1="7.0104" y1="4.445" x2="7.0104" y2="3.175" width="0.1524" layer="21"/>
<wire x1="7.0104" y1="3.175" x2="6.3754" y2="2.54" width="0.1524" layer="21"/>
<wire x1="6.3754" y1="2.54" x2="5.1054" y2="2.54" width="0.1524" layer="21"/>
<wire x1="5.1054" y1="2.54" x2="4.4704" y2="3.175" width="0.1524" layer="21"/>
<wire x1="7.6454" y1="5.08" x2="7.0104" y2="4.445" width="0.1524" layer="21"/>
<wire x1="7.0104" y1="3.175" x2="7.6454" y2="2.54" width="0.1524" layer="21"/>
<wire x1="8.9154" y1="2.54" x2="7.6454" y2="2.54" width="0.1524" layer="21"/>
<wire x1="1.9304" y1="4.445" x2="1.9304" y2="3.175" width="0.1524" layer="21"/>
<wire x1="1.9304" y1="4.445" x2="2.5654" y2="5.08" width="0.1524" layer="21"/>
<wire x1="2.5654" y1="5.08" x2="3.8354" y2="5.08" width="0.1524" layer="21"/>
<wire x1="3.8354" y1="5.08" x2="4.4704" y2="4.445" width="0.1524" layer="21"/>
<wire x1="4.4704" y1="4.445" x2="4.4704" y2="3.175" width="0.1524" layer="21"/>
<wire x1="4.4704" y1="3.175" x2="3.8354" y2="2.54" width="0.1524" layer="21"/>
<wire x1="3.8354" y1="2.54" x2="2.5654" y2="2.54" width="0.1524" layer="21"/>
<wire x1="2.5654" y1="2.54" x2="1.9304" y2="3.175" width="0.1524" layer="21"/>
<wire x1="15.2654" y1="5.08" x2="16.5354" y2="5.08" width="0.1524" layer="21"/>
<wire x1="16.5354" y1="5.08" x2="17.1704" y2="4.445" width="0.1524" layer="21"/>
<wire x1="17.1704" y1="4.445" x2="17.1704" y2="3.175" width="0.1524" layer="21"/>
<wire x1="17.1704" y1="3.175" x2="16.5354" y2="2.54" width="0.1524" layer="21"/>
<wire x1="15.2654" y1="5.08" x2="14.6304" y2="4.445" width="0.1524" layer="21"/>
<wire x1="14.6304" y1="3.175" x2="15.2654" y2="2.54" width="0.1524" layer="21"/>
<wire x1="16.5354" y1="2.54" x2="15.2654" y2="2.54" width="0.1524" layer="21"/>
<pad name="CS" x="3.2004" y="3.81" drill="1.016" shape="long" rot="R90"/>
<pad name="MOSI" x="5.7404" y="3.81" drill="1.016" shape="long" rot="R90"/>
<pad name="MISO" x="8.2804" y="3.81" drill="1.016" shape="long" rot="R90"/>
<pad name="SCK" x="10.8204" y="3.81" drill="1.016" shape="long" rot="R90"/>
<pad name="GND" x="13.3604" y="3.81" drill="1.016" shape="long" rot="R90"/>
<pad name="VCC" x="15.9004" y="3.81" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="13.1064" y1="3.556" x2="13.6144" y2="4.064" layer="51"/>
<rectangle x1="10.5664" y1="3.556" x2="11.0744" y2="4.064" layer="51"/>
<rectangle x1="8.0264" y1="3.556" x2="8.5344" y2="4.064" layer="51"/>
<rectangle x1="5.4864" y1="3.556" x2="5.9944" y2="4.064" layer="51"/>
<rectangle x1="2.9464" y1="3.556" x2="3.4544" y2="4.064" layer="51"/>
<rectangle x1="15.6464" y1="3.556" x2="16.1544" y2="4.064" layer="51"/>
<wire x1="17.8054" y1="5.08" x2="19.0754" y2="5.08" width="0.1524" layer="21"/>
<wire x1="19.0754" y1="5.08" x2="19.7104" y2="4.445" width="0.1524" layer="21"/>
<wire x1="19.7104" y1="4.445" x2="19.7104" y2="3.175" width="0.1524" layer="21"/>
<wire x1="19.7104" y1="3.175" x2="19.0754" y2="2.54" width="0.1524" layer="21"/>
<wire x1="17.8054" y1="5.08" x2="17.1704" y2="4.445" width="0.1524" layer="21"/>
<wire x1="17.1704" y1="3.175" x2="17.8054" y2="2.54" width="0.1524" layer="21"/>
<wire x1="19.0754" y1="2.54" x2="17.8054" y2="2.54" width="0.1524" layer="21"/>
<pad name="SDA" x="18.4404" y="3.81" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="18.1864" y1="3.556" x2="18.6944" y2="4.064" layer="51"/>
<dimension x1="0" y1="0" x2="24.4094" y2="0" x3="12.2047" y3="-2.1336" textsize="1.27" layer="21"/>
<wire x1="20.447" y1="5.1054" x2="21.717" y2="5.1054" width="0.1524" layer="21"/>
<wire x1="21.717" y1="5.1054" x2="22.352" y2="4.4704" width="0.1524" layer="21"/>
<wire x1="22.352" y1="4.4704" x2="22.352" y2="3.2004" width="0.1524" layer="21"/>
<wire x1="22.352" y1="3.2004" x2="21.717" y2="2.5654" width="0.1524" layer="21"/>
<wire x1="20.447" y1="5.1054" x2="19.812" y2="4.4704" width="0.1524" layer="21"/>
<wire x1="19.812" y1="3.2004" x2="20.447" y2="2.5654" width="0.1524" layer="21"/>
<wire x1="21.717" y1="2.5654" x2="20.447" y2="2.5654" width="0.1524" layer="21"/>
<pad name="SCL" x="21.082" y="3.8354" drill="1.016" shape="long" rot="R90"/>
<rectangle x1="20.828" y1="3.5814" x2="21.336" y2="4.0894" layer="51"/>
<text x="2.54" y="1.27" size="0.635" layer="51">CS</text>
<text x="4.5466" y="1.3208" size="0.635" layer="51">MOSI</text>
<text x="7.1374" y="1.3208" size="0.635" layer="51">MISO</text>
<text x="9.8552" y="1.3208" size="0.635" layer="51">SCK</text>
<text x="12.3444" y="1.3462" size="0.635" layer="51">GND</text>
<text x="14.986" y="1.3716" size="0.635" layer="51">VCC</text>
<text x="17.653" y="1.3716" size="0.635" layer="51">SDA</text>
<text x="20.4216" y="1.4732" size="0.635" layer="51">SCL</text>
</package>
</packages>
</library>
<library name="HC-SR04">
<packages>
<package name="XCVR_HC-SR04">
<wire x1="-21.5" y1="-19.27" x2="-5.5" y2="-19.27" width="0.127" layer="21"/>
<wire x1="5.5" y1="-19.27" x2="21.5" y2="-19.27" width="0.127" layer="21"/>
<wire x1="22.5" y1="-5.47" x2="21.5" y2="-5.47" width="0.127" layer="21"/>
<wire x1="21.5" y1="-5.47" x2="5.5" y2="-5.47" width="0.127" layer="21"/>
<wire x1="5.5" y1="-5.47" x2="-5.5" y2="-5.47" width="0.127" layer="21"/>
<wire x1="-5.5" y1="-5.47" x2="-21.5" y2="-5.47" width="0.127" layer="21"/>
<wire x1="-21.5" y1="-5.47" x2="-22.5" y2="-5.47" width="0.127" layer="21"/>
<wire x1="-22.5" y1="-5.47" x2="-22.5" y2="-4.27" width="0.127" layer="21"/>
<wire x1="-22.5" y1="-4.27" x2="22.5" y2="-4.27" width="0.127" layer="21"/>
<wire x1="22.5" y1="-4.27" x2="22.5" y2="-5.47" width="0.127" layer="21"/>
<wire x1="-21.5" y1="-5.47" x2="-21.5" y2="-19.27" width="0.127" layer="21"/>
<wire x1="21.5" y1="-5.47" x2="21.5" y2="-19.27" width="0.127" layer="21"/>
<wire x1="-5.5" y1="-5.47" x2="-5.5" y2="-19.27" width="0.127" layer="21"/>
<wire x1="5.5" y1="-5.47" x2="5.5" y2="-19.27" width="0.127" layer="21"/>
<wire x1="-22.75" y1="-4" x2="-22.75" y2="-19.5" width="0.05" layer="39"/>
<wire x1="-22.75" y1="-19.5" x2="22.75" y2="-19.5" width="0.05" layer="39"/>
<wire x1="22.75" y1="-19.5" x2="22.75" y2="-4" width="0.05" layer="39"/>
<wire x1="22.75" y1="-4" x2="5" y2="-4" width="0.05" layer="39"/>
<wire x1="5" y1="-4" x2="5" y2="1.25" width="0.05" layer="39"/>
<wire x1="5" y1="1.25" x2="-5" y2="1.25" width="0.05" layer="39"/>
<wire x1="-5" y1="1.25" x2="-5" y2="-4" width="0.05" layer="39"/>
<wire x1="-5" y1="-4" x2="-22.75" y2="-4" width="0.05" layer="39"/>
<text x="-22.6617" y="-3.952040625" size="1.270659375" layer="25">&gt;NAME</text>
<text x="16.1773" y="-4.00676875" size="1.27215" layer="27">&gt;VALUE</text>
<pad name="2" x="-1.27" y="0" drill="1.02"/>
<pad name="3" x="1.27" y="0" drill="1.02"/>
<pad name="4" x="3.81" y="0" drill="1.02"/>
<pad name="1" x="-3.81" y="0" drill="1.02"/>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
<class number="1" name="power" width="0.3048" drill="0">
</class>
</classes>
<designrules name="default">
<description language="de">&lt;b&gt;EAGLE Design Rules&lt;/b&gt;
&lt;p&gt;
Die Standard-Design-Rules sind so gewählt, dass sie für
die meisten Anwendungen passen. Sollte ihre Platine
besondere Anforderungen haben, treffen Sie die erforderlichen
Einstellungen hier und speichern die Design Rules unter
einem neuen Namen ab.</description>
<description language="en">&lt;b&gt;EAGLE Design Rules&lt;/b&gt;
&lt;p&gt;
The default Design Rules have been set to cover
a wide range of applications. Your particular design
may have different requirements, so please make the
necessary adjustments and save your customized
design rules under a new name.</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="6mil"/>
<param name="mdWirePad" value="6mil"/>
<param name="mdWireVia" value="6mil"/>
<param name="mdPadPad" value="6mil"/>
<param name="mdPadVia" value="6mil"/>
<param name="mdViaVia" value="6mil"/>
<param name="mdSmdPad" value="6mil"/>
<param name="mdSmdVia" value="6mil"/>
<param name="mdSmdSmd" value="6mil"/>
<param name="mdViaViaSameLayer" value="6mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="40mil"/>
<param name="mdDrill" value="6mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="6mil"/>
<param name="msDrill" value="0.35mm"/>
<param name="msMicroVia" value="9.99mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.25"/>
<param name="rvPadInner" value="0.25"/>
<param name="rvPadBottom" value="0.25"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="8mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="-1"/>
<param name="psBottom" value="-1"/>
<param name="psFirst" value="-1"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="4mil"/>
<param name="mlMaxStopFrame" value="4mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="0mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="checkStop" value="0"/>
<param name="checkValues" value="0"/>
<param name="checkNames" value="1"/>
<param name="checkWireStubs" value="1"/>
<param name="checkPolygonWidth" value="0"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="AutoGrid" value="1"/>
<param name="Efforts" value="1"/>
<param name="TopRouterVariant" value="1"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="a"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="a"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
<element name="U$1" library="GDG_library" package="GDG_ARDUINO_MEGA2560_PKG" value="GDG_ARDUINO_MEGA2560_DEV" x="153.67" y="81.28" smashed="yes" rot="R180"/>
<element name="U$2" library="GDG_library" package="GDG_BME680_PKG" value="GDG_BME680_DEV" x="24.13" y="12.7" smashed="yes"/>
<element name="U$3" library="GDG_library" package="GDG_ULTIMATE_GPS_PKG" value="GDG_ULTIMATE_GPS_DEV" x="76.2" y="-1.27" smashed="yes" rot="R90"/>
<element name="U$4" library="GDG_library" package="GDG_DS3231_PKG" value="GDG_DS3231_DEV" x="27.94" y="81.28" smashed="yes"/>
<element name="U$5" library="GDG_library" package="GDG_MICROSD_PKG" value="GDG_MICROSD_DEV" x="124.46" y="21.59" smashed="yes" rot="R270"/>
<element name="U$6" library="GDG_library" package="GDG_5XAA_BATTERY_PKG" value="GDG_5XAA_BATTERY_DEV" x="81.28" y="93.98" smashed="yes" rot="MR180"/>
<element name="U$7" library="RL_library" package="ARDUCAM_MINI" value="" x="12.7" y="12.7" smashed="yes" rot="R90"/>
<element name="U$8" library="GDG_library" package="GDG_RESISTOR_PKG" value="1k" x="38.1" y="50.8" smashed="yes" rot="R90"/>
<element name="U$9" library="GDG_library" package="GDG_1N5817_PKG" value="GDG_1N5817_DEV" x="71.12" y="88.9" smashed="yes" rot="MR0">
<attribute name="NAME" x="73.152" y="90.551" size="1.27" layer="26" ratio="10" rot="MR0"/>
<attribute name="VALUE" x="73.152" y="85.979" size="1.27" layer="28" ratio="10" rot="MR0"/>
</element>
<element name="U1" library="HC-SR04" package="XCVR_HC-SR04" value="HC-SR04" x="21.59" y="67.31" smashed="yes" rot="R270">
<attribute name="AVAILABILITY" value="In Stock" x="21.59" y="67.31" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="DESCRIPTION" value=" HC-SR04 Ultrasonic Sensor Qwiic Platform Evaluation Expansion Board " x="21.59" y="67.31" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="MF" value="SparkFun Electronics" x="21.59" y="67.31" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="MP" value="HC-SR04" x="21.59" y="67.31" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="NAME" x="17.637959375" y="89.9717" size="1.270659375" layer="25" rot="R270"/>
<attribute name="PACKAGE" value="None" x="21.59" y="67.31" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="PRICE" value="None" x="21.59" y="67.31" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="PURCHASE-URL" value="https://pricing.snapeda.com/search/part/HC-SR04/?ref=eda" x="21.59" y="67.31" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="VALUE" x="17.58323125" y="51.1327" size="1.27215" layer="27" rot="R270"/>
</element>
<element name="U$10" library="GDG_library" package="GDG_MOUNTING_HOLE_4MM_PKG" value="" x="3.81" y="-3.81" smashed="yes"/>
<element name="U$11" library="GDG_library" package="GDG_MOUNTING_HOLE_4MM_PKG" value="" x="3.81" y="96.52" smashed="yes"/>
<element name="U$12" library="GDG_library" package="GDG_MOUNTING_HOLE_4MM_PKG" value="" x="156.21" y="96.52" smashed="yes"/>
<element name="U$13" library="GDG_library" package="GDG_MOUNTING_HOLE_4MM_PKG" value="" x="156.21" y="-3.81" smashed="yes"/>
</elements>
<signals>
<signal name="3V" class="1">
<contactref element="U$1" pad="3.3V"/>
<contactref element="U$7" pad="VCC"/>
<wire x1="25.527" y1="28.6512" x2="8.9154" y2="28.6512" width="0.3048" layer="1"/>
<wire x1="39.243" y1="42.3672" x2="25.527" y2="28.6512" width="0.3048" layer="1"/>
<wire x1="56.388" y1="42.3672" x2="39.243" y2="42.3672" width="0.3048" layer="16"/>
<wire x1="56.6928" y1="42.0624" x2="56.388" y2="42.3672" width="0.3048" layer="16"/>
<wire x1="94.0308" y1="42.0624" x2="56.6928" y2="42.0624" width="0.3048" layer="16"/>
<wire x1="107.442" y1="28.6512" x2="94.0308" y2="42.0624" width="0.3048" layer="16"/>
<wire x1="110.9472" y1="28.6512" x2="107.442" y2="28.6512" width="0.3048" layer="16"/>
<wire x1="111.9378" y1="29.6418" x2="110.9472" y2="28.6512" width="0.3048" layer="16"/>
<wire x1="111.9378" y1="31.6992" x2="111.9378" y2="29.6418" width="0.3048" layer="16"/>
<wire x1="112.5474" y1="32.3088" x2="111.9378" y2="31.6992" width="0.3048" layer="16"/>
<wire x1="116.2812" y1="32.3088" x2="112.5474" y2="32.3088" width="0.3048" layer="16"/>
<wire x1="118.11" y1="30.48" x2="116.2812" y2="32.3088" width="0.3048" layer="16"/>
<wire x1="8.9154" y1="28.6512" x2="8.89" y2="28.6004" width="0.3048" layer="1"/>
<via x="39.243" y="42.3672" extent="1-16" drill="0.35"/>
</signal>
<signal name="5V" class="1">
<contactref element="U$1" pad="5V1"/>
<contactref element="U$5" pad="1"/>
<contactref element="U$4" pad="1"/>
<contactref element="U$8" pad="1"/>
<contactref element="U$2" pad="1"/>
<contactref element="U$3" pad="VIN"/>
<contactref element="U1" pad="1"/>
<wire x1="32.6898" y1="50.8254" x2="38.1" y2="50.8254" width="0.3048" layer="1"/>
<wire x1="20.4978" y1="63.0174" x2="32.6898" y2="50.8254" width="0.3048" layer="1"/>
<wire x1="20.4978" y1="70.0278" x2="20.4978" y2="63.0174" width="0.3048" layer="1"/>
<wire x1="21.59" y1="71.12" x2="20.4978" y2="70.0278" width="0.3048" layer="1"/>
<wire x1="38.1" y1="50.8254" x2="38.1" y2="50.8" width="0.3048" layer="1"/>
<wire x1="27.8892" y1="77.4954" x2="27.8892" y2="81.2292" width="0.3048" layer="1"/>
<wire x1="21.6408" y1="71.247" x2="27.8892" y2="77.4954" width="0.3048" layer="1"/>
<wire x1="27.8892" y1="81.2292" x2="27.94" y2="81.28" width="0.3048" layer="1"/>
<wire x1="21.6408" y1="71.247" x2="21.59" y2="71.12" width="0.3048" layer="1"/>
<wire x1="124.4346" y1="21.6408" x2="115.5954" y2="30.48" width="0.3048" layer="1"/>
<wire x1="115.5954" y1="30.48" x2="115.57" y2="30.48" width="0.3048" layer="1"/>
<wire x1="124.4346" y1="21.6408" x2="124.46" y2="21.59" width="0.3048" layer="1"/>
<wire x1="24.384" y1="12.6492" x2="24.1554" y2="12.6492" width="0.3048" layer="16"/>
<wire x1="28.1686" y1="8.8646" x2="24.384" y2="12.6492" width="0.3048" layer="16"/>
<wire x1="70.2564" y1="10.5156" x2="41.7576" y2="10.5156" width="0.3048" layer="16"/>
<wire x1="41.7576" y1="10.5156" x2="40.6146" y2="10.5156" width="0.3048" layer="16"/>
<wire x1="40.6146" y1="8.8646" x2="28.1686" y2="8.8646" width="0.3048" layer="16"/>
<wire x1="76.2" y1="16.4592" x2="70.2564" y2="10.5156" width="0.3048" layer="16"/>
<wire x1="24.1554" y1="12.6492" x2="24.13" y2="12.7" width="0.3048" layer="16"/>
<wire x1="76.2" y1="16.4592" x2="76.2" y2="16.51" width="0.3048" layer="16"/>
<wire x1="115.2906" y1="30.4038" x2="115.443" y2="30.4038" width="0.3048" layer="1"/>
<wire x1="112.014" y1="27.1272" x2="115.2906" y2="30.4038" width="0.3048" layer="1"/>
<wire x1="106.5276" y1="27.1272" x2="112.014" y2="27.1272" width="0.3048" layer="1"/>
<wire x1="89.7636" y1="10.3632" x2="106.5276" y2="27.1272" width="0.3048" layer="1"/>
<wire x1="74.9808" y1="10.3632" x2="89.7636" y2="10.3632" width="0.3048" layer="1"/>
<wire x1="74.3712" y1="10.9728" x2="74.9808" y2="10.3632" width="0.3048" layer="1"/>
<wire x1="74.3712" y1="14.6304" x2="74.3712" y2="10.9728" width="0.3048" layer="1"/>
<wire x1="76.2" y1="16.4592" x2="74.3712" y2="14.6304" width="0.3048" layer="1"/>
<wire x1="115.443" y1="30.4038" x2="115.57" y2="30.48" width="0.3048" layer="1"/>
<wire x1="76.2" y1="16.4592" x2="76.2" y2="16.51" width="0.3048" layer="1"/>
<wire x1="38.1" y1="27.7368" x2="38.1" y2="50.8" width="0.3048" layer="16"/>
<wire x1="41.7576" y1="24.0792" x2="38.1" y2="27.7368" width="0.3048" layer="16"/>
<wire x1="40.6146" y1="8.8646" x2="40.6146" y2="10.5156" width="0.3048" layer="16"/>
<wire x1="41.7576" y1="10.5156" x2="41.7576" y2="24.0792" width="0.3048" layer="16"/>
</signal>
<signal name="GND" class="1">
<contactref element="U$1" pad="GND1"/>
<contactref element="U$7" pad="GND"/>
<contactref element="U$5" pad="3"/>
<contactref element="U$4" pad="2"/>
<contactref element="U$8" pad="2"/>
<contactref element="U$2" pad="3"/>
<contactref element="U$3" pad="GND"/>
<contactref element="U$6" pad="BATTERY_GND"/>
<contactref element="U1" pad="4"/>
<wire x1="83.2104" y1="14.0208" x2="76.2" y2="14.0208" width="0.3048" layer="16"/>
<wire x1="88.9254" y1="14.0208" x2="83.2104" y2="14.0208" width="0.3048" layer="1"/>
<wire x1="103.5558" y1="28.6512" x2="88.9254" y2="14.0208" width="0.3048" layer="1"/>
<wire x1="111.1758" y1="28.6512" x2="103.5558" y2="28.6512" width="0.3048" layer="1"/>
<wire x1="113.0046" y1="30.48" x2="111.1758" y2="28.6512" width="0.3048" layer="1"/>
<wire x1="76.2" y1="14.0208" x2="76.2" y2="13.97" width="0.3048" layer="16"/>
<wire x1="113.0046" y1="30.48" x2="113.03" y2="30.48" width="0.3048" layer="1"/>
<wire x1="124.4346" y1="16.764" x2="124.4346" y2="16.5354" width="0.3048" layer="16"/>
<wire x1="113.0808" y1="28.1178" x2="124.4346" y2="16.764" width="0.3048" layer="16"/>
<wire x1="113.0808" y1="30.48" x2="113.0808" y2="28.1178" width="0.3048" layer="16"/>
<wire x1="124.4346" y1="16.5354" x2="124.46" y2="16.51" width="0.3048" layer="16"/>
<wire x1="113.0808" y1="30.48" x2="113.03" y2="30.48" width="0.3048" layer="16"/>
<wire x1="28.956" y1="12.7254" x2="29.1846" y2="12.7254" width="0.3048" layer="1"/>
<wire x1="26.8986" y1="14.7828" x2="28.956" y2="12.7254" width="0.3048" layer="1"/>
<wire x1="7.6962" y1="14.7828" x2="26.8986" y2="14.7828" width="0.3048" layer="1"/>
<wire x1="7.0104" y1="15.4686" x2="7.6962" y2="14.7828" width="0.3048" layer="1"/>
<wire x1="7.0104" y1="24.2316" x2="7.0104" y2="15.4686" width="0.3048" layer="1"/>
<wire x1="8.8392" y1="26.0604" x2="7.0104" y2="24.2316" width="0.3048" layer="1"/>
<wire x1="29.1846" y1="12.7254" x2="29.21" y2="12.7" width="0.3048" layer="1"/>
<wire x1="8.8392" y1="26.0604" x2="8.89" y2="26.0604" width="0.3048" layer="1"/>
<wire x1="24.1554" y1="60.96" x2="38.1" y2="60.96" width="0.3048" layer="1"/>
<wire x1="21.6408" y1="63.4746" x2="24.1554" y2="60.96" width="0.3048" layer="1"/>
<wire x1="21.6408" y1="63.4746" x2="21.59" y2="63.5" width="0.3048" layer="1"/>
<wire x1="30.48" y1="72.39" x2="30.48" y2="81.28" width="0.3048" layer="16"/>
<wire x1="21.59" y1="63.5" x2="30.48" y2="72.39" width="0.3048" layer="16"/>
<wire x1="83.5152" y1="96.4692" x2="83.82" y2="96.4692" width="0.3048" layer="16"/>
<wire x1="77.1144" y1="90.0684" x2="83.5152" y2="96.4692" width="0.3048" layer="16"/>
<wire x1="39.243" y1="90.0684" x2="77.1144" y2="90.0684" width="0.3048" layer="16"/>
<wire x1="30.5562" y1="81.3816" x2="39.243" y2="90.0684" width="0.3048" layer="16"/>
<wire x1="83.82" y1="96.4692" x2="83.82" y2="96.52" width="0.3048" layer="16"/>
<wire x1="30.5562" y1="81.3816" x2="30.48" y2="81.28" width="0.3048" layer="16"/>
<wire x1="8.8392" y1="26.3652" x2="8.8392" y2="26.0604" width="0.3048" layer="16"/>
<wire x1="7.0104" y1="28.194" x2="8.8392" y2="26.3652" width="0.3048" layer="16"/>
<wire x1="7.0104" y1="48.9204" x2="7.0104" y2="28.194" width="0.3048" layer="16"/>
<wire x1="21.59" y1="63.5" x2="7.0104" y2="48.9204" width="0.3048" layer="16"/>
<wire x1="8.8392" y1="26.0604" x2="8.89" y2="26.0604" width="0.3048" layer="16"/>
<wire x1="73.0758" y1="10.8204" x2="76.1238" y2="13.8684" width="0.3048" layer="16"/>
<wire x1="31.1658" y1="10.8204" x2="73.0758" y2="10.8204" width="0.3048" layer="1"/>
<wire x1="29.337" y1="12.6492" x2="31.1658" y2="10.8204" width="0.3048" layer="1"/>
<wire x1="76.1238" y1="13.8684" x2="76.2" y2="13.97" width="0.3048" layer="16"/>
<wire x1="29.337" y1="12.6492" x2="29.21" y2="12.7" width="0.3048" layer="1"/>
<via x="83.2104" y="14.0208" extent="1-16" drill="0.35"/>
<via x="73.0758" y="10.8204" extent="1-16" drill="0.35"/>
</signal>
<signal name="GPSTX">
<contactref element="U$3" pad="TX"/>
<contactref element="U$1" pad="D17RX2"/>
<wire x1="75.819" y1="8.9154" x2="76.2" y2="8.9154" width="0.1524" layer="1"/>
<wire x1="73.914" y1="10.8204" x2="75.819" y2="8.9154" width="0.1524" layer="1"/>
<wire x1="73.914" y1="75.2094" x2="73.914" y2="10.8204" width="0.1524" layer="1"/>
<wire x1="77.4192" y1="78.7146" x2="73.914" y2="75.2094" width="0.1524" layer="1"/>
<wire x1="76.2" y1="8.9154" x2="76.2" y2="8.89" width="0.1524" layer="1"/>
<wire x1="77.4192" y1="78.7146" x2="77.47" y2="78.74" width="0.1524" layer="1"/>
</signal>
<signal name="GPSRX">
<contactref element="U$3" pad="RX"/>
<contactref element="U$1" pad="D16TX2"/>
<wire x1="76.2" y1="11.7348" x2="76.2" y2="11.43" width="0.1524" layer="1"/>
<wire x1="79.0194" y1="14.5542" x2="76.2" y2="11.7348" width="0.1524" layer="1"/>
<wire x1="79.0194" y1="77.724" x2="79.0194" y2="14.5542" width="0.1524" layer="1"/>
<wire x1="80.01" y1="78.7146" x2="79.0194" y2="77.724" width="0.1524" layer="1"/>
<wire x1="80.01" y1="78.7146" x2="80.01" y2="78.74" width="0.1524" layer="1"/>
</signal>
<signal name="SCK">
<contactref element="U$2" pad="4"/>
<contactref element="U$1" pad="D21SCL"/>
<contactref element="U$4" pad="3"/>
<contactref element="U$7" pad="SCL"/>
<wire x1="61.1124" y1="78.7908" x2="67.2846" y2="78.7908" width="0.1524" layer="16"/>
<wire x1="60.1218" y1="79.7814" x2="61.1124" y2="78.7908" width="0.1524" layer="16"/>
<wire x1="46.4058" y1="79.7814" x2="60.1218" y2="79.7814" width="0.1524" layer="16"/>
<wire x1="46.101" y1="79.4766" x2="46.4058" y2="79.7814" width="0.1524" layer="16"/>
<wire x1="34.8234" y1="79.4766" x2="46.101" y2="79.4766" width="0.1524" layer="16"/>
<wire x1="33.02" y1="81.28" x2="34.7853" y2="79.5147" width="0.1524" layer="16"/>
<wire x1="34.7853" y1="79.5147" x2="34.8234" y2="79.4766" width="0.1524" layer="16"/>
<wire x1="67.2846" y1="78.7908" x2="67.31" y2="78.74" width="0.1524" layer="16"/>
<wire x1="31.3944" y1="12.7254" x2="31.6992" y2="12.7254" width="0.1524" layer="16"/>
<wire x1="10.3632" y1="33.7566" x2="10.4013" y2="33.7185" width="0.1524" layer="16"/>
<wire x1="10.4013" y1="33.7185" x2="31.3944" y2="12.7254" width="0.1524" layer="16"/>
<wire x1="8.9154" y1="33.7566" x2="10.3632" y2="33.7566" width="0.1524" layer="16"/>
<wire x1="31.6992" y1="12.7254" x2="31.75" y2="12.7" width="0.1524" layer="16"/>
<wire x1="8.9154" y1="33.7566" x2="8.8646" y2="33.782" width="0.1524" layer="16"/>
<wire x1="34.7472" y1="58.0644" x2="34.7472" y2="79.4766" width="0.1524" layer="16"/>
<wire x1="10.4013" y1="33.7185" x2="34.7472" y2="58.0644" width="0.1524" layer="16"/>
<wire x1="34.7472" y1="79.4766" x2="34.7853" y2="79.5147" width="0.1524" layer="16"/>
</signal>
<signal name="SDI">
<contactref element="U$2" pad="6"/>
<contactref element="U$1" pad="D20SDA"/>
<contactref element="U$4" pad="4"/>
<contactref element="U$7" pad="SDA"/>
<wire x1="69.4944" y1="78.7908" x2="69.7992" y2="78.7908" width="0.1524" layer="1"/>
<wire x1="67.7418" y1="80.5434" x2="69.4944" y2="78.7908" width="0.1524" layer="1"/>
<wire x1="47.1678" y1="80.5434" x2="67.7418" y2="80.5434" width="0.1524" layer="1"/>
<wire x1="46.101" y1="79.4766" x2="47.1678" y2="80.5434" width="0.1524" layer="1"/>
<wire x1="37.338" y1="79.4766" x2="46.101" y2="79.4766" width="0.1524" layer="1"/>
<wire x1="35.5854" y1="81.2292" x2="37.338" y2="79.4766" width="0.1524" layer="1"/>
<wire x1="69.7992" y1="78.7908" x2="69.85" y2="78.74" width="0.1524" layer="1"/>
<wire x1="35.5854" y1="81.2292" x2="35.56" y2="81.28" width="0.1524" layer="1"/>
<wire x1="36.4236" y1="12.6492" x2="36.8046" y2="12.6492" width="0.1524" layer="16"/>
<wire x1="34.671" y1="10.8966" x2="36.4236" y2="12.6492" width="0.1524" layer="16"/>
<wire x1="28.8036" y1="10.8966" x2="34.671" y2="10.8966" width="0.1524" layer="16"/>
<wire x1="27.6606" y1="12.0396" x2="28.8036" y2="10.8966" width="0.1524" layer="16"/>
<wire x1="27.6606" y1="13.9446" x2="27.6606" y2="12.0396" width="0.1524" layer="16"/>
<wire x1="10.5156" y1="31.0896" x2="27.6606" y2="13.9446" width="0.1524" layer="16"/>
<wire x1="8.9154" y1="31.0896" x2="10.5156" y2="31.0896" width="0.1524" layer="16"/>
<wire x1="36.8046" y1="12.6492" x2="36.83" y2="12.7" width="0.1524" layer="16"/>
<wire x1="8.9154" y1="31.0896" x2="8.89" y2="31.1404" width="0.1524" layer="16"/>
<wire x1="35.2044" y1="81.3054" x2="35.5092" y2="81.3054" width="0.1524" layer="1"/>
<wire x1="33.4518" y1="83.058" x2="35.2044" y2="81.3054" width="0.1524" layer="1"/>
<wire x1="27.5082" y1="83.058" x2="33.4518" y2="83.058" width="0.1524" layer="1"/>
<wire x1="10.668" y1="66.2178" x2="27.5082" y2="83.058" width="0.1524" layer="1"/>
<wire x1="10.668" y1="32.9184" x2="10.668" y2="66.2178" width="0.1524" layer="1"/>
<wire x1="8.89" y1="31.1404" x2="10.668" y2="32.9184" width="0.1524" layer="1"/>
<wire x1="35.5092" y1="81.3054" x2="35.56" y2="81.28" width="0.1524" layer="1"/>
</signal>
<signal name="SDCS">
<contactref element="U$5" pad="7"/>
<contactref element="U$1" pad="D53"/>
<wire x1="91.7448" y1="6.4008" x2="124.4346" y2="6.4008" width="0.1524" layer="16"/>
<wire x1="68.3514" y1="29.7942" x2="91.7448" y2="6.4008" width="0.1524" layer="16"/>
<wire x1="68.3514" y1="31.623" x2="68.3514" y2="29.7942" width="0.1524" layer="16"/>
<wire x1="62.865" y1="37.1094" x2="68.3514" y2="31.623" width="0.1524" layer="16"/>
<wire x1="58.1406" y1="37.1094" x2="62.865" y2="37.1094" width="0.1524" layer="16"/>
<wire x1="57.15" y1="38.1" x2="58.1406" y2="37.1094" width="0.1524" layer="16"/>
<wire x1="124.4346" y1="6.4008" x2="124.46" y2="6.35" width="0.1524" layer="16"/>
</signal>
<signal name="DI">
<contactref element="U$5" pad="6"/>
<contactref element="U$1" pad="D51"/>
<contactref element="U$7" pad="MOSI"/>
<wire x1="27.6606" y1="18.4404" x2="8.89" y2="18.4404" width="0.1524" layer="1"/>
<wire x1="53.4162" y1="44.196" x2="53.4162" y2="43.2562" width="0.1524" layer="1"/>
<wire x1="53.4162" y1="43.2562" x2="49.911" y2="39.751" width="0.1524" layer="1"/>
<wire x1="49.911" y1="39.751" x2="49.022" y2="39.751" width="0.1524" layer="1"/>
<wire x1="49.022" y1="39.751" x2="27.6606" y2="18.4404" width="0.1524" layer="1"/>
<wire x1="57.6072" y1="44.196" x2="53.4162" y2="44.196" width="0.1524" layer="1"/>
<wire x1="58.1406" y1="43.6626" x2="57.6072" y2="44.196" width="0.1524" layer="1"/>
<wire x1="58.1406" y1="41.6814" x2="58.1406" y2="43.6626" width="0.1524" layer="1"/>
<wire x1="57.15" y1="40.6908" x2="58.1406" y2="41.6814" width="0.1524" layer="1"/>
<wire x1="57.15" y1="40.6908" x2="57.15" y2="40.64" width="0.1524" layer="1"/>
<wire x1="94.2594" y1="8.9154" x2="124.4346" y2="8.9154" width="0.1524" layer="16"/>
<wire x1="73.3806" y1="29.7942" x2="94.2594" y2="8.9154" width="0.1524" layer="16"/>
<wire x1="73.3806" y1="31.6992" x2="73.3806" y2="29.7942" width="0.1524" layer="16"/>
<wire x1="65.4558" y1="39.624" x2="73.3806" y2="31.6992" width="0.1524" layer="16"/>
<wire x1="58.1406" y1="39.624" x2="65.4558" y2="39.624" width="0.1524" layer="16"/>
<wire x1="57.15" y1="40.6146" x2="58.1406" y2="39.624" width="0.1524" layer="16"/>
<wire x1="124.4346" y1="8.9154" x2="124.46" y2="8.89" width="0.1524" layer="16"/>
<wire x1="57.15" y1="40.6146" x2="57.15" y2="40.64" width="0.1524" layer="16"/>
</signal>
<signal name="DO">
<contactref element="U$5" pad="5"/>
<contactref element="U$1" pad="D50"/>
<contactref element="U$7" pad="MISO"/>
<wire x1="28.575" y1="21.0312" x2="8.9154" y2="21.0312" width="0.1524" layer="1"/>
<wire x1="50.7492" y1="41.6814" x2="50.6222" y2="41.8084" width="0.1524" layer="1"/>
<wire x1="50.6222" y1="41.8084" x2="49.3522" y2="41.8084" width="0.1524" layer="1"/>
<wire x1="49.3522" y1="41.8084" x2="28.575" y2="21.0312" width="0.1524" layer="1"/>
<wire x1="58.674" y1="41.6814" x2="50.7492" y2="41.6814" width="0.1524" layer="16"/>
<wire x1="59.6646" y1="40.6908" x2="58.674" y2="41.6814" width="0.1524" layer="16"/>
<wire x1="8.9154" y1="21.0312" x2="8.89" y2="20.9804" width="0.1524" layer="1"/>
<wire x1="59.6646" y1="40.6908" x2="59.69" y2="40.64" width="0.1524" layer="16"/>
<wire x1="124.5108" y1="11.811" x2="124.5108" y2="11.43" width="0.1524" layer="16"/>
<wire x1="126.2634" y1="13.5636" x2="124.5108" y2="11.811" width="0.1524" layer="16"/>
<wire x1="126.2634" y1="14.5288" x2="126.2634" y2="13.5636" width="0.1524" layer="16"/>
<wire x1="125.5776" y1="15.2146" x2="126.2634" y2="14.5288" width="0.1524" layer="16"/>
<wire x1="97.4852" y1="15.2146" x2="125.5776" y2="15.2146" width="0.1524" layer="16"/>
<wire x1="72.0852" y1="40.6146" x2="97.4852" y2="15.2146" width="0.1524" layer="16"/>
<wire x1="59.7408" y1="40.6146" x2="72.0852" y2="40.6146" width="0.1524" layer="16"/>
<wire x1="124.5108" y1="11.43" x2="124.46" y2="11.43" width="0.1524" layer="16"/>
<wire x1="59.7408" y1="40.6146" x2="59.69" y2="40.64" width="0.1524" layer="16"/>
<via x="50.7492" y="41.6814" extent="1-16" drill="0.35"/>
</signal>
<signal name="CLK">
<contactref element="U$5" pad="4"/>
<contactref element="U$1" pad="D52"/>
<contactref element="U$7" pad="SCK"/>
<wire x1="21.336" y1="23.5458" x2="8.9154" y2="23.5458" width="0.1524" layer="1"/>
<wire x1="42.291" y1="44.5008" x2="21.336" y2="23.5458" width="0.1524" layer="1"/>
<wire x1="57.7596" y1="44.5008" x2="42.291" y2="44.5008" width="0.1524" layer="1"/>
<wire x1="58.674" y1="43.5864" x2="57.7596" y2="44.5008" width="0.1524" layer="1"/>
<wire x1="58.674" y1="39.0906" x2="58.674" y2="43.5864" width="0.1524" layer="1"/>
<wire x1="59.6646" y1="38.1" x2="58.674" y2="39.0906" width="0.1524" layer="1"/>
<wire x1="8.9154" y1="23.5458" x2="8.89" y2="23.5204" width="0.1524" layer="1"/>
<wire x1="59.6646" y1="38.1" x2="59.69" y2="38.1" width="0.1524" layer="1"/>
<wire x1="122.301" y1="11.811" x2="124.46" y2="13.97" width="0.1524" layer="16"/>
<wire x1="122.301" y1="11.0998" x2="122.301" y2="11.811" width="0.1524" layer="16"/>
<wire x1="123.2408" y1="10.16" x2="122.301" y2="11.0998" width="0.1524" layer="16"/>
<wire x1="125.3998" y1="10.16" x2="123.2408" y2="10.16" width="0.1524" layer="16"/>
<wire x1="126.2634" y1="9.2964" x2="125.3998" y2="10.16" width="0.1524" layer="16"/>
<wire x1="126.2634" y1="8.4582" x2="126.2634" y2="9.2964" width="0.1524" layer="16"/>
<wire x1="125.3998" y1="7.5946" x2="126.2634" y2="8.4582" width="0.1524" layer="16"/>
<wire x1="93.0656" y1="7.5946" x2="125.3998" y2="7.5946" width="0.1524" layer="16"/>
<wire x1="70.866" y1="29.7942" x2="93.0656" y2="7.5946" width="0.1524" layer="16"/>
<wire x1="70.866" y1="31.6992" x2="70.866" y2="29.7942" width="0.1524" layer="16"/>
<wire x1="64.4652" y1="38.1" x2="70.866" y2="31.6992" width="0.1524" layer="16"/>
<wire x1="59.69" y1="38.1" x2="64.4652" y2="38.1" width="0.1524" layer="16"/>
</signal>
<signal name="CAMCS">
<contactref element="U$7" pad="CS"/>
<contactref element="U$1" pad="D49"/>
<wire x1="29.5148" y1="15.9258" x2="8.9154" y2="15.9258" width="0.1524" layer="1"/>
<wire x1="54.7116" y1="43.1292" x2="54.7116" y2="43.1546" width="0.1524" layer="1"/>
<wire x1="54.7116" y1="43.1546" x2="48.387" y2="36.83" width="0.1524" layer="1"/>
<wire x1="48.387" y1="36.83" x2="47.371" y2="36.83" width="0.1524" layer="1"/>
<wire x1="47.371" y1="36.83" x2="29.083" y2="18.542" width="0.1524" layer="1"/>
<wire x1="29.083" y1="18.542" x2="29.591" y2="18.034" width="0.1524" layer="1"/>
<wire x1="29.591" y1="18.034" x2="29.591" y2="16.002" width="0.1524" layer="1"/>
<wire x1="29.591" y1="16.002" x2="29.5148" y2="15.9258" width="0.1524" layer="1"/>
<wire x1="57.15" y1="43.1292" x2="54.7116" y2="43.1292" width="0.1524" layer="1"/>
<wire x1="8.9154" y1="15.9258" x2="8.89" y2="15.9004" width="0.1524" layer="1"/>
<wire x1="57.15" y1="43.1292" x2="57.15" y2="43.18" width="0.1524" layer="1"/>
</signal>
<signal name="N$1">
<contactref element="U$6" pad="BATTERY_7.5V"/>
<contactref element="U$9" pad="A"/>
<wire x1="81.2292" y1="95.1738" x2="81.2292" y2="96.4692" width="0.1524" layer="1"/>
<wire x1="74.9808" y1="88.9254" x2="81.2292" y2="95.1738" width="0.1524" layer="1"/>
<wire x1="81.2292" y1="96.4692" x2="81.28" y2="96.52" width="0.1524" layer="1"/>
<wire x1="74.9808" y1="88.9254" x2="74.93" y2="88.9" width="0.1524" layer="1"/>
</signal>
<signal name="VIN">
<contactref element="U$1" pad="VIN"/>
<contactref element="U$9" pad="C"/>
<wire x1="107.8992" y1="38.481" x2="107.8992" y2="30.48" width="0.1524" layer="16"/>
<wire x1="68.3514" y1="78.0288" x2="107.8992" y2="38.481" width="0.1524" layer="16"/>
<wire x1="68.3514" y1="87.8586" x2="68.3514" y2="78.0288" width="0.1524" layer="16"/>
<wire x1="67.31" y1="88.9" x2="68.3514" y2="87.8586" width="0.1524" layer="16"/>
<wire x1="107.8992" y1="30.48" x2="107.95" y2="30.48" width="0.1524" layer="16"/>
</signal>
<signal name="TRIG">
<contactref element="U1" pad="2"/>
<contactref element="U$1" pad="D30"/>
<wire x1="58.5978" y1="66.0654" x2="59.6646" y2="66.0654" width="0.1524" layer="1"/>
<wire x1="57.0738" y1="67.5894" x2="58.5978" y2="66.0654" width="0.1524" layer="1"/>
<wire x1="22.6314" y1="67.5894" x2="57.0738" y2="67.5894" width="0.1524" layer="1"/>
<wire x1="21.6408" y1="68.58" x2="22.6314" y2="67.5894" width="0.1524" layer="1"/>
<wire x1="59.6646" y1="66.0654" x2="59.69" y2="66.04" width="0.1524" layer="1"/>
<wire x1="21.6408" y1="68.58" x2="21.59" y2="68.58" width="0.1524" layer="1"/>
</signal>
<signal name="ECHO">
<contactref element="U$1" pad="D31"/>
<contactref element="U1" pad="3"/>
<wire x1="21.6408" y1="66.0654" x2="57.15" y2="66.0654" width="0.1524" layer="1"/>
<wire x1="57.15" y1="66.0654" x2="57.15" y2="66.04" width="0.1524" layer="1"/>
<wire x1="21.6408" y1="66.0654" x2="21.59" y2="66.04" width="0.1524" layer="1"/>
</signal>
</signals>
<mfgpreviewcolors>
<mfgpreviewcolor name="soldermaskcolor" color="0xC8008000"/>
<mfgpreviewcolor name="silkscreencolor" color="0xFFFEFEFE"/>
<mfgpreviewcolor name="backgroundcolor" color="0xFF282828"/>
<mfgpreviewcolor name="coppercolor" color="0xFFFFBF00"/>
<mfgpreviewcolor name="substratecolor" color="0xFF786E46"/>
</mfgpreviewcolors>
</board>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
</compatibility>
</eagle>
The different files provided under different subdirectories contain the files necessary to construct the drone attachment. The content of each file is summarized below.
## Assemblies
- `Camera_Assembly.zip`: Solidworks Pack-and-Go file of the Camera Case
- `PCB_Assembly.zip`: Solidworks Pack-and-Go file of the PCB Case
To access, unzip the respective folder and open the assembly file. Individual parts are also included in the folder and can be accessed inside.
## Drawings
- `Camera_Enclosure.SLDDRW`: Solidworks Assembly Drawing (SLDDRW) of the Camera Case
- `pcb_assembly.SLDDRW`: Solidworks Assembly Drawing (SLDDRW) of the PCB Case
To access, first download the respective Pack-and-Go file in the Assemblies Directory.
## Arduino
- `PHYS371_Group1_main.ino`: Performs data acquisition of the image, time, temperature, and more and saves it to an SD card using the Arduino Mega 2560
## PCB File(s)
- `Beetle_PCB.brd`: EAGLE autodesk Board (.brd) of the PCB Design
\ No newline at end of file
# GROUP-01-PHYS371-SP2023
This was a group project for PHYS371 at the University of Illinois at Urbana-Champaign. This repository contains the necessary code and documents the results of implementing the YOLOv5 model to identify western corn rootworm beetles on yellow sticky traps. The architecture of YOLOv5 is summarized in the [GitHub repository](https://github.com/ultralytics/yolov5).
# Preparing the repository
To train/retrain models and run the notebooks provided with this repository, one needs to create the right environment and install certain dependencies. First `cd` to the project's top directory and do
`export PROJPATH=$PWD`
## Getting started
### Arduino Code and Drone Attachment
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
The code and files for the data acquisition from the arduino, the design of the PCB, and the enclosure files, are stored in the [`Assemblies and Hardware`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/tree/main/Assemblies%20and%20Hardware) directory. More information about these files is explained in the `README` file provided in [`Assemblies and Hardware`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/tree/main/Assemblies%20and%20Hardware) directory.
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
### Download Data
The dataset used by these studies has been made available to use by Professor Spencer of the University of Illinois at Urbana-Champaign It is available at https://universe.roboflow.com/wcr-beetle-detection/wcr-beetle-traps. Please use the steps provided on the Roboflow website to download the latest version of the dataset. We used the validation part of this dataset as the test images for our paper. Some of these images were incorrectly cropped, and so we discarded them from our results.
### Make necessary directories
Run the following commands to make the necessary directories
```
cd existing_repo
git remote add origin https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023.git
git branch -M main
git push -uf origin main
cd $PROJPATH
mkdir -p crop/data/train/images
mkdir -p crop/data/train/labels
mkdir -p crop/data/val/images
mkdir -p crop/data/val/labels
mkdir -p crop/data/test/images
mkdir -p crop/data/test/labels
```
## Integrate with your tools
- [ ] [Set up project integrations](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/settings/integrations)
## Collaborate with your team
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
Use the built-in continuous integration in GitLab.
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
***
# Editing this README
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
### Setup necessary environment!
The dependencies for the cropping and simulated data are encompassed in the YOLOv5 model requirements. Run the following commands to set up the environment:
```
cd $PROJPATH
cd yolov5_model
pip install -r requirements.txt
```
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
### Data pre-processing
To preprocess the data for the `YOLOv5` models, please look at the `README` file in [`crop`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/tree/main/crop) folder.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
# Training your own models
For each model architecture, we have trained a number of alternate variants and they are hosted in the [`yolov5_model/runs/train`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/tree/main/yolov5_model/runs/train) directory. If you are interested in training your own models, please follow the instructions in the `README` file given in the [`yolov5_model`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/tree/main/yolov5_model) directory. Please use the `beetles.yaml` as the `.yaml` file to train your own model. An example of training the model is:
```
cd $PROJPATH
cd yolov5_model
python train.py --img 1280 --batch 16 --epochs 100 --data beetles.yaml --weights yolov5x.pt --name NAME --workers 30
```
The model would be then stored in the `yolov5_model/runs/train/NAME` folder.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
# Reproducing image classification results
**They rely on avaliability of the pretrained models and the datasets in the way they have been setup in the previous section**. The tested images in the paper are stored in [`yolov5_model/runs/detect`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/tree/main/yolov5_model/runs/detect) directory. You can test unlabeled images by
```
cd $PROJPATH
cd yolov5_model
python test.py --img 1280 --source path/to/images/ --weights path/to/weights/best.pt --name NAME --workers 30
```
For full data acquisition, you can use the [`transfer.py`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/blob/main/transfer/transfer.py) file to output the number of predicted beetles as well as the confidence level into an [`output.csv`](https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/-/blob/main/transfer/output.csv) file. To run this, run the following commands:
```
cd $PROJPATH
cd transfer
python transfer.py
```
# Reference
The model and drone attachment in this repository are compiled and explained in this paper: [Building an Arduino Drone Attachment to Detect Western Corn Rootworm Beetles Using YOLOv5](https://drive.google.com/file/d/167-oGDc3cTERrExamo15tIQeFQ6fNDwl/view?usp=sharing)
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
To cite this work, please use the following `bibtex` entry:
```
@misc{khot_lin_pasq_pavan_2023,
title={Building an Arduino Drone Attachment to Detect Western Corn Rootworm Beetles Using YOLOv5},
author={Khot, Ayush and Lin, Jeremiah and Pasquesi, Samuel and Pavithran, Pavan},
year={2023},
url={https://gitlab.engr.illinois.edu/akhot2/group-01-phys371-sp2023/}
}
```
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
Please use the contact information given in https://universe.roboflow.com/wcr-beetle-detection/wcr-beetle-traps to gain permission to use the dataset in research. To cite this dataset, please use the `bibtex` entry given on the website.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
# Source Code
Existing resources from publicly available repositories have been adapted to implement the image cropping and YOLOv5 model. We are greatly thankful to the authors of the following works for making these repositories and resources publicly available.
## License
For open source projects, say how it is licensed.
- Part of the image cropping code is obtained from: https://stackoverflow.com/questions/60941012/how-do-i-find-corners-of-a-paper-when-there-are-printed-corners-lines-on-paper-i
- Implementation of YOLOv5 has been largely adopted from: https://github.com/ultralytics/yolov5
- Part of the arduino code has been obtained from the examples for the Adafruit libaries
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
# Contact:
For comments, feedback, and suggestions: Ayush Khot (akhot2@illinois.edu), Jeremiah Lin (jl190@illinois.edu), Samuel Pasquesi (smp6@illinois.edu), and Pavan Pavithran (pavanp2@illinois.edu)
File added
The different files and directories contain the images and code necessary to construct the western corn rootworm (WCR) simulated dataset using the images given in the [Roboflow dataset](https://universe.roboflow.com/wcr-beetle-detection/wcr-beetle-traps). The content of each file is summarized below.
- `beetles`: Directory of cropped WCR beetles taken from the cropped traps
- `cropped_imgs`: Directory of cropped traps, containing both WCR beetles and insects
- `imgs`: Directory of uncropped traps, containing both WCR beetles and insects
- `non_beetles`: Directory of cropped various insects, not including WCR beetles, taken from the cropped traps
- `SimData.ipynb`: Constructs the simulated dataset using the cropped traps, beetles, and insects in the various folders
- `autocrop.py`: Performs cropping of an image using Otsu's Method, cropping only one image. To crop an image, setup the required environment and run the following command:
```
python3 autocrop.py imgpath destpath [sensitivity=110] [debug=False]
```
The available options are:
```
imgpath path to image file
destpath path to destination file, including new filename
sensitivity sensitivity of foreground vs background
debug saves additional images to folder (polygon and mask of foreground pixels)
```
*Note*: To perform autocropping, delete lines 111 and 133. These were implemented to be able to be used in `transfer.py`.
- `autocrop_folder.py`: Performs cropping of an image using Otsu's Method, cropping a whole folder. To crop a folder, setup the required environment and run the following command:
```
python3 autocrop_folder.py imgfolder destfolder [sensitivity=110] [debug=False]
```
The available options are:
```
imgfolder path to the folder of images
destfolder path to destination folder
sensitivity sensitivity of foreground vs background
debug saves additional images to folder (polygon and mask of foreground pixels)
```
*Note*: When one file fails to autcrop due to needing a higher or lower sensitivity, the whole program stops. In this case, it is better to move it out of the folder and correctly crop it with a new sensitivity using `autocrop.py` and `debug=True`. Then, you can use `autocrop_folder.py` again.
%% Cell type:code id: tags:
``` python
import glob
from PIL import Image
import pillow_heif
import pandas as pd
import numpy as np
from torchvision.utils import save_image
import torchvision.transforms.functional as fn
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
```
%% Cell type:code id: tags:
``` python
# generates new dataset by pasting beetles and non-beetles in the same picture.
#returns array of new images and coordinates
#TODO: make sure that the beetles and non-beetles don't overlap with each other
def generate_data(bg: list[Image], beetle_set: list[Image], num_beetles_arr: list[int],
non_beetle_set: list[Image], num_non_beetles_arr: list[int], overlap: bool):
set_size = len(beetle_set)
set_non_size = len(non_beetle_set)
set_bg_size = len(bg)
sim_arr, coords_arr = [],[]
for i, num_beetles in enumerate(num_beetles_arr):
num_non_beetles = num_non_beetles_arr[i]
bg_id = np.random.randint(0, set_bg_size)
bg_temp = bg[bg_id].copy()
width, height = bg_temp.size
beetle_coords = []
non_beetle_coords = []
for j in range(num_non_beetles):
# get random non_beetle image
non_beetle_id = np.random.randint(0, set_non_size)
non_beetle_img = non_beetle_set[non_beetle_id]
# get random non_beetle rotation
angle = np.random.randint(0, 360)
non_beetle_img = non_beetle_img.rotate(angle, resample=Image.BICUBIC, expand=1)
non_beetle_width, non_beetle_height = non_beetle_img.size
# get random x,y coords to paste non-beetle
x = np.random.randint(0, width - non_beetle_width)
y = np.random.randint(0, height - non_beetle_height)
if not overlap:
is_overlapping = True
while (is_overlapping):
is_overlapping = False
for k in range(j):
_, x_, y_, width_, height_, _ = non_beetle_coords[-(k+1)]
if (x_ - width_/2) < x and (x_ + width_/2) > x and (y_ - height_/2) < y and (y_ + height_/2) > y:
is_overlapping = True
x = np.random.randint(0, width - non_beetle_width)
y = np.random.randint(0, height - non_beetle_height)
break
bg_temp.paste(non_beetle_img, box=(x,y), mask=non_beetle_img)
#centers x and y for YOLOv5 PyTorch label
x += non_beetle_width/2
y += non_beetle_width/2
non_beetle_coords.append((non_beetle_id, x, y, non_beetle_width, non_beetle_height, angle))
for j in range(num_beetles):
# get random beetle image
beetle_id = np.random.randint(0, set_size)
beetle_img = beetle_set[beetle_id]
# get random beetle rotation
angle = np.random.randint(0, 360)
beetle_img = beetle_img.rotate(angle, resample=Image.BICUBIC, expand=1)
#randomly resize beetle to be smaller as they are much bigger on image
beetle_width, beetle_height = beetle_img.size
beetle_max = np.max([beetle_width, beetle_height])
factor = np.random.uniform((height/(5*9))/beetle_max, (height/(4*9))/beetle_max)
beetle_img = beetle_img.resize((int(factor * beetle_width), int(factor * beetle_height)), resample=Image.BICUBIC)
beetle_width, beetle_height = beetle_img.size
# get random x,y coords to paste beetle
x = np.random.randint(0, width - beetle_width)
y = np.random.randint(0, height - beetle_height)
if not overlap:
is_overlapping = True
while (is_overlapping):
is_overlapping = False
for k in range(j+num_non_beetles):
if (k < num_non_beetles):
_, x_, y_, width_, height_, _ = non_beetle_coords[-(k+1)]
else:
_, x_, y_, width_, height_, _ = beetle_coords[-(k+1-num_non_beetles)]
if (x_ - width_/2) < x and (x_ + width_/2) > x and (y_ - height_/2) < y and (y_ + height_/2) > y:
is_overlapping = True
x = np.random.randint(0, width - non_beetle_width)
y = np.random.randint(0, height - non_beetle_height)
break
bg_temp.paste(beetle_img, box=(x,y), mask=beetle_img)
#centers x and y for YOLOv5 PyTorch label
x += beetle_width/2
y += beetle_height/2
beetle_coords.append((beetle_id, x, y, beetle_width, beetle_height, angle))
sim_arr.append(bg_temp)
coords_arr.append(beetle_coords)
return sim_arr, coords_arr
```
%% Cell type:code id: tags:
``` python
#???
def find_coeffs(source_coords, target_coords):
matrix = []
for s, t in zip(source_coords, target_coords):
matrix.append([t[0], t[1], 1, 0, 0, 0, -s[0]*t[0], -s[0]*t[1]])
matrix.append([0, 0, 0, t[0], t[1], 1, -s[1]*t[0], -s[1]*t[1]])
A = np.matrix(matrix, dtype=float)
B = np.array(source_coords).reshape(8)
res = np.dot(np.linalg.inv(A.T * A) * A.T, B)
return np.array(res).reshape(8)
```
%% Cell type:code id: tags:
``` python
backgrounds = []
for file in glob.glob(r"/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/*"):
if "bg.png" in file: #clean trap
bg = Image.open(file)
# map corners of trap to corners of image
coeffs = find_coeffs([(128,6), (1904,62), (2113,3137), (3,3228)],
[(0,0), (bg.size[0], 0), (bg.size[0], bg.size[1]), (0, bg.size[1])])
bg_flat = bg.transform(bg.size, Image.PERSPECTIVE, coeffs, Image.BICUBIC)
backgrounds.append(bg)
continue
bg = Image.open(file)
backgrounds.append(bg);
beetles = []
for file in glob.glob(r"/raid/projects/akhot2/group-01-phys371-sp2023/crop/beetles/*"):
b0 = Image.open(file)
beetles.append(b0);
non_beetles = []
for file in glob.glob(r"/raid/projects/akhot2/group-01-phys371-sp2023/crop/non_beetles/*"):
n_b0 = Image.open(file)
non_beetles.append(n_b0);
```
%% Cell type:code id: tags:
``` python
print(len(backgrounds))
print(len(beetles))
print(len(non_beetles))
```
%% Output
21
20
48
%% Cell type:code id: tags:
``` python
beetle_counts = np.random.randint(0, 8, size=1250)
non_beetle_counts = np.random.randint(0, 15, size=1250)
overlap = True
sim_img_arr, coords_arr = generate_data(backgrounds, beetles, beetle_counts, non_beetles, non_beetle_counts, overlap)
```
%% Cell type:code id: tags:
``` python
#exports images and coordinates in YOLOv5 PyTorch format
def export(img_arr, coords_arr):
s = ""
image_set = "train"
change = len(img_arr)*0.8
for i in range(len(img_arr)):
s = ""
img = img_arr[i]
for coord in coords_arr[i]:
c, x, y, w, h, a = coord
s += f"{0} {x/img.size[0]} {y/img.size[1]} {w/img.size[0]} {h/img.size[1]}\n"
print(i)
if i > change:
image_set = "test"
with open("data/" +image_set+ f"/labels/sim{i}.txt", "w") as f:
f.write(s)
img.save("data/" +image_set+ f"/images/sim{i}.png")
```
%% Cell type:code id: tags:
``` python
export(sim_img_arr, coords_arr)
```
%% Output
0
1
2
3
4
5
6
7
8
9
%% Cell type:code id: tags:
``` python
beetle_counts.mean()
```
%% Output
3.4648
%% Cell type:code id: tags:
``` python
non_beetle_counts.mean()
```
%% Output
2.528
%% Cell type:code id: tags:
``` python
format
0 x y width height (each value normalized to size of image)
```
%% Cell type:code id: tags:
``` python
from torchvision.utils import draw_bounding_boxes
import torch
import torchvision
transform = transforms.Compose([transforms.ToTensor()])
for i in range(len(sim_img_arr)):
print(sim_img_arr[i].mode)
tensor = transform(sim_img_arr[i].convert("RGB")).type(torch.uint8)
coords_list = np.zeros((len(coords_arr[i]), 4))
j=0
for k in coords_arr[i]:
c, x, y, w, h, a = k
coords_list[j, 0] = x
coords_list[j, 1] = y
coords_list[j, 2] = int(x+w)
coords_list[j, 3] = int(y+h)
j+=1
print(coords_list.shape)
draw_bounding_boxes(tensor, torch.Tensor(coords_list))
plt.imshow(tensor.permute(1,2,0)[:,:,0:3])
plt.show()
break
```
%% Output
RGBA
(2, 4)
%% Cell type:markdown id: tags:
First:
- created 1250 images on a clean background variable 1 to 5 of the same beetle, model detected well on test set of 100 images (val/exp or exp2 or exp3) (proof of concept)
fixed labels, making sure it's in the center
- created 1250 images on a clean background variable 0 to 5 beetles of 6 different types of beetles, performing nearly 100%
https://wandb.ai/akhot2/YOLOv5/runs/294etqct?workspace=user-fresleven
https://wandb.ai/akhot2/YOLOv5/runs/i0ykd1a6?workspace=user-fresleven
TODO:
- (fixed autocropping during rotation and added option for not overlapping and multiple backgrounds and non beetles)
- created 1250 images on a clean background variable 0 to 7 beetles of 6 different images and 0 to 5 non-beetles 7 different images, performing
- created 1250 images on a clean and dirty background variables 0 to 15 beetles of 15 different images and 0 to 10 non-beetle of 10 different images, overlap True
- created 1250 images on a clean and dirty background variables 0 to 10 beetles of 15 different images and 0 to 10 non-beetle of 10 different images, overlap False
- perform auto cropping on arduino and include
%% Cell type:code id: tags:
``` python
len(backgrounds)
```
%% Output
4
%% Cell type:code id: tags:
``` python
import torch
model = torch.hub.load('ultralytics/yolov5', 'custom', '/raid/projects/akhot2/group-01-phys371-sp2023/yolov5_model/runs/train/20beetle_40-non_20dirt_bkg_overlap/weights/best.pt')
model.eval()
```
%% Output
Using cache found in /home/akhot2/.cache/torch/hub/ultralytics_yolov5_master
YOLOv5 🚀 2023-3-31 Python-3.9.12 torch-1.11.0 CUDA:0 (A100-SXM4-40GB, 40537MiB)
Fusing layers...
Model summary: 212 layers, 20852934 parameters, 0 gradients, 47.9 GFLOPs
Adding AutoShape...
AutoShape(
(model): DetectMultiBackend(
(model): DetectionModel(
(model): Sequential(
(0): Conv(
(conv): Conv2d(3, 48, kernel_size=(6, 6), stride=(2, 2), padding=(2, 2))
(act): SiLU(inplace=True)
)
(1): Conv(
(conv): Conv2d(48, 96, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
(act): SiLU(inplace=True)
)
(2): C3(
(cv1): Conv(
(conv): Conv2d(96, 48, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(96, 48, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(96, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(48, 48, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(48, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(48, 48, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(48, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(3): Conv(
(conv): Conv2d(96, 192, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
(act): SiLU(inplace=True)
)
(4): C3(
(cv1): Conv(
(conv): Conv2d(192, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(96, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(96, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(2): Bottleneck(
(cv1): Conv(
(conv): Conv2d(96, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(3): Bottleneck(
(cv1): Conv(
(conv): Conv2d(96, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(5): Conv(
(conv): Conv2d(192, 384, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
(act): SiLU(inplace=True)
)
(6): C3(
(cv1): Conv(
(conv): Conv2d(384, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(384, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(2): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(3): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(4): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(5): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(7): Conv(
(conv): Conv2d(384, 768, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
(act): SiLU(inplace=True)
)
(8): C3(
(cv1): Conv(
(conv): Conv2d(768, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(768, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(768, 768, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(9): SPPF(
(cv1): Conv(
(conv): Conv2d(768, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(1536, 768, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): MaxPool2d(kernel_size=5, stride=1, padding=2, dilation=1, ceil_mode=False)
)
(10): Conv(
(conv): Conv2d(768, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(11): Upsample(scale_factor=2.0, mode=nearest)
(12): Concat()
(13): C3(
(cv1): Conv(
(conv): Conv2d(768, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(768, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(14): Conv(
(conv): Conv2d(384, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(15): Upsample(scale_factor=2.0, mode=nearest)
(16): Concat()
(17): C3(
(cv1): Conv(
(conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(96, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(96, 96, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(18): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
(act): SiLU(inplace=True)
)
(19): Concat()
(20): C3(
(cv1): Conv(
(conv): Conv2d(384, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(384, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(192, 192, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(21): Conv(
(conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
(act): SiLU(inplace=True)
)
(22): Concat()
(23): C3(
(cv1): Conv(
(conv): Conv2d(768, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(768, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv3): Conv(
(conv): Conv2d(768, 768, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(m): Sequential(
(0): Bottleneck(
(cv1): Conv(
(conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
(1): Bottleneck(
(cv1): Conv(
(conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))
(act): SiLU(inplace=True)
)
(cv2): Conv(
(conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(act): SiLU(inplace=True)
)
)
)
)
(24): Detect(
(m): ModuleList(
(0): Conv2d(192, 18, kernel_size=(1, 1), stride=(1, 1))
(1): Conv2d(384, 18, kernel_size=(1, 1), stride=(1, 1))
(2): Conv2d(768, 18, kernel_size=(1, 1), stride=(1, 1))
)
)
)
)
)
)
%% Cell type:code id: tags:
``` python
model('/raid/projects/akhot2/group-01-phys371-sp2023/crop/data/train/images/sim1.png')
```
%% Output
YOLOv5 <class 'models.common.Detections'> instance
image 1/1: 2746x1610 3 beetless
Speed: 125.2ms pre-process, 13.4ms inference, 1.1ms NMS per image at shape (1, 3, 640, 384)
%% Cell type:code id: tags:
``` python
width = []
height = []
for file in glob.glob('/raid/projects/akhot2/group-01-phys371-sp2023/crop/data/train/sim0.png'):
print(file)
n_b0 = Image.open(file)
print(n_b0.size)
w, h = n_b0.size
width.append(w)
height.append(h)
#f = model(file)
#print(f)
```
%% Output
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real18.jpg
(1744, 2778)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real16.jpg
(1894, 3155)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real7.jpg
(1837, 2978)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real8.jpg
(1680, 2791)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real10.jpg
(1880, 3101)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real13.jpg
(1572, 2582)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real15.jpg
(1486, 2422)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real6.jpg
(1635, 2699)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/F28_3AUGUST2022_cropped.jpg
(1850, 2765)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/bg.png
(2114, 3236)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real17.jpg
(1769, 3095)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real1.jpg
(1751, 2631)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real20.jpg
(1521, 2306)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real4.jpg
(1640, 2289)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real3.jpg
(1610, 2746)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real19.jpg
(1662, 2767)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real9.jpg
(1627, 2155)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real14.jpg
(1548, 2187)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real5.jpg
(1940, 2713)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real12.jpg
(1494, 2695)
/raid/projects/akhot2/group-01-phys371-sp2023/crop/cropped_imgs/real2.jpg
(1940, 2713)
%% Cell type:code id: tags:
``` python
np.mean(width)
```
%% Output
78.57894736842105
%% Cell type:code id: tags:
``` python
np.mean(height)
```
%% Output
92.47368421052632
%% Cell type:code id: tags:
``` python
np.mean(width)
```
%% Output
1723.5238095238096
%% Cell type:code id: tags:
``` python
np.mean(height)
```
%% Output
2704.9523809523807
%% Cell type:code id: tags:
``` python
width[8]*.7
```
%% Output
94.5
%% Cell type:code id: tags:
``` python
height[8]*.7
```
%% Output
54.599999999999994
%% Cell type:code id: tags:
``` python
width
```
%% Output
[1744,
1894,
1837,
1680,
1880,
1572,
1486,
1635,
1850,
2114,
1769,
1751,
1521,
1640,
1610,
1662,
1627,
1548,
1940,
1494,
1940]
%% Cell type:code id: tags:
``` python
for i in height:
print((i/(6*9)))
print((i/(7.5*9)))
```
%% Output
51.44444444444444
41.15555555555556
58.425925925925924
46.74074074074074
55.148148148148145
44.11851851851852
51.68518518518518
41.34814814814815
57.425925925925924
45.94074074074074
47.81481481481482
38.25185185185185
44.851851851851855
35.88148148148148
49.98148148148148
39.98518518518519
51.2037037037037
40.96296296296296
59.925925925925924
47.94074074074074
57.31481481481482
45.851851851851855
48.72222222222222
38.977777777777774
42.7037037037037
34.162962962962965
42.388888888888886
33.91111111111111
50.851851851851855
40.681481481481484
51.24074074074074
40.992592592592594
39.907407407407405
31.925925925925927
40.5
32.4
50.24074074074074
40.19259259259259
49.907407407407405
39.925925925925924
50.24074074074074
40.19259259259259
%% Cell type:code id: tags:
``` python
```
File added
File added