diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..ca54ea2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch +**.DS_Store +.vscode/extensions.json diff --git a/Miniskid/CAD/Wiring Diagram.JPG b/Miniskid/CAD/Wiring Diagram.JPG new file mode 100755 index 0000000..b8af19f Binary files /dev/null and b/Miniskid/CAD/Wiring Diagram.JPG differ diff --git a/Miniskid/CAD/v20-3d-printed-rc-skidsteer-model_files.zip b/Miniskid/CAD/v20-3d-printed-rc-skidsteer-model_files.zip new file mode 100755 index 0000000..c764dc6 Binary files /dev/null and b/Miniskid/CAD/v20-3d-printed-rc-skidsteer-model_files.zip differ diff --git a/Miniskid/FW/.gitignore b/Miniskid/FW/.gitignore new file mode 100755 index 0000000..89cc49c --- /dev/null +++ b/Miniskid/FW/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/Miniskid/FW/include/README b/Miniskid/FW/include/README new file mode 100755 index 0000000..194dcd4 --- /dev/null +++ b/Miniskid/FW/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/Miniskid/FW/lib/Cdrv8833/.gitattributes b/Miniskid/FW/lib/Cdrv8833/.gitattributes new file mode 100755 index 0000000..dfe0770 --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/Miniskid/FW/lib/Cdrv8833/.piopm b/Miniskid/FW/lib/Cdrv8833/.piopm new file mode 100755 index 0000000..5132e4a --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Cdrv8833", "version": "1.0.1", "spec": {"owner": "shurillu", "id": 14351, "name": "Cdrv8833", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/Miniskid/FW/lib/Cdrv8833/LICENSE b/Miniskid/FW/lib/Cdrv8833/LICENSE new file mode 100755 index 0000000..e959659 --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Stefano Ledda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Miniskid/FW/lib/Cdrv8833/README.md b/Miniskid/FW/lib/Cdrv8833/README.md new file mode 100755 index 0000000..2509e4e --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/README.md @@ -0,0 +1,109 @@ +# Cdrv8833 + +DRV8833 module + +### Introduction +Cdrv883 is a wrapper class for using modules based on DRV8833 H-bridge from Texas Instruments. + +### News ++ First public version released. + +### Simple usage +See the drv8833Tester example provided in the [examples folder](https://github.com/shurillu/Cdrv8833/tree/main/examples/drv8833Tester). + +### Changelog ++ 1.0.0 Initial version. + +
+ +### Reference + +#### `Cdrv8833()` +Default constructor. The object is NOT initialized: the `init` member function must be called. Decay mode is set to SLOW. +

+ +#### `Cdrv8833(uint8_t in1Pin, uint8_t in2Pin, uint8_t channel, bool swapDirection = false)` +Specialized constructor. Decay mode is set to SLOW. + +input: ++ `in1Pin`: DRV8833 AIN1/BIN1 ++ `in2Pin`: DRV8833 AIN2/BIN2 ++ `channel`: ESP32 PWM channel (0..15) - ESP32 ledc functions ++ `swapDirection`: swap motor rotation direction + +There are 16 independent channels for PWM modulation inside the ESP32 SOC. Every motor need to have its own channel in order to work independently each other. + +Swapping the motor rotation direction is useful (for example): ++ wrong cabling ++ using two motors to drive a two wheels vehicle (left wheel, right wheel). +

+ +#### `bool init(uint8_t in1Pin, uint8_t in2Pin, uint8_t channel, bool swapDirection = false)` +Initialize the object. Decay mode is set to SLOW. + +input: ++ `in1Pin`: DRV8833 AIN1/BIN1 ++ `in2Pin`: DRV8833 AIN2/BIN2 ++ `channel`: ESP32 PWM channel (0..15) - ESP32 ledc functions ++ `swapDirection`: swap motor rotation direction + +Return `true` if no error occurs. + +There are 16 independent channels for PWM modulation inside the ESP32 SOC. Every motor need to have its own channel in order to work independently each other. + +Swapping the motor rotation direction is useful (for example): ++ wrong cabling ++ using two motors to drive a two wheels vehicle (left wheel, right wheel). +

+ +#### `bool move(int8_t power)` +Set motor rotation direction/speed. + +input: ++ `power`: rotation power. -100..100 + +Return `true` if no error occurs. + +The `power` parameter set the rotation speed and the direction. Negative values means reverse rotation direction. Value span to -100 (full speed reverse direction) to 100 (full speed forward direction). + +Zero stop the motor rotation. +

+ +#### `bool stop()` +Stop the motor, using fast decay mode. + +Return `true` if no error occurs. +

+ +#### `bool brake()` +Stop the motor, using slow decay mode. + +Return `true` if no error occurs. +

+ +#### `void setDecayMode(drv8833DecayMode decayMode)` +Set the decay mode. Default decay mode is set to SLOW. + +input: ++ `decayMode`: new decay mode. Values are + + `drv8833DecaySlow` good torque, but high power consumption + + `drv8833DecayFast` poor torque, but low power consumption +

+ +#### `void setFrequency(uint32_t frequency)` +Set the frequency used for the PWM modulation(for ESP32 ledc functions). Default value is 5000Hz. Allowed values are 1Hz..50000Hz. + +input: ++ `frequency`: new frequency in Hertz. 1..50000Hz +

