Compare commits

..

No commits in common. "main" and "firmware-0.1-dev" have entirely different histories.

36 changed files with 46711 additions and 51817 deletions

View file

@ -71,16 +71,16 @@ void setup() {
// set all OUTPUT to low // set all OUTPUT to low
digitalWrite(PinFAN, HIGH); digitalWrite(PinFAN, LOW);
digitalWrite(PINwaterlevel, LOW); digitalWrite(PINwaterlevel, LOW);
digitalWrite(PinLED, HIGH); digitalWrite(PinLED, LOW);
digitalWrite(PinPUMP, HIGH); digitalWrite(PinPUMP, LOW);
// except PINsoilmoisture // except PINsoilmoisture
// PINsoilmoisture is always HIGH and gets LOW in moment of waterlevel measurement // PINsoilmoisture is always HIGH and gets LOW in moment of waterlevel measurement
digitalWrite(PINsoilmoisture, LOW); digitalWrite(PINsoilmoisture, LOW);
// set PWM frequency to 13.37KHz // set PWM frequency to 2.2KHz
analogWriteFreq(13370); analogWriteFreq(2200);
// Start EEPROM // Start EEPROM
EEPROM.begin(512); EEPROM.begin(512);
@ -100,7 +100,7 @@ void setup() {
Serial.println(":: initialise I2C ::"); Serial.println(":: initialise I2C ::");
// initialise Wire for I2C // initialise Wire for I2C
Wire.begin(); Wire.begin();
Wire.setClockStretchLimit(2500);
Serial.println(":: initialise display ::"); Serial.println(":: initialise display ::");
// initialise I2C display // initialise I2C display
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x64 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x64
@ -239,7 +239,7 @@ void loop() {
controlLED(); controlLED();
} }
controlPUMP();
displayScreens(); displayScreens();
@ -265,7 +265,7 @@ void loop() {
* - re-organize EEPROM saved values. * - re-organize EEPROM saved values.
* - prevent GrowStart to be in the future * - prevent GrowStart to be in the future
* - maybe let the user configure some screens to display. * - maybe let the user configure some screens to display.
* - put EEPROM adresses into DEFINEs *
*/ */
@ -273,14 +273,6 @@ void loop() {
/*
* Fan control
*
* Vars:
* - FanVent (byte) Fan1 or Fan2
* - FanExhaust (byte) Fan1 or Fan2
* -
*/

View file

@ -74,9 +74,6 @@ a:active {
width: 42px; width: 42px;
} }
.helpbox {
font-size: 0.8em;
}
.nav { .nav {
background: #333; background: #333;
width: 100%; width: 100%;
@ -213,8 +210,8 @@ const char HTMLhelp[] PROGMEM = R"EOF(
<h2>&#x2753; Help</h2> <h2>&#x2753; Help</h2>
Here you will get some helpful help. Here you will get some helpful help.
<h3>API</h3> <h3>API</h3>
<a href='/api/sensors' target='_blank'>Sensor data</a>: <code>GET /api/sensors</code><br> Sensor data: <code>GET /api/sensors</code>
<a href='/api/debug' target='_blank'>Debug all data:</a> <code>GET /api/debug</code> Debug all data: <code>GET /api/debug</code>
)EOF"; )EOF";
@ -508,10 +505,10 @@ const char HTMLgauge[] PROGMEM = R"EOF(
const char HTMLupdate[] PROGMEM = R"EOF( const char HTMLupdate[] PROGMEM = R"EOF(
<p>You find the latest CanGrow firmware version on the <a href='https://git.la10cy.net/DeltaLima/CanGrow/releases' target='_blank'>release page</a> of the git repository.</p> <p>You find the latest CanGrow firmware version on the <a href='https://git.la10cy.net/DeltaLima/CanGrow/releases' target='_blank'>release page</a> of the git repository.</p>
<form method='POST' action='/system/applyUpdate' enctype='multipart/form-data' onsubmit="document.getElementById('divUploading').style.display = '';"> <form method='POST' action='/system/applyUpdate' enctype='multipart/form-data'>
<b>Select .bin file:</b><br> <b>Select .bin file:</b><br>
<input type='file' accept='.bin,.bin.gz' name='firmware' required> <input type='file' accept='.bin,.bin.gz' name='firmware'>
<input type='submit' value='Update Firmware'> <input type='submit' value='Update Firmware' onclick="document.getElementById('divUploading').style.display = '';">
</form> </form>
<div id='divUploading' style='display: none;' class='warnmsg'>&#x1F6DC; Uploading, please wait...<div> <div id='divUploading' style='display: none;' class='warnmsg'>&#x1F6DC; Uploading, please wait...<div>
)EOF"; )EOF";

View file

@ -19,7 +19,7 @@ const bool APhidden = false;
*/ */
// valSoilmoisture - contains the value of getSoilmoisture() // valSoilmoisture - contains the value of getSoilmoisture()
unsigned short valSoilmoisture; byte valSoilmoisture;
// valTemperature - contains the value of getTemperature() // valTemperature - contains the value of getTemperature()
float valTemperature; float valTemperature;
// valTemperature - contains the value of getHumidity() // valTemperature - contains the value of getHumidity()
@ -38,18 +38,6 @@ byte ScreenIterationPassed = 0;
bool MaintenanceMode = false; bool MaintenanceMode = false;
unsigned long MaintenanceStarted = 0; unsigned long MaintenanceStarted = 0;
// helper variable to remember how many seconds the pump was
// already on within the actual watering cycle
byte PumpOnTimePassed = 0;
bool PumpOnManual = false;
// helper variable for pump control with soilmoisture
// average of last readings
unsigned short valSoilmoistureAvg = 0;
unsigned short valSoilmoistureAvg_tmp = 0;
byte valSoilmoistureAvg_count = 0;
//unsigned short
/* /*
* millis timer * millis timer
* *
@ -91,14 +79,12 @@ short NtpOffset;
// 2: I2C chirp sensor from catnip electronics // 2: I2C chirp sensor from catnip electronics
byte MoistureSensor_Type; byte MoistureSensor_Type;
// SoilmoistureLow - contains the value , when soil moisture is assumed to be low, // SoilmoistureLow - contains the value , when soil moisture is assumed to be low,
byte SoilmoistureLow = 80; byte SoilmoistureLow = 20;
// UsePump - is the pump used? bool // UsePump - is the pump used? bool
// PumpMode (short) 1: Pump on every n days, 2: Pump on when Soilmoisture <= SoilmoistureLow, 3: Both bool UsePump;
byte UsePump;
// UseFan - is the fan used? bool // UseFan - is the fan used? bool
// PumpOnTime in seconds
byte PumpOnTime = 3; byte PumpOnTime = 3;
byte UseFan; bool UseFan;
// In case the user uses no 12V LED on the LED output and an relais instead // In case the user uses no 12V LED on the LED output and an relais instead
// we have to disable PWM. So we ask here for what kind of light user is going // we have to disable PWM. So we ask here for what kind of light user is going
bool UseLEDrelais; bool UseLEDrelais;
@ -107,10 +93,6 @@ bool UseFANrelais;
byte TemperatureSensor_Type; byte TemperatureSensor_Type;
unsigned short MaintenanceDuration = 300; unsigned short MaintenanceDuration = 300;
char Esp32CamIP[16]; char Esp32CamIP[16];
// PumpLastOn (long) timestamp
unsigned long PumpLastOn;
// //
// Grow Stuff // Grow Stuff
@ -145,10 +127,6 @@ byte PinFANPWM = 255;
bool SunFade; bool SunFade;
byte SunFadeDuration = 30; byte SunFadeDuration = 30;
// PumpIntervalVeg (int) in days
byte PumpIntervalVeg = 5;
byte PumpIntervalBloom = 3;
/* /*
* *
* NTP * NTP

View file

@ -187,13 +187,7 @@ int getSoilmoisture(byte moistureSensor, bool returnRAW = false) {
if(returnRAW == true) { if(returnRAW == true) {
return soilmoisture; return soilmoisture;
} else { } else {
short soilmoistureP = map(soilmoisture, wet, dry, 100, 0); return map(soilmoisture, wet, dry, 100, 0);
// dont return negative percentage values
if(soilmoistureP < 0) {
return 0;
} else {
return soilmoistureP;
}
} }
} }

View file

@ -104,10 +104,7 @@ bool loadEEPROM() {
* 218 SunFadeDuration * 218 SunFadeDuration
* 219 MaintenanceDuration (2 byte) * 219 MaintenanceDuration (2 byte)
* 221 Esp32CamIP (16 byte) * 221 Esp32CamIP (16 byte)
* 237 PumpLastOn (4 byte) * 237 ...
* 241 PumpIntervalVeg (1 byte)
* 242 PumpIntervalBloom (1 byte)
* 243 ...
* *
*/ */
@ -171,9 +168,6 @@ bool loadEEPROM() {
EEPROM.get(219, MaintenanceDuration); EEPROM.get(219, MaintenanceDuration);
// size is 16 byte // size is 16 byte
EEPROM.get(221, Esp32CamIP); EEPROM.get(221, Esp32CamIP);
// size is 4 byte
EEPROM.get(237, PumpLastOn);
} }
// TODO auth does not work atm // TODO auth does not work atm
// EEPROM.get(160, WebUiUsername); // EEPROM.get(160, WebUiUsername);
@ -208,10 +202,6 @@ bool loadEEPROM() {
EEPROM.get(216, PinFANPWM); EEPROM.get(216, PinFANPWM);
EEPROM.get(217, SunFade); EEPROM.get(217, SunFade);
EEPROM.get(218, SunFadeDuration); EEPROM.get(218, SunFadeDuration);
// size is 1 byte
EEPROM.get(241, PumpIntervalVeg);
// size is 1 byte
EEPROM.get(242, PumpIntervalBloom);
} }
@ -370,30 +360,6 @@ void wifiAp() {
//Serial.println("The login credentials for the WebUI are 'cangrow' for username and password"); //Serial.println("The login credentials for the WebUI are 'cangrow' for username and password");
} }
unsigned short growState() {
/*
* growState()
*
* returns growState as short
*
* 1 - vegetation
* 2 - bloom
* 3 - harvest
*
*/
unsigned short state;
if(DayOfGrow > (DaysVeg + DaysBloom ) ) {
state = 3;
} else if(DayOfGrow > DaysVeg ) {
state = 2;
} else {
state = 1;
}
return state;
}
void setOutput(byte Output, byte OutputState) { void setOutput(byte Output, byte OutputState) {
/* /*
* Pin assignments * Pin assignments
@ -439,9 +405,9 @@ void setOutput(byte Output, byte OutputState) {
//~ Serial.println(UseRelais); //~ Serial.println(UseRelais);
if( (UseRelais == true) || (OutputPin == PinPUMP) ) { if( (UseRelais == true) || (OutputPin == PinPUMP) ) {
digitalWrite(OutputPin, 1 - OutputState); digitalWrite(OutputPin, OutputState);
} else { } else {
analogWrite(OutputPin, 255 - OutputState); analogWrite(OutputPin, OutputState);
} }
} }
@ -452,22 +418,15 @@ void controlLED() {
unsigned int secondsSunrise = (SunriseHour * 60 * 60) + (SunriseMinute * 60); unsigned int secondsSunrise = (SunriseHour * 60 * 60) + (SunriseMinute * 60);
unsigned int secondsToday = (timeClient.getHours() * 60 * 60) + (timeClient.getMinutes() * 60) + timeClient.getSeconds(); unsigned int secondsToday = (timeClient.getHours() * 60 * 60) + (timeClient.getMinutes() * 60) + timeClient.getSeconds();
switch(growState()) { if(DayOfGrow > DaysVeg ) {
case 1:
lightHours = LighthoursVeg;
break;
case 2:
lightHours = LighthoursBloom; lightHours = LighthoursBloom;
break; } else {
default: lightHours = LighthoursVeg;
lightHours = 0;
break;
} }
// check if secondsToday is larger then secondsSunrise time AND if // check if secondsToday is larger then secondsSunrise time AND if
// secondsToday is smaller then the sum of secondsSunrise + seconds of lightHours // secondsToday is smaller then the sum of secondsSunrise + seconds of lightHours
if( ((secondsToday >= secondsSunrise) && (secondsToday <= ( secondsSunrise + (lightHours * 60 * 60))) ) && (growState() < 3) ){ if( ((secondsToday >= secondsSunrise) && (secondsToday <= ( secondsSunrise + (lightHours * 60 * 60))) ) ){
//Serial.println("light on time"); //Serial.println("light on time");
// when SunFade is true, fade LED light. Otherwise just turn on or off // when SunFade is true, fade LED light. Otherwise just turn on or off
@ -501,25 +460,10 @@ void controlLED() {
} }
void refreshSensors() { void refreshSensors() {
byte soilmoistureAvgSampleCount = 5;
valSoilmoisture = getSoilmoisture(MoistureSensor_Type); valSoilmoisture = getSoilmoisture(MoistureSensor_Type);
valHumidity = getHumidity(); valHumidity = getHumidity();
valTemperature = getTemperature(TemperatureSensor_Type); valTemperature = getTemperature(TemperatureSensor_Type);
valWaterlevel = getWaterlevel(); valWaterlevel = getWaterlevel();
// get average of 5 readings for valSoilmoisture
valSoilmoistureAvg_tmp = valSoilmoistureAvg_tmp + valSoilmoisture;
if(valSoilmoistureAvg_count < soilmoistureAvgSampleCount - 1) {
valSoilmoistureAvg_count++;
} else {
// build average
valSoilmoistureAvg = valSoilmoistureAvg_tmp / soilmoistureAvgSampleCount;
// reset everything
valSoilmoistureAvg_tmp = 0;
valSoilmoistureAvg_count = 0;
}
} }
void displayScreens() { void displayScreens() {
@ -555,8 +499,7 @@ void displayScreens() {
display.println("s"); display.println("s");
} else { } else {
// in this switch case the single screens gets defined // in this switch case the single screens gets defined
//switch(ScreenToDisplay) { switch(ScreenToDisplay) {
switch(0) {
case 0: case 0:
display.print("Humidity: "); display.print("Humidity: ");
display.print(valHumidity); display.print(valHumidity);
@ -568,10 +511,9 @@ void displayScreens() {
display.println(""); display.println("");
display.print("Moisture: "); display.print("Moisture: ");
display.print(valSoilmoisture); display.print(valSoilmoisture);
display.print(" % "); display.println(" %");
display.println(valSoilmoistureAvg);
display.println(""); display.println("");
if(UsePump > 0) { if(UsePump == true) {
display.print("Pump Waterlvl: "); display.print("Pump Waterlvl: ");
switch(valWaterlevel) { switch(valWaterlevel) {
case 0: case 0:
@ -625,128 +567,26 @@ void displayScreens() {
} }
unsigned short growState() {
/* /*
* Pump control * growState()
* *
* Vars: * returns growState as short
* - UsePump (byte)
* - PumpOnTime (byte) in sec
* - SoilmoistureLow (byte) in %
* - PumpLastOn (long) timestamp
* - PumpMode (byte) 1: Pump on every n days, 2: Pump on when Soilmoisture <= SoilmoistureLow, 3: Both
* *
* - PumpIntervalVeg (byte) in days * 1 - vegetation
* - PumpIntervalBloom (byte) in days * 2 - bloom
* 3 - harvest
* *
*/ */
unsigned short state;
void controlPUMP() { if(DayOfGrow > (DaysVeg + DaysBloom ) ) {
byte PumpInterval; state = 3;
} else if(DayOfGrow > DaysVeg ) {
// UsePump true and not in harvest state? state = 2;
// dont water within the first 15 sec after startup } else {
if ( (UsePump > 0) && (growState() < 3) && (millis() > 15000) ) { state = 1;
switch(growState()) {
case 1:
PumpInterval = PumpIntervalVeg;
break;
case 2:
PumpInterval = PumpIntervalBloom;
break;
default:
PumpInterval = 0;
break;
} }
// when PumpOnManuel is true, turn pump on for PumpOnTime seconds return state;
if(PumpOnManual == true) {
if(PumpOnTimePassed < PumpOnTime) {
setOutput(3, 1);
//digitalWrite(PinPUMP, HIGH);
PumpOnTimePassed++;
} else {
PumpOnManual = false;
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
EEPROM.put(237, PumpLastOn);
PumpOnTimePassed = 0;
}
// otherwise check which PumpMode to use
} else {
switch(UsePump) {
case 1:
// when diff of time now and time pumpLastOn is greater then PumpInterval, do some watering (Or manual watering)
if( (timeClient.getEpochTime() - PumpLastOn) >= (PumpInterval) ) { // TODO: * 24 * 60 * 60 PumpInterval
// only water as long PumpOnTime
if(PumpOnTimePassed < PumpOnTime) {
setOutput(3, 1);
//digitalWrite(PinPUMP, HIGH);
PumpOnTimePassed++;
} else {
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
PumpLastOn = timeClient.getEpochTime();
// write the value to EEPROM for the case ESP gets restarted
EEPROM.put(237, PumpLastOn);
PumpOnTimePassed = 0;
}
} else {
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
}
break;
case 2:
// when valSoilmoistureAvg is lower then SoilMoisture low do some watering
if( (valSoilmoistureAvg < SoilmoistureLow) || ( (valSoilmoistureAvg >= SoilmoistureLow) && ( (PumpOnTimePassed > 0) && (PumpOnTimePassed <= PumpOnTime) ) ) ) {
// check if we alerady exceeded max PumpOnTime
if(PumpOnTimePassed < PumpOnTime) {
setOutput(3, 1);
//digitalWrite(PinPUMP, HIGH);
PumpOnTimePassed++;
} else {
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
PumpLastOn = timeClient.getEpochTime();
PumpOnTimePassed = 0;
}
// when valSoilmoistureAvg is greater then the Low value,
} else {
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
}
break;
//
case 3:
if( ( (timeClient.getEpochTime() - PumpLastOn) >= (PumpInterval) ) && //TODO calculate PumpInterval into days as well here
( (valSoilmoistureAvg < SoilmoistureLow) ||
( (valSoilmoistureAvg >= SoilmoistureLow) && ( (PumpOnTimePassed > 0) && (PumpOnTimePassed <= PumpOnTime) ) )
) ) {
// check if we alerady exceeded max PumpOnTime
if(PumpOnTimePassed < PumpOnTime) {
setOutput(3, 1);
//digitalWrite(PinPUMP, HIGH);
PumpOnTimePassed++;
} else {
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
PumpLastOn = timeClient.getEpochTime();
EEPROM.put(237, PumpLastOn);
PumpOnTimePassed = 0;
}
// when valSoilmoistureAvg is greater then the Low value,
} else {
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
}
break;
}
}
} else {
// ensure pump is off when it should be off
setOutput(3, 0);
//digitalWrite(PinPUMP, LOW);
}
} }

View file

@ -1,5 +1,5 @@
/* CanGrow_Version.h gets generated from cangrow.sh */ /* CanGrow_Version.h gets generated from cangrow.sh */
const char* CanGrowVer = "0.1-dev"; const char* CanGrowVer = "0.1-dev";
const char* CanGrowBuild = "d2e264d-20240919022041"; const char* CanGrowBuild = "72bb58c";

View file

@ -180,17 +180,23 @@ void SysRestart() {
void SysWipe() { void SysWipe() {
String body = returnHTMLheader(); String body = returnHTMLheader();
// TODO only debug and development solution, remove this later
if(webserver.hasArg("confirmed")) {
body += "<div class='warnmsg'><h2>!! Wiping CanGrow's EEPROM !!</h2><br>Device will restart in a few seconds.<br>After restart a new WiFi 'CanGrow-unconfigured' will be created. To access the WebUI visit <a href='http://192.168.4.20'>http://192.168.4.20</a></div>";
body += FPSTR(HTMLfooter);
webserver.send(200, "text/html", body);
wipeEEPROM();
} else {
body += "<h1>&#10071;&#10071; Wiping EEPROM</h1>"; body += "<h1>&#10071;&#10071; Wiping EEPROM</h1>";
body += "<div class='warnmsg'>All settings will be removed!!<br>"; body += "<div class='warnmsg'>All settings will be removed!!<br>";
body += "<br>Please confirm wiping the EEPROM"; body += "<br>Please confirm wiping the EEPROM";
body += "<form action='/system/wipeConfirm' method='post'><br>Please confirm: <input type='checkbox' id='confirm' name='confirm' required /><br><input type='submit' value='Confirm wiping' /></form>"; body += "<form action='/system/wipe'><input type='hidden' name='confirmed' value='true' /><input type='submit' value='Confirm wiping' /></form>";
body += "</div>"; body += "</div>";
body += FPSTR(HTMLfooter); body += FPSTR(HTMLfooter);
webserver.send(200, "text/html", body); webserver.send(200, "text/html", body);
}
} }
void Sys404() { void Sys404() {
String body = returnHTMLheader(); String body = returnHTMLheader();
body += "<div class='warnmsg'><h1>&#10071; &#65039; 404 - not found</h1></div>"; body += "<div class='warnmsg'><h1>&#10071; &#65039; 404 - not found</h1></div>";
@ -362,11 +368,11 @@ void WEBroot() {
body += "&#x1F33C; bloom<br>\n"; body += "&#x1F33C; bloom<br>\n";
break; break;
case 3: case 3:
body += "&#x1F342; harvest\n"; body += "&#x1F342; harvest<br>\n";
break; break;
} }
if(UsePump > 0) { if(UsePump == true) {
body += "<b>Pump water level:</b> "; body += "<b>Pump water level:</b> ";
switch(getWaterlevel()) { switch(getWaterlevel()) {
case 0: case 0:
@ -466,19 +472,19 @@ void WEBgrowSettings() {
body += "Vegetation duration: <input class='inputShort' type='number' name='DaysVeg' min='0' max='255' value='"; body += "Vegetation duration: <input class='inputShort' type='number' name='DaysVeg' min='0' max='255' value='";
body += DaysVeg; body += DaysVeg;
body+= "' required>days<br>\n"; body+= "' required>Days<br>\n";
body += "Bloom duration: <input class='inputShort' type='number' name='DaysBloom' min='0' max='255' value='"; body += "Bloom duration: <input class='inputShort' type='number' name='DaysBloom' min='0' max='255' value='";
body += DaysBloom; body += DaysBloom;
body+= "' required> days<br>\n"; body+= "' required> Days<br>\n";
body += "Time LED ON vegetation: <input class='inputShort' type='number' name='LighthoursVeg' min='0' max='255' value='"; body += "Time LED ON vegetation: <input class='inputShort' type='number' name='LighthoursVeg' min='0' max='255' value='";
body += LighthoursVeg; body += LighthoursVeg;
body+= "' required> hours<br>\n"; body+= "' required> Hours<br>\n";
body += "Time LED ON bloom: <input class='inputShort' type='number' name='LighthoursBloom' min='0' max='255' value='"; body += "Time LED ON bloom: <input class='inputShort' type='number' name='LighthoursBloom' min='0' max='255' value='";
body += LighthoursBloom; body += LighthoursBloom;
body+= "' required> hours<br>\n"; body+= "' required> Hours<br>\n";
body += "Sunrise: <input class='inputShort' type='number' name='SunriseHour' min='0' max='23' value='"; body += "Sunrise: <input class='inputShort' type='number' name='SunriseHour' min='0' max='23' value='";
body += SunriseHour; body += SunriseHour;
@ -509,20 +515,6 @@ void WEBgrowSettings() {
body += "'/> %<br>\n"; body += "'/> %<br>\n";
} }
body += "Pump interval vegetation: every <input class='inputShort' type='number' name='PumpIntervalVeg' min='0' max='255' value='";
body += PumpIntervalVeg;
body += "' required ";
if( (UsePump != 1) && UsePump != 3) { body += "readonly"; }
body += "> days<br>\n";
body += "Pump interval bloom: every <input class='inputShort' type='number' name='PumpIntervalBloom' min='0' max='255' value='";
body += PumpIntervalBloom;
body += "' required ";
if((UsePump != 1) && (UsePump != 3)) { body += "readonly"; }
body += "> days<br>\n";
body += "<input type='submit' value='&#x1F4BE; Save settings'>\n"; body += "<input type='submit' value='&#x1F4BE; Save settings'>\n";
body += "</form>\n"; body += "</form>\n";
body += FPSTR(JSconvertDateToEpoch); body += FPSTR(JSconvertDateToEpoch);
@ -559,31 +551,18 @@ void WEBsystemSettings() {
body += "<form method='post' action='/systemSettings/save'>\n"; body += "<form method='post' action='/systemSettings/save'>\n";
// UseFan bool // UseFan bool
body += "Fan mode: <select id='UseFan' name='UseFan' required>\n"; body += "Use FAN: <select id='UseFan' name='UseFan' required>\n";
if(configured == false){body += "<option disabled value='' selected hidden>---</option>\n";} if(configured == false){body += "<option disabled value='' selected hidden>---</option>\n";}
body += "<option value='1'" + returnStrSelected(UseFan, 0) + ">Off</option>\n"; body += "<option value='1'" + returnStrSelected(UseFan, 1) + ">Yes</option>\n";
body += "<option value='1'" + returnStrSelected(UseFan, 1) + ">Use</option>\n"; body += "<option value='0'" + returnStrSelected(UseFan, 0) + ">No</option>\n";
body += "<option value='0'" + returnStrSelected(UseFan, 2) + ">Do not use</option>\n";
body += "</select><br>\n"; body += "</select><br>\n";
/*
// UsePump bool // UsePump bool
body += "Use PUMP: <select id='UsePump' name='UsePump' required>\n"; body += "Use PUMP: <select id='UsePump' name='UsePump' required>\n";
if(configured == false){body += "<option disabled value='' selected hidden>---</option>\n";} if(configured == false){body += "<option disabled value='' selected hidden>---</option>\n";}
body += "<option value='1'" + returnStrSelected(UsePump, 1) + ">Yes</option>\n"; body += "<option value='1'" + returnStrSelected(UsePump, 1) + ">Yes</option>\n";
body += "<option value='0'" + returnStrSelected(UsePump, 0) + ">No</option>\n"; body += "<option value='0'" + returnStrSelected(UsePump, 0) + ">No</option>\n";
body += "</select><br>\n"; body += "</select><br>\n";
*/
// PumpMode byte
body += "Pump mode: <select id='UsePump' name='UsePump' required>\n";
if(configured == false){body += "<option disabled value='' selected hidden>---</option>\n";}
body += "<option value='0'" + returnStrSelected(UsePump, 0) + ">Off</option>\n";
body += "<option value='1'" + returnStrSelected(UsePump, 1) + ">1</option>\n";
body += "<option value='2'" + returnStrSelected(UsePump, 2) + ">2</option>\n";
body += "<option value='3'" + returnStrSelected(UsePump, 3) + ">3</option>\n";
body += "</select><br><p class='helpbox'><b>1:</b> Water every few days.<br> \
<b>2:</b> Water if the soil moisture falls below <i>Soilmoisture low</i> value<br> \
<b>3:</b> Water every few days if the soil moisture falls below <i>Soilmoisture low</i> value.</p>\n";
// UseLEDrelais bool // UseLEDrelais bool
body += "Use relais for LED: <select id='UseLEDrelais' name='UseLEDrelais' required>\n"; body += "Use relais for LED: <select id='UseLEDrelais' name='UseLEDrelais' required>\n";
@ -601,11 +580,10 @@ void WEBsystemSettings() {
// TODO ugly. can this done be better? // TODO ugly. can this done be better?
// PumpOnTime int // PumpOnTime int
body += "Pump ON time: <input class='inputShort' type='number' name='PumpOnTime' min='0' max='255' value='"; body += "PUMP ON time: <input class='inputShort' type='number' name='PumpOnTime' min='0' max='255' value='";
body += PumpOnTime; body += PumpOnTime;
body += "' required> Seconds<br>\n"; body += "' required> Seconds<br>\n";
// MoistureSensor_Type byte // MoistureSensor_Type byte
body += "Soilmoisture sensor: <select id='MoistureSensor_Type' name='MoistureSensor_Type' required>\n"; body += "Soilmoisture sensor: <select id='MoistureSensor_Type' name='MoistureSensor_Type' required>\n";
if(configured == false) { if(configured == false) {
@ -763,8 +741,6 @@ void POSTgrowSettings() {
SunriseMinute = webserver.arg("SunriseMinute").toInt(); SunriseMinute = webserver.arg("SunriseMinute").toInt();
SunFade = webserver.arg("SunFade").toInt(); SunFade = webserver.arg("SunFade").toInt();
SunFadeDuration = webserver.arg("SunFadeDuration").toInt(); SunFadeDuration = webserver.arg("SunFadeDuration").toInt();
PumpIntervalVeg = webserver.arg("PumpIntervalVeg").toInt();
PumpIntervalBloom = webserver.arg("PumpIntervalBloom").toInt();
// size is 32 byte // size is 32 byte
EEPROM.put(170, GrowName); EEPROM.put(170, GrowName);
@ -788,10 +764,6 @@ void POSTgrowSettings() {
EEPROM.put(216, PinFANPWM); EEPROM.put(216, PinFANPWM);
EEPROM.put(217, SunFade); EEPROM.put(217, SunFade);
EEPROM.put(218, SunFadeDuration); EEPROM.put(218, SunFadeDuration);
// size is 1 byte
EEPROM.put(241, PumpIntervalVeg);
// size is 1 byte
EEPROM.put(242, PumpIntervalBloom);
EEPROM.commit(); EEPROM.commit();
@ -1020,27 +992,6 @@ void POSTsetOutput() {
} }
void POSTsetPumpManual() {
PumpOnManual = webserver.arg("PumpOnManual").toInt();
webserver.sendHeader("Location", String("/?success"), true);
webserver.send(302, "text/plain", "switch: success!\n");
}
void POSTwipeConfirm() {
String body = returnHTMLheader();
// TODO only debug and development solution, remove this later
String confirm = webserver.arg("confirm");
if(confirm == "on") {
body += "<div class='warnmsg'><h2>!! Wiping CanGrow's EEPROM !!</h2><br>Device will restart in a few seconds.<br>After restart a new WiFi 'CanGrow-unconfigured' will be created. To access the WebUI visit <a href='http://192.168.4.20'>http://192.168.4.20</a></div>";
body += FPSTR(HTMLfooter);
webserver.send(200, "text/html", body);
wipeEEPROM();
} else {
webserver.send(400, "text/html", String("Error, 'confirm' missing nor wrong"));
}
}
/* /*
* API section * API section
@ -1053,7 +1004,6 @@ void APIgetSensors() {
JsonDocument jsonSensors; JsonDocument jsonSensors;
jsonSensors["soilmoisture"] = valSoilmoisture; jsonSensors["soilmoisture"] = valSoilmoisture;
jsonSensors["soilmoistureAvg"] = valSoilmoistureAvg;
jsonSensors["temperature"] = valTemperature; jsonSensors["temperature"] = valTemperature;
jsonSensors["humidity"] = valHumidity; jsonSensors["humidity"] = valHumidity;
jsonSensors["waterlevel"] = valWaterlevel; jsonSensors["waterlevel"] = valWaterlevel;
@ -1068,13 +1018,6 @@ void APIgetDebug() {
JsonDocument jsonDebug; JsonDocument jsonDebug;
// Runtime vars
JsonObject objRuntime = jsonDebug["runtime"].add<JsonObject>();
objRuntime["PumpOnTimePassed"] = PumpOnTimePassed;
objRuntime["PumpOnManual"] = PumpOnManual;
objRuntime["valSoilmoistureAvg"] = valSoilmoistureAvg;
objRuntime["valSoilmoistureAvg_tmp"] = valSoilmoistureAvg_tmp;
objRuntime["valSoilmoistureAvg_count"] = valSoilmoistureAvg_count;
// WiFi // WiFi
JsonObject objWiFi = jsonDebug["wifi"].add<JsonObject>(); JsonObject objWiFi = jsonDebug["wifi"].add<JsonObject>();
@ -1097,8 +1040,6 @@ void APIgetDebug() {
objSystem["TemperatureSensor_Type"] = TemperatureSensor_Type; objSystem["TemperatureSensor_Type"] = TemperatureSensor_Type;
objSystem["NtpOffset"] = NtpOffset; objSystem["NtpOffset"] = NtpOffset;
objSystem["MaintenanceDuration"] = MaintenanceDuration; objSystem["MaintenanceDuration"] = MaintenanceDuration;
objSystem["PumpOnTime"] = PumpOnTime;
objSystem["PumpLastOn"] = PumpLastOn;
// Grow // Grow
JsonObject objGrow = jsonDebug["grow"].add<JsonObject>(); JsonObject objGrow = jsonDebug["grow"].add<JsonObject>();
@ -1116,8 +1057,7 @@ void APIgetDebug() {
objGrow["PinLEDPWM"] = PinLEDPWM; objGrow["PinLEDPWM"] = PinLEDPWM;
objGrow["PinFANPWM"] = PinFANPWM; objGrow["PinFANPWM"] = PinFANPWM;
objGrow["DayOfGrow"] = DayOfGrow; objGrow["DayOfGrow"] = DayOfGrow;
objGrow["PumpIntervalVeg"] = PumpIntervalVeg;
objGrow["PumpIntervalBloom"] = PumpIntervalBloom;
// Sensors // Sensors
@ -1186,8 +1126,6 @@ void WebHandler() {
webserver.on("/system/restart", HTTP_GET, SysRestart); webserver.on("/system/restart", HTTP_GET, SysRestart);
// wipe eeprom triggered from WebGui // wipe eeprom triggered from WebGui
webserver.on("/system/wipe", HTTP_GET, SysWipe); webserver.on("/system/wipe", HTTP_GET, SysWipe);
// confirm wiping the device
webserver.on("/system/wipeConfirm", HTTP_POST, POSTwipeConfirm);
// Maintenance mode // Maintenance mode
webserver.on("/system/maintenance", HTTP_GET, SysMaintenance); webserver.on("/system/maintenance", HTTP_GET, SysMaintenance);
// system update with binary // system update with binary
@ -1206,7 +1144,6 @@ void WebHandler() {
// switching MOSFETs // switching MOSFETs
webserver.on("/switch", HTTP_POST, POSTsetOutput); webserver.on("/switch", HTTP_POST, POSTsetOutput);
webserver.on("/pumpManual", HTTP_POST, POSTsetPumpManual);
// api stuff // api stuff
webserver.on("/api/sensors", HTTP_GET, APIgetSensors); webserver.on("/api/sensors", HTTP_GET, APIgetSensors);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

After

Width:  |  Height:  |  Size: 60 KiB

File diff suppressed because it is too large Load diff

View file

@ -37,9 +37,9 @@
"other_text_thickness": 0.15, "other_text_thickness": 0.15,
"other_text_upright": false, "other_text_upright": false,
"pads": { "pads": {
"drill": 0.8, "drill": 1.1,
"height": 1.6, "height": 2.1,
"width": 1.6 "width": 2.1
}, },
"silk_line_width": 0.1, "silk_line_width": 0.1,
"silk_text_italic": false, "silk_text_italic": false,
@ -79,7 +79,6 @@
"footprint_type_mismatch": "ignore", "footprint_type_mismatch": "ignore",
"hole_clearance": "error", "hole_clearance": "error",
"hole_near_hole": "error", "hole_near_hole": "error",
"holes_co_located": "warning",
"invalid_outline": "error", "invalid_outline": "error",
"isolated_copper": "warning", "isolated_copper": "warning",
"item_on_disabled_layer": "error", "item_on_disabled_layer": "error",
@ -492,7 +491,6 @@
}, },
"schematic": { "schematic": {
"annotate_start_num": 0, "annotate_start_num": 0,
"bom_export_filename": "",
"bom_fmt_presets": [], "bom_fmt_presets": [],
"bom_fmt_settings": { "bom_fmt_settings": {
"field_delimiter": ",", "field_delimiter": ",",
@ -592,7 +590,7 @@
"sheets": [ "sheets": [
[ [
"42428fce-ab8c-4a80-af19-dee4f0070d36", "42428fce-ab8c-4a80-af19-dee4f0070d36",
"Root" "Stammblatt"
] ]
], ],
"text_variables": {} "text_variables": {}

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

View file

@ -1,152 +0,0 @@
(footprint "CanGrow-SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm_0.8mm"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "Soldered wire connection, for a single 0.1 mm² wire, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator")
(tags "connector wire 0.1sqmm")
(property "Reference" "VCC3.3"
(at 0 -2 0)
(layer "F.SilkS")
(uuid "3ed91354-25bd-4e84-bfb7-188fd65fc8e9")
(effects
(font
(size 0.8 0.8)
(thickness 0.1)
)
)
)
(property "Value" "SolderWire"
(at 0 2 0)
(layer "F.Fab")
(uuid "706134de-5a43-4b0f-a24a-fc10492bb447")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" "Connector_Wire:SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "3ad71b9a-27a6-4a0e-bdb9-5be60a26b692")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "dddc3c2c-a4fc-463d-90ad-f465505d4a51")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "ec7bec08-cf6f-41d0-9924-f484b7198917")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr exclude_from_pos_files exclude_from_bom)
(fp_line
(start -1.3 -1.3)
(end -1.3 1.3)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "e690fe82-f99d-4c33-9eaa-df5fd9925bf4")
)
(fp_line
(start -1.3 1.3)
(end 1.3 1.3)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "de44eeda-4e8f-4e38-ab31-bc2514ca1c52")
)
(fp_line
(start 1.3 -1.3)
(end -1.3 -1.3)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "a58f350b-223a-4a2b-b385-7221f51f4b68")
)
(fp_line
(start 1.3 1.3)
(end 1.3 -1.3)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "3fa8882e-d3e5-49d9-8ba4-cec9106635a2")
)
(fp_circle
(center 0 0)
(end 0.5 0)
(stroke
(width 0.1)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "fc8bd121-be08-4d5a-8538-8d1003ba0cd8")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "dbe65801-e081-4887-bdbd-f547de25cfc2")
(effects
(font
(size 0.25 0.25)
(thickness 0.04)
)
)
)
(pad "1" thru_hole roundrect
(at 0 0)
(size 1.6 1.6)
(drill 0.8)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(roundrect_rratio 0.15625)
(uuid "84abadc5-3aca-4364-bb7c-4e5aca89770a")
)
(model "${KICAD8_3DMODEL_DIR}/Connector_Wire.3dshapes/SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm.wrl"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -7,7 +7,6 @@
(property "Reference" "U3" (property "Reference" "U3"
(at 0 7.3152 180) (at 0 7.3152 180)
(layer "F.SilkS") (layer "F.SilkS")
(hide yes)
(uuid "5401f2b9-08c4-433b-a536-95365a9d5b27") (uuid "5401f2b9-08c4-433b-a536-95365a9d5b27")
(effects (effects
(font (font
@ -19,7 +18,6 @@
(property "Value" "SRT_Power_3A" (property "Value" "SRT_Power_3A"
(at -0.3556 5.1816 0) (at -0.3556 5.1816 0)
(layer "F.Fab") (layer "F.Fab")
(hide yes)
(uuid "3aca6114-af0d-478b-80ab-52d5719c58c0") (uuid "3aca6114-af0d-478b-80ab-52d5719c58c0")
(effects (effects
(font (font
@ -37,7 +35,6 @@
(effects (effects
(font (font
(size 1.27 1.27) (size 1.27 1.27)
(thickness 0.15)
) )
) )
) )
@ -50,7 +47,6 @@
(effects (effects
(font (font
(size 1.27 1.27) (size 1.27 1.27)
(thickness 0.15)
) )
) )
) )
@ -63,288 +59,287 @@
(effects (effects
(font (font
(size 1.27 1.27) (size 1.27 1.27)
(thickness 0.15)
) )
) )
) )
(attr through_hole) (attr through_hole)
(fp_line (fp_line
(start -10.2122 -6.0076) (start -11.176 -7.493)
(end -10.2122 10.1214) (end -11.176 8.636)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "6292f9f0-b20e-4f1e-990a-0b11f0bae5e2") (uuid "c04c845e-4b76-4dc5-b3a1-2129724a526d")
) )
(fp_line (fp_line
(start -10.2122 10.1214) (start -11.176 8.636)
(end 11.1238 10.1214) (end 10.16 8.636)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "7b8db049-a75b-4c09-b1c9-de8a147005c4") (uuid "b279bc16-0fa3-40ad-9a71-246db78cd5db")
) )
(fp_line (fp_line
(start -6.453 -0.3942) (start -7.4168 -1.8796)
(end -0.357 -0.3942) (end -1.3208 -1.8796)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "c4ed20b9-5f3d-4741-9180-be3de36b2638") (uuid "1cc5b0bc-c494-4f7d-bca7-4c61a9317e88")
) )
(fp_line (fp_line
(start -6.453 4.0762) (start -7.4168 2.5908)
(end -6.453 -0.3942) (end -7.4168 -1.8796)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "d7e1ea82-a28a-4e4c-8051-86a68fea340c") (uuid "cb93a75e-f00e-4ada-977c-4ebffb53a1ef")
) )
(fp_line (fp_line
(start -5.3354 -4.2804) (start -6.2992 -5.7658)
(end -1.9064 -4.2804) (end -2.8702 -5.7658)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "06328989-1b0f-46d7-883b-033109387c94") (uuid "58d4cb4b-5a3f-4493-aa99-0deaf5683749")
) )
(fp_line (fp_line
(start -5.3354 -3.0104) (start -6.2992 -4.4958)
(end -5.3354 -4.2804) (end -6.2992 -5.7658)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "8d77e0eb-1044-47c3-83fb-eeb0a96fae5d") (uuid "23c244a5-fbbf-43b9-8e18-3f2c2f80daac")
) )
(fp_line (fp_line
(start -1.9064 -4.2804) (start -2.8702 -5.7658)
(end -1.9064 -3.0104) (end -2.8702 -4.4958)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "aacf448e-591d-467e-9b05-308beed279bf") (uuid "dc18e288-f18f-43b9-8bf9-a20134e8fe6b")
) )
(fp_line (fp_line
(start -1.9064 -3.0104) (start -2.8702 -4.4958)
(end -5.3354 -3.0104) (end -6.2992 -4.4958)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "1a4d146d-43a7-4082-9120-8896a6302895") (uuid "0db4cf0f-ac7a-4c9b-ae10-55a36ddbd4e4")
) )
(fp_line (fp_line
(start -0.357 4.0762) (start -1.3208 2.5908)
(end -6.453 4.0762) (end -7.4168 2.5908)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "28f1cc66-eb55-47b0-8a8f-d7e1518711f4") (uuid "bb094c9b-9d8c-4f38-83ed-01fc7944b9a1")
) )
(fp_line (fp_line
(start -0.357 4.0762) (start -1.3208 2.5908)
(end -0.357 -0.3942) (end -1.3208 -1.8796)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "6820cfba-dad3-4b8f-888f-85dbe2540377") (uuid "15406a1c-aa60-4574-94bc-bc7b1c93f995")
) )
(fp_line (fp_line
(start 1.3194 -1.969) (start 0.3556 -3.4544)
(end 1.3194 4.6858) (end 0.3556 3.2004)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "6a862895-3bf4-4887-9dab-db5334a221bc") (uuid "7f056460-3325-494e-89b7-e00faf35b853")
) )
(fp_line (fp_line
(start 1.3194 -1.969) (start 0.3556 -3.4544)
(end 7.9742 -1.969) (end 7.0104 -3.4544)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "79debc5c-9a35-496c-8f29-014030f144a4") (uuid "fb81112c-7565-47b2-8682-db2abbd3ddf0")
) )
(fp_line (fp_line
(start 2.8942 0.8885) (start 1.9304 -0.5969)
(end 5.5231 0.8885) (end 4.5593 -0.5969)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "84cd7a4d-d683-4fbc-825f-665c5b0f0758") (uuid "48533810-e56f-47c8-8bce-ce1c68dc9c75")
) )
(fp_line (fp_line
(start 2.8942 1.5235) (start 1.9304 0.0381)
(end 2.8942 0.8885) (end 1.9304 -0.5969)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "4e52b40e-83c8-4d07-95ff-b90fa1783618") (uuid "03a589e3-a74e-4336-8cad-43118c287e8a")
) )
(fp_line (fp_line
(start 2.8942 1.5235) (start 1.9304 0.0381)
(end 5.5231 1.5235) (end 4.5593 0.0381)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "a399ee1e-f3f5-4636-9f46-aa9b47e0db94") (uuid "ce0e1e31-1518-4423-8678-79c96482e137")
) )
(fp_line (fp_line
(start 5.5231 0.19) (start 4.5593 -1.2954)
(end 6.7931 1.206) (end 5.8293 -0.2794)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "974ab6af-0377-40af-977c-a13764cf3b42") (uuid "60031373-aa96-4773-880b-c8200b9c8446")
) )
(fp_line (fp_line
(start 5.5231 0.8885) (start 4.5593 -0.5969)
(end 5.5231 0.19) (end 4.5593 -1.2954)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "a43ae26f-5b7d-4a6a-a076-714c678ef718") (uuid "e8ee4f92-28ab-4a33-a9f9-a6abaf63c07f")
) )
(fp_line (fp_line
(start 5.5231 2.2855) (start 4.5593 0.8001)
(end 5.5231 1.5235) (end 4.5593 0.0381)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "cc8ed141-1479-47bc-b57c-ac3d7de64f29") (uuid "08acbb33-d7a2-40ec-b9c7-e1637e3c6b50")
) )
(fp_line (fp_line
(start 6.7931 1.206) (start 5.8293 -0.2794)
(end 5.5231 2.2855) (end 4.5593 0.8001)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "59d9abe5-a32f-469b-9fd6-08593b95afde") (uuid "93934ce2-e724-43a7-936d-d5b13ecab734")
) )
(fp_line (fp_line
(start 7.9742 -1.969) (start 7.0104 -3.4544)
(end 7.9742 4.6858) (end 7.0104 3.2004)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "73f5a41f-61af-42a7-bacf-c58d7968f53a") (uuid "67302b70-b929-4d08-9b20-00ad993d7c48")
) )
(fp_line (fp_line
(start 7.9742 4.6858) (start 7.0104 3.2004)
(end 1.3194 4.6858) (end 0.3556 3.2004)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "9ec91a9f-ceda-4f7c-b422-f6a162037a63") (uuid "0718d059-35cf-4406-ab64-7d7e6d83cf21")
) )
(fp_line (fp_line
(start 11.1238 -6.0076) (start 10.16 -7.493)
(end -10.2122 -6.0076) (end -11.176 -7.493)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "ed6fa262-c61a-4bb7-90b5-f3b3ee971658") (uuid "3f15543c-c79e-44be-a583-62309e7f62ac")
) )
(fp_line (fp_line
(start 11.1238 10.1214) (start 10.16 8.636)
(end 11.1238 -6.0076) (end 10.16 -7.493)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "0251e69d-8ab4-482d-b741-3238b0fef811") (uuid "53974b4e-f4fd-4a51-b72c-09e66d707da7")
) )
(fp_circle (fp_circle
(center -7.1896 -3.3787) (center -8.1534 -4.8641)
(end -6.6181 -2.8707) (end -7.5819 -4.3561)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "55702fe3-b28e-4e80-86d3-f64c403681d1") (uuid "c9f36fdc-7af5-40c1-b400-6db31e87c78d")
) )
(fp_circle (fp_circle
(center -7.1388 7.302) (center -8.1026 5.8166)
(end -6.5673 7.81) (end -7.5311 6.3246)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "0ffe4b1a-c314-4a3c-8456-b73925f03b28") (uuid "4e0da6f8-ad5e-4cc1-95ba-014ff87aee07")
) )
(fp_circle (fp_circle
(center 7.39 -3.3787) (center 6.4262 -4.8641)
(end 7.9615 -2.8707) (end 6.9977 -4.3561)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "82347fd5-ab01-478d-bf06-2837edd3b9c5") (uuid "1cb73701-38be-459b-a7c5-86d645c4cc0e")
) )
(fp_circle (fp_circle
(center 7.4916 7.2766) (center 6.5278 5.7912)
(end 8.0631 7.7846) (end 7.0993 6.2992)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "f74d6220-edbd-4a39-a810-7cf19016933f") (uuid "079e6cb8-ca9e-47a7-9f22-9f08bcf4c5ee")
) )
(fp_poly (fp_poly
(pts (pts
(xy -5.7418 -1.0546) (xy -5.3354 -1.0546) (xy -5.3354 -0.445) (xy -5.7418 -0.445) (xy -6.7056 -2.54) (xy -6.2992 -2.54) (xy -6.2992 -1.9304) (xy -6.7056 -1.9304)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -352,11 +347,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "80ff133a-8874-4f0a-8c9e-250633a8855a") (uuid "9f932498-4dae-4e35-9fff-b4bb98c73816")
) )
(fp_poly (fp_poly
(pts (pts
(xy -5.7418 4.127) (xy -5.3354 4.127) (xy -5.3354 4.7366) (xy -5.7418 4.7366) (xy -6.7056 2.6416) (xy -6.2992 2.6416) (xy -6.2992 3.2512) (xy -6.7056 3.2512)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -364,11 +359,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "6e08c3a4-3092-400f-9a55-4e8081226741") (uuid "372c02f5-61f4-4301-aca3-d818a674272e")
) )
(fp_poly (fp_poly
(pts (pts
(xy -4.2686 -1.0546) (xy -3.8622 -1.0546) (xy -3.8622 -0.445) (xy -4.2686 -0.445) (xy -5.2324 -2.54) (xy -4.826 -2.54) (xy -4.826 -1.9304) (xy -5.2324 -1.9304)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -376,11 +371,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "6a96c3fa-8827-498f-9c6c-ffb212b62a93") (uuid "8b8d18d4-2701-4c72-966d-f580819a5bea")
) )
(fp_poly (fp_poly
(pts (pts
(xy -4.2686 4.127) (xy -3.8622 4.127) (xy -3.8622 4.7366) (xy -4.2686 4.7366) (xy -5.2324 2.6416) (xy -4.826 2.6416) (xy -4.826 3.2512) (xy -5.2324 3.2512)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -388,11 +383,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "0886a33b-f340-44bf-9de5-f44938efcb54") (uuid "d6255dee-580f-4b85-9e3c-df858fc7bc8d")
) )
(fp_poly (fp_poly
(pts (pts
(xy -2.7954 -1.0546) (xy -2.389 -1.0546) (xy -2.389 -0.445) (xy -2.7954 -0.445) (xy -3.7592 -2.54) (xy -3.3528 -2.54) (xy -3.3528 -1.9304) (xy -3.7592 -1.9304)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -400,11 +395,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "51e3d89a-8455-4f58-ad05-c15d024e9c54") (uuid "ebef6c64-7266-47b4-9a64-d9d611adc26d")
) )
(fp_poly (fp_poly
(pts (pts
(xy -2.7954 4.127) (xy -2.389 4.127) (xy -2.389 4.7366) (xy -2.7954 4.7366) (xy -3.7592 2.6416) (xy -3.3528 2.6416) (xy -3.3528 3.2512) (xy -3.7592 3.2512)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -412,11 +407,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "5514ba93-c636-4e40-855a-d8123eaad1aa") (uuid "59be5a8f-ac87-4541-97df-321cb1234c4f")
) )
(fp_poly (fp_poly
(pts (pts
(xy -1.2714 -1.0546) (xy -0.865 -1.0546) (xy -0.865 -0.445) (xy -1.2714 -0.445) (xy -2.2352 -2.54) (xy -1.8288 -2.54) (xy -1.8288 -1.9304) (xy -2.2352 -1.9304)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -424,11 +419,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "d6b9bc27-cda7-4d8b-ad26-7b36a48ecfbd") (uuid "b1663dd5-c63f-4034-b29b-537f9a6abd47")
) )
(fp_poly (fp_poly
(pts (pts
(xy -1.2714 4.127) (xy -0.865 4.127) (xy -0.865 4.7366) (xy -1.2714 4.7366) (xy -2.2352 2.6416) (xy -1.8288 2.6416) (xy -1.8288 3.2512) (xy -2.2352 3.2512)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -436,52 +431,52 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "3fef23e2-4bcd-4924-97f4-7575ce7994b1") (uuid "6e5990fc-9a52-480e-b640-cabfc2a6cd18")
) )
(fp_line (fp_line
(start -10.39 -6.16) (start -11.3538 -7.6454)
(end -10.39 10.2992) (end -11.3538 8.8138)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "bc1192d1-b770-4e65-bd6d-2beed31fb275") (uuid "e21c3eb0-fdf3-4a2d-9d84-f366a7426b90")
) )
(fp_line (fp_line
(start -10.39 -6.16) (start -11.3538 -7.6454)
(end 11.3016 -6.1854) (end 10.3378 -7.6708)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "ac2ec45c-be62-4db0-88df-ef12d1f24714") (uuid "f2231139-582f-43f7-a92f-646e424ad044")
) )
(fp_line (fp_line
(start -10.39 10.2992) (start -11.3538 8.8138)
(end 11.3016 10.2992) (end 10.3378 8.8138)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "90a38e33-4119-4758-ac3b-323f8c73139c") (uuid "ff2d64a2-f244-4e27-a61c-b0184f18f038")
) )
(fp_line (fp_line
(start 11.3016 -6.1854) (start 10.3378 -7.6708)
(end 11.3016 10.2992) (end 10.3378 8.8138)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "22193204-ae0b-4462-95d6-f226e27ae968") (uuid "e571d0ae-d587-45ad-9b62-7a686b2f0c60")
) )
(fp_text user "-" (fp_text user "-"
(at 7.39 -3.4422 0) (at 6.4262 -4.9276 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "0bec24d9-5468-4c4b-96d3-ef96e25202cf") (uuid "4f88e670-b848-4271-a5f8-bd548b64cadd")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -490,9 +485,9 @@
) )
) )
(fp_text user "-" (fp_text user "-"
(at -7.1896 -3.4422 0) (at -8.1534 -4.9276 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "0c9a77a8-8422-401b-a5a1-b40da4e203c0") (uuid "86dab817-ad16-4cdc-b19d-607ba0d990ab")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -501,9 +496,9 @@
) )
) )
(fp_text user "VOUT" (fp_text user "VOUT"
(at 9.7776 1.5362 -90) (at 8.8138 0.0508 -90)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "3c0d7914-45a5-4bbb-8f5b-40ede46c7d70") (uuid "876b8e16-62cc-4ae3-9c78-14a6cc337309")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -512,9 +507,9 @@
) )
) )
(fp_text user "+" (fp_text user "+"
(at -7.1388 7.2385 0) (at 6.5278 5.7277 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "4145e214-17c8-4e57-9147-ea318329ca66") (uuid "935ff27f-9949-446d-a438-f14c3624acfc")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -523,9 +518,9 @@
) )
) )
(fp_text user "4.5-28V" (fp_text user "4.5-28V"
(at -8.7898 1.7902 -90) (at -9.7536 0.3048 -90)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "9e9858d1-9320-4297-aaee-1e9bd601ead9") (uuid "d89e1384-2d5d-4d2d-bcf8-24657a3939a7")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -534,9 +529,9 @@
) )
) )
(fp_text user "+" (fp_text user "+"
(at 7.4916 7.2131 0) (at -8.1026 5.7531 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "c1d9d6ad-e0e9-47c6-989c-71feb1923647") (uuid "e3820af4-2c8f-4e79-b4d3-6c49dcea8bb5")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -545,68 +540,68 @@
) )
) )
(pad "1" thru_hole rect (pad "1" thru_hole rect
(at -9.1962 6.1704 90) (at -10.16 4.572 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "7be89935-c19e-4baa-904a-69452ec23d23") (uuid "6550b245-c3c7-4898-8573-6476b3094631")
) )
(pad "1" thru_hole rect (pad "1" thru_hole rect
(at -9.1962 8.7104 90) (at -10.16 7.112 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "8f4284a4-3768-4b1e-9962-d551ccf57e63") (uuid "2c55b3c8-f1e1-407a-8b02-310137232038")
) )
(pad "2" thru_hole oval (pad "2" thru_hole oval
(at -9.2216 -2.1976 90) (at -10.1854 -3.683 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "1f87148a-c7c2-483f-b799-2ff5e01ff488") (uuid "6f8804ba-99ab-459b-84ff-3c356b03222a")
) )
(pad "2" thru_hole oval (pad "2" thru_hole oval
(at -9.1962 -4.7376 90) (at -10.16 -6.223 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "bf2458a2-a107-48c3-bb88-9e881f49434c") (uuid "b8ed6aef-b96f-4eb3-a1a2-2deefde02bbb")
) )
(pad "3" thru_hole rect (pad "3" thru_hole rect
(at 9.5998 6.1844 90) (at 8.636 4.699 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "69cb71b1-224d-4fe7-8b14-ee9b1da593fb") (uuid "5892046d-9427-451a-9d67-551089438a5d")
) )
(pad "3" thru_hole rect (pad "3" thru_hole rect
(at 9.5998 8.7244 90) (at 8.636 7.239 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "39b44515-755a-4a18-9e94-5d0b3431f548") (uuid "519792c2-361a-4982-84bb-b0360a514c29")
) )
(pad "4" thru_hole oval (pad "4" thru_hole oval
(at 9.7014 -2.1976 90) (at 8.7376 -3.683 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "6af0a541-44c2-41dc-9c4e-37db310350d6") (uuid "efe9e9b1-891f-4b33-a064-306161845044")
) )
(pad "4" thru_hole oval (pad "4" thru_hole oval
(at 9.7268 -4.7376 90) (at 8.763 -6.223 90)
(size 1.6 1.6) (size 1.6 1.6)
(drill 0.8) (drill 0.8)
(layers "*.Cu" "*.Mask") (layers "*.Cu" "*.Mask")
(remove_unused_layers no) (remove_unused_layers no)
(uuid "204e6602-d630-4983-8e4d-fb59a5c65572") (uuid "16f7d0b3-7073-4c65-a466-c8a09376cdd7")
) )
(model "${KISYS3DMOD}/Module.3dshapes/Arduino_UNO_R2.wrl" (model "${KISYS3DMOD}/Module.3dshapes/Arduino_UNO_R2.wrl"
(offset (offset

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
G04 #@! TF.CreationDate,2024-09-25T02:09:32+02:00* G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00*
G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?* G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?*
G04 #@! TF.SameCoordinates,Original* G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Soldermask,Bot* G04 #@! TF.FileFunction,Soldermask,Bot*
G04 #@! TF.FilePolarity,Negative* G04 #@! TF.FilePolarity,Negative*
%FSLAX46Y46*% %FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32* G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-05 14:32:50*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*
@ -31,358 +31,321 @@ G04 Aperture macros list*
G04 Aperture macros list end* G04 Aperture macros list end*
%ADD10R,1.600000X1.600000*% %ADD10R,1.600000X1.600000*%
%ADD11C,1.600000*% %ADD11C,1.600000*%
%ADD12R,1.800000X1.100000*% %ADD12O,1.600000X1.600000*%
%ADD13RoundRect,0.275000X-0.625000X0.275000X-0.625000X-0.275000X0.625000X-0.275000X0.625000X0.275000X0*% %ADD13R,2.000000X1.905000*%
%ADD14O,1.600000X1.600000*% %ADD14O,2.000000X1.905000*%
%ADD15R,2.000000X1.905000*% %ADD15RoundRect,0.250001X-0.799999X-0.799999X0.799999X-0.799999X0.799999X0.799999X-0.799999X0.799999X0*%
%ADD16O,2.000000X1.905000*% %ADD16R,1.800000X1.800000*%
%ADD17R,1.800000X1.800000*% %ADD17C,1.800000*%
%ADD18C,1.800000*% %ADD18RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*%
%ADD19RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*% %ADD19C,6.000000*%
%ADD20C,6.000000*% %ADD20C,5.600000*%
%ADD21C,5.600000*% %ADD21O,1.800000X1.800000*%
%ADD22O,1.800000X1.800000*% %ADD22O,3.800000X8.000000*%
%ADD23O,3.800000X8.000000*% %ADD23R,1.700000X1.700000*%
%ADD24R,1.700000X1.700000*% %ADD24O,1.700000X1.700000*%
%ADD25O,1.700000X1.700000*% %ADD25R,2.000000X2.000000*%
%ADD26R,2.000000X2.000000*% %ADD26O,2.000000X1.600000*%
%ADD27O,2.000000X1.600000*% %ADD27C,1.100000*%
%ADD28RoundRect,0.250000X-0.550000X-0.550000X0.550000X-0.550000X0.550000X0.550000X-0.550000X0.550000X0*% %ADD28R,1.730000X2.030000*%
%ADD29RoundRect,0.275000X0.625000X-0.275000X0.625000X0.275000X-0.625000X0.275000X-0.625000X-0.275000X0*% %ADD29O,1.730000X2.030000*%
%ADD30C,1.100000*% %ADD30RoundRect,0.250001X0.799999X0.799999X-0.799999X0.799999X-0.799999X-0.799999X0.799999X-0.799999X0*%
%ADD31R,1.730000X2.030000*%
%ADD32O,1.730000X2.030000*%
%ADD33RoundRect,0.250000X0.550000X0.550000X-0.550000X0.550000X-0.550000X-0.550000X0.550000X-0.550000X0*%
G04 APERTURE END LIST* G04 APERTURE END LIST*
D10* D10*
X156600000Y-108750000D03*
D11*
X156600000Y-111250000D03*
D12*
X127400000Y-42690000D03*
D13*
X129470000Y-43960000D03*
X127400000Y-45230000D03*
D11*
X117000000Y-42420000D03*
D14*
X106840000Y-42420000D03*
D15*
X138430000Y-83750000D03*
D16*
X138430000Y-81210000D03*
X138430000Y-78670000D03*
D15*
X129800000Y-35150000D03*
D16*
X129800000Y-32610000D03*
X129800000Y-30070000D03*
D11*
X139900000Y-53320000D03*
D14*
X139900000Y-63480000D03*
D10*
X130748000Y-108846000D03*
X130748000Y-111386000D03*
D14*
X130722600Y-100478000D03*
X130748000Y-97938000D03*
D10*
X149544000Y-108860000D03*
X149544000Y-111400000D03*
D14*
X149645600Y-100478000D03*
X149671000Y-97938000D03*
D11*
X177750000Y-92250000D03*
D14*
X187910000Y-92250000D03*
D17*
X122231000Y-81220000D03*
D18*
X122231000Y-83760000D03*
D19*
X113930000Y-59700000D03*
D20*
X106730000Y-59700000D03*
D17*
X122250000Y-102750000D03*
D18*
X122250000Y-105290000D03*
D11*
X195500000Y-29200000D03*
D14*
X185340000Y-29200000D03*
D12*
X127430000Y-91400000D03*
D13*
X129500000Y-92670000D03*
X127430000Y-93940000D03*
D21*
X87000000Y-22750000D03*
D11*
X116855000Y-69500000D03*
D14*
X106695000Y-69500000D03*
D17*
X106770000Y-87720000D03*
D22*
X116930000Y-87720000D03*
D11*
X133000000Y-94000000D03*
D14*
X133000000Y-83840000D03*
D11*
X195500000Y-52900000D03*
D14*
X185340000Y-52900000D03*
D11*
X198180000Y-71050000D03*
D14*
X188020000Y-71050000D03*
D21*
X203000000Y-22750000D03*
D11*
X139920000Y-66500000D03*
D14*
X150080000Y-66500000D03*
D11*
X116910000Y-100250000D03*
D14*
X106750000Y-100250000D03*
D11*
X153100000Y-78010000D03*
D14*
X153100000Y-67850000D03*
D12*
X121500000Y-69860000D03*
D13*
X123570000Y-71130000D03*
X121500000Y-72400000D03*
D12*
X127400000Y-69860000D03*
D13*
X129470000Y-71130000D03*
X127400000Y-72400000D03*
D23*
X96500000Y-97650000D03*
X96500000Y-106950000D03*
D24*
X195485000Y-60100000D03*
D25*
X192945000Y-60100000D03*
D19*
X113930000Y-81220000D03*
D20*
X106730000Y-81220000D03*
D26*
X150100000Y-27460000D03*
D27*
X150100000Y-30000000D03*
X150100000Y-32540000D03*
X150100000Y-35080000D03*
X150100000Y-37620000D03*
X150100000Y-40160000D03*
X150100000Y-42700000D03*
X150100000Y-45240000D03*
X172960000Y-45240000D03*
X172960000Y-42700000D03*
X172960000Y-40160000D03*
X172960000Y-37620000D03*
X172960000Y-35080000D03*
X172960000Y-32540000D03*
X172960000Y-30000000D03*
X172960000Y-27460000D03*
D24*
X195400000Y-77000000D03*
D25*
X192860000Y-77000000D03*
X190320000Y-77000000D03*
D24*
X195485000Y-38630000D03*
D25*
X192945000Y-38630000D03*
X190405000Y-38630000D03*
X187865000Y-38630000D03*
D28*
X131800000Y-50800000D03*
D17*
X174830000Y-82250000D03*
D22*
X174830000Y-92410000D03*
D17*
X122300000Y-32620000D03*
D18*
X122300000Y-35160000D03*
D24*
X195600000Y-99250000D03*
D25*
X193060000Y-99250000D03*
X190520000Y-99250000D03*
D11*
X101455112Y-94200000D03*
X103955112Y-94200000D03*
D24*
X195490000Y-47890000D03*
D25*
X192950000Y-47890000D03*
X190410000Y-47890000D03*
X187870000Y-47890000D03*
D11*
X133000000Y-45310000D03*
D14*
X133000000Y-35150000D03*
D12*
X138400000Y-45170000D03*
D29*
X136330000Y-43900000D03*
X138400000Y-42630000D03*
D24*
X195485000Y-33980000D03*
D25*
X192945000Y-33980000D03*
X190405000Y-33980000D03*
X187865000Y-33980000D03*
D28*
X156500000Y-67860000D03*
D23*
X96500000Y-42450000D03*
X96500000Y-33150000D03*
X96500000Y-64000000D03*
X96500000Y-54700000D03*
D15*
X129680000Y-62250000D03*
D16*
X129680000Y-59710000D03*
X129680000Y-57170000D03*
D28*
X188000000Y-67900000D03*
D11*
X187670000Y-88250000D03*
D14*
X197830000Y-88250000D03*
D11*
X102500000Y-66200000D03*
X102500000Y-68700000D03*
X116900000Y-95000000D03*
D14*
X106740000Y-95000000D03*
D10*
X101500000Y-90100000D03* X101500000Y-90100000D03*
D11* D11*
X104000000Y-90100000D03* X104000000Y-90100000D03*
X133000000Y-72460000D03* X103955112Y-94200000D03*
X101455112Y-94200000D03*
D10*
X153500000Y-111250000D03*
D11*
X153500000Y-108750000D03*
X123520000Y-88850000D03*
D12*
X133680000Y-88850000D03*
D11*
X117000000Y-42420000D03*
D12*
X106840000Y-42420000D03*
D13*
X138430000Y-83750000D03*
D14* D14*
X133000000Y-62300000D03* X138430000Y-81210000D03*
X138430000Y-78670000D03*
D13*
X129800000Y-35150000D03*
D14*
X129800000Y-32610000D03*
X129800000Y-30070000D03*
D11*
X177750000Y-92250000D03*
D12*
X187910000Y-92250000D03*
D15* D15*
X129680000Y-83750000D03* X153750000Y-68000000D03*
D11*
X106750000Y-72750000D03*
D12*
X116910000Y-72750000D03*
D11*
X142680000Y-60340000D03*
D12*
X142680000Y-70500000D03*
D16* D16*
X122231000Y-81220000D03*
D17*
X122231000Y-83760000D03*
D18*
X113930000Y-59700000D03*
D19*
X106730000Y-59700000D03*
D16*
X122250000Y-102750000D03*
D17*
X122250000Y-105290000D03*
D11*
X195500000Y-29200000D03*
D12*
X185340000Y-29200000D03*
D20*
X87000000Y-26500000D03*
D11*
X116910000Y-69500000D03*
D12*
X106750000Y-69500000D03*
D16*
X106770000Y-87720000D03*
D21*
X116930000Y-87720000D03*
D11*
X195500000Y-52900000D03*
D12*
X185340000Y-52900000D03*
D11*
X198180000Y-71050000D03*
D12*
X188020000Y-71050000D03*
D20*
X203000000Y-26500000D03*
D11*
X116910000Y-100250000D03*
D12*
X106750000Y-100250000D03*
D22*
X96500000Y-97650000D03*
X96500000Y-106950000D03*
D23*
X195485000Y-60100000D03*
D24*
X192945000Y-60100000D03*
D18*
X113930000Y-81220000D03*
D19*
X106730000Y-81220000D03*
D25*
X150100000Y-31750000D03*
D26*
X150100000Y-34290000D03*
X150100000Y-36830000D03*
X150100000Y-39370000D03*
X150100000Y-41910000D03*
X150100000Y-44450000D03*
X150100000Y-46990000D03*
X150100000Y-49530000D03*
X172960000Y-49530000D03*
X172960000Y-46990000D03*
X172960000Y-44450000D03*
X172960000Y-41910000D03*
X172960000Y-39370000D03*
X172960000Y-36830000D03*
X172960000Y-34290000D03*
X172960000Y-31750000D03*
D23*
X195955000Y-77050000D03*
D24*
X193415000Y-77050000D03*
X190875000Y-77050000D03*
D23*
X195485000Y-38630000D03*
D24*
X192945000Y-38630000D03*
X190405000Y-38630000D03*
X187865000Y-38630000D03*
D15*
X136750000Y-52500000D03*
D16*
X174830000Y-82250000D03*
D21*
X174830000Y-92410000D03*
D16*
X122300000Y-32620000D03*
D17*
X122300000Y-35160000D03*
D23*
X172420000Y-99250000D03*
D24*
X174960000Y-99250000D03*
X177500000Y-99250000D03*
D10*
X138730000Y-70025000D03*
D12*
X138730000Y-67485000D03*
X131110000Y-67485000D03*
X131110000Y-70025000D03*
D23*
X195490000Y-47890000D03*
D24*
X192950000Y-47890000D03*
X190410000Y-47890000D03*
X187870000Y-47890000D03*
D23*
X195485000Y-33980000D03*
D24*
X192945000Y-33980000D03*
X190405000Y-33980000D03*
X187865000Y-33980000D03*
D11*
X142750000Y-33000000D03*
D12*
X142750000Y-43160000D03*
D15*
X157500000Y-68000000D03*
D10*
X138800000Y-42685000D03*
D12*
X138800000Y-40145000D03*
X131180000Y-40145000D03*
X131180000Y-42685000D03*
D22*
X96500000Y-42450000D03*
X96500000Y-33150000D03*
X96500000Y-64000000D03*
X96500000Y-54700000D03*
D13*
X129680000Y-62250000D03*
D14*
X129680000Y-59710000D03*
X129680000Y-57170000D03*
D10*
X143630000Y-91470000D03*
D12*
X143630000Y-88930000D03*
X136010000Y-88930000D03*
X136010000Y-91470000D03*
D15*
X193000000Y-65000000D03*
D11*
X187670000Y-88250000D03*
D12*
X197830000Y-88250000D03*
D10*
X119794888Y-54750000D03*
D11*
X122294888Y-54750000D03*
D13*
X129680000Y-83750000D03*
D14*
X129680000Y-81210000D03* X129680000Y-81210000D03*
X129680000Y-78670000D03* X129680000Y-78670000D03*
D10*
X128204000Y-108710000D03*
X128204000Y-111250000D03*
D12* D12*
X138370000Y-72370000D03* X128178600Y-100455000D03*
D29* X128204000Y-97915000D03*
X136300000Y-71100000D03* D10*
X138370000Y-69830000D03* X147000000Y-108837000D03*
D17* X147000000Y-111377000D03*
D12*
X147101600Y-100455000D03*
X147127000Y-97915000D03*
D16*
X106760000Y-66240000D03* X106760000Y-66240000D03*
D22*
X116920000Y-66240000D03*
D21* D21*
X87000000Y-117250000D03* X116920000Y-66240000D03*
D11* D20*
X146480000Y-32600000D03* X87000000Y-113500000D03*
D14* D27*
X136320000Y-32600000D03* X108910000Y-48540000D03*
D30* D28*
X108900000Y-48620000D03* X103830000Y-50700000D03*
D31* D29*
X103820000Y-50780000D03* X106370000Y-50700000D03*
D32* X108910000Y-50700000D03*
X106360000Y-50780000D03* X111450000Y-50700000D03*
X108900000Y-50780000D03*
X111440000Y-50780000D03*
D11* D11*
X181830000Y-85750000D03* X181830000Y-85750000D03*
X181830000Y-88250000D03* X181830000Y-88250000D03*
D10* D10*
X123600000Y-108750000D03* X122250000Y-111250000D03*
D11* D11*
X123600000Y-111250000D03* X122250000Y-108750000D03*
D17* D16*
X106870000Y-39160000D03* X106870000Y-39160000D03*
D22* D21*
X117030000Y-39160000D03* X117030000Y-39160000D03*
D11* D23*
X136325000Y-39600000D03*
D14*
X146485000Y-39600000D03*
D11*
X117000000Y-46000000D03*
D14*
X106840000Y-46000000D03*
D24*
X195485000Y-43250000D03* X195485000Y-43250000D03*
D25* D24*
X192945000Y-43250000D03* X192945000Y-43250000D03*
X190405000Y-43250000D03* X190405000Y-43250000D03*
X187865000Y-43250000D03* X187865000Y-43250000D03*
D11* D18*
X116860000Y-73500000D03*
D14*
X106700000Y-73500000D03*
D19*
X113990000Y-108095000D03* X113990000Y-108095000D03*
D20* D19*
X106790000Y-108095000D03* X106790000Y-108095000D03*
D11* D11*
X116930000Y-90980000D03* X116930000Y-90980000D03*
D14* D12*
X106770000Y-90980000D03* X106770000Y-90980000D03*
D17* D16*
X170830000Y-82250000D03* X170830000Y-82250000D03*
D22* D21*
X170830000Y-92410000D03* X170830000Y-92410000D03*
D23* D22*
X96500000Y-85450000D03* X96500000Y-85450000D03*
X96500000Y-76150000D03* X96500000Y-76150000D03*
D12*
X121500000Y-42690000D03*
D13*
X123570000Y-43960000D03*
X121500000Y-45230000D03*
D12*
X138400000Y-93900000D03*
D29*
X136330000Y-92630000D03*
X138400000Y-91360000D03*
D12*
X121490000Y-91400000D03*
D13*
X123560000Y-92670000D03*
X121490000Y-93940000D03*
D19*
X114000000Y-32610000D03*
D20*
X106800000Y-32610000D03*
D21*
X203000000Y-117250000D03*
D24*
X177250000Y-42790000D03*
D25*
X177250000Y-40250000D03*
D11* D11*
X144200000Y-74300000D03* X123000000Y-48570000D03*
D14* D12*
X144200000Y-84460000D03* X123000000Y-38410000D03*
D17*
X122230000Y-59710000D03*
D18* D18*
X114000000Y-32610000D03*
D19*
X106800000Y-32610000D03*
D11*
X106840000Y-45670000D03*
D12*
X117000000Y-45670000D03*
D11*
X106770000Y-94230000D03*
D12*
X116930000Y-94230000D03*
D20*
X203000000Y-113500000D03*
D23*
X177250000Y-47250000D03*
D24*
X177250000Y-44710000D03*
D11*
X122930000Y-75660000D03*
D12*
X122930000Y-65500000D03*
D11*
X147430000Y-81890000D03*
D12*
X147430000Y-92050000D03*
D15*
X158500000Y-111250000D03*
D16*
X122230000Y-59710000D03*
D17*
X122230000Y-62250000D03* X122230000Y-62250000D03*
D11* D11*
X197830000Y-84250000D03* X197830000Y-84250000D03*
D14* D12*
X187670000Y-84250000D03* X187670000Y-84250000D03*
D33* D30*
X169750000Y-50800000D03* X169750000Y-52500000D03*
M02* M02*

View file

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
G04 #@! TF.CreationDate,2024-09-25T02:09:32+02:00* G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00*
G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?* G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?*
G04 #@! TF.SameCoordinates,Original* G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Bot* G04 #@! TF.FileFunction,Paste,Bot*
G04 #@! TF.FilePolarity,Positive* G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*% %FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32* G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-05 14:32:50*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*

View file

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
G04 #@! TF.CreationDate,2024-09-25T02:09:32+02:00* G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00*
G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?* G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?*
G04 #@! TF.SameCoordinates,Original* G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot* G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive* G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*% %FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32* G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-05 14:32:50*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*
@ -33,440 +33,403 @@ G04 Aperture macros list end*
%ADD11C,0.300000*% %ADD11C,0.300000*%
%ADD12R,1.600000X1.600000*% %ADD12R,1.600000X1.600000*%
%ADD13C,1.600000*% %ADD13C,1.600000*%
%ADD14R,1.800000X1.100000*% %ADD14O,1.600000X1.600000*%
%ADD15RoundRect,0.275000X-0.625000X0.275000X-0.625000X-0.275000X0.625000X-0.275000X0.625000X0.275000X0*% %ADD15R,2.000000X1.905000*%
%ADD16O,1.600000X1.600000*% %ADD16O,2.000000X1.905000*%
%ADD17R,2.000000X1.905000*% %ADD17RoundRect,0.250001X-0.799999X-0.799999X0.799999X-0.799999X0.799999X0.799999X-0.799999X0.799999X0*%
%ADD18O,2.000000X1.905000*% %ADD18R,1.800000X1.800000*%
%ADD19R,1.800000X1.800000*% %ADD19C,1.800000*%
%ADD20C,1.800000*% %ADD20RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*%
%ADD21RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*% %ADD21C,6.000000*%
%ADD22C,6.000000*% %ADD22C,5.600000*%
%ADD23C,5.600000*% %ADD23O,1.800000X1.800000*%
%ADD24O,1.800000X1.800000*% %ADD24O,3.800000X8.000000*%
%ADD25O,3.800000X8.000000*% %ADD25R,1.700000X1.700000*%
%ADD26R,1.700000X1.700000*% %ADD26O,1.700000X1.700000*%
%ADD27O,1.700000X1.700000*% %ADD27R,2.000000X2.000000*%
%ADD28R,2.000000X2.000000*% %ADD28O,2.000000X1.600000*%
%ADD29O,2.000000X1.600000*% %ADD29C,1.100000*%
%ADD30RoundRect,0.250000X-0.550000X-0.550000X0.550000X-0.550000X0.550000X0.550000X-0.550000X0.550000X0*% %ADD30R,1.730000X2.030000*%
%ADD31RoundRect,0.275000X0.625000X-0.275000X0.625000X0.275000X-0.625000X0.275000X-0.625000X-0.275000X0*% %ADD31O,1.730000X2.030000*%
%ADD32C,1.100000*% %ADD32RoundRect,0.250001X0.799999X0.799999X-0.799999X0.799999X-0.799999X-0.799999X0.799999X-0.799999X0*%
%ADD33R,1.730000X2.030000*%
%ADD34O,1.730000X2.030000*%
%ADD35RoundRect,0.250000X0.550000X0.550000X-0.550000X0.550000X-0.550000X-0.550000X0.550000X-0.550000X0*%
G04 APERTURE END LIST* G04 APERTURE END LIST*
D10* D10*
X161150000Y-68950000D02* X161600000Y-68950000D02*
X161550000Y-69750000D01* X162000000Y-69750000D01*
X152300000Y-65000000D02* X152750000Y-65000000D02*
X153300000Y-66000000D01* X153750000Y-66000000D01*
X147800000Y-62500000D01* X148250000Y-62500000D01*
X152300000Y-65000000D01* X152750000Y-65000000D01*
G36* G36*
X152300000Y-65000000D02* X152750000Y-65000000D02*
G01* G01*
X153300000Y-66000000D01* X153750000Y-66000000D01*
X147800000Y-62500000D01* X148250000Y-62500000D01*
X152300000Y-65000000D01* X152750000Y-65000000D01*
G37* G37*
X161640000Y-68925000D02* X162090000Y-68925000D02*
X161840000Y-69325000D01* X162290000Y-69325000D01*
X155800000Y-64500000D02* X156250000Y-64500000D02*
X154800000Y-66000000D01* X155250000Y-66000000D01*
X156800000Y-60500000D01* X157250000Y-60500000D01*
X155800000Y-64500000D01* X156250000Y-64500000D01*
G36* G36*
X155800000Y-64500000D02* X156250000Y-64500000D02*
G01* G01*
X154800000Y-66000000D01* X155250000Y-66000000D01*
X156800000Y-60500000D01* X157250000Y-60500000D01*
X155800000Y-64500000D01* X156250000Y-64500000D01*
G37* G37*
X156800000Y-65000000D02* X157250000Y-65000000D02*
X155800000Y-66000000D01* X156250000Y-66000000D01*
X157800000Y-62000000D01* X158250000Y-62000000D01*
X156800000Y-65000000D01* X157250000Y-65000000D01*
G36* G36*
X156800000Y-65000000D02* X157250000Y-65000000D02*
G01* G01*
X155800000Y-66000000D01* X156250000Y-66000000D01*
X157800000Y-62000000D01* X158250000Y-62000000D01*
X156800000Y-65000000D01* X157250000Y-65000000D01*
G37* G37*
X161350000Y-68850000D02* X161800000Y-68850000D02*
X161750000Y-69650000D01* X162200000Y-69650000D01*
X161300000Y-70000000D02* X161750000Y-70000000D02*
X155800000Y-71500000D01* X156250000Y-71500000D01*
X160800000Y-69000000D01* X161250000Y-69000000D01*
X161300000Y-70000000D01* X161750000Y-70000000D01*
G36* G36*
X161300000Y-70000000D02* X161750000Y-70000000D02*
G01* G01*
X155800000Y-71500000D01* X156250000Y-71500000D01*
X160800000Y-69000000D01* X161250000Y-69000000D01*
X161300000Y-70000000D01* X161750000Y-70000000D01*
G37* G37*
X154300000Y-63500000D02* X154750000Y-63500000D02*
X154300000Y-66000000D01* X154750000Y-66000000D01*
X152800000Y-59000000D01* X153250000Y-59000000D01*
X154300000Y-63500000D01* X154750000Y-63500000D01*
G36* G36*
X154300000Y-63500000D02* X154750000Y-63500000D02*
G01* G01*
X154300000Y-66000000D01* X154750000Y-66000000D01*
X152800000Y-59000000D01* X153250000Y-59000000D01*
X154300000Y-63500000D01* X154750000Y-63500000D01*
G37* G37*
X152300000Y-63500000D02* X152750000Y-63500000D02*
X153800000Y-66000000D01* X154250000Y-66000000D01*
X148800000Y-60500000D01* X149250000Y-60500000D01*
X152300000Y-63500000D01* X152750000Y-63500000D01*
G36* G36*
X152300000Y-63500000D02* X152750000Y-63500000D02*
G01* G01*
X153800000Y-66000000D01* X154250000Y-66000000D01*
X148800000Y-60500000D01* X149250000Y-60500000D01*
X152300000Y-63500000D01* X152750000Y-63500000D01*
G37* G37*
D11* D11*
X156300000Y-72000000D02* X156750000Y-72000000D02*
X154800000Y-73000000D01* X155250000Y-73000000D01*
X152800000Y-72000000D01* X153250000Y-72000000D01*
X152300000Y-70000000D01* X152750000Y-70000000D01*
X156800000Y-70000000D01* X157250000Y-70000000D01*
X156300000Y-72000000D01* X156750000Y-72000000D01*
%LPC*% %LPC*%
D12* D12*
X156600000Y-108750000D03*
D13*
X156600000Y-111250000D03*
D14*
X127400000Y-42690000D03*
D15*
X129470000Y-43960000D03*
X127400000Y-45230000D03*
D13*
X117000000Y-42420000D03*
D16*
X106840000Y-42420000D03*
D17*
X138430000Y-83750000D03*
D18*
X138430000Y-81210000D03*
X138430000Y-78670000D03*
D17*
X129800000Y-35150000D03*
D18*
X129800000Y-32610000D03*
X129800000Y-30070000D03*
D13*
X139900000Y-53320000D03*
D16*
X139900000Y-63480000D03*
D12*
X130748000Y-108846000D03*
X130748000Y-111386000D03*
D16*
X130722600Y-100478000D03*
X130748000Y-97938000D03*
D12*
X149544000Y-108860000D03*
X149544000Y-111400000D03*
D16*
X149645600Y-100478000D03*
X149671000Y-97938000D03*
D13*
X177750000Y-92250000D03*
D16*
X187910000Y-92250000D03*
D19*
X122231000Y-81220000D03*
D20*
X122231000Y-83760000D03*
D21*
X113930000Y-59700000D03*
D22*
X106730000Y-59700000D03*
D19*
X122250000Y-102750000D03*
D20*
X122250000Y-105290000D03*
D13*
X195500000Y-29200000D03*
D16*
X185340000Y-29200000D03*
D14*
X127430000Y-91400000D03*
D15*
X129500000Y-92670000D03*
X127430000Y-93940000D03*
D23*
X87000000Y-22750000D03*
D13*
X116855000Y-69500000D03*
D16*
X106695000Y-69500000D03*
D19*
X106770000Y-87720000D03*
D24*
X116930000Y-87720000D03*
D13*
X133000000Y-94000000D03*
D16*
X133000000Y-83840000D03*
D13*
X195500000Y-52900000D03*
D16*
X185340000Y-52900000D03*
D13*
X198180000Y-71050000D03*
D16*
X188020000Y-71050000D03*
D23*
X203000000Y-22750000D03*
D13*
X139920000Y-66500000D03*
D16*
X150080000Y-66500000D03*
D13*
X116910000Y-100250000D03*
D16*
X106750000Y-100250000D03*
D13*
X153100000Y-78010000D03*
D16*
X153100000Y-67850000D03*
D14*
X121500000Y-69860000D03*
D15*
X123570000Y-71130000D03*
X121500000Y-72400000D03*
D14*
X127400000Y-69860000D03*
D15*
X129470000Y-71130000D03*
X127400000Y-72400000D03*
D25*
X96500000Y-97650000D03*
X96500000Y-106950000D03*
D26*
X195485000Y-60100000D03*
D27*
X192945000Y-60100000D03*
D21*
X113930000Y-81220000D03*
D22*
X106730000Y-81220000D03*
D28*
X150100000Y-27460000D03*
D29*
X150100000Y-30000000D03*
X150100000Y-32540000D03*
X150100000Y-35080000D03*
X150100000Y-37620000D03*
X150100000Y-40160000D03*
X150100000Y-42700000D03*
X150100000Y-45240000D03*
X172960000Y-45240000D03*
X172960000Y-42700000D03*
X172960000Y-40160000D03*
X172960000Y-37620000D03*
X172960000Y-35080000D03*
X172960000Y-32540000D03*
X172960000Y-30000000D03*
X172960000Y-27460000D03*
D26*
X195400000Y-77000000D03*
D27*
X192860000Y-77000000D03*
X190320000Y-77000000D03*
D26*
X195485000Y-38630000D03*
D27*
X192945000Y-38630000D03*
X190405000Y-38630000D03*
X187865000Y-38630000D03*
D30*
X131800000Y-50800000D03*
D19*
X174830000Y-82250000D03*
D24*
X174830000Y-92410000D03*
D19*
X122300000Y-32620000D03*
D20*
X122300000Y-35160000D03*
D26*
X195600000Y-99250000D03*
D27*
X193060000Y-99250000D03*
X190520000Y-99250000D03*
D13*
X101455112Y-94200000D03*
X103955112Y-94200000D03*
D26*
X195490000Y-47890000D03*
D27*
X192950000Y-47890000D03*
X190410000Y-47890000D03*
X187870000Y-47890000D03*
D13*
X133000000Y-45310000D03*
D16*
X133000000Y-35150000D03*
D14*
X138400000Y-45170000D03*
D31*
X136330000Y-43900000D03*
X138400000Y-42630000D03*
D26*
X195485000Y-33980000D03*
D27*
X192945000Y-33980000D03*
X190405000Y-33980000D03*
X187865000Y-33980000D03*
D30*
X156500000Y-67860000D03*
D25*
X96500000Y-42450000D03*
X96500000Y-33150000D03*
X96500000Y-64000000D03*
X96500000Y-54700000D03*
D17*
X129680000Y-62250000D03*
D18*
X129680000Y-59710000D03*
X129680000Y-57170000D03*
D30*
X188000000Y-67900000D03*
D13*
X187670000Y-88250000D03*
D16*
X197830000Y-88250000D03*
D13*
X102500000Y-66200000D03*
X102500000Y-68700000D03*
X116900000Y-95000000D03*
D16*
X106740000Y-95000000D03*
D12*
X101500000Y-90100000D03* X101500000Y-90100000D03*
D13* D13*
X104000000Y-90100000D03* X104000000Y-90100000D03*
X133000000Y-72460000D03* X103955112Y-94200000D03*
X101455112Y-94200000D03*
D12*
X153500000Y-111250000D03*
D13*
X153500000Y-108750000D03*
X123520000Y-88850000D03*
D14*
X133680000Y-88850000D03*
D13*
X117000000Y-42420000D03*
D14*
X106840000Y-42420000D03*
D15*
X138430000Y-83750000D03*
D16* D16*
X133000000Y-62300000D03* X138430000Y-81210000D03*
X138430000Y-78670000D03*
D15*
X129800000Y-35150000D03*
D16*
X129800000Y-32610000D03*
X129800000Y-30070000D03*
D13*
X177750000Y-92250000D03*
D14*
X187910000Y-92250000D03*
D17* D17*
X129680000Y-83750000D03* X153750000Y-68000000D03*
D13*
X106750000Y-72750000D03*
D14*
X116910000Y-72750000D03*
D13*
X142680000Y-60340000D03*
D14*
X142680000Y-70500000D03*
D18* D18*
X122231000Y-81220000D03*
D19*
X122231000Y-83760000D03*
D20*
X113930000Y-59700000D03*
D21*
X106730000Y-59700000D03*
D18*
X122250000Y-102750000D03*
D19*
X122250000Y-105290000D03*
D13*
X195500000Y-29200000D03*
D14*
X185340000Y-29200000D03*
D22*
X87000000Y-26500000D03*
D13*
X116910000Y-69500000D03*
D14*
X106750000Y-69500000D03*
D18*
X106770000Y-87720000D03*
D23*
X116930000Y-87720000D03*
D13*
X195500000Y-52900000D03*
D14*
X185340000Y-52900000D03*
D13*
X198180000Y-71050000D03*
D14*
X188020000Y-71050000D03*
D22*
X203000000Y-26500000D03*
D13*
X116910000Y-100250000D03*
D14*
X106750000Y-100250000D03*
D24*
X96500000Y-97650000D03*
X96500000Y-106950000D03*
D25*
X195485000Y-60100000D03*
D26*
X192945000Y-60100000D03*
D20*
X113930000Y-81220000D03*
D21*
X106730000Y-81220000D03*
D27*
X150100000Y-31750000D03*
D28*
X150100000Y-34290000D03*
X150100000Y-36830000D03*
X150100000Y-39370000D03*
X150100000Y-41910000D03*
X150100000Y-44450000D03*
X150100000Y-46990000D03*
X150100000Y-49530000D03*
X172960000Y-49530000D03*
X172960000Y-46990000D03*
X172960000Y-44450000D03*
X172960000Y-41910000D03*
X172960000Y-39370000D03*
X172960000Y-36830000D03*
X172960000Y-34290000D03*
X172960000Y-31750000D03*
D25*
X195955000Y-77050000D03*
D26*
X193415000Y-77050000D03*
X190875000Y-77050000D03*
D25*
X195485000Y-38630000D03*
D26*
X192945000Y-38630000D03*
X190405000Y-38630000D03*
X187865000Y-38630000D03*
D17*
X136750000Y-52500000D03*
D18*
X174830000Y-82250000D03*
D23*
X174830000Y-92410000D03*
D18*
X122300000Y-32620000D03*
D19*
X122300000Y-35160000D03*
D25*
X172420000Y-99250000D03*
D26*
X174960000Y-99250000D03*
X177500000Y-99250000D03*
D12*
X138730000Y-70025000D03*
D14*
X138730000Y-67485000D03*
X131110000Y-67485000D03*
X131110000Y-70025000D03*
D25*
X195490000Y-47890000D03*
D26*
X192950000Y-47890000D03*
X190410000Y-47890000D03*
X187870000Y-47890000D03*
D25*
X195485000Y-33980000D03*
D26*
X192945000Y-33980000D03*
X190405000Y-33980000D03*
X187865000Y-33980000D03*
D13*
X142750000Y-33000000D03*
D14*
X142750000Y-43160000D03*
D17*
X157500000Y-68000000D03*
D12*
X138800000Y-42685000D03*
D14*
X138800000Y-40145000D03*
X131180000Y-40145000D03*
X131180000Y-42685000D03*
D24*
X96500000Y-42450000D03*
X96500000Y-33150000D03*
X96500000Y-64000000D03*
X96500000Y-54700000D03*
D15*
X129680000Y-62250000D03*
D16*
X129680000Y-59710000D03*
X129680000Y-57170000D03*
D12*
X143630000Y-91470000D03*
D14*
X143630000Y-88930000D03*
X136010000Y-88930000D03*
X136010000Y-91470000D03*
D17*
X193000000Y-65000000D03*
D13*
X187670000Y-88250000D03*
D14*
X197830000Y-88250000D03*
D12*
X119794888Y-54750000D03*
D13*
X122294888Y-54750000D03*
D15*
X129680000Y-83750000D03*
D16*
X129680000Y-81210000D03* X129680000Y-81210000D03*
X129680000Y-78670000D03* X129680000Y-78670000D03*
D12*
X128204000Y-108710000D03*
X128204000Y-111250000D03*
D14* D14*
X138370000Y-72370000D03* X128178600Y-100455000D03*
D31* X128204000Y-97915000D03*
X136300000Y-71100000D03* D12*
X138370000Y-69830000D03* X147000000Y-108837000D03*
D19* X147000000Y-111377000D03*
D14*
X147101600Y-100455000D03*
X147127000Y-97915000D03*
D18*
X106760000Y-66240000D03* X106760000Y-66240000D03*
D24*
X116920000Y-66240000D03*
D23* D23*
X87000000Y-117250000D03* X116920000Y-66240000D03*
D13* D22*
X146480000Y-32600000D03* X87000000Y-113500000D03*
D16* D29*
X136320000Y-32600000D03* X108910000Y-48540000D03*
D32* D30*
X108900000Y-48620000D03* X103830000Y-50700000D03*
D33* D31*
X103820000Y-50780000D03* X106370000Y-50700000D03*
D34* X108910000Y-50700000D03*
X106360000Y-50780000D03* X111450000Y-50700000D03*
X108900000Y-50780000D03*
X111440000Y-50780000D03*
D13* D13*
X181830000Y-85750000D03* X181830000Y-85750000D03*
X181830000Y-88250000D03* X181830000Y-88250000D03*
D12* D12*
X123600000Y-108750000D03* X122250000Y-111250000D03*
D13* D13*
X123600000Y-111250000D03* X122250000Y-108750000D03*
D19* D18*
X106870000Y-39160000D03* X106870000Y-39160000D03*
D24* D23*
X117030000Y-39160000D03* X117030000Y-39160000D03*
D13* D25*
X136325000Y-39600000D03*
D16*
X146485000Y-39600000D03*
D13*
X117000000Y-46000000D03*
D16*
X106840000Y-46000000D03*
D26*
X195485000Y-43250000D03* X195485000Y-43250000D03*
D27* D26*
X192945000Y-43250000D03* X192945000Y-43250000D03*
X190405000Y-43250000D03* X190405000Y-43250000D03*
X187865000Y-43250000D03* X187865000Y-43250000D03*
D13* D20*
X116860000Y-73500000D03*
D16*
X106700000Y-73500000D03*
D21*
X113990000Y-108095000D03* X113990000Y-108095000D03*
D22* D21*
X106790000Y-108095000D03* X106790000Y-108095000D03*
D13* D13*
X116930000Y-90980000D03* X116930000Y-90980000D03*
D16* D14*
X106770000Y-90980000D03* X106770000Y-90980000D03*
D19* D18*
X170830000Y-82250000D03* X170830000Y-82250000D03*
D24* D23*
X170830000Y-92410000D03* X170830000Y-92410000D03*
D25* D24*
X96500000Y-85450000D03* X96500000Y-85450000D03*
X96500000Y-76150000D03* X96500000Y-76150000D03*
D14*
X121500000Y-42690000D03*
D15*
X123570000Y-43960000D03*
X121500000Y-45230000D03*
D14*
X138400000Y-93900000D03*
D31*
X136330000Y-92630000D03*
X138400000Y-91360000D03*
D14*
X121490000Y-91400000D03*
D15*
X123560000Y-92670000D03*
X121490000Y-93940000D03*
D21*
X114000000Y-32610000D03*
D22*
X106800000Y-32610000D03*
D23*
X203000000Y-117250000D03*
D26*
X177250000Y-42790000D03*
D27*
X177250000Y-40250000D03*
D13* D13*
X144200000Y-74300000D03* X123000000Y-48570000D03*
D16* D14*
X144200000Y-84460000D03* X123000000Y-38410000D03*
D19*
X122230000Y-59710000D03*
D20* D20*
X114000000Y-32610000D03*
D21*
X106800000Y-32610000D03*
D13*
X106840000Y-45670000D03*
D14*
X117000000Y-45670000D03*
D13*
X106770000Y-94230000D03*
D14*
X116930000Y-94230000D03*
D22*
X203000000Y-113500000D03*
D25*
X177250000Y-47250000D03*
D26*
X177250000Y-44710000D03*
D13*
X122930000Y-75660000D03*
D14*
X122930000Y-65500000D03*
D13*
X147430000Y-81890000D03*
D14*
X147430000Y-92050000D03*
D17*
X158500000Y-111250000D03*
D18*
X122230000Y-59710000D03*
D19*
X122230000Y-62250000D03* X122230000Y-62250000D03*
D13* D13*
X197830000Y-84250000D03* X197830000Y-84250000D03*
D16* D14*
X187670000Y-84250000D03* X187670000Y-84250000D03*
D35* D32*
X169750000Y-50800000D03* X169750000Y-52500000D03*
%LPD*% %LPD*%
M02* M02*

View file

@ -1,11 +1,11 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
G04 #@! TF.CreationDate,2024-09-25T02:09:32+02:00* G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00*
G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?* G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?*
G04 #@! TF.SameCoordinates,Original* G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP* G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*% %FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32* G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-05 14:32:50*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*
@ -15,9 +15,9 @@ G04 #@! TA.AperFunction,Profile*
G04 #@! TD* G04 #@! TD*
G04 APERTURE END LIST* G04 APERTURE END LIST*
D10* D10*
X83000000Y-18750000D02* X83000000Y-22500000D02*
X207000000Y-18750000D01* X207000000Y-22500000D01*
X207000000Y-121250000D01* X207000000Y-117500000D01*
X83000000Y-121250000D01* X83000000Y-117500000D01*
X83000000Y-18750000D01* X83000000Y-22500000D01*
M02* M02*

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
G04 #@! TF.CreationDate,2024-09-25T02:09:32+02:00* G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00*
G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?* G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?*
G04 #@! TF.SameCoordinates,Original* G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Soldermask,Top* G04 #@! TF.FileFunction,Soldermask,Top*
G04 #@! TF.FilePolarity,Negative* G04 #@! TF.FilePolarity,Negative*
%FSLAX46Y46*% %FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32* G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-05 14:32:50*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*
@ -31,358 +31,321 @@ G04 Aperture macros list*
G04 Aperture macros list end* G04 Aperture macros list end*
%ADD10R,1.600000X1.600000*% %ADD10R,1.600000X1.600000*%
%ADD11C,1.600000*% %ADD11C,1.600000*%
%ADD12R,1.800000X1.100000*% %ADD12O,1.600000X1.600000*%
%ADD13RoundRect,0.275000X-0.625000X0.275000X-0.625000X-0.275000X0.625000X-0.275000X0.625000X0.275000X0*% %ADD13R,2.000000X1.905000*%
%ADD14O,1.600000X1.600000*% %ADD14O,2.000000X1.905000*%
%ADD15R,2.000000X1.905000*% %ADD15RoundRect,0.250001X-0.799999X-0.799999X0.799999X-0.799999X0.799999X0.799999X-0.799999X0.799999X0*%
%ADD16O,2.000000X1.905000*% %ADD16R,1.800000X1.800000*%
%ADD17R,1.800000X1.800000*% %ADD17C,1.800000*%
%ADD18C,1.800000*% %ADD18RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*%
%ADD19RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*% %ADD19C,6.000000*%
%ADD20C,6.000000*% %ADD20C,5.600000*%
%ADD21C,5.600000*% %ADD21O,1.800000X1.800000*%
%ADD22O,1.800000X1.800000*% %ADD22O,3.800000X8.000000*%
%ADD23O,3.800000X8.000000*% %ADD23R,1.700000X1.700000*%
%ADD24R,1.700000X1.700000*% %ADD24O,1.700000X1.700000*%
%ADD25O,1.700000X1.700000*% %ADD25R,2.000000X2.000000*%
%ADD26R,2.000000X2.000000*% %ADD26O,2.000000X1.600000*%
%ADD27O,2.000000X1.600000*% %ADD27C,1.100000*%
%ADD28RoundRect,0.250000X-0.550000X-0.550000X0.550000X-0.550000X0.550000X0.550000X-0.550000X0.550000X0*% %ADD28R,1.730000X2.030000*%
%ADD29RoundRect,0.275000X0.625000X-0.275000X0.625000X0.275000X-0.625000X0.275000X-0.625000X-0.275000X0*% %ADD29O,1.730000X2.030000*%
%ADD30C,1.100000*% %ADD30RoundRect,0.250001X0.799999X0.799999X-0.799999X0.799999X-0.799999X-0.799999X0.799999X-0.799999X0*%
%ADD31R,1.730000X2.030000*%
%ADD32O,1.730000X2.030000*%
%ADD33RoundRect,0.250000X0.550000X0.550000X-0.550000X0.550000X-0.550000X-0.550000X0.550000X-0.550000X0*%
G04 APERTURE END LIST* G04 APERTURE END LIST*
D10* D10*
X156600000Y-108750000D03*
D11*
X156600000Y-111250000D03*
D12*
X127400000Y-42690000D03*
D13*
X129470000Y-43960000D03*
X127400000Y-45230000D03*
D11*
X117000000Y-42420000D03*
D14*
X106840000Y-42420000D03*
D15*
X138430000Y-83750000D03*
D16*
X138430000Y-81210000D03*
X138430000Y-78670000D03*
D15*
X129800000Y-35150000D03*
D16*
X129800000Y-32610000D03*
X129800000Y-30070000D03*
D11*
X139900000Y-53320000D03*
D14*
X139900000Y-63480000D03*
D10*
X130748000Y-108846000D03*
X130748000Y-111386000D03*
D14*
X130722600Y-100478000D03*
X130748000Y-97938000D03*
D10*
X149544000Y-108860000D03*
X149544000Y-111400000D03*
D14*
X149645600Y-100478000D03*
X149671000Y-97938000D03*
D11*
X177750000Y-92250000D03*
D14*
X187910000Y-92250000D03*
D17*
X122231000Y-81220000D03*
D18*
X122231000Y-83760000D03*
D19*
X113930000Y-59700000D03*
D20*
X106730000Y-59700000D03*
D17*
X122250000Y-102750000D03*
D18*
X122250000Y-105290000D03*
D11*
X195500000Y-29200000D03*
D14*
X185340000Y-29200000D03*
D12*
X127430000Y-91400000D03*
D13*
X129500000Y-92670000D03*
X127430000Y-93940000D03*
D21*
X87000000Y-22750000D03*
D11*
X116855000Y-69500000D03*
D14*
X106695000Y-69500000D03*
D17*
X106770000Y-87720000D03*
D22*
X116930000Y-87720000D03*
D11*
X133000000Y-94000000D03*
D14*
X133000000Y-83840000D03*
D11*
X195500000Y-52900000D03*
D14*
X185340000Y-52900000D03*
D11*
X198180000Y-71050000D03*
D14*
X188020000Y-71050000D03*
D21*
X203000000Y-22750000D03*
D11*
X139920000Y-66500000D03*
D14*
X150080000Y-66500000D03*
D11*
X116910000Y-100250000D03*
D14*
X106750000Y-100250000D03*
D11*
X153100000Y-78010000D03*
D14*
X153100000Y-67850000D03*
D12*
X121500000Y-69860000D03*
D13*
X123570000Y-71130000D03*
X121500000Y-72400000D03*
D12*
X127400000Y-69860000D03*
D13*
X129470000Y-71130000D03*
X127400000Y-72400000D03*
D23*
X96500000Y-97650000D03*
X96500000Y-106950000D03*
D24*
X195485000Y-60100000D03*
D25*
X192945000Y-60100000D03*
D19*
X113930000Y-81220000D03*
D20*
X106730000Y-81220000D03*
D26*
X150100000Y-27460000D03*
D27*
X150100000Y-30000000D03*
X150100000Y-32540000D03*
X150100000Y-35080000D03*
X150100000Y-37620000D03*
X150100000Y-40160000D03*
X150100000Y-42700000D03*
X150100000Y-45240000D03*
X172960000Y-45240000D03*
X172960000Y-42700000D03*
X172960000Y-40160000D03*
X172960000Y-37620000D03*
X172960000Y-35080000D03*
X172960000Y-32540000D03*
X172960000Y-30000000D03*
X172960000Y-27460000D03*
D24*
X195400000Y-77000000D03*
D25*
X192860000Y-77000000D03*
X190320000Y-77000000D03*
D24*
X195485000Y-38630000D03*
D25*
X192945000Y-38630000D03*
X190405000Y-38630000D03*
X187865000Y-38630000D03*
D28*
X131800000Y-50800000D03*
D17*
X174830000Y-82250000D03*
D22*
X174830000Y-92410000D03*
D17*
X122300000Y-32620000D03*
D18*
X122300000Y-35160000D03*
D24*
X195600000Y-99250000D03*
D25*
X193060000Y-99250000D03*
X190520000Y-99250000D03*
D11*
X101455112Y-94200000D03*
X103955112Y-94200000D03*
D24*
X195490000Y-47890000D03*
D25*
X192950000Y-47890000D03*
X190410000Y-47890000D03*
X187870000Y-47890000D03*
D11*
X133000000Y-45310000D03*
D14*
X133000000Y-35150000D03*
D12*
X138400000Y-45170000D03*
D29*
X136330000Y-43900000D03*
X138400000Y-42630000D03*
D24*
X195485000Y-33980000D03*
D25*
X192945000Y-33980000D03*
X190405000Y-33980000D03*
X187865000Y-33980000D03*
D28*
X156500000Y-67860000D03*
D23*
X96500000Y-42450000D03*
X96500000Y-33150000D03*
X96500000Y-64000000D03*
X96500000Y-54700000D03*
D15*
X129680000Y-62250000D03*
D16*
X129680000Y-59710000D03*
X129680000Y-57170000D03*
D28*
X188000000Y-67900000D03*
D11*
X187670000Y-88250000D03*
D14*
X197830000Y-88250000D03*
D11*
X102500000Y-66200000D03*
X102500000Y-68700000D03*
X116900000Y-95000000D03*
D14*
X106740000Y-95000000D03*
D10*
X101500000Y-90100000D03* X101500000Y-90100000D03*
D11* D11*
X104000000Y-90100000D03* X104000000Y-90100000D03*
X133000000Y-72460000D03* X103955112Y-94200000D03*
X101455112Y-94200000D03*
D10*
X153500000Y-111250000D03*
D11*
X153500000Y-108750000D03*
X123520000Y-88850000D03*
D12*
X133680000Y-88850000D03*
D11*
X117000000Y-42420000D03*
D12*
X106840000Y-42420000D03*
D13*
X138430000Y-83750000D03*
D14* D14*
X133000000Y-62300000D03* X138430000Y-81210000D03*
X138430000Y-78670000D03*
D13*
X129800000Y-35150000D03*
D14*
X129800000Y-32610000D03*
X129800000Y-30070000D03*
D11*
X177750000Y-92250000D03*
D12*
X187910000Y-92250000D03*
D15* D15*
X129680000Y-83750000D03* X153750000Y-68000000D03*
D11*
X106750000Y-72750000D03*
D12*
X116910000Y-72750000D03*
D11*
X142680000Y-60340000D03*
D12*
X142680000Y-70500000D03*
D16* D16*
X122231000Y-81220000D03*
D17*
X122231000Y-83760000D03*
D18*
X113930000Y-59700000D03*
D19*
X106730000Y-59700000D03*
D16*
X122250000Y-102750000D03*
D17*
X122250000Y-105290000D03*
D11*
X195500000Y-29200000D03*
D12*
X185340000Y-29200000D03*
D20*
X87000000Y-26500000D03*
D11*
X116910000Y-69500000D03*
D12*
X106750000Y-69500000D03*
D16*
X106770000Y-87720000D03*
D21*
X116930000Y-87720000D03*
D11*
X195500000Y-52900000D03*
D12*
X185340000Y-52900000D03*
D11*
X198180000Y-71050000D03*
D12*
X188020000Y-71050000D03*
D20*
X203000000Y-26500000D03*
D11*
X116910000Y-100250000D03*
D12*
X106750000Y-100250000D03*
D22*
X96500000Y-97650000D03*
X96500000Y-106950000D03*
D23*
X195485000Y-60100000D03*
D24*
X192945000Y-60100000D03*
D18*
X113930000Y-81220000D03*
D19*
X106730000Y-81220000D03*
D25*
X150100000Y-31750000D03*
D26*
X150100000Y-34290000D03*
X150100000Y-36830000D03*
X150100000Y-39370000D03*
X150100000Y-41910000D03*
X150100000Y-44450000D03*
X150100000Y-46990000D03*
X150100000Y-49530000D03*
X172960000Y-49530000D03*
X172960000Y-46990000D03*
X172960000Y-44450000D03*
X172960000Y-41910000D03*
X172960000Y-39370000D03*
X172960000Y-36830000D03*
X172960000Y-34290000D03*
X172960000Y-31750000D03*
D23*
X195955000Y-77050000D03*
D24*
X193415000Y-77050000D03*
X190875000Y-77050000D03*
D23*
X195485000Y-38630000D03*
D24*
X192945000Y-38630000D03*
X190405000Y-38630000D03*
X187865000Y-38630000D03*
D15*
X136750000Y-52500000D03*
D16*
X174830000Y-82250000D03*
D21*
X174830000Y-92410000D03*
D16*
X122300000Y-32620000D03*
D17*
X122300000Y-35160000D03*
D23*
X172420000Y-99250000D03*
D24*
X174960000Y-99250000D03*
X177500000Y-99250000D03*
D10*
X138730000Y-70025000D03*
D12*
X138730000Y-67485000D03*
X131110000Y-67485000D03*
X131110000Y-70025000D03*
D23*
X195490000Y-47890000D03*
D24*
X192950000Y-47890000D03*
X190410000Y-47890000D03*
X187870000Y-47890000D03*
D23*
X195485000Y-33980000D03*
D24*
X192945000Y-33980000D03*
X190405000Y-33980000D03*
X187865000Y-33980000D03*
D11*
X142750000Y-33000000D03*
D12*
X142750000Y-43160000D03*
D15*
X157500000Y-68000000D03*
D10*
X138800000Y-42685000D03*
D12*
X138800000Y-40145000D03*
X131180000Y-40145000D03*
X131180000Y-42685000D03*
D22*
X96500000Y-42450000D03*
X96500000Y-33150000D03*
X96500000Y-64000000D03*
X96500000Y-54700000D03*
D13*
X129680000Y-62250000D03*
D14*
X129680000Y-59710000D03*
X129680000Y-57170000D03*
D10*
X143630000Y-91470000D03*
D12*
X143630000Y-88930000D03*
X136010000Y-88930000D03*
X136010000Y-91470000D03*
D15*
X193000000Y-65000000D03*
D11*
X187670000Y-88250000D03*
D12*
X197830000Y-88250000D03*
D10*
X119794888Y-54750000D03*
D11*
X122294888Y-54750000D03*
D13*
X129680000Y-83750000D03*
D14*
X129680000Y-81210000D03* X129680000Y-81210000D03*
X129680000Y-78670000D03* X129680000Y-78670000D03*
D10*
X128204000Y-108710000D03*
X128204000Y-111250000D03*
D12* D12*
X138370000Y-72370000D03* X128178600Y-100455000D03*
D29* X128204000Y-97915000D03*
X136300000Y-71100000D03* D10*
X138370000Y-69830000D03* X147000000Y-108837000D03*
D17* X147000000Y-111377000D03*
D12*
X147101600Y-100455000D03*
X147127000Y-97915000D03*
D16*
X106760000Y-66240000D03* X106760000Y-66240000D03*
D22*
X116920000Y-66240000D03*
D21* D21*
X87000000Y-117250000D03* X116920000Y-66240000D03*
D11* D20*
X146480000Y-32600000D03* X87000000Y-113500000D03*
D14* D27*
X136320000Y-32600000D03* X108910000Y-48540000D03*
D30* D28*
X108900000Y-48620000D03* X103830000Y-50700000D03*
D31* D29*
X103820000Y-50780000D03* X106370000Y-50700000D03*
D32* X108910000Y-50700000D03*
X106360000Y-50780000D03* X111450000Y-50700000D03*
X108900000Y-50780000D03*
X111440000Y-50780000D03*
D11* D11*
X181830000Y-85750000D03* X181830000Y-85750000D03*
X181830000Y-88250000D03* X181830000Y-88250000D03*
D10* D10*
X123600000Y-108750000D03* X122250000Y-111250000D03*
D11* D11*
X123600000Y-111250000D03* X122250000Y-108750000D03*
D17* D16*
X106870000Y-39160000D03* X106870000Y-39160000D03*
D22* D21*
X117030000Y-39160000D03* X117030000Y-39160000D03*
D11* D23*
X136325000Y-39600000D03*
D14*
X146485000Y-39600000D03*
D11*
X117000000Y-46000000D03*
D14*
X106840000Y-46000000D03*
D24*
X195485000Y-43250000D03* X195485000Y-43250000D03*
D25* D24*
X192945000Y-43250000D03* X192945000Y-43250000D03*
X190405000Y-43250000D03* X190405000Y-43250000D03*
X187865000Y-43250000D03* X187865000Y-43250000D03*
D11* D18*
X116860000Y-73500000D03*
D14*
X106700000Y-73500000D03*
D19*
X113990000Y-108095000D03* X113990000Y-108095000D03*
D20* D19*
X106790000Y-108095000D03* X106790000Y-108095000D03*
D11* D11*
X116930000Y-90980000D03* X116930000Y-90980000D03*
D14* D12*
X106770000Y-90980000D03* X106770000Y-90980000D03*
D17* D16*
X170830000Y-82250000D03* X170830000Y-82250000D03*
D22* D21*
X170830000Y-92410000D03* X170830000Y-92410000D03*
D23* D22*
X96500000Y-85450000D03* X96500000Y-85450000D03*
X96500000Y-76150000D03* X96500000Y-76150000D03*
D12*
X121500000Y-42690000D03*
D13*
X123570000Y-43960000D03*
X121500000Y-45230000D03*
D12*
X138400000Y-93900000D03*
D29*
X136330000Y-92630000D03*
X138400000Y-91360000D03*
D12*
X121490000Y-91400000D03*
D13*
X123560000Y-92670000D03*
X121490000Y-93940000D03*
D19*
X114000000Y-32610000D03*
D20*
X106800000Y-32610000D03*
D21*
X203000000Y-117250000D03*
D24*
X177250000Y-42790000D03*
D25*
X177250000Y-40250000D03*
D11* D11*
X144200000Y-74300000D03* X123000000Y-48570000D03*
D14* D12*
X144200000Y-84460000D03* X123000000Y-38410000D03*
D17*
X122230000Y-59710000D03*
D18* D18*
X114000000Y-32610000D03*
D19*
X106800000Y-32610000D03*
D11*
X106840000Y-45670000D03*
D12*
X117000000Y-45670000D03*
D11*
X106770000Y-94230000D03*
D12*
X116930000Y-94230000D03*
D20*
X203000000Y-113500000D03*
D23*
X177250000Y-47250000D03*
D24*
X177250000Y-44710000D03*
D11*
X122930000Y-75660000D03*
D12*
X122930000Y-65500000D03*
D11*
X147430000Y-81890000D03*
D12*
X147430000Y-92050000D03*
D15*
X158500000Y-111250000D03*
D16*
X122230000Y-59710000D03*
D17*
X122230000Y-62250000D03* X122230000Y-62250000D03*
D11* D11*
X197830000Y-84250000D03* X197830000Y-84250000D03*
D14* D12*
X187670000Y-84250000D03* X187670000Y-84250000D03*
D33* D30*
X169750000Y-50800000D03* X169750000Y-52500000D03*
M02* M02*

View file

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
G04 #@! TF.CreationDate,2024-09-25T02:09:32+02:00* G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00*
G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?* G04 #@! TF.ProjectId,CanGrow,43616e47-726f-4772-9e6b-696361645f70,rev?*
G04 #@! TF.SameCoordinates,Original* G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Top* G04 #@! TF.FileFunction,Paste,Top*
G04 #@! TF.FilePolarity,Positive* G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*% %FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32* G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-05 14:32:50*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
M48 M48
; DRILL file {KiCad 8.0.5} date 2024-09-25T02:09:34+0200 ; DRILL file {KiCad 8.0.3} date 2024-06-05T14:32:52+0200
; FORMAT={-:-/ absolute / metric / decimal} ; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2024-09-25T02:09:34+02:00 ; #@! TF.CreationDate,2024-06-05T14:32:52+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.5 ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3
; #@! TF.FileFunction,NonPlated,1,2,NPTH ; #@! TF.FileFunction,NonPlated,1,2,NPTH
FMAT,2 FMAT,2
METRIC METRIC
@ -12,5 +12,5 @@ T1C1.100
G90 G90
G05 G05
T1 T1
X108.9Y-48.62 X108.91Y-48.54
M30 M30

File diff suppressed because it is too large Load diff

View file

@ -1,114 +1,87 @@
M48 M48
; DRILL file {KiCad 8.0.5} date 2024-09-25T02:09:34+0200 ; DRILL file {KiCad 8.0.3} date 2024-06-05T14:32:52+0200
; FORMAT={-:-/ absolute / metric / decimal} ; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2024-09-25T02:09:34+02:00 ; #@! TF.CreationDate,2024-06-05T14:32:52+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.5 ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3
; #@! TF.FileFunction,Plated,1,2,PTH ; #@! TF.FileFunction,Plated,1,2,PTH
FMAT,2 FMAT,2
METRIC METRIC
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T1C0.750 T1C0.800
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T2C0.800 T2C0.900
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T3C0.900 T3C1.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T4C1.000 T4C1.020
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T5C1.020 T5C1.100
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T6C1.100 T6C2.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T7C2.000 T7C3.200
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T8C3.200 T8C4.500
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T9C4.500
% %
G90 G90
G05 G05
T1 T1
X121.89Y-91.4
X121.89Y-93.94
X121.9Y-42.69
X121.9Y-45.23
X121.9Y-69.86
X121.9Y-72.4
X123.16Y-92.67
X123.17Y-43.96
X123.17Y-71.13
X127.8Y-42.69
X127.8Y-45.23
X127.8Y-69.86
X127.8Y-72.4
X127.83Y-91.4
X127.83Y-93.94
X129.07Y-43.96
X129.07Y-71.13
X129.1Y-92.67
X136.7Y-71.1
X136.73Y-43.9
X136.73Y-92.63
X137.97Y-69.83
X137.97Y-72.37
X138.0Y-42.63
X138.0Y-45.17
X138.0Y-91.36
X138.0Y-93.9
T2
X101.455Y-94.2 X101.455Y-94.2
X101.5Y-90.1 X101.5Y-90.1
X102.5Y-66.2
X102.5Y-68.7
X103.955Y-94.2 X103.955Y-94.2
X104.0Y-90.1 X104.0Y-90.1
X106.695Y-69.5 X106.75Y-69.5
X106.7Y-73.5 X106.75Y-72.75
X106.74Y-95.0
X106.75Y-100.25 X106.75Y-100.25
X106.77Y-90.98 X106.77Y-90.98
X106.77Y-94.23
X106.84Y-42.42 X106.84Y-42.42
X106.84Y-46.0 X106.84Y-45.67
X116.855Y-69.5 X116.91Y-69.5
X116.86Y-73.5 X116.91Y-72.75
X116.9Y-95.0
X116.91Y-100.25 X116.91Y-100.25
X116.93Y-90.98 X116.93Y-90.98
X116.93Y-94.23
X117.0Y-42.42 X117.0Y-42.42
X117.0Y-46.0 X117.0Y-45.67
X123.6Y-108.75 X119.795Y-54.75
X123.6Y-111.25 X122.25Y-108.75
X130.723Y-100.478 X122.25Y-111.25
X130.748Y-97.938 X122.295Y-54.75
X130.748Y-108.846 X122.93Y-65.5
X130.748Y-111.386 X122.93Y-75.66
X131.8Y-50.8 X123.0Y-38.41
X133.0Y-35.15 X123.0Y-48.57
X133.0Y-45.31 X123.52Y-88.85
X133.0Y-62.3 X128.179Y-100.455
X133.0Y-72.46 X128.204Y-97.915
X133.0Y-83.84 X128.204Y-108.71
X133.0Y-94.0 X128.204Y-111.25
X136.32Y-32.6 X131.11Y-67.485
X136.325Y-39.6 X131.11Y-70.025
X139.9Y-53.32 X131.18Y-40.145
X139.9Y-63.48 X131.18Y-42.685
X139.92Y-66.5 X133.68Y-88.85
X144.2Y-74.3 X136.01Y-88.93
X144.2Y-84.46 X136.01Y-91.47
X146.48Y-32.6 X138.73Y-67.485
X146.485Y-39.6 X138.73Y-70.025
X149.544Y-108.86 X138.8Y-40.145
X149.544Y-111.4 X138.8Y-42.685
X149.646Y-100.478 X142.68Y-60.34
X149.671Y-97.938 X142.68Y-70.5
X150.08Y-66.5 X142.75Y-33.0
X153.1Y-67.85 X142.75Y-43.16
X153.1Y-78.01 X143.63Y-88.93
X156.5Y-67.86 X143.63Y-91.47
X156.6Y-108.75 X147.0Y-108.837
X156.6Y-111.25 X147.0Y-111.377
X169.75Y-50.8 X147.102Y-100.455
X147.127Y-97.915
X147.43Y-81.89
X147.43Y-92.05
X153.5Y-108.75
X153.5Y-111.25
X177.75Y-92.25 X177.75Y-92.25
X181.83Y-85.75 X181.83Y-85.75
X181.83Y-88.25 X181.83Y-88.25
@ -117,14 +90,13 @@ X185.34Y-52.9
X187.67Y-84.25 X187.67Y-84.25
X187.67Y-88.25 X187.67Y-88.25
X187.91Y-92.25 X187.91Y-92.25
X188.0Y-67.9
X188.02Y-71.05 X188.02Y-71.05
X195.5Y-29.2 X195.5Y-29.2
X195.5Y-52.9 X195.5Y-52.9
X197.83Y-84.25 X197.83Y-84.25
X197.83Y-88.25 X197.83Y-88.25
X198.18Y-71.05 X198.18Y-71.05
T3 T2
X106.76Y-66.24 X106.76Y-66.24
X106.77Y-87.72 X106.77Y-87.72
X106.87Y-39.16 X106.87Y-39.16
@ -143,55 +115,55 @@ X170.83Y-82.25
X170.83Y-92.41 X170.83Y-92.41
X174.83Y-82.25 X174.83Y-82.25
X174.83Y-92.41 X174.83Y-92.41
T4 T3
X150.1Y-27.46 X150.1Y-31.75
X150.1Y-30.0 X150.1Y-34.29
X150.1Y-32.54 X150.1Y-36.83
X150.1Y-35.08 X150.1Y-39.37
X150.1Y-37.62 X150.1Y-41.91
X150.1Y-40.16 X150.1Y-44.45
X150.1Y-42.7 X150.1Y-46.99
X150.1Y-45.24 X150.1Y-49.53
X172.96Y-27.46 X172.42Y-99.25
X172.96Y-30.0 X172.96Y-31.75
X172.96Y-32.54 X172.96Y-34.29
X172.96Y-35.08 X172.96Y-36.83
X172.96Y-37.62 X172.96Y-39.37
X172.96Y-40.16 X172.96Y-41.91
X172.96Y-42.7 X172.96Y-44.45
X172.96Y-45.24 X172.96Y-46.99
X177.25Y-40.25 X172.96Y-49.53
X177.25Y-42.79 X174.96Y-99.25
X177.25Y-44.71
X177.25Y-47.25
X177.5Y-99.25
X187.865Y-33.98 X187.865Y-33.98
X187.865Y-38.63 X187.865Y-38.63
X187.865Y-43.25 X187.865Y-43.25
X187.87Y-47.89 X187.87Y-47.89
X190.32Y-77.0
X190.405Y-33.98 X190.405Y-33.98
X190.405Y-38.63 X190.405Y-38.63
X190.405Y-43.25 X190.405Y-43.25
X190.41Y-47.89 X190.41Y-47.89
X190.52Y-99.25 X190.875Y-77.05
X192.86Y-77.0
X192.945Y-33.98 X192.945Y-33.98
X192.945Y-38.63 X192.945Y-38.63
X192.945Y-43.25 X192.945Y-43.25
X192.945Y-60.1 X192.945Y-60.1
X192.95Y-47.89 X192.95Y-47.89
X193.06Y-99.25 X193.415Y-77.05
X195.4Y-77.0
X195.485Y-33.98 X195.485Y-33.98
X195.485Y-38.63 X195.485Y-38.63
X195.485Y-43.25 X195.485Y-43.25
X195.485Y-60.1 X195.485Y-60.1
X195.49Y-47.89 X195.49Y-47.89
X195.6Y-99.25 X195.955Y-77.05
T4
X103.83Y-50.7
X106.37Y-50.7
X108.91Y-50.7
X111.45Y-50.7
T5 T5
X103.82Y-50.78
X106.36Y-50.78
X108.9Y-50.78
X111.44Y-50.78
T6
X129.68Y-57.17 X129.68Y-57.17
X129.68Y-59.71 X129.68Y-59.71
X129.68Y-62.25 X129.68Y-62.25
@ -201,15 +173,21 @@ X129.68Y-83.75
X129.8Y-30.07 X129.8Y-30.07
X129.8Y-32.61 X129.8Y-32.61
X129.8Y-35.15 X129.8Y-35.15
X136.75Y-52.5
X138.43Y-78.67 X138.43Y-78.67
X138.43Y-81.21 X138.43Y-81.21
X138.43Y-83.75 X138.43Y-83.75
X153.75Y-68.0
X157.5Y-68.0
X158.5Y-111.25
X169.75Y-52.5
X193.0Y-65.0
T7
X87.0Y-26.5
X87.0Y-113.5
X203.0Y-26.5
X203.0Y-113.5
T8 T8
X87.0Y-22.75
X87.0Y-117.25
X203.0Y-22.75
X203.0Y-117.25
T9
X106.73Y-59.7 X106.73Y-59.7
X106.73Y-81.22 X106.73Y-81.22
X106.79Y-108.095 X106.79Y-108.095
@ -218,7 +196,7 @@ X113.93Y-59.7
X113.93Y-81.22 X113.93Y-81.22
X113.99Y-108.095 X113.99Y-108.095
X114.0Y-32.61 X114.0Y-32.61
T7 T6
X96.5Y-35.15G85X96.5Y-31.15 X96.5Y-35.15G85X96.5Y-31.15
G05 G05
X96.5Y-44.45G85X96.5Y-40.45 X96.5Y-44.45G85X96.5Y-40.45

Binary file not shown.

Before

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

View file

@ -4,63 +4,25 @@
![CanGrowLogo](Logo/CanGrow_Logo.png) ![CanGrowLogo](Logo/CanGrow_Logo.png)
An easy to use DIY grow controller firmware (for cannabis). A simple DIY plant growing system (for cannabis).
![Screenshot_WebUI_root.png](Arduino/CanGrow/Screenshot_WebUI_root.png)
![CanGrow_PCB_Front.png](KiCad/CanGrow/CanGrow_PCB_Front_small.png) ![CanGrow_PCB_Front.png](KiCad/CanGrow/CanGrow_PCB_Front_small.png)
![Screenshot_WebUI_root.png](Arduino/CanGrow/Screenshot_WebUI_root.png)
# WORK IN PROGRESS # WORK IN PROGRESS
## Motivation ## Motivation
I havn't found an already existing grow controller project within the ESP / Arduino Core eco system which
met my personal requirements.
Those are an easy DIY, using low cost parts, Arduino Core sourcecode to hack own things together, having a WebUI, grab some Metrics for monitoring, standalone and my very special need that the Hardware should run completely with 12V.
### Update 14.09.2024 - Code Rewrite v0.2 I want to build a simple grow system, which I can power by my off-grid
12V solar system. So this project is limited to a small 40x40x120 tent
for one plant with a 50W 12V grow LED light.
I took some "summer break" from the project, and had the opportunity to talk to different people about it. As I did it for my solar system, the measurements of this project will be shown
My conclusion at this point is, that the focus of this project is not the Hardware, it came out that it should be the software. on my website. For that a REST API is planned.
So I decided to completely rewrite the code from 0 - with recycling some parts of it.
Goal of the Rewrite is that the Firmware becomes more independent of the hardware used. It has to support both ESP8266 and ESP32
and let the user decide at which pin which output, sensor or whatever will be connected to. Like done in the [Tasmota](https://github.com/arendst/Tasmota) Firmware, I also want to support "Hardware Templates" which come with presets for PCBs like the one I created.
**Checklist for v0.2 Firmware** I want to automate as much as possible which makes sense and is easy to build.
- Support ESP8266 and ESP32
- AsyncWebserver instead ESP8266Webserver
- LittleFS instead of EEPROM()
- deliver static HTML, dynamic Stuff with Javascript
- (or is there a better way? please tell me!)
- Free configurable outputs
- Main outputs for Light, Air, Water
- Support for Tasmota Wifi Plugs (and others?)
- No Limitation for Amount of outputs
- Light
- support for I2C 0-10V Dimm control
- PWM dimm control
- Air
- support for I2C 0-10V Dimm control
- PWM dimm control
- Support for humidifier, heater (, CO2?)
- Read Fan RPM
- Water
- Usual watering
- Pump for fertilizer
- Free configurable Inputs
- Support for various I2C devices
- All kind of sensors for Temp, Humidity, Moisture, and so on
- Support for ADCs to connect multiple analoge sensors
- Support for Analog inputs
- onboard ones or I2C (ADC)
- Analog Multiplexer support (like CD4051)
- Calibrate sensors
- define 0% and 100% values
- Offsets
- MQTT support
- API
## Features / ToDo List
## Old v0.1 Features / ToDo List
- Measure values :white_check_mark: - Measure values :white_check_mark:
- Humidity :white_check_mark: - Humidity :white_check_mark:
@ -92,3 +54,14 @@ and let the user decide at which pin which output, sensor or whatever will be co
- low cost as possible! :white_check_mark: - low cost as possible! :white_check_mark:
:white_check_mark: Done - :large_blue_circle: In Progress - :red_circle: ToDo :white_check_mark: Done - :large_blue_circle: In Progress - :red_circle: ToDo
## Parts used
- ESP8266 D1 mini
- BME280 humidity and temp sensor
- I2C soil moisture sensor: https://github.com/Miceuz/i2c-moisture-sensor / https://eu.robotshop.com/de/products/i2c-soil-moisture-sensor
- cheap capacitive soilmoisture sensor: https://www.az-delivery.de/products/bodenfeuchte-sensor-modul-v1-2
- 50W LED 12V full spectrum grow light: https://www.ebay.de/itm/354322466159
- MOSFETS (some i have fyling around, IRFZ44, IRF3205, IRF3710, BUZZ11...)
- 12V 4W water pump set https://www.ebay.de/itm/394413649692

View file

@ -1,3 +0,0 @@
board_manager:
additional_urls:
- http://arduino.esp8266.com/stable/package_esp8266com_index.json

View file

@ -4,98 +4,39 @@
test -z $TTY && TTY="/dev/ttyUSB0" test -z $TTY && TTY="/dev/ttyUSB0"
test -z $IP && IP="192.168.30.212" test -z $IP && IP="192.168.30.212"
test -z $VER && VER="0.1-dev" test -z $VER && VER="0.1-dev"
BUILD="$(git rev-parse --short HEAD)-$(date '+%Y%m%d%H%M%S')" BUILD="$(git rev-parse --short HEAD)"
ACLI="$HOME/.local/bin/arduino-cli"
ACLI_CMD="$ACLI --config-file arduino-cli.yml"
BOARD="esp8266:esp8266:d1_mini_clone"
function help() { function help() {
echo "$0 [setup|build|upload|webupload|monitor]" echo "$0 [build|upload|webupload|monitor]"
echo "setup: setup build environment, download arduino-cli, install all dependencies for arduino ide"
echo "build: build firmware binary. will be saved into build/"
echo "upload: upload firmware by serial connection $TTY"
echo "webupload: upload firmware with webupload to $IP"
echo "monitor: serial monitor $TTY"
exit 1 exit 1
} }
function check_acli() {
if [ ! -x $ACLI ]
then
echo "$ACLI does not exist nor is executable. Please run '$0 setup' first"
exit 1
fi
}
test -z $1 && help test -z $1 && help
case $1 in case $1 in
s|setup)
ACLI_DIR="$(dirname $ACLI)"
declare -a LIBS=( "Adafruit SSD1306" "Adafruit BME280 Library" "ArduinoJson" "NTPClient" "Time" )
echo ":: Setting up build environment for CanGrow Firmware."
echo " This will download the binary for arduino-cli and install"
echo " the packages for the arduino ide from the debian repository."
echo " !! This script is meant to be executed on a Debian stable (bookworm) system !!"
echo ""
echo ":: Press Enter to continue"
read
echo ""
echo ":: Installing Arduino IDE packages with apt, please enter sudo password:"
sudo apt update
sudo apt install arduino python3 wget curl xxd
echo ":: Ensure directory ${ACLI_DIR} is present"
test -d ${ACLI_DIR} || mkdir -p ${ACLI_DIR}
echo ":: Please ensure ${ACLI_DIR} is in your \$PATH, I wont do it."
echo ""
echo ":: Downloading arduino-cli 1.0.0 into ${ACLI_DIR}/"
wget -O - "https://github.com/arduino/arduino-cli/releases/download/v1.0.0/arduino-cli_1.0.0_Linux_64bit.tar.gz" | tar -C ${ACLI_DIR} -zxvf - arduino-cli
chmod +x ${ACLI}
echo ""
echo ":: Installing ESP8266 core for Arduino"
${ACLI_CMD} core install esp8266:esp8266
echo ":: Installing Arduino libraries"
for lib in ${!LIBS[@]}
do
echo " - ${LIBS[$lib]}"
done
for lib in ${!LIBS[@]}
do
${ACLI_CMD} lib install "${LIBS[$lib]}"
done
echo ""
echo ":: Setup build environment done! You can now build the firmware"
echo " with: $0 build"
;;
b|build) b|build)
check_acli echo "building firmware $VER $BUILD, target dir: $(pwd)/build/"
echo ":: Building firmware $VER $BUILD, target dir: $(pwd)/build/"
test -d build || mkdir build test -d build || mkdir build
echo "/* CanGrow_Version.h gets generated from cangrow.sh */ echo "/* CanGrow_Version.h gets generated from cangrow.sh */
const char* CanGrowVer = \"${VER}\"; const char* CanGrowVer = \"${VER}\";
const char* CanGrowBuild = \"${BUILD}\"; const char* CanGrowBuild = \"${BUILD}\";
" > Arduino/CanGrow/CanGrow_Version.h " > Arduino/CanGrow/CanGrow_Version.h
${ACLI_CMD} --no-color compile -b ${BOARD} "Arduino/CanGrow/CanGrow.ino" --output-dir build/ || exit 1 ~/.local/bin/arduino-cli --no-color compile -b esp8266:esp8266:d1_mini_clone "Arduino/CanGrow/CanGrow.ino" --output-dir build/ || exit 1
cp build/CanGrow.ino.bin build/CanGrow_v${VER}_${BUILD}.bin cp build/CanGrow.ino.bin build/CanGrow_v${VER}_${BUILD}.bin
;; ;;
u|upload) u|upload)
check_acli echo "uploading to $TTY"
echo ":: Uploading to $TTY" ~/.local/bin/arduino-cli --no-color compile -v -b esp8266:esp8266:d1_mini_clone -u -p $TTY "Arduino/CanGrow/CanGrow.ino"
${ACLI_CMD} --no-color compile -v -b ${BOARD} -u -p $TTY "Arduino/CanGrow/CanGrow.ino"
;; ;;
w|webupload) w|webupload)
echo ":: Uploading to $IP" echo "uploading to $IP"
curl -v http://$IP/system/applyUpdate -X POST -H 'Content-Type: multipart/form-data' -F "firmware=@$(pwd)/build/CanGrow.ino.bin" curl -v http://$IP/system/applyUpdate -X POST -H 'Content-Type: multipart/form-data' -F "image=@$(pwd)/build/CanGrow.ino.bin"
echo echo
;; ;;
m|mon|monitor) m|mon|monitor)
check_acli echo "open monitor $TTY"
echo ":: Open serial monitor $TTY" ~/.local/bin/arduino-cli monitor -c baudrate=115200 -p $TTY
${ACLI_CMD} monitor -c baudrate=115200 -b ${BOARD} -p $TTY
;; ;;
*) *)
help help