diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f63c12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +.tscache +.project +arduino/main/main.ino.nodemcu.bin +htdocs +node_modules +package-lock.json +tmp +electronics/electronics-cache.lib +electronics/electronics.kicad_prl +electronics/fp-info-cache +electronics/sym-lib-table diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..6b138df --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,117 @@ +module.exports = function(grunt) { + + // Project configuration. + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + copy: { + release: { + files: [ + { src: "node_modules/jquery/dist/jquery.min.js", dest: "htdocs/jquery.min.js" }, + { src: "node_modules/jquery-toast-plugin/dist/jquery.toast.min.js", dest: "htdocs/jquery.toast.min.js" }, + { src: "node_modules/jquery-toast-plugin/dist/jquery.toast.min.css", dest: "htdocs/jquery.toast.min.css" }, + { src: "node_modules/mustache/mustache.min.js", dest: "htdocs/mustache.min.js" }, + { cwd: "js/templates/", src:"*.mst", dest: "htdocs/", expand: true}, + { src: "node_modules/mustache/mustache.min.js", dest: "htdocs/mustache.min.js" }, + ] + }, + static: { + files: [ + { cwd: "static/", src: "**/*", dest: "htdocs/", expand:true}, + ] + } + }, + ts: { + default: { + src: ['ts/**/*.ts'], + outDir: 'tmp/', + options: { + module: 'none', + moduleResolution: 'node', + sourceMap: true, + target: 'es5', + rootDir: ['ts'] + } + } + }, + uglify: { + options: { + beautify: true, + mangle:false, + sourceMap: false + }, + bootstrap: { + files: { + 'htdocs/bootstrap.min.js': ['tmp/view.js','tmp/*.js'], + } + }, + }, + watch: { + jsbootstrapts: { + files: ['ts/*.ts'], + tasks: ['ts', 'newer:uglify:bootstrap'] + }, + + lessdefault: { + files: ['less/*.less'], + tasks: ['less'] + }, + concat: { + files: ['templates/base/*'], + tasks: ['concat'] + }, + jstemplate: { + files: ['templates/*.mst'], + tasks: ['copy'] + }, + json_merge: { + files: ["lang/*/*.json"], + tasks: ['json_merge'] + }, + static: { + files: ['static/**/*'], + tasks: ['copy:static'] + }, + }, + less: { + default: { + options: { + "strictImports": true, + "compress": true + }, + files: { + "htdocs/default.css": "less/default.less" + } + }, + }, + concat: { + options: { + sourceMap: false + }, + base: { src: ['templates/base/*'], dest: 'htdocs/base.mst'}, + }, + json_merge: { + options: { + replacer: null, + space: " " + }, + en: { + files: [ + { 'htdocs/en_main.json': ['lang/en/generic.json','lang/en/menu.json', 'lang/en/wifi.json', 'lang/en/error.json', 'lang/en/mapping.json', 'lang/en/main.json', 'lang/en/update.json'] }, + ] + } + }, + }); + + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-newer'); + grunt.loadNpmTasks('grunt-json-merge'); + grunt.loadNpmTasks("grunt-ts"); + + // Default task(s). + grunt.registerTask('default', ['less', 'concat', 'ts', 'newer:uglify', 'json_merge', 'copy', 'watch']); + grunt.registerTask('release', ['less', 'concat', 'ts', 'uglify', 'json_merge', 'copy']); +}; diff --git a/arduino/main/CPPLINT.cfg b/arduino/main/CPPLINT.cfg new file mode 100644 index 0000000..a6d1dce --- /dev/null +++ b/arduino/main/CPPLINT.cfg @@ -0,0 +1,2 @@ +filter=-build/include_subdir,-whitespace/line_length +root=./ diff --git a/arduino/main/data/config b/arduino/main/data/config new file mode 100644 index 0000000..5dc9e26 --- /dev/null +++ b/arduino/main/data/config @@ -0,0 +1 @@ +abc123;42758142061871992313;client diff --git a/arduino/main/main.ino b/arduino/main/main.ino new file mode 100644 index 0000000..eed1d8a --- /dev/null +++ b/arduino/main/main.ino @@ -0,0 +1,599 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#include +#include //https://github.com/esp8266/Arduino +#include +#include +#include +#include "wlanmanager.h" + +#define MORSEPIN 2 +#define MORSEON LOW +#define MORSEOFF HIGH +char lang[3]="en"; + +/// \brief handle config call +void handleConfig(); +/// \brief handle SSID call +void handleSSID(); +/// \brief handle wifi call and set new credentials +void handleWifi(); + +/// should program be run +volatile bool run; + +/// translation of D0...D7 to physical pins +char pinTranslation[8] = { 16, 5, 4, 0, 2, 14, 12, 13 }; + +// default config expects this: +// camera @d0 + side of optocoppler +// valve1 @d1 + side of optocoppler +// valve2 @d2 + side of optocoppler +// Trigger @d3 connects to ground (uses internal pull-up) +// LED @d4 + side of LED +// Flash @d5 + side of optocoppler +// IR @d6 + side of LED + +/// our local ip +char localIP[17]={0}; +/// morse ip info +volatile int8_t morseIP; +/// web server +ESP8266WebServer server(80); +/// wlan manager +WLANManager wlanManager; +/// start timestamp (in local time) of the main loop +uint32_t start; + +/// handle OTA update response +void handleUpdate () { + server.sendHeader("Connection", "close"); + if (Update.hasError()) { + server.send(500, "application/json", "{\"error\":\"failed\"}"); + } else { + server.send(200, "application/json", "{\"success\":true}"); + } + ESP.restart(); +} + +/// handle OTA update +void handleUpdateProgress() { + HTTPUpload& upload = server.upload(); + if (upload.status == UPLOAD_FILE_START) { + Serial.setDebugOutput(true); + WiFiUDP::stopAll(); + Serial.printf("Update: %s\n", upload.filename.c_str()); + uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; + if (!Update.begin(maxSketchSpace)) { //start with max available size + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_WRITE) { + if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_END) { + if (Update.end(true)) { //true to set the size to the current progress + Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); + } else { + Update.printError(Serial); + } + Serial.setDebugOutput(false); + } + yield(); +} + +/// setup routine +void setup() { + LittleFS.begin(); + Serial.begin(115200); + wlanManager.setSSID("cameratrigger","cameratrigger"); // set default + wlanManager.loadConfigFromFile("/config"); // load from config file + wlanManager.start(); // start access point or connect to access point + uint8_t ip[4]; + *((uint32_t*)&ip) = wlanManager.getIP(); + sprintf(localIP,"%i.%i.%i.%i",ip[0],ip[1],ip[2],ip[3]); + Serial.println(localIP); + morseIP = 0; + server.onNotFound([]() { // If the client requests any URI + if (!handleFileRead(server.uri())) // send it if it exists + server.send(404, "text/plain", "404: Not Found"); // otherwise, respond with a 404 (Not Found) error + }); + server.on("/api/config.json", HTTP_GET, handleConfig); + server.on("/api/ssid.json", HTTP_GET, handleSSID); + server.on("/api/wifi", HTTP_POST, handleWifi); + server.on("/api/pinmapping", HTTP_POST, handlePinMapping); + server.on("/api/run", HTTP_POST, handleRun); + server.on("/api/upload", HTTP_POST, handleUpdate, handleUpdateProgress); + server.on("/update", HTTP_POST, handleUpdate, handleUpdateProgress); + server.begin(); + run = false; + start = millis(); + pinMode(LED_BUILTIN, OUTPUT); + pinMode(D8, OUTPUT); + digitalWrite(D8, false); +} + +/// handle config call +void handleConfig() { + morseIP = -1; + String result = String("{\"wifimode\":\"") + (wlanManager.isAccessPoint()? "ap" : "client") + "\",\"ssid\": \"" + wlanManager.getSSID() +"\"}"; + server.send(200, "application/json", result); // Send HTTP status 200 (Ok) and send some text to the browser/client +} + +/// handle SSID scan call and return list of WLAN +void handleSSID() { + int n = WiFi.scanNetworks(); + String out="["; + char line[1024] = {0}; + for (int i = 0; i < n; ++i) { + snprintf(line,1023,"[\"%s\",%i,%i,\"%s\"]%c",WiFi.SSID(i).c_str(), WiFi.RSSI(i), WiFi.channel(i), WiFi.encryptionType(i) == ENC_TYPE_NONE ? "open": "", ((i+1(*input); + break; + case 'T': // trigger on rising input + enableInput = true; + break; + default: + error = true; + parseValue = false; + advance = false; + server.send(400, "application/json", "{\"error\":\"invalidcommand\"}"); + } + if (parseValue) { + unsigned int value = 0; + ++input; + while ((*input) && (*input) != ';') { + if ((*input) >= '0' && (*input) <= '9') { + value = value * 10 + ((*input)-'0'); + } + if (*input) + ++input; + } + cmds[cmdIndex].value = value; + } + + if (enableOutput || enableInput) { + if (cmds[cmdIndex].value > 7) { + server.send(400, "application/json", "{\"error\":\"invalidpin\"}"); + error = true; + break; + } + cmds[cmdIndex].value = pinTranslation[cmds[cmdIndex].value]; + if (enableOutput) { + pinMode(cmds[cmdIndex].value, OUTPUT); + } else if (enableInput) { + pinMode(cmds[cmdIndex].value, INPUT_PULLUP); + attachInterrupt(digitalPinToInterrupt(cmds[cmdIndex].value), triggerSequence, FALLING); + } + } + if (advance) { + if (cmdIndex < 255) + ++cmdIndex; + else { + error = true; + server.send(400, "application/json", "{\"error\":\"toomanycommands\"}"); + break; + } + } + if (*input) + ++input; + } + if (error) { + return; + } + + server.send(200, "application/json", "{\"message\":\"ok\"}"); + // wait for trigger ? + const String& trigger = server.arg("trigger"); + if (trigger == "true") { + // run now + run = true; + } +} + +/// send a trigger impulse for Nikon cameras (confirmed, works) +/// \param pin which pin +/// \param reps number of repeats +void sendNikonPulse(uint8_t pin, uint8_t reps) { + // 13us on, 13us off + while (reps) { + digitalWrite(pin,HIGH); + delayMicroseconds(10); + delayTicks(40); + digitalWrite(pin,LOW); + delayMicroseconds(10); + delayTicks(39); + --reps; + } +} + +/// send a trigger for Nikon cameras (confirmed, works) +/// \param pin which pin +void triggerNikon(uint16_t pin) { // takes 135.6ms + noInterrupts(); + // SendSequence generates a full command signal by repeatedly calling SendPulse(). + // The duration of each pulse and the time gaps between pulses is exactly the same as the + // values obtained from the analysis^ by oscilloscope + for(uint8_t i=0;i<2;++i) { + //pulse for 2.0 millis + sendNikonPulse(pin, 77); + //delay for 27.8 millis + //using a combination of delay() and delayMicroseconds() + delayMicroseconds(10000); + delayMicroseconds(10000); + delayMicroseconds(7786); + //on pulse for 0.4 millis + sendNikonPulse(pin, 15); + //delay for 1.5 millis + delayMicroseconds(1499); + //on pulse for 0.4 millis + sendNikonPulse(pin, 15); + //delay for 3.5 millis + delayMicroseconds(3496); + //send pulse for 0.4 millis + sendNikonPulse(pin, 15); + if(!i) { + delayMicroseconds(10000); + delayMicroseconds(10000); + delayMicroseconds(10000); + delayMicroseconds(10000); + delayMicroseconds(10000); + delayMicroseconds(10000); + delayMicroseconds(2977); + } + } + interrupts(); +} + +/// send a 32kHz pulse +/// \param pin pin number to use +/// \param reps number of pulses +void send32kHzPulse(uint8_t pin, uint16_t reps) { + while (reps) { + digitalWrite(pin,HIGH); + delayMicroseconds(12); + delayTicks(64); + digitalWrite(pin,LOW); + delayMicroseconds(12); + delayTicks(64); + --reps; + } +} + +/// send a trigger for Canon cameras (not confirmed) +void triggerCanon(uint16_t pin) { // takes 8.3 ms + noInterrupts(); + //16 pulses for at 32kHz + send32kHzPulse(pin, 16); + delayMicroseconds(5310); + //on pulse for 0.5 millis + send32kHzPulse(pin, 16); + interrupts(); +} + +/// get current tick count +/// \param tick count +uint32_t inline asm_ccount() { + uint32_t r; + asm volatile ("rsr %0, ccount": "=r"(r)); + return r; +} +/// delay for given number of ticks +/// \param ticks number of ticks +void delayTicks(int32_t ticks) { + uint32_t expire_ticks = asm_ccount() + ticks; + do { + ticks = expire_ticks - asm_ccount(); + } while(ticks>0); +} + +/// send a pulse for Sony cameras +/// \param pin pin number to use +/// \param count number of pulses +void sendSonyPulse(uint16_t pin, uint16_t count) { + // warm up cache + digitalWrite(pin,LOW); + delayTicks(40); + while (count) { // 1 pulse = 7uS high, 18us Low = 25uS at 40kHz + digitalWrite(pin,HIGH); + delayMicroseconds(4); + delayTicks(39); + digitalWrite(pin,LOW); + delayMicroseconds(15); + delayTicks(50); + --count; + } +} + +/// send a trigger for Sony cameras (not confirmed) +/// \param pin pin number to use +void triggerSony(uint16_t pin) { // takes ? 6ms + noInterrupts(); + bool cmd[] = {1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,0,1,1,1,1}; + //2,4ms start pulse, 600uS gap, 20 bit data + sendSonyPulse(pin, 96); // 96 cycles = 2,4ms + delayMicroseconds(600); + for (uint8_t i = 0; i < 20; ++i) { + sendSonyPulse(pin, cmd[i] ? 48 : 24); + delayMicroseconds(600); + } + interrupts(); +} + +/// rund defined program +void runProgram() { + for (unsigned int i = 0 ; i < cmdIndex; ++i) { + switch(cmds[i].c) { + + case E: + digitalWrite(cmds[i].value, true); + break; + case D: + digitalWrite(cmds[i].value, false); + break; + case C: + triggerCanon(cmds[i].value); + break; + case N: + triggerNikon(cmds[i].value); + break; + case S: + triggerSony(cmds[i].value); + break; + case d: + uint32_t d = cmds[i].value; + while (d>16000) { + d-= 16000; + delay(16000); + } + delay(d); + break; + } + } +} + +/// guess content type based on file name +/// \param filename filename to check +/// \return content type +String getContentType(String filename) { // convert the file extension to the MIME type + if (filename.endsWith(".html")) return "text/html"; + else if (filename.endsWith(".css")) return "text/css"; + else if (filename.endsWith(".js")) return "application/javascript"; + else if (filename.endsWith(".ico")) return "image/x-icon"; + else if (filename.endsWith(".png")) return "image/png"; + else if (filename.endsWith(".svg")) return "image/svg+xml"; + else if (filename.endsWith(".json")) return "application/json"; + return "text/plain"; +} + +/// send a file to the client +/// \param path file/path to send +/// \return true on success +bool handleFileRead(String path) { // send the right file to the client (if it exists) + morseIP = -2; + if (path.endsWith("/")) path += "index.html"; // If a folder is requested, send the index file + String contentType = getContentType(path); // Get the MIME type + path = "/htdocs" + path; + if (LittleFS.exists(path)) { // If the file exists + File file = LittleFS.open(path, "r"); // Open it + server.sendHeader("X-Version", "1.2"); + server.streamFile(file, contentType); // And send it to the client + file.close(); // Then close the file again + return true; + } + if (captivePortal()) { + return true; + } + return false; // If the file doesn't exist, return false +} + +/// crude check if string is an IP +/// \return true if an IP +bool isIp(String str) { + for (size_t i = 0; i < str.length(); i++) { + int c = str.charAt(i); + if (c != '.' && (c < '0' || c > '9')) { + return false; + } + } + return true; +} + +/// IP to String +/// \param ip IP to convert +/// return formatted string +String toStringIp(IPAddress ip) { + String res = ""; + for (int i = 0; i < 3; i++) { + res += String((ip >> (8 * i)) & 0xFF) + "."; + } + res += String(((ip >> 8 * 3)) & 0xFF); + return res; +} + +/// Redirect to captive portal if we got a request for another domain. +/// \return true in that case so the page handler do not try to handle the request again. +bool captivePortal() { + morseIP = -2; + if (!isIp(server.hostHeader()) ) { + //Serial.println("Request redirected to captive portal"); + server.sendHeader("Location", String("http://") + toStringIp(server.client().localIP()) + "/", true); + server.send ( 302, "text/plain", ""); // Empty content inhibits Content-length header so we have to close the socket ourselves. + server.client().stop(); // Stop is needed because we sent no content length + return true; + } + return false; +} + +/// +// char msg[4]; +// int msgLen = 0; +// uint32_t nextmsg; +// bool out = false; + +/// "morse" a digit (blink number of times) +/// \param count number of times to blink +void morseDigit(uint8_t count) { + while (count) { + server.handleClient(); + wlanManager.loop(); + digitalWrite(MORSEPIN, MORSEON); + delay(500); + digitalWrite(MORSEPIN, MORSEOFF); + delay(250); + --count; + } + delay(2000); +} +/// is ready LED on +bool readyLEDActive = false; + +/// main loop +void loop() { + if (morseIP > -1) { + if (morseIP == 0) { + readyLEDActive = false; + // send long start indicator + digitalWrite(MORSEPIN, MORSEON); + delay(1000); + digitalWrite(MORSEPIN, MORSEOFF); + delay(1000); + } + // morse localIP[morseIP] + char digit = localIP[morseIP]; + if (digit == '.') { + digitalWrite(MORSEPIN, MORSEON); + delay(10); + digitalWrite(MORSEPIN, MORSEOFF); + // wait 1 sec + delay(1000); + } else if (digit == 0) { + morseIP = -1; // restart + // send long end indicator + for (uint8_t i = 0; i < 50; ++i) { + digitalWrite(MORSEPIN, MORSEON); + delay(30); + digitalWrite(MORSEPIN, MORSEOFF); + delay(10); + } + // wait 2 sec + delay(2000); + } else { + morseDigit(digit - '0'); + } + ++morseIP; + } else if (!readyLEDActive) { + readyLEDActive = true; + digitalWrite(MORSEPIN, MORSEON); + } + + server.handleClient(); + wlanManager.loop(); + + if (run) { + digitalWrite(MORSEPIN, MORSEOFF); + runProgram(); + digitalWrite(MORSEPIN, MORSEON); + run = false; + delay(1000); + } +} diff --git a/arduino/main/wlanmanager.cpp b/arduino/main/wlanmanager.cpp new file mode 100644 index 0000000..a5931fb --- /dev/null +++ b/arduino/main/wlanmanager.cpp @@ -0,0 +1,171 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#include +#include +#include "wlanmanager.h" + +#define _connectTimeout 5000 + +WLANManager::WLANManager() { + bzero(m_ssid, sizeof(m_ssid)); + bzero(m_password, sizeof(m_password)); + m_dnsServer = NULL; + m_isAccessPoint = true; +} + +void WLANManager::setSSID(const char* ssid, const char* password) { + strncpy(m_ssid, ssid, sizeof(m_ssid) - 1); + strncpy(m_password, password, sizeof(m_password) - 1); +} + +void WLANManager::loadConfigFromFile(const char* filename) { + File file = LittleFS.open(filename, "r"); // Open it + unsigned int size = file.size(); + if (size == 0) { + return; + } + char mode[20]={0}; + char* config = reinterpret_cast(malloc(size + 1)); + config[size] = 0; + file.read((unsigned char*)config, size); + file.close(); + while (config[size - 1] == '\n') { + config[size - 1] = 0; + --size; + } + // format: "ssid;password;ap/client" + char* next = nextSemi(config); + strncpy(m_ssid, config, sizeof(m_ssid)-1); + if (!next) return; + char* start = next; + next = nextSemi(start); + strncpy(m_password, start, sizeof(m_password)-1); + start = next; + next = nextSemi(start); + strncpy(mode, start, sizeof(mode)-1); + m_isAccessPoint = strcmp(mode, "ap") == 0; + free(config); +} + +void WLANManager::start() { + // try to connect to stored AP + if (m_isAccessPoint || !connectToAp(NULL, NULL, NULL)) { + // fire up own AP + openAP(); + m_dnsServer = new DNSServer(); + m_dnsServer->setErrorReplyCode(DNSReplyCode::NoError); + m_dnsServer->start(53, "*", WiFi.softAPIP()); + } +} + +bool WLANManager::connectToAp(const char* ssid, const char* pass, std::function callback) { + m_isAccessPoint = false; + if (ssid == NULL) { + WiFi.mode(WIFI_STA); + } + if (WiFi.status() == WL_CONNECTED) { + return true; + } + if (ssid) { + WiFi.begin(ssid, pass); + } else { + if (WiFi.SSID().length()) { + ETS_UART_INTR_DISABLE(); + wifi_station_disconnect(); + ETS_UART_INTR_ENABLE(); + WiFi.begin(); + } else { + WiFi.begin(m_ssid, m_password); + } + } + int connRes = waitForConnectResult(); + if (connRes != WL_CONNECTED) { + WiFi.beginWPSConfig(); + // should be connected at the end of WPS + connRes = waitForConnectResult(); + } + if (connRes == WL_CONNECTED) { + if (callback) { + callback(); + } + } + WiFi.mode(WIFI_STA); + if (m_dnsServer) { + delete m_dnsServer; + m_dnsServer = NULL; + } + return connRes == WL_CONNECTED; +} + +uint8_t WLANManager::waitForConnectResult() { + uint32_t start = millis(); + boolean keepConnecting = true; + uint8_t status; + while (keepConnecting) { + status = WiFi.status(); + if (millis() > start + _connectTimeout) { + keepConnecting = false; + } + if (status == WL_CONNECTED || status == WL_CONNECT_FAILED) { + keepConnecting = false; + } + delay(100); + } + return status; +} + +void WLANManager::openAP() { + m_isAccessPoint = true; + // do we have stored settings? + if (!WiFi.isConnected()) { + WiFi.persistent(false); + // disconnect sta, start ap + WiFi.disconnect(); // this alone is not enough to stop the autoconnecter + WiFi.mode(WIFI_AP); + WiFi.persistent(true); + } else { + // setup AP + WiFi.mode(WIFI_AP_STA); + } + Serial.println(m_ssid); + Serial.println(m_password); + WiFi.softAP(m_ssid, m_password); +} + +char* WLANManager::nextSemi(char* start) { + char* semi = strchr(start, ';'); + if (!semi) return NULL; + *semi = 0; + return semi + 1; +} + +bool WLANManager::isAccessPoint() const { + return m_isAccessPoint; +} + +void WLANManager::save(const char* filename) { + String line = String(m_ssid) + ";" + m_password + ";" + (m_isAccessPoint ? "ap" : "client"); + File file = LittleFS.open(filename, "w"); + file.write(line.c_str(), line.length()); + file.close(); +} + +const char* WLANManager::getSSID() const { + return m_ssid; +} + +void WLANManager::loop() { + if (m_dnsServer) { + m_dnsServer->processNextRequest(); + } +} + +uint32_t WLANManager::getIP() const { + if (m_isAccessPoint) + return WiFi.softAPIP(); + return WiFi.localIP(); +} diff --git a/arduino/main/wlanmanager.h b/arduino/main/wlanmanager.h new file mode 100644 index 0000000..a331562 --- /dev/null +++ b/arduino/main/wlanmanager.h @@ -0,0 +1,88 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#ifndef WLANMANAGER_H_ +#define WLANMANAGER_H_ +#include + +/** + * \class WLANManager + * \brief manager for and connecting to WLAN + */ +class WLANManager { + public: + /// \brief constructor + WLANManager(); + + /// \brief set SSID and password + /// \param ssid SSID to set + /// \param password password to set + void setSSID(const char* ssid, const char* password); + + /// \brief load config from given file + /// \param filename file name of config file + void loadConfigFromFile(const char* filename); + + /// \brief start WLAN + void start(); + + /// \brief set mode to access point (true) or client (false) + /// \param isAccessPoint true if we are an access point + void setAccessPoint(bool isAccessPoint); + + /// \brief are we an access point? + /// \return true if we are + bool isAccessPoint() const; + + /// \brief save configuration + /// \param filename filename of config file + void save(const char* filename); + + /// \brief connect to an access point + /// \param ssid ssid of AP + /// \param pass password of AP + /// \param callbal function to be called if connected + /// \retval true on success + bool connectToAp(const char* ssid, const char* pass, std::function callback); + + /// \brief get SSID + /// \return current SSID + const char* getSSID() const; + + /// \brief open access point + void openAP(); + + /// \brief internal loop, need to be called from main loop + void loop(); + + /// \brief get current IP + /// \return current IP + uint32_t getIP() const; + + private: + /// \brief parse input and search for next semicolon + /// \param start start offset. Input string will be modified + /// \return pointer to char after semicolor or NULL if not found + char* nextSemi(char* start); + + /// \brief wait for connection to access point + /// \return WLAN status + uint8_t waitForConnectResult(); + + /// pointer to our dns server + DNSServer* m_dnsServer; + + /// are we an access point + bool m_isAccessPoint; + + /// our ssid + char m_ssid[64]; + + // our password + char m_password[64]; +}; + +#endif // WLANMANAGER_H_ diff --git a/electronics/board.pdf b/electronics/board.pdf new file mode 100644 index 0000000..93bea3b Binary files /dev/null and b/electronics/board.pdf differ diff --git a/electronics/electronics.kicad_pcb b/electronics/electronics.kicad_pcb new file mode 100644 index 0000000..1c93648 --- /dev/null +++ b/electronics/electronics.kicad_pcb @@ -0,0 +1,1556 @@ +(kicad_pcb (version 20211014) (generator pcbnew) + + (general + (thickness 1.6) + ) + + (paper "A4") + (layers + (0 "F.Cu" signal) + (31 "B.Cu" signal) + (32 "B.Adhes" user "B.Adhesive") + (33 "F.Adhes" user "F.Adhesive") + (34 "B.Paste" user) + (35 "F.Paste" user) + (36 "B.SilkS" user "B.Silkscreen") + (37 "F.SilkS" user "F.Silkscreen") + (38 "B.Mask" user) + (39 "F.Mask" user) + (40 "Dwgs.User" user "User.Drawings") + (41 "Cmts.User" user "User.Comments") + (42 "Eco1.User" user "User.Eco1") + (43 "Eco2.User" user "User.Eco2") + (44 "Edge.Cuts" user) + (45 "Margin" user) + (46 "B.CrtYd" user "B.Courtyard") + (47 "F.CrtYd" user "F.Courtyard") + (48 "B.Fab" user) + (49 "F.Fab" user) + ) + + (setup + (stackup + (layer "F.SilkS" (type "Top Silk Screen")) + (layer "F.Paste" (type "Top Solder Paste")) + (layer "F.Mask" (type "Top Solder Mask") (thickness 0.01)) + (layer "F.Cu" (type "copper") (thickness 0.035)) + (layer "dielectric 1" (type "core") (thickness 1.51) (material "FR4") (epsilon_r 4.5) (loss_tangent 0.02)) + (layer "B.Cu" (type "copper") (thickness 0.035)) + (layer "B.Mask" (type "Bottom Solder Mask") (thickness 0.01)) + (layer "B.Paste" (type "Bottom Solder Paste")) + (layer "B.SilkS" (type "Bottom Silk Screen")) + (copper_finish "None") + (dielectric_constraints no) + ) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (disableapertmacros false) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (svguseinch false) + (svgprecision 6) + (excludeedgelayer true) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (dxfpolygonmode true) + (dxfimperialunits true) + (dxfusepcbnewfont true) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (sketchpadsonfab false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + + (net 0 "") + (net 1 "Net-(D1-Pad2)") + (net 2 "+12V") + (net 3 "GND") + (net 4 "Net-(D2-Pad2)") + (net 5 "Net-(J11-Pad1)") + (net 6 "Net-(J11-Pad2)") + (net 7 "Net-(J14-Pad1)") + (net 8 "Net-(J14-Pad2)") + (net 9 "Net-(R1-Pad2)") + (net 10 "Net-(R2-Pad2)") + (net 11 "Net-(R3-Pad2)") + (net 12 "Net-(R4-Pad2)") + (net 13 "Net-(R7-Pad2)") + (net 14 "Net-(U1-Pad14)") + (net 15 "Net-(R6-Pad1)") + (net 16 "Net-(R8-Pad1)") + (net 17 "Net-(R1-Pad1)") + (net 18 "Net-(R2-Pad1)") + (net 19 "Net-(R3-Pad1)") + (net 20 "Net-(R4-Pad1)") + (net 21 "Net-(J1-Pad9)") + (net 22 "Net-(R11-Pad1)") + (net 23 "Net-(Q3-Pad1)") + (net 24 "Net-(R9-Pad1)") + (net 25 "Net-(R10-Pad2)") + (net 26 "Net-(R9-Pad2)") + (net 27 "/3.3V") + (net 28 "/D3") + (net 29 "/ESPGND") + + (footprint "Package_TO_SOT_THT:TO-220-3_Vertical" (layer "F.Cu") + (tedit 5AC8BA0D) (tstamp 00000000-0000-0000-0000-00005f0d9c5f) + (at 134.62 58.42) + (descr "TO-220-3, Vertical, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf") + (tags "TO-220-3 Vertical RM 2.54mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/39bf7fb9-ac91-4ed7-9f86-a482c712e903") + (attr through_hole) + (fp_text reference "Q1" (at 2.54 -4.27) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6aabd190-1426-4ed0-b5fc-78d29d820d85) + ) + (fp_text value "IRLZ34N" (at 2.54 2.5) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7238c32b-c73a-4d2f-9f1a-fa13843739ac) + ) + (fp_text user "${REFERENCE}" (at 2.54 -4.27) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f59511ab-e850-4a2c-9af5-430ad9f7c2f3) + ) + (fp_line (start 7.66 -3.27) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp 0155ced5-26a9-400a-a0f1-51c7300d90f4)) + (fp_line (start -2.58 1.371) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp 0ed9fc28-cb25-4d69-80fb-32a030a07e5f)) + (fp_line (start -2.58 -1.76) (end 7.66 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 54f8d785-848f-4f70-a6a8-209a18c30011)) + (fp_line (start 0.69 -3.27) (end 0.69 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 61b25ef3-e9f1-430a-84d0-8cf2e3c7a560)) + (fp_line (start -2.58 -3.27) (end -2.58 1.371) (layer "F.SilkS") (width 0.12) (tstamp 9a6b0829-ded5-4fc0-915a-84a1842b32a7)) + (fp_line (start 4.391 -3.27) (end 4.391 -1.76) (layer "F.SilkS") (width 0.12) (tstamp babe3d93-5d65-47ce-911e-bc250abe2124)) + (fp_line (start -2.58 -3.27) (end 7.66 -3.27) (layer "F.SilkS") (width 0.12) (tstamp c291f5f7-6813-4ca1-9e83-ecb5d9f97803)) + (fp_line (start 7.79 1.51) (end 7.79 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp 0be29200-d8af-42d2-8119-307b14b45b0c)) + (fp_line (start -2.71 1.51) (end 7.79 1.51) (layer "F.CrtYd") (width 0.05) (tstamp 4cf5995a-bb77-4980-8e59-453f9ae0a7f5)) + (fp_line (start -2.71 -3.4) (end -2.71 1.51) (layer "F.CrtYd") (width 0.05) (tstamp dd36fc08-c491-46c6-b2fa-6d62e5037af5)) + (fp_line (start 7.79 -3.4) (end -2.71 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp fb8e854b-10af-425c-ac74-9c484dfbbece)) + (fp_line (start 7.54 1.25) (end 7.54 -3.15) (layer "F.Fab") (width 0.1) (tstamp 011eea5b-13cc-4a4a-8f68-838e2909648b)) + (fp_line (start 0.69 -3.15) (end 0.69 -1.88) (layer "F.Fab") (width 0.1) (tstamp 0d5b71b5-9880-4a88-a3a9-5e8dd8e7c927)) + (fp_line (start -2.46 1.25) (end 7.54 1.25) (layer "F.Fab") (width 0.1) (tstamp 0e09b053-db39-4eea-998d-70e8d31c7d95)) + (fp_line (start 7.54 -3.15) (end -2.46 -3.15) (layer "F.Fab") (width 0.1) (tstamp 463f4ee8-aada-4d5e-8f2f-5a1282552c48)) + (fp_line (start -2.46 -1.88) (end 7.54 -1.88) (layer "F.Fab") (width 0.1) (tstamp 5ab0bf0a-997d-4dcb-a407-70309fad9aef)) + (fp_line (start -2.46 -3.15) (end -2.46 1.25) (layer "F.Fab") (width 0.1) (tstamp 63aa6e81-c4d7-4591-807f-200d7940a685)) + (fp_line (start 4.39 -3.15) (end 4.39 -1.88) (layer "F.Fab") (width 0.1) (tstamp 9a5e207f-b1c0-4554-bf4a-55316673933a)) + (pad "1" thru_hole rect (at 0 0) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 15 "Net-(R6-Pad1)") (pinfunction "G") (pintype "input") (tstamp 2d22abcf-b5f4-4753-b230-8378d4b4d974)) + (pad "2" thru_hole oval (at 2.54 0) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 1 "Net-(D1-Pad2)") (pinfunction "D") (pintype "passive") (tstamp fd8c98e2-8d44-41c6-82f7-dc19cf3d7436)) + (pad "3" thru_hole oval (at 5.08 0) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 3 "GND") (pinfunction "S") (pintype "passive") (tstamp 7d7ebbe8-eb10-4ef8-9e2f-4617a79dfb4e)) + (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_THT.3dshapes/TO-220-3_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 00000000-0000-0000-0000-00005f0d9e4c) + (at 106.68 63.5) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/9457c2ff-4fad-4b5d-a65b-03239159fd45") + (attr through_hole) + (fp_text reference "R3" (at 3.81 -1.92) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3e2a6bdd-ee21-4a87-867e-a324fe7992cc) + ) + (fp_text value "100R" (at 3.81 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1eb49746-76b0-4717-9e4b-3495bb0142e4) + ) + (fp_text user "${REFERENCE}" (at 3.81 0) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp 69fe87cf-39b8-43ad-80b2-cff69ae49253) + ) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 3e1d0dae-7263-4e7f-a0a9-f957c13dbb6e)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp 4f9e820d-36cf-4f0b-bf9a-56b74fc5e5cb)) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 6b1fdda2-54d2-4223-8b44-6902537c4d54)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 8b72dd9f-0f8a-404e-abf9-f7427a45521e)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp b8cf2e87-014d-4e13-8641-679bf538dfdf)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp d3ca08d4-01d4-4a12-ba9c-dbcd1d893f98)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 24549bd7-9d2c-4fc8-bd50-6116c1a19a7d)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 79d70329-9b1f-4e23-982b-e5cdfd6f9281)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 980cb635-bf4e-4c52-b97d-9c9106066131)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp a0d7f099-f036-4139-9aca-ea436adb9989)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp 106f311e-25a0-4e58-83ae-2b09e4dd7257)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 25ac63ba-55cb-41ef-b1ad-45f2ec4b2699)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp 5853c293-254d-4076-8ce0-13c3747f4f49)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 66b404dd-51bf-4048-8bcc-30d7011d05d8)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 78cb359f-d325-4bf8-9044-d0f1b627e22e)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 84bc6768-a756-42fd-a630-a8fa73506ab9)) + (pad "1" thru_hole circle (at 0 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 19 "Net-(R3-Pad1)") (pintype "passive") (tstamp a9509d11-08ca-42aa-bc59-b6dcf4560cbb)) + (pad "2" thru_hole oval (at 7.62 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 11 "Net-(R3-Pad2)") (pintype "passive") (tstamp bc74a54c-6cc1-4572-b66d-a015e86017fe)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 00000000-0000-0000-0000-00005f0db84e) + (at 106.68 58.42) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f508930") + (attr through_hole) + (fp_text reference "R1" (at 3.81 -1.92) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 528f079b-06fa-4e3c-b516-1eec853888b0) + ) + (fp_text value "100R" (at 3.81 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5bffe907-ea9e-4cd4-af7e-44f81129e68b) + ) + (fp_text user "${REFERENCE}" (at 3.81 0) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp b314fd38-2c1f-4688-be72-a127a6ac9f9c) + ) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 37e7daa2-d9dd-4528-bf7b-2cfd2ed60c85)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp 5ff460c0-3ba1-4345-9439-79d79ce606c5)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 7cd26d34-3c50-44e3-8940-063af8aa9ac5)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp a7daa0c8-1c24-41dc-928a-d8d4cc3a6c64)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp b2a82c9e-f62e-4253-9cea-a3e82f8146d6)) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp fb63a85c-3fd9-42d5-88ee-6c87e21998e1)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 1b50edce-fae6-4311-bd52-bf2faf95ec28)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 5ad8745f-8aa2-4f65-9920-cb1c81fc4e72)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 8dd8ff2e-969a-4149-969c-5191aeab88bd)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 8f41b075-8a6e-4d8b-b1c0-3addf77b1435)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 1d982b25-d1db-4eba-ad3a-687dfc22925e)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 6d5ffb70-0d74-4f8a-9612-9847534965f0)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 8a306046-5723-40b7-8994-44bfcb1118d6)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp b1fa79ca-0603-4923-9104-12c0fca5e91b)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp ed36997d-3699-46ef-8900-953ae6d69d53)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp f872e85e-7b91-40a5-a219-691b30c7ea30)) + (pad "1" thru_hole circle (at 0 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 17 "Net-(R1-Pad1)") (pintype "passive") (tstamp 3d2f827e-9020-4967-8051-c42782d04bdb)) + (pad "2" thru_hole oval (at 7.62 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 9 "Net-(R1-Pad2)") (pintype "passive") (tstamp 186a1787-b318-4189-96ef-9a42b98e2e02)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 00000000-0000-0000-0000-00005f0decd7) + (at 106.68 76.2) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/20ac2947-029a-4bef-9b1f-63bd1873260e") + (attr through_hole) + (fp_text reference "R4" (at 3.81 -1.92) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7707f51c-fd0d-4a3e-81c1-f82040019082) + ) + (fp_text value "100R" (at 3.81 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f2dd660c-14c5-445d-b9c9-f05247145ce6) + ) + (fp_text user "${REFERENCE}" (at 3.81 0) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp f27d26d7-9b10-43ce-b9e2-decacec91f3f) + ) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 0a8a1b39-312b-41dc-b974-a5a5c16b3a5e)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp 0e0cce9b-e681-4c13-a2ac-41149fc79a6d)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 970458ff-85ff-43a4-a82e-c9b75b59b4a8)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp d76d501b-de67-4e49-bc84-52d34000b0f7)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp dda669ae-ba85-4fbb-aba9-3e2340466eb7)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp fb2d8659-d4b3-4965-a34d-487a062144e1)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 0309e4f2-1ff6-491a-b307-871b47b4e3f6)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 26aa033d-efdf-484f-aaf8-6efe9ae5a078)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 4e11109d-ea2a-490c-bcd9-543ace5b9a7a)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp a9f45678-3a2e-4406-863d-095fb79bc3e3)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 341ed90d-9348-4228-a6f2-6aa7033a2350)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 428b11f9-71f4-4e11-b380-a93dd1b48044)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 4daf60b6-c459-4c14-899c-ffd837b58b81)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 8f6891df-00ca-4929-88ff-d2153150b262)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp b75e4c1e-ba97-427e-8ee8-5f0de9d46ce2)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp f573ca8c-cbc8-48c3-b99e-081aa4b38524)) + (pad "1" thru_hole circle (at 0 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 20 "Net-(R4-Pad1)") (pintype "passive") (tstamp 4c770c07-8b4b-44a6-9cc0-5c0dae9b7548)) + (pad "2" thru_hole oval (at 7.62 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 12 "Net-(R4-Pad2)") (pintype "passive") (tstamp ffca0dd4-bcf4-4a20-935f-7b38591835ce)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Diode_THT:D_A-405_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE50CD5) (tstamp 00000000-0000-0000-0000-00005f0df7e9) + (at 142.24 68.58 90) + (descr "Diode, A-405 series, Axial, Horizontal, pin pitch=7.62mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf") + (tags "Diode A-405 series Axial Horizontal pin pitch 7.62mm length 5.2mm diameter 2.7mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f5089dd") + (attr through_hole) + (fp_text reference "D1" (at 3.81 -2.47 90) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 96b25ca8-1d44-4a8c-bc1e-74976cdf2a4d) + ) + (fp_text value "1N4007" (at 3.81 2.47 90) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ea19b11a-1cc5-4c1d-a0a8-39043603477f) + ) + (fp_text user "K" (at 0 -1.9 90) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a96c2c72-de01-4cc9-a1f5-19b74f5db656) + ) + (fp_text user "${REFERENCE}" (at 4.2 0 90) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 708967a4-09dd-48a8-b8fc-7b43151f05f8) + ) + (fp_text user "K" (at 0 -1.9 90) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 875edca6-08d9-48a9-8e10-76bbcb58c79f) + ) + (fp_line (start 1.09 1.47) (end 6.53 1.47) (layer "F.SilkS") (width 0.12) (tstamp 2094adf0-35d6-4085-b1f5-f6e9c9b4dbcc)) + (fp_line (start 2.11 -1.47) (end 2.11 1.47) (layer "F.SilkS") (width 0.12) (tstamp 305b4223-6eee-460c-a60d-d94ce78c56ed)) + (fp_line (start 1.99 -1.47) (end 1.99 1.47) (layer "F.SilkS") (width 0.12) (tstamp 427c17d0-bb1a-4fa8-99e5-17be57ace7d8)) + (fp_line (start 1.09 -1.47) (end 6.53 -1.47) (layer "F.SilkS") (width 0.12) (tstamp 55e53b4e-ed62-40b5-8fa3-9e78d04f2a2d)) + (fp_line (start 1.09 1.14) (end 1.09 1.47) (layer "F.SilkS") (width 0.12) (tstamp 61fbfac8-7af0-4f75-a629-413360113fb0)) + (fp_line (start 6.53 -1.47) (end 6.53 -1.14) (layer "F.SilkS") (width 0.12) (tstamp 9e93de91-dfa8-49b0-ab54-d8347cd89e4d)) + (fp_line (start 1.87 -1.47) (end 1.87 1.47) (layer "F.SilkS") (width 0.12) (tstamp bf277c37-4e97-42ed-b197-5e739d64770a)) + (fp_line (start 1.09 -1.14) (end 1.09 -1.47) (layer "F.SilkS") (width 0.12) (tstamp c1abecdc-0ab0-48cd-a754-a0d6811aae8d)) + (fp_line (start 6.53 1.47) (end 6.53 1.14) (layer "F.SilkS") (width 0.12) (tstamp f219fbf0-1a7c-4fd8-b09c-7e234a187955)) + (fp_line (start 8.77 -1.6) (end -1.15 -1.6) (layer "F.CrtYd") (width 0.05) (tstamp 0bd9f1e4-cb64-4499-a16a-350a3b484992)) + (fp_line (start -1.15 1.6) (end 8.77 1.6) (layer "F.CrtYd") (width 0.05) (tstamp 43f5fdd7-83f3-4282-9d30-8b352862d0c6)) + (fp_line (start 8.77 1.6) (end 8.77 -1.6) (layer "F.CrtYd") (width 0.05) (tstamp 88fbc8fc-9a54-4152-b8e6-450d29d7092a)) + (fp_line (start -1.15 -1.6) (end -1.15 1.6) (layer "F.CrtYd") (width 0.05) (tstamp f4c19a3b-15a2-4795-a704-0de12553b92b)) + (fp_line (start 1.99 -1.35) (end 1.99 1.35) (layer "F.Fab") (width 0.1) (tstamp 1a5063f8-6bbe-4616-b4cc-1faed04ad7cb)) + (fp_line (start 6.41 -1.35) (end 1.21 -1.35) (layer "F.Fab") (width 0.1) (tstamp 1a73147a-ce72-4b67-bcd6-107999e7ed1f)) + (fp_line (start 2.09 -1.35) (end 2.09 1.35) (layer "F.Fab") (width 0.1) (tstamp 224e0372-837a-48ca-b79d-1d540784af11)) + (fp_line (start 1.21 1.35) (end 6.41 1.35) (layer "F.Fab") (width 0.1) (tstamp 24faffda-bbfd-4428-981c-3f29c592d0d7)) + (fp_line (start 0 0) (end 1.21 0) (layer "F.Fab") (width 0.1) (tstamp 7515173d-42eb-43c8-8f34-7a3e820f30ed)) + (fp_line (start 6.41 1.35) (end 6.41 -1.35) (layer "F.Fab") (width 0.1) (tstamp 81564abe-a3b2-4955-99b5-2f4dc1541d47)) + (fp_line (start 7.62 0) (end 6.41 0) (layer "F.Fab") (width 0.1) (tstamp a3d2ce11-73c2-4d03-b481-f53ee210257b)) + (fp_line (start 1.21 -1.35) (end 1.21 1.35) (layer "F.Fab") (width 0.1) (tstamp b9ab0494-335c-4db3-8ba8-610001a69f77)) + (fp_line (start 1.89 -1.35) (end 1.89 1.35) (layer "F.Fab") (width 0.1) (tstamp e15d77c1-b3b6-4673-b868-d171a3ae590d)) + (pad "1" thru_hole rect (at 0 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 2 "+12V") (pinfunction "K") (pintype "passive") (tstamp 412b982d-3970-4cc7-83d8-65f225d66379)) + (pad "2" thru_hole oval (at 7.62 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 1 "Net-(D1-Pad2)") (pinfunction "A") (pintype "passive") (tstamp 0c9dd649-80e0-4be5-8265-62c6d41c93ad)) + (model "${KICAD6_3DMODEL_DIR}/Diode_THT.3dshapes/D_A-405_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_DIP:DIP-16_W7.62mm" (layer "F.Cu") + (tedit 5A02E8C5) (tstamp 00000000-0000-0000-0000-00005f0e0d3c) + (at 119.38 58.42) + (descr "16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils)") + (tags "THT DIP DIL PDIP 2.54mm 7.62mm 300mil") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/db5460be-38eb-4169-98d3-87f3cad354a5") + (attr through_hole) + (fp_text reference "U1" (at 3.81 -2.33) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 2a1fa866-44a3-4ba8-ac77-74540f8c1ed3) + ) + (fp_text value "LTV-247" (at 3.81 20.11) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 30e0aa8a-ce3a-4ed2-a471-e166265ca416) + ) + (fp_text user "${REFERENCE}" (at 3.81 8.89) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f6b772ad-8bb9-4dc1-8a7d-1a79fc005b57) + ) + (fp_line (start 6.46 19.11) (end 6.46 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 6d223021-102a-487d-a52d-3ed7b103218a)) + (fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 6f2c3c11-c451-4f8e-a66d-6eaeab2df148)) + (fp_line (start 1.16 -1.33) (end 1.16 19.11) (layer "F.SilkS") (width 0.12) (tstamp 84818502-39ca-4596-a220-672495e43553)) + (fp_line (start 1.16 19.11) (end 6.46 19.11) (layer "F.SilkS") (width 0.12) (tstamp c3cbe7df-a5a3-4095-9b3c-b8eba2906a0a)) + (fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer "F.SilkS") (width 0.12) (tstamp c609b2a1-5497-4a0c-8de1-8b395ccb6709)) + (fp_arc (start 4.81 -1.33) (mid 3.81 -0.33) (end 2.81 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 77ffd435-779a-4850-ad41-85581f6496a1)) + (fp_line (start -1.1 -1.55) (end -1.1 19.3) (layer "F.CrtYd") (width 0.05) (tstamp 295472e2-2da6-4297-8cd5-43727b37744a)) + (fp_line (start -1.1 19.3) (end 8.7 19.3) (layer "F.CrtYd") (width 0.05) (tstamp 450b15f3-235f-4471-9a32-7bbc8a603ba2)) + (fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer "F.CrtYd") (width 0.05) (tstamp 96a0f916-1a48-4af3-b999-5654b2f03e4e)) + (fp_line (start 8.7 19.3) (end 8.7 -1.55) (layer "F.CrtYd") (width 0.05) (tstamp dbf78f33-4d5e-462d-aac1-7b784a482a3d)) + (fp_line (start 0.635 19.05) (end 0.635 -0.27) (layer "F.Fab") (width 0.1) (tstamp 863a56c2-b24b-4a07-ad3f-a3e8c6a87e65)) + (fp_line (start 6.985 -1.27) (end 6.985 19.05) (layer "F.Fab") (width 0.1) (tstamp acf2b4af-b7c9-4f5c-a39e-12a8fa012c66)) + (fp_line (start 6.985 19.05) (end 0.635 19.05) (layer "F.Fab") (width 0.1) (tstamp afe56577-c2d7-4365-b005-5cff8cb7ee7b)) + (fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer "F.Fab") (width 0.1) (tstamp b5285fd3-6722-4443-8239-7b996ece53c0)) + (fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp c7c3641a-46d0-4224-bae3-ec2f74b6d163)) + (pad "1" thru_hole rect (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 9 "Net-(R1-Pad2)") (pintype "passive") (tstamp 1532d4f5-26cb-4ede-ad45-beae123fc0ed)) + (pad "2" thru_hole oval (at 0 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pintype "passive") (tstamp fa090a42-65ee-4b0b-af48-1a46ecd11904)) + (pad "3" thru_hole oval (at 0 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 10 "Net-(R2-Pad2)") (pintype "passive") (tstamp fd87c064-0744-4a4b-8f1a-78dd17322df2)) + (pad "4" thru_hole oval (at 0 7.62) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pintype "passive") (tstamp 04b71ff0-87b7-4db8-ab2d-96ad692c272a)) + (pad "5" thru_hole oval (at 0 10.16) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 11 "Net-(R3-Pad2)") (pintype "passive") (tstamp 6b30aade-d5be-42e9-9a50-554a369ab86d)) + (pad "6" thru_hole oval (at 0 12.7) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pintype "passive") (tstamp 6761c575-2c27-4d35-9600-ca27e199d0e9)) + (pad "7" thru_hole oval (at 0 15.24) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 12 "Net-(R4-Pad2)") (pintype "passive") (tstamp a21030d6-2920-4784-88c2-8860f0543d2a)) + (pad "8" thru_hole oval (at 0 17.78) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pintype "passive") (tstamp aa89e027-d931-47a0-ac3e-4efd27f05da4)) + (pad "9" thru_hole oval (at 7.62 17.78) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 8 "Net-(J14-Pad2)") (pintype "passive") (tstamp 8885531d-f9cb-4c35-ad6c-48bf2c6bd987)) + (pad "10" thru_hole oval (at 7.62 15.24) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 7 "Net-(J14-Pad1)") (pintype "passive") (tstamp 85e4f8bf-6b50-4284-ab9e-90659ed6cd67)) + (pad "11" thru_hole oval (at 7.62 12.7) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 16 "Net-(R8-Pad1)") (pintype "passive") (tstamp b8e292f6-2c1d-4d1c-86cc-787d1b7c5cfb)) + (pad "12" thru_hole oval (at 7.62 10.16) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 13 "Net-(R7-Pad2)") (pintype "passive") (tstamp 0ce11c23-6b94-489c-8b37-3fe30ef74a31)) + (pad "13" thru_hole oval (at 7.62 7.62) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 15 "Net-(R6-Pad1)") (pintype "passive") (tstamp a0ef3d0c-a1a2-44b9-af51-d6f6cb3bc0c8)) + (pad "14" thru_hole oval (at 7.62 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 14 "Net-(U1-Pad14)") (pintype "passive") (tstamp adde05a3-fc83-4494-a2ef-a29065ba8aaa)) + (pad "15" thru_hole oval (at 7.62 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 6 "Net-(J11-Pad2)") (pintype "passive") (tstamp 08ac2285-65c5-4df2-9a6b-8be8c7aa9348)) + (pad "16" thru_hole oval (at 7.62 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 5 "Net-(J11-Pad1)") (pintype "passive") (tstamp 732b7c27-b9f8-456e-b4ea-b9e505285c3f)) + (model "${KICAD6_3DMODEL_DIR}/Package_DIP.3dshapes/DIP-16_W7.62mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinSocket_2.54mm:PinSocket_1x09_P2.54mm_Vertical" (layer "F.Cu") + (tedit 5A19A431) (tstamp 00000000-0000-0000-0000-00005f0e17c1) + (at 101.625 58.42) + (descr "Through hole straight socket strip, 1x09, 2.54mm pitch, single row (from Kicad 4.0.7), script generated") + (tags "Through hole socket strip THT 1x09 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/2bdda44f-4a64-4a91-a3b2-306502ca67ca") + (attr through_hole) + (fp_text reference "J1" (at 0 -2.77) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6ff9fd05-b571-4652-bc94-cd16b71c22c9) + ) + (fp_text value "ESP" (at 0 23.09) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp bf256647-a71b-4eb7-8785-0080b99c4487) + ) + (fp_text user "${REFERENCE}" (at -2.54 10.16 90) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 97c09612-a2e4-496f-9820-7a58ee74ad39) + ) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 38d7f647-5e1c-43f1-b3c8-e7356dbd7d97)) + (fp_line (start 1.33 -1.33) (end 1.33 0) (layer "F.SilkS") (width 0.12) (tstamp 4aaaf78a-c660-467c-b3b7-d7ed7fea72bf)) + (fp_line (start -1.33 1.27) (end -1.33 21.65) (layer "F.SilkS") (width 0.12) (tstamp 5386d6b9-e2a1-40ee-a8d3-7f9e3b5007d2)) + (fp_line (start -1.33 21.65) (end 1.33 21.65) (layer "F.SilkS") (width 0.12) (tstamp a712265f-c95d-4e95-b459-bd8cbae905ae)) + (fp_line (start 1.33 1.27) (end 1.33 21.65) (layer "F.SilkS") (width 0.12) (tstamp ca97bedd-391a-47dc-9e0f-4ff35aeb5a2c)) + (fp_line (start 0 -1.33) (end 1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp cf295b73-8054-4167-9fe5-5bc6948e3f80)) + (fp_line (start -1.8 -1.8) (end 1.75 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 29f89b67-5328-4aa3-9bcc-12aa73e3da34)) + (fp_line (start 1.75 -1.8) (end 1.75 22.1) (layer "F.CrtYd") (width 0.05) (tstamp 6e43f003-0dad-42c6-bf3b-553428d73d20)) + (fp_line (start 1.75 22.1) (end -1.8 22.1) (layer "F.CrtYd") (width 0.05) (tstamp 865e2585-7c5b-4a8b-82da-fa79ac44b47d)) + (fp_line (start -1.8 22.1) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp efd4ecc3-1718-4bf5-9c1d-82d1404a6435)) + (fp_line (start -1.27 21.59) (end -1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp 08061de6-3c60-4bc2-ba97-bea5078fa931)) + (fp_line (start 1.27 -0.635) (end 1.27 21.59) (layer "F.Fab") (width 0.1) (tstamp 5f7e6147-1aac-46df-aa3d-61e17388b9f7)) + (fp_line (start 0.635 -1.27) (end 1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp dc21d66d-d47c-4d0c-a13d-031307679da0)) + (fp_line (start -1.27 -1.27) (end 0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp ded8d73d-1bda-4417-9336-fc8697d360f2)) + (fp_line (start 1.27 21.59) (end -1.27 21.59) (layer "F.Fab") (width 0.1) (tstamp e059d24b-cf2f-4df2-8156-43ff0fb5ad53)) + (pad "1" thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 17 "Net-(R1-Pad1)") (pinfunction "Pin_1") (pintype "passive") (tstamp c7e9b0c5-7a00-4a14-8ddc-fe64e51f398d)) + (pad "2" thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 18 "Net-(R2-Pad1)") (pinfunction "Pin_2") (pintype "passive") (tstamp 120ec684-6090-435a-b270-fa23265688f5)) + (pad "3" thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 19 "Net-(R3-Pad1)") (pinfunction "Pin_3") (pintype "passive") (tstamp 058dca80-741f-4093-9441-17d578454f63)) + (pad "4" thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 28 "/D3") (pinfunction "Pin_4") (pintype "passive") (tstamp 00d87d82-d419-42b6-ada5-1d051e42e13f)) + (pad "5" thru_hole oval (at 0 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 26 "Net-(R9-Pad2)") (pinfunction "Pin_5") (pintype "passive") (tstamp 7b3ad66f-1a25-42f7-b763-ac7a44a0f4c0)) + (pad "6" thru_hole oval (at 0 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 27 "/3.3V") (pinfunction "Pin_6") (pintype "passive") (tstamp a566a677-e4f8-4dfd-855b-d083df03dddc)) + (pad "7" thru_hole oval (at 0 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pinfunction "Pin_7") (pintype "passive") (tstamp 922b8ff1-09dd-456d-b238-9abfea0658f8)) + (pad "8" thru_hole oval (at 0 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 20 "Net-(R4-Pad1)") (pinfunction "Pin_8") (pintype "passive") (tstamp 2ff23d0d-7b5e-4d90-b19e-2e3dbc93f0ef)) + (pad "9" thru_hole oval (at 0 20.32) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 21 "Net-(J1-Pad9)") (pinfunction "Pin_9") (pintype "passive") (tstamp f98cf7dc-9651-483a-aa0e-af63995f029b)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinSocket_2.54mm.3dshapes/PinSocket_1x09_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 00000000-0000-0000-0000-00005f0e1c1e) + (at 106.68 60.96) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f5088a4") + (attr through_hole) + (fp_text reference "R2" (at 3.81 -1.92) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 72ee0951-6360-4e5a-b9f4-01d3599146dd) + ) + (fp_text value "100R" (at 3.81 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 77e124d6-c888-407c-a2c9-e0754a1151f1) + ) + (fp_text user "${REFERENCE}" (at 3.81 0) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp 14ee753a-34df-4b67-86f1-bbd85c87a91c) + ) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 5768e043-61e2-464f-b49d-9cf618cdf168)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp 7f16747f-5eea-4de5-85df-4b3bc6c5a903)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 8a84f5ad-7e16-46e1-990e-1e3c2ee57bb5)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 9a2f2c60-1ecc-4725-80b1-40050d472a65)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp d37a73d4-d786-4899-9ab9-49524a29dec8)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp e7b3b74a-edbb-4318-b17d-3802f244daaa)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 1c3721e9-eb1d-4340-884f-e29b7d38e515)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 2beabe37-52be-4aa8-b0fe-16a423e53c35)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp a0dde88b-9b1f-4e00-956a-0a909f6e5009)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp b5c4d660-246c-4d80-8b4a-f03e25b39161)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 004b80d3-2cf4-40fb-b1ce-dea52d00a488)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 3e713acf-b6da-4605-8077-da002ee4c75d)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp 5ef0891f-af4b-4ab3-a04b-10405ead9d42)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp a3ecc40f-16af-4fb7-9b9a-6e48702b3f24)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp ab716cab-1031-43c8-8542-fcc5b078e537)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp b2334d8d-fd9e-4c4e-8523-f05b3699b08b)) + (pad "1" thru_hole circle (at 0 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 18 "Net-(R2-Pad1)") (pintype "passive") (tstamp 37c51675-6ee1-4626-badc-349a82b0f72a)) + (pad "2" thru_hole oval (at 7.62 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 10 "Net-(R2-Pad2)") (pintype "passive") (tstamp b3ee17e5-86bd-4081-9a6e-c32d786e160f)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 0c37789b-303a-4458-b351-bd60d9bfecce) + (at 144.78 60.96 180) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f508a23") + (attr through_hole) + (fp_text reference "J12" (at 0 -3.81 90) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 993320a5-7601-4a13-836e-55511f83b29e) + ) + (fp_text value "Valve 1" (at 1.27 6.35) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 20eddd65-4ccd-469a-9844-338f88f6cab4) + ) + (fp_text user "${REFERENCE}" (at 0 1.27 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9a2a6b6d-590f-490b-aa4a-657d2e176887) + ) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 272f1f85-a23c-4788-b38e-c7069c1a5dac)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 494a739d-cb4d-4790-b638-b7759288d904)) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 54131297-b755-4dd3-8d5e-b6ace334bb79)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 77726282-a2aa-42e7-9740-48a7a06ab1b9)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 8cda7583-d537-42a5-a8a7-796b65753868)) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp b3d72771-b2b0-4624-bb1e-99540cbbc76c)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 473fc374-d0d1-4d18-84ad-dcbb908a6692)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 6c6af1a5-775a-4108-8706-e4cbc4bcace1)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp e08be6a5-5d41-44e0-af21-8fc01c54554f)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp ea7929d8-68d0-4d43-95d4-4220430194df)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 631280f3-d088-483c-b50b-08fe0489e492)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp e64cd4b3-da16-4c46-84db-606bc9ec99c4)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp e79a9992-8dce-44ec-94fe-6dfca616a68b)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp f3707fd1-a268-46e2-a13f-b2037a90e68e)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp f46eb0d3-f744-4713-a34a-2774c00a8803)) + (pad "1" thru_hole rect (at 0 0 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 "+12V") (pinfunction "Pin_1") (pintype "passive") (tstamp 0c8a431a-dee6-4744-abcf-6d84cac4872e)) + (pad "2" thru_hole oval (at 0 2.54 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 1 "Net-(D1-Pad2)") (pinfunction "Pin_2") (pintype "passive") (tstamp f820fc80-874e-4a4f-876e-f743bed401c5)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 0dc825ff-ef24-4ce9-b710-9e507e4275a4) + (at 106.68 78.74) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/0ca74120-cd87-45be-9db9-b0132d5e8c71") + (attr through_hole) + (fp_text reference "R10" (at 3.81 -1.92) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp e77a52f0-dc2d-4f84-8511-981bb9a31d52) + ) + (fp_text value "1K" (at 3.81 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 67521749-afef-44ca-b084-26fa143c47dc) + ) + (fp_text user "${REFERENCE}" (at 3.81 0) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp b6599995-8502-41f7-ad6d-843e2e1cb5c7) + ) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 04a2d8b4-a678-46ce-9848-12c2f2f78062)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 1b54ab60-03c6-4e3c-9bd0-ac0d57fd3132)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp 89a36a30-a54e-4961-b95a-bb68aca0fcae)) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp ea6d2c28-ee4e-4b33-a6be-16ef0b4fa531)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp ea8ebe08-c997-4d18-827f-12f3c35c2c1a)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp ffc88380-8b78-425d-b888-fa9141b91eac)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 31a85d82-1aeb-4f4e-8ae9-3c865a8c10a2)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 7db1d148-f5ba-459b-9e6d-2022c9fda7ec)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp aa6b548d-f757-4cdb-ad39-d5c753d1450a)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp beacf745-21be-44a3-bc39-51c1e5429c1d)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 217ccd79-15d5-4ca4-a8cb-9b40d9461af6)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 415a3548-a724-46b7-b782-0c6677e30606)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp 90e4acfe-6405-430b-9eae-7ace61dd5110)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 924a3f19-cbf5-4fdb-91b5-577554966490)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 9430eaa7-2e0a-4619-ad00-8848abb8034c)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp ce7c14cf-f434-46e9-95b5-2c3f5a246690)) + (pad "1" thru_hole circle (at 0 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 21 "Net-(J1-Pad9)") (pintype "passive") (tstamp b0ad9ace-8b1b-47bf-a2ab-61ef9aefe0ac)) + (pad "2" thru_hole oval (at 7.62 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 25 "Net-(R10-Pad2)") (pintype "passive") (tstamp 8dc10f17-4346-453f-8be8-7913e25d8730)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 1db86964-6ea0-40fb-b7ff-59d230318fa7) + (at 111.755 81.28 90) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/7170ed2c-0e15-4189-ae8c-08c797d7caab") + (attr through_hole) + (fp_text reference "J15" (at 0 -2.33 90) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c0888f61-c57a-41de-bcae-27fa6ad1ff1d) + ) + (fp_text value "IR" (at 0 -2.535 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1618e3d2-fbaf-4c8e-bc0b-e04850ef51cd) + ) + (fp_text user "${REFERENCE}" (at 0 1.27) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f3aabbfe-5221-466e-9dc4-499c35ed1a66) + ) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 350a1204-2a1a-4c3f-853d-7e85537048a7)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 43213ca4-abb4-41ea-867e-8288b71fb4fc)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 786dda36-9a09-438c-a6f7-5a3c83bfcfe1)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 7be80f8c-9e52-4e15-bb23-7b2bd10d9476)) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp b981fb0d-64fe-4033-a5ee-1cdcaedad35b)) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp d8fb1b44-974c-4dee-9b24-fdc3982e6c77)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 3827aac4-ded0-42dd-8ced-271f4c8e0051)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 694451d6-2d0e-4c81-83c0-7c34cee82a7d)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp b7419fde-905d-46e2-821e-4be9e3fdfb5f)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp c50ab0b7-1389-4d83-ac03-dd978b4db852)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 3216e9fa-f5dd-4d8b-82c2-b64cffcd717d)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 7b563dac-be2d-4dff-85b1-bcd5d191ad98)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp 80e2eb16-4078-458d-a530-b2b866430ba2)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 9c55585d-e493-43ae-9e1c-edbe9b31cad0)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp e556f330-b472-4bf0-bd22-a4ce0cb39552)) + (pad "1" thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 22 "Net-(R11-Pad1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 635e77f4-699d-444e-b0d8-857b83bef9bd)) + (pad "2" thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 23 "Net-(Q3-Pad1)") (pinfunction "Pin_2") (pintype "passive") (tstamp 39b7347e-5aec-44f0-ae9f-e2a4ecee9462)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 2b0d4d70-d7d8-494c-80eb-464631ccd894) + (at 132.08 71.12) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/e771a23f-5482-42b5-bba2-d3ac332e91c4") + (attr through_hole) + (fp_text reference "R8" (at 3.81 -1.92) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 60c0bc21-4018-467e-b2d9-7f1e2d6539c9) + ) + (fp_text value "1K" (at 3.81 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d6734966-88e7-443c-bfa2-c28193fb757f) + ) + (fp_text user "${REFERENCE}" (at 3.81 0) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp 12ad2720-d6c9-48fc-ab19-ef6c5dfe7f8a) + ) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 2667ba54-f5e5-4452-9be6-04b596628745)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp 55bc4845-6692-4c98-b972-c3ba0b8b0cd8)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 6e82ca65-65ac-4238-8c24-beb9b86dd388)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 86e7bda1-2b67-4cbf-8514-9adf4c1e7864)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 9200742f-1dba-4a80-96a3-d290e8da3366)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp d18b0e1c-0645-48dd-bac3-5e64457dfe3e)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 41b63f1d-0305-4b6c-b71c-7afd5b4e78e8)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 42185218-bae7-48b7-8f32-8deda40efc85)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 55fd47f1-fe15-4407-aae7-86aff8927c4d)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp e586d112-007f-48d4-a4a0-5c2fd0fe4f7f)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 4908c9a6-e0d4-44e5-be14-ca75ce95af0f)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp 52d5366e-e7a6-4857-9818-5a11d7f6a867)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 8e32ae18-e9ff-4697-b0dc-89e2a8931fde)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 93c4ea27-8e51-4178-b7b8-8c089825cff9)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp 9a4530fe-85a4-4469-b35a-014c6d5bb772)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp ef328d0b-4477-4be3-b41b-5eba91031f1a)) + (pad "1" thru_hole circle (at 0 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 16 "Net-(R8-Pad1)") (pintype "passive") (tstamp e0d772c6-e515-4895-a2b2-f4c1a8c0e6c0)) + (pad "2" thru_hole oval (at 7.62 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 3 "GND") (pintype "passive") (tstamp dae75534-0314-41fe-93c3-6bab55836abe)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Diode_THT:D_A-405_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE50CD5) (tstamp 2b8ea394-0f3e-45ec-a466-692315465aff) + (at 144.78 81.28 180) + (descr "Diode, A-405 series, Axial, Horizontal, pin pitch=7.62mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf") + (tags "Diode A-405 series Axial Horizontal pin pitch 7.62mm length 5.2mm diameter 2.7mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/7d330779-7275-4e95-832c-46969b23a74d") + (attr through_hole) + (fp_text reference "D2" (at 3.81 -2.47) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8bc8c32e-b764-44b6-91b8-7c440758b614) + ) + (fp_text value "1N4007" (at 3.81 2.47) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 94c329c9-b8a2-422c-9863-0822dbef1f47) + ) + (fp_text user "K" (at 0 -1.9) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9f11663f-e157-4750-8659-b6785040d91d) + ) + (fp_text user "${REFERENCE}" (at 4.2 0) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1fed06fb-8f0f-46dd-ba97-6bc29f94a184) + ) + (fp_text user "K" (at 0 -1.9) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3828f476-f380-4452-95ec-54d36acc766e) + ) + (fp_line (start 6.53 -1.47) (end 6.53 -1.14) (layer "F.SilkS") (width 0.12) (tstamp 1b652d8d-f2d2-42cf-9308-eb4f76698aa5)) + (fp_line (start 1.09 -1.47) (end 6.53 -1.47) (layer "F.SilkS") (width 0.12) (tstamp 556c4074-4b94-4717-ba1d-3256f9a706b9)) + (fp_line (start 1.09 1.14) (end 1.09 1.47) (layer "F.SilkS") (width 0.12) (tstamp 5c01ad6f-53ee-4f64-8d46-46d265550518)) + (fp_line (start 1.99 -1.47) (end 1.99 1.47) (layer "F.SilkS") (width 0.12) (tstamp 7c757d0c-6f22-4ab8-b72f-1edde9f0445e)) + (fp_line (start 1.09 1.47) (end 6.53 1.47) (layer "F.SilkS") (width 0.12) (tstamp 906e0ea5-589b-4481-9ae7-79d1f1ef7234)) + (fp_line (start 1.87 -1.47) (end 1.87 1.47) (layer "F.SilkS") (width 0.12) (tstamp c861ea98-8621-41e1-b881-8127133bc280)) + (fp_line (start 1.09 -1.14) (end 1.09 -1.47) (layer "F.SilkS") (width 0.12) (tstamp f3d5078b-c1fb-4dc5-884e-ff69cc38c83b)) + (fp_line (start 2.11 -1.47) (end 2.11 1.47) (layer "F.SilkS") (width 0.12) (tstamp fc886493-7684-41bb-a6c1-2a6a72d38b40)) + (fp_line (start 6.53 1.47) (end 6.53 1.14) (layer "F.SilkS") (width 0.12) (tstamp fe89109f-2c87-4032-858a-91e30b705b25)) + (fp_line (start -1.15 -1.6) (end -1.15 1.6) (layer "F.CrtYd") (width 0.05) (tstamp 12e9c481-29d5-414f-bed5-6fcf197473c5)) + (fp_line (start 8.77 1.6) (end 8.77 -1.6) (layer "F.CrtYd") (width 0.05) (tstamp 401c0fdd-f95d-4e7f-abed-0768d11df188)) + (fp_line (start -1.15 1.6) (end 8.77 1.6) (layer "F.CrtYd") (width 0.05) (tstamp afa65158-da31-4bea-8c7b-11dbe1fb18cd)) + (fp_line (start 8.77 -1.6) (end -1.15 -1.6) (layer "F.CrtYd") (width 0.05) (tstamp eea62fa2-1bd1-4075-9103-ee5cb8773dfc)) + (fp_line (start 6.41 1.35) (end 6.41 -1.35) (layer "F.Fab") (width 0.1) (tstamp 004485dc-1685-463e-a289-fe32e5fec6ce)) + (fp_line (start 7.62 0) (end 6.41 0) (layer "F.Fab") (width 0.1) (tstamp 3a41998c-ad3b-4532-b01d-ffa700e9ca46)) + (fp_line (start 6.41 -1.35) (end 1.21 -1.35) (layer "F.Fab") (width 0.1) (tstamp 71eb9125-c2a2-4564-bee5-08c9bd2dd61e)) + (fp_line (start 1.21 -1.35) (end 1.21 1.35) (layer "F.Fab") (width 0.1) (tstamp 82a0a71c-55af-4ec1-8edd-024d98a88f29)) + (fp_line (start 2.09 -1.35) (end 2.09 1.35) (layer "F.Fab") (width 0.1) (tstamp 986f3e93-ed0f-4b2f-8177-396a93613946)) + (fp_line (start 1.21 1.35) (end 6.41 1.35) (layer "F.Fab") (width 0.1) (tstamp cf30835d-d004-41f1-aee6-a264e2a89c15)) + (fp_line (start 1.99 -1.35) (end 1.99 1.35) (layer "F.Fab") (width 0.1) (tstamp f0c6d2ae-f55e-4797-85b0-8b13004132c9)) + (fp_line (start 0 0) (end 1.21 0) (layer "F.Fab") (width 0.1) (tstamp f93055e9-58fd-4e08-b06d-ef54d1683db4)) + (fp_line (start 1.89 -1.35) (end 1.89 1.35) (layer "F.Fab") (width 0.1) (tstamp fe12a1dc-bf9e-4a82-90c6-56a3ae89052e)) + (pad "1" thru_hole rect (at 0 0 180) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 2 "+12V") (pinfunction "K") (pintype "passive") (tstamp abdff2e4-2b9c-4a4e-a8a1-0ff16833d5a1)) + (pad "2" thru_hole oval (at 7.62 0 180) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 4 "Net-(D2-Pad2)") (pinfunction "A") (pintype "passive") (tstamp 6b98cbdd-688e-4e5c-b9b8-4dcbaa1b43d8)) + (model "${KICAD6_3DMODEL_DIR}/Diode_THT.3dshapes/D_A-405_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 3203ddc7-599a-4598-9ee3-3a5874562c13) + (at 114.3 71.12 180) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/1432aa29-d149-44e0-9cc3-e01fa3b1eac9") + (attr through_hole) + (fp_text reference "R11" (at 3.81 -1.92 180) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8189323c-6918-4630-8223-3ccf65c5398c) + ) + (fp_text value "22R" (at 3.81 0 180) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 0186009f-0ef0-4a38-be90-0c97ded99ef0) + ) + (fp_text user "${REFERENCE}" (at 3.81 0 180) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp 6d263417-c8a0-490b-9f5c-5c02ec0effa2) + ) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 1a3fdb35-15aa-4d3b-802a-09b9dd8b21ab)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp 343f8003-ade4-4847-9511-0988a3b55857)) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 5143aeb6-cefc-4cbe-be95-a9e6a7e250cd)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp 815dbe97-2dad-4671-9a33-263d64dbc3cf)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp adef97cd-e5a6-477b-bce4-2ea52e26e9c6)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp e0bda57b-e1ca-443d-9fb1-85bc658f0161)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 15cf932c-563f-48bf-bf98-99d0fb5793ca)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 4960edc2-b7e7-404d-ba24-51bc8cd08850)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp d1e455e5-8475-429c-82c9-6d5d74407cd1)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp e01d8ecc-15ed-4e20-a6cb-70669b5a81a1)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 5dc9053f-1237-40db-86b2-889284dfba1e)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 897e6807-137f-4dd9-8d3d-5b81488466a5)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 91ca2e23-83ae-47f5-b733-b161b5e7a65f)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp b7b3a392-b549-4f0d-93ff-2ff617f10033)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp c5d7352d-ce3b-4f42-8e5e-9dd9f71ba0e9)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp f202e840-c2da-4e7b-8597-3eb01e1a079d)) + (pad "1" thru_hole circle (at 0 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 22 "Net-(R11-Pad1)") (pintype "passive") (tstamp c6fe08d9-b34d-47dc-854b-3c101cd4f163)) + (pad "2" thru_hole oval (at 7.62 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 27 "/3.3V") (pintype "passive") (tstamp 34689b8b-b72c-4a65-a6c5-94295b04d976)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 390777ca-04fb-468a-abf5-6853b724e09f) + (at 114.3 68.58 180) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/62438ad9-bdeb-4be2-9254-38dac2f7bf14") + (attr through_hole) + (fp_text reference "R9" (at 3.81 -1.92 180) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 970d247d-c7ae-4a27-af83-e168397a4b3a) + ) + (fp_text value "200R" (at 3.81 0 180) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp b23bc0cf-7662-4628-b5ba-cfe5d34b8728) + ) + (fp_text user "${REFERENCE}" (at 3.81 0 180) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp 9cce8218-2bc1-4bcf-8f0b-effa932e8ea8) + ) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 59947981-cd4e-42c3-9c3f-645be4c5c511)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp 60551b72-5061-4be0-8dab-2ddf61ea4f6c)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp 6fb946a7-65c6-4941-8812-d8745b6251ce)) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 83f6eb77-70a1-4af0-93d5-fdff4895400e)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 9398cf0b-36e0-4d24-ba38-19b4626de5ba)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp dac473db-d036-4a07-9b2a-c4058f9dee4f)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 0376148f-93cc-42cd-a08a-6d092a09e230)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 207cfd54-04b6-4cb6-8919-48e77248589a)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 72449227-a04e-4ec7-bdc3-f83042d9d6c7)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 94ae909f-74d6-4411-861f-4d8cfbdb732b)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 13816589-9432-4e34-8d01-b4d4c88010c9)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp 2991b52b-16d4-4c7e-8057-b099b114a75e)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 47f04e79-50d4-45c4-b12d-063abf8fa9c2)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 84debe8a-03d6-4e8a-bc89-2a8f6d39a501)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp 9624e387-df6c-4873-b51d-e0d9f9fdb444)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp ea76a795-1762-4ae0-9635-c0ba413c38fa)) + (pad "1" thru_hole circle (at 0 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 24 "Net-(R9-Pad1)") (pintype "passive") (tstamp b3904d6d-7d14-455d-bdc5-087b12c42233)) + (pad "2" thru_hole oval (at 7.62 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 26 "Net-(R9-Pad2)") (pintype "passive") (tstamp a13cf60e-2b45-4153-b343-f20139b1f617)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 4fa564cf-6a7c-4cfe-8de6-b3fb0af7789f) + (at 139.7 68.58 180) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/e613a07e-716e-42c6-9100-c2fb4978f7c0") + (attr through_hole) + (fp_text reference "R7" (at 3.81 -1.92 180) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c8f628b8-0f2d-427d-8eba-83ae986961d0) + ) + (fp_text value "1K" (at 3.81 0 180) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 152e883c-5218-4b61-9138-da737c1b37b6) + ) + (fp_text user "${REFERENCE}" (at 3.81 0 180) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp 2a79812a-a15b-4155-8372-c3a99d570605) + ) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 160fe9d5-4380-4f29-8b74-3b23df1108b6)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp 2e1766fa-59fc-4e40-bfbf-4f5a372cc03f)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 31583188-06d6-49a0-b788-8c8cfb422add)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 46749514-845e-4540-9c81-9f42f8fc37a3)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 5791c76e-7bc1-4697-87cd-78e6a0c7b3af)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp ea052490-c013-4c62-8201-289b3a098c17)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 011b3fd6-0f3a-4da7-a947-15ef889ef348)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 863ee885-3fc5-4970-9e1a-b3ae5c61e0bf)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp f52d012c-23d4-4412-bac4-3a54cea2786a)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp fa78be0f-3d18-462a-aa18-16e0e47e843a)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp 2b9fffef-5563-4a89-aea1-dd8d92f9082c)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 49b25614-4655-4044-a37e-cdabb5ed8b60)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp 740d141b-7444-48bf-a298-f70a28aba5c6)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp 83ece082-ab5c-4a64-8964-af90b5516a25)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 9192ffca-1930-4627-bf5e-99a311bfd38f)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp e6f58ca2-3a93-48cd-b403-094a4006cf3c)) + (pad "1" thru_hole circle (at 0 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 2 "+12V") (pintype "passive") (tstamp 254ab2a1-e5af-488f-b377-abdea8265d02)) + (pad "2" thru_hole oval (at 7.62 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 13 "Net-(R7-Pad2)") (pintype "passive") (tstamp 1b959503-5a24-436b-ac31-e5b6f03f14a2)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 5a44efcb-d0c9-4ce2-bd10-177ab9d12800) + (at 129.54 73.66) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/a7a6c287-8b95-4c4f-9024-d870da2fb4ed") + (attr through_hole) + (fp_text reference "J14" (at 0 -2.33) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 018e97ed-c613-414d-bb1f-aa7d06729d19) + ) + (fp_text value "Flash" (at -0.635 5.08 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp bec37f3b-0254-4c8d-b17f-0ea69d897772) + ) + (fp_text user "${REFERENCE}" (at 0 1.27 90) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 2e361c99-ece0-490c-9023-d0cea9c2fd43) + ) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 02c5f048-b101-457c-bdbe-15fe7dc692f3)) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 3f042e75-e0dd-48a1-b8bf-6ad66c0d0682)) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 688fe44d-071a-4644-8e25-74469eab83a8)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 9cd8a81e-42b5-4af3-8dfe-47be1d53c9c1)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp d98f9874-9f0a-44d5-9307-74a400d5fa83)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp ddacc89f-af99-4a3c-8bcc-0c8bb301b6cd)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 129de1fb-3e9b-415e-a990-ca0caabf8e34)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 35852272-80e8-40c8-932b-c2e5a4687e18)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 5b2c4ed3-4885-4198-87a4-916d340b59d5)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 7c489709-a45b-4721-8913-7f66c4a5e2b3)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 00b67d74-feef-40ec-a9e7-e1688c55229b)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 09ad605e-824f-4189-92ea-7cc97d96829b)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 0aff35b6-9197-4590-b517-f5a0ba507e7f)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 6446f9db-1aa2-4c5d-a175-f8b2140d487e)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp b3c0a354-9f74-42c2-afe7-d492a5088b63)) + (pad "1" thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 7 "Net-(J14-Pad1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 54ff94b3-a625-4dfa-a1cb-11113e56a3bf)) + (pad "2" thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 8 "Net-(J14-Pad2)") (pinfunction "Pin_2") (pintype "passive") (tstamp 5abdbe92-ae6a-4ff2-884d-6cb99943af96)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 74c90b86-30a4-4057-93d5-9bda4912dc55) + (at 129.54 58.42) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f508a07") + (attr through_hole) + (fp_text reference "J11" (at 0 -2.33) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 27425dee-421b-4eac-ab04-804e052c5bba) + ) + (fp_text value "Camera" (at -1.27 -2.54 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7ade6a3c-c788-484b-b383-14a149566f45) + ) + (fp_text user "${REFERENCE}" (at 0 1.27 90) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a9a52d5b-2438-46a8-95e9-a40525fd1531) + ) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 1d456c6e-da26-475d-94fc-fec434538dc4)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 348b0ec3-484b-477d-9b3b-fa9e4c6c94e1)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 3f3562c3-4106-46b3-aa58-47115f17de81)) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp c6ed9413-e499-4347-853a-55cb5d54e9c2)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp de0828c1-fd4c-4202-a073-6f1b35ae2969)) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp efdbf8f7-8bc6-4341-afbe-da42dcce8ba0)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 577e8bb6-b322-4892-9da4-9ef62c1576fd)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 81e0a4ca-0646-4d44-ab02-4c1de356fa63)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp b4df8e70-611c-4d89-829c-48cbf7ccc563)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp e906ef71-51ee-441f-a071-82a8756af4e7)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 7a16a7f1-c17c-459a-9b86-4fda552055ac)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 9b44d3e5-b5ec-44b9-8ccc-84e13a02b32d)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp b143ac52-d99e-4716-9513-451af493188a)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp b8e3981d-20a6-47c4-91a3-47bc5ceff28a)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp e9f25439-0418-4900-a32f-3bc52b515cb8)) + (pad "1" thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 5 "Net-(J11-Pad1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 6a454aa2-b0dd-4c09-9005-e9a0db90dc47)) + (pad "2" thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 6 "Net-(J11-Pad2)") (pinfunction "Pin_2") (pintype "passive") (tstamp 74ee81e0-e2c9-4840-9044-d18220145913)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 84da67a6-bebc-4952-9e19-f3ef8aaa5afc) + (at 132.08 81.28 90) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/182fbb93-0096-492c-82ec-a3699b10e48b") + (attr through_hole) + (fp_text reference "J13" (at 0 -3.81) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f0ab0465-1fcc-4d1a-b05c-caee56665219) + ) + (fp_text value "Valve 2" (at 0 -4.445) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 432618a9-11ef-4a65-95a5-25beb42d1704) + ) + (fp_text user "${REFERENCE}" (at 0 1.27) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp b844af32-d8ae-43d0-a482-f432dcae5a94) + ) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 01336d0e-68f2-4964-aa51-67e24707276f)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 2404c4e0-b49f-493b-9221-3375d24b5ce8)) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 2825a50a-34bc-4be2-a7cf-c54168a11f2a)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 3448974a-2da0-4baa-8800-4a1e4dd2fa6d)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 74fc31cf-6729-473b-850b-a32261d9a39f)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp f5123a2a-ea5b-461f-a679-fa671ea8642f)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 17b2113a-8e41-40d6-9543-b57b9b614822)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 60e1d5bf-06de-44a5-a849-19ef9f6d6884)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp cc1cc2f7-2e00-4d98-850b-73e9de40fe37)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp cefcaca1-8923-42d9-afbe-116b4481056a)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 031d77e5-9106-4421-a9ff-0adfb08bac1f)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 092d8bf4-b551-487d-9927-ff2e16a72c9e)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp d8b480b8-491b-4138-a8be-cda2c2d6b9fe)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp de26e95a-954c-4985-b6d5-269b9f8397d6)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp edd2cc19-d5ef-4eb1-aa75-d9303b26229b)) + (pad "1" thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 "+12V") (pinfunction "Pin_1") (pintype "passive") (tstamp 84102ccf-8d7a-45ab-87ba-e6ad0b290d0b)) + (pad "2" thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 4 "Net-(D2-Pad2)") (pinfunction "Pin_2") (pintype "passive") (tstamp 8c87e029-ffe5-4c7c-b01a-130d6c00c9c6)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp 8abe3a8e-40df-48f6-993e-1984f4656d89) + (at 139.7 63.5 180) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f508963") + (attr through_hole) + (fp_text reference "R5" (at 3.81 -1.92 180) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 81210098-4316-4691-8def-41b01b5ebd7f) + ) + (fp_text value "1K" (at 3.81 0 180) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 50530273-4d70-49bc-befc-54e27cf450e4) + ) + (fp_text user "${REFERENCE}" (at 3.81 0 180) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp 92f6b68f-d518-468b-a0d7-0347e95ffe7d) + ) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 17b45a24-6d54-4a2e-b36a-11417a909f1e)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp 324eac56-0f07-4231-9c38-6d123c65458f)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 46c2b2e4-bee5-44d9-a31a-cc3ba26a07fb)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 4e518bbe-4079-4cb2-a0aa-6210278145c4)) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp 6c758057-3d83-4948-a7a4-b7663131953e)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 7dd6aa24-7467-4d93-855d-67b18114002a)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 2861e34b-d63c-48cf-a21c-36df034809bc)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 56408d15-a44b-4ffe-92a6-b3bc127d2301)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp e0bf9fe8-22af-4b9e-8826-b3da40d6db18)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp f7e7f235-21c0-41e1-898f-c761adb7b484)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp 1482c43e-8196-4a40-8b76-541126320664)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp 4fed5fc5-5b46-4100-aa7e-6460fcf4e5e0)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp 99f77936-cacc-49f1-827c-11d978b2d1cf)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp ee6261ee-3304-4eb8-8c5d-4f9dd5735c81)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp f657a14b-f712-457d-b1e5-987f1b4ed8be)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp fa908c45-1c62-49b3-9c74-a536f76a84c4)) + (pad "1" thru_hole circle (at 0 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 2 "+12V") (pintype "passive") (tstamp 781d636d-5593-4392-8b7e-4b4bc2f45d5a)) + (pad "2" thru_hole oval (at 7.62 0 180) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 14 "Net-(U1-Pad14)") (pintype "passive") (tstamp 2461da91-011c-4967-80cf-d97028d8d68e)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp aa0c57f9-0496-49c2-9596-e2effcc00dba) + (at 106.68 66.04 90) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/6cff5a5c-63fd-4755-9b6a-e4d2cc4df440") + (attr through_hole) + (fp_text reference "J17" (at 0 -2.33 90) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 75375d99-6d4b-4161-b10b-f7bf0a1c3815) + ) + (fp_text value "Trigger" (at 0 6.985 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3914a73d-58cb-4037-987a-462d1d796218) + ) + (fp_text user "${REFERENCE}" (at 0 1.27) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a33ca168-01f6-4f2c-8aee-fc408baa1b9c) + ) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 3a293957-6517-44b8-a07c-646be432fa09)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 46b088c9-7ff7-44c1-9d23-b0226d5d0f87)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 8678631e-8106-4e2b-949f-8f16de4f03fd)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp c9c302a9-3a4e-4acc-aae7-42ac06d4dec1)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp ce0e1602-70f7-4950-b223-e066c30d6807)) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp ef17930b-b488-486f-bd23-f35a35774484)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 11d0f5fa-e6c7-4989-a0c4-a11657b185e9)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 807219d6-2844-450d-b121-e3847566ef05)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp a7bf9ffa-7886-4a5a-bb5e-4721c558c9f7)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp f7b88409-d4f4-4b3a-81e7-3a9913d75b9e)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 2acf2fc0-cc0b-4ec2-9e58-eba38130b204)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp 69cb735d-2bf7-4f58-b02d-114ada0af931)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 77ec90f6-d179-4da0-90e1-9bfbaa78f00c)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp db97b37e-c157-4e3e-9f58-2513c1207eca)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp f903dd39-efe6-489a-bbe5-c1e35672672b)) + (pad "1" thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 28 "/D3") (pinfunction "Pin_1") (pintype "passive") (tstamp 214335d4-abc4-4d20-8bc6-517f596b7eaf)) + (pad "2" thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pinfunction "Pin_2") (pintype "passive") (tstamp 4ffacc4b-ab65-4463-ac65-886fe68ba53a)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (layer "F.Cu") + (tedit 5AE5139B) (tstamp ccb717fe-0b69-40f3-8e8f-dcc635979f8a) + (at 132.08 66.04) + (descr "Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f5088c2") + (attr through_hole) + (fp_text reference "R6" (at 3.81 -1.92) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7caf9240-8b46-4dbc-869e-d252aa380848) + ) + (fp_text value "1K" (at 3.81 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 698d2002-954a-492a-905d-4f56c209842f) + ) + (fp_text user "${REFERENCE}" (at 3.81 0) (layer "F.Fab") hide + (effects (font (size 0.72 0.72) (thickness 0.108))) + (tstamp fc11e107-0da2-4ea4-bba4-27e71ec2d840) + ) + (fp_line (start 6.68 0) (end 5.73 0) (layer "F.SilkS") (width 0.12) (tstamp 25c4c442-37f9-4555-aba9-be43d258149b)) + (fp_line (start 1.89 -0.92) (end 1.89 0.92) (layer "F.SilkS") (width 0.12) (tstamp 58131a3d-5bc1-46db-9118-630a4d7587dd)) + (fp_line (start 5.73 0.92) (end 5.73 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 6f51be9b-ebff-474b-865a-4add59911d5e)) + (fp_line (start 0.94 0) (end 1.89 0) (layer "F.SilkS") (width 0.12) (tstamp 83c30e3f-3d4f-451e-98bc-2ea6abbc6860)) + (fp_line (start 5.73 -0.92) (end 1.89 -0.92) (layer "F.SilkS") (width 0.12) (tstamp 96ef2f8b-e5bd-458d-a344-900c22a5601d)) + (fp_line (start 1.89 0.92) (end 5.73 0.92) (layer "F.SilkS") (width 0.12) (tstamp ef8e4784-ddf4-4595-8902-f36d7992a27d)) + (fp_line (start -0.95 1.05) (end 8.57 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 09ac173b-61d2-4bc5-a705-448b48c8a78a)) + (fp_line (start 8.57 1.05) (end 8.57 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 1ad52a44-ac44-476f-92db-f40ea3de5372)) + (fp_line (start 8.57 -1.05) (end -0.95 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp 87bf6186-3705-4782-b30a-0638affbf35d)) + (fp_line (start -0.95 -1.05) (end -0.95 1.05) (layer "F.CrtYd") (width 0.05) (tstamp a70f5d3e-f481-4756-a8ef-0f3d66fa24d3)) + (fp_line (start 5.61 -0.8) (end 2.01 -0.8) (layer "F.Fab") (width 0.1) (tstamp 18be3d70-a0c1-49ae-8fa4-11c153403716)) + (fp_line (start 5.61 0.8) (end 5.61 -0.8) (layer "F.Fab") (width 0.1) (tstamp 4abc93df-2640-4a3a-bb68-7109359f68d2)) + (fp_line (start 2.01 0.8) (end 5.61 0.8) (layer "F.Fab") (width 0.1) (tstamp 4ba67e1d-0196-4d81-a65f-5d65ad0efbba)) + (fp_line (start 0 0) (end 2.01 0) (layer "F.Fab") (width 0.1) (tstamp dfc0e11e-e7ad-4151-9852-bdd654a913b1)) + (fp_line (start 2.01 -0.8) (end 2.01 0.8) (layer "F.Fab") (width 0.1) (tstamp f1aa181e-51d1-49f8-be1e-1ba7e53212e9)) + (fp_line (start 7.62 0) (end 5.61 0) (layer "F.Fab") (width 0.1) (tstamp f5899f5a-bb61-48db-b352-5326132dcc8f)) + (pad "1" thru_hole circle (at 0 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 15 "Net-(R6-Pad1)") (pintype "passive") (tstamp 8136271d-5c94-4305-a0f8-f2d9646da721)) + (pad "2" thru_hole oval (at 7.62 0) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask) + (net 3 "GND") (pintype "passive") (tstamp 3659323e-4673-4fce-aadf-a88ffbc98f79)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp d83a11b5-5e63-4176-a933-764a02bc2958) + (at 144.78 71.12 -90) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/00000000-0000-0000-0000-00005f508a74") + (attr through_hole) + (fp_text reference "J10" (at 0 -3.81) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 42305151-2153-4f6e-ae72-d7b89f972cfd) + ) + (fp_text value "12V" (at 2.54 0.635 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp eaa3ba5e-a787-4ac9-b47e-0a05d6eea35f) + ) + (fp_text user "${REFERENCE}" (at 0 1.27) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7f48376b-0be0-4bcc-a93f-dccae22aca79) + ) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 598297ac-7aeb-4464-9733-cef4fff8876e)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 5e49ae85-66d4-41be-ad50-f529f80e0e4e)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 9f251240-11f0-4266-90a1-a1f2feea0f2d)) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp a61ee069-c237-4f2d-92d2-5302d9cfd14a)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp a90826ba-6803-44e1-bab1-1b87b092b745)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp ee0a0916-2b58-4bf6-bc47-ab3331f587e7)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 51567da9-f551-4e1d-989c-030d6c5d483c)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 5dcc49a7-cf89-4da7-b7e9-a8be7c96bbfc)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp b5baa5e2-902a-4bdb-b976-3aab4750e016)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp c2ad0611-d17f-4025-acf0-3a1f1e2f0fb9)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 0c67b675-19af-4da0-9d6b-b874fdd932b0)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp bb805caf-7bf8-43d4-95e0-54148f6a95d8)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp d1d75786-18a4-49cb-9ecd-6d5aa042d139)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp da4f5986-178b-4726-a28b-145b450eaa0a)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp fda55b2b-99b8-45b8-b428-7c5e0f79456e)) + (pad "1" thru_hole rect (at 0 0 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 "+12V") (pinfunction "Pin_1") (pintype "passive") (tstamp 550cbf8e-0714-45bb-ba9d-bfe09909fc92)) + (pad "2" thru_hole oval (at 0 2.54 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 "GND") (pinfunction "Pin_2") (pintype "passive") (tstamp 0d724287-d4b5-4809-a144-984f04edcf5d)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_TO_SOT_THT:TO-92_Inline_Wide" (layer "F.Cu") + (tedit 5A02FF81) (tstamp e17ce0b6-0414-48a8-9cd2-6e18b156d995) + (at 116.84 81.28) + (descr "TO-92 leads in-line, wide, drill 0.75mm (see NXP sot054_po.pdf)") + (tags "to-92 sc-43 sc-43a sot54 PA33 transistor") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/2e6d26a8-7d38-4064-bced-cd5ba64a56af") + (attr through_hole) + (fp_text reference "Q3" (at 2.54 -3.56) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp aadfd258-fe3f-4be7-beb2-7068885f41b1) + ) + (fp_text value "BC517" (at 2.54 2.79) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1be228d5-edf2-4d54-aa3e-f2789ac88409) + ) + (fp_text user "${REFERENCE}" (at 2.54 0) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 52bc13d1-896f-4a8d-9f08-51a6e245e750) + ) + (fp_line (start 0.74 1.85) (end 4.34 1.85) (layer "F.SilkS") (width 0.12) (tstamp 22d0339d-a5c5-40fa-98fe-b71a08b12182)) + (fp_arc (start 2.54 -2.6) (mid 3.936979 -2.192818) (end 4.8964 -1.098807) (layer "F.SilkS") (width 0.12) (tstamp 06d0594f-08b0-4793-8b98-2adbe7510522)) + (fp_arc (start 0.74 1.85) (mid 0.446097 1.509328) (end 0.215816 1.122795) (layer "F.SilkS") (width 0.12) (tstamp 396f30b1-d66e-48d4-b5df-b1e32d18fe8b)) + (fp_arc (start 0.1836 -1.098807) (mid 1.143021 -2.192817) (end 2.54 -2.6) (layer "F.SilkS") (width 0.12) (tstamp 622d2c29-bf76-4731-9230-53c010859a7c)) + (fp_arc (start 4.864184 1.122795) (mid 4.633903 1.509328) (end 4.34 1.85) (layer "F.SilkS") (width 0.12) (tstamp 98d9b919-2c7b-4896-85f4-3b773aed1838)) + (fp_line (start 6.09 2.01) (end 6.09 -2.73) (layer "F.CrtYd") (width 0.05) (tstamp 23dec50c-6d04-46e0-bd34-be9445e4fee3)) + (fp_line (start -1.01 -2.73) (end 6.09 -2.73) (layer "F.CrtYd") (width 0.05) (tstamp 27210af9-5da4-40a7-bf81-07ec61f6ef3e)) + (fp_line (start 6.09 2.01) (end -1.01 2.01) (layer "F.CrtYd") (width 0.05) (tstamp 4c53b6e5-52b8-4016-9edd-27a074bf1840)) + (fp_line (start -1.01 -2.73) (end -1.01 2.01) (layer "F.CrtYd") (width 0.05) (tstamp 7d8ab70b-22ef-4512-8a9c-5371ac8188cc)) + (fp_line (start 0.8 1.75) (end 4.3 1.75) (layer "F.Fab") (width 0.1) (tstamp ab57ffc5-b166-4d13-ab98-47c771d65293)) + (fp_arc (start 2.54 -2.48) (mid 4.831221 -0.949055) (end 4.293625 1.753625) (layer "F.Fab") (width 0.1) (tstamp 07b54a0e-31bb-467a-a340-ab8774e71908)) + (fp_arc (start 0.786375 1.753625) (mid 0.248779 -0.949055) (end 2.54 -2.48) (layer "F.Fab") (width 0.1) (tstamp 3f9d0da2-fde2-4cf2-88b7-b9c675cde37a)) + (pad "1" thru_hole rect (at 0 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) + (net 23 "Net-(Q3-Pad1)") (pinfunction "C") (pintype "passive") (tstamp 24938965-4dac-4704-9d03-36790fc5c0b9)) + (pad "2" thru_hole circle (at 2.54 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) + (net 25 "Net-(R10-Pad2)") (pinfunction "B") (pintype "input") (tstamp 0dc32661-4b42-4c63-8ebe-5767a918cfd9)) + (pad "3" thru_hole circle (at 5.08 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pinfunction "E") (pintype "passive") (tstamp 69d7ec2d-3cf3-485c-9e2b-3c7804af6653)) + (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_THT.3dshapes/TO-92_Inline_Wide.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_TO_SOT_THT:TO-220-3_Vertical" (layer "F.Cu") + (tedit 5AC8BA0D) (tstamp e3c95742-55f6-45ad-b371-073821ee97c8) + (at 134.62 76.2) + (descr "TO-220-3, Vertical, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf") + (tags "TO-220-3 Vertical RM 2.54mm") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/234efd1c-1460-4e8d-9696-8836ff63bc4e") + (attr through_hole) + (fp_text reference "Q2" (at 2.54 -4.27) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a6d8a67a-92a2-4ba1-8172-1bc6d2db011f) + ) + (fp_text value "IRLZ34N" (at 2.54 2.5) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp aac7ae92-b1d2-4b83-99f2-9bb1f61d33e2) + ) + (fp_text user "${REFERENCE}" (at 2.54 -4.27) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d8d03cb9-69c8-44bf-b7ac-8671eaa6ec4d) + ) + (fp_line (start 0.69 -3.27) (end 0.69 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 33f5c262-99c0-4210-a08d-975ebbf4fd26)) + (fp_line (start -2.58 -1.76) (end 7.66 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 6185d9ff-6c8f-4a8f-84a0-171deab4509e)) + (fp_line (start -2.58 -3.27) (end 7.66 -3.27) (layer "F.SilkS") (width 0.12) (tstamp 69f060d5-4d16-495a-a4e2-69f1b5094929)) + (fp_line (start -2.58 1.371) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp 700055c8-1a3f-4042-b1b9-52d0437d3255)) + (fp_line (start 4.391 -3.27) (end 4.391 -1.76) (layer "F.SilkS") (width 0.12) (tstamp c2a003ef-5e28-4b7b-90da-ae7f0ad4b2a5)) + (fp_line (start -2.58 -3.27) (end -2.58 1.371) (layer "F.SilkS") (width 0.12) (tstamp da8e0ce9-336e-421a-8e42-2df1ef886f09)) + (fp_line (start 7.66 -3.27) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp f427be89-5401-4a8e-ad6a-abc63d54d7cf)) + (fp_line (start -2.71 -3.4) (end -2.71 1.51) (layer "F.CrtYd") (width 0.05) (tstamp 5a7210e7-712f-496e-b879-3ab4094e8207)) + (fp_line (start -2.71 1.51) (end 7.79 1.51) (layer "F.CrtYd") (width 0.05) (tstamp 71bd5fce-2d80-4f23-94ff-349e26f8ce33)) + (fp_line (start 7.79 -3.4) (end -2.71 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp 93dd0533-5885-49c6-ae97-930402904b23)) + (fp_line (start 7.79 1.51) (end 7.79 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp b975ed39-0040-4cf3-bafa-b3ab16efe280)) + (fp_line (start -2.46 -1.88) (end 7.54 -1.88) (layer "F.Fab") (width 0.1) (tstamp 0d04f421-c17a-4589-8e77-2f418e0fb233)) + (fp_line (start -2.46 -3.15) (end -2.46 1.25) (layer "F.Fab") (width 0.1) (tstamp 0e2ab438-c7a0-47be-961b-42f3797fb148)) + (fp_line (start 7.54 -3.15) (end -2.46 -3.15) (layer "F.Fab") (width 0.1) (tstamp 388f0067-c0a8-4e95-abaf-dbb2f1075b46)) + (fp_line (start -2.46 1.25) (end 7.54 1.25) (layer "F.Fab") (width 0.1) (tstamp 6f8ce4a9-b8a9-4e08-92a6-7da4e564b196)) + (fp_line (start 4.39 -3.15) (end 4.39 -1.88) (layer "F.Fab") (width 0.1) (tstamp 7c3ab474-cbe9-4b63-b56b-5c66d1c10988)) + (fp_line (start 7.54 1.25) (end 7.54 -3.15) (layer "F.Fab") (width 0.1) (tstamp aa82fa44-a75c-4251-881a-3e9e86dc0122)) + (fp_line (start 0.69 -3.15) (end 0.69 -1.88) (layer "F.Fab") (width 0.1) (tstamp ef2a9f8c-7cd4-416a-84ef-aadb97a72e72)) + (pad "1" thru_hole rect (at 0 0) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 16 "Net-(R8-Pad1)") (pinfunction "G") (pintype "input") (tstamp c76ced2a-0b0a-4f50-8765-2d2b558a1436)) + (pad "2" thru_hole oval (at 2.54 0) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 4 "Net-(D2-Pad2)") (pinfunction "D") (pintype "passive") (tstamp 687f3f0b-fce2-49b8-aa12-0a7902528cc3)) + (pad "3" thru_hole oval (at 5.08 0) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 3 "GND") (pinfunction "S") (pintype "passive") (tstamp 16c73c0f-69ae-4a2d-885d-491e48393140)) + (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_THT.3dshapes/TO-220-3_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp ffba3f95-26ae-4e2f-abef-62290f7d4274) + (at 111.76 55.88 90) + (descr "Through hole straight pin header, 1x02, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x02 2.54mm single row") + (property "Sheetfile" "electronics.kicad_sch") + (property "Sheetname" "") + (path "/56b1ef67-0d6f-4d06-97fd-45bca9c1e150") + (attr through_hole) + (fp_text reference "J16" (at 0 -2.33 90) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d59cc7b1-f9a9-4aff-9301-3156c48899f3) + ) + (fp_text value "LED" (at 0 -3.175 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d761806c-bfd3-463b-8e79-dc525a64a7d8) + ) + (fp_text user "${REFERENCE}" (at 0 1.27) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 091c4f41-ab50-471d-a4fb-dc1d71b60f07) + ) + (fp_line (start -1.33 1.27) (end -1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 0a4a77be-b9aa-4a3a-802e-3df4ef0dd5fc)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 31fb4b9c-aada-4ca0-9c5a-ac86c478cf0c)) + (fp_line (start 1.33 1.27) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp 7268d337-7682-4495-b91c-663da76f2e2b)) + (fp_line (start -1.33 3.87) (end 1.33 3.87) (layer "F.SilkS") (width 0.12) (tstamp b46f74c9-51a3-4dfb-9691-b32668b6e989)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp f4735624-5964-4c6a-8c80-b289f8397bd3)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp f94fbfd8-1ad8-4225-9290-f0ad759f5a38)) + (fp_line (start 1.8 4.35) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 138f25f9-569a-4380-8e94-a0b45a0a69c2)) + (fp_line (start -1.8 -1.8) (end -1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp 76c3fac7-59b3-410c-8a40-f3686e5b89c0)) + (fp_line (start -1.8 4.35) (end 1.8 4.35) (layer "F.CrtYd") (width 0.05) (tstamp d2dea8a4-8128-488c-a92a-8d24e519e3cf)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp e2a9dcd0-afd5-4c04-848e-657684f7c7c8)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 1e9490dd-e3b2-46d4-a605-d2e10d106ad3)) + (fp_line (start 1.27 3.81) (end -1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 3bb40358-4887-4280-9b64-c960ef2777e6)) + (fp_line (start 1.27 -1.27) (end 1.27 3.81) (layer "F.Fab") (width 0.1) (tstamp 5abba730-b1a2-46c9-ad28-fdc7a20ab14a)) + (fp_line (start -1.27 3.81) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 5c49d6e1-f8a9-4b07-8110-2ef03d686e30)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp 694efd74-62b7-4b02-8564-d95c5a8f7e00)) + (pad "1" thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 24 "Net-(R9-Pad1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 34ccdb16-688f-41c0-b67c-855ef29e58ea)) + (pad "2" thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 29 "/ESPGND") (pinfunction "Pin_2") (pintype "passive") (tstamp b07f0c55-0a30-49a8-9261-a8d935e8be7f)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_line (start 147.32 76.2) (end 99.06 76.2) (layer "Dwgs.User") (width 0.1) (tstamp 07ed7205-8bdb-4862-9972-15b0b6b3639d)) + (gr_line (start 116.84 53.34) (end 116.84 86.36) (layer "Dwgs.User") (width 0.1) (tstamp 0ab3efab-4801-488f-9ef8-a65636a397b7)) + (gr_line (start 147.32 60.96) (end 99.06 60.96) (layer "Dwgs.User") (width 0.1) (tstamp 16a241cc-ff48-40b4-99fd-9e4e97fc020e)) + (gr_line (start 99.06 58.42) (end 147.32 58.42) (layer "Dwgs.User") (width 0.1) (tstamp 2d2b0cf4-58c4-4106-8c04-eb1c20b05149)) + (gr_line (start 111.76 53.34) (end 111.76 86.36) (layer "Dwgs.User") (width 0.1) (tstamp 49b772b4-25fb-4d4e-8f60-1fae5c8be0d9)) + (gr_line (start 109.22 86.36) (end 109.22 53.34) (layer "Dwgs.User") (width 0.1) (tstamp 58087b8c-1cdb-4a4b-89ad-4054cec95ed0)) + (gr_line (start 132.08 53.34) (end 132.08 86.36) (layer "Dwgs.User") (width 0.1) (tstamp 5948e34c-77d0-474c-9c1d-771f98e6dd9b)) + (gr_line (start 144.78 86.36) (end 144.78 53.34) (layer "Dwgs.User") (width 0.1) (tstamp 617b0fe2-b5d0-4ebb-8cd5-e8e3be5cf787)) + (gr_line (start 147.32 81.28) (end 99.06 81.28) (layer "Dwgs.User") (width 0.1) (tstamp 624e8784-dce8-4e46-ba68-e55f723815a2)) + (gr_line (start 129.54 86.36) (end 129.54 53.34) (layer "Dwgs.User") (width 0.1) (tstamp 67af8c37-709c-4dda-b3f7-5a2281997566)) + (gr_line (start 147.32 83.82) (end 99.06 83.82) (layer "Dwgs.User") (width 0.1) (tstamp 69ec7f31-42c0-4d99-88f7-93d787afb6e6)) + (gr_line (start 142.24 53.34) (end 142.24 86.36) (layer "Dwgs.User") (width 0.1) (tstamp 6ea3064d-3471-4b03-816f-b6e9135d05ea)) + (gr_line (start 99.06 78.74) (end 147.32 78.74) (layer "Dwgs.User") (width 0.1) (tstamp 89fbd510-d966-4220-965a-795f0fab13d5)) + (gr_line (start 147.32 71.12) (end 99.06 71.12) (layer "Dwgs.User") (width 0.1) (tstamp 90c680f4-9812-42a2-8a45-b08224fded88)) + (gr_line (start 134.62 86.36) (end 134.62 53.34) (layer "Dwgs.User") (width 0.1) (tstamp 91951b66-328b-421d-aa35-0a0308924547)) + (gr_line (start 99.06 66.04) (end 99.06 68.58) (layer "Dwgs.User") (width 0.1) (tstamp 97e872ba-7615-467a-bb03-4fe365751432)) + (gr_line (start 106.68 86.36) (end 106.68 53.34) (layer "Dwgs.User") (width 0.1) (tstamp 9dafddcb-2db1-4b35-9b94-c9b7b6815fc3)) + (gr_line (start 99.06 63.5) (end 147.32 63.5) (layer "Dwgs.User") (width 0.1) (tstamp a6e5039b-4b15-4626-ad48-983a0e30d761)) + (gr_line (start 127 53.34) (end 127 86.36) (layer "Dwgs.User") (width 0.1) (tstamp b8f5c651-2b36-41fe-af82-50b542175426)) + (gr_line (start 137.16 53.34) (end 137.16 86.36) (layer "Dwgs.User") (width 0.1) (tstamp b9c06a6b-1130-4775-a6d9-82074ea83b21)) + (gr_line (start 99.06 55.88) (end 147.32 55.88) (layer "Dwgs.User") (width 0.1) (tstamp ccd8f61e-0b6a-44eb-8ae9-592d75e89439)) + (gr_line (start 124.46 86.36) (end 124.46 53.34) (layer "Dwgs.User") (width 0.1) (tstamp ce2bc21a-9c69-4d84-9527-df5f9103bfb0)) + (gr_line (start 147.32 66.04) (end 99.06 66.04) (layer "Dwgs.User") (width 0.1) (tstamp d7e8a293-5751-4958-ad9d-b4b7f49027bd)) + (gr_line (start 99.06 68.58) (end 147.32 68.58) (layer "Dwgs.User") (width 0.1) (tstamp d8b275f9-a307-4208-a5e1-51b3694f7091)) + (gr_line (start 139.7 86.36) (end 139.7 53.34) (layer "Dwgs.User") (width 0.1) (tstamp dd0b49c0-8193-420b-a601-ec76c38b167b)) + (gr_line (start 101.6 53.34) (end 101.6 86.36) (layer "Dwgs.User") (width 0.1) (tstamp e96ab7e8-9577-403c-9aad-fd1d74ce6ad2)) + (gr_line (start 121.92 53.34) (end 121.92 86.36) (layer "Dwgs.User") (width 0.1) (tstamp ea657044-01fe-4e97-9d4b-9bd3dcc34acd)) + (gr_line (start 114.3 86.36) (end 114.3 53.34) (layer "Dwgs.User") (width 0.1) (tstamp ef203ae2-968b-48eb-914b-bdffd42354bd)) + (gr_line (start 119.38 86.36) (end 119.38 53.34) (layer "Dwgs.User") (width 0.1) (tstamp f73d5bbe-418e-4f5e-9f26-79f6ce72c477)) + (gr_line (start 99.06 73.66) (end 147.32 73.66) (layer "Dwgs.User") (width 0.1) (tstamp f82ce0ed-1254-4766-93c4-cf970c744261)) + (gr_line (start 104.14 53.34) (end 104.14 86.36) (layer "Dwgs.User") (width 0.1) (tstamp fd772470-d2f4-439a-870e-0ea994c6032d)) + (gr_rect (start 147.32 86.36) (end 99.06 53.34) (layer "Edge.Cuts") (width 0.2) (fill none) (tstamp d60744de-eede-45c0-90ac-d35d080d4108)) + (gr_text "+" (at 144.78 68.58) (layer "F.SilkS") (tstamp d35f42fa-7bb8-45b2-9cf9-812a3c2d5855) + (effects (font (size 1.5 1.5) (thickness 0.3)) (justify mirror)) + ) + (dimension (type aligned) (layer "B.Cu") (tstamp 51b0fdf8-933f-44e6-ad09-38876b2c1999) + (pts (xy 99.06 53.34) (xy 147.32 53.34)) + (height -5.08) + (gr_text "48,2600 mm" (at 123.19 46.46) (layer "B.Cu") (tstamp 51b0fdf8-933f-44e6-ad09-38876b2c1999) + (effects (font (size 1.5 1.5) (thickness 0.3))) + ) + (format (units 3) (units_format 1) (precision 4)) + (style (thickness 0.2) (arrow_length 1.27) (text_position_mode 0) (extension_height 0.58642) (extension_offset 0.5) keep_text_aligned) + ) + (dimension (type aligned) (layer "B.Cu") (tstamp 931b2c3a-6a34-446c-a3ef-e31393616536) + (pts (xy 147.32 53.34) (xy 147.32 86.36)) + (height -5.08) + (gr_text "33,0200 mm" (at 150.6 69.85 90) (layer "B.Cu") (tstamp 931b2c3a-6a34-446c-a3ef-e31393616536) + (effects (font (size 1.5 1.5) (thickness 0.3))) + ) + (format (units 3) (units_format 1) (precision 4)) + (style (thickness 0.2) (arrow_length 1.27) (text_position_mode 0) (extension_height 0.58642) (extension_offset 0.5) keep_text_aligned) + ) + + (segment (start 137.16 58.42) (end 137.16 55.88) (width 1) (layer "B.Cu") (net 1) (tstamp 644a3af4-fc3b-46fb-a459-c17d183e1ca2)) + (segment (start 137.16 55.88) (end 142.24 55.88) (width 1) (layer "B.Cu") (net 1) (tstamp 9a350a45-3456-42e6-86ce-72ada23fec6d)) + (segment (start 144.78 58.42) (end 142.24 58.42) (width 1) (layer "B.Cu") (net 1) (tstamp d1617a56-937f-47b2-b625-4e7a95352fda)) + (segment (start 142.24 58.42) (end 142.24 55.88) (width 1) (layer "B.Cu") (net 1) (tstamp da5678bf-f9be-4a56-a942-66d0c360e8f1)) + (segment (start 142.24 60.96) (end 142.24 58.42) (width 1) (layer "B.Cu") (net 1) (tstamp f91de863-8ffe-47b8-a677-dc6e046fdbf5)) + (segment (start 142.24 63.5) (end 142.24 68.58) (width 1) (layer "B.Cu") (net 2) (tstamp 08740404-dd70-4027-9af9-de935fcd3ed3)) + (segment (start 144.78 68.58) (end 139.7 68.58) (width 1) (layer "B.Cu") (net 2) (tstamp 0ec47b18-41fe-4139-ae98-57ee99141be4)) + (segment (start 139.7 63.5) (end 142.24 63.5) (width 1) (layer "B.Cu") (net 2) (tstamp 2b03f1e6-6697-47ad-9bd2-82eaa4751ef0)) + (segment (start 144.78 68.58) (end 144.78 60.96) (width 1) (layer "B.Cu") (net 2) (tstamp 2b901244-291a-4128-b337-c5ac08ce29c2)) + (segment (start 132.08 83.82) (end 132.08 81.28) (width 1) (layer "B.Cu") (net 2) (tstamp 77c8c3ff-11ea-4a49-90eb-aa7690daada3)) + (segment (start 144.78 83.82) (end 132.08 83.82) (width 1) (layer "B.Cu") (net 2) (tstamp 8b4eec2f-d24b-4a76-bad2-be80c4caa508)) + (segment (start 144.78 68.58) (end 144.78 83.82) (width 1) (layer "B.Cu") (net 2) (tstamp a3e83623-69e4-4d07-9ba0-22a99044f2a9)) + (segment (start 137.16 60.96) (end 139.7 60.96) (width 1) (layer "B.Cu") (net 3) (tstamp 19de9b9e-4694-4fc0-9966-20703b193f01)) + (segment (start 139.7 71.12) (end 137.16 71.12) (width 1) (layer "B.Cu") (net 3) (tstamp 35068bde-8f07-4791-a8e7-75f33d863632)) + (segment (start 137.16 71.12) (end 137.16 66.04) (width 1) (layer "B.Cu") (net 3) (tstamp 436639b9-ec44-4d9b-9a14-935d4da72c43)) + (segment (start 137.16 66.04) (end 139.7 66.04) (width 1) (layer "B.Cu") (net 3) (tstamp 772fab93-7770-4bb1-82a5-68635702f500)) + (segment (start 137.16 66.04) (end 137.16 60.96) (width 1) (layer "B.Cu") (net 3) (tstamp 80afff70-1cb9-421e-af55-5105a8474f27)) + (segment (start 139.7 71.12) (end 142.24 71.12) (width 1) (layer "B.Cu") (net 3) (tstamp b3806e3b-8027-4448-bd21-0ba5cfaf0289)) + (segment (start 139.7 76.2) (end 139.7 71.12) (width 1) (layer "B.Cu") (net 3) (tstamp cc9da913-e650-4fd5-a745-606dd8c70e72)) + (segment (start 139.7 60.96) (end 139.7 58.42) (width 1) (layer "B.Cu") (net 3) (tstamp efcb771b-bd84-40fd-9a58-a4d7701a23fc)) + (segment (start 137.16 81.28) (end 134.62 81.28) (width 1) (layer "B.Cu") (net 4) (tstamp 017b7c91-4cad-4602-803c-f55690cb1a03)) + (segment (start 137.16 76.2) (end 137.16 81.28) (width 1) (layer "B.Cu") (net 4) (tstamp 30b29af2-38e9-4a97-ad76-9318f7d4a84e)) + (segment (start 127 58.42) (end 129.54 58.42) (width 1) (layer "B.Cu") (net 5) (tstamp 9249f668-213d-4e5c-a68e-defe2479a59d)) + (segment (start 127 60.96) (end 129.54 60.96) (width 1) (layer "B.Cu") (net 6) (tstamp 73fd4575-ba49-4f7b-b1cb-c8b2cb8b2d62)) + (segment (start 127 73.66) (end 129.54 73.66) (width 1) (layer "B.Cu") (net 7) (tstamp d47ebc66-4b78-4ccf-a1f6-04daf3ad7f91)) + (segment (start 127 76.2) (end 129.54 76.2) (width 1) (layer "B.Cu") (net 8) (tstamp 47745d1b-ddda-4755-bed2-4b1c83e3bfa8)) + (segment (start 114.3 58.42) (end 119.38 58.42) (width 1) (layer "B.Cu") (net 9) (tstamp f862e03a-62bf-467e-90af-23dde3525c1d)) + (segment (start 116.84 63.5) (end 116.84 60.96) (width 1) (layer "B.Cu") (net 10) (tstamp 48902999-bc59-45e2-b8fd-a26203369902)) + (segment (start 116.84 63.5) (end 119.38 63.5) (width 1) (layer "B.Cu") (net 10) (tstamp d4deae3c-cea4-42a4-a1af-d0620fcbe628)) + (segment (start 116.84 60.96) (end 114.3 60.96) (width 1) (layer "B.Cu") (net 10) (tstamp d8d28bd2-a6a3-4438-9a45-ac25efe53ba9)) + (segment (start 116.84 68.58) (end 119.38 68.58) (width 1) (layer "B.Cu") (net 11) (tstamp a60b7177-169a-48d6-bd59-4d4516c8f38a)) + (segment (start 114.3 66.04) (end 114.3 63.5) (width 1) (layer "B.Cu") (net 11) (tstamp e5bb3364-26cd-4bc2-ba18-763b3e60a8dc)) + (segment (start 116.84 68.58) (end 116.84 66.04) (width 1) (layer "B.Cu") (net 11) (tstamp f435cf8e-24c7-4a63-afa4-0a7150588cd8)) + (segment (start 116.84 66.04) (end 114.3 66.04) (width 1) (layer "B.Cu") (net 11) (tstamp fd58ce9b-e75f-41c3-adfe-7602ac84853d)) + (segment (start 116.84 73.66) (end 119.38 73.66) (width 1) (layer "B.Cu") (net 12) (tstamp 2cbd4fb6-e4f0-4ddd-8274-d97a97c38230)) + (segment (start 114.3 76.2) (end 116.84 76.2) (width 1) (layer "B.Cu") (net 12) (tstamp b3265a13-18f8-48ee-9206-96644f3105a0)) + (segment (start 116.84 76.2) (end 116.84 73.66) (width 1) (layer "B.Cu") (net 12) (tstamp fbaf9c5f-d61d-41f4-ba5d-94edf3d3ba52)) + (segment (start 127 68.58) (end 132.08 68.58) (width 1) (layer "B.Cu") (net 13) (tstamp f2ec8174-7765-4aee-b569-840c2ff1d55e)) + (segment (start 127 63.5) (end 132.08 63.5) (width 1) (layer "B.Cu") (net 14) (tstamp f311c84f-c7e9-46c8-8255-5510e6f564f4)) + (segment (start 127 66.04) (end 134.62 66.04) (width 1) (layer "B.Cu") (net 15) (tstamp 3c11ec05-f8f7-4105-9724-060ea9a4a70a)) + (segment (start 134.62 66.04) (end 134.62 58.42) (width 1) (layer "B.Cu") (net 15) (tstamp 620f8b8f-11c4-4d13-ab95-3eb8273601ff)) + (segment (start 134.62 71.12) (end 127 71.12) (width 1) (layer "B.Cu") (net 16) (tstamp 3957b4c1-9c35-4e47-9b36-3d9eb4feb93f)) + (segment (start 134.62 76.2) (end 134.62 71.12) (width 1) (layer "B.Cu") (net 16) (tstamp a363e60f-db16-4ab1-a666-06072ee530c9)) + (segment (start 101.625 58.42) (end 106.68 58.42) (width 1) (layer "B.Cu") (net 17) (tstamp c53c7a00-19b0-445b-b396-b3f10f963442)) + (segment (start 106.68 60.96) (end 101.625 60.96) (width 1) (layer "B.Cu") (net 18) (tstamp 876d000c-f2ab-4086-af9c-8035348bc763)) + (segment (start 106.68 63.5) (end 101.625 63.5) (width 1) (layer "B.Cu") (net 19) (tstamp e162300c-558a-4684-88d9-cb468ddec026)) + (segment (start 101.625 76.2) (end 106.68 76.2) (width 1) (layer "B.Cu") (net 20) (tstamp 7518ffb2-50fd-4681-9924-5b2e1f2b6a1d)) + (segment (start 101.625 78.74) (end 106.68 78.74) (width 1) (layer "B.Cu") (net 21) (tstamp 66ffbb18-0f87-4162-a219-930842171ece)) + (segment (start 111.76 71.12) (end 111.76 81.28) (width 1) (layer "B.Cu") (net 22) (tstamp 260e75f9-92d4-4b86-bfe8-c2b717279c77)) + (segment (start 114.3 71.12) (end 111.76 71.12) (width 1) (layer "B.Cu") (net 22) (tstamp 76119b2e-00be-4069-b4e1-7df2d21936ec)) + (segment (start 114.3 81.28) (end 116.84 81.28) (width 1) (layer "B.Cu") (net 23) (tstamp 97512d4e-436f-4782-8a57-cbcee72c862a)) + (segment (start 111.76 68.58) (end 114.3 68.58) (width 1) (layer "B.Cu") (net 24) (tstamp 91ac1fbb-d4db-4c56-9f5f-9b072f37811e)) + (segment (start 111.76 55.88) (end 111.76 68.58) (width 1) (layer "B.Cu") (net 24) (tstamp c33686de-d358-41df-a96d-17443e779ae3)) + (segment (start 119.38 78.74) (end 119.38 81.28) (width 1) (layer "B.Cu") (net 25) (tstamp 30a674b4-603f-4d64-8404-782e783a30f7)) + (segment (start 114.3 78.74) (end 119.38 78.74) (width 1) (layer "B.Cu") (net 25) (tstamp b82531db-7096-4b9b-a40b-2b68e923215c)) + (segment (start 106.68 68.58) (end 101.625 68.58) (width 1) (layer "B.Cu") (net 26) (tstamp 4ae60256-da33-4d15-94d8-1c92c0d13891)) + (segment (start 101.625 71.12) (end 106.68 71.12) (width 1) (layer "B.Cu") (net 27) (tstamp 95385932-c25c-42a6-8ab8-b5f3deadb01a)) + (segment (start 101.625 66.04) (end 106.68 66.04) (width 1) (layer "B.Cu") (net 28) (tstamp 154b960f-6f40-4d33-b7b2-c7948e722ed5)) + (segment (start 121.92 66.04) (end 119.38 66.04) (width 1) (layer "B.Cu") (net 29) (tstamp 10bfd8f4-1fce-4b8f-8280-b4e3811fb320)) + (segment (start 119.38 76.2) (end 121.92 76.2) (width 1) (layer "B.Cu") (net 29) (tstamp 34f6c5f5-c0f0-4f9d-a1fb-b7d7bca4fcea)) + (segment (start 121.92 66.04) (end 121.92 60.96) (width 1) (layer "B.Cu") (net 29) (tstamp 490acc3d-664c-4be9-b7ec-b480fece135f)) + (segment (start 109.22 71.12) (end 109.22 73.66) (width 1) (layer "B.Cu") (net 29) (tstamp 4e861ae0-aff4-4c68-9835-5e30e0ad3e0f)) + (segment (start 121.92 76.2) (end 121.92 71.12) (width 1) (layer "B.Cu") (net 29) (tstamp 66656e6a-0da0-4c9c-9344-22a8ab3974e1)) + (segment (start 109.22 73.66) (end 101.625 73.66) (width 1) (layer "B.Cu") (net 29) (tstamp 76df2d5a-6e53-4d90-bad2-41012f63180f)) + (segment (start 121.92 60.96) (end 119.38 60.96) (width 1) (layer "B.Cu") (net 29) (tstamp 79326588-7105-436e-a093-f13501daf755)) + (segment (start 121.92 76.2) (end 121.92 81.28) (width 1) (layer "B.Cu") (net 29) (tstamp 7bfdecba-0b34-4f8f-9361-16f764ad7915)) + (segment (start 109.22 83.82) (end 109.22 73.66) (width 1) (layer "B.Cu") (net 29) (tstamp 89d03e39-cbba-487b-b8cf-d93efbdaa2e0)) + (segment (start 121.92 71.12) (end 121.92 66.04) (width 1) (layer "B.Cu") (net 29) (tstamp 9ca300b6-247c-4a3f-9d4c-ac090d7b9b51)) + (segment (start 114.3 55.88) (end 121.92 55.88) (width 1) (layer "B.Cu") (net 29) (tstamp a8540948-9f3f-412d-bb04-79443f31f14b)) + (segment (start 121.92 55.88) (end 121.92 60.96) (width 1) (layer "B.Cu") (net 29) (tstamp b3b3c10f-fe02-499b-9a53-c5a118bfe85c)) + (segment (start 109.22 66.04) (end 109.22 71.12) (width 1) (layer "B.Cu") (net 29) (tstamp bb2474c9-096e-44a6-abe1-b5ba717c0c47)) + (segment (start 121.92 81.28) (end 121.92 83.82) (width 1) (layer "B.Cu") (net 29) (tstamp cfd7ca96-6e07-4e7d-acdc-190c72ba3f40)) + (segment (start 121.92 71.12) (end 119.38 71.12) (width 1) (layer "B.Cu") (net 29) (tstamp e92f9171-9e91-4430-813f-97f4bdda0190)) + (segment (start 121.92 83.82) (end 109.22 83.82) (width 1) (layer "B.Cu") (net 29) (tstamp f7fa478c-2c99-40f5-a764-b9ebec21d07b)) + +) diff --git a/electronics/electronics.kicad_pro b/electronics/electronics.kicad_pro new file mode 100644 index 0000000..d9995d1 --- /dev/null +++ b/electronics/electronics.kicad_pro @@ -0,0 +1,435 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.049999999999999996, + "copper_line_width": 0.19999999999999998, + "copper_text_italic": false, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "copper_text_upright": false, + "courtyard_line_width": 0.049999999999999996, + "dimension_precision": 4, + "dimension_units": 3, + "dimensions": { + "arrow_length": 1270000, + "extension_offset": 500000, + "keep_text_aligned": true, + "suppress_zeroes": false, + "text_position": 0, + "units_format": 1 + }, + "fab_line_width": 0.09999999999999999, + "fab_text_italic": false, + "fab_text_size_h": 1.0, + "fab_text_size_v": 1.0, + "fab_text_thickness": 0.15, + "fab_text_upright": false, + "other_line_width": 0.09999999999999999, + "other_text_italic": false, + "other_text_size_h": 1.0, + "other_text_size_v": 1.0, + "other_text_thickness": 0.15, + "other_text_upright": false, + "pads": { + "drill": 0.762, + "height": 1.524, + "width": 1.524 + }, + "silk_line_width": 0.12, + "silk_text_italic": false, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15, + "silk_text_upright": false, + "zones": { + "45_degree_only": false, + "min_clearance": 0.508 + } + }, + "diff_pair_dimensions": [ + { + "gap": 0.0, + "via_gap": 0.0, + "width": 0.0 + } + ], + "drc_exclusions": [], + "meta": { + "filename": "board_design_settings.json", + "version": 2 + }, + "rule_severities": { + "annular_width": "error", + "clearance": "error", + "copper_edge_clearance": "error", + "courtyards_overlap": "error", + "diff_pair_gap_out_of_range": "error", + "diff_pair_uncoupled_length_too_long": "error", + "drill_out_of_range": "error", + "duplicate_footprints": "warning", + "extra_footprint": "warning", + "footprint_type_mismatch": "error", + "hole_clearance": "error", + "hole_near_hole": "error", + "invalid_outline": "error", + "item_on_disabled_layer": "error", + "items_not_allowed": "error", + "length_out_of_range": "error", + "malformed_courtyard": "error", + "microvia_drill_out_of_range": "error", + "missing_courtyard": "ignore", + "missing_footprint": "warning", + "net_conflict": "warning", + "npth_inside_courtyard": "ignore", + "padstack": "error", + "pth_inside_courtyard": "ignore", + "shorting_items": "error", + "silk_over_copper": "warning", + "silk_overlap": "warning", + "skew_out_of_range": "error", + "through_hole_pad_without_hole": "error", + "too_many_vias": "error", + "track_dangling": "warning", + "track_width": "error", + "tracks_crossing": "error", + "unconnected_items": "error", + "unresolved_variable": "error", + "via_dangling": "warning", + "zone_has_empty_net": "error", + "zones_intersect": "error" + }, + "rule_severitieslegacy_courtyards_overlap": true, + "rule_severitieslegacy_no_courtyard_defined": false, + "rules": { + "allow_blind_buried_vias": false, + "allow_microvias": false, + "max_error": 0.005, + "min_clearance": 0.0, + "min_copper_edge_clearance": 0.0, + "min_hole_clearance": 0.25, + "min_hole_to_hole": 0.25, + "min_microvia_diameter": 0.19999999999999998, + "min_microvia_drill": 0.09999999999999999, + "min_silk_clearance": 0.0, + "min_through_hole_diameter": 0.3, + "min_track_width": 0.19999999999999998, + "min_via_annular_width": 0.049999999999999996, + "min_via_diameter": 0.39999999999999997, + "use_height_for_length_calcs": true + }, + "track_widths": [ + 0.0, + 1.0 + ], + "via_dimensions": [ + { + "diameter": 0.0, + "drill": 0.0 + } + ], + "zones_allow_external_fillets": false, + "zones_use_no_outline": true + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "electronics.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 1.0, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.25, + "pin_symbol_size": 0.0, + "text_offset_ratio": 0.08 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "${KICAD6_TEMPLATE_DIR}/pagelayout_default.kicad_wks", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "102cb741-e9ae-4781-bb1b-b26fba217145", + "" + ] + ], + "text_variables": {} +} diff --git a/electronics/electronics.kicad_sch b/electronics/electronics.kicad_sch new file mode 100644 index 0000000..cebd1a8 --- /dev/null +++ b/electronics/electronics.kicad_sch @@ -0,0 +1,2883 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid 102cb741-e9ae-4781-bb1b-b26fba217145) + + (paper "A4") + + (title_block + (title "Camera Trigger") + (company "@grumpydevelop@contentnation.net") + ) + + (lib_symbols + (symbol "Connector:AudioJack2" (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "AudioJack2" (id 1) (at 0 6.35 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "audio jack receptacle mono phone headphone TS connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Audio Jack, 2 Poles (Mono / TS)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Jack*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "AudioJack2_0_1" + (rectangle (start -3.81 0) (end -2.54 -2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -2.54 3.81) (end 2.54 -2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 0 0) + (xy 0.635 -0.635) + (xy 1.27 0) + (xy 2.54 0) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 2.54) + (xy -0.635 2.54) + (xy -0.635 0) + (xy -1.27 -0.635) + (xy -1.905 0) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "AudioJack2_1_1" + (pin passive line (at 5.08 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "S" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "T" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector:AudioJack3" (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "AudioJack3" (id 1) (at 0 6.35 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "audio jack receptacle stereo headphones phones TRS connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Audio Jack, 3 Poles (Stereo / TRS)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Jack*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "AudioJack3_0_1" + (rectangle (start -5.08 -5.08) (end -6.35 -2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 0 -2.54) + (xy 0.635 -3.175) + (xy 1.27 -2.54) + (xy 2.54 -2.54) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.905 -2.54) + (xy -1.27 -3.175) + (xy -0.635 -2.54) + (xy -0.635 0) + (xy 2.54 0) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 2.54) + (xy -2.54 2.54) + (xy -2.54 -2.54) + (xy -3.175 -3.175) + (xy -3.81 -2.54) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 2.54 3.81) (end -5.08 -5.08) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "AudioJack3_1_1" + (pin passive line (at 5.08 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "R" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "S" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "T" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector:Barrel_Jack" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 5.334 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Barrel_Jack" (id 1) (at 0 -5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 1.27 -1.016 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 1.27 -1.016 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "DC power barrel jack connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "DC Barrel Jack" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "BarrelJack*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Barrel_Jack_0_1" + (rectangle (start -5.08 3.81) (end 5.08 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (arc (start -3.302 3.175) (mid -3.937 2.54) (end -3.302 1.905) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start -3.302 3.175) (mid -3.937 2.54) (end -3.302 1.905) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 5.08 2.54) + (xy 3.81 2.54) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.81 -2.54) + (xy -2.54 -2.54) + (xy -1.27 -1.27) + (xy 0 -2.54) + (xy 2.54 -2.54) + (xy 5.08 -2.54) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 3.683 3.175) (end -3.302 1.905) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + ) + (symbol "Barrel_Jack_1_1" + (pin passive line (at 7.62 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector_Generic:Conn_01x02" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_01x02" (id 1) (at 0 -5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_01x02_1_1" + (rectangle (start -1.27 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 1.27) (end 1.27 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin passive line (at -5.08 0 0) (length 3.81) + (name "Pin_1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector_Generic:Conn_01x09" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 12.7 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_01x09" (id 1) (at 0 -12.7 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, single row, 01x09, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_01x09_1_1" + (rectangle (start -1.27 -10.033) (end 0 -10.287) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -7.493) (end 0 -7.747) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -4.953) (end 0 -5.207) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 2.667) (end 0 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 5.207) (end 0 4.953) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 7.747) (end 0 7.493) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 10.287) (end 0 10.033) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 11.43) (end 1.27 -11.43) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin passive line (at -5.08 10.16 0) (length 3.81) + (name "Pin_1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 7.62 0) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 5.08 0) (length 3.81) + (name "Pin_3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 2.54 0) (length 3.81) + (name "Pin_4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 0 0) (length 3.81) + (name "Pin_5" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_6" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -5.08 0) (length 3.81) + (name "Pin_7" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -7.62 0) (length 3.81) + (name "Pin_8" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -10.16 0) (length 3.81) + (name "Pin_9" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:LED" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "D" (id 0) (at 0 2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LED" (id 1) (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "LED diode" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Light emitting diode" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "LED* LED_SMD:* LED_THT:*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LED_0_1" + (polyline + (pts + (xy -1.27 -1.27) + (xy -1.27 1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 0) + (xy 1.27 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 -1.27) + (xy 1.27 1.27) + (xy -1.27 0) + (xy 1.27 -1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.048 -0.762) + (xy -4.572 -2.286) + (xy -3.81 -2.286) + (xy -4.572 -2.286) + (xy -4.572 -1.524) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.778 -0.762) + (xy -3.302 -2.286) + (xy -2.54 -2.286) + (xy -3.302 -2.286) + (xy -3.302 -1.524) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "LED_1_1" + (pin passive line (at -3.81 0 0) (length 2.54) + (name "K" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 3.81 0 180) (length 2.54) + (name "A" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "R" (id 0) (at 2.032 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R" (id 1) (at 0 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at -1.778 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R res resistor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_0_1" + (rectangle (start -1.016 -2.54) (end 1.016 2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "R_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Diode:1N4001" (pin_numbers hide) (pin_names hide) (in_bom yes) (on_board yes) + (property "Reference" "D" (id 0) (at 0 2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "1N4001" (id 1) (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.vishay.com/docs/88503/1n4001.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "diode" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "50V 1A General Purpose Rectifier Diode, DO-41" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "D*DO?41*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "1N4001_0_1" + (polyline + (pts + (xy -1.27 1.27) + (xy -1.27 -1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 0) + (xy -1.27 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 1.27) + (xy 1.27 -1.27) + (xy -1.27 0) + (xy 1.27 1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "1N4001_1_1" + (pin passive line (at -3.81 0 0) (length 2.54) + (name "K" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 3.81 0 180) (length 2.54) + (name "A" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Isolator:LTV-247" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -5.08 5.08 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LTV-247" (id 1) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_SO:SOP-16_4.4x10.4mm_P1.27mm" (id 2) (at -5.08 -5.08 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://optoelectronics.liteon.com/upload/download/DS70-2009-0014/LTV-2X7%20sereis%20Mar17.PDF" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "ki_keywords" "NPN DC Quad Optocoupler" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "DC Quad Optocoupler, Vce 80V, CTR 100-600%, SOP-16" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOP*4.4x10.4mm*P1.27mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LTV-247_0_1" + (rectangle (start -5.08 3.81) (end 5.08 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy -3.175 -0.635) + (xy -1.905 -0.635) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 0.635) + (xy 4.445 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 4.445 -2.54) + (xy 2.54 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 4.445 -2.54) + (xy 5.08 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 4.445 2.54) + (xy 5.08 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 -0.635) + (xy -2.54 -2.54) + (xy -5.08 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 1.905) + (xy 2.54 -1.905) + (xy 2.54 -1.905) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -5.08 2.54) + (xy -2.54 2.54) + (xy -2.54 -1.27) + (xy -2.54 0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 -0.635) + (xy -3.175 0.635) + (xy -1.905 0.635) + (xy -2.54 -0.635) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.508 -0.508) + (xy 0.762 -0.508) + (xy 0.381 -0.635) + (xy 0.381 -0.381) + (xy 0.762 -0.508) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.508 0.508) + (xy 0.762 0.508) + (xy 0.381 0.381) + (xy 0.381 0.635) + (xy 0.762 0.508) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 3.048 -1.651) + (xy 3.556 -1.143) + (xy 4.064 -2.159) + (xy 3.048 -1.651) + (xy 3.048 -1.651) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + ) + (symbol "LTV-247_1_1" + (pin passive line (at -7.62 2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LTV-247_2_1" + (pin passive line (at 7.62 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LTV-247_3_1" + (pin passive line (at 7.62 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LTV-247_4_1" + (pin passive line (at 7.62 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Switch:SW_Push" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "SW" (id 0) (at 1.27 2.54 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "SW_Push" (id 1) (at 0 -1.524 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Push button switch, generic, two pins" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "SW_Push_0_1" + (circle (center -2.032 0) (radius 0.508) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 1.27) + (xy 0 3.048) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 1.27) + (xy -2.54 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 2.032 0) (radius 0.508) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin passive line (at -5.08 0 0) (length 2.54) + (name "1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 0 180) (length 2.54) + (name "2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Transistor_BJT:BC517" (pin_names (offset 0) hide) (in_bom yes) (on_board yes) + (property "Reference" "Q" (id 0) (at 5.08 1.905 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "BC517" (id 1) (at 5.08 0 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-92_Inline" (id 2) (at 5.08 -1.905 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://www.onsemi.com/pub/Collateral/BC517-D74Z-D.PDF" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "ki_keywords" "NPN Darlington Darl Transistor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "1A Ic, 30V Vce, Darlington NPN Transistor, TO-92" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "TO?92*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "BC517_0_1" + (polyline + (pts + (xy 0.635 0.635) + (xy 2.54 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.635 -0.635) + (xy 2.54 -2.54) + (xy 2.54 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.635 0) + (xy 2.54 1.905) + (xy 2.54 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.635 1.905) + (xy 0.635 -1.905) + (xy 0.635 -1.905) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 -1.778) + (xy 1.778 -1.27) + (xy 2.286 -2.286) + (xy 1.27 -1.778) + (xy 1.27 -1.778) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (circle (center 1.27 0) (radius 2.8194) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "BC517_1_1" + (pin passive line (at 2.54 5.08 270) (length 2.54) + (name "C" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -5.08 0 0) (length 5.715) + (name "B" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 -5.08 90) (length 2.54) + (name "E" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Transistor_FET:IRLZ34N" (pin_names hide) (in_bom yes) (on_board yes) + (property "Reference" "Q" (id 0) (at 6.35 1.905 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "IRLZ34N" (id 1) (at 6.35 0 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-220-3_Vertical" (id 2) (at 6.35 -1.905 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://www.infineon.com/dgdl/irlz34npbf.pdf?fileId=5546d462533600a40153567206892720" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "ki_keywords" "N-Channel HEXFET MOSFET Logic-Level" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "30A Id, 55V Vds, 35mOhm Rds, N-Channel HEXFET Power MOSFET, TO-220AB" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "TO?220*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "IRLZ34N_0_1" + (polyline + (pts + (xy 0.254 0) + (xy -2.54 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.254 1.905) + (xy 0.254 -1.905) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.762 -1.27) + (xy 0.762 -2.286) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.762 0.508) + (xy 0.762 -0.508) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.762 2.286) + (xy 0.762 1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 2.54) + (xy 2.54 1.778) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 -2.54) + (xy 2.54 0) + (xy 0.762 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.762 -1.778) + (xy 3.302 -1.778) + (xy 3.302 1.778) + (xy 0.762 1.778) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.016 0) + (xy 2.032 0.381) + (xy 2.032 -0.381) + (xy 1.016 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 2.794 0.508) + (xy 2.921 0.381) + (xy 3.683 0.381) + (xy 3.81 0.254) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 3.302 0.381) + (xy 2.921 -0.254) + (xy 3.683 -0.254) + (xy 3.302 0.381) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 1.651 0) (radius 2.794) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 2.54 -1.778) (radius 0.254) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (circle (center 2.54 1.778) (radius 0.254) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + ) + (symbol "IRLZ34N_1_1" + (pin input line (at -5.08 0 0) (length 2.54) + (name "G" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 5.08 270) (length 2.54) + (name "D" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 -5.08 90) (length 2.54) + (name "S" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:+12V" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+12V" (id 1) (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+12V\"" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "+12V_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "+12V_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "+12V" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:GND" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 0 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) + (xy 0 -1.27) + (xy 1.27 -1.27) + (xy 0 -2.54) + (xy -1.27 -1.27) + (xy 0 -1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "GND_1_1" + (pin power_in line (at 0 0 270) (length 0) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + (junction (at 127 80.01) (diameter 0) (color 0 0 0 0) + (uuid 110a0c0d-1b31-4d7d-86dd-1fa8f51f5950) + ) + (junction (at 200.66 59.69) (diameter 0) (color 0 0 0 0) + (uuid 129c2870-b914-42ff-a464-992891894644) + ) + (junction (at 187.96 88.9) (diameter 0) (color 0 0 0 0) + (uuid 199d2cba-a65e-4941-92f6-47b415357f03) + ) + (junction (at 162.56 80.01) (diameter 0) (color 0 0 0 0) + (uuid 1d2c07f9-1949-45c9-b381-ac1cfcdac472) + ) + (junction (at 127 107.95) (diameter 0) (color 0 0 0 0) + (uuid 29d53627-e930-484d-8f3d-2c46e7cae32d) + ) + (junction (at 160.02 59.69) (diameter 0) (color 0 0 0 0) + (uuid 31cc4738-48ef-4a1e-8ff7-0622e8bfd965) + ) + (junction (at 200.66 72.39) (diameter 0) (color 0 0 0 0) + (uuid 56454f28-9c16-4354-862b-63a050a038de) + ) + (junction (at 95.25 119.38) (diameter 0) (color 0 0 0 0) + (uuid 5c3953d0-ba6b-41fe-b3c6-a1d4ddd15b47) + ) + (junction (at 200.66 88.9) (diameter 0) (color 0 0 0 0) + (uuid 790b1131-5c88-4229-bdd7-3117edc8d03b) + ) + (junction (at 127 93.98) (diameter 0) (color 0 0 0 0) + (uuid 9997ee26-c8d9-40fc-99bd-55557f2987b2) + ) + (junction (at 175.26 72.39) (diameter 0) (color 0 0 0 0) + (uuid bba9cc60-22e0-4126-8b11-ff81494bfb51) + ) + (junction (at 104.14 119.38) (diameter 0) (color 0 0 0 0) + (uuid c00ca608-dfd7-4822-8d68-00fb2f805fc2) + ) + (junction (at 167.64 59.69) (diameter 0) (color 0 0 0 0) + (uuid e23dbc8a-e4e0-4bcc-90e5-8da590197713) + ) + (junction (at 175.26 88.9) (diameter 0) (color 0 0 0 0) + (uuid e2b4ff36-9bbc-4714-a5f0-b027b2835354) + ) + (junction (at 175.26 59.69) (diameter 0) (color 0 0 0 0) + (uuid e381ec45-b7ac-4c1d-9455-58b40cc7b8a8) + ) + (junction (at 177.8 59.69) (diameter 0) (color 0 0 0 0) + (uuid e434c8ff-c6c7-4b04-ad8b-c686eeebf0c2) + ) + + (no_connect (at 241.3 57.15) (uuid 36d937a0-6eb8-4093-a1e5-4e05398ef795)) + + (wire (pts (xy 100.965 71.12) (xy 104.14 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 000677d4-7781-41a1-a34f-947dda361da8) + ) + (wire (pts (xy 114.3 74.93) (xy 116.84 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 008eaa50-fbf1-4b1d-a367-cefa0f75893b) + ) + (polyline (pts (xy 251.46 34.29) (xy 251.46 139.065)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0150125b-1bb9-49f1-b2bf-8d71cb6b4727) + ) + + (wire (pts (xy 127 107.95) (xy 127 93.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0199f6db-3ace-4852-a3a7-c0e53b0dff26) + ) + (wire (pts (xy 200.66 88.9) (xy 198.12 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 058cdb08-7187-4d2f-a0ed-6459ae72c6f4) + ) + (wire (pts (xy 237.49 40.64) (xy 238.76 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 05ad5883-87c5-423e-95fb-b82d679b7df8) + ) + (wire (pts (xy 240.03 55.88) (xy 240.03 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 072bdd57-2102-4b68-aecf-5bd04319ed96) + ) + (wire (pts (xy 238.76 44.45) (xy 238.76 43.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 07f570c3-2f84-43bb-8d42-02365b62643d) + ) + (wire (pts (xy 143.51 60.96) (xy 148.59 60.96)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 08fc16c2-6ac6-4692-a37d-7f04572b9892) + ) + (wire (pts (xy 203.2 67.31) (xy 203.2 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0c338e21-00b6-4411-b7a9-adf41009d47f) + ) + (wire (pts (xy 129.54 41.91) (xy 121.92 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0c5cf049-ccb4-44d4-a479-8b48f1057155) + ) + (wire (pts (xy 153.67 59.69) (xy 160.02 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0eae4f4a-3540-4e0a-8f5c-e4208d05a6b7) + ) + (wire (pts (xy 237.49 115.57) (xy 248.92 115.57)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1021d2a8-e908-49e1-88d3-2be47234d986) + ) + (wire (pts (xy 250.825 135.255) (xy 237.49 135.255)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 11fa0e72-10ef-4d20-ab27-4fb903e4d2f0) + ) + (wire (pts (xy 187.96 80.01) (xy 193.04 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 123a73d1-b906-48c8-a532-c001a8022efc) + ) + (wire (pts (xy 127 93.98) (xy 128.27 93.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 139ead63-2083-4080-bb1e-cabc975d9f39) + ) + (wire (pts (xy 237.49 100.33) (xy 243.84 100.33)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1498ec5e-b808-44b6-8c64-de87a308d239) + ) + (wire (pts (xy 175.26 88.9) (xy 172.72 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 14b10c59-26e4-45f6-8a6b-239f18c70527) + ) + (wire (pts (xy 177.8 67.31) (xy 177.8 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 15ca6e48-9f43-4881-9705-c498a6bca424) + ) + (wire (pts (xy 110.49 93.98) (xy 127 93.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 15e814b1-1697-483e-9e6c-72d7a7d00948) + ) + (wire (pts (xy 124.46 74.93) (xy 128.27 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 16b0555f-d659-4e2e-a54b-0d0cc713695e) + ) + (wire (pts (xy 200.66 88.9) (xy 200.66 85.09)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 190ea63a-d448-463b-be8b-0acd74b988a7) + ) + (wire (pts (xy 148.59 60.96) (xy 148.59 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1d9e51cb-f4f4-49ad-afcb-de8b3d5a99fa) + ) + (wire (pts (xy 127 119.38) (xy 127 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1e06fdc9-1d8c-4bfc-be97-83f60cd16fd0) + ) + (wire (pts (xy 200.66 72.39) (xy 200.66 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 235cc1c7-9f81-491c-b6f8-30c11ad4baef) + ) + (wire (pts (xy 143.51 107.95) (xy 146.05 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 27226514-3658-4569-8f61-d9b99df21567) + ) + (wire (pts (xy 177.8 59.69) (xy 177.8 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 27796072-eddd-423f-baa9-3929edbe6ea5) + ) + (wire (pts (xy 237.49 69.85) (xy 243.84 69.85)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2f3d9f91-6ae0-4196-983b-651e659910b2) + ) + (wire (pts (xy 146.05 105.41) (xy 146.05 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2f5baecb-07a1-44e1-8cff-8e89dd4add78) + ) + (wire (pts (xy 85.725 119.38) (xy 95.25 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 319c71ae-35b7-47f7-a7cd-841ab8df14a9) + ) + (wire (pts (xy 238.76 40.64) (xy 238.76 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 33df23ec-19ce-4cbd-9c3d-2b700ab91173) + ) + (wire (pts (xy 153.67 74.93) (xy 153.67 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 348b0d61-5022-49af-9778-aac29085ad6f) + ) + (polyline (pts (xy 229.87 139.065) (xy 229.87 34.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 36b53a8f-af87-48cd-8d0e-90c0db70e455) + ) + + (wire (pts (xy 237.49 102.87) (xy 243.84 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 394b6bd8-54b1-418d-b810-125383e1e203) + ) + (wire (pts (xy 175.26 59.69) (xy 175.26 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 39bd2aa0-965f-4326-8cb2-35d015e841b3) + ) + (wire (pts (xy 203.2 59.69) (xy 203.2 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3a21fd69-89b4-47d8-a06c-8257cc1db70a) + ) + (wire (pts (xy 76.835 113.03) (xy 78.105 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3c7319a2-7754-4db6-9271-baba8cf6446c) + ) + (wire (pts (xy 248.92 125.73) (xy 237.49 125.73)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 42664593-5683-414b-ac75-49eac3109160) + ) + (polyline (pts (xy 229.87 34.29) (xy 251.46 34.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 47b9a006-0a82-4d74-ab71-99ce5aa3851c) + ) + + (wire (pts (xy 116.84 88.9) (xy 111.76 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 47bffc28-f2d8-421b-8c73-6fc99a391113) + ) + (wire (pts (xy 177.8 59.69) (xy 200.66 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4e05cecd-fa6d-4bba-bb09-f4162a667543) + ) + (wire (pts (xy 240.03 58.42) (xy 240.03 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4ee530cb-6f16-48d7-a018-4f71c4d2e13b) + ) + (wire (pts (xy 187.96 88.9) (xy 190.5 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4f5cde8d-a28a-4fcb-90d2-8137f6d16c82) + ) + (wire (pts (xy 121.92 39.37) (xy 121.92 35.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 50c5afd3-84a7-4360-aae6-f45810c1ebb9) + ) + (wire (pts (xy 74.93 78.74) (xy 109.22 78.74)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 51f09656-4db8-4694-be8e-85c57384726f) + ) + (wire (pts (xy 237.49 132.715) (xy 240.665 132.715)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5757c8df-fe31-4792-b4c3-f72278cd143d) + ) + (wire (pts (xy 237.49 123.19) (xy 241.3 123.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59bc09d6-c916-493d-ba80-c70d4cb4c967) + ) + (wire (pts (xy 74.93 73.66) (xy 85.725 73.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5b449aa8-66ff-496e-b990-52b5a4c0f82f) + ) + (wire (pts (xy 175.26 88.9) (xy 175.26 91.44)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5c347296-2e71-407d-b9e5-73c75fe5ff36) + ) + (polyline (pts (xy 251.46 139.065) (xy 229.87 139.065)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 61efe474-7aba-4188-b5c4-9309c5fa5b50) + ) + + (wire (pts (xy 85.725 118.11) (xy 85.725 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 65aa2c0f-e26d-4c6c-8c90-38500215431e) + ) + (wire (pts (xy 85.725 73.66) (xy 85.725 86.36)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 685ed69e-7fcf-4dd4-9488-b3235d26911c) + ) + (wire (pts (xy 143.51 74.93) (xy 153.67 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6913b7fc-0282-4345-9a40-229de77f9d88) + ) + (wire (pts (xy 74.93 63.5) (xy 114.3 63.5)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6e984cbf-c784-4d9d-b804-282c256fa941) + ) + (wire (pts (xy 237.49 85.09) (xy 243.84 85.09)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6f7f918b-b1eb-475c-86d1-544caab116be) + ) + (wire (pts (xy 121.92 39.37) (xy 129.54 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 703c377b-1001-4910-b4be-c9e6e761aaaf) + ) + (wire (pts (xy 175.26 69.85) (xy 175.26 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 707e75de-bd71-44c6-a0a2-fadc672ae3bc) + ) + (wire (pts (xy 127 93.98) (xy 127 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7168a191-0f93-451e-9fc1-7ca64a0e5707) + ) + (wire (pts (xy 124.46 102.87) (xy 128.27 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 717fe736-662d-47c5-840a-925c63deb9c5) + ) + (wire (pts (xy 127 80.01) (xy 128.27 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 71df0000-975f-4b7d-a2f9-b4a5077b55f5) + ) + (wire (pts (xy 74.93 68.58) (xy 100.965 68.58)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 768e28b8-b4c0-4dc8-b6be-f1aed22e7416) + ) + (wire (pts (xy 237.49 87.63) (xy 243.84 87.63)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 78f63b55-063e-4f24-9e29-dc066a197da2) + ) + (wire (pts (xy 160.02 72.39) (xy 160.02 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7999f2e1-b767-4160-a900-f398ecf36182) + ) + (wire (pts (xy 162.56 88.9) (xy 162.56 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7adfb321-f941-47b8-b4b6-f5fee53ef3ea) + ) + (wire (pts (xy 104.14 73.66) (xy 104.14 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7b09f36b-90b9-463d-a6e0-1860e759737e) + ) + (wire (pts (xy 146.05 102.87) (xy 143.51 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7cdc2ef1-4f95-4632-8381-aa287bf10c2c) + ) + (wire (pts (xy 114.3 63.5) (xy 114.3 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 87235c42-7717-4001-ae3a-7b53e94f2099) + ) + (wire (pts (xy 240.03 54.61) (xy 241.3 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 880030fe-ca8e-40a0-928f-1ab6607361fa) + ) + (wire (pts (xy 109.22 102.87) (xy 116.84 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8e612ff9-cccf-4cc0-9a66-01cbf5d85362) + ) + (wire (pts (xy 187.96 97.79) (xy 187.96 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8eb7a0a9-9676-4294-a40a-a1f9f2ce6788) + ) + (wire (pts (xy 153.67 93.98) (xy 153.67 97.79)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 907e40dc-cabd-4d17-8f50-440987f8e725) + ) + (wire (pts (xy 187.96 88.9) (xy 187.96 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 955db33c-7ff4-497d-82fc-67357ed26f80) + ) + (wire (pts (xy 175.26 72.39) (xy 175.26 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 969647fa-dec0-4ad5-871a-5d57d22d733a) + ) + (wire (pts (xy 250.825 132.715) (xy 250.825 135.255)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 99bdefc0-15c2-4865-83f2-75c2793895a7) + ) + (wire (pts (xy 175.26 59.69) (xy 177.8 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9ac79d56-7857-4067-9b2a-5df344096969) + ) + (wire (pts (xy 111.76 88.9) (xy 111.76 66.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a0a93e65-920f-4289-8752-08a035180165) + ) + (wire (pts (xy 127 80.01) (xy 127 66.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a0e32e0b-e08d-4ccd-b09f-651084d51bfb) + ) + (wire (pts (xy 238.76 43.18) (xy 237.49 43.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a3aa1992-376c-4c49-881a-ecc5945833fe) + ) + (wire (pts (xy 143.51 93.98) (xy 153.67 93.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a546bd25-8658-4f85-b720-3142705c1d5c) + ) + (wire (pts (xy 74.93 81.28) (xy 76.835 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a65a4dc7-4bd2-4ab8-8bb7-0c0d0aab637d) + ) + (wire (pts (xy 203.2 72.39) (xy 200.66 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a67224f6-a3c1-4b68-a32c-c289b2270156) + ) + (wire (pts (xy 151.13 66.04) (xy 151.13 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a7cbfcec-8089-4c92-93d5-62d73b1df19d) + ) + (wire (pts (xy 143.51 80.01) (xy 162.56 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a9b53dfe-7aac-4d72-a8da-08029124bd3f) + ) + (wire (pts (xy 237.49 113.03) (xy 241.3 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ac4b6aad-e4ec-4b32-85ec-578342430c4f) + ) + (wire (pts (xy 203.2 59.69) (xy 200.66 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ac73956b-7c46-48ed-aca5-4de476d5f141) + ) + (wire (pts (xy 121.92 41.91) (xy 121.92 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid af42f897-f3ff-48f8-8b68-6468cd1d71e1) + ) + (wire (pts (xy 95.25 103.505) (xy 95.25 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid af71aa3e-d66e-4b1b-ae51-cbb21ec3808e) + ) + (wire (pts (xy 248.92 113.03) (xy 248.92 115.57)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b02f6a55-b462-44a3-8636-7254719de68b) + ) + (wire (pts (xy 85.725 93.98) (xy 85.725 100.965)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b2d299b2-44cc-4adc-a7e9-b5bd0c034e9e) + ) + (wire (pts (xy 200.66 88.9) (xy 200.66 91.44)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b392e0ca-1552-4b3c-a5b9-5a7b5e26bd46) + ) + (wire (pts (xy 76.835 93.98) (xy 76.835 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b52d2193-9cf5-4145-a513-c8b493402961) + ) + (wire (pts (xy 95.25 119.38) (xy 104.14 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b7c6d34c-1f24-4d06-947a-96b73a4f3a24) + ) + (wire (pts (xy 124.46 60.96) (xy 128.27 60.96)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b8618f6a-646a-4c2a-adc7-e8d746979aad) + ) + (wire (pts (xy 177.8 72.39) (xy 175.26 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ba48f959-efe4-4850-91c0-87d4b7b11e56) + ) + (wire (pts (xy 110.49 93.98) (xy 110.49 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bdd44dfc-bb1c-406b-89c7-c887b8ef9e80) + ) + (wire (pts (xy 127 107.95) (xy 128.27 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bf62fa88-0ee3-4655-8c6e-35742090c8b4) + ) + (wire (pts (xy 95.25 93.98) (xy 95.25 100.965)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c147c6fc-b0d1-4383-b2ac-fbc90cc41fe0) + ) + (wire (pts (xy 124.46 88.9) (xy 128.27 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c28110f7-a59c-4e94-b0e4-5e742cd28163) + ) + (wire (pts (xy 85.725 103.505) (xy 85.725 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c344278c-9554-4e68-b874-eb37b2c72ba1) + ) + (wire (pts (xy 74.93 71.12) (xy 95.25 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c9ae26db-9aa1-4ae7-b7a2-a389cce4ed17) + ) + (wire (pts (xy 100.965 68.58) (xy 100.965 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cbfeb388-757e-4752-97f1-65d9730014e2) + ) + (wire (pts (xy 167.64 50.8) (xy 167.64 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cc257787-96f7-4a07-adbc-a4fc50302489) + ) + (wire (pts (xy 160.02 59.69) (xy 160.02 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cf67dfd2-2818-4f6d-99ef-853a92789f6e) + ) + (wire (pts (xy 74.93 76.2) (xy 110.49 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d0d4924c-1346-4816-8691-de7b89752cd6) + ) + (wire (pts (xy 74.93 60.96) (xy 116.84 60.96)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d3f84f95-3abb-4a84-99f8-c012ebb0906c) + ) + (wire (pts (xy 237.49 58.42) (xy 240.03 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d570f55e-1cd5-4c3e-b5e8-8c306868e276) + ) + (wire (pts (xy 111.76 66.04) (xy 74.93 66.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d675aaab-cf35-4f6b-afbd-a1bb59795d6f) + ) + (wire (pts (xy 162.56 88.9) (xy 165.1 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d6d45db8-ec03-4d9a-89c7-ca2cb57932f1) + ) + (wire (pts (xy 95.25 71.12) (xy 95.25 86.36)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d752ac8e-b2b3-4b3f-9205-cfbc681b5331) + ) + (wire (pts (xy 153.67 97.79) (xy 187.96 97.79)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dbd8a65a-9d2e-4b53-beb7-7b44d5b7b98b) + ) + (wire (pts (xy 162.56 80.01) (xy 167.64 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dc534ae5-69c7-4fcf-9a37-63054e139c90) + ) + (wire (pts (xy 153.67 59.69) (xy 153.67 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid deead966-50c4-43da-a2d3-b46280310a78) + ) + (wire (pts (xy 237.49 55.88) (xy 240.03 55.88)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid df46b854-c992-44ff-b16d-3b486c5fc7bf) + ) + (wire (pts (xy 160.02 59.69) (xy 167.64 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e088514a-81c5-4d3f-b5e5-a6fd621d448f) + ) + (wire (pts (xy 175.26 59.69) (xy 167.64 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e13f4352-ddc5-43c9-b6df-446bcc054399) + ) + (wire (pts (xy 104.14 119.38) (xy 127 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e4345c19-5173-4de9-bbb1-d5f4146aa6e6) + ) + (wire (pts (xy 200.66 59.69) (xy 200.66 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e5780908-e792-4193-bcf5-ed3cbdb6abf9) + ) + (wire (pts (xy 240.03 59.69) (xy 241.3 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e798323b-9d60-484f-8136-e584790bb016) + ) + (wire (pts (xy 248.92 123.19) (xy 248.92 125.73)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e8c2809d-e6c8-4cdb-a9bd-4d62ef5f2b0c) + ) + (wire (pts (xy 175.26 88.9) (xy 175.26 85.09)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e93fdd68-b689-49e2-a2c0-8f1516652e6f) + ) + (wire (pts (xy 109.22 78.74) (xy 109.22 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ea530128-60ad-4ba6-b02f-cc43d12daef4) + ) + (wire (pts (xy 143.51 66.04) (xy 151.13 66.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f16d9ae8-c94f-4b6c-af06-9384bf38d4cc) + ) + (wire (pts (xy 127 66.04) (xy 128.27 66.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f3dfeb75-2602-4390-b37e-3f5e15ccf004) + ) + (wire (pts (xy 200.66 69.85) (xy 200.66 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f818df2d-3096-4c28-9c75-75f819dbf1eb) + ) + (wire (pts (xy 76.835 81.28) (xy 76.835 86.36)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f99a27de-e2a9-4396-a6dd-0f7474049dd7) + ) + (wire (pts (xy 237.49 72.39) (xy 243.84 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fb5ad605-699f-4826-ae24-66bc34e2bb17) + ) + (wire (pts (xy 160.02 88.9) (xy 143.51 88.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fbad52a8-66ab-45e3-ab3d-f4f978049ed0) + ) + + (text "D5" (at 64.77 79.375 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 0cf4d535-1743-4166-88d0-c617092362b0) + ) + (text "D2" (at 64.77 66.675 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 20aaf926-808e-4646-9e72-10c64da1968d) + ) + (text "D0" (at 64.77 61.595 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 23369747-e9e9-4b63-aa2d-51505c932d5c) + ) + (text "D4" (at 64.77 71.755 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 24d28b46-8567-453a-98f2-96237126cd06) + ) + (text "D6" (at 64.77 81.915 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2e65d106-930d-4bef-97a5-f6991a61b405) + ) + (text "+3.3V" (at 61.595 74.295 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 60a9c5e0-23e5-4508-af12-7f6e30746fa9) + ) + (text "D3" (at 64.77 69.215 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid bd7277bb-a8d3-41ab-8347-51f85cbd32ea) + ) + (text "GND" (at 63.5 76.835 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid c2d9cccb-68a9-417a-9e91-b5786963e772) + ) + (text "D1" (at 64.77 64.135 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid dea7a33e-0b9d-4119-a9d6-1451681be2d7) + ) + + (label "ESPGND" (at 86.995 76.2 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 72fbdc19-d5ad-419e-b619-07d12efc0cd8) + ) + (label "D3" (at 85.725 68.58 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid e2e3e2d2-830f-4555-a8d8-4375b05d30c9) + ) + (label "3.3V" (at 85.725 73.66 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid e61cf46a-dc08-401e-9cab-51dc884a279d) + ) + + (symbol (lib_id "Connector:AudioJack3") (at 246.38 57.15 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f15d486) + (property "Reference" "#J31" (id 0) (at 246.8372 63.0682 0)) + (property "Value" "Camera 2.5mm" (id 1) (at 261.62 57.15 0)) + (property "Footprint" "" (id 2) (at 246.38 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 246.38 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "R" (uuid 235be564-b5b7-49e6-be34-9f729f20248b)) + (pin "S" (uuid 70961c7f-4baf-44e6-9e7f-07f72a19957e)) + (pin "T" (uuid e4211997-7e82-4ce3-af14-5fb949ce86c9)) + ) + + (symbol (lib_id "Connector:AudioJack2") (at 248.92 85.09 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f16a27d) + (property "Reference" "#J33" (id 0) (at 248.92 90.17 0)) + (property "Value" "Flash 2.5mm" (id 1) (at 260.35 85.09 0)) + (property "Footprint" "" (id 2) (at 248.92 85.09 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 248.92 85.09 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "S" (uuid 21a97618-1187-4c19-863b-0f10793d9f5a)) + (pin "T" (uuid 964778b2-7e58-4cb4-95a1-39dffdbbd4a6)) + ) + + (symbol (lib_id "Connector:Barrel_Jack") (at 246.38 41.91 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f1766f2) + (property "Reference" "#J30" (id 0) (at 246.38 46.99 0)) + (property "Value" "12V" (id 1) (at 254 41.91 0)) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 245.11 42.926 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 245.11 42.926 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e51bdfc3-3151-4640-a320-09340720271d)) + (pin "2" (uuid e5c7e39c-8961-40f7-9494-c3e86119fc7b)) + ) + + (symbol (lib_id "Connector:AudioJack2") (at 248.92 69.85 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f1a757b) + (property "Reference" "#J32" (id 0) (at 248.92 74.93 0)) + (property "Value" "Valve 3.5mm" (id 1) (at 260.35 69.85 0)) + (property "Footprint" "" (id 2) (at 248.92 69.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 248.92 69.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "S" (uuid 775ac8d3-9334-49d7-9a1d-e1d4414e0ba9)) + (pin "T" (uuid cb52b9de-dfff-4e34-a84a-6074eed02435)) + ) + + (symbol (lib_id "Connector:AudioJack2") (at 248.92 100.33 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f1d00a9) + (property "Reference" "#J34" (id 0) (at 248.92 105.41 0)) + (property "Value" "Valve 3.5mm" (id 1) (at 261.62 100.33 0)) + (property "Footprint" "" (id 2) (at 248.92 100.33 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 248.92 100.33 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "S" (uuid ad77445d-6493-4245-807d-380aef4337d9)) + (pin "T" (uuid 7defc90b-cee2-404a-b8ee-dfc0f61ca15e)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 69.85 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f429e89) + (property "Reference" "#J22" (id 0) (at 232.41 74.93 0)) + (property "Value" "Valve 1" (id 1) (at 230.378 72.3646 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 69.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 69.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 05402cc1-1561-49f1-a985-242bb8e741d0)) + (pin "2" (uuid 5c7b868d-3ffe-4e70-a192-2a25271fe432)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 100.33 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f43680f) + (property "Reference" "#J24" (id 0) (at 232.41 105.41 0)) + (property "Value" "Valve 2" (id 1) (at 230.378 102.8446 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 100.33 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 100.33 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ab3c9d6f-04fd-4e63-87bf-71a8cc390e70)) + (pin "2" (uuid 3df9f2f3-8256-49b2-b9f1-4788a4c93c9d)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 85.09 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f443dc0) + (property "Reference" "#J23" (id 0) (at 234.95 90.17 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Flash" (id 1) (at 230.378 87.6046 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 85.09 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 85.09 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 19219a01-073c-4da7-b093-139da7e316f0)) + (pin "2" (uuid d13230e6-bd1f-43d6-99c1-3a08c25883b0)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 40.64 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f44b381) + (property "Reference" "#J20" (id 0) (at 234.95 45.72 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Flash" (id 1) (at 230.378 43.1546 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 40.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 40.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1fb5c3a8-a7ea-41ae-bed1-f7886ed0e2f4)) + (pin "2" (uuid 0f244b45-e094-48b6-ab90-bcc5a9a205c5)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 55.88 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f468807) + (property "Reference" "#J21" (id 0) (at 232.41 60.96 0)) + (property "Value" "Camera" (id 1) (at 230.378 58.3946 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 55.88 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 55.88 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d66db1b3-97f6-4719-bc73-83f0546a1566)) + (pin "2" (uuid 1effa2b5-2b9b-4ab2-9318-8ce1930bc7c0)) + ) + + (symbol (lib_id "Device:R") (at 120.65 74.93 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f5088a4) + (property "Reference" "R2" (id 0) (at 121.92 71.12 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "100R" (id 1) (at 123.19 76.2 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 120.65 76.708 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 120.65 74.93 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 666e326a-9d7d-446d-89bb-ba4c86236ed3)) + (pin "2" (uuid 4b6b8d76-321d-4ec7-aa43-e94fb1532f5f)) + ) + + (symbol (lib_id "Device:R") (at 168.91 88.9 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f5088c2) + (property "Reference" "R6" (id 0) (at 170.18 85.09 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "1K" (id 1) (at 170.18 90.17 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 168.91 90.678 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 168.91 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2f81d498-57f1-49f7-be20-e39d2ae15de3)) + (pin "2" (uuid 58812fc1-b666-45d1-b842-78d1c41a1679)) + ) + + (symbol (lib_id "power:+12V") (at 121.92 33.02 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f5088cc) + (property "Reference" "#P+0101" (id 0) (at 121.92 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+12V" (id 1) (at 119.38 30.48 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "" (id 2) (at 121.92 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 121.92 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1a8694ab-d86f-4d48-a9d7-34ee00dfa58f)) + ) + + (symbol (lib_id "power:+12V") (at 167.64 48.26 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f5088d6) + (property "Reference" "#P+0102" (id 0) (at 167.64 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+12V" (id 1) (at 165.1 53.34 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "" (id 2) (at 167.64 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 167.64 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 71fcf8ca-722a-46fa-8260-22376b3dd5d6)) + ) + + (symbol (lib_id "power:GND") (at 121.92 46.99 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f5088e0) + (property "Reference" "#GND0101" (id 0) (at 121.92 46.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 119.38 49.53 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "" (id 2) (at 121.92 46.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 121.92 46.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 87df90cd-36ac-4325-b3dc-41a79d9fc74f)) + ) + + (symbol (lib_id "Device:R") (at 120.65 60.96 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f508930) + (property "Reference" "R1" (id 0) (at 121.92 57.15 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "100R" (id 1) (at 123.19 62.23 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 120.65 62.738 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 120.65 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 73b712b4-e02a-4930-afe5-3f7092f0b6bd)) + (pin "2" (uuid b8d34a25-ff79-4096-9393-79c8daebc419)) + ) + + (symbol (lib_id "Device:R") (at 153.67 68.58 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f508963) + (property "Reference" "R5" (id 0) (at 154.94 68.58 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "1K" (id 1) (at 154.94 71.12 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 151.892 68.58 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 153.67 68.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 492c73e8-fd0a-4682-8f5c-10aeb081b4fc)) + (pin "2" (uuid 6e52c315-d8a1-4dee-ad49-8dbe63f6ab36)) + ) + + (symbol (lib_id "power:GND") (at 175.26 93.98 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f5089c8) + (property "Reference" "#GND0107" (id 0) (at 175.26 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 172.72 96.52 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "" (id 2) (at 175.26 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 175.26 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c16f9838-db6c-4d60-ba4c-586936e3f992)) + ) + + (symbol (lib_id "Diode:1N4001") (at 175.26 66.04 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f5089dd) + (property "Reference" "D1" (id 0) (at 171.45 64.77 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "1N4007" (id 1) (at 172.72 66.04 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal" (id 2) (at 170.815 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.vishay.com/docs/88503/1n4001.pdf" (id 3) (at 175.26 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 33c21d30-56cb-4862-884b-21e8b93bb27a)) + (pin "2" (uuid 66664491-e7a5-43f6-af57-ff1f19e02647)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 148.59 53.34 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f508a07) + (property "Reference" "J11" (id 0) (at 153.67 55.88 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Value" "Camera" (id 1) (at 153.67 49.53 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 148.59 53.34 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 148.59 53.34 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1c71ad02-1855-49fb-8894-e4e305c839be)) + (pin "2" (uuid 6cc2c5e5-037b-4d35-8acc-bcc0942f7d3a)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 182.88 64.77 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f508a23) + (property "Reference" "J12" (id 0) (at 181.61 69.85 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Value" "Valve 1" (id 1) (at 186.69 69.85 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 182.88 64.77 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 182.88 64.77 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a13d22da-a7c9-4b62-9440-05ca97186a9e)) + (pin "2" (uuid f8577e69-dd20-40b5-9de8-bd0eb19defd5)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 134.62 39.37 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-00005f508a74) + (property "Reference" "J10" (id 0) (at 132.08 44.45 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "12V" (id 1) (at 136.652 41.8846 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 134.62 39.37 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 134.62 39.37 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ad80c1d4-cc62-48fc-9f38-d013266c434c)) + (pin "2" (uuid 06ad5979-3ced-4954-a2bc-48358511aa3a)) + ) + + (symbol (lib_id "Device:R") (at 76.835 90.17 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 0ca74120-cd87-45be-9db9-b0132d5e8c71) + (property "Reference" "R10" (id 0) (at 78.74 90.805 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "1K" (id 1) (at 78.74 93.345 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 75.057 90.17 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 76.835 90.17 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7a4fa85c-a384-49b2-a0ea-d611628f3bec)) + (pin "2" (uuid 8e9858aa-f63f-4109-9f2a-d6be5ab4a46d)) + ) + + (symbol (lib_id "Device:R") (at 85.725 90.17 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 1432aa29-d149-44e0-9cc3-e01fa3b1eac9) + (property "Reference" "R11" (id 0) (at 91.44 88.265 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "22R" (id 1) (at 91.44 90.805 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 87.503 90.17 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 85.725 90.17 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 346a7ca0-2e41-48dd-8837-229f4a5d5d4a)) + (pin "2" (uuid 24fb763b-9e22-4fe6-84a3-17d89097a98f)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 208.28 64.77 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 182fbb93-0096-492c-82ec-a3699b10e48b) + (property "Reference" "J13" (id 0) (at 207.01 69.85 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Value" "Valve 2" (id 1) (at 212.09 69.85 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 208.28 64.77 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 208.28 64.77 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f6fa71bb-856a-4691-b94d-9e9d95e906c9)) + (pin "2" (uuid 832995d4-4f8d-439a-978e-a50edb5c1c35)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 123.19 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 1d070cd3-ea6b-4cdd-a3de-323a4c0eca99) + (property "Reference" "#J26" (id 0) (at 232.41 128.27 0)) + (property "Value" "Valve 2" (id 1) (at 230.378 125.7046 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 123.19 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 123.19 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ab1e3999-27ef-4029-88f2-c591b2e99c72)) + (pin "2" (uuid a138fa9c-2f8f-4b46-8fe0-30424c1c193f)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 132.715 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 1e6b835b-d782-4c93-af12-949f57a31d86) + (property "Reference" "#J27" (id 0) (at 232.41 137.795 0)) + (property "Value" "Valve 2" (id 1) (at 230.378 135.2296 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 132.715 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 132.715 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6ba8f0e2-1eba-4787-9f22-4b2e842dcc41)) + (pin "2" (uuid 01197e11-5e34-4fff-8a73-4fef0c3f35fb)) + ) + + (symbol (lib_id "Device:R") (at 120.65 102.87 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 20ac2947-029a-4bef-9b1f-63bd1873260e) + (property "Reference" "R4" (id 0) (at 121.92 99.06 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "100R" (id 1) (at 123.19 104.14 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 120.65 104.648 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 120.65 102.87 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f5948e87-9cbd-4205-958c-36b9ba578507)) + (pin "2" (uuid d8c4d8c2-94ae-4d2f-8791-0fb6876d7d55)) + ) + + (symbol (lib_id "Transistor_FET:IRLZ34N") (at 198.12 80.01 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 234efd1c-1460-4e8d-9696-8836ff63bc4e) + (property "Reference" "Q2" (id 0) (at 204.47 78.7399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "IRLZ34N" (id 1) (at 204.47 81.2799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-220-3_Vertical" (id 2) (at 204.47 81.915 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://www.infineon.com/dgdl/irlz34npbf.pdf?fileId=5546d462533600a40153567206892720" (id 3) (at 198.12 80.01 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid bf18f34c-8df3-4640-af08-91677a036d96)) + (pin "2" (uuid 47ec2b74-924c-4d2b-ae24-70c0c9a30168)) + (pin "3" (uuid c87311b3-e8d3-4b50-bda2-01aadcba67b6)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x09") (at 69.85 71.12 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 2bdda44f-4a64-4a91-a3b2-306502ca67ca) + (property "Reference" "J1" (id 0) (at 69.85 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "ESP" (id 1) (at 69.85 57.785 0)) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_1x09_P2.54mm_Vertical" (id 2) (at 69.85 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 69.85 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid de98b981-fd7e-4a42-b98c-7e5bff3bfb54)) + (pin "2" (uuid 5ef0283e-8d86-47b0-9ee3-a2ae28bda3dd)) + (pin "3" (uuid 9dd24b62-03ed-40eb-9f4d-f382317f2e20)) + (pin "4" (uuid 2446c785-a3e5-4310-a9c8-f264bcaef01b)) + (pin "5" (uuid 25c30408-3223-4458-935a-8c4e58160868)) + (pin "6" (uuid 5210cfb9-70d0-409a-af0c-1fa2b3668193)) + (pin "7" (uuid 13c9e34f-1886-4fb8-a12b-8810fbcd4b32)) + (pin "8" (uuid 41bfdd47-912b-4558-baa3-fc20aa54503d)) + (pin "9" (uuid 702abede-bbc2-4df8-beb3-e2f13463cca7)) + ) + + (symbol (lib_id "Transistor_BJT:BC517") (at 83.185 113.03 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 2e6d26a8-7d38-4064-bced-cd5ba64a56af) + (property "Reference" "Q3" (id 0) (at 88.265 111.7599 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Value" "BC517" (id 1) (at 88.265 113.0299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-92_Inline" (id 2) (at 88.265 114.935 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://www.onsemi.com/pub/Collateral/BC517-D74Z-D.PDF" (id 3) (at 83.185 113.03 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid d1fe2267-764b-4500-a163-69f500dffb2c)) + (pin "2" (uuid 441ce9da-c95a-4b49-9151-36653401381e)) + (pin "3" (uuid 6828baf4-12b6-48ca-a81c-21f72d79d687)) + ) + + (symbol (lib_id "Transistor_FET:IRLZ34N") (at 172.72 80.01 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 39bf7fb9-ac91-4ed7-9f86-a482c712e903) + (property "Reference" "Q1" (id 0) (at 179.07 78.7399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "IRLZ34N" (id 1) (at 179.07 81.2799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-220-3_Vertical" (id 2) (at 179.07 81.915 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://www.infineon.com/dgdl/irlz34npbf.pdf?fileId=5546d462533600a40153567206892720" (id 3) (at 172.72 80.01 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid c685980a-45f6-4471-80b1-89fc541d2b8d)) + (pin "2" (uuid d5945562-71cc-4dd5-9e98-3e4f795f1e52)) + (pin "3" (uuid 56295c32-b537-4b23-852e-d8c15cb3f956)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 100.33 100.965 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 56b1ef67-0d6f-4d06-97fd-45bca9c1e150) + (property "Reference" "J16" (id 0) (at 99.06 98.425 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LED" (id 1) (at 102.87 104.14 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 100.33 100.965 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 100.33 100.965 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 3edbdf54-7552-4d37-bf4d-b41b2100ecdf)) + (pin "2" (uuid 94336284-eddf-40f1-b26b-ff46d137d359)) + ) + + (symbol (lib_id "Isolator:LTV-247") (at 135.89 63.5 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 5d6fa3b0-2257-4bed-bda3-eec3345b1075) + (property "Reference" "U1" (id 0) (at 135.89 55.9902 0)) + (property "Value" "LTV-247" (id 1) (at 135.89 58.5271 0)) + (property "Footprint" "Package_SO:SOP-16_4.4x10.4mm_P1.27mm" (id 2) (at 130.81 68.58 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://optoelectronics.liteon.com/upload/download/DS70-2009-0014/LTV-2X7%20sereis%20Mar17.PDF" (id 3) (at 135.89 63.5 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid ede4bd2d-5005-4ddf-ae5f-724273423583)) + (pin "15" (uuid cdbc3419-c3a2-40f0-967b-570be738d232)) + (pin "16" (uuid 166d9916-3235-4f97-889f-f088bec97d01)) + (pin "2" (uuid c0f5053b-fb17-489e-a526-c2c692f7280d)) + (pin "13" (uuid 789bf898-a06d-438c-81b9-6027ca2d360c)) + (pin "14" (uuid 0012a819-6427-4abf-8bc4-e8e5d38975a3)) + (pin "3" (uuid 852a97b3-139f-45dc-be4d-dd6fb61a5da8)) + (pin "4" (uuid 32b639af-195b-4dfd-a6ab-2b74fcb0477e)) + (pin "11" (uuid bcc71f45-57db-4d5f-985b-760bb24665f8)) + (pin "12" (uuid 047f5ffd-6232-4668-bc51-b5aa440a4403)) + (pin "5" (uuid 5708fe11-6aec-47a2-b276-fc84191a6915)) + (pin "6" (uuid 6999c692-3370-4e1d-b55e-c3271fea53e2)) + (pin "10" (uuid 737fb656-10b9-4560-a100-06e7cd17ab1a)) + (pin "7" (uuid f6c8721f-2fef-4de4-9be3-8a6d3d55253a)) + (pin "8" (uuid eef38387-84cb-4c83-8741-a4c8d0f15ff7)) + (pin "9" (uuid 6dbc0037-b842-4863-ba6a-b38fa836fbbf)) + ) + + (symbol (lib_id "Device:R") (at 95.25 90.17 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 62438ad9-bdeb-4be2-9254-38dac2f7bf14) + (property "Reference" "R9" (id 0) (at 99.695 88.265 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "200R" (id 1) (at 102.87 90.805 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 97.028 90.17 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 95.25 90.17 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5892313e-ac45-43c4-afc7-e3281390e16d)) + (pin "2" (uuid fab8a2a4-bd12-48d5-b731-995a74a91f4e)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 109.22 71.12 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 6cff5a5c-63fd-4755-9b6a-e4d2cc4df440) + (property "Reference" "J17" (id 0) (at 107.95 68.58 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Value" "Trigger" (id 1) (at 104.775 67.945 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 109.22 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 109.22 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e6a556bc-38f3-4143-8098-033702b40e0a)) + (pin "2" (uuid c7b0ecb5-ac65-497b-a06b-7cd2f0714f7e)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 90.805 100.965 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 7170ed2c-0e15-4189-ae8c-08c797d7caab) + (property "Reference" "J15" (id 0) (at 89.535 98.425 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "IR" (id 1) (at 93.345 103.505 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 90.805 100.965 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 90.805 100.965 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a42b4b14-ff66-4db3-bdd7-80cc790c2ecd)) + (pin "2" (uuid d218ab06-3f2e-4607-a7b0-8f6f190d2272)) + ) + + (symbol (lib_id "Diode:1N4001") (at 200.66 66.04 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 7d330779-7275-4e95-832c-46969b23a74d) + (property "Reference" "D2" (id 0) (at 196.85 64.77 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "1N4007" (id 1) (at 198.12 66.04 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal" (id 2) (at 196.215 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.vishay.com/docs/88503/1n4001.pdf" (id 3) (at 200.66 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1d3a0991-aa65-4b73-80a1-e631e3d47b6b)) + (pin "2" (uuid 3a3874ab-f94b-4267-9b10-c9c9a66574a8)) + ) + + (symbol (lib_id "Isolator:LTV-247") (at 135.89 91.44 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 7fbcda24-0176-416f-a409-9bb9ca0af6b6) + (property "Reference" "U1" (id 0) (at 135.89 83.9302 0)) + (property "Value" "LTV-247" (id 1) (at 135.89 86.4671 0)) + (property "Footprint" "Package_SO:SOP-16_4.4x10.4mm_P1.27mm" (id 2) (at 130.81 96.52 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://optoelectronics.liteon.com/upload/download/DS70-2009-0014/LTV-2X7%20sereis%20Mar17.PDF" (id 3) (at 135.89 91.44 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid 24046193-b966-49db-a989-93df085066d9)) + (pin "15" (uuid 4eee78ac-8ba1-4c44-93c4-b5696025b180)) + (pin "16" (uuid 92fcb2cb-9753-47a0-aa52-c858bf45caff)) + (pin "2" (uuid 8b8fda9b-d885-4687-b2c9-de99e6124f85)) + (pin "13" (uuid 13ce126a-8c12-49af-a5ab-4749d147e30b)) + (pin "14" (uuid a36d3264-440d-410c-b0ad-8698faaacbe3)) + (pin "3" (uuid 416cf76e-2bde-4021-853a-d49ad67efb30)) + (pin "4" (uuid b33e1db7-b4ff-4b09-abdd-eade3b11f9df)) + (pin "11" (uuid ad18a382-29f4-4058-af27-b42b40eb2236)) + (pin "12" (uuid 110f4f08-74ad-4fae-b506-ed0b81020083)) + (pin "5" (uuid 5a4f16a4-033f-4dbd-b9bf-9679746c8ad2)) + (pin "6" (uuid b9666d18-771a-4b27-ae5d-09032255c9c8)) + (pin "10" (uuid b17289b8-000a-4855-b5c9-536932c5544d)) + (pin "7" (uuid 0bf8934e-6dc7-4717-b8c9-e1e5cedba4ea)) + (pin "8" (uuid 685764c8-2f5d-4f29-bb71-271cad7c3741)) + (pin "9" (uuid 300078b2-9318-4e0e-b696-98d15d92410a)) + ) + + (symbol (lib_id "Device:R") (at 120.65 88.9 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 9457c2ff-4fad-4b5d-a65b-03239159fd45) + (property "Reference" "R3" (id 0) (at 121.92 85.09 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "100R" (id 1) (at 123.19 90.17 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 120.65 90.678 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 120.65 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 177482eb-81dd-4cd6-b67a-425089056996)) + (pin "2" (uuid b7b18150-7fa6-4eb2-8f9d-ecfad0dc4db0)) + ) + + (symbol (lib_id "power:GND") (at 200.66 93.98 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 969288f7-ea59-463a-a0fd-4c319c1b71b6) + (property "Reference" "#GND0102" (id 0) (at 200.66 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 198.12 96.52 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "" (id 2) (at 200.66 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 200.66 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f2d6cf2c-8f72-4841-8cd1-29da29e7cefc)) + ) + + (symbol (lib_id "Device:LED") (at 245.11 113.03 180) (unit 1) + (in_bom no) (on_board no) + (uuid 97a1ff33-09f0-4497-9688-f3c242da3e47) + (property "Reference" "D3" (id 0) (at 245.4274 109.855 90) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + (property "Value" "IR-LED" (id 1) (at 252.73 113.03 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "" (id 2) (at 245.11 113.03 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 245.11 113.03 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2f4924d2-c993-44ee-a0f1-1af4a7b8851f)) + (pin "2" (uuid 44fe8606-49f6-4ee8-8fd1-be07ff7600d4)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 232.41 113.03 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 9a3dc59e-ca06-4337-b665-2eb7a06b0a73) + (property "Reference" "#J25" (id 0) (at 232.41 118.11 0)) + (property "Value" "Valve 2" (id 1) (at 230.378 115.5446 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 232.41 113.03 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 232.41 113.03 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1cbdb9ee-c94d-4667-9c2c-896bde93cf0d)) + (pin "2" (uuid e8d2f584-5dfa-4c7a-8d86-8d264e781652)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 151.13 105.41 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid a7a6c287-8b95-4c4f-9024-d870da2fb4ed) + (property "Reference" "J14" (id 0) (at 149.86 102.87 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Flash" (id 1) (at 154.94 109.22 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" (id 2) (at 151.13 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 151.13 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 621d1ca1-42f0-4eb2-8ee5-1d06ad2c5537)) + (pin "2" (uuid 377ad84e-ed2d-43e6-a0ef-12f6c7f883c3)) + ) + + (symbol (lib_id "Device:LED") (at 245.11 123.19 180) (unit 1) + (in_bom no) (on_board no) + (uuid afd724c5-2a3c-40b6-a848-59b94a49b424) + (property "Reference" "D4" (id 0) (at 245.4274 119.38 90) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + (property "Value" "LED" (id 1) (at 252.73 123.19 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "" (id 2) (at 245.11 123.19 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 245.11 123.19 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 230694b3-344f-482d-8964-e1f1c300937f)) + (pin "2" (uuid dcd5605c-3c94-49fc-babf-96704f307040)) + ) + + (symbol (lib_id "Switch:SW_Push") (at 245.745 132.715 0) (unit 1) + (in_bom no) (on_board no) + (uuid cdebc9f9-65b8-4c97-b08a-e791b6669bbb) + (property "Reference" "SW1" (id 0) (at 245.745 125.095 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "Trigger" (id 1) (at 255.905 132.715 0)) + (property "Footprint" "" (id 2) (at 245.745 127.635 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 245.745 127.635 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 706e8c02-a003-457a-8457-e26ab01e0c04)) + (pin "2" (uuid 44f3c931-0e50-44b0-9784-684a7472ce68)) + ) + + (symbol (lib_id "Isolator:LTV-247") (at 135.89 77.47 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid db5460be-38eb-4169-98d3-87f3cad354a5) + (property "Reference" "U1" (id 0) (at 135.89 69.9602 0)) + (property "Value" "LTV-247" (id 1) (at 135.89 72.4971 0)) + (property "Footprint" "Package_SO:SOP-16_4.4x10.4mm_P1.27mm" (id 2) (at 130.81 82.55 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://optoelectronics.liteon.com/upload/download/DS70-2009-0014/LTV-2X7%20sereis%20Mar17.PDF" (id 3) (at 135.89 77.47 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid ca6ec4c4-5fc3-4a14-bdb0-b43bdc6030a2)) + (pin "15" (uuid 8d6316e8-8ef1-40b4-ae7a-841c061e6246)) + (pin "16" (uuid be70602a-e8b0-4b36-831a-93ba37ec69a9)) + (pin "2" (uuid 8eb30453-eb3a-4717-a039-6cacc6038671)) + (pin "13" (uuid 588d25a4-63ce-441e-8575-4b5681b18c87)) + (pin "14" (uuid a254e623-81ae-4006-804d-508e03b7ad07)) + (pin "3" (uuid 0a906535-5a02-441c-8b1d-b6a37bdc6b16)) + (pin "4" (uuid fffc54a4-e833-4291-a774-5275ecabf0a3)) + (pin "11" (uuid 01d8da54-28f8-43c4-adad-55cbb7541428)) + (pin "12" (uuid 2a8fc66f-df36-44f2-b2a7-e10931377161)) + (pin "5" (uuid 651b0e5f-ad88-43db-96d5-20c5f40a5c89)) + (pin "6" (uuid 2a9fc48c-4e24-4b21-8aa3-c337555f81a8)) + (pin "10" (uuid 6a580fc6-797c-4ccf-b341-8882a1116738)) + (pin "7" (uuid 6f698641-b789-4049-b6bb-b001d13aafac)) + (pin "8" (uuid 9b3f31b6-f4a5-4304-8e53-7486909c68af)) + (pin "9" (uuid 794410d8-8b04-423d-b733-74db5ac05aea)) + ) + + (symbol (lib_id "Device:R") (at 160.02 68.58 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid e613a07e-716e-42c6-9100-c2fb4978f7c0) + (property "Reference" "R7" (id 0) (at 161.29 68.58 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "1K" (id 1) (at 161.29 71.12 0) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 158.242 68.58 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 160.02 68.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0317acc1-d03c-477d-9991-3d6eb2299dfe)) + (pin "2" (uuid a3bb3785-40c8-4e2a-b4ee-3019b74b5d54)) + ) + + (symbol (lib_id "Device:R") (at 194.31 88.9 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid e771a23f-5482-42b5-bba2-d3ac332e91c4) + (property "Reference" "R8" (id 0) (at 195.58 85.09 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Value" "1K" (id 1) (at 195.58 90.17 90) + (effects (font (size 1.4986 1.4986)) (justify left bottom)) + ) + (property "Footprint" "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" (id 2) (at 194.31 90.678 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 194.31 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bfb709e4-f2be-4f25-9ae0-b5ce6906aa52)) + (pin "2" (uuid 774d6258-7814-44d5-b440-792e175168de)) + ) + + (symbol (lib_id "Isolator:LTV-247") (at 135.89 105.41 0) (unit 4) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ff2ed516-99d9-42ae-a5b6-404aad1e7f07) + (property "Reference" "U1" (id 0) (at 135.89 97.9002 0)) + (property "Value" "LTV-247" (id 1) (at 135.89 100.4371 0)) + (property "Footprint" "Package_SO:SOP-16_4.4x10.4mm_P1.27mm" (id 2) (at 130.81 110.49 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://optoelectronics.liteon.com/upload/download/DS70-2009-0014/LTV-2X7%20sereis%20Mar17.PDF" (id 3) (at 135.89 105.41 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid 43e47173-9812-4012-a2b2-5e3c309c8b28)) + (pin "15" (uuid 82c79802-1405-46dc-a7de-5d3ce5176b60)) + (pin "16" (uuid 1922fd10-f94a-411f-a8ba-f5c34c81e6cf)) + (pin "2" (uuid aebf2711-e187-41d1-b0b6-71bcc0de346f)) + (pin "13" (uuid dccba007-1564-45a1-98bc-5422ae32e7ba)) + (pin "14" (uuid 3b46a54b-f19d-4461-830b-fa12cd4dab3c)) + (pin "3" (uuid 9844707e-50a0-432f-9c44-765268547fc6)) + (pin "4" (uuid 9ffa4c48-ded4-41db-9a82-4952c23e6d34)) + (pin "11" (uuid 40e76a97-f813-4634-a912-ad47012c3d5c)) + (pin "12" (uuid 63a24c70-9410-4b6b-b1f0-f19726d907bc)) + (pin "5" (uuid d6b0945f-8600-4b0e-bc0a-dd3e222b47c2)) + (pin "6" (uuid 84d895f4-b8c8-4906-9884-dd803796898d)) + (pin "10" (uuid 1ba5be61-2c19-4210-96d8-25c60d0a7964)) + (pin "7" (uuid f6fd9817-6f26-413e-a96e-c1e6ab79a722)) + (pin "8" (uuid 87dcfb7b-462c-4ed5-b0d1-63091ab5c2e7)) + (pin "9" (uuid 49183969-09fa-435a-be23-753adf53cb3d)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/00000000-0000-0000-0000-00005f5088e0" + (reference "#GND0101") (unit 1) (value "GND") (footprint "") + ) + (path "/969288f7-ea59-463a-a0fd-4c319c1b71b6" + (reference "#GND0102") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f5089c8" + (reference "#GND0107") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f44b381" + (reference "#J20") (unit 1) (value "Flash") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f468807" + (reference "#J21") (unit 1) (value "Camera") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f429e89" + (reference "#J22") (unit 1) (value "Valve 1") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f443dc0" + (reference "#J23") (unit 1) (value "Flash") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f43680f" + (reference "#J24") (unit 1) (value "Valve 2") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/9a3dc59e-ca06-4337-b665-2eb7a06b0a73" + (reference "#J25") (unit 1) (value "Valve 2") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/1d070cd3-ea6b-4cdd-a3de-323a4c0eca99" + (reference "#J26") (unit 1) (value "Valve 2") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/1e6b835b-d782-4c93-af12-949f57a31d86" + (reference "#J27") (unit 1) (value "Valve 2") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f1766f2" + (reference "#J30") (unit 1) (value "12V") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f15d486" + (reference "#J31") (unit 1) (value "Camera 2.5mm") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f1a757b" + (reference "#J32") (unit 1) (value "Valve 3.5mm") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f16a27d" + (reference "#J33") (unit 1) (value "Flash 2.5mm") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f1d00a9" + (reference "#J34") (unit 1) (value "Valve 3.5mm") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f5088cc" + (reference "#P+0101") (unit 1) (value "+12V") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f5088d6" + (reference "#P+0102") (unit 1) (value "+12V") (footprint "") + ) + (path "/00000000-0000-0000-0000-00005f5089dd" + (reference "D1") (unit 1) (value "1N4007") (footprint "Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal") + ) + (path "/7d330779-7275-4e95-832c-46969b23a74d" + (reference "D2") (unit 1) (value "1N4007") (footprint "Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal") + ) + (path "/97a1ff33-09f0-4497-9688-f3c242da3e47" + (reference "D3") (unit 1) (value "IR-LED") (footprint "") + ) + (path "/afd724c5-2a3c-40b6-a848-59b94a49b424" + (reference "D4") (unit 1) (value "LED") (footprint "") + ) + (path "/2bdda44f-4a64-4a91-a3b2-306502ca67ca" + (reference "J1") (unit 1) (value "ESP") (footprint "Connector_PinSocket_2.54mm:PinSocket_1x09_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f508a74" + (reference "J10") (unit 1) (value "12V") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f508a07" + (reference "J11") (unit 1) (value "Camera") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-00005f508a23" + (reference "J12") (unit 1) (value "Valve 1") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/182fbb93-0096-492c-82ec-a3699b10e48b" + (reference "J13") (unit 1) (value "Valve 2") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/a7a6c287-8b95-4c4f-9024-d870da2fb4ed" + (reference "J14") (unit 1) (value "Flash") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/7170ed2c-0e15-4189-ae8c-08c797d7caab" + (reference "J15") (unit 1) (value "IR") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/56b1ef67-0d6f-4d06-97fd-45bca9c1e150" + (reference "J16") (unit 1) (value "LED") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/6cff5a5c-63fd-4755-9b6a-e4d2cc4df440" + (reference "J17") (unit 1) (value "Trigger") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") + ) + (path "/39bf7fb9-ac91-4ed7-9f86-a482c712e903" + (reference "Q1") (unit 1) (value "IRLZ34N") (footprint "Package_TO_SOT_THT:TO-220-3_Vertical") + ) + (path "/234efd1c-1460-4e8d-9696-8836ff63bc4e" + (reference "Q2") (unit 1) (value "IRLZ34N") (footprint "Package_TO_SOT_THT:TO-220-3_Vertical") + ) + (path "/2e6d26a8-7d38-4064-bced-cd5ba64a56af" + (reference "Q3") (unit 1) (value "BC517") (footprint "Package_TO_SOT_THT:TO-92_Inline") + ) + (path "/00000000-0000-0000-0000-00005f508930" + (reference "R1") (unit 1) (value "100R") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/00000000-0000-0000-0000-00005f5088a4" + (reference "R2") (unit 1) (value "100R") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/9457c2ff-4fad-4b5d-a65b-03239159fd45" + (reference "R3") (unit 1) (value "100R") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/20ac2947-029a-4bef-9b1f-63bd1873260e" + (reference "R4") (unit 1) (value "100R") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/00000000-0000-0000-0000-00005f508963" + (reference "R5") (unit 1) (value "1K") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/00000000-0000-0000-0000-00005f5088c2" + (reference "R6") (unit 1) (value "1K") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/e613a07e-716e-42c6-9100-c2fb4978f7c0" + (reference "R7") (unit 1) (value "1K") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/e771a23f-5482-42b5-bba2-d3ac332e91c4" + (reference "R8") (unit 1) (value "1K") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/62438ad9-bdeb-4be2-9254-38dac2f7bf14" + (reference "R9") (unit 1) (value "200R") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/0ca74120-cd87-45be-9db9-b0132d5e8c71" + (reference "R10") (unit 1) (value "1K") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/1432aa29-d149-44e0-9cc3-e01fa3b1eac9" + (reference "R11") (unit 1) (value "22R") (footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal") + ) + (path "/cdebc9f9-65b8-4c97-b08a-e791b6669bbb" + (reference "SW1") (unit 1) (value "Trigger") (footprint "") + ) + (path "/5d6fa3b0-2257-4bed-bda3-eec3345b1075" + (reference "U1") (unit 1) (value "LTV-247") (footprint "Package_SO:SOP-16_4.4x10.4mm_P1.27mm") + ) + (path "/db5460be-38eb-4169-98d3-87f3cad354a5" + (reference "U1") (unit 2) (value "LTV-247") (footprint "Package_SO:SOP-16_4.4x10.4mm_P1.27mm") + ) + (path "/7fbcda24-0176-416f-a409-9bb9ca0af6b6" + (reference "U1") (unit 3) (value "LTV-247") (footprint "Package_SO:SOP-16_4.4x10.4mm_P1.27mm") + ) + (path "/ff2ed516-99d9-42ae-a5b6-404aad1e7f07" + (reference "U1") (unit 4) (value "LTV-247") (footprint "Package_SO:SOP-16_4.4x10.4mm_P1.27mm") + ) + ) +) diff --git a/electronics/electronics.pro b/electronics/electronics.pro new file mode 100644 index 0000000..308aff2 --- /dev/null +++ b/electronics/electronics.pro @@ -0,0 +1,249 @@ +update=Mo 13 Jul 2020 19:09:55 CEST +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] +[schematic_editor] +version=1 +PageLayoutDescrFile=empty.kicad_wks +PlotDirectoryName= +SubpartIdSeparator=0 +SubpartFirstId=65 +NetFmtName= +SpiceAjustPassiveValues=0 +LabSize=50 +ERC_TestSimilarLabels=1 +[pcbnew] +version=1 +PageLayoutDescrFile= +LastNetListRead= +CopperLayerCount=2 +BoardThickness=1.6 +AllowMicroVias=0 +AllowBlindVias=0 +RequireCourtyardDefinitions=0 +ProhibitOverlappingCourtyards=1 +MinTrackWidth=0.2 +MinViaDiameter=0.4 +MinViaDrill=0.3 +MinMicroViaDiameter=0.2 +MinMicroViaDrill=0.09999999999999999 +MinHoleToHole=0.25 +TrackWidth1=0.25 +TrackWidth2=1 +ViaDiameter1=0.8 +ViaDrill1=0.4 +dPairWidth1=0.2 +dPairGap1=0.25 +dPairViaGap1=0.25 +SilkLineWidth=0.12 +SilkTextSizeV=1 +SilkTextSizeH=1 +SilkTextSizeThickness=0.15 +SilkTextItalic=0 +SilkTextUpright=1 +CopperLineWidth=0.2 +CopperTextSizeV=1.5 +CopperTextSizeH=1.5 +CopperTextThickness=0.3 +CopperTextItalic=0 +CopperTextUpright=1 +EdgeCutLineWidth=0.05 +CourtyardLineWidth=0.05 +OthersLineWidth=0.15 +OthersTextSizeV=1 +OthersTextSizeH=1 +OthersTextSizeThickness=0.15 +OthersTextItalic=0 +OthersTextUpright=1 +SolderMaskClearance=0.051 +SolderMaskMinWidth=0.25 +SolderPasteClearance=0 +SolderPasteRatio=-0 +[pcbnew/Layer.F.Cu] +Name=F.Cu +Type=0 +Enabled=1 +[pcbnew/Layer.In1.Cu] +Name=In1.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In2.Cu] +Name=In2.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In3.Cu] +Name=In3.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In4.Cu] +Name=In4.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In5.Cu] +Name=In5.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In6.Cu] +Name=In6.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In7.Cu] +Name=In7.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In8.Cu] +Name=In8.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In9.Cu] +Name=In9.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In10.Cu] +Name=In10.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In11.Cu] +Name=In11.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In12.Cu] +Name=In12.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In13.Cu] +Name=In13.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In14.Cu] +Name=In14.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In15.Cu] +Name=In15.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In16.Cu] +Name=In16.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In17.Cu] +Name=In17.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In18.Cu] +Name=In18.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In19.Cu] +Name=In19.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In20.Cu] +Name=In20.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In21.Cu] +Name=In21.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In22.Cu] +Name=In22.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In23.Cu] +Name=In23.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In24.Cu] +Name=In24.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In25.Cu] +Name=In25.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In26.Cu] +Name=In26.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In27.Cu] +Name=In27.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In28.Cu] +Name=In28.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In29.Cu] +Name=In29.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In30.Cu] +Name=In30.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.B.Cu] +Name=B.Cu +Type=0 +Enabled=1 +[pcbnew/Layer.B.Adhes] +Enabled=1 +[pcbnew/Layer.F.Adhes] +Enabled=1 +[pcbnew/Layer.B.Paste] +Enabled=1 +[pcbnew/Layer.F.Paste] +Enabled=1 +[pcbnew/Layer.B.SilkS] +Enabled=1 +[pcbnew/Layer.F.SilkS] +Enabled=1 +[pcbnew/Layer.B.Mask] +Enabled=1 +[pcbnew/Layer.F.Mask] +Enabled=1 +[pcbnew/Layer.Dwgs.User] +Enabled=1 +[pcbnew/Layer.Cmts.User] +Enabled=1 +[pcbnew/Layer.Eco1.User] +Enabled=1 +[pcbnew/Layer.Eco2.User] +Enabled=1 +[pcbnew/Layer.Edge.Cuts] +Enabled=1 +[pcbnew/Layer.Margin] +Enabled=1 +[pcbnew/Layer.B.CrtYd] +Enabled=1 +[pcbnew/Layer.F.CrtYd] +Enabled=1 +[pcbnew/Layer.B.Fab] +Enabled=1 +[pcbnew/Layer.F.Fab] +Enabled=1 +[pcbnew/Layer.Rescue] +Enabled=0 +[pcbnew/Netclasses] +[pcbnew/Netclasses/Default] +Name=Default +Clearance=0.2 +TrackWidth=0.25 +ViaDiameter=0.8 +ViaDrill=0.4 +uViaDiameter=0.3 +uViaDrill=0.1 +dPairWidth=0.2 +dPairGap=0.25 +dPairViaGap=0.25 diff --git a/electronics/schematic.pdf b/electronics/schematic.pdf new file mode 100644 index 0000000..4a3e120 Binary files /dev/null and b/electronics/schematic.pdf differ diff --git a/lang/en/error.json b/lang/en/error.json new file mode 100644 index 0000000..3437f4c --- /dev/null +++ b/lang/en/error.json @@ -0,0 +1,5 @@ +{ + "error": { + "invalidpassword": "SSID or password wrong" + } +} \ No newline at end of file diff --git a/lang/en/generic.json b/lang/en/generic.json new file mode 100644 index 0000000..10ae0c8 --- /dev/null +++ b/lang/en/generic.json @@ -0,0 +1,6 @@ +{ + "generic": { + "save": "Save", + "savesuccess": "Saved successfully" + } +} \ No newline at end of file diff --git a/lang/en/main.json b/lang/en/main.json new file mode 100644 index 0000000..a3a0c5b --- /dev/null +++ b/lang/en/main.json @@ -0,0 +1,9 @@ +{ + "main": { + "edittiming": "Edit Timing", + "save": "Just save", + "start": "Start time", + "trigger": "Save and Go!", + "needpause": "IR Triggering needs $1 ms pause until next action" + } +} \ No newline at end of file diff --git a/lang/en/mapping.json b/lang/en/mapping.json new file mode 100644 index 0000000..20ba920 --- /dev/null +++ b/lang/en/mapping.json @@ -0,0 +1,14 @@ +{ + "mapping": { + "edittitle": "Edit mapping", + "pin": "Pin", + "type": "Type", + "inverted": "Inverted", + "digitalout": "digital output", + "ircanon": "Canon IR", + "irnikon": "Nikon IR", + "irsony": "Sony IR", + "notconn": "Not connected", + "trigger": "trigger signal" + } +} \ No newline at end of file diff --git a/lang/en/menu.json b/lang/en/menu.json new file mode 100644 index 0000000..b4374dc --- /dev/null +++ b/lang/en/menu.json @@ -0,0 +1,6 @@ +{ + "menu": { + "setupwifi": "Setup WiFi", + "setuppinmapping": "Setup Pin Mapping" + } +} \ No newline at end of file diff --git a/lang/en/update.json b/lang/en/update.json new file mode 100644 index 0000000..799b2f1 --- /dev/null +++ b/lang/en/update.json @@ -0,0 +1,7 @@ +{ + "update": { + "header": "Update Camera Trigger", + "fileselect": "select the new file:", + "submit": "do update" + } +} \ No newline at end of file diff --git a/lang/en/wifi.json b/lang/en/wifi.json new file mode 100644 index 0000000..69bab5d --- /dev/null +++ b/lang/en/wifi.json @@ -0,0 +1,15 @@ +{ + "wifi": { + "accessmode": "Access mode", + "accesspoint": "Access point", + "client": "Client device", + "accessdetails": "Access details", + "rescan": "Rescan networks", + "channel": "Channel", + "ssid": "SSID", + "password": "Password", + "encryptionType": "Encryption", + "encryption": "yes", + "encryptionopen": "no" + } +} \ No newline at end of file diff --git a/less/colors.less b/less/colors.less new file mode 100644 index 0000000..26527ad --- /dev/null +++ b/less/colors.less @@ -0,0 +1,30 @@ +@labelColor: #222222; +@labelBorder: transparent; +@fontColor: #dedede; +@backgroundColor: #303030; +@headerBackground: #606060; +@headerBottom: rgb(19,19,19); +@boxBorderColor: rgb(80,80,80); +@boxShadowTLColor: rgb(100,100,100); +@boxShadowBRColor: rgb(0,0,0); +@boxBackgroundColor: #404040; +@loadingColor: rgba(255,255,255,0.25); + +@buttonUnCheckedColorInner: #808080; +@buttonUnCheckedColorOuter: #606060; +@buttonCheckedColorInner: #839eff; +@buttonCheckedColorOuter: #334eb0; +@buttonShadowTLColor: rgb(150,150,150); +@buttonShadowBRColor: rgb(50,50,50); + +@buttonUnCheckedColorInnerGreen: mix(@buttonUnCheckedColorInner, rgb(0,255,0), 95%); +@buttonUnCheckedColorOuterGreen: mix(@buttonUnCheckedColorOuter, rgb(0,255,0), 95%); +@buttonUnCheckedColorInnerRed: mix(@buttonUnCheckedColorInner, rgb(255,0,0), 95%); +@buttonUnCheckedColorOuterRed: mix(@buttonUnCheckedColorOuter, rgb(255,0,0), 95%); + + +@labelBackground: @buttonUnCheckedColorOuter; +@inputBorderColor:rgb(150,150,150); +@inputBorderColorActive:mix(@inputBorderColor, rgb(255,255,255),50%); + +@errorColor: rgb(255,0,0); \ No newline at end of file diff --git a/less/default.less b/less/default.less new file mode 100644 index 0000000..42b9885 --- /dev/null +++ b/less/default.less @@ -0,0 +1,114 @@ +@import "colors.less"; +@import "header.less"; +@import "fform.less"; +@import "mapping.less"; +@import "main.less"; +@import "wifi.less"; +@import "update.less"; + +html,body { + margin:0; + padding:0; +} +body { + background:@backgroundColor; + color: @fontColor; + font-family: sans-serif; +} +.hsplit { + display: flex; + > div + div { + margin-left:40px; + } +} +.half { + width: 50%; +} + +.center { + margin-left:auto; + margin-right:auto; +} + +.hidden { + display:none; +} + +ul.none { + list-style-type: none; + padding:0; +} + +ul.inline li { + display:inline-block; +} + +.errormsg { + color:#FF0000; +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.loading:before { + display:inline-block; + content: ' '; + border-radius: 50%; + border: .5rem solid @loadingColor; + border-top-color: #000; + animation: spin 1s infinite linear; + width:16px; + height:16px; +} + +.loading.smallani:before { + margin-left:-20px; + border-width: .3rem; + position:absolute; + width:8px; + height:8px; +} + +a, input, button { + outline:0; +} +::-moz-focus-inner { + border:0; +} +#main { + position:relative; + padding:10px; +} +#main { + h1, h2, h3 { + font-weight:500; + margin-left:10px; + margin-right:10px; + } +} + +#mapping { + td { + vertical-align:middle; + } + input[type=text] { + margin-top:0; + } +} + +a { + color:inherit; + text-decoration: none; +} + +@media screen and (max-width: 400px) { + #main { + padding:0; + } +} diff --git a/less/fform.less b/less/fform.less new file mode 100644 index 0000000..4d7377e --- /dev/null +++ b/less/fform.less @@ -0,0 +1,152 @@ +.fform { + min-width:320px; + background-color: @boxBackgroundColor; + box-shadow: -5px -5px 30px @boxShadowTLColor, 5px 5px 30px @boxShadowBRColor; + border-radius:20px; + border:1px solid @boxBorderColor; + margin:10px; + padding:10px; + position:relative; + + .loading { + &:before { + width:25px; + height:25px; + } + } + input[type=text] + label, + input[type=password] + label { + box-sizing: border-box; + display:block; + position:absolute; + pointer-events: none; + margin: ~"calc(-1.85em + 1px) 1em 0"; + &:before { + content: attr(placeholder); + display: inline-block; + color: @labelColor; + white-space: nowrap; + transition-property: transform, color, font-size; + transition-duration: 0.2s; + transition-timing-function: ease-out; + transform-origin: left center; + border:1px solid @labelBorder; + border-bottom:0; + padding:3px; + border-radius:5px 5px 0 0; + } + } + input,button,.button,select { + box-shadow: -3px -3px 10px @buttonShadowTLColor, 3px 3px 10px @buttonShadowBRColor; + background: radial-gradient(@buttonUnCheckedColorInner 20%, @buttonUnCheckedColorOuter 100%); + border:1px solid @inputBorderColor; + border-radius:1em; + color: @labelColor; + transition: box-shadow .5s, border .5s; + &:hover, &:focus, &:focus-within { + box-shadow: none; + border:1px solid @inputBorderColorActive; + transition: box-shadow 0.5s, border .5s; + } + &:checked, &:active { + box-shadow: -5px -5px 13px @buttonShadowBRColor, 3px 3px 10px @buttonShadowTLColor; + transition: box-shadow 0.5s; + } + &.green { + background: radial-gradient(@buttonUnCheckedColorInnerGreen 20%, @buttonUnCheckedColorOuterGreen 100%); + } + &.red { + background: radial-gradient(@buttonUnCheckedColorInnerRed 20%, @buttonUnCheckedColorOuterRed 100%); + } + } + input[type=radio], input[type=checkbox], select { + height: 2em; + -webkit-appearance: none; + -moz-appearance: none; + } + + select { + margin-top:-4px; + vertical-align:top; + padding:0 3px; + } + + input[type=radio], input[type=checkbox] { + width:2em; + &:checked { + background: radial-gradient(@buttonCheckedColorInner 20%, @buttonCheckedColorOuter 100%); + } + + & + label { + margin:0.5em 0 0 5px; + display:inline-block; + height:2em; + vertical-align:top; + } + } + input[type=text], input[type=password], input[type=submit], button { + font-size: 100%; + margin: 1.3em 0 0; + padding: 0.2em 0.5em 0; + height: 2em; + box-sizing: border-box; + width:100%; + } + input[type=text], input[type=password] { + &:active { + box-shadow:none; + } + } + button { + cursor:pointer; + outline:none; + } + + label + a, label + p { + margin-top:1.3em; + display:inline-block; + } + input[type=text], input[type=password], input[type=file], select, button { + &:focus, + &.active, + &:valid, + &.invalid, + &:disabled { + & + label:before { + transform: translateY(-2.0em) translateX(0.5em); + border-color: @inputBorderColor; + font-size:70%; + background: @labelBackground; + } + } + } + + .errormsg { + display:inline-block; + } + + .successmsg { + margin-top:1em; + color:#009900; + display:inline-block; + } + + &.small, .small { + font-size: 75%; + input[type=checkbox] + label { + margin:0.6em 0 0; + } + input[type=text], input[type=password], input[type=file], select { + &:focus, + &.active, + &:valid, + &.invalid, + &:disabled { + & + label:before { + transform: translateY(-2.3em) translateX(0.5em); + } + } + } + } + +} diff --git a/less/header.less b/less/header.less new file mode 100644 index 0000000..dc9205d --- /dev/null +++ b/less/header.less @@ -0,0 +1,23 @@ +header { + padding:0px 1em 1.5em; + background: linear-gradient(0deg, @backgroundColor 0%, @headerBottom 1.0em, @headerBackground 1.0em 100%); + h1 { + display:inline-block; + margin: 0 20px 0 0; + } + #menu { + display:inline-block; + margin:0; + li+li{ + margin-left: 20px; + } + } + a { + color:inherit; + text-decoration: none; + &:focus, &:active { + text-decoration: underline; + + } + } +} diff --git a/less/main.less b/less/main.less new file mode 100644 index 0000000..def7c50 --- /dev/null +++ b/less/main.less @@ -0,0 +1,112 @@ +#trigger { + button.trigger { + height:1.5em; + margin-top:0; + text-align:center; + font-size:2em; + img { + margin-right:20px; + vertical-align:top; + height:1em; + } + align-items:center; + } +} +#edittiming { + > div { + float:left; + margin-bottom:20px; + .outer { + transition: font-size .1s, opacity 0.1s 0.1s; + } + overflow:hidden; + .minmax { + display:block; + position:absolute; + right:20px; + width:18px; + height:18px; + border-radius:50%; + background: @buttonUnCheckedColorOuter; + + &:before { + top:5px; + right:1px; + content: ''; + display: block; + border-top: 8px solid @buttonCheckedColorInner; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + width: 0; + height: 0; + position:absolute; + transition: transform 0.2s; + } + + } + h3 { + text-align:center; + margin:0; + font-weight:500; + } + input[type=text] { + width:80px; + } + + button.del { + width:40px; + } + .time { + white-space:nowrap; + } + hr { + margin:10px -10px -10px; + border:0; + border-top:1px solid rgba(0,0,0,.3); + border-bottom:1px solid rgba(255,255,255,.3); + } + &.min { + .outer { + font-size:0; + opacity:0; + transition: opacity 0.1s, font-size 0.1s .1s; + } + .minmax:before{ + transform: rotate(90deg); + transition:transform .2s; + } + } + } +} + +#mainview .error { + color:@errorColor; + margin:25px 10px; +} +@media screen and (min-width: 800px) { + #trigger { + width:400px; + } + #edittiming > div { + width:400px; + .time br { + display: none; + } + } +} + +@media screen and (max-width: 800px) { + #edittiming { + > div { + width:auto; + float:none; + .time { + white-space: normal; + } + button.del { + display:block; + width:100%; + } + } + } +} \ No newline at end of file diff --git a/less/mapping.less b/less/mapping.less new file mode 100644 index 0000000..d4522c8 --- /dev/null +++ b/less/mapping.less @@ -0,0 +1,12 @@ +#mapping { + max-width:500px; + .pin { + display:inline-block; + height:2em; + margin:0.5em 0 0; + vertical-align:top; + } + .mapping { + margin-bottom:0.5em; + } +} diff --git a/less/overlay.less b/less/overlay.less new file mode 100644 index 0000000..3988972 --- /dev/null +++ b/less/overlay.less @@ -0,0 +1,41 @@ +.overlay { + position:fixed; + z-index:128000; + top:0; + left:0; + width:100%; + height:100vh; + background:rgba(0,0,0,0.5); + + > div { + display:flex; + flex-direction:column; + margin: 12vh auto 0; + max-width:960px; + min-width:350px; + min-height:300px; + width:75%; + height:75vh; + background:#FFF; + border:1px solid #cacaca; + border-radius:5px; + box-shadow:0 0 10px #000; + .header { + padding:5px; + border-bottom:1px solid #cacaca; + h2 { + margin:0; + padding:0; + font-size:120%; + text-align:center; + } + span.close { + float:right; + cursor:pointer; + } + } + form { + overflow:auto; + } + } +} \ No newline at end of file diff --git a/less/update.less b/less/update.less new file mode 100644 index 0000000..18d1bd3 --- /dev/null +++ b/less/update.less @@ -0,0 +1,9 @@ +#update { + > div { + width:400px; + } + label { + display:block; + margin-bottom:10px; + } +} \ No newline at end of file diff --git a/less/wifi.less b/less/wifi.less new file mode 100644 index 0000000..87ecba7 --- /dev/null +++ b/less/wifi.less @@ -0,0 +1,21 @@ +#wifi { + margin-top:20px; + max-width:600px; + .hsplit { + >div + div { + width:400px; + } + } +} + +@media screen and (max-width: 500px) { + #wifi { + .hsplit { + display:block; + >div + div { + margin:0; + width:100%; + } + } + } +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..e427351 --- /dev/null +++ b/package.json @@ -0,0 +1,38 @@ +{ + "name": "CameraTrigger", + "version": "1.0.0", + "homepage": "https://contentnation.net/grumpydevelop/", + "author": { + "name" : "Sascha Nitsch", + "url" : "https://contentnation.net/grumpydevelop/" + }, + "funding": { + "type": "ContentNation", + "url": "https://contentnation.net/grumpydevelop/" + }, + "license": "GPL-3.0-or-later", + "devDependencies": { + "@types/jquery": "^3.5.16", + "grunt": "^1.5.3", + "grunt-cli": "^1.4.3", + "grunt-contrib-concat": "^2.1.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-less": "^3.0.0", + "grunt-contrib-uglify": "^5.2.2", + "grunt-contrib-watch": "^1.1.0", + "grunt-json-merge": "^0.2.2", + "grunt-newer": "^1.3.0", + "grunt-ts": "^6.0.0-beta.22", + "typescript": "^4.9.4" + }, + "dependencies": { + "@fortawesome/fontawesome-free": "^6.2.1", + "@types/mustache": "^4.2.2", + "jquery": "^3.6.3", + "jquery-toast-plugin": "^1.3.2", + "mustache": "^4.2.0" + }, + "browserslist": [ + "defaults" + ] +} diff --git a/static/api/config.json b/static/api/config.json new file mode 100644 index 0000000..822d037 --- /dev/null +++ b/static/api/config.json @@ -0,0 +1,4 @@ +{ + "wifimode": "ap", + "ssid": "CameraTrigger" +} \ No newline at end of file diff --git a/static/api/pinmapping.json b/static/api/pinmapping.json new file mode 100644 index 0000000..cc7b5a1 --- /dev/null +++ b/static/api/pinmapping.json @@ -0,0 +1,10 @@ +{ + "d0": ["Flash 1", "digitalout", false], + "d1": ["Valve 1", "digitalout", false], + "d2": ["Valve 2", "digitalout", false], + "d3": ["trigger", "trigger", false], + "d4": ["", "none", false], + "d5": ["Flash 2", "digitalout", false], + "d6": ["Camera", "irsony", false], + "d7": ["", "none", false] +} \ No newline at end of file diff --git a/static/api/run b/static/api/run new file mode 100644 index 0000000..ef12c17 --- /dev/null +++ b/static/api/run @@ -0,0 +1,3 @@ +{ + "message": "ok" +} \ No newline at end of file diff --git a/static/api/ssid.json b/static/api/ssid.json new file mode 100644 index 0000000..95bf4fd --- /dev/null +++ b/static/api/ssid.json @@ -0,0 +1,4 @@ +[ + ["abc", 70, 2, ""], + ["def", 65, 3, "open"] +] diff --git a/static/api/wifi b/static/api/wifi new file mode 100644 index 0000000..13a1641 --- /dev/null +++ b/static/api/wifi @@ -0,0 +1,3 @@ +{ + "error": "invalidpassword" +} \ No newline at end of file diff --git a/static/cameratrigger_logo.png b/static/cameratrigger_logo.png new file mode 100644 index 0000000..092be7f Binary files /dev/null and b/static/cameratrigger_logo.png differ diff --git a/static/index.html b/static/index.html new file mode 100644 index 0000000..5a7d334 --- /dev/null +++ b/static/index.html @@ -0,0 +1,20 @@ + + + + + Camera Trigger + + + + + + + +
+

logo Camera Trigger

+ +
+
loading ...
+ + + \ No newline at end of file diff --git a/templates/base/main.mst b/templates/base/main.mst new file mode 100644 index 0000000..89c7c03 --- /dev/null +++ b/templates/base/main.mst @@ -0,0 +1,26 @@ + + diff --git a/templates/base/menu.mst b/templates/base/menu.mst new file mode 100644 index 0000000..6056e4d --- /dev/null +++ b/templates/base/menu.mst @@ -0,0 +1,4 @@ + diff --git a/templates/base/pinmapping.mst b/templates/base/pinmapping.mst new file mode 100644 index 0000000..738c51e --- /dev/null +++ b/templates/base/pinmapping.mst @@ -0,0 +1,23 @@ + diff --git a/templates/base/update.mst b/templates/base/update.mst new file mode 100644 index 0000000..b406ca0 --- /dev/null +++ b/templates/base/update.mst @@ -0,0 +1,8 @@ + diff --git a/templates/base/wifi.mst b/templates/base/wifi.mst new file mode 100644 index 0000000..fe78579 --- /dev/null +++ b/templates/base/wifi.mst @@ -0,0 +1,28 @@ + + \ No newline at end of file diff --git a/ts/api.ts b/ts/api.ts new file mode 100644 index 0000000..5b51e8c --- /dev/null +++ b/ts/api.ts @@ -0,0 +1,70 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/// + +class Api { + /** + * ajax get call + * @param {string} path url path to call + * @param {object} parameter parameters to pass to api call + * @param {object} context optional parameter for setting the context the success and error function will be called + * @param {function} success optional success callback function + * @param {function} error optional error callback function + */ + static get(path: string, parameter, context, success, error) { + jQuery.ajax({ + url : "api" + (path[0] != '/' ? '/' : '') + path, + dataType : 'json', + type : "GET", + data : parameter, + success : success, + error : error, + context : context + }); + }; + + /** + * brief ajax post call api + * @param {string} path url path to call + * @param {object} parameter parameters to pass to api call + * @param {object} context optional parameter for setting the context the success and error function will be called + * @param {function} success optional success callback function + * @param {function} error optional error callback function + */ + static post(path: string, parameter, context, success, error) { + jQuery.ajax({ + url : "api" + (path[0] != '/' ? '/' : '') + path, + dataType : 'json', + type : "POST", + data : parameter, + processData: !(parameter instanceof FormData), + success : success, + error : error, + context : context, + contentType: parameter instanceof FormData ? false : "application/x-www-form-urlencoded; charset=UTF-8" + }); + }; + + /** + * brief ajax del call api + * @param {string} path url path to call + * @param {object} parameter parameters to pass to api call + * @param {object} context optional parameter for setting the context the success and error function will be called + * @param {function} success optional success callback function + * @param {function} error optional error callback function + */ + static del(path: string, context, success, error) { + jQuery.ajax({ + url : "api" + (path[0] != '/' ? '/' : '') + path, + dataType : 'json', + type : "DELETE", + success : success, + error : error, + context : context + }); + }; +} diff --git a/ts/cameratrigger.ts b/ts/cameratrigger.ts new file mode 100644 index 0000000..8278a53 --- /dev/null +++ b/ts/cameratrigger.ts @@ -0,0 +1,189 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/// +/// +/// +/// +/// + +interface Wifi { + mode:string; + ssid:string; +} + +type PinMappings = Record; + +class CameraTrigger { + public form:FormInfo; + public lang: any; + public loader: Loader; + public routing: any; + public oldhash: string; + public view: View; + public wifi: Wifi; + public pinMapping: PinMappings; + + constructor() { + this.routing = { + "": "MainView", + "#wifi": "WifiView", + "#pinmapping": "PinMappingView", + "#update": "UpdateView" + }; + + this.loader = new Loader(this); + this.loadConfig(); + this.loader.template("base", this, this.start, null); + } + + public getVersion() : string { + return "beta1"; + } + + /** + * default error function + * - disables loading indicator + * - fills in fields with class errormsg + * - show error toaster + */ + public error(jqXHR, textStatus, errorThrown) { + var error="error"; + if (jqXHR.responseJSON) { + error = jqXHR.responseJSON.error; + } else { + if (errorThrown in app.lang.error) { + error = app.lang.error[errorThrown]; + } else { + error = errorThrown; + } + } + if (this.form) { + $(this.form.target).removeClass("loading"); + $(this.form.target).find('.errormsg').text(error); + } + $.toast({ + text: error, + position: 'top-right', + icon: 'error' + }); + }; + + /** + * default success function + * - disables loading indicator + * - fills in fields with class successmsg + * - show toaster + */ + public success(jqXHR, textStatus, errorThrown) { + var message="ok"; + if (jqXHR.responseJSON) { + message = jqXHR.responseJSON.message; + if (message in app.lang.message) { + message = app.lang.message[message]; + } + } + if (this.form) { + $(this.form.target).removeClass("loading"); + $(this.form.target).find('.successmsg').text(message); + } + $.toast({ + text: message, + position: 'top-right', + icon: 'success' + }); + }; + + loadConfig() { + Api.get("config.json", {}, this, this.applyConfig, this.error); + } + + applyConfig(config) { + // load language file + this.loader.addLang("en", "main", this, this.start, this.error); + this.wifi = {mode: config.wifimode, ssid: config.ssid}; + } + + start() { + if (!this.lang || $("#tplMenu").length == 0) { + // try again the next time + return; + } + // render menu + var template = $("#tplMenu").html(); + var data:any = {}; + data.l = this.lang; + var html = Mustache.render(template, data); + $("#menu").prepend(html); + $(window).on('hashchange', this, this.doRouting); + this.doRouting(); + } + + doRouting(event?: JQuery.TriggeredEvent) { + if (event && event.data) { + event.data.doRouting(); + return false; + } + var hash = document.location.hash; + if (hash != this.oldhash && this.view) { + this.view.finish(); + } + this. oldhash = hash; + var className = this.routing[hash]; + if (className) { + this.newClass(className); + } + } + + /** + * create a new instance of given classname with optional construction parameter + * - loads class if not yet known, filename: js/lowerCaseClassName.min.js + * - creates instance of class + * @param {any} classname class name + * @param {object} parameter optional parameter for new instance + * @private + */ + newClass(classname: any, parameter?: object) : any { + if (typeof classname === "object") { + let newclass: any = window[classname.name]; + new newclass(this, classname.parameter); + return; + } + if (!window[classname]) { + this.loader.js(classname.toLowerCase(), this, this.newClass, { + name : classname, + parameter : parameter + }); + return; + } + let newclass: any = window[classname]; + new newclass(this, parameter); + }; + + getPinMapping(context: any, callback: any) { + Api.get("pinmapping.json",{}, {t:this, context:context, callback:callback}, this.gotPinMapping, this.error); + } + + gotPinMapping(this:any, data: any) { + var self = this.t; + var cbcontext = this.context; + var callback = this.callback; + self.pinMapping = data; + if (callback) { + callback.call(cbcontext); + } + } + + setPinMapping(data: PinMappings) { + this.pinMapping = data; + } + +} + +var app: CameraTrigger; +$(document).ready(function() { + app = new CameraTrigger(); +}); diff --git a/ts/forminfo.ts b/ts/forminfo.ts new file mode 100644 index 0000000..a0753fe --- /dev/null +++ b/ts/forminfo.ts @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +class FormInfo { + public enctype: string; + public target: JQuery.Node; + public path: string; + public parentElement: JQuery; +} \ No newline at end of file diff --git a/ts/loader.ts b/ts/loader.ts new file mode 100644 index 0000000..23a728f --- /dev/null +++ b/ts/loader.ts @@ -0,0 +1,178 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + + +/// + +// IE stuff +interface HTMLElement { + readyState: any; + onreadystatechange: any; +} + +class Loader { + private loading: object; + private app: CameraTrigger; + + constructor(app: CameraTrigger) { + this.loading = {}; + this.app = app; + } + + /** + * load css + * @param {string} file file to load + * - checks for duplicates + * - file name: /css/ + file + .css?v=version + */ + css(file: string) { + if (!document.getElementById("css_" + file)) { + var link = document.createElement('link'); + link.setAttribute("rel", "stylesheet"); + link.setAttribute("type", "text/css"); + link.setAttribute("id", "css_" + file); + if (file[0] === "/") { + link.setAttribute("href", file); + } else { + link.setAttribute("href", "css/" + file + ".css?v=" + this.app.getVersion()); + } + document.getElementsByTagName("head")[0].appendChild(link); + } + }; + + /** + * gerneic callback wrapper supporting App scope or optional other scope + * @param {object} scope to use (undefined or false uses App instance) + * @param {Function} funct function to call + * @param {object} parameter paramter for funct + * @private + */ + private callback(scope: object, funct: Function, parameter: object) { + if (!scope) { + funct.call(this, parameter); + } else { + funct.call(scope, parameter); + } + }; + + /** + * load javascript + * @param {string} file file to load + * @param {object} scope scope for callback + * @param {Function} callback callback function + * @param {object} parameter parameter for callback + * - checks for duplicates + * - file name: /js/ + file + .min.js?v=version + */ + js(file: string, scope?: object, callback?: Function, parameter?: object) : boolean { + if (this.loading[file]) { + this.loading[file].push([scope,callback, parameter]); + return true; + } + if (!document.getElementById("script_" + file.replace("/","_"))) { + var script:HTMLElement = document.createElement('script'); + if (file[0] === "/") { + script.setAttribute("src", file); + } else { + script.setAttribute("src", file + ".min.js?v=" + this.app.getVersion()); + } + if (!callback) { + callback = function() { + script.setAttribute("id", "script_" + file); + // console.log("trigger", "scriptload." + file); + $(document).trigger("scriptload." + file); + }; + } + this.loading[file] = [[scope,callback, parameter]]; + if (callback) { + if (script.readyState) { // IE + script.onreadystatechange = function() { + if (script.readyState === "loaded" || script.readyState === "complete") { + script.onreadystatechange = null; + script.setAttribute("id", "script_" + file.replace("/","_")); + this.callbackList(file); + delete this.loading[file]; + } + }.bind(this); + } else { // Others + script.onload = function() { + script.setAttribute("id", "script_" + file.replace("/","_")); + this.callbackList(file); + delete this.loading[file]; + }.bind(this); + } + } + document.getElementsByTagName("head")[0].appendChild(script); + return true; + } + if (callback) { + this.callback(scope, callback, parameter); + } else { + $(document).trigger("scriptload." + file); + } + return false; + }; + + /** + * calls multiple callsbacks if a file has been loaded + * @param {string} file file that has been loaded + * @private + */ + callbackList(file: string) { + for (var i = 0; i < this.loading[file].length; ++i) { + var c = this.loading[file][i]; + if (c[0]) { + this.callback(c[0], c[1], c[2]); + } + } + $(document).trigger("scriptload." + file); + }; + + /** + * add translation file to global translation object + * @param {string} language + * @param {string} group language group + * @param {object} scope scope for callback function + * @param {Function} callback callback function + * @param {object} parameter parameter for callback + */ + addLang(lang: string, group: string, scope?: object, callback?:Function, parameter?: object) { + if (this.app.lang && this.app.lang[group]) { + if (callback) { + this.callback(scope, callback, parameter); + } + } else { + jQuery.ajax({ + url : lang + "_" + group + ".json?v=" + this.app.getVersion(), + dataType : 'json', + type : "GET", + data : parameter, + success : function(a) { + this.app.lang = jQuery.extend(this.app.lang, a); + if (callback) { + this.callback(scope, callback, parameter); + } + }, + error : this.app.error, + context : this + }); + } + }; + + template(file: string, scope: object, callback: Function, param?: object) { + jQuery.ajax({ + url: file+'.mst?v=' + this.app.getVersion(), + dataType: 'text', + context: this, + success: function(template) { + $("body").append(template); + if (callback) { + this.callback(scope, callback, param); + } + } + }); + } +} diff --git a/ts/mainview.ts b/ts/mainview.ts new file mode 100644 index 0000000..29df5ae --- /dev/null +++ b/ts/mainview.ts @@ -0,0 +1,158 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/// +/// + +class MainView extends View { + + constructor(app: CameraTrigger) { + super(app); + if (!this.app.pinMapping) { + this.app.getPinMapping(this, this.render); + } else { + this.render(); + } + } + + finish() { + } + + render() { + var template = $("#tplMain").html(); + var data:any = {}; + data.l = this.app.lang; + var keys = Object.keys(this.app.pinMapping); + data.pinmapping = []; + keys.forEach(function(key){ + var pin = this.app.pinMapping[key]; + if (pin[1] !== "none" && pin[1] !== "trigger") { + data.pinmapping.push({pin: key, name: pin[0]}); + } + }); + var html = Mustache.render(template, data); + this.root.html(html); + this.root.find("button.add").on("click", this, this.addTime); + this.root.on("click","button.del", this, this.delTime); + this.root.find(".minmax").on("click", this, this.toggleExpansion); + this.root.find("#trigger button.trigger").on("click", this, this.trigger); + this.root.find("#trigger button.save").on("click", this, this.save); + } + + addTime(event: JQuery.TriggeredEvent) { + event.preventDefault(); + var target = $(event.currentTarget); + var template = $("#tplMainTime").html(); + var data:any = {}; + var fform = target.parents(".fform"); + data.name = fform.data("pin"); + data.index = fform.find(".time").length; + data.delta = event.data.app.pinMapping[data.name][1]==="digitalout"; + data.l = event.data.app.lang; + var html = Mustache.render(template, data); + target.before(html); + } + + delTime(event: JQuery.TriggeredEvent) { + event.preventDefault(); + var target = $(event.currentTarget).parent(); + target.remove(); + } + + toggleExpansion(event: JQuery.TriggeredEvent) { + event.preventDefault(); + + var form = $(event.currentTarget).parents("div.fform") + form.toggleClass("min"); + return false; + } + + trigger(event: JQuery.TriggeredEvent) { + event.preventDefault(); + event.data.realTrigger(true) + } + + save(event: JQuery.TriggeredEvent) { + event.preventDefault(); + event.data.realTrigger(false) + } + + realTrigger(alsoTrigger: boolean) { + // get list of active pins + var times={}; + var inputs = this.root.find("form").serializeArray(); + for (var i = 0 ; i < inputs.length; ++i) { + var tokens = inputs[i].name.split("_"); + var type = tokens[0] + var pin = parseInt(tokens[1].substr(1)); + var time = parseInt(inputs[i].value); + if (type === "delta") { + time += parseInt(inputs[i-1].value); + } + if (!times[time]) { + times[time] = []; + } + var start = type === "start"; + if (this.app.pinMapping[tokens[1]][2]) // inverted + start = !start; + switch (this.app.pinMapping[tokens[1]][1]) { // type + case "digitalout": + times[time].push((start ? "E" : "D") + pin); + break; + case "ircanon": + times[time].push("C" + pin); + break; + case "irnikon": + times[time].push("N" + pin); + break; + case "irsony": + times[time].push("S" + pin); + break; + } + } + var keys = Object.keys(times).sort(function(a,b){var A=parseInt(a);var B=parseInt(b);return A diff) { + var err = this.app.lang.main.needpause.replace("$1", needDelay); + $.toast({ + text: err, + position: 'top-right', + icon: 'error' + }); + this.root.find(".error").html(err); + return; + } + if (diff>0) { + cmdString += "d" + diff + ";"; + } + needDelay = 0; + times[keys[j]].forEach(function(a) { + if (a[0] === 'C') + needDelay = 10; + else if (a[0] === 'N') + needDelay = 136; + else if (a[0] === 'S') + needDelay = 39; + }); + cmdString += times[keys[j]].join(";") + ";"; + curTime = parseInt(keys[j]); + } + //check for trigger + keys = Object.keys(this.app.pinMapping) + for (var k = 0; k < keys.length ; ++k) { + if (this.app.pinMapping[keys[k]][1] === "trigger") { + cmdString += "T" + keys[k].substr(1) + ";"; + } + console.log(this.app.pinMapping[keys[k]]); + } + Api.post("/run", {"cmd": cmdString, "trigger": alsoTrigger}, this, this.app.success, this.app.error); + } +} diff --git a/ts/pinmappingview.ts b/ts/pinmappingview.ts new file mode 100644 index 0000000..0876a5f --- /dev/null +++ b/ts/pinmappingview.ts @@ -0,0 +1,67 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/// +/// +class PinMappingView extends View { + public form: any; + constructor(app: CameraTrigger) { + super(app); + if (!this.app.pinMapping) { + this.app.getPinMapping(this, this.render); + } else { + this.render(); + } + } + + finish() { + this.root.find("input[type=submit]").off("click", this.saveEdit); + } + + render() { + var template = $("#tplPinMapping").html(); + var data:any = {}; + data.l = this.app.lang; + data.pinmapping = []; + var keys = Object.keys(this.app.pinMapping); + keys.forEach(function(key){ + var pin = this.app.pinMapping[key]; + data.pinmapping.push({pin: key, name: pin[0], type: pin[1], inverted: pin[2]}); + }); + var html = Mustache.render(template, data); + this.root.html(html); + this.root.find("input[type=submit]").on("click", this, this.saveEdit); + // set select boxes + for (var i = 0; i < 8; ++i) { + this.root.find("select[name=type_d" + i + "]").val(this.app.pinMapping["d" + i][1]); + } + } + + saveEdit(event?: JQuery.TriggeredEvent) { + if (event && event.data) { + event.preventDefault(); + event.data.saveEdit(); + return; + } + var data = {}; + var keys = Object.keys(this.app.pinMapping); + var root = this.root; + keys.forEach(function(key){ + var pin = this.app.pinMapping[key]; + data[key] = [root.find("input[name=name_" + key + "]").val(), root.find("#type_" + key).val(), root.find("input[name=inverted_" + key + "]").prop("checked")===true]; + }); + Api.post("pinmapping", JSON.stringify(data), this, this.success, this.app.error); + } + + success(data: PinMappings) { + this.app.setPinMapping(data); + $.toast({ + text: this.app.lang.generic.savesuccess, + position: 'top-right', + icon: 'success' + }); + } +} diff --git a/ts/toast.d.ts b/ts/toast.d.ts new file mode 100644 index 0000000..16fa811 --- /dev/null +++ b/ts/toast.d.ts @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + + +interface JQueryStatic { + toast(options?: any, callback?: Function) : any; +} \ No newline at end of file diff --git a/ts/updateview.ts b/ts/updateview.ts new file mode 100644 index 0000000..895de2a --- /dev/null +++ b/ts/updateview.ts @@ -0,0 +1,26 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/// +/// +class UpdateView extends View { + public form: any; + constructor(app: CameraTrigger) { + super(app); + this.render(); + } + + finish() { + } + + render() { + var template = $("#tplUpdate").html(); + var data:any = {}; + data.l = this.app.lang; + var html = Mustache.render(template, data); + this.root.html(html); + } +} \ No newline at end of file diff --git a/ts/view.ts b/ts/view.ts new file mode 100644 index 0000000..e4f6388 --- /dev/null +++ b/ts/view.ts @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +class View { + protected app: CameraTrigger; + protected root:JQuery; + constructor(app: CameraTrigger) { + this.app = app; + app.view = this; + this.root = $("#main"); + this.root.empty(); + } + + finish() { + } +} diff --git a/ts/wifiview.ts b/ts/wifiview.ts new file mode 100644 index 0000000..a3cc0a5 --- /dev/null +++ b/ts/wifiview.ts @@ -0,0 +1,145 @@ +/* + * SPDX-FileCopyrightText: 2023 Sascha Nitsch (@grumpydevelop@contentnation.net) https://contentnation.net/en/grumpydevelop + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/// +/// +interface SSID { + name: string; + quality: number; + active: boolean; + channel: number; + encryption: string; + index: number; +} +class WifiView extends View { + private ssidlist: Array; + public form: any; + constructor(app: CameraTrigger) { + super(app); + this.render(); + this.ssidlist = []; + } + + finish() { + this.root.off("change", "input[name=mode]"); + this.root.find("#ssidscan button").off("click"); + this.root.find("#ssidscan ul").off("change", "input[name=ssidlist]"); + this.root.find("#save").off("click"); + } + + render() { + var template = $("#tplWifi").html(); + var data:any = {}; + data.l = this.app.lang; + data.ssid = this.app.wifi.ssid; + var html = Mustache.render(template, data); + this.root.html(html); + var active = $("#" + this.app.wifi.mode); + active.prop("checked", true); + this.root.on("change", "input[name=mode]", this, this.modechange); + this.root.find("#ssidscan button").on("click", this, this.loadSSIDList); + this.root.find("#save").on("click", this, this.save); + this.modechange(); + } + + modechange(event?: JQuery.TriggeredEvent) { + if (event && event.data) { + event.data.modechange(); + return false; + } + + var mode = this.root.find("input[name=mode]:checked").val(); + var sync = this.root.find("#ssidscan"); + var ssid = this.root.find("#ssid"); + if (mode == "client") { + // show sync button and optionally load first list + sync.removeClass("hidden"); + ssid.attr("disabled","disabled"); + if (!this.ssidlist || this.ssidlist.length == 0) { + this.loadSSIDList(); + } + } else { + // hide sync button + sync.addClass("hidden"); + ssid.removeAttr("disabled"); + } + } + + loadSSIDList(event?: JQuery.TriggeredEvent) { + if (event && event.data) { + event.preventDefault(); + event.data.loadSSIDList() + return false; + } + var button = this.root.find("#ssidscan button"); + button.addClass("loading"); + Api.get("ssid.json", {}, this, this.ssidListReceived, this.app.error); + } + + ssidListReceived(listdata) { + var i; + this.ssidlist = []; + var button = this.root.find("#ssidscan button"); + button.removeClass("loading"); + var existing = this.root.find("#ssid").val(); + for (i=0; i < listdata.length; ++i) { + this.ssidlist.push({name:listdata[i][0], quality: -listdata[i][1], active: listdata[i][0] === existing, channel:listdata[i][2], encryption: this.app.lang.wifi["encryption" + listdata[i][3]], index:i}); + } + var template = $("#tplWifiSSID").html(); + var data:any = {}; + data.l = this.app.lang; + data.ssids = this.ssidlist; + var html = Mustache.render(template, data); + var list = this.root.find("#ssidscan ul"); + list.html(html); + list.on("change", "input[name=ssidlist]", this, this.selectSSID); + } + + selectSSID(event?: JQuery.TriggeredEvent) { + if (event && event.data) { + event.data.selectSSID(); + return false; + } + var ssid = this.root.find("#ssidscan input[name=ssidlist]:checked").val(); + this.root.find("#ssid").val(ssid); + } + + save(event?: JQuery.TriggeredEvent) { + if (event && event.data) { + event.preventDefault(); + event.data.save(); + return false; + } + var save = this.root.find("#save"); + save.addClass("loading"); + this.form = {target: save[0]}; + var data = { + ssid: this.root.find("input[name=ssid]").val(), + mode: this.root.find("input[name=mode]:checked").val(), + password: this.root.find("input[name=password]").val() + }; + Api.post("wifi",data, this, this.saved, this.app.error); + } + + saved(response: any) { + this.root.find("#save").removeClass("loading"); + if (response.error) { + $.toast({ + text: this.app.lang.error[response.error], + position: 'top-right', + icon: 'error' + }); + } else { + $.toast({ + text: this.app.lang.generic.savesuccess, + position: 'top-right', + icon: 'success' + }); + window.setTimeout(function(){document.location.href="http://" + response.redirect;}, 3000); + } + + } +} \ No newline at end of file