Compare commits

...

74 commits

Author SHA1 Message Date
Marcus
461b816115 set Wire.setClockStretchLimit(2500) because aliexpress chirp clone does not work correctly 2024-11-22 01:51:03 +01:00
1c0beb58aa pcb wip v0.6.1 - minor silkscreen tweak. 2024-09-25 02:11:13 +02:00
bcfd9d74ee pcb - v0.6.1 gerber files 2024-09-24 23:41:43 +02:00
58dc9f4ff0 renew schematics pdf v0.6.1 2024-09-24 23:16:03 +02:00
42432a3de3 pcb wip - v0.6.1 , kicad proj dependency fix, minor adjustments 2024-09-24 23:13:21 +02:00
368ec7a8b3 schematics v0.6.1 - 100k instead of 10k 3.3V pullup for mosfet drivers 2024-09-24 22:43:45 +02:00
a690758476 firmware wip - didnt broke watering, just forgot a semicolone and was dumb 2024-09-19 02:22:46 +02:00
d2e264db56 firmware wip - quick hack inverted outputs for pcb v0.6 together. but watering now broke a bit 2024-09-19 02:11:57 +02:00
56d9756744 README.md aktualisiert 2024-09-14 21:04:14 +02:00
562d46a2e2 README.md aktualisiert 2024-09-14 21:01:52 +02:00
14f752413f README.md aktualisiert 2024-09-14 16:43:48 +02:00
df69103dff README.md aktualisiert 2024-09-14 16:36:48 +02:00
c78dc3368f README.md aktualisiert 2024-09-14 16:34:14 +02:00
b74d0c88ca README WIP 2024-09-14 16:33:05 +02:00
c59f790c15 arduino-cli now wants to have board specified in monitor mode 2024-09-14 15:57:14 +02:00
1a1fd39ffa add large favico png 2024-09-11 00:33:06 +02:00
9687cfe00d replace Arduino/Screenshot_WebUI_root.png 2024-07-30 19:44:50 +02:00
3a5c0cbfa8 replace Arduino/Screenshot_WebUI_root.png 2024-07-30 19:43:02 +02:00
7a5baf009b firmware wip - change pwm freq to 13.37KHz, add xxd to ./cangrow setup 2024-07-30 19:40:36 +02:00
6554c0ae0a PCB - v0.6 2024-07-25 21:17:52 +02:00
f32e16d28b PCB WIP - silk mask label was on the wrong side 2024-07-25 19:25:37 +02:00
76c1bf08d6 PCB WIP - MP1584 + Pins were a bit too high 2024-07-25 19:24:10 +02:00
8ac87db926 PCB WIP - minor tweaks 2024-07-25 19:16:53 +02:00
78632d1d65 PCB WIP - change value of resistor for ESP outputs 2024-07-25 01:29:11 +02:00
01887c16de PCB WIP - v0.6 minor adjustments, cleanupfinalized 2024-07-24 23:35:09 +02:00
2b67376b57 PCB WIP - v0.6 with new totem pole driver so far finalized 2024-07-24 22:31:07 +02:00
619ad570f4 PCB WIP - v0.6 with new totem pole driver so far finalized 2024-07-24 22:30:41 +02:00
6688cc788a PCB WIP - routing 2024-07-24 22:27:50 +02:00
d53cd91215 PCB WIP - routing 2024-07-24 22:22:34 +02:00
d046348ba9 PCB WIP - routing 2024-07-24 22:11:50 +02:00
3bc4ca4ce0 PCB WIP - routing 2024-07-24 22:09:58 +02:00
b260895de0 PCB WIP - routing 2024-07-24 22:09:01 +02:00
4036c5742c PCB WIP - routing 2024-07-24 22:07:16 +02:00
d6989ebe6d PCB WIP - routing 2024-07-24 21:44:23 +02:00
b245359a42 PCB WIP - routing 2024-07-24 21:28:52 +02:00
5e567e9256 PCB WIP - a new mosfet driver, again - now a real totem pole, i guess thats the best :) 2024-07-24 00:32:02 +02:00
c5e51ae070 pcb - increase trace thickness 2024-07-15 01:29:19 +02:00
56ec6cf87f pcb wip - minor tweaks, mostly cosmetics 2024-07-06 20:19:39 +02:00
3c441946fb pcb wip - routing things 2024-07-05 21:28:58 +02:00
24b7449580 pcb wip - routing things 2024-07-05 21:28:06 +02:00
1d249fce0f pcb wip - routing things 2024-07-05 21:18:44 +02:00
8640c29000 align all IO connectors right 2024-07-05 20:33:58 +02:00
391d5816ae pcb - v0.6 in main things done 2024-06-29 19:09:51 +02:00
eb98ba4abb pcb wip - move some f.paste stuff 2024-06-29 19:04:53 +02:00
de6dde5f9a pcb wip - replace solder wire footprints with smaller ones 2024-06-29 18:57:53 +02:00
7e5bd28746 pcb wip - remove uneccesary trace on Fcu 2024-06-29 18:43:56 +02:00
e5e13bbae3 pcb wip - implement new mosfet driver 2024-06-27 22:32:09 +02:00
20c4dcc397 pcb wip - implement new mosfet driver 2024-06-27 20:28:04 +02:00
d0a377dcca pcb wip - implement new mosfet driver 2024-06-27 20:26:39 +02:00
25d95b742f pcb wip - implement new mosfet driver 2024-06-27 19:53:25 +02:00
8876bbd4e8 pcb wip - implement new mosfet driver 2024-06-27 19:39:39 +02:00
3e29487286 pcb wip - implement new mosfet driver 2024-06-27 19:36:27 +02:00
362ebc7077 pcb wip - implement new mosfet driver 2024-06-27 19:35:46 +02:00
55d4cfb4b5 pcb wip - implement new mosfet driver 2024-06-27 19:05:13 +02:00
54c7e84de7 pcb wip - implement new mosfet driver 2024-06-27 17:30:08 +02:00
806aa2d057 firmware wip - improve factory reset (wipe) from WebUI 2024-06-17 02:23:26 +02:00
0354a7cfbf firmware wip - pump mode manual, write PumpLastOn to EEPROM 2024-06-17 01:57:06 +02:00
f8523e1577 firmware wip - pump mode 3, write PumpLastOn to EEPROM 2024-06-17 01:55:58 +02:00
37e0b33cf3 firmware wip - wip pump control 2024-06-17 01:48:58 +02:00
a51cd81651 firmware wip - add basic manual pump on POST 2024-06-16 20:53:29 +02:00
54fec62a3e firmware wip - add pump control 2024-06-16 20:16:40 +02:00
e1fcb09ae7 cangrow.sh - add curl an wget to apt packages 2024-06-16 19:40:41 +02:00
1b1c0ce391 notes 2024-06-16 03:20:49 +02:00
d6bd0f7638 firmware wip - begin to write pump watering stuff 2024-06-16 03:09:50 +02:00
a0f3db9a77 cangrow.sh - add python3 to apt packages 2024-06-16 02:14:13 +02:00
064db734d5 firmware wip - firmware updater form update 2024-06-16 01:12:36 +02:00
f5dc0b161a add arduino-cli.yml 2024-06-16 00:55:11 +02:00
25bf84ee1e firmware wip - make firmware file required on form 2024-06-16 00:08:03 +02:00
bacb48a918 cangrow.sh add help text 2024-06-16 00:04:28 +02:00
1d667bd665 cangrow.sh add help text 2024-06-16 00:03:38 +02:00
4fc9f62a26 cangrow.sh add help text 2024-06-16 00:02:34 +02:00
f4556f75d4 cangrow.sh - add setup, to setup cangrow build environment 2024-06-15 23:59:00 +02:00
52abf8e483 firmware wip - add some notes for watering logic, adjust soilmoisture low value 2024-06-15 22:44:09 +02:00
cbc20586c4 firmware wip - add some notes for watering logic, adjust soilmoisture low value 2024-06-15 22:43:46 +02:00
36 changed files with 50849 additions and 45743 deletions