+ +#### `void swapDirection(bool swapDirection)` +Swap the motor rotation direction. +Useful for wrong cabling / driving two opposite motors (left wheel and right wheel of a vehicle) + +input: ++ `swapDirection`: swap/unswap the motor rotation direction + + `true`: swap rotation direction + + `false`: default rotation direction + + diff --git a/Miniskid/FW/lib/Cdrv8833/examples/drv8833Tester/drv8833Tester.ino b/Miniskid/FW/lib/Cdrv8833/examples/drv8833Tester/drv8833Tester.ino new file mode 100755 index 0000000..c8e7784 --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/examples/drv8833Tester/drv8833Tester.ino @@ -0,0 +1,83 @@ +/* + Name: drv8833Tester.ino + Created: 16/08/2022 10:06:02 + Author: Stefano Ledda + Email: shurillu@tiscalinet.it + GitHub: https://github.com/shurillu/Cdrv8833 + Note: Simple sketch to test the DRV8833 H-Bridge + - connect the GPIO 12 to the xIN1 of the DRV8833 module + - connect the GPIO 13 to the xIN2 of the DRV8833 module + - connect the positive pole of the motor to the xOUT1 of the DRV8833 module + - connect the negative pole of the motor to the xOUT2 of the DRV8833 module + - power the DRV8833 module (if the motor is small, 5V and <500mA, you can power + the module pulling the 5V and GND from the ESP32 board) + - load the sketch + - use the serial console to send commands +*/ + +#include "Cdrv8833.h" + +#define IN1_PIN 12 // in1 pin from one of the two DRV8833 H-bridge +#define IN2_PIN 13 // in2 pin from one of the two DRV8833 H-bridge +#define CHANNEL 0 // there are 16 unique PWM channels (0..15) +#define SWAP false // swap motor rotation direction + +Cdrv8833 myMotor; // default constructor + +// you can initialize the object directly with the specialized constructor: +// Cdrv8833 myMotor2(IN1_PIN, IN2_PIN, CHANNEL, SWAP); + +void setup() +{ + Serial.begin(115200); + Serial.println("\n"); + Serial.println("DRV8833 tester"); + Serial.println("--------------"); + Serial.printf("IN1 pin: %u\nIN2 pin: %u\n\n", IN1_PIN, IN2_PIN); + + Serial.println("SWAP - swap motor rotation direction."); + Serial.println("NOSWAP - restore motor rotation direction."); + Serial.println("SLOW - decay mode SLOW - good torque, high power consumption."); + Serial.println("FAST - decay mode FAST - poor torque, low power consumption."); + Serial.println("MOVEXXX - start rotation (XXX = -100..100)."); + Serial.println("STOP - stop the motor."); + + // initialize the object. Not needed if the initialization is done with the specialized constructor + myMotor.init(IN1_PIN, IN2_PIN, CHANNEL, SWAP); +} + +void loop() +{ + String command; + if (Serial.available()) { // check Serial for new command + command = Serial.readString(); // read the new command from Serial + command.toLowerCase(); // convert it to lowercase + + if (command.equals("swap")) { + myMotor.swapDirection(true); // swap rotation direction + Serial.println("--> swapped rotation direction."); + } + else if (command.equals("noswap")) { + myMotor.swapDirection(false); // default rotation direction + Serial.println("--> default rotation direction."); + } + else if (command.equals("slow")) { + myMotor.setDecayMode(drv8833DecaySlow); // decay mode SLOW + Serial.println("--> Decay mode SLOW - good torque."); + } + else if (command.equals("fast")) { + myMotor.setDecayMode(drv8833DecayFast); // decay mode FAST + Serial.println("--> Decay mode FAST - poor torque."); + } + else if (command.equals("stop")) { + myMotor.stop(); // stop moto rotation + Serial.println("--> Motor stopped."); + } + else if (command.startsWith("move")) { + command.replace("move", ""); // remove the word "move" + command.replace(" ", ""); // remove spaces (if present) + myMotor.move(command.toInt()); // start rotation at desired speed + Serial.printf("--> Motor rotation speed: %ld.\n", command.toInt()); + } + } +} diff --git a/Miniskid/FW/lib/Cdrv8833/keywords.txt b/Miniskid/FW/lib/Cdrv8833/keywords.txt new file mode 100755 index 0000000..09344c0 --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/keywords.txt @@ -0,0 +1,14 @@ +Cdrv8833 KEYWORD1 + +init KEYWORD2 +move KEYWORD2 +stop KEYWORD2 +brake KEYWORD2 +setDecayMode KEYWORD2 +setFrequency KEYWORD2 +swapDirection KEYWORD2 + +drv8833DecayMode KEYWORD3 + +drv8833DecaySlow LITERAL1 +drv8833DecayFast LITERAL1 diff --git a/Miniskid/FW/lib/Cdrv8833/library.json b/Miniskid/FW/lib/Cdrv8833/library.json new file mode 100755 index 0000000..3874c72 --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/library.json @@ -0,0 +1,19 @@ +{ + "name": "Cdrv8833", + "keywords": "DRV8833, motor driver, ESP32, h-bridge", + "description": "ESP32 class for the TI DRV8833 motor driver. Designed for unipolar (DC) motors only (not stepper).", + "homepage": "https://github.com/shurillu/Cdrv8833", + "repository": { + "type": "git", + "url": "https://github.com/shurillu/Cdrv8833.git" + }, + "version": "1.0.1", + "authors": { + "name": "Stefano Ledda", + "email": "shurillu@tiscalinet.it" + }, + "frameworks": "arduino", + "platforms": "esp32", + "dependencies": { + } +} diff --git a/Miniskid/FW/lib/Cdrv8833/library.properties b/Miniskid/FW/lib/Cdrv8833/library.properties new file mode 100755 index 0000000..307102b --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/library.properties @@ -0,0 +1,9 @@ +name=Cdrv8833 +version=1.0.1 +author=Stefano Ledda +maintainer=Stefano Ledda +sentence=ESP32 class for the TI DRV8833 motor driver. Designed for unipolar (DC) motors only (not stepper). +paragraph=An easy to use class for driving DC motors with the Texas Instruments DRV8833 driver. Designed only for ESP32 platform. +category=Communication +url=https://github.com/shurillu/Cdrv8833 +architectures=esp32 diff --git a/Miniskid/FW/lib/Cdrv8833/src/Cdrv8833.cpp b/Miniskid/FW/lib/Cdrv8833/src/Cdrv8833.cpp new file mode 100755 index 0000000..91e8ae3 --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/src/Cdrv8833.cpp @@ -0,0 +1,138 @@ +#include "Cdrv8833.h" +#include "esp32-hal-gpio.h" + +Cdrv8833::Cdrv8833() { + // not initialized + m_in1Pin = -1; + m_in2Pin = -1; + m_power = 0; + m_swapDirection = false; + m_decayMode = drv8833DecaySlow; +} + +Cdrv8833::Cdrv8833(uint8_t in1Pin, uint8_t in2Pin, uint8_t channel, bool swapDirection) { + init(in1Pin, in2Pin, channel, swapDirection); +} + +Cdrv8833::~Cdrv8833() { + stop(); +} + +bool Cdrv8833::init(uint8_t in1Pin, uint8_t in2Pin, uint8_t channel, bool swapDirection) { + if (channel > 15) + return false; + if ((m_in1Pin != -1) && (m_in2Pin != -1)) + stop(); + pinMode(in1Pin, OUTPUT); + pinMode(in2Pin, OUTPUT); + m_in1Pin = in1Pin; + m_in2Pin = in2Pin; + m_power = 0; + m_swapDirection = swapDirection; + m_channel = channel; + m_decayMode = drv8833DecaySlow; + ledcSetup(channel, PWM_FREQUENCY, PWM_BIT_RESOLUTION); + return true; +} + +bool Cdrv8833::move(int8_t power) { + if (-1 == m_in1Pin) + return false; + if (-1 == m_in2Pin) + return false; + if (0 == power) { + stop(); + return true; + } + if (power > 100) + power = 100; + if (power < -100) + power = -100; + m_power = power; + + if (m_swapDirection) + power = -power; + float value = (float)((1 << PWM_BIT_RESOLUTION) - 1) * ((float)abs(power))/100.0; + uint32_t dutyCycle; + + if ((value - trunc(value)) < 0.5) + dutyCycle = value; + else + dutyCycle = value + 1; + + if (drv8833DecaySlow == m_decayMode) + dutyCycle = ((1 << PWM_BIT_RESOLUTION) - 1) - dutyCycle; + + if (power > 0) { // forward + if (drv8833DecayFast == m_decayMode) { + // forward fast decay + ledcDetachPin(m_in2Pin); + digitalWrite(m_in2Pin, LOW); + ledcAttachPin(m_in1Pin, m_channel); + } + else { + // forward slow decay + ledcDetachPin(m_in1Pin); + digitalWrite(m_in1Pin, HIGH); + ledcAttachPin(m_in2Pin, m_channel); + } + } + else { // reverse + if (drv8833DecayFast == m_decayMode) { + // reverse fast decay + ledcDetachPin(m_in1Pin); + digitalWrite(m_in1Pin, LOW); + ledcAttachPin(m_in2Pin, m_channel); + } + else { + // reverse slow decay + ledcDetachPin(m_in2Pin); + digitalWrite(m_in2Pin, HIGH); + ledcAttachPin(m_in1Pin, m_channel); + } + } + ledcWrite(m_channel, dutyCycle); + return true; +} + +bool Cdrv8833::stop() { + if (-1 == m_in1Pin) + return false; + if (-1 == m_in2Pin) + return false; + ledcDetachPin(m_in1Pin); + ledcDetachPin(m_in2Pin); + digitalWrite(m_in1Pin, LOW); + digitalWrite(m_in2Pin, LOW); + m_power = 0; + return true; +} + +bool Cdrv8833::brake() { + if (-1 == m_in1Pin) + return false; + if (-1 == m_in2Pin) + return false; + ledcDetachPin(m_in1Pin); + ledcDetachPin(m_in2Pin); + digitalWrite(m_in1Pin, HIGH); + digitalWrite(m_in2Pin, HIGH); + m_power = 0; + return true; +} + +void Cdrv8833::setDecayMode(drv8833DecayMode decayMode) { + stop(); + m_decayMode = decayMode; +} + +void Cdrv8833::setFrequency(uint32_t frequency) { + stop(); + ledcChangeFrequency(m_channel, frequency, PWM_BIT_RESOLUTION); +} + +void Cdrv8833::swapDirection(bool swapDirection) { + stop(); + m_swapDirection = swapDirection; +} + diff --git a/Miniskid/FW/lib/Cdrv8833/src/Cdrv8833.h b/Miniskid/FW/lib/Cdrv8833/src/Cdrv8833.h new file mode 100755 index 0000000..f6c1044 --- /dev/null +++ b/Miniskid/FW/lib/Cdrv8833/src/Cdrv8833.h @@ -0,0 +1,91 @@ +#ifndef DRV8833_H +#define DRV8833_H + +#include + +// default values +#define PWM_FREQUENCY 5000 // 1 - 50000 Hz +#define PWM_BIT_RESOLUTION 8 // pwm bit resolution + +// https://learn.adafruit.com/improve-brushed-dc-motor-performance/choosing-decay-mode-and-pwm-frequency +// DRV8833 PWM: min - 1Hz, max - 50KHz (provare 100-500Hz) +// PWM utilizzare le funzioni ledc + +// slow decay -> good torque, high power consumption +// fast decay -> poor torque, low power consumption +enum drv8833DecayMode { + drv8833DecaySlow = 0, + drv8833DecayFast = 1 +}; + +class Cdrv8833 { +public: + // default constructor. Default decay mode: SLOW + Cdrv8833(); + + // Specialized constructor. Default decay mode: SLOW + // input: + // in1Pin : DRV8833 AIN1/BIN1 + // in2Pin : DRV8833 AIN2/BIN2 + // channel : ESP32 PWM channel (0..15) - ESP32 ledc functions + // swapDirection: swap motor rotation direction + Cdrv8833(uint8_t in1Pin, uint8_t in2Pin, uint8_t channel, bool swapDirection = false); + ~Cdrv8833(); + + // Initialize the DRV8833 object. Default decay mode: SLOW + // input: + // in1Pin : DRV8833 AIN1/BIN1 + // in2Pin : DRV8833 AIN2/BIN2 + // channel : ESP32 PWM channel (0..15) - ESP32 ledc functions + // swapDirection: swap motor rotation direction + // return: + // true if no error occurs. + bool init(uint8_t in1Pin, uint8_t in2Pin, uint8_t channel, bool swapDirection = false); + + // Set motor rotation direction/speed + // input: + // power: rotation power. -100..100 + // Negative numbers mean reverse rotation; positive numbers mean forward direction. + // Zero stop the rotation + // return: + // true if no error occurs. + bool move(int8_t power); // use fast decay -> smooth movement + + // Stop the motor, using fast decay mode + // return: + // true if no error occurs. + bool stop(); + + // Stop the motor, using slow decay mode + // return: + // true if no error occurs. + bool brake(); + + // Set the decay mode. Default decay mode: SLOW + // input: + // decayMode: new decay mode. Values are + // drv8833DecaySlow - good torque, high power consumption + // drv8833DecayFast - poor torque, low power consumption + void setDecayMode(drv8833DecayMode decayMode); + + // Set the PWM frequency (for ESP32 ledc functions) + // input: + // frequency: new frequency in Hertz. 1..50000Hz. + void setFrequency(uint32_t frequency); + + // Swap the motor rotation direction. + // Useful for wrong cabling / driving two opposite motors (left wheel + right wheel motor of a vehicle) + // input: + // swapDirection: true -> swap rotation direction + void swapDirection(bool swapDirection); + +private: + int8_t m_in1Pin; + int8_t m_in2Pin; + bool m_swapDirection; + drv8833DecayMode m_decayMode; + uint8_t m_channel; + int8_t m_power; +}; + +#endif diff --git a/Miniskid/FW/lib/README b/Miniskid/FW/lib/README new file mode 100755 index 0000000..6debab1 --- /dev/null +++ b/Miniskid/FW/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/Miniskid/FW/platformio.ini b/Miniskid/FW/platformio.ini new file mode 100755 index 0000000..99691d8 --- /dev/null +++ b/Miniskid/FW/platformio.ini @@ -0,0 +1,28 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:esp32dev] +platform = espressif32 +board = esp32dev +framework = arduino +monitor_speed = 115200 +lib_deps = + madhephaestus/ESP32Servo@^1.1.0 + ; ottowinter/ESPAsyncWebServer-esphome@^3.1.0 + ; ArduinoWebsockets + ; AsyncTCP + shurillu/Cdrv8833@^1.0.1 + asukiaaa/XboxSeriesXControllerESP32_asukiaaa @ ^1.0.9 +build_flags = + -DCORE_DEBUG_LEVEL=3 + -DNDEF_DEBUG=1 +upload_protocol = esptool +;upload_protocol = espota +;upload_port = miniskidi.local diff --git a/Miniskid/FW/src/Motors.cpp b/Miniskid/FW/src/Motors.cpp new file mode 100755 index 0000000..978c037 --- /dev/null +++ b/Miniskid/FW/src/Motors.cpp @@ -0,0 +1,110 @@ +#include "motors.h" + +bool removeArmMomentum = false; + +Servo bucketServo; +Servo auxServo; + +std::vector motorPins = + { + {RMOTOR_IN1, RMOTOR_IN2}, // RIGHT_MOTOR Pins (IN1, IN2) + {LMOTOR_IN1, LMOTOR_IN2}, // LEFT_MOTOR Pins + {ARM_IN1, ARM_IN2}, //ARM_MOTOR pins +}; + +#define NUMMOTORS 3 +motor motors[NUMMOTORS]; + +void setupmotors() +{ + + for (int i = 0; i < NUMMOTORS; i++) + { + motors[i].init(motorPins[i].pinIN1, motorPins[i].pinIN2, i+2, false); // pinMode(motorPins[i].pinIN1, OUTPUT); + motors[i].stop(); + motors[i].setindex(i); + log_i("motor(%d) initialized", i); + delay(50); + } + bucketServo.attach(bucketServoPin); + bucketServo.write(default_bucketTilt); + //auxServo.attach(auxServoPin); + //auxControl(default_auxControl); +} + +uint32_t lastmotorlog = 0; + +void drivemotor(uint8_t num, int dirspeed) +{ + if (num <= motorPins.size()) + { + if(dirspeed > 46 && dirspeed < 55) //deadband + { + motors[num].stop(); + log_v("stop"); + return; + } + else + { + uint8_t mapspeed = map(dirspeed, 0, 100, 100, -100); + motors[num].move(mapspeed); + motors[num].prevsetpoint = mapspeed; + if (millis() - lastmotorlog > MOTORLOGTIME) + { + log_i("drive motor %u, speed %d%(%d)", num, dirspeed, mapspeed); + lastmotorlog = millis(); + } + } + } + else + { + log_e("invalid motor num %d", num); + } +} + +int prevBucketAngle = 0; +uint32_t lastbuckettimer = 0; +void bucketTilt(int bucketServoValue) +{ + if(millis()- lastbuckettimer > BUCKETTIMER) + { + log_v("bucket command received = %i", bucketServoValue); + int servo = 0; + if(bucketServoValue == 0) + { + log_v("bucket stop"); + return; + } + else if(bucketServoValue > 0) + { + servo = prevBucketAngle + SERVOSTEP; + } + else + { + servo = prevBucketAngle - SERVOSTEP; + } + + if(servo > SERVOMAX) servo = SERVOMAX; + if(servo < SERVOMIN) servo = SERVOMIN; + + bucketServo.write(servo); + log_v("bucket (%i) angle=(%d)", bucketServoValue, servo); + + lastbuckettimer = millis(); + prevBucketAngle = servo; + } +} + +void AbsBucketTilt(int bucketServoValue) +{ + log_v("drive bucket servo, angle %d", bucketServoValue); + delay(5); + bucketServo.write(bucketServoValue); +} + +void auxControl(int auxServoValue) +{ + log_v("drive aux servo, angle %d", auxServoValue); + delay(5); + auxServo.write(auxServoValue); +} diff --git a/Miniskid/FW/src/config.h b/Miniskid/FW/src/config.h new file mode 100755 index 0000000..55c4f52 --- /dev/null +++ b/Miniskid/FW/src/config.h @@ -0,0 +1,21 @@ +//config + + +//Pin configuration +#define RMOTOR_IN1 32 +#define RMOTOR_IN2 33 +#define LMOTOR_IN1 26 +#define LMOTOR_IN2 25 +#define ARM_IN1 19 +#define ARM_IN2 22 + +#define bucketServoPin 23 +#define auxServoPin 17 + +//defaults + +#define default_auxControl 150 +#define default_bucketTilt 200 + + + diff --git a/Miniskid/FW/src/controller.cpp b/Miniskid/FW/src/controller.cpp new file mode 100755 index 0000000..aa06caf --- /dev/null +++ b/Miniskid/FW/src/controller.cpp @@ -0,0 +1,65 @@ +#include "controller.h" + +XboxSeriesXControllerESP32_asukiaaa::Core xboxController; //"40:8e:2c:41:e4:eb"); //("a4:c1:38:38:e3:c0"); +uint32_t lastcontrollernotify = 0; + + + +void setup_controller() +{ + xboxController.begin(); + xboxController.onLoop(); + Serial.printf("Waiting for controller"); +} + +void loop_controller() +{ + + xboxController.onLoop(); + if (xboxController.isConnected()) + { + if (xboxController.isWaitingForFirstNotification()) + { + Serial.println("waiting for first notification"); + } + else + { + log_v("Address: %s", xboxController.buildDeviceAddressStr()); + // log_i("message: %s", Serial.print(xboxController.xboxNotif.toString())); + unsigned long receivedAt = xboxController.getReceiveNotificationAt(); + uint16_t joystickMax = XboxControllerNotificationParser::maxJoy; + if (millis() - lastcontrollernotify > CONTROLLERNOTIFY) + { + log_i("joyLHori rate: %0.0f", ((float)xboxController.xboxNotif.joyLHori / joystickMax *100)); + log_i("joyLVert rate: %0.0f",((float)xboxController.xboxNotif.joyLVert / joystickMax *100)); + log_i("joyRHori rate: %0.0f", ((float)xboxController.xboxNotif.joyRHori / joystickMax *100)); + log_i("joyRVert rate: %0.0f",((float)xboxController.xboxNotif.joyRVert / joystickMax *100)); + log_i("battery %d %", xboxController.battery); + log_i("received at %l", receivedAt); + lastcontrollernotify = millis(); + } + handle_notify(((float)xboxController.xboxNotif.joyLVert / joystickMax *100), + ((float)xboxController.xboxNotif.joyRVert / joystickMax *100), + ((float)xboxController.xboxNotif.joyLHori / joystickMax *100), + ((float)xboxController.xboxNotif.joyRHori / joystickMax *100) + ); + } + } + else + { + log_w("not connected"); + if (xboxController.getCountFailedConnection() > 10) + { + log_e("restarting"); + ESP.restart(); + } + } +} + +void handle_notify(int motR, int motL, int motArm, int bucket) +{ + drivemotor(0, motR); + drivemotor(1, motL); + drivemotor(2, motArm); + bucketTilt(bucket); +} \ No newline at end of file diff --git a/Miniskid/FW/src/controller.h b/Miniskid/FW/src/controller.h new file mode 100755 index 0000000..c5ff4d6 --- /dev/null +++ b/Miniskid/FW/src/controller.h @@ -0,0 +1,10 @@ +#include "Arduino.h" +#include +#include "motors.h" + +#define CONTROLLERNOTIFY 1000 + +void setup_controller(); +void loop_controller(); +void handle_notify(int motR, int motL, int motArm, int bucket); + diff --git a/Miniskid/FW/src/main.cpp b/Miniskid/FW/src/main.cpp new file mode 100755 index 0000000..91a8285 --- /dev/null +++ b/Miniskid/FW/src/main.cpp @@ -0,0 +1,22 @@ +//make sure to upload with ESP32 Dev Module selected as the board under tools>Board>ESP32 Arduino + +#include +#include "motors.h" +#include "controller.h" + +void setup(void) +{ + Serial.begin(115200); + delay(1000); + log_i("init hardware"); + + setup_controller(); + + setupmotors(); + // setup_webserver(); +} + +void loop() +{ + loop_controller(); +} \ No newline at end of file diff --git a/Miniskid/FW/src/motors.h b/Miniskid/FW/src/motors.h new file mode 100755 index 0000000..26362b2 --- /dev/null +++ b/Miniskid/FW/src/motors.h @@ -0,0 +1,61 @@ +#pragma once + +#include +#include +//#include "ESP32MotorControl.h" +#include "Cdrv8833.h" + +#include //by Kevin Harrington + +#include "config.h" + +#define RIGHT_MOTOR 1 +#define LEFT_MOTOR 0 +#define ARM_MOTOR 2 + + +#define SERVOSTEP 10 +#define SERVOMIN 50 +#define SERVOMAX 180 + +#define BUCKETTIMER 10 + +#define MOTORLOGTIME 1000 + +struct MOTOR_PINS +{ + int pinIN1; + int pinIN2; +}; + +//general functions +void setupmotors(); +void loop_motors(); + +void drivemotor(uint8_t num, int dirspeed); + + +//Servo functions +void bucketTilt(int bucketServoValue); +void auxControl(int auxServoValue); +void AbsBucketTilt(int bucketServoValue); + + + +class motor: public Cdrv8833 +{ + const uint8_t motorindex = 0; + + public: + + uint8_t m_index; + int prevsetpoint = 0; + + + + void drive(int dirspeed); + void setindex(uint8_t index) + { + m_index = index; + } +}; \ No newline at end of file diff --git a/Miniskid/FW/test/README b/Miniskid/FW/test/README new file mode 100755 index 0000000..9b1e87b --- /dev/null +++ b/Miniskid/FW/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Test Runner and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html diff --git a/Miniskid/SCH/miniskidi/miniskidi-backups/miniskidi-2023-11-05_125438.zip b/Miniskid/SCH/miniskidi/miniskidi-backups/miniskidi-2023-11-05_125438.zip new file mode 100755 index 0000000..4251b5a Binary files /dev/null and b/Miniskid/SCH/miniskidi/miniskidi-backups/miniskidi-2023-11-05_125438.zip differ diff --git a/Miniskid/SCH/miniskidi/miniskidi-backups/miniskidi-2023-11-05_125953.zip b/Miniskid/SCH/miniskidi/miniskidi-backups/miniskidi-2023-11-05_125953.zip new file mode 100755 index 0000000..c115068 Binary files /dev/null and b/Miniskid/SCH/miniskidi/miniskidi-backups/miniskidi-2023-11-05_125953.zip differ diff --git a/Miniskid/SCH/miniskidi/miniskidi.kicad_pcb b/Miniskid/SCH/miniskidi/miniskidi.kicad_pcb new file mode 100755 index 0000000..2b8ba10 --- /dev/null +++ b/Miniskid/SCH/miniskidi/miniskidi.kicad_pcb @@ -0,0 +1,2 @@ +(kicad_pcb (version 20221018) (generator pcbnew) +) \ No newline at end of file diff --git a/Miniskid/SCH/miniskidi/miniskidi.kicad_pro b/Miniskid/SCH/miniskidi/miniskidi.kicad_pro new file mode 100755 index 0000000..6e1567f --- /dev/null +++ b/Miniskid/SCH/miniskidi/miniskidi.kicad_pro @@ -0,0 +1,332 @@ +{ + "board": { + "3dviewports": [], + "design_settings": { + "defaults": { + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "other_line_width": 0.15, + "silk_line_width": 0.15, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15 + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "rules": { + "min_copper_edge_clearance": 0.0, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0 + }, + "track_widths": [], + "via_dimensions": [] + }, + "layer_presets": [], + "viewports": [] + }, + "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_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "conflicting_netclasses": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "endpoint_off_grid": "warning", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "missing_bidi_pin": "warning", + "missing_input_pin": "warning", + "missing_power_pin": "error", + "missing_unit": "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", + "simulation_model_issue": "error", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "miniskidi.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12, + "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": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6 + } + ], + "meta": { + "version": 3 + }, + "net_colors": null, + "netclass_assignments": null, + "netclass_patterns": [] + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "dashed_lines_dash_length_ratio": 12.0, + "dashed_lines_gap_length_ratio": 3.0, + "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.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "page_layout_descr_file": "", + "plot_directory": "", + "spice_current_sheet_as_root": false, + "spice_external_command": "spice \"%I\"", + "spice_model_current_sheet_as_root": true, + "spice_save_all_currents": false, + "spice_save_all_voltages": false, + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "1b5c276f-c8a9-496b-981d-1974f4678c8d", + "" + ] + ], + "text_variables": {} +} diff --git a/Miniskid/SCH/miniskidi/miniskidi.kicad_sch b/Miniskid/SCH/miniskidi/miniskidi.kicad_sch new file mode 100755 index 0000000..f951333 --- /dev/null +++ b/Miniskid/SCH/miniskidi/miniskidi.kicad_sch @@ -0,0 +1,1634 @@ +(kicad_sch (version 20230121) (generator eeschema) + + (uuid 1b5c276f-c8a9-496b-981d-1974f4678c8d) + + (paper "A4") + + (lib_symbols + (symbol "Connector:Screw_Terminal_01x02" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (at 0 2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Screw_Terminal_01x02" (at 0 -5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "screw terminal" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "TerminalBlock*:*" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Screw_Terminal_01x02_1_1" + (rectangle (start -1.27 1.27) (end 1.27 -3.81) + (stroke (width 0.254) (type default)) + (fill (type background)) + ) + (circle (center 0 -2.54) (radius 0.635) + (stroke (width 0.1524) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.5334 -2.2098) + (xy 0.3302 -3.048) + ) + (stroke (width 0.1524) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.5334 0.3302) + (xy 0.3302 -0.508) + ) + (stroke (width 0.1524) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.3556 -2.032) + (xy 0.508 -2.8702) + ) + (stroke (width 0.1524) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.3556 0.508) + (xy 0.508 -0.3302) + ) + (stroke (width 0.1524) (type default)) + (fill (type none)) + ) + (circle (center 0 0) (radius 0.635) + (stroke (width 0.1524) (type default)) + (fill (type none)) + ) + (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 "Device:C" (pin_numbers hide) (pin_names (offset 0.254)) (in_bom yes) (on_board yes) + (property "Reference" "C" (at 0.635 2.54 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "C" (at 0.635 -2.54 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 0.9652 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "cap capacitor" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Unpolarized capacitor" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "C_*" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "C_0_1" + (polyline + (pts + (xy -2.032 -0.762) + (xy 2.032 -0.762) + ) + (stroke (width 0.508) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.032 0.762) + (xy 2.032 0.762) + ) + (stroke (width 0.508) (type default)) + (fill (type none)) + ) + ) + (symbol "C_1_1" + (pin passive line (at 0 3.81 270) (length 2.794) + (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 2.794) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:C_Polarized_Small" (pin_numbers hide) (pin_names (offset 0.254) hide) (in_bom yes) (on_board yes) + (property "Reference" "C" (at 0.254 1.778 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "C_Polarized_Small" (at 0.254 -2.032 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "cap capacitor" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Polarized capacitor, small symbol" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "CP_*" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "C_Polarized_Small_0_1" + (rectangle (start -1.524 -0.3048) (end 1.524 -0.6858) + (stroke (width 0) (type default)) + (fill (type outline)) + ) + (rectangle (start -1.524 0.6858) (end 1.524 0.3048) + (stroke (width 0) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 1.524) + (xy -0.762 1.524) + ) + (stroke (width 0) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.016 1.27) + (xy -1.016 1.778) + ) + (stroke (width 0) (type default)) + (fill (type none)) + ) + ) + (symbol "C_Polarized_Small_1_1" + (pin passive line (at 0 2.54 270) (length 1.8542) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -2.54 90) (length 1.8542) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Driver_Motor:DRV8833RTY" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "U" (at -3.81 16.51 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "DRV8833RTY" (at -3.81 13.97 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Package_DFN_QFN:Texas_S-PWQFN-N16_EP2.1x2.1mm_ThermalVias" (at 11.43 11.43 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/drv8833.pdf" (at -3.81 13.97 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "H-bridge motor driver" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Dual H-Bridge Motor Driver, WQFN-16" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Texas*S?PWQFN?N*EP*" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "DRV8833RTY_0_1" + (rectangle (start -10.16 12.7) (end 10.16 -12.7) + (stroke (width 0.254) (type default)) + (fill (type background)) + ) + ) + (symbol "DRV8833RTY_1_1" + (pin bidirectional line (at -15.24 5.08 0) (length 5.08) + (name "AISEN" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 7.62 17.78 270) (length 5.08) + (name "VM" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -17.78 90) (length 5.08) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 5.08 17.78 270) (length 5.08) + (name "VINT" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -15.24 -5.08 0) (length 5.08) + (name "AIN2" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -15.24 -2.54 0) (length 5.08) + (name "AIN1" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -15.24 10.16 0) (length 5.08) + (name "nSLEEP" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 15.24 -2.54 180) (length 5.08) + (name "AOUT1" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 -17.78 90) (length 5.08) + (name "GND(PPAD)" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 15.24 -5.08 180) (length 5.08) + (name "AOUT2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 15.24 -10.16 180) (length 5.08) + (name "BOUT2" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -15.24 2.54 0) (length 5.08) + (name "BISEN" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 15.24 -7.62 180) (length 5.08) + (name "BOUT1" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line (at 15.24 2.54 180) (length 5.08) + (name "nFAULT" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -15.24 -7.62 0) (length 5.08) + (name "BIN1" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -15.24 -10.16 0) (length 5.08) + (name "BIN2" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -15.24 7.62 0) (length 5.08) + (name "VCP" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Espressif:ESP32-S3-MINI-1" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "U" (at -43.18 43.18 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "ESP32-S3-MINI-1" (at -43.18 40.64 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Espressif:ESP32-S3-MINI-1" (at 0 -55.88 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-s3-mini-1_mini-1u_datasheet_en.pdf" (at 0 -58.42 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Smallsized module supporting 2.4 GHz WiFi (802.11 b/g/n) and Bluetooth ® 5 (LE) Built around ESP32S3 series of SoCs, Xtensa ® dualcore 32bit LX7 microprocessor Flash up to 8 MB, optional 2 MB PSRAM in chip package 39 GPIOs, rich set of peripherals Onboard PCB antenna or external antenna connector" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "ESP32-S3-MINI-1_0_0" + (text "ESP32-S3-MINI-1" (at -22.86 0 0) + (effects (font (size 2.54 2.54))) + ) + (pin power_in line (at 0 -40.64 90) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 5.08 180) (length 2.54) + (name "GPIO6/TOUCH6/ADC1_CH5" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 2.54 180) (length 2.54) + (name "GPIO7/TOUCH7/ADC1_CH6" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 0 180) (length 2.54) + (name "GPIO8/TOUCH8/ADC1_CH7/SUBSPICS1" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -2.54 180) (length 2.54) + (name "GPIO9/TOUCH9/ADC1_CH8/FSPIHD/SUBSPIHD" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -5.08 180) (length 2.54) + (name "GPIO10/TOUCH10/ADC1_CH9/FSPICS0/FSPIIO4/SUBSPICS0" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -7.62 180) (length 2.54) + (name "GPIO11/TOUCH11/ADC2_CH0/FSPID/FSPIIO5/SUBSPID" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -10.16 180) (length 2.54) + (name "GPIO12/TOUCH12/ADC2_CH1/FSPICLK/FSPIIO6/SUBSPICLK" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -12.7 180) (length 2.54) + (name "GPIO13/TOUCH13/ADC2_CH2/FSPIQ/FSPIIO7/SUBSPIQ" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -15.24 180) (length 2.54) + (name "GPIO14/TOUCH14/ADC2_CH3/FSPIWP/FSPIDQS/SUBSPIWP" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 30.48 0) (length 2.54) + (name "GPIO15/U0RTS/ADC2_CH4/XTAL_32K_P" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 27.94 0) (length 2.54) + (name "GPIO16/U0CTS/ADC2_CH5/XTAL_32K_N" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -17.78 180) (length 2.54) + (name "GPIO17/U1TXD/ADC2_CH6" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -20.32 180) (length 2.54) + (name "GPIO18/U1RXD/ADC2_CH7/CLK_OUT3" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 25.4 180) (length 2.54) + (name "GPIO19/U1RTS/ADC2_CH8/CLK_OUT2/USB_D-" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 27.94 180) (length 2.54) + (name "GPIO20/U1CTS/ADC2_CH9/CLK_OUT1/USB_D+" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -22.86 180) (length 2.54) + (name "GPIO21" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 -22.86 0) (length 2.54) + (name "GPIO26" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -33.02 180) (length 2.54) + (name "GPIO47/SPICLK_P/SUBSPICLK_P_DIFF" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 -25.4 0) (length 2.54) + (name "SPIIO4/GPIO33/FSPIHD/SUBSPIHD" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 -27.94 0) (length 2.54) + (name "SPIIO5/GPIO34/FSPICS0/SUBSPICS0" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 40.64 270) (length 2.54) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -35.56 180) (length 2.54) + (name "GPIO48/SPICLK_N/SUBSPICLK_N_DIFF" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 -30.48 0) (length 2.54) + (name "SPIIO6/GPIO35/FSPID/SUBSPID" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 -33.02 0) (length 2.54) + (name "SPIIO7/GPIO36/FSPICLK/SUBSPICLK" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 -35.56 0) (length 2.54) + (name "SPIDQS/GPIO37/FSPIQ/SUBSPIQ" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -25.4 180) (length 2.54) + (name "GPIO38/FSPIWP/SUBSPIWP" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 22.86 0) (length 2.54) + (name "MTCK/GPIO39/CLK_OUT3/SUBSPICS1" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 20.32 0) (length 2.54) + (name "MTDO/GPIO40/CLK_OUT2" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 17.78 0) (length 2.54) + (name "MTDI/GPIO41/CLK_OUT1" (effects (font (size 1.27 1.27)))) + (number "37" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -45.72 15.24 0) (length 2.54) + (name "MTMS/GPIO42" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 35.56 180) (length 2.54) + (name "U0TXD/GPIO43/CLK_OUT1" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 20.32 180) (length 2.54) + (name "GPIO0/BOOT" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 33.02 180) (length 2.54) + (name "U0RXD/GPIO44/CLK_OUT2" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -27.94 180) (length 2.54) + (name "GPIO45" (effects (font (size 1.27 1.27)))) + (number "41" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "42" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "43" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 -30.48 180) (length 2.54) + (name "GPIO46" (effects (font (size 1.27 1.27)))) + (number "44" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -45.72 35.56 0) (length 2.54) + (name "EN" (effects (font (size 1.27 1.27)))) + (number "45" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "46" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "47" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "48" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "49" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 17.78 180) (length 2.54) + (name "GPIO1/TOUCH1/ADC1_CH0" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "50" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "51" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "52" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "53" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "54" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "55" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "56" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "57" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "58" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "59" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 15.24 180) (length 2.54) + (name "GPIO2/TOUCH2/ADC1_CH1" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "60" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "61" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "62" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "63" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "64" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -40.64 90) (length 2.54) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "65" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 12.7 180) (length 2.54) + (name "GPIO3/TOUCH3/ADC1_CH2" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 10.16 180) (length 2.54) + (name "GPIO4/TOUCH4/ADC1_CH3" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 45.72 7.62 180) (length 2.54) + (name "GPIO5/TOUCH5/ADC1_CH4" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "ESP32-S3-MINI-1_0_1" + (rectangle (start -43.18 38.1) (end 43.18 -38.1) + (stroke (width 0) (type default)) + (fill (type background)) + ) + ) + ) + (symbol "power:+5V" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "global power" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+5V\"" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "+5V_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default)) + (fill (type none)) + ) + ) + (symbol "+5V_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "+5V" (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" (at 0 -6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 0 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "global power" (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" (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)) + (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 180.34 114.3) (diameter 0) (color 0 0 0 0) + (uuid 3bfdb1ec-edcb-46d3-8c71-4370a62545bd) + ) + (junction (at 209.55 99.06) (diameter 0) (color 0 0 0 0) + (uuid 4a0202a5-db6e-40d8-9897-0a35daa20a28) + ) + (junction (at 199.39 82.55) (diameter 0) (color 0 0 0 0) + (uuid 716ad079-aec0-46b8-9536-c9bdc7a78997) + ) + (junction (at 179.07 58.42) (diameter 0) (color 0 0 0 0) + (uuid 89659caf-3cab-4bad-86b0-ea9e6103e475) + ) + + (no_connect (at 217.17 60.96) (uuid 710d5b9f-e788-452d-80c8-8416ae9b1a59)) + (no_connect (at 217.17 116.84) (uuid c810e398-70ed-4e17-a01a-c86b42c30f05)) + + (wire (pts (xy 171.45 93.98) (xy 171.45 96.52)) + (stroke (width 0) (type default)) + (uuid 04615f79-9548-4b23-843c-a83109c26e84) + ) + (wire (pts (xy 170.18 38.1) (xy 207.01 38.1)) + (stroke (width 0) (type default)) + (uuid 069a4c6f-6508-4a4e-9c61-4eac6ec31c33) + ) + (wire (pts (xy 171.45 101.6) (xy 171.45 102.87)) + (stroke (width 0) (type default)) + (uuid 0a2c693a-f882-495b-abdd-c673f2caca75) + ) + (wire (pts (xy 170.18 41.91) (xy 170.18 38.1)) + (stroke (width 0) (type default)) + (uuid 0a4227fc-ce9e-46dd-b3aa-678a2ce9c376) + ) + (wire (pts (xy 180.34 114.3) (xy 180.34 116.84)) + (stroke (width 0) (type default)) + (uuid 0e91db55-19e0-45e5-afff-35562f36f5be) + ) + (wire (pts (xy 180.34 109.22) (xy 186.69 109.22)) + (stroke (width 0) (type default)) + (uuid 13612bfe-c462-467d-b9f2-5ca198437b52) + ) + (wire (pts (xy 207.01 93.98) (xy 171.45 93.98)) + (stroke (width 0) (type default)) + (uuid 1e4d722e-e17e-4736-8936-729902435cf5) + ) + (wire (pts (xy 176.53 58.42) (xy 179.07 58.42)) + (stroke (width 0) (type default)) + (uuid 23a91257-6e56-4d05-8003-1c598a7b119e) + ) + (wire (pts (xy 207.01 101.6) (xy 207.01 93.98)) + (stroke (width 0) (type default)) + (uuid 2e5d29d7-3bd9-4e7a-823b-2fa02c0ba118) + ) + (wire (pts (xy 186.69 58.42) (xy 179.07 58.42)) + (stroke (width 0) (type default)) + (uuid 30c30e00-ce4f-4305-8034-25058c3f011b) + ) + (wire (pts (xy 217.17 124.46) (xy 237.49 124.46)) + (stroke (width 0) (type default)) + (uuid 3789f96f-0d1f-45ca-bb07-6eb6214da5cd) + ) + (wire (pts (xy 185.42 71.12) (xy 186.69 71.12)) + (stroke (width 0) (type default)) + (uuid 3ced5253-82c7-4513-9296-34083c5a26e9) + ) + (wire (pts (xy 179.07 58.42) (xy 179.07 60.96)) + (stroke (width 0) (type default)) + (uuid 41123a4a-d8dd-4196-ba38-4e4de296fcf3) + ) + (wire (pts (xy 231.14 99.06) (xy 231.14 102.87)) + (stroke (width 0) (type default)) + (uuid 42792075-9fb1-4f77-a685-4528872a2823) + ) + (wire (pts (xy 163.83 55.88) (xy 186.69 55.88)) + (stroke (width 0) (type default)) + (uuid 42f208d4-8512-43cb-a7ae-8895e7a5133a) + ) + (wire (pts (xy 185.42 127) (xy 186.69 127)) + (stroke (width 0) (type default)) + (uuid 43603264-56ee-404a-8609-dcc59e7544e7) + ) + (wire (pts (xy 185.42 73.66) (xy 186.69 73.66)) + (stroke (width 0) (type default)) + (uuid 459a33de-8e49-48fc-ba36-58301338b1f5) + ) + (wire (pts (xy 199.39 81.28) (xy 199.39 82.55)) + (stroke (width 0) (type default)) + (uuid 4e609242-fc0f-4e28-92c9-bf1d80b0527f) + ) + (wire (pts (xy 217.17 66.04) (xy 237.49 66.04)) + (stroke (width 0) (type default)) + (uuid 4edd2859-420b-4ffd-849c-043a54741eea) + ) + (wire (pts (xy 186.69 114.3) (xy 180.34 114.3)) + (stroke (width 0) (type default)) + (uuid 5c9b4a7f-f8df-4206-8e16-73015dcee318) + ) + (wire (pts (xy 186.69 111.76) (xy 160.02 111.76)) + (stroke (width 0) (type default)) + (uuid 5cb7ba0f-428b-411d-8dbd-527376ab7c6a) + ) + (wire (pts (xy 217.17 68.58) (xy 237.49 68.58)) + (stroke (width 0) (type default)) + (uuid 615d80a4-55fb-4c3e-9211-ac6e927297e5) + ) + (wire (pts (xy 185.42 124.46) (xy 186.69 124.46)) + (stroke (width 0) (type default)) + (uuid 6185debd-3608-4b40-b3c2-866716d91489) + ) + (wire (pts (xy 201.93 81.28) (xy 201.93 82.55)) + (stroke (width 0) (type default)) + (uuid 6189ab43-75f8-4f95-bf38-5fb46d226e25) + ) + (wire (pts (xy 177.8 114.3) (xy 180.34 114.3)) + (stroke (width 0) (type default)) + (uuid 62bc8fe0-0b22-494b-a67a-1395079bef3c) + ) + (wire (pts (xy 163.83 63.5) (xy 163.83 64.77)) + (stroke (width 0) (type default)) + (uuid 630b0597-98ba-470e-b219-88024038aba2) + ) + (wire (pts (xy 209.55 97.79) (xy 209.55 99.06)) + (stroke (width 0) (type default)) + (uuid 632b9c17-8873-4fcd-b2d9-db9c524c4269) + ) + (wire (pts (xy 231.14 107.95) (xy 231.14 109.22)) + (stroke (width 0) (type default)) + (uuid 70ba9993-1077-4b0a-940e-cc3db3fb75df) + ) + (wire (pts (xy 217.17 73.66) (xy 237.49 73.66)) + (stroke (width 0) (type default)) + (uuid 79ae4dfb-47a7-4dd6-acea-2560c10325c5) + ) + (wire (pts (xy 209.55 99.06) (xy 209.55 101.6)) + (stroke (width 0) (type default)) + (uuid 7a6a87bf-0e9d-4e58-ab77-b1770cd9b041) + ) + (wire (pts (xy 185.42 121.92) (xy 186.69 121.92)) + (stroke (width 0) (type default)) + (uuid 7f221557-f4c7-40b8-b796-d0d268189e3a) + ) + (wire (pts (xy 217.17 71.12) (xy 237.49 71.12)) + (stroke (width 0) (type default)) + (uuid 8006bb52-a134-4f82-9a88-e9d4720b32d5) + ) + (wire (pts (xy 209.55 99.06) (xy 231.14 99.06)) + (stroke (width 0) (type default)) + (uuid 8a262b8c-8f96-43a0-b8af-4d5fd0f1d9dd) + ) + (wire (pts (xy 217.17 127) (xy 237.49 127)) + (stroke (width 0) (type default)) + (uuid 903cd0c8-adda-45d4-9b35-d47379e1899c) + ) + (wire (pts (xy 160.02 111.76) (xy 160.02 114.3)) + (stroke (width 0) (type default)) + (uuid 9c2d5df5-e5c9-4206-be8f-683b600afe94) + ) + (wire (pts (xy 160.02 121.92) (xy 160.02 124.46)) + (stroke (width 0) (type default)) + (uuid a290bb02-2429-4f40-9ef6-c7a1ffe1be1b) + ) + (wire (pts (xy 201.93 82.55) (xy 199.39 82.55)) + (stroke (width 0) (type default)) + (uuid abe21bcb-4bb5-4b24-aaca-14f570172e20) + ) + (wire (pts (xy 185.42 66.04) (xy 186.69 66.04)) + (stroke (width 0) (type default)) + (uuid ace99d40-c147-452c-81b0-e68307c9050b) + ) + (wire (pts (xy 217.17 129.54) (xy 237.49 129.54)) + (stroke (width 0) (type default)) + (uuid b18ace3d-5c39-4ec0-8365-0f88f84d00e7) + ) + (wire (pts (xy 217.17 121.92) (xy 237.49 121.92)) + (stroke (width 0) (type default)) + (uuid b405f51e-c27e-48b9-bf45-439e3080b3b1) + ) + (wire (pts (xy 179.07 60.96) (xy 186.69 60.96)) + (stroke (width 0) (type default)) + (uuid bea03343-b1db-4234-8c49-014efad67b9e) + ) + (wire (pts (xy 185.42 129.54) (xy 186.69 129.54)) + (stroke (width 0) (type default)) + (uuid c826c6f7-6edb-465a-8709-92823f9b53e1) + ) + (wire (pts (xy 207.01 38.1) (xy 207.01 45.72)) + (stroke (width 0) (type default)) + (uuid d2b7cd00-c2a9-475f-b188-ec8abe411ca6) + ) + (wire (pts (xy 199.39 82.55) (xy 199.39 85.09)) + (stroke (width 0) (type default)) + (uuid d78d41d0-b59d-4a0a-8c7f-9fb58d52f6a5) + ) + (wire (pts (xy 76.2 110.49) (xy 76.2 114.3)) + (stroke (width 0) (type default)) + (uuid ef1f2d98-62dc-4109-ab7e-bcaf15e13b5a) + ) + (wire (pts (xy 180.34 116.84) (xy 186.69 116.84)) + (stroke (width 0) (type default)) + (uuid ef4a7645-8458-4a9f-8530-77d24f5988d3) + ) + (wire (pts (xy 185.42 68.58) (xy 186.69 68.58)) + (stroke (width 0) (type default)) + (uuid f200fa4e-da40-4f9d-97dc-8f44c3c710b0) + ) + (wire (pts (xy 179.07 53.34) (xy 186.69 53.34)) + (stroke (width 0) (type default)) + (uuid f7e82c35-55ff-4913-b19f-b4ce09acb6c7) + ) + + (label "nSleep" (at 179.07 53.34 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 89f26cc8-cca2-4475-918e-4205d7d8fb2d) + ) + (label "nSleep" (at 180.34 109.22 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid e1cc49ee-5d78-4813-bedb-640d5b86c8eb) + ) + + (global_label "DRV2_BIN1" (shape input) (at 185.42 127 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0f977c9a-8dea-4b87-bb05-938ed09195d4) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.2937 127 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "DRV2_AIN1" (shape input) (at 185.42 121.92 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 241dc97c-cad9-484b-984b-4fc454f91e1c) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.4751 121.92 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "DRV1_BIN2" (shape input) (at 185.42 73.66 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 246ff61a-e9fa-4b99-a605-d659941be610) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.2937 73.66 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "DRV2_BIN2" (shape input) (at 185.42 129.54 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 39abbf6a-280d-438c-99a2-c55abfcf9f97) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.2937 129.54 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "DRV1_AIN1" (shape input) (at 185.42 66.04 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 84251544-579a-4980-8325-1956fd2a63ad) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.4751 66.04 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "DRV1_BIN1" (shape input) (at 185.42 71.12 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 84ab2d67-860a-4fb3-a056-55fdba2016a2) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.2937 71.12 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "DRV2_AIN2" (shape input) (at 185.42 124.46 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8dcf6342-93b2-4473-81ff-1f0103dc3a94) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.4751 124.46 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "DRV1_AIN2" (shape input) (at 185.42 68.58 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid a545ed2b-5ed8-4c4c-97d3-4c322b8c7422) + (property "Intersheetrefs" "${INTERSHEET_REFS}" (at 172.4751 68.58 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + + (symbol (lib_id "Driver_Motor:DRV8833RTY") (at 201.93 119.38 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 03029717-dbc3-4ee0-bb48-8beaea83cdbd) + (property "Reference" "U2" (at 211.5059 102.87 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "DRV8833RTY" (at 211.5059 105.41 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_DFN_QFN:Texas_S-PWQFN-N16_EP2.1x2.1mm_ThermalVias" (at 213.36 107.95 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/drv8833.pdf" (at 198.12 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ef47246d-dd30-4215-a496-e9eafaaba63d)) + (pin "10" (uuid 03a91b72-8cfb-46bd-a814-6b79c8a97cf9)) + (pin "11" (uuid 59449ab7-a839-4abe-b49a-9ea18823cf02)) + (pin "12" (uuid daea268d-0d19-47a4-9e5b-d8e88df3b3b5)) + (pin "13" (uuid a7141f40-c172-455a-ac2a-757c3161914f)) + (pin "14" (uuid 311efc3f-2c2c-4ce2-a5fa-a16f37ff91f1)) + (pin "15" (uuid f575f77b-3730-48a6-8456-8b1aeeeabb61)) + (pin "16" (uuid 1d1605e8-62fd-4bb2-8e1e-8b74e45488da)) + (pin "17" (uuid 16a5f89a-61cf-4ce1-ad0f-d4180c85b3b2)) + (pin "2" (uuid 231237b8-4402-4b91-bc0b-e10cd7f450b4)) + (pin "3" (uuid 6f4a68e9-3995-490d-9d17-1802df264ae6)) + (pin "4" (uuid c8e0d7a6-40a8-4e71-b686-29c90e71da87)) + (pin "5" (uuid edff2fe6-615a-454a-94a8-ccd1dba55996)) + (pin "6" (uuid 6841c171-18da-4236-9c48-4990d37ce35c)) + (pin "7" (uuid 4fc76787-bb50-4394-9884-09b3eb585742)) + (pin "8" (uuid bca96769-00f9-4e6f-b77f-537f67b29216)) + (pin "9" (uuid f60a672f-5a8f-4433-bf5f-3fea91967ee8)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "U2") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 76.2 114.3 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 037a06b4-22eb-4768-9af9-fb7da864d7f5) + (property "Reference" "#PWR011" (at 76.2 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 76.2 119.38 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 76.2 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 76.2 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c4ef659e-5252-42e8-9c76-53618fe69d36)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR011") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:C_Polarized_Small") (at 171.45 99.06 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) + (uuid 04aff9c9-74dd-416a-bcfb-220e8e4699c9) + (property "Reference" "C1" (at 173.99 100.33 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "2u2F" (at 173.99 97.79 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 171.45 99.06 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 171.45 99.06 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8ae3924b-dec0-4c23-8508-e00c69e39e4b)) + (pin "2" (uuid 94280989-52c0-44ec-8831-2797b190293d)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "C1") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Connector:Screw_Terminal_01x02") (at 242.57 127 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 06b132a4-be44-4fe8-9907-c9d48d7094a4) + (property "Reference" "M4" (at 245.11 127.635 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Screw_Terminal_01x02" (at 245.11 130.175 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 242.57 127 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 242.57 127 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6918f00e-284a-4d12-bd14-b874bfbbf95f)) + (pin "2" (uuid eabd831f-9d32-40f4-97cd-9920c5a0517b)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "M4") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:C") (at 160.02 118.11 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 1eff11ea-256a-4e8e-8016-1db19ad810b8) + (property "Reference" "C5" (at 163.83 117.475 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "2u2F" (at 163.83 120.015 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 160.9852 121.92 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 160.02 118.11 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f34926d4-083d-4d50-80b5-11e1f5f325b6)) + (pin "2" (uuid 759bdeef-3b90-4464-8d4c-e3779403a004)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "C5") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Connector:Screw_Terminal_01x02") (at 242.57 121.92 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 1f68b5ed-bea6-4893-bb22-be5d37b78d7d) + (property "Reference" "M3" (at 245.11 122.555 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Screw_Terminal_01x02" (at 245.11 125.095 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 242.57 121.92 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 242.57 121.92 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 80732d0a-1521-466b-b712-cde219839f47)) + (pin "2" (uuid 8bb1c4c4-9eee-48d5-baf4-4090af5beca5)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "M3") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 171.45 102.87 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 26899f19-0636-47bb-be7f-3156348aff31) + (property "Reference" "#PWR04" (at 171.45 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 171.45 107.95 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 171.45 102.87 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 171.45 102.87 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 3bb56e37-0d10-41e4-86f6-ec1e3539706b)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR04") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Connector:Screw_Terminal_01x02") (at 242.57 71.12 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 2a895c35-c3c1-4efb-a0d2-81ad8df982eb) + (property "Reference" "M2" (at 245.11 71.755 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Screw_Terminal_01x02" (at 245.11 74.295 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 242.57 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 242.57 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 3e052b7d-52c0-4879-9046-d041e0c91f94)) + (pin "2" (uuid f30b79ff-057c-4fa8-8206-15579c59f0d7)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "M2") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:+5V") (at 209.55 97.79 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 2b5b88e8-7c90-422d-bd44-317a7a6800b6) + (property "Reference" "#PWR02" (at 209.55 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (at 209.55 93.98 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 209.55 97.79 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 209.55 97.79 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7e81a084-6a86-4f63-839e-f1681d7bdb13)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR02") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Driver_Motor:DRV8833RTY") (at 201.93 63.5 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 38cfc462-e90c-42fe-ac4f-67e6a3267869) + (property "Reference" "U1" (at 211.5059 46.99 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "DRV8833RTY" (at 211.5059 49.53 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_DFN_QFN:Texas_S-PWQFN-N16_EP2.1x2.1mm_ThermalVias" (at 213.36 52.07 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/drv8833.pdf" (at 198.12 49.53 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 845ea093-a3c1-4234-89e3-c8fa36bc609d)) + (pin "10" (uuid 0887e37e-3263-49b9-a0db-348a71eaaac0)) + (pin "11" (uuid d729d5d6-8c2a-4f4e-92b2-34a5f6149df2)) + (pin "12" (uuid 9dc7c1fa-af2e-4174-988d-6d08114ea0e3)) + (pin "13" (uuid 7291fd2d-bce1-4697-9be3-ffefee4ca673)) + (pin "14" (uuid 79dd516f-815d-4d39-abd8-2a9ef4928ed2)) + (pin "15" (uuid ea21313d-edf4-4528-9fc7-bd73d7528241)) + (pin "16" (uuid e1110678-cf5a-4be1-a241-a7b5b339d094)) + (pin "17" (uuid 3627d3e8-aa39-48a7-ba08-9cc127a77a35)) + (pin "2" (uuid 29919d38-3647-4f80-b5d4-8531b2711c54)) + (pin "3" (uuid 507d0db1-9459-4f5c-85c4-ae8f2518479d)) + (pin "4" (uuid 4fd7b76b-7b3f-4cc2-823a-db594d91cb7f)) + (pin "5" (uuid 9fb582d4-15e4-4c4a-8a39-579b5ca64c1c)) + (pin "6" (uuid e770fc2c-318d-4c37-9f2f-3a5fa592bb7d)) + (pin "7" (uuid 2953f82c-d6e3-4dd9-9075-9e26e7790724)) + (pin "8" (uuid 7403b8a8-c314-4e75-9088-56273aa2d9e5)) + (pin "9" (uuid 8efcb264-821a-43f7-a023-02a8f6163178)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "U1") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 177.8 114.3 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) + (uuid 448fe01c-eb0e-432a-9012-7836fbd18c3a) + (property "Reference" "#PWR010" (at 177.8 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 177.8 118.11 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 177.8 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 177.8 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2cfbfb9e-334a-490d-afea-7f1fadbca919)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR010") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Connector:Screw_Terminal_01x02") (at 242.57 66.04 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 533232d0-962b-4c3c-b170-90ee1210393c) + (property "Reference" "M1" (at 245.11 66.675 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Screw_Terminal_01x02" (at 245.11 69.215 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 242.57 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 242.57 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0e8781a5-0fd9-46ac-8f65-b0c911798783)) + (pin "2" (uuid cbf2a85d-9b6c-4f52-8259-01ba93fa1c5c)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "M1") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:+5V") (at 209.55 45.72 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 56f8c302-1762-4e3a-bd5a-25ec57a9520f) + (property "Reference" "#PWR01" (at 209.55 49.53 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (at 209.55 41.91 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 209.55 45.72 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 209.55 45.72 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 634d4e4e-9b72-47da-a632-517a786dd000)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR01") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 170.18 46.99 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 5bc9d096-cf1d-4df4-9076-7f7a8f2e0708) + (property "Reference" "#PWR03" (at 170.18 53.34 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 170.18 52.07 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 170.18 46.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 170.18 46.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 960d24aa-8ab0-46de-860b-f27a30737440)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR03") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:C_Polarized_Small") (at 231.14 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) + (uuid 5fc245a3-ece7-48ef-b881-f65273235699) + (property "Reference" "C3" (at 233.68 106.68 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "10uF" (at 233.68 104.14 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 231.14 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 231.14 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b2c7072a-bb60-424c-9642-3303cac17feb)) + (pin "2" (uuid e4c77a10-c27b-4a7f-bed3-d26753ed7037)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "C3") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:C_Polarized_Small") (at 170.18 44.45 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) + (uuid 62600ee8-aa1b-4820-b422-861aded75413) + (property "Reference" "C2" (at 172.72 43.2689 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "2u2F" (at 172.72 45.8089 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 170.18 44.45 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 170.18 44.45 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6a98c37b-f64d-42da-b224-a3992fb7bcae)) + (pin "2" (uuid 1a6baa04-3a88-47e9-a820-bdca5d843c5b)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "C2") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 176.53 58.42 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) + (uuid 656c5b50-e27a-436a-ad19-23e556b752e1) + (property "Reference" "#PWR09" (at 176.53 64.77 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 176.53 62.23 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 176.53 58.42 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 176.53 58.42 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 68481e8f-2dac-4796-843e-5eb7fab3609a)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR09") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 231.14 109.22 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 8b02ff33-3cc6-4662-aaae-3a8306ee4544) + (property "Reference" "#PWR05" (at 231.14 115.57 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 231.14 114.3 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 231.14 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 231.14 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1a4b1b4a-fbf9-4426-8eff-2b558bf5485b)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR05") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 160.02 124.46 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid dd095d08-157f-4f1e-926d-f4c1a6948d48) + (property "Reference" "#PWR08" (at 160.02 130.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 160.02 129.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 160.02 124.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 160.02 124.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ed96e28e-059e-44fe-9b69-3de0f8146637)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR08") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:C") (at 163.83 59.69 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid de53eec1-a1fb-4783-9855-5ecacf8187b4) + (property "Reference" "C4" (at 167.64 59.055 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "2u2F" (at 167.64 61.595 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (at 164.7952 63.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 163.83 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7420ecb2-d655-4b5c-b103-9241f0a4d623)) + (pin "2" (uuid 0e0352e3-f5c1-425b-bf60-cfef5555a0b5)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "C4") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 163.83 64.77 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid debcea3a-6552-48eb-bede-63de182c3c47) + (property "Reference" "#PWR07" (at 163.83 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 163.83 69.85 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 163.83 64.77 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 163.83 64.77 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c8d6e7b4-308f-4e61-b347-b7a6659b6027)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR07") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Espressif:ESP32-S3-MINI-1") (at 76.2 69.85 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid e2eb9b68-25e1-48db-996f-ba980552ca54) + (property "Reference" "U3" (at 78.1559 27.94 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "ESP32-S3-MINI-1" (at 78.1559 30.48 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Espressif:ESP32-S3-MINI-1" (at 76.2 125.73 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-s3-mini-1_mini-1u_datasheet_en.pdf" (at 76.2 128.27 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 83f85330-e2a2-4cd3-9b25-be4b600bb362)) + (pin "10" (uuid 08abe637-40b0-4a11-bc71-c2fc3f529254)) + (pin "11" (uuid 9f47d561-ccfa-4a3f-89d0-87df3ca42cce)) + (pin "12" (uuid e207dc16-945f-417e-a619-de1bc3bbf491)) + (pin "13" (uuid 172f723b-dfd1-4b90-b371-601e97107088)) + (pin "14" (uuid dafe2ce4-5f37-41ab-b29c-0cfa2a42f58d)) + (pin "15" (uuid aaf2a74d-4d2b-42fb-9d04-be8dd49d414b)) + (pin "16" (uuid 6c5ecc54-7dab-431c-bd2f-b49da18b7bef)) + (pin "17" (uuid b4961e4d-28b4-483b-966b-08ecfeddaf6d)) + (pin "18" (uuid d98d9aba-b509-4daf-88b4-81bcb327760d)) + (pin "19" (uuid f2fa8871-6b24-412f-b971-4137d1b14648)) + (pin "2" (uuid 5d937bba-4349-43c7-960f-119d9b44200a)) + (pin "20" (uuid 883a2b5f-ba5f-4e40-8ed7-c301fe72f4ef)) + (pin "21" (uuid 66c6043c-82c6-4816-843d-4f284299f2ff)) + (pin "22" (uuid fd4d5f75-28be-406f-9a2e-9f9b4e9a40d5)) + (pin "23" (uuid 7bcbbfec-1d93-4e2e-9f9b-4026c6c2befd)) + (pin "24" (uuid b219299f-9ed9-439b-82cb-59594acdc482)) + (pin "25" (uuid a2242491-3817-460d-8755-77e90376104f)) + (pin "26" (uuid f683081f-125d-4789-839d-3f17524677d1)) + (pin "27" (uuid a003b431-f60a-4f6e-8fb1-a4d87575e07a)) + (pin "28" (uuid 1ae7c31c-5fd9-4574-a7e3-b6fff85f9801)) + (pin "29" (uuid 95903d7c-019d-4b47-9b79-aac53922d18d)) + (pin "3" (uuid 48297308-9ba0-4993-9e35-d75545b25b82)) + (pin "30" (uuid abe1ee0d-2986-4d2f-98fa-9e74323b76aa)) + (pin "31" (uuid 5b7a74cd-ce0d-4bf1-bcf8-e670155196ad)) + (pin "32" (uuid 639b520f-ca09-4a73-a871-0aa1f0f180c8)) + (pin "33" (uuid ebd6fea6-bcaf-4c93-811a-2fbccfb869d1)) + (pin "34" (uuid 997013eb-2e8f-469f-9e5b-be48adf52246)) + (pin "35" (uuid 241754cb-5042-4b0b-9a3f-cbcd13023fd2)) + (pin "36" (uuid 0f8d4745-b871-4a84-8cdd-aa8319f305f1)) + (pin "37" (uuid 27e9a0c0-ff9e-4188-bdf2-f543f04daa71)) + (pin "38" (uuid 03db0034-5baf-44f0-a286-d5dd73ac462b)) + (pin "39" (uuid 98e54adb-1d76-4f56-ac7c-0fd7e9ec1645)) + (pin "4" (uuid 8fe39d1c-32a0-4116-904a-70836269a49b)) + (pin "40" (uuid fff0cdd9-5281-483d-8e5c-a8f52d7b866c)) + (pin "41" (uuid a270e526-be9c-4a8d-beda-251c882895a7)) + (pin "42" (uuid 6f471779-c3f4-438e-8ce5-3dd11c550319)) + (pin "43" (uuid b671f9cd-c8c4-4e82-8578-eacfea957f66)) + (pin "44" (uuid d2cf5031-8359-41e9-98d9-38883a9b1aec)) + (pin "45" (uuid 2f615b90-db38-443f-932d-da63a122c02a)) + (pin "46" (uuid 05faca60-8843-42fc-92b8-02ecb5572997)) + (pin "47" (uuid 2d463487-3a8a-420a-9e2d-c9caae658fda)) + (pin "48" (uuid 6d7346d0-ccab-40da-8281-68a4a2fd5a56)) + (pin "49" (uuid e9b7acc3-34d8-419a-9f1b-538a13134875)) + (pin "5" (uuid ca64fa76-5d6d-46d4-9a7b-0a23791867d2)) + (pin "50" (uuid e0dff76d-c9bf-43d0-a514-f6706017f036)) + (pin "51" (uuid 807d0266-6097-4c7d-a9fe-5f8c2573b4f5)) + (pin "52" (uuid 8ee39a8e-cf1c-42e2-9991-d4bcc13898e2)) + (pin "53" (uuid f31b4670-697d-4dc7-9385-56bb58935553)) + (pin "54" (uuid 6b8d546a-c80c-4712-b182-b5d791b2638e)) + (pin "55" (uuid 3dc515cc-6efd-481b-b869-61fdf15527cf)) + (pin "56" (uuid 0fc51293-ee7a-4cc8-a166-89dd08ce754f)) + (pin "57" (uuid aa64b2dd-26e9-48ca-8c9f-3f59d7cbb520)) + (pin "58" (uuid f20ad7a3-5666-4862-aada-e46662fbc09e)) + (pin "59" (uuid 23d4abd5-1df6-4236-9edb-408b4916f7e6)) + (pin "6" (uuid 57c11835-062b-4bf3-8ea5-f0f96f5a1b23)) + (pin "60" (uuid bf5939ac-4e05-4e95-9cd5-6229e70f20dc)) + (pin "61" (uuid b1eb1ea7-1a63-446b-bec3-97de3e02d7d8)) + (pin "62" (uuid a5c549db-cc91-47cf-a195-b4f6df037286)) + (pin "63" (uuid b17897c0-00bc-4a8e-9d99-cfe48c10d065)) + (pin "64" (uuid 0f4a75c2-315b-423d-a006-4402c0e95713)) + (pin "65" (uuid ae7c424e-0ad2-41c9-a4fb-9872e79d5ad4)) + (pin "7" (uuid f06d88fd-5899-482b-8d0c-9e079ca3a298)) + (pin "8" (uuid 8af89363-0161-41ac-8640-166668032dd5)) + (pin "9" (uuid 6ad8ca70-a76f-4606-a11d-37b9b58049d7)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "U3") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "power:GND") (at 199.39 85.09 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid e9e12a56-feca-4e18-9c3e-f3a109a99f52) + (property "Reference" "#PWR06" (at 199.39 91.44 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 199.39 90.17 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at 199.39 85.09 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 199.39 85.09 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 9302edbf-c5d7-4024-b331-42ffc73adb1a)) + (instances + (project "miniskidi" + (path "/1b5c276f-c8a9-496b-981d-1974f4678c8d" + (reference "#PWR06") (unit 1) + ) + ) + ) + ) + + (sheet_instances + (path "/" (page "1")) + ) +)