View file

@ -71,16 +71,16 @@ void setup() {
// set all OUTPUT to low // set all OUTPUT to low
digitalWrite(PinFAN, LOW); digitalWrite(PinFAN, HIGH);
digitalWrite(PINwaterlevel, LOW); digitalWrite(PINwaterlevel, LOW);
digitalWrite(PinLED, LOW); digitalWrite(PinLED, HIGH);
digitalWrite(PinPUMP, LOW); digitalWrite(PinPUMP, HIGH);
// 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 2.2KHz // set PWM frequency to 13.37KHz
analogWriteFreq(2200); analogWriteFreq(13370);
// 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,6 +273,14 @@ void loop() {
/*
* Fan control
*
* Vars:
* - FanVent (byte) Fan1 or Fan2
* - FanExhaust (byte) Fan1 or Fan2
* -
*/

View file

@ -74,6 +74,9 @@ a:active {
width: 42px; width: 42px;
} }
.helpbox {
font-size: 0.8em;
}
.nav { .nav {
background: #333; background: #333;
width: 100%; width: 100%;
@ -210,8 +213,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>
Sensor data: <code>GET /api/sensors</code> <a href='/api/sensors' target='_blank'>Sensor data</a>: <code>GET /api/sensors</code><br>
Debug all data: <code>GET /api/debug</code> <a href='/api/debug' target='_blank'>Debug all data:</a> <code>GET /api/debug</code>
)EOF"; )EOF";
@ -505,10 +508,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'> <form method='POST' action='/system/applyUpdate' enctype='multipart/form-data' onsubmit="document.getElementById('divUploading').style.display = '';">
<b>Select .bin file:</b><br> <b>Select .bin file:</b><br>
<input type='file' accept='.bin,.bin.gz' name='firmware'> <input type='file' accept='.bin,.bin.gz' name='firmware' required>
<input type='submit' value='Update Firmware' onclick="document.getElementById('divUploading').style.display = '';"> <input type='submit' value='Update Firmware'>
</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()
byte valSoilmoisture; unsigned short 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,6 +38,18 @@ 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
* *
@ -79,12 +91,14 @@ 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 = 20; byte SoilmoistureLow = 80;
// UsePump - is the pump used? bool // UsePump - is the pump used? bool
bool UsePump; // PumpMode (short) 1: Pump on every n days, 2: Pump on when Soilmoisture <= SoilmoistureLow, 3: Both
byte UsePump;
// UseFan - is the fan used? bool // UseFan - is the fan used? bool
// PumpOnTime in seconds
byte PumpOnTime = 3; byte PumpOnTime = 3;
bool UseFan; byte 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;
@ -93,6 +107,10 @@ 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
@ -127,6 +145,10 @@ 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,7 +187,13 @@ int getSoilmoisture(byte moistureSensor, bool returnRAW = false) {
if(returnRAW == true) { if(returnRAW == true) {
return soilmoisture; return soilmoisture;
} else { } else {
return map(soilmoisture, wet, dry, 100, 0); short soilmoistureP = map(soilmoisture, wet, dry, 100, 0);
// dont return negative percentage values
if(soilmoistureP < 0) {
return 0;
} else {
return soilmoistureP;
}
} }
} }

View file

@ -104,7 +104,10 @@ bool loadEEPROM() {
* 218 SunFadeDuration * 218 SunFadeDuration
* 219 MaintenanceDuration (2 byte) * 219 MaintenanceDuration (2 byte)
* 221 Esp32CamIP (16 byte) * 221 Esp32CamIP (16 byte)
* 237 ... * 237 PumpLastOn (4 byte)
* 241 PumpIntervalVeg (1 byte)
* 242 PumpIntervalBloom (1 byte)
* 243 ...
* *
*/ */
@ -168,6 +171,9 @@ 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);
@ -202,6 +208,10 @@ 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);
} }
@ -360,6 +370,30 @@ 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
@ -405,9 +439,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, OutputState); digitalWrite(OutputPin, 1 - OutputState);
} else { } else {
analogWrite(OutputPin, OutputState); analogWrite(OutputPin, 255 - OutputState);
} }
} }
@ -418,15 +452,22 @@ 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();
if(DayOfGrow > DaysVeg ) { switch(growState()) {
lightHours = LighthoursBloom; case 1:
} else {
lightHours = LighthoursVeg; lightHours = LighthoursVeg;
break;
case 2:
lightHours = LighthoursBloom;
break;
default:
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))) ) ){ if( ((secondsToday >= secondsSunrise) && (secondsToday <= ( secondsSunrise + (lightHours * 60 * 60))) ) && (growState() < 3) ){
//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
@ -460,10 +501,25 @@ 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() {
@ -499,7 +555,8 @@ 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);
@ -511,9 +568,10 @@ void displayScreens() {
display.println(""); display.println("");
display.print("Moisture: "); display.print("Moisture: ");
display.print(valSoilmoisture); display.print(valSoilmoisture);
display.println(" %"); display.print(" % ");
display.println(valSoilmoistureAvg);
display.println(""); display.println("");
if(UsePump == true) { if(UsePump > 0) {
display.print("Pump Waterlvl: "); display.print("Pump Waterlvl: ");
switch(valWaterlevel) { switch(valWaterlevel) {
case 0: case 0:
@ -567,26 +625,128 @@ void displayScreens() {
} }
unsigned short growState() {
/* /*
* growState() * Pump control
* *
* returns growState as short * Vars:
* - 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
* *
* 1 - vegetation * - PumpIntervalVeg (byte) in days
* 2 - bloom * - PumpIntervalBloom (byte) in days
* 3 - harvest
* *
*/ */
unsigned short state;
if(DayOfGrow > (DaysVeg + DaysBloom ) ) { void controlPUMP() {
state = 3; byte PumpInterval;
} else if(DayOfGrow > DaysVeg ) {
state = 2; // UsePump true and not in harvest state?
// dont water within the first 15 sec after startup
if ( (UsePump > 0) && (growState() < 3) && (millis() > 15000) ) {
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
if(PumpOnManual == true) {
if(PumpOnTimePassed < PumpOnTime) {
setOutput(3, 1);
//digitalWrite(PinPUMP, HIGH);
PumpOnTimePassed++;
} else { } else {
state = 1; 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;
return state; 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 = "72bb58c"; const char* CanGrowBuild = "d2e264d-20240919022041";

View file

@ -180,22 +180,16 @@ 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/wipe'><input type='hidden' name='confirmed' value='true' /><input type='submit' value='Confirm wiping' /></form>"; 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 += "</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();
@ -368,11 +362,11 @@ void WEBroot() {
body += "&#x1F33C; bloom<br>\n"; body += "&#x1F33C; bloom<br>\n";
break; break;
case 3: case 3:
body += "&#x1F342; harvest<br>\n"; body += "&#x1F342; harvest\n";
break; break;
} }
if(UsePump == true) { if(UsePump > 0) {
body += "<b>Pump water level:</b> "; body += "<b>Pump water level:</b> ";
switch(getWaterlevel()) { switch(getWaterlevel()) {
case 0: case 0:
@ -472,19 +466,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;
@ -515,6 +509,20 @@ 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);
@ -551,18 +559,31 @@ void WEBsystemSettings() {
body += "<form method='post' action='/systemSettings/save'>\n"; body += "<form method='post' action='/systemSettings/save'>\n";
// UseFan bool // UseFan bool
body += "Use FAN: <select id='UseFan' name='UseFan' required>\n"; body += "Fan mode: <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, 1) + ">Yes</option>\n"; body += "<option value='1'" + returnStrSelected(UseFan, 0) + ">Off</option>\n";
body += "<option value='0'" + returnStrSelected(UseFan, 0) + ">No</option>\n"; body += "<option value='1'" + returnStrSelected(UseFan, 1) + ">Use</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";
@ -580,10 +601,11 @@ 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) {
@ -741,6 +763,8 @@ 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);
@ -764,6 +788,10 @@ 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();
@ -992,6 +1020,27 @@ 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
@ -1004,6 +1053,7 @@ 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;
@ -1018,6 +1068,13 @@ 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>();
@ -1040,6 +1097,8 @@ 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>();
@ -1057,7 +1116,8 @@ 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
@ -1126,6 +1186,8 @@ 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
@ -1144,6 +1206,7 @@ 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: 60 KiB

After

Width:  |  Height:  |  Size: 291 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": 1.1, "drill": 0.8,
"height": 2.1, "height": 1.6,
"width": 2.1 "width": 1.6
}, },
"silk_line_width": 0.1, "silk_line_width": 0.1,
"silk_text_italic": false, "silk_text_italic": false,
@ -79,6 +79,7 @@
"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",
@ -491,6 +492,7 @@
}, },
"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": ",",
@ -590,7 +592,7 @@
"sheets": [ "sheets": [
[ [
"42428fce-ab8c-4a80-af19-dee4f0070d36", "42428fce-ab8c-4a80-af19-dee4f0070d36",
"Stammblatt" "Root"
] ]
], ],
"text_variables": {} "text_variables": {}

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

View file

@ -0,0 +1,152 @@
(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,6 +7,7 @@
(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
@ -18,6 +19,7 @@
(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
@ -35,6 +37,7 @@
(effects (effects
(font (font
(size 1.27 1.27) (size 1.27 1.27)
(thickness 0.15)
) )
) )
) )
@ -47,6 +50,7 @@
(effects (effects
(font (font
(size 1.27 1.27) (size 1.27 1.27)
(thickness 0.15)
) )
) )
) )
@ -59,287 +63,288 @@
(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 -11.176 -7.493) (start -10.2122 -6.0076)
(end -11.176 8.636) (end -10.2122 10.1214)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "c04c845e-4b76-4dc5-b3a1-2129724a526d") (uuid "6292f9f0-b20e-4f1e-990a-0b11f0bae5e2")
) )
(fp_line (fp_line
(start -11.176 8.636) (start -10.2122 10.1214)
(end 10.16 8.636) (end 11.1238 10.1214)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "b279bc16-0fa3-40ad-9a71-246db78cd5db") (uuid "7b8db049-a75b-4c09-b1c9-de8a147005c4")
) )
(fp_line (fp_line
(start -7.4168 -1.8796) (start -6.453 -0.3942)
(end -1.3208 -1.8796) (end -0.357 -0.3942)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "1cc5b0bc-c494-4f7d-bca7-4c61a9317e88") (uuid "c4ed20b9-5f3d-4741-9180-be3de36b2638")
) )
(fp_line (fp_line
(start -7.4168 2.5908) (start -6.453 4.0762)
(end -7.4168 -1.8796) (end -6.453 -0.3942)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "cb93a75e-f00e-4ada-977c-4ebffb53a1ef") (uuid "d7e1ea82-a28a-4e4c-8051-86a68fea340c")
) )
(fp_line (fp_line
(start -6.2992 -5.7658) (start -5.3354 -4.2804)
(end -2.8702 -5.7658) (end -1.9064 -4.2804)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "58d4cb4b-5a3f-4493-aa99-0deaf5683749") (uuid "06328989-1b0f-46d7-883b-033109387c94")
) )
(fp_line (fp_line
(start -6.2992 -4.4958) (start -5.3354 -3.0104)
(end -6.2992 -5.7658) (end -5.3354 -4.2804)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "23c244a5-fbbf-43b9-8e18-3f2c2f80daac") (uuid "8d77e0eb-1044-47c3-83fb-eeb0a96fae5d")
) )
(fp_line (fp_line
(start -2.8702 -5.7658) (start -1.9064 -4.2804)
(end -2.8702 -4.4958) (end -1.9064 -3.0104)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "dc18e288-f18f-43b9-8bf9-a20134e8fe6b") (uuid "aacf448e-591d-467e-9b05-308beed279bf")
) )
(fp_line (fp_line
(start -2.8702 -4.4958) (start -1.9064 -3.0104)
(end -6.2992 -4.4958) (end -5.3354 -3.0104)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "0db4cf0f-ac7a-4c9b-ae10-55a36ddbd4e4") (uuid "1a4d146d-43a7-4082-9120-8896a6302895")
) )
(fp_line (fp_line
(start -1.3208 2.5908) (start -0.357 4.0762)
(end -7.4168 2.5908) (end -6.453 4.0762)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "bb094c9b-9d8c-4f38-83ed-01fc7944b9a1") (uuid "28f1cc66-eb55-47b0-8a8f-d7e1518711f4")
) )
(fp_line (fp_line
(start -1.3208 2.5908) (start -0.357 4.0762)
(end -1.3208 -1.8796) (end -0.357 -0.3942)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "15406a1c-aa60-4574-94bc-bc7b1c93f995") (uuid "6820cfba-dad3-4b8f-888f-85dbe2540377")
) )
(fp_line (fp_line
(start 0.3556 -3.4544) (start 1.3194 -1.969)
(end 0.3556 3.2004) (end 1.3194 4.6858)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "7f056460-3325-494e-89b7-e00faf35b853") (uuid "6a862895-3bf4-4887-9dab-db5334a221bc")
) )
(fp_line (fp_line
(start 0.3556 -3.4544) (start 1.3194 -1.969)
(end 7.0104 -3.4544) (end 7.9742 -1.969)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "fb81112c-7565-47b2-8682-db2abbd3ddf0") (uuid "79debc5c-9a35-496c-8f29-014030f144a4")
) )
(fp_line (fp_line
(start 1.9304 -0.5969) (start 2.8942 0.8885)
(end 4.5593 -0.5969) (end 5.5231 0.8885)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "48533810-e56f-47c8-8bce-ce1c68dc9c75") (uuid "84cd7a4d-d683-4fbc-825f-665c5b0f0758")
) )
(fp_line (fp_line
(start 1.9304 0.0381) (start 2.8942 1.5235)
(end 1.9304 -0.5969) (end 2.8942 0.8885)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "03a589e3-a74e-4336-8cad-43118c287e8a") (uuid "4e52b40e-83c8-4d07-95ff-b90fa1783618")
) )
(fp_line (fp_line
(start 1.9304 0.0381) (start 2.8942 1.5235)
(end 4.5593 0.0381) (end 5.5231 1.5235)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "ce0e1e31-1518-4423-8678-79c96482e137") (uuid "a399ee1e-f3f5-4636-9f46-aa9b47e0db94")
) )
(fp_line (fp_line
(start 4.5593 -1.2954) (start 5.5231 0.19)
(end 5.8293 -0.2794) (end 6.7931 1.206)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "60031373-aa96-4773-880b-c8200b9c8446") (uuid "974ab6af-0377-40af-977c-a13764cf3b42")
) )
(fp_line (fp_line
(start 4.5593 -0.5969) (start 5.5231 0.8885)
(end 4.5593 -1.2954) (end 5.5231 0.19)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "e8ee4f92-28ab-4a33-a9f9-a6abaf63c07f") (uuid "a43ae26f-5b7d-4a6a-a076-714c678ef718")
) )
(fp_line (fp_line
(start 4.5593 0.8001) (start 5.5231 2.2855)
(end 4.5593 0.0381) (end 5.5231 1.5235)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "08acbb33-d7a2-40ec-b9c7-e1637e3c6b50") (uuid "cc8ed141-1479-47bc-b57c-ac3d7de64f29")
) )
(fp_line (fp_line
(start 5.8293 -0.2794) (start 6.7931 1.206)
(end 4.5593 0.8001) (end 5.5231 2.2855)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "93934ce2-e724-43a7-936d-d5b13ecab734") (uuid "59d9abe5-a32f-469b-9fd6-08593b95afde")
) )
(fp_line (fp_line
(start 7.0104 -3.4544) (start 7.9742 -1.969)
(end 7.0104 3.2004) (end 7.9742 4.6858)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "67302b70-b929-4d08-9b20-00ad993d7c48") (uuid "73f5a41f-61af-42a7-bacf-c58d7968f53a")
) )
(fp_line (fp_line
(start 7.0104 3.2004) (start 7.9742 4.6858)
(end 0.3556 3.2004) (end 1.3194 4.6858)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "0718d059-35cf-4406-ab64-7d7e6d83cf21") (uuid "9ec91a9f-ceda-4f7c-b422-f6a162037a63")
) )
(fp_line (fp_line
(start 10.16 -7.493) (start 11.1238 -6.0076)
(end -11.176 -7.493) (end -10.2122 -6.0076)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "3f15543c-c79e-44be-a583-62309e7f62ac") (uuid "ed6fa262-c61a-4bb7-90b5-f3b3ee971658")
) )
(fp_line (fp_line
(start 10.16 8.636) (start 11.1238 10.1214)
(end 10.16 -7.493) (end 11.1238 -6.0076)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.SilkS") (layer "F.SilkS")
(uuid "53974b4e-f4fd-4a51-b72c-09e66d707da7") (uuid "0251e69d-8ab4-482d-b741-3238b0fef811")
) )
(fp_circle (fp_circle
(center -8.1534 -4.8641) (center -7.1896 -3.3787)
(end -7.5819 -4.3561) (end -6.6181 -2.8707)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "c9f36fdc-7af5-40c1-b400-6db31e87c78d") (uuid "55702fe3-b28e-4e80-86d3-f64c403681d1")
) )
(fp_circle (fp_circle
(center -8.1026 5.8166) (center -7.1388 7.302)
(end -7.5311 6.3246) (end -6.5673 7.81)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "4e0da6f8-ad5e-4cc1-95ba-014ff87aee07") (uuid "0ffe4b1a-c314-4a3c-8456-b73925f03b28")
) )
(fp_circle (fp_circle
(center 6.4262 -4.8641) (center 7.39 -3.3787)
(end 6.9977 -4.3561) (end 7.9615 -2.8707)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "1cb73701-38be-459b-a7c5-86d645c4cc0e") (uuid "82347fd5-ab01-478d-bf06-2837edd3b9c5")
) )
(fp_circle (fp_circle
(center 6.5278 5.7912) (center 7.4916 7.2766)
(end 7.0993 6.2992) (end 8.0631 7.7846)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(fill none) (fill none)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "079e6cb8-ca9e-47a7-9f22-9f08bcf4c5ee") (uuid "f74d6220-edbd-4a39-a810-7cf19016933f")
) )
(fp_poly (fp_poly
(pts (pts
(xy -6.7056 -2.54) (xy -6.2992 -2.54) (xy -6.2992 -1.9304) (xy -6.7056 -1.9304) (xy -5.7418 -1.0546) (xy -5.3354 -1.0546) (xy -5.3354 -0.445) (xy -5.7418 -0.445)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -347,11 +352,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "9f932498-4dae-4e35-9fff-b4bb98c73816") (uuid "80ff133a-8874-4f0a-8c9e-250633a8855a")
) )
(fp_poly (fp_poly
(pts (pts
(xy -6.7056 2.6416) (xy -6.2992 2.6416) (xy -6.2992 3.2512) (xy -6.7056 3.2512) (xy -5.7418 4.127) (xy -5.3354 4.127) (xy -5.3354 4.7366) (xy -5.7418 4.7366)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -359,11 +364,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "372c02f5-61f4-4301-aca3-d818a674272e") (uuid "6e08c3a4-3092-400f-9a55-4e8081226741")
) )
(fp_poly (fp_poly
(pts (pts
(xy -5.2324 -2.54) (xy -4.826 -2.54) (xy -4.826 -1.9304) (xy -5.2324 -1.9304) (xy -4.2686 -1.0546) (xy -3.8622 -1.0546) (xy -3.8622 -0.445) (xy -4.2686 -0.445)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -371,11 +376,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "8b8d18d4-2701-4c72-966d-f580819a5bea") (uuid "6a96c3fa-8827-498f-9c6c-ffb212b62a93")
) )
(fp_poly (fp_poly
(pts (pts
(xy -5.2324 2.6416) (xy -4.826 2.6416) (xy -4.826 3.2512) (xy -5.2324 3.2512) (xy -4.2686 4.127) (xy -3.8622 4.127) (xy -3.8622 4.7366) (xy -4.2686 4.7366)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -383,11 +388,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "d6255dee-580f-4b85-9e3c-df858fc7bc8d") (uuid "0886a33b-f340-44bf-9de5-f44938efcb54")
) )
(fp_poly (fp_poly
(pts (pts
(xy -3.7592 -2.54) (xy -3.3528 -2.54) (xy -3.3528 -1.9304) (xy -3.7592 -1.9304) (xy -2.7954 -1.0546) (xy -2.389 -1.0546) (xy -2.389 -0.445) (xy -2.7954 -0.445)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -395,11 +400,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "ebef6c64-7266-47b4-9a64-d9d611adc26d") (uuid "51e3d89a-8455-4f58-ad05-c15d024e9c54")
) )
(fp_poly (fp_poly
(pts (pts
(xy -3.7592 2.6416) (xy -3.3528 2.6416) (xy -3.3528 3.2512) (xy -3.7592 3.2512) (xy -2.7954 4.127) (xy -2.389 4.127) (xy -2.389 4.7366) (xy -2.7954 4.7366)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -407,11 +412,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "59be5a8f-ac87-4541-97df-321cb1234c4f") (uuid "5514ba93-c636-4e40-855a-d8123eaad1aa")
) )
(fp_poly (fp_poly
(pts (pts
(xy -2.2352 -2.54) (xy -1.8288 -2.54) (xy -1.8288 -1.9304) (xy -2.2352 -1.9304) (xy -1.2714 -1.0546) (xy -0.865 -1.0546) (xy -0.865 -0.445) (xy -1.2714 -0.445)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -419,11 +424,11 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "b1663dd5-c63f-4034-b29b-537f9a6abd47") (uuid "d6b9bc27-cda7-4d8b-ad26-7b36a48ecfbd")
) )
(fp_poly (fp_poly
(pts (pts
(xy -2.2352 2.6416) (xy -1.8288 2.6416) (xy -1.8288 3.2512) (xy -2.2352 3.2512) (xy -1.2714 4.127) (xy -0.865 4.127) (xy -0.865 4.7366) (xy -1.2714 4.7366)
) )
(stroke (stroke
(width 0.1) (width 0.1)
@ -431,52 +436,52 @@
) )
(fill solid) (fill solid)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "6e5990fc-9a52-480e-b640-cabfc2a6cd18") (uuid "3fef23e2-4bcd-4924-97f4-7575ce7994b1")
) )
(fp_line (fp_line
(start -11.3538 -7.6454) (start -10.39 -6.16)
(end -11.3538 8.8138) (end -10.39 10.2992)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "e21c3eb0-fdf3-4a2d-9d84-f366a7426b90") (uuid "bc1192d1-b770-4e65-bd6d-2beed31fb275")
) )
(fp_line (fp_line
(start -11.3538 -7.6454) (start -10.39 -6.16)
(end 10.3378 -7.6708) (end 11.3016 -6.1854)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "f2231139-582f-43f7-a92f-646e424ad044") (uuid "ac2ec45c-be62-4db0-88df-ef12d1f24714")
) )
(fp_line (fp_line
(start -11.3538 8.8138) (start -10.39 10.2992)
(end 10.3378 8.8138) (end 11.3016 10.2992)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "ff2d64a2-f244-4e27-a61c-b0184f18f038") (uuid "90a38e33-4119-4758-ac3b-323f8c73139c")
) )
(fp_line (fp_line
(start 10.3378 -7.6708) (start 11.3016 -6.1854)
(end 10.3378 8.8138) (end 11.3016 10.2992)
(stroke (stroke
(width 0.12) (width 0.12)
(type solid) (type solid)
) )
(layer "F.Fab") (layer "F.Fab")
(uuid "e571d0ae-d587-45ad-9b62-7a686b2f0c60") (uuid "22193204-ae0b-4462-95d6-f226e27ae968")
) )
(fp_text user "-" (fp_text user "-"
(at 6.4262 -4.9276 0) (at 7.39 -3.4422 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "4f88e670-b848-4271-a5f8-bd548b64cadd") (uuid "0bec24d9-5468-4c4b-96d3-ef96e25202cf")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -485,9 +490,9 @@
) )
) )
(fp_text user "-" (fp_text user "-"
(at -8.1534 -4.9276 0) (at -7.1896 -3.4422 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "86dab817-ad16-4cdc-b19d-607ba0d990ab") (uuid "0c9a77a8-8422-401b-a5a1-b40da4e203c0")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -496,9 +501,9 @@
) )
) )
(fp_text user "VOUT" (fp_text user "VOUT"
(at 8.8138 0.0508 -90) (at 9.7776 1.5362 -90)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "876b8e16-62cc-4ae3-9c78-14a6cc337309") (uuid "3c0d7914-45a5-4bbb-8f5b-40ede46c7d70")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -507,9 +512,9 @@
) )
) )
(fp_text user "+" (fp_text user "+"
(at 6.5278 5.7277 0) (at -7.1388 7.2385 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "935ff27f-9949-446d-a438-f14c3624acfc") (uuid "4145e214-17c8-4e57-9147-ea318329ca66")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -518,9 +523,9 @@
) )
) )
(fp_text user "4.5-28V" (fp_text user "4.5-28V"
(at -9.7536 0.3048 -90) (at -8.7898 1.7902 -90)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "d89e1384-2d5d-4d2d-bcf8-24657a3939a7") (uuid "9e9858d1-9320-4297-aaee-1e9bd601ead9")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -529,9 +534,9 @@
) )
) )
(fp_text user "+" (fp_text user "+"
(at -8.1026 5.7531 0) (at 7.4916 7.2131 0)
(layer "F.SilkS") (layer "F.SilkS")
(uuid "e3820af4-2c8f-4e79-b4d3-6c49dcea8bb5") (uuid "c1d9d6ad-e0e9-47c6-989c-71feb1923647")
(effects (effects
(font (font
(size 1 1) (size 1 1)
@ -540,68 +545,68 @@
) )
) )
(pad "1" thru_hole rect (pad "1" thru_hole rect
(at -10.16 4.572 90) (at -9.1962 6.1704 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 "6550b245-c3c7-4898-8573-6476b3094631") (uuid "7be89935-c19e-4baa-904a-69452ec23d23")
) )
(pad "1" thru_hole rect (pad "1" thru_hole rect
(at -10.16 7.112 90) (at -9.1962 8.7104 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 "2c55b3c8-f1e1-407a-8b02-310137232038") (uuid "8f4284a4-3768-4b1e-9962-d551ccf57e63")
) )
(pad "2" thru_hole oval (pad "2" thru_hole oval
(at -10.1854 -3.683 90) (at -9.2216 -2.1976 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 "6f8804ba-99ab-459b-84ff-3c356b03222a") (uuid "1f87148a-c7c2-483f-b799-2ff5e01ff488")
) )
(pad "2" thru_hole oval (pad "2" thru_hole oval
(at -10.16 -6.223 90) (at -9.1962 -4.7376 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 "b8ed6aef-b96f-4eb3-a1a2-2deefde02bbb") (uuid "bf2458a2-a107-48c3-bb88-9e881f49434c")
) )
(pad "3" thru_hole rect (pad "3" thru_hole rect
(at 8.636 4.699 90) (at 9.5998 6.1844 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 "5892046d-9427-451a-9d67-551089438a5d") (uuid "69cb71b1-224d-4fe7-8b14-ee9b1da593fb")
) )
(pad "3" thru_hole rect (pad "3" thru_hole rect
(at 8.636 7.239 90) (at 9.5998 8.7244 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 "519792c2-361a-4982-84bb-b0360a514c29") (uuid "39b44515-755a-4a18-9e94-5d0b3431f548")
) )
(pad "4" thru_hole oval (pad "4" thru_hole oval
(at 8.7376 -3.683 90) (at 9.7014 -2.1976 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 "efe9e9b1-891f-4b33-a064-306161845044") (uuid "6af0a541-44c2-41dc-9c4e-37db310350d6")
) )
(pad "4" thru_hole oval (pad "4" thru_hole oval
(at 8.763 -6.223 90) (at 9.7268 -4.7376 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 "16f7d0b3-7073-4c65-a466-c8a09376cdd7") (uuid "204e6602-d630-4983-8e4d-fb59a5c65572")
) )
(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.3* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5*
G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00* G04 #@! TF.CreationDate,2024-09-25T02:09:32+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.3) date 2024-06-05 14:32:50* G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*
@ -31,321 +31,358 @@ 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*%
%ADD12O,1.600000X1.600000*% %ADD12R,1.800000X1.100000*%
%ADD13R,2.000000X1.905000*% %ADD13RoundRect,0.275000X-0.625000X0.275000X-0.625000X-0.275000X0.625000X-0.275000X0.625000X0.275000X0*%
%ADD14O,2.000000X1.905000*% %ADD14O,1.600000X1.600000*%
%ADD15RoundRect,0.250001X-0.799999X-0.799999X0.799999X-0.799999X0.799999X0.799999X-0.799999X0.799999X0*% %ADD15R,2.000000X1.905000*%
%ADD16R,1.800000X1.800000*% %ADD16O,2.000000X1.905000*%
%ADD17C,1.800000*% %ADD17R,1.800000X1.800000*%
%ADD18RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*% %ADD18C,1.800000*%
%ADD19C,6.000000*% %ADD19RoundRect,1.500000X1.500000X1.500000X-1.500000X1.500000X-1.500000X-1.500000X1.500000X-1.500000X0*%
%ADD20C,5.600000*% %ADD20C,6.000000*%
%ADD21O,1.800000X1.800000*% %ADD21C,5.600000*%
%ADD22O,3.800000X8.000000*% %ADD22O,1.800000X1.800000*%
%ADD23R,1.700000X1.700000*% %ADD23O,3.800000X8.000000*%
%ADD24O,1.700000X1.700000*% %ADD24R,1.700000X1.700000*%
%ADD25R,2.000000X2.000000*% %ADD25O,1.700000X1.700000*%
%ADD26O,2.000000X1.600000*% %ADD26R,2.000000X2.000000*%
%ADD27C,1.100000*% %ADD27O,2.000000X1.600000*%
%ADD28R,1.730000X2.030000*% %ADD28RoundRect,0.250000X-0.550000X-0.550000X0.550000X-0.550000X0.550000X0.550000X-0.550000X0.550000X0*%
%ADD29O,1.730000X2.030000*% %ADD29RoundRect,0.275000X0.625000X-0.275000X0.625000X0.275000X-0.625000X0.275000X-0.625000X-0.275000X0*%
%ADD30RoundRect,0.250001X0.799999X0.799999X-0.799999X0.799999X-0.799999X-0.799999X0.799999X-0.799999X0*% %ADD30C,1.100000*%
%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*
X101500000Y-90100000D03* X156600000Y-108750000D03*
D11* D11*
X104000000Y-90100000D03* X156600000Y-111250000D03*
X103955112Y-94200000D03*
X101455112Y-94200000D03*
D10*
X153500000Y-111250000D03*
D11*
X153500000Y-108750000D03*
X123520000Y-88850000D03*
D12* D12*
X133680000Y-88850000D03* X127400000Y-42690000D03*
D13*
X129470000Y-43960000D03*
X127400000Y-45230000D03*
D11* D11*
X117000000Y-42420000D03* X117000000Y-42420000D03*
D12*
X106840000Y-42420000D03*
D13*
X138430000Y-83750000D03*
D14* D14*
X106840000Y-42420000D03*
D15*
X138430000Y-83750000D03*
D16*
X138430000Y-81210000D03* X138430000Y-81210000D03*
X138430000Y-78670000D03* X138430000Y-78670000D03*
D13* D15*
X129800000Y-35150000D03* X129800000Y-35150000D03*
D14* D16*
X129800000Y-32610000D03* X129800000Y-32610000D03*
X129800000Y-30070000D03* X129800000Y-30070000D03*
D11* 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* X177750000Y-92250000D03*
D12* D14*
X187910000Y-92250000D03* X187910000Y-92250000D03*
D15* D17*
X153750000Y-68000000D03*
D11*
X106750000Y-72750000D03*
D12*
X116910000Y-72750000D03*
D11*
X142680000Y-60340000D03*
D12*
X142680000Y-70500000D03*
D16*
X122231000Y-81220000D03* X122231000Y-81220000D03*
D17*
X122231000Y-83760000D03*
D18* D18*
X113930000Y-59700000D03* X122231000Y-83760000D03*
D19* D19*
X113930000Y-59700000D03*
D20*
X106730000Y-59700000D03* X106730000Y-59700000D03*
D16*
X122250000Y-102750000D03*
D17* D17*
X122250000Y-102750000D03*
D18*
X122250000Y-105290000D03* X122250000Y-105290000D03*
D11* D11*
X195500000Y-29200000D03* X195500000Y-29200000D03*
D12* D14*
X185340000Y-29200000D03* X185340000Y-29200000D03*
D20*
X87000000Y-26500000D03*
D11*
X116910000Y-69500000D03*
D12* D12*
X106750000Y-69500000D03* X127430000Y-91400000D03*
D16* D13*
X106770000Y-87720000D03* X129500000Y-92670000D03*
X127430000Y-93940000D03*
D21* D21*
X87000000Y-22750000D03*
D11*
X116855000Y-69500000D03*
D14*
X106695000Y-69500000D03*
D17*
X106770000Y-87720000D03*
D22*
X116930000Y-87720000D03* X116930000Y-87720000D03*
D11* D11*
X133000000Y-94000000D03*
D14*
X133000000Y-83840000D03*
D11*
X195500000Y-52900000D03* X195500000Y-52900000D03*
D12* D14*
X185340000Y-52900000D03* X185340000Y-52900000D03*
D11* D11*
X198180000Y-71050000D03* X198180000Y-71050000D03*
D12* D14*
X188020000Y-71050000D03* X188020000Y-71050000D03*
D20* D21*
X203000000Y-26500000D03* X203000000Y-22750000D03*
D11*
X139920000Y-66500000D03*
D14*
X150080000Y-66500000D03*
D11* D11*
X116910000Y-100250000D03* X116910000Y-100250000D03*
D12* D14*
X106750000Y-100250000D03* X106750000Y-100250000D03*
D22* 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-97650000D03*
X96500000Y-106950000D03* X96500000Y-106950000D03*
D23* D24*
X195485000Y-60100000D03* X195485000Y-60100000D03*
D24*
X192945000Y-60100000D03*
D18*
X113930000Y-81220000D03*
D19*
X106730000Y-81220000D03*
D25* D25*
X150100000Y-31750000D03* X192945000Y-60100000D03*
D19*
X113930000Y-81220000D03*
D20*
X106730000Y-81220000D03*
D26* D26*
X150100000Y-34290000D03* X150100000Y-27460000D03*
X150100000Y-36830000D03* D27*
X150100000Y-39370000D03* X150100000Y-30000000D03*
X150100000Y-41910000D03* X150100000Y-32540000D03*
X150100000Y-44450000D03* X150100000Y-35080000D03*
X150100000Y-46990000D03* X150100000Y-37620000D03*
X150100000Y-49530000D03* X150100000Y-40160000D03*
X172960000Y-49530000D03* X150100000Y-42700000D03*
X172960000Y-46990000D03* X150100000Y-45240000D03*
X172960000Y-44450000D03* X172960000Y-45240000D03*
X172960000Y-41910000D03* X172960000Y-42700000D03*
X172960000Y-39370000D03* X172960000Y-40160000D03*
X172960000Y-36830000D03* X172960000Y-37620000D03*
X172960000Y-34290000D03* X172960000Y-35080000D03*
X172960000Y-31750000D03* X172960000Y-32540000D03*
D23* X172960000Y-30000000D03*
X195955000Y-77050000D03* X172960000Y-27460000D03*
D24*
X195400000Y-77000000D03*
D25*
X192860000Y-77000000D03*
X190320000Y-77000000D03*
D24* D24*
X193415000Y-77050000D03*
X190875000Y-77050000D03*
D23*
X195485000Y-38630000D03* X195485000Y-38630000D03*
D24* D25*
X192945000Y-38630000D03* X192945000Y-38630000D03*
X190405000Y-38630000D03* X190405000Y-38630000D03*
X187865000Y-38630000D03* X187865000Y-38630000D03*
D15* D28*
X136750000Y-52500000D03* X131800000Y-50800000D03*
D16*
X174830000Y-82250000D03*
D21*
X174830000Y-92410000D03*
D16*
X122300000Y-32620000D03*
D17* D17*
X174830000Y-82250000D03*
D22*
X174830000Y-92410000D03*
D17*
X122300000Y-32620000D03*
D18*
X122300000Y-35160000D03* X122300000Y-35160000D03*
D23*
X172420000Y-99250000D03*
D24* D24*
X174960000Y-99250000D03* X195600000Y-99250000D03*
X177500000Y-99250000D03* D25*
D10* X193060000Y-99250000D03*
X138730000Y-70025000D03* X190520000Y-99250000D03*
D12* D11*
X138730000Y-67485000D03* X101455112Y-94200000D03*
X131110000Y-67485000D03* X103955112Y-94200000D03*
X131110000Y-70025000D03* D24*
D23*
X195490000Y-47890000D03* X195490000Y-47890000D03*
D24* D25*
X192950000Y-47890000D03* X192950000Y-47890000D03*
X190410000Y-47890000D03* X190410000Y-47890000D03*
X187870000Y-47890000D03* X187870000Y-47890000D03*
D23* D11*
X195485000Y-33980000D03* X133000000Y-45310000D03*
D14*
X133000000Y-35150000D03*
D12*
X138400000Y-45170000D03*
D29*
X136330000Y-43900000D03*
X138400000Y-42630000D03*
D24* D24*
X195485000Y-33980000D03*
D25*
X192945000Y-33980000D03* X192945000Y-33980000D03*
X190405000Y-33980000D03* X190405000Y-33980000D03*
X187865000Y-33980000D03* X187865000Y-33980000D03*
D11* D28*
X142750000Y-33000000D03* X156500000Y-67860000D03*
D12* D23*
X142750000Y-43160000D03*
D15*
X157500000Y-68000000D03*
D10*
X138800000Y-42685000D03*
D12*
X138800000Y-40145000D03*
X131180000Y-40145000D03*
X131180000Y-42685000D03*
D22*
X96500000Y-42450000D03* X96500000Y-42450000D03*
X96500000Y-33150000D03* X96500000Y-33150000D03*
X96500000Y-64000000D03* X96500000Y-64000000D03*
X96500000Y-54700000D03* X96500000Y-54700000D03*
D13* D15*
X129680000Y-62250000D03* X129680000Y-62250000D03*
D14* D16*
X129680000Y-59710000D03* X129680000Y-59710000D03*
X129680000Y-57170000D03* X129680000Y-57170000D03*
D10* D28*
X143630000Y-91470000D03* X188000000Y-67900000D03*
D12*
X143630000Y-88930000D03*
X136010000Y-88930000D03*
X136010000Y-91470000D03*
D15*
X193000000Y-65000000D03*
D11* D11*
X187670000Y-88250000D03* X187670000Y-88250000D03*
D12*
X197830000Y-88250000D03*
D10*
X119794888Y-54750000D03*
D11*
X122294888Y-54750000D03*
D13*
X129680000Y-83750000D03*
D14* D14*
X197830000Y-88250000D03*
D11*
X102500000Y-66200000D03*
X102500000Y-68700000D03*
X116900000Y-95000000D03*
D14*
X106740000Y-95000000D03*
D10*
X101500000Y-90100000D03*
D11*
X104000000Y-90100000D03*
X133000000Y-72460000D03*
D14*
X133000000Y-62300000D03*
D15*
X129680000Y-83750000D03*
D16*
X129680000Y-81210000D03* X129680000Y-81210000D03*
X129680000Y-78670000D03* X129680000Y-78670000D03*
D10*
X128204000Y-108710000D03*
X128204000Y-111250000D03*
D12* D12*
X128178600Y-100455000D03* X138370000Y-72370000D03*
X128204000Y-97915000D03*
D10*
X147000000Y-108837000D03*
X147000000Y-111377000D03*
D12*
X147101600Y-100455000D03*
X147127000Y-97915000D03*
D16*
X106760000Y-66240000D03*
D21*
X116920000Y-66240000D03*
D20*
X87000000Y-113500000D03*
D27*
X108910000Y-48540000D03*
D28*
X103830000Y-50700000D03*
D29* D29*
X106370000Y-50700000D03* X136300000Y-71100000D03*
X108910000Y-50700000D03* X138370000Y-69830000D03*
X111450000Y-50700000D03* D17*
X106760000Y-66240000D03*
D22*
X116920000Y-66240000D03*
D21*
X87000000Y-117250000D03*
D11*
X146480000Y-32600000D03*
D14*
X136320000Y-32600000D03*
D30*
X108900000Y-48620000D03*
D31*
X103820000Y-50780000D03*
D32*
X106360000Y-50780000D03*
X108900000Y-50780000D03*
X111440000Y-50780000D03*
D11* D11*
X181830000Y-85750000D03* X181830000Y-85750000D03*
X181830000Y-88250000D03* X181830000Y-88250000D03*
D10* D10*
X122250000Y-111250000D03* X123600000Y-108750000D03*
D11* D11*
X122250000Y-108750000D03* X123600000Y-111250000D03*
D16* D17*
X106870000Y-39160000D03* X106870000Y-39160000D03*
D21* D22*
X117030000Y-39160000D03* X117030000Y-39160000D03*
D23* D11*
X195485000Y-43250000D03* X136325000Y-39600000D03*
D14*
X146485000Y-39600000D03*
D11*
X117000000Y-46000000D03*
D14*
X106840000Y-46000000D03*
D24* D24*
X195485000Y-43250000D03*
D25*
X192945000Y-43250000D03* X192945000Y-43250000D03*
X190405000Y-43250000D03* X190405000Y-43250000D03*
X187865000Y-43250000D03* X187865000Y-43250000D03*
D18* D11*
X113990000Y-108095000D03* X116860000Y-73500000D03*
D14*
X106700000Y-73500000D03*
D19* D19*
X113990000Y-108095000D03*
D20*
X106790000Y-108095000D03* X106790000Y-108095000D03*
D11* D11*
X116930000Y-90980000D03* X116930000Y-90980000D03*
D12* D14*
X106770000Y-90980000D03* X106770000Y-90980000D03*
D16* D17*
X170830000Y-82250000D03* X170830000Y-82250000D03*
D21*
X170830000Y-92410000D03*
D22* D22*
X170830000Y-92410000D03*
D23*
X96500000Y-85450000D03* X96500000Y-85450000D03*
X96500000Y-76150000D03* X96500000Y-76150000D03*
D11*
X123000000Y-48570000D03*
D12* D12*
X123000000Y-38410000D03* X121500000Y-42690000D03*
D18* D13*
X114000000Y-32610000D03* X123570000Y-43960000D03*
X121500000Y-45230000D03*
D12*
X138400000Y-93900000D03*
D29*
X136330000Y-92630000D03*
X138400000Y-91360000D03*
D12*
X121490000Y-91400000D03*
D13*
X123560000Y-92670000D03*
X121490000Y-93940000D03*
D19* D19*
X106800000Y-32610000D03* X114000000Y-32610000D03*
D11*
X106840000Y-45670000D03*
D12*
X117000000Y-45670000D03*
D11*
X106770000Y-94230000D03*
D12*
X116930000Y-94230000D03*
D20* D20*
X203000000Y-113500000D03* X106800000Y-32610000D03*
D23* D21*
X177250000Y-47250000D03* X203000000Y-117250000D03*
D24* D24*
X177250000Y-44710000D03* X177250000Y-42790000D03*
D25*
X177250000Y-40250000D03*
D11* D11*
X122930000Y-75660000D03* X144200000Y-74300000D03*
D12* D14*
X122930000Y-65500000D03* X144200000Y-84460000D03*
D11*
X147430000Y-81890000D03*
D12*
X147430000Y-92050000D03*
D15*
X158500000Y-111250000D03*
D16*
X122230000Y-59710000D03*
D17* D17*
X122230000Y-59710000D03*
D18*
X122230000Y-62250000D03* X122230000Y-62250000D03*
D11* D11*
X197830000Y-84250000D03* X197830000Y-84250000D03*
D12* D14*
X187670000Y-84250000D03* X187670000Y-84250000D03*
D30* D33*
X169750000Y-52500000D03* X169750000Y-50800000D03*
M02* M02*

View file

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5*
G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00* G04 #@! TF.CreationDate,2024-09-25T02:09:32+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.3) date 2024-06-05 14:32:50* G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32*
%MOMM*% %MOMM*%
%LPD*% %LPD*%
G01* G01*

View file

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

View file

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

View file

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3* G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.5*
G04 #@! TF.CreationDate,2024-06-05T14:32:50+02:00* G04 #@! TF.CreationDate,2024-09-25T02:09:32+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.3) date 2024-06-05 14:32:50* G04 Created by KiCad (PCBNEW 8.0.5) date 2024-09-25 02:09:32*
%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.3} date 2024-06-05T14:32:52+0200 ; DRILL file {KiCad 8.0.5} date 2024-09-25T02:09:34+0200
; FORMAT={-:-/ absolute / metric / decimal} ; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2024-06-05T14:32:52+02:00 ; #@! TF.CreationDate,2024-09-25T02:09:34+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3 ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.5
; #@! 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.91Y-48.54 X108.9Y-48.62
M30 M30

File diff suppressed because it is too large Load diff

View file

@ -1,87 +1,114 @@
M48 M48
; DRILL file {KiCad 8.0.3} date 2024-06-05T14:32:52+0200 ; DRILL file {KiCad 8.0.5} date 2024-09-25T02:09:34+0200
; FORMAT={-:-/ absolute / metric / decimal} ; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2024-06-05T14:32:52+02:00 ; #@! TF.CreationDate,2024-09-25T02:09:34+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3 ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.5
; #@! 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.800 T1C0.750
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T2C0.900 T2C0.800
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T3C1.000 T3C0.900
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T4C1.020 T4C1.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T5C1.100 T5C1.020
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T6C2.000 T6C1.100
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T7C3.200 T7C2.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T8C4.500 T8C3.200
; #@! 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.75Y-69.5 X106.695Y-69.5
X106.75Y-72.75 X106.7Y-73.5
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-45.67 X106.84Y-46.0
X116.91Y-69.5 X116.855Y-69.5
X116.91Y-72.75 X116.86Y-73.5
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-45.67 X117.0Y-46.0
X119.795Y-54.75 X123.6Y-108.75
X122.25Y-108.75 X123.6Y-111.25
X122.25Y-111.25 X130.723Y-100.478
X122.295Y-54.75 X130.748Y-97.938
X122.93Y-65.5 X130.748Y-108.846
X122.93Y-75.66 X130.748Y-111.386
X123.0Y-38.41 X131.8Y-50.8
X123.0Y-48.57 X133.0Y-35.15
X123.52Y-88.85 X133.0Y-45.31
X128.179Y-100.455 X133.0Y-62.3
X128.204Y-97.915 X133.0Y-72.46
X128.204Y-108.71 X133.0Y-83.84
X128.204Y-111.25 X133.0Y-94.0
X131.11Y-67.485 X136.32Y-32.6
X131.11Y-70.025 X136.325Y-39.6
X131.18Y-40.145 X139.9Y-53.32
X131.18Y-42.685 X139.9Y-63.48
X133.68Y-88.85 X139.92Y-66.5
X136.01Y-88.93 X144.2Y-74.3
X136.01Y-91.47 X144.2Y-84.46
X138.73Y-67.485 X146.48Y-32.6
X138.73Y-70.025 X146.485Y-39.6
X138.8Y-40.145 X149.544Y-108.86
X138.8Y-42.685 X149.544Y-111.4
X142.68Y-60.34 X149.646Y-100.478
X142.68Y-70.5 X149.671Y-97.938
X142.75Y-33.0 X150.08Y-66.5
X142.75Y-43.16 X153.1Y-67.85
X143.63Y-88.93 X153.1Y-78.01
X143.63Y-91.47 X156.5Y-67.86
X147.0Y-108.837 X156.6Y-108.75
X147.0Y-111.377 X156.6Y-111.25
X147.102Y-100.455 X169.75Y-50.8
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
@ -90,13 +117,14 @@ 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
T2 T3
X106.76Y-66.24 X106.76Y-66.24
X106.77Y-87.72 X106.77Y-87.72
X106.87Y-39.16 X106.87Y-39.16
@ -115,55 +143,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
T3 T4
X150.1Y-31.75 X150.1Y-27.46
X150.1Y-34.29 X150.1Y-30.0
X150.1Y-36.83 X150.1Y-32.54
X150.1Y-39.37 X150.1Y-35.08
X150.1Y-41.91 X150.1Y-37.62
X150.1Y-44.45 X150.1Y-40.16
X150.1Y-46.99 X150.1Y-42.7
X150.1Y-49.53 X150.1Y-45.24
X172.42Y-99.25 X172.96Y-27.46
X172.96Y-31.75 X172.96Y-30.0
X172.96Y-34.29 X172.96Y-32.54
X172.96Y-36.83 X172.96Y-35.08
X172.96Y-39.37 X172.96Y-37.62
X172.96Y-41.91 X172.96Y-40.16
X172.96Y-44.45 X172.96Y-42.7
X172.96Y-46.99 X172.96Y-45.24
X172.96Y-49.53 X177.25Y-40.25
X174.96Y-99.25 X177.25Y-42.79
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.875Y-77.05 X190.52Y-99.25
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.415Y-77.05 X193.06Y-99.25
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.955Y-77.05 X195.6Y-99.25
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
@ -173,21 +201,15 @@ 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
@ -196,7 +218,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
T6 T7
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.

After

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

View file

@ -4,25 +4,63 @@
![CanGrowLogo](Logo/CanGrow_Logo.png) ![CanGrowLogo](Logo/CanGrow_Logo.png)
A simple DIY plant growing system (for cannabis). An easy to use DIY grow controller firmware (for cannabis).
![CanGrow_PCB_Front.png](KiCad/CanGrow/CanGrow_PCB_Front_small.png)
![Screenshot_WebUI_root.png](Arduino/CanGrow/Screenshot_WebUI_root.png) ![Screenshot_WebUI_root.png](Arduino/CanGrow/Screenshot_WebUI_root.png)
![CanGrow_PCB_Front.png](KiCad/CanGrow/CanGrow_PCB_Front_small.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.
I want to build a simple grow system, which I can power by my off-grid ### Update 14.09.2024 - Code Rewrite v0.2
12V solar system. So this project is limited to a small 40x40x120 tent
for one plant with a 50W 12V grow LED light.
As I did it for my solar system, the measurements of this project will be shown I took some "summer break" from the project, and had the opportunity to talk to different people about it.
on my website. For that a REST API is planned. 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.
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.
I want to automate as much as possible which makes sense and is easy to build. **Checklist for v0.2 Firmware**
- 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:
@ -54,14 +92,3 @@ I want to automate as much as possible which makes sense and is easy to build.
- 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

3
arduino-cli.yml Normal file
View file

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

View file

@ -4,39 +4,98 @@
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)" BUILD="$(git rev-parse --short HEAD)-$(date '+%Y%m%d%H%M%S')"
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 [build|upload|webupload|monitor]" echo "$0 [setup|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)
echo "building firmware $VER $BUILD, target dir: $(pwd)/build/" check_acli
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
~/.local/bin/arduino-cli --no-color compile -b esp8266:esp8266:d1_mini_clone "Arduino/CanGrow/CanGrow.ino" --output-dir build/ || exit 1 ${ACLI_CMD} --no-color compile -b ${BOARD} "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)
echo "uploading to $TTY" check_acli
~/.local/bin/arduino-cli --no-color compile -v -b esp8266:esp8266:d1_mini_clone -u -p $TTY "Arduino/CanGrow/CanGrow.ino" echo ":: Uploading to $TTY"
${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 "image=@$(pwd)/build/CanGrow.ino.bin" curl -v http://$IP/system/applyUpdate -X POST -H 'Content-Type: multipart/form-data' -F "firmware=@$(pwd)/build/CanGrow.ino.bin"
echo echo
;; ;;
m|mon|monitor) m|mon|monitor)
echo "open monitor $TTY" check_acli
~/.local/bin/arduino-cli monitor -c baudrate=115200 -p $TTY echo ":: Open serial monitor $TTY"
${ACLI_CMD} monitor -c baudrate=115200 -b ${BOARD} -p $TTY
;; ;;
*) *)
help help