From a5d4d1ab22e66f97e8141c2bfcc6f87257937a5a Mon Sep 17 00:00:00 2001 From: Fisch Date: Thu, 14 Jul 2022 17:09:36 +0200 Subject: [PATCH] remove old folder --- controller_pio/.gitignore | 6 - controller_pio/.travis.yml | 67 -- controller_pio/.vscode/extensions.json | 10 - controller_pio/include/README | 39 - controller_pio/lib/README | 46 -- controller_pio/platformio.ini | 30 - controller_pio/src/main.cpp | 768 ------------------ controller_pio/test/README | 11 - hardware/controller/controller.kicad_sch | 954 ++++++++++++++++++++++- 9 files changed, 951 insertions(+), 980 deletions(-) delete mode 100644 controller_pio/.gitignore delete mode 100644 controller_pio/.travis.yml delete mode 100644 controller_pio/.vscode/extensions.json delete mode 100644 controller_pio/include/README delete mode 100644 controller_pio/lib/README delete mode 100644 controller_pio/platformio.ini delete mode 100644 controller_pio/src/main.cpp delete mode 100644 controller_pio/test/README diff --git a/controller_pio/.gitignore b/controller_pio/.gitignore deleted file mode 100644 index d2edddf..0000000 --- a/controller_pio/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.pio -.vscode/.browse.c_cpp.db* -.vscode/c_cpp_properties.json -.vscode/launch.json -.vscode/ipch - diff --git a/controller_pio/.travis.yml b/controller_pio/.travis.yml deleted file mode 100644 index 7c486f1..0000000 --- a/controller_pio/.travis.yml +++ /dev/null @@ -1,67 +0,0 @@ -# Continuous Integration (CI) is the practice, in software -# engineering, of merging all developer working copies with a shared mainline -# several times a day < https://docs.platformio.org/page/ci/index.html > -# -# Documentation: -# -# * Travis CI Embedded Builds with PlatformIO -# < https://docs.travis-ci.com/user/integration/platformio/ > -# -# * PlatformIO integration with Travis CI -# < https://docs.platformio.org/page/ci/travis.html > -# -# * User Guide for `platformio ci` command -# < https://docs.platformio.org/page/userguide/cmd_ci.html > -# -# -# Please choose one of the following templates (proposed below) and uncomment -# it (remove "# " before each line) or use own configuration according to the -# Travis CI documentation (see above). -# - - -# -# Template #1: General project. Test it using existing `platformio.ini`. -# - -# language: python -# python: -# - "2.7" -# -# sudo: false -# cache: -# directories: -# - "~/.platformio" -# -# install: -# - pip install -U platformio -# - platformio update -# -# script: -# - platformio run - - -# -# Template #2: The project is intended to be used as a library with examples. -# - -# language: python -# python: -# - "2.7" -# -# sudo: false -# cache: -# directories: -# - "~/.platformio" -# -# env: -# - PLATFORMIO_CI_SRC=path/to/test/file.c -# - PLATFORMIO_CI_SRC=examples/file.ino -# - PLATFORMIO_CI_SRC=path/to/test/directory -# -# install: -# - pip install -U platformio -# - platformio update -# -# script: -# - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N diff --git a/controller_pio/.vscode/extensions.json b/controller_pio/.vscode/extensions.json deleted file mode 100644 index 080e70d..0000000 --- a/controller_pio/.vscode/extensions.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - // See http://go.microsoft.com/fwlink/?LinkId=827846 - // for the documentation about the extensions.json format - "recommendations": [ - "platformio.platformio-ide" - ], - "unwantedRecommendations": [ - "ms-vscode.cpptools-extension-pack" - ] -} diff --git a/controller_pio/include/README b/controller_pio/include/README deleted file mode 100644 index 194dcd4..0000000 --- a/controller_pio/include/README +++ /dev/null @@ -1,39 +0,0 @@ - -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/controller_pio/lib/README b/controller_pio/lib/README deleted file mode 100644 index 6debab1..0000000 --- a/controller_pio/lib/README +++ /dev/null @@ -1,46 +0,0 @@ - -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/controller_pio/platformio.ini b/controller_pio/platformio.ini deleted file mode 100644 index 983eac4..0000000 --- a/controller_pio/platformio.ini +++ /dev/null @@ -1,30 +0,0 @@ -; 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 - -;RF24@>=1.3.4 <- vorher benutzt - -[env:genericSTM32F103C8] -platform = ststm32 -board = genericSTM32F103C8 -framework = arduino - -upload_protocol = serial - -monitor_speed = 115200 - -build_flags = - -D HAVE_HWSERIAL1 - -D HAVE_HWSERIAL3 - -lib_deps = - https://github.com/maniacbug/RF24 - - - \ No newline at end of file diff --git a/controller_pio/src/main.cpp b/controller_pio/src/main.cpp deleted file mode 100644 index d8888b1..0000000 --- a/controller_pio/src/main.cpp +++ /dev/null @@ -1,768 +0,0 @@ -#include - - -//Arduino IDE Settings: -//https://github.com/rogerclarkmelbourne/Arduino_STM32 in arduino/hardware -//Board: Generic STM32F103C series -//Upload method: serial -//20k RAM 64k Flash - -// RX ist A10, TX ist A9 (3v3 level) -//to flash set boot0 (the one further away from reset button) to 1 and press reset, flash, program executes immediately -//set boot0 back to 0 to run program on powerup - -//Flashing the hoverbrett controller (bluepill): -/* - * connect uart adapter to serial port cable (the one with more red heatshrink) - * (disconnect xt30 power connector) - * set jumper on usb uart adapter to output 5V - * hold boot0 button (black, the outermost) while powering up (or restarting with small button next to it) - * flash - */ - -//PA2 may be defective on my bluepill - -#define SERIAL_CONTROL_BAUD 115200 // [-] Baud rate for HoverSerial (used to communicate with the hoverboard) -#define SERIAL_BAUD 115200 // [-] Baud rate for built-in Serial (used for the Serial Monitor) -#define START_FRAME 0xABCD // [-] Start frme definition for reliable serial communication - -//#define DEBUG -//#define PARAMETEROUTPUT - -//void ReceiveSerial2(); -//void SendSerial2(int16_t uSpeedLeft, int16_t uSpeedRight); - -// Structs for serial communication -typedef struct{ - uint8_t idx = 0; // Index for new data pointer - uint16_t bufStartFrame; // Buffer Start Frame - byte *p; // Pointer declaration for the new received data - byte incomingByte; - byte incomingBytePrev; - long lastValidDataSerial_time; -} SerialRead; -SerialRead Serialcom; - -typedef struct{ - uint16_t start; - int16_t speedLeft; - int16_t speedRight; - uint16_t checksum; -} SerialCommand; -SerialCommand Command; - -typedef struct{ //match this struct to hoverboard-firmware SerialFeedback struct in main.c - uint16_t start; - int16_t cmd1; - int16_t cmd2; - int16_t speedL_meas; //left speed is positive when driving forward - int16_t speedR_meas; //right speed is negatie when driving forward - int16_t batVoltage; - int16_t boardTemp; - int16_t curL_DC; //negative values are current consumed. positive values mean generated current - int16_t curR_DC; - uint16_t cmdLed; - uint16_t checksum; -} SerialFeedback; -SerialFeedback FeedbackESC; -SerialFeedback NewFeedbackESC; - -void SendSerial(SerialCommand &scom, int16_t uSpeedLeft, int16_t uSpeedRight, HardwareSerial &SerialRef); -bool ReceiveSerial(SerialRead &sread, SerialFeedback &Feedback,SerialFeedback &NewFeedback, HardwareSerial &SerialRef); - -uint8_t error = 0; -#define IMU_NO_CHANGE 2 //IMU values did not change for too long -uint8_t imu_no_change_counter = 0; - -#define PIN_LED PC13 - -#define PIN_VBAT PA0 //battery voltage after voltage divider -//#define VBAT_DIV_FACTOR 0.010700 //how much voltage (V) equals one adc unit. measured at 40V and averaged -#define VBAT_DIV_FACTOR 0.01399535423925667828 //how much voltage (V) equals one adc unit. 3444=48.2V -#define PIN_CURRENT PA1 //output of hall sensor for current measurement -#define CURRENT_OFFSET 2048 //adc reading at 0A, with CJMCU-758 typically at Vcc/2. measured with actual voltage supply in hoverbrett -#define CURRENT_FACTOR 0.38461538461538461538 //how much current (A) equals one adc unit. 2045-2032=13 at 5A -float vbat=0; //battery voltage -float ibat=0; //battery current -long last_adcupdated=0; -#define ADC_UPDATEPERIOD 10 //in ms - - -#define SENDPERIOD 20 //ms. delay for sending speed and steer data to motor controller via serial - -//Status information sending -#define PARAMETERSENDPERIOD 50 //delay for sending stat data via nrf24 -long last_parametersend=0; - -#define CONTROLUPDATEPERIOD 10 -long last_controlupdate = 0; - -#define PIN_GAMETRAK_LENGTH PA1 //yellow (connector) / orange (gametrak module wires): length -#define PIN_GAMETRAK_VERTICAL PA3 //orange / red: vertical -#define PIN_GAMETRAK_HORIZONTAL PA4 //blue / yellow: horizontal - - -#define GT_LENGTH_OFFSET 4090 //adc offset value (rolled up value) -#define GT_LENGTH_MIN 220 //length in mm at which adc values start to change -#define GT_LENGTH_SCALE -0.73 //(offset-adcvalue)*scale = length[mm] (+length_min) -//2720 at 1000mm+220mm -> 1370 for 1000mm -> -#define GT_LENGTH_MAXLENGTH 2500 //maximum length in [mm]. maximum string length is around 2m80 -uint16_t gt_length=0; //0=rolled up, 1unit = 1mm - -#define GT_VERTICAL_CENTER 2048 //adc value for center position -#define GT_VERTICAL_RANGE 2047 //adc value difference from center to maximum (30 deg) -int8_t gt_vertical=0; //0=center. joystick can rotate +-30 degrees. -127 = -30 deg -//left = -30 deg, right= 30deg - -#define GT_HORIZONTAL_CENTER 2048 //adc value for center position -#define GT_HORIZONTAL_RANGE 2047 //adc value difference from center to maximum (30 deg) -int8_t gt_horizontal=0; //0=center - -uint16_t gt_length_set=1000; //set length to keep [mm] -#define GT_LENGTH_MINDIFF 10 //[mm] threshold, do not move within gt_length_set-GT_LENGTH_MINDIFF and gt_length_set+GT_LENGTH_MINDIFF -float gt_speed_p=0.7; //value to multipy difference [mm] with -> out_speed -float gt_speedbackward_p=0.7; -float gt_steer_p=2.0; -#define GT_SPEED_LIMIT 300 //maximum out_speed value + -#define GT_SPEEDBACKWARD_LIMIT 100//maximum out_speed value (for backward driving) - -#define GT_STEER_LIMIT 300 //maximum out_steer value +- -#define GT_LENGTH_MAXIMUMDIFFBACKWARD -200 //[mm]. if gt_length_set=1000 and GT_LENGTH_MAXIMUMDIFFBACKWARD=-200 then only drives backward if lenght is greater 800 - - -//#include -//https://github.com/fookingthg/GY85 -//ITG3200 and ADXL345 from https://github.com/jrowberg/i2cdevlib/tree/master/Arduino -//https://github.com/mechasolution/Mecha_QMC5883L //because QMC5883 on GY85 instead of HMC5883, source: https://circuitdigest.com/microcontroller-projects/digital-compass-with-arduino-and-hmc5883l-magnetometer -//in qmc5883L library read values changed from uint16_t to int16_t - -#define IMUUPDATEPERIOD 10 //ms -//long last_imuupdated = 0; -//#define MAX_YAWCHANGE 90 //in degrees, if exceeded in one update intervall error will be triggered - -/* -IMUGY85 imu; -double ax, ay, az, gx, gy, gz, roll, pitch, yaw, mx, my, mz, ma; -double old_ax, old_ay, old_az, old_gx, old_gy, old_gz, old_roll, old_pitch, old_yaw, old_mx, old_my, old_mz, old_ma; - -double setYaw = 0; -float magalign_multiplier = 0; //how much the magnetometer should influence steering, 0=none, 1=stay aligned -*/ - -// Lenovo Trackpoint pinout -//from left to right. pins at bottom. chips on top -//1 GND (black) -//2 Data -//3 Clock -//4 Reset -//5 +5V (red) -//6 Right BTN -//7 Middle BTN -//8 Left BTN -//pinout: https://martin-prochnow.de/projects/thinkpad_keyboard -//see also https://github.com/feklee/usb-trackpoint/blob/master/code/code.ino - -#include -#include "nRF24L01.h" -#include "RF24.h" - -RF24 radio(PB0, PB1); //ce, cs -//SCK D13 (Pro mini), A5 (bluepill) -//Miso D12 (Pro mini), A6 (bluepill) -//Mosi D11 (Pro mini), A7 (bluepill) - -// Radio pipe addresses for the 2 nodes to communicate. -const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; -#define NRF24CHANNEL 75 - -struct nrfdata { - uint8_t steer; - uint8_t speed; - uint8_t commands; //bit 0 set = motor enable - uint8_t checksum; -}; - -nrfdata lastnrfdata; -long last_nrfreceive = 0; //last time values were received and checksum ok -long nrf_delay = 0; -#define MAX_NRFDELAY 100 //ms. maximum time delay at which vehicle will disarm - -boolean radiosendOk=false; - - -//command variables -boolean motorenabled = false; //set by nrfdata.commands - - - - -long last_send = 0; - -int16_t out_speedl = 0; //between -1000 and 1000 -int16_t out_speedr = 0; -int16_t lastsend_out_speedl = 0; //last value transmitted to motor controller -int16_t lastsend_out_speedr = 0; -int16_t set_speed = 0; -int16_t set_steer = 0; -uint8_t out_checksum = 0; //0= disable motors, 255=reserved, 1<=checksum<255 -#define NRFDATA_CENTER 127 - -//boolean armed = false; -boolean lastpacketOK = false; - -//Gametrak -//boolean armed_gt = false; - -uint8_t controlmode=0; -#define MODE_DISARMED 0 -#define MODE_RADIONRF 1 -#define MODE_GAMETRAK 2 - - - -// Global variables -/* -uint8_t idx = 0; // Index for new data pointer -uint16_t bufStartFrame; // Buffer Start Frame -byte *p; // Pointer declaration for the new received data -byte incomingByte; -byte incomingBytePrev; -*/ - - - - -void setup() { - - Serial1.begin(SERIAL_BAUD); //Debug and Program. A9=TX1, A10=RX1 (3v3 level) - - - Serial3.begin(SERIAL_CONTROL_BAUD); //control. B10=TX3, B11=RX3 (Serial3 is Usart 3) - //Serial2 may be dead on my board? - - analogReadResolution(12); //set resolution to 12 bit 0 - 4095 - - pinMode(PIN_LED, OUTPUT); - digitalWrite(PIN_LED, HIGH); - - - pinMode(PIN_VBAT,INPUT_ANALOG); - pinMode(PIN_CURRENT,INPUT_ANALOG); - - pinMode(PIN_GAMETRAK_LENGTH,INPUT_ANALOG); - pinMode(PIN_GAMETRAK_VERTICAL,INPUT_ANALOG); - pinMode(PIN_GAMETRAK_HORIZONTAL,INPUT_ANALOG); - - - #ifdef DEBUG - Serial1.println("Initializing nrf24"); - #endif - - - Serial1.println("radio begin"); - radio.begin(); - - - //Serial1.println("set rate"); - radio.setDataRate( RF24_250KBPS ); //set to slow data rate. default was 1MBPS - //radio.setDataRate( RF24_1MBPS ); - //Serial1.println("set channel"); - - radio.setChannel(NRF24CHANNEL); //0 to 124 (inclusive) - - //Serial1.println("set retries and payload"); - radio.setRetries(15, 15); // optionally, increase the delay between retries & # of retries - radio.setPayloadSize(8); // optionally, reduce the payload size. seems to improve reliability - - //Serial1.println("open pipe"); - radio.openWritingPipe(pipes[0]); //write on pipe 0 - radio.openReadingPipe(1, pipes[1]); //read on pipe 1 - - //Serial1.println("start listening"); - radio.startListening(); - - - - - #ifdef DEBUG - Serial1.println("Initialized"); - #endif - - -} - -void loop() { - - - //ReceiveSerial2(); // Check for new received data - bool newData=ReceiveSerial(Serialcom,FeedbackESC, NewFeedbackESC, Serial3); // Check for new received data - - - if (millis() - last_adcupdated > ADC_UPDATEPERIOD) { //update analog readings - vbat=analogRead(PIN_VBAT)*VBAT_DIV_FACTOR; - ibat=(analogRead(PIN_CURRENT)-CURRENT_OFFSET)*CURRENT_FACTOR; - - - gt_length = constrain(( analogRead(PIN_GAMETRAK_LENGTH))*GT_LENGTH_SCALE - (GT_LENGTH_SCALE*GT_LENGTH_OFFSET) +GT_LENGTH_MIN, 0,GT_LENGTH_MAXLENGTH); - if (gt_length<=GT_LENGTH_MIN){ - gt_length=0; //if below minimum measurable length set to 0mm - } - gt_vertical = constrain(map(analogRead(PIN_GAMETRAK_VERTICAL)-((int16_t)GT_VERTICAL_CENTER), +GT_VERTICAL_RANGE,-GT_VERTICAL_RANGE,-127,127),-127,127); //left negative - gt_horizontal = constrain(map(analogRead(PIN_GAMETRAK_HORIZONTAL)-((int16_t)GT_HORIZONTAL_CENTER), +GT_HORIZONTAL_RANGE,-GT_HORIZONTAL_RANGE,-127,127),-127,127); //down negative - - last_adcupdated = millis(); - - - /* - Serial1.print("gt_length="); - Serial1.print(gt_length); - Serial1.print(", gt_vertical="); - Serial1.print(gt_vertical); - Serial1.print(", gt_horizontal="); - Serial1.println(gt_horizontal);*/ - - /* - Serial1.print("PIN_GAMETRAK_LENGTH="); - Serial1.print(analogRead(PIN_GAMETRAK_LENGTH)); - Serial1.print(", PIN_GAMETRAK_VERTICAL="); - Serial1.print(analogRead(PIN_GAMETRAK_VERTICAL)); - Serial1.print(", PIN_GAMETRAK_HORIZONTAL="); - Serial1.println(analogRead(PIN_GAMETRAK_HORIZONTAL));*/ - - } - - //NRF24 - nrf_delay = millis() - last_nrfreceive; //update nrf delay - if ( radio.available() ) - { - //Serial1.println("radio available ..."); - - lastpacketOK = false; //initialize with false, if checksum ok gets set to true - digitalWrite(PIN_LED, !digitalRead(PIN_LED)); - radio.read( &lastnrfdata, sizeof(nrfdata) ); - - if (lastnrfdata.speed == NRFDATA_CENTER && lastnrfdata.steer == NRFDATA_CENTER) { //arm only when centered - controlmode = MODE_RADIONRF;//set radionrf mode at first received packet - } - - - - - uint8_t calcchecksum = (uint8_t)((lastnrfdata.steer + 3) * (lastnrfdata.speed + 13)); - if (lastnrfdata.checksum == calcchecksum) { //checksum ok? - lastpacketOK = true; - last_nrfreceive = millis(); - - //parse commands - motorenabled = (lastnrfdata.commands & (1 << 0))>>0; //check bit 0 - } - -/* -#ifdef DEBUG - Serial1.print("Received:"); - Serial1.print(" st="); - Serial1.print(lastnrfdata.steer); - Serial1.print(", sp="); - Serial1.print(lastnrfdata.speed); - Serial1.print(", c="); - Serial1.print(lastnrfdata.commands); - Serial1.print(", chks="); - Serial1.print(lastnrfdata.checksum); - - Serial1.print("nrfdelay="); - Serial1.print(nrf_delay); - Serial1.println(); -#endif -*/ - - //y positive = forward - //x positive = right - - /* - setYaw+=((int16_t)(lastnrfdata.steer)-NRFDATA_CENTER)*10/127; - while (setYaw<0){ - setYaw+=360; - } - while (setYaw>=360){ - setYaw-=360; - }*/ - - /* - Serial1.print("setYaw="); - Serial1.print(setYaw); - Serial1.print(" Yaw="); - Serial1.println(yaw);*/ - - - } - - - - - if (controlmode == MODE_RADIONRF && nrf_delay >= MAX_NRFDELAY) { //too long since last sucessful nrf receive - controlmode = MODE_DISARMED; - #ifdef DEBUG - Serial1.println("nrf_delay>=MAX_NRFDELAY, disarmed!"); - #endif - } - if (controlmode == MODE_RADIONRF) { //is armed in nrf mode - - - if (lastpacketOK) { //if lastnrfdata is valid - if (millis() - last_controlupdate > CONTROLUPDATEPERIOD) { - last_controlupdate = millis(); - - //out_speed=(int16_t)( (lastnrfdata.y-TRACKPOINT_CENTER)*1000/TRACKPOINT_MAX ); - //out_steer=(int16_t)( -(lastnrfdata.x-TRACKPOINT_CENTER)*1000/TRACKPOINT_MAX ); - set_speed = (int16_t)( ((int16_t)(lastnrfdata.speed) - NRFDATA_CENTER) * 1000 / 127 ); //-1000 to 1000 - set_steer = (int16_t)( ((int16_t)(lastnrfdata.steer) - NRFDATA_CENTER) * 1000 / 127 ); - - //align to compass - /* - double yawdiff = (setYaw - 180) - (yaw - 180); //following angle difference works only for angles [-180,180]. yaw here is [0,360] - yawdiff += (yawdiff > 180) ? -360 : (yawdiff < -180) ? 360 : 0; - //yawdiff/=2; - int yawdiffsign = 1; - if (yawdiff < 0) { - yawdiffsign = -1; - } - yawdiff = yawdiff * yawdiff; //square - yawdiff = constrain(yawdiff * 1 , 0, 800); - yawdiff *= yawdiffsign; //redo sign - int16_t set_steer_mag = (int16_t)( yawdiff ); - - float new_magalign_multiplier = map( abs((int16_t)(lastnrfdata.steer) - NRFDATA_CENTER), 2, 10, 1.0, 0.0); //0=normal steering, 1=only mag steering - new_magalign_multiplier = 0; //Force mag off - new_magalign_multiplier = constrain(new_magalign_multiplier, 0.0, 1.0); - - magalign_multiplier = min(new_magalign_multiplier, min(1.0, magalign_multiplier + 0.01)); //go down fast, slowly increase - magalign_multiplier = constrain(magalign_multiplier, 0.0, 1.0); //safety constrain again - - set_steer = set_steer * (1 - magalign_multiplier) + set_steer_mag * magalign_multiplier; - */ - - //calculate speed l and r from speed and steer - #define SPEED_COEFFICIENT_NRF 1 // higher value == stronger - #define STEER_COEFFICIENT_NRF 0.5 // higher value == stronger - out_speedl = constrain(set_speed * SPEED_COEFFICIENT_NRF + set_steer * STEER_COEFFICIENT_NRF, -1500, 1500); - out_speedr = constrain(set_speed * SPEED_COEFFICIENT_NRF - set_steer * STEER_COEFFICIENT_NRF, -1500, 1500); - - /* - Serial1.print("Out steer="); - Serial1.println(out_steer);*/ - } - }//if pastpacket not ok, keep last out_steer and speed values until disarmed - - -#ifdef DEBUG - if (!lastpacketOK) { - Serial1.println("Armed but packet not ok"); - } -#endif - - } - - - - if (controlmode==MODE_DISARMED) { //check if gametrak can be armed - if (gt_length>gt_length_set && gt_length-GT_LENGTH_MINDIFF & _gt_length_diff0) { //needs to drive forward - set_speed = constrain((int16_t)(_gt_length_diff*gt_speed_p),0,GT_SPEED_LIMIT); - }else{ //drive backward - if (_gt_length_diff > GT_LENGTH_MAXIMUMDIFFBACKWARD){ //only drive if not pulled back too much - set_speed = constrain((int16_t)(_gt_length_diff*gt_speedbackward_p),-GT_SPEEDBACKWARD_LIMIT,0); - }else{ - set_speed = 0; //stop - set_steer = 0; - } - } - - - - //calculate speed l and r from speed and steer - #define SPEED_COEFFICIENT_GT 1 // higher value == stronger - #define STEER_COEFFICIENT_GT 0.5 // higher value == stronger - out_speedl = constrain(set_speed * SPEED_COEFFICIENT_GT + set_steer * STEER_COEFFICIENT_GT, -1000, 1000); - out_speedr = constrain(set_speed * SPEED_COEFFICIENT_GT - set_steer * STEER_COEFFICIENT_GT, -1000, 1000); - } - - - if (error > 0) { //disarm if error occured - controlmode = MODE_DISARMED; //force disarmed - } - - if (controlmode == MODE_DISARMED){ //all disarmed - out_speedl = 0; - out_speedr = 0; - } - - - - if (millis() - last_send > SENDPERIOD) { - //calculate checksum - out_checksum = ((uint8_t) ((uint8_t)out_speedl) * ((uint8_t)out_speedr)); //simple checksum - if (out_checksum == 0 || out_checksum == 255) { - out_checksum = 1; //cannot be 0 or 255 (special purpose) - } - - if (!motorenabled) { //disable motors? - out_checksum = 0; //checksum=0 disables motors - } - - if (motorenabled) { //motors enabled - //SendSerial2(out_speedl,out_speedr); - SendSerial(Command,out_speedl,out_speedr,Serial3); - } else { //motors disabled - //SendSerial2(0,0); - SendSerial(Command,0,0,Serial3); - } - lastsend_out_speedl = out_speedl; //remember last transmittet values (for stat sending) - lastsend_out_speedr = out_speedr; - last_send = millis(); - - - #ifdef DEBUG - Serial1.print(" out_speedl="); - Serial1.print(out_speedl); - Serial1.print(" out_speedr="); - Serial1.print(out_speedr); - Serial1.print(" checksum="); - Serial1.print(out_checksum); - - Serial1.print(" controlmode="); - Serial1.print(controlmode); - - Serial1.println(); - - #endif - } - - - // - #ifdef PARAMETEROUTPUT - if ( millis() - last_parametersend > PARAMETERSENDPERIOD) { - //Serial.write((uint8_t *) &counter, sizeof(counter));//uint8_t, 1 byte - //Serial.write((uint8_t *) &value1, sizeof(value1)); //uint16_t, 2 bytes - //Serial.write((uint8_t *) &value2, sizeof(value2)); //int16_t, 2 bytes - //Serial.write((uint8_t *) &floatvalue, sizeof(floatvalue)); //float, 4 bytes - - uint8_t booleanvalues=0; //reset - booleanvalues |= motorenabled<<0; //bit 0 - booleanvalues |= (controlmode&0b00000011)<<1; //bit 1 and 2 (2bit number for controlmodes (3) - - Serial.write((uint8_t *) &out_speedl, sizeof(out_speedl)); //int16_t, 2 bytes - Serial.write((uint8_t *) &out_speedr, sizeof(out_speedr)); //int16_t, 2 bytes - Serial.write((uint8_t *) &booleanvalues, sizeof(booleanvalues)); //uint8_t, 1 byte //booleanvalues - Serial.write((uint8_t *) &vbat, sizeof(vbat)); //float, 4 bytes - //Serial.write((uint8_t *) &ibat, sizeof(ibat)); //float, 4 bytes - float yaw_float=yaw; - Serial.write((uint8_t *) &yaw_float, sizeof(yaw_float)); //float, 4 bytes - Serial.write((uint8_t *) >_length, sizeof(gt_length)); //uint16_t, 2 bytes - Serial.write((uint8_t *) >_horizontal, sizeof(gt_horizontal)); //int8_t, 1 byte - Serial.write((uint8_t *) >_vertical, sizeof(gt_vertical)); //int8_t, 1 byte - - - - - last_parametersend = millis(); - } - #endif - - -} - -/* -void sendRF(nrfstatdata senddata){ - #ifdef DEBUG - Serial1.println("Transmitting..."); - #endif - - radio.stopListening(); //stop listening to be able to transmit - radiosendOk = radio.write( &senddata, sizeof(nrfstatdata) ); - if (!radiosendOk){ - #ifdef DEBUG - Serial1.println("send failed"); - #endif - } - radio.startListening(); //start listening again -} -*/ - - - - -// ########################## SEND ########################## -void SendSerial(SerialCommand &scom, int16_t uSpeedLeft, int16_t uSpeedRight, HardwareSerial &SerialRef) -{ - // Create command - scom.start = (uint16_t)START_FRAME; - scom.speedLeft = (int16_t)uSpeedLeft; - scom.speedRight = (int16_t)uSpeedRight; - scom.checksum = (uint16_t)(scom.start ^ scom.speedLeft ^ scom.speedRight); - - SerialRef.write((uint8_t *) &scom, sizeof(scom)); -} -/* -void SendSerial2(int16_t uSpeedLeft, int16_t uSpeedRight) -{ - // Create command - Command.start = (uint16_t)START_FRAME; - Command.speedLeft = (int16_t)uSpeedLeft; - Command.speedRight = (int16_t)uSpeedRight; - Command.checksum = (uint16_t)(Command.start ^ Command.speedLeft ^ Command.speedRight); - - // Write to Serial - Serial2.write((uint8_t *) &Command, sizeof(Command)); -}*/ - -// ########################## RECEIVE ########################## - -bool ReceiveSerial(SerialRead &sread, SerialFeedback &Feedback,SerialFeedback &NewFeedback, HardwareSerial &SerialRef) -{ - bool _result=1; - // Check for new data availability in the Serial buffer - if ( SerialRef.available() ) { - sread.incomingByte = SerialRef.read(); // Read the incoming byte - sread.bufStartFrame = ((uint16_t)(sread.incomingByte) << 8) | sread.incomingBytePrev; // Construct the start frame - } - else { - return 0; - } - - // If DEBUG_RX is defined print all incoming bytes - #ifdef DEBUG_RX - Serial.print(sread.incomingByte); - #endif - - // Copy received data - if (sread.bufStartFrame == START_FRAME) { // Initialize if new data is detected - sread.p = (byte *)&NewFeedback; - *sread.p++ = sread.incomingBytePrev; - *sread.p++ = sread.incomingByte; - sread.idx = 2; - } else if (sread.idx >= 2 && sread.idx < sizeof(SerialFeedback)) { // Save the new received data - *sread.p++ = sread.incomingByte; - sread.idx++; - } - - // Check if we reached the end of the package - if (sread.idx == sizeof(SerialFeedback)) { - uint16_t checksum; - - checksum = (uint16_t)(NewFeedback.start ^ NewFeedback.cmd1 ^ NewFeedback.cmd2 - ^ NewFeedback.speedR_meas ^ NewFeedback.speedL_meas ^ NewFeedback.batVoltage ^ NewFeedback.boardTemp ^ NewFeedback.curL_DC ^ NewFeedback.curR_DC ^ NewFeedback.cmdLed); - - // Check validity of the new data - if (NewFeedback.start == START_FRAME && checksum == NewFeedback.checksum) { - // Copy the new data - memcpy(&Feedback, &NewFeedback, sizeof(SerialFeedback)); - sread.lastValidDataSerial_time = millis(); - } else { - _result=0; - } - sread.idx = 0; // Reset the index (it prevents to enter in this if condition in the next cycle) - } - /* - // Print data to built-in Serial - Serial1.print("1: "); Serial.print(Feedback.cmd1); - Serial1.print(" 2: "); Serial.print(Feedback.cmd2); - Serial1.print(" 3: "); Serial.print(Feedback.speedR); - Serial1.print(" 4: "); Serial.print(Feedback.speedL); - Serial1.print(" 5: "); Serial.print(Feedback.speedR_meas); - Serial1.print(" 6: "); Serial.print(Feedback.speedL_meas); - Serial1.print(" 7: "); Serial.print(Feedback.batVoltage); - Serial1.print(" 8: "); Serial.println(Feedback.boardTemp); - } else { - Serial1.println("Non-valid data skipped"); - }*/ - - // Update previous states - sread.incomingBytePrev = sread.incomingByte; - - return _result; //new data was available -} - - -/* -void ReceiveSerial2() -{ - // Check for new data availability in the Serial buffer - if (Serial2.available()) { - incomingByte = Serial2.read(); // Read the incoming byte - bufStartFrame = ((uint16_t)(incomingBytePrev) << 8) + incomingByte; // Construct the start frame - } - else { - return; - } - - // If DEBUG_RX is defined print all incoming bytes - #ifdef DEBUG_RX - Serial.print(incomingByte); - return; - #endif - - // Copy received data - if (bufStartFrame == START_FRAME) { // Initialize if new data is detected - p = (byte *)&NewFeedback; - *p++ = incomingBytePrev; - *p++ = incomingByte; - idx = 2; - } else if (idx >= 2 && idx < sizeof(SerialFeedback)) { // Save the new received data - *p++ = incomingByte; - idx++; - } - - // Check if we reached the end of the package - if (idx == sizeof(SerialFeedback)) { - uint16_t checksum; - checksum = (uint16_t)(NewFeedback.start ^ NewFeedback.cmd1 ^ NewFeedback.cmd2 ^ NewFeedback.speedR ^ NewFeedback.speedL - ^ NewFeedback.speedR_meas ^ NewFeedback.speedL_meas ^ NewFeedback.batVoltage ^ NewFeedback.boardTemp ^ NewFeedback.curL_DC ^ NewFeedback.curR_DC); - // Check validity of the new data - if (NewFeedback.start == START_FRAME && checksum == NewFeedback.checksum) { - - // Copy the new data - memcpy(&Feedback, &NewFeedback, sizeof(SerialFeedback)); - - // Print data to built-in Serial - Serial.print("1: "); Serial.print(Feedback.cmd1); - Serial.print(" 2: "); Serial.print(Feedback.cmd2); - Serial.print(" 3: "); Serial.print(Feedback.speedR); - Serial.print(" 4: "); Serial.print(Feedback.speedL); - Serial.print(" 5: "); Serial.print(Feedback.speedR_meas); - Serial.print(" 6: "); Serial.print(Feedback.speedL_meas); - //Serial.print(" 7: "); Serial.print(Feedback.batVoltage); - //Serial.print(" 8: "); Serial.println(Feedback.boardTemp); - Serial.print(" 9: "); Serial.print(Feedback.curL_DC); //in A, in hoverbrett negative sign for forward - Serial.print(" 10: "); Serial.println(Feedback.curR_DC); //in A, in hoverbrett negative sign for forward - - Serial.print(" 9: "); Serial.println(Feedback.curL_DC); //in A, in hoverbrett negative sign for forward - } else { - Serial.println("Non-valid data skipped"); - } - idx = 0; // Reset the index (it prevents to enter in this if condition in the next cycle) - } - - // Update previous states - incomingBytePrev = incomingByte; -} -*/ - - - diff --git a/controller_pio/test/README b/controller_pio/test/README deleted file mode 100644 index df5066e..0000000 --- a/controller_pio/test/README +++ /dev/null @@ -1,11 +0,0 @@ - -This directory is intended for PIO Unit Testing 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 PIO Unit Testing: -- https://docs.platformio.org/page/plus/unit-testing.html diff --git a/hardware/controller/controller.kicad_sch b/hardware/controller/controller.kicad_sch index 57c6cc8..a93497c 100644 --- a/hardware/controller/controller.kicad_sch +++ b/hardware/controller/controller.kicad_sch @@ -5,6 +5,231 @@ (paper "A4") (lib_symbols + (symbol "Connector_Generic:Conn_01x04" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_01x04" (id 1) (at 0 -7.62 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_01x04_1_1" + (rectangle (start -1.27 -4.953) (end 0 -5.207) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 2.667) (end 0 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 3.81) (end 1.27 -6.35) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin passive line (at -5.08 2.54 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 0 0) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -5.08 0) (length 3.81) + (name "Pin_4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector_Generic:Conn_01x06" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 7.62 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_01x06" (id 1) (at 0 -10.16 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, single row, 01x06, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_01x06_1_1" + (rectangle (start -1.27 -7.493) (end 0 -7.747) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -4.953) (end 0 -5.207) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 2.667) (end 0 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 5.207) (end 0 4.953) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 6.35) (end 1.27 -8.89) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin passive line (at -5.08 5.08 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)))) + ) + (pin passive line (at -5.08 0 0) (length 3.81) + (name "Pin_3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -5.08 0) (length 3.81) + (name "Pin_5" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -7.62 0) (length 3.81) + (name "Pin_6" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "RF:NRF24L01_Breakout" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -8.89 12.7 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "NRF24L01_Breakout" (id 1) (at 3.81 12.7 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "RF_Module:nRF24L01_Breakout" (id 2) (at 3.81 15.24 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://www.nordicsemi.com/eng/content/download/2730/34105/file/nRF24L01_Product_Specification_v2_0.pdf" (id 3) (at 0 -2.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "Low Power RF Transciever breakout carrier" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Ultra low power 2.4GHz RF Transceiver, Carrier PCB" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "nRF24L01*Breakout*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "NRF24L01_Breakout_0_1" + (rectangle (start -8.89 11.43) (end 8.89 -11.43) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 4.445 1.905) + (xy 4.445 -1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 4.445 2.54) (radius 0.635) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (arc (start 5.715 2.54) (mid 5.3559 3.4509) (end 4.445 3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start 6.35 1.905) (mid 5.8833 3.9783) (end 3.81 4.445) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start 6.985 1.27) (mid 6.453 4.548) (end 3.175 5.08) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "NRF24L01_Breakout_1_1" + (pin power_in line (at 0 -15.24 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 15.24 270) (length 3.81) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -5.08 0) (length 3.81) + (name "CE" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 0 0) (length 3.81) + (name "~{CSN}" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin input clock (at -12.7 2.54 0) (length 3.81) + (name "SCK" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 7.62 0) (length 3.81) + (name "MOSI" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at -12.7 5.08 0) (length 3.81) + (name "MISO" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at -12.7 -7.62 0) (length 3.81) + (name "IRQ" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) (symbol "Teensy:Teensy3.2" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) (property "Reference" "U" (id 0) (at 0 39.37 0) (effects (font (size 1.524 1.524))) @@ -251,20 +476,527 @@ ) ) ) + (symbol "power:+3V3" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+3V3\"" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "+3V3_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "+3V3_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "+3V3" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:+5V" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+5V\"" (id 5) (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) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "+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" (id 0) (at 0 -6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 0 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) + (xy 0 -1.27) + (xy 1.27 -1.27) + (xy 0 -2.54) + (xy -1.27 -1.27) + (xy 0 -1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "GND_1_1" + (pin power_in line (at 0 0 270) (length 0) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:VCC" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "VCC" (id 1) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"VCC\"" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "VCC_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "VCC_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) ) + (no_connect (at 50.8 57.15) (uuid 4b24df59-2825-4b76-af48-9ff6798dfebb)) + + (wire (pts (xy 99.06 80.01) (xy 115.57 80.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 004f8db7-d90d-42f8-8a89-cd52f32aed9e) + ) + (wire (pts (xy 99.06 82.55) (xy 115.57 82.55)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 00d10486-2cc7-4055-be39-502e4b3e29fb) + ) + (wire (pts (xy 101.6 116.84) (xy 101.6 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 00e65487-6489-4343-aa2b-4c4da968f5b3) + ) + (wire (pts (xy 99.06 77.47) (xy 99.06 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0469b202-c86f-4a3b-a5ba-6f456c498b0c) + ) + (wire (pts (xy 107.95 87.63) (xy 107.95 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 15b559fa-11a5-4e4f-8a04-d343de63dbe7) + ) + (wire (pts (xy 109.22 92.71) (xy 99.06 92.71)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 183ce7c8-a7f5-421a-95e8-f0a434c8473a) + ) + (wire (pts (xy 100.33 59.69) (xy 100.33 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1a613bc6-1d83-49de-a5d1-cb6ecebc8fdf) + ) + (wire (pts (xy 104.14 121.92) (xy 99.06 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2193fd54-9467-445e-a690-7788e71a0a17) + ) + (wire (pts (xy 110.49 85.09) (xy 110.49 97.79)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 21c5ca45-d574-4174-9629-f1fa8964149f) + ) + (wire (pts (xy 99.06 87.63) (xy 107.95 87.63)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2636e5b7-1708-4b2c-ac90-573d0c486574) + ) + (wire (pts (xy 101.6 129.54) (xy 101.6 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 26ed8c57-49e1-42ce-ae2d-6b2917a6d6fa) + ) + (wire (pts (xy 69.85 116.84) (xy 73.66 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2b69187a-65e3-4621-907f-e95ce225511a) + ) + (wire (pts (xy 167.64 118.11) (xy 166.37 118.11)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 35011418-c95f-4e19-ab65-884884593f2f) + ) + (wire (pts (xy 115.57 77.47) (xy 99.06 77.47)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 36083a5f-d1b2-496e-a363-2dd1343a116a) + ) + (wire (pts (xy 58.42 64.77) (xy 58.42 66.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 38324222-ebdd-4e06-abe7-ddc1210fdee3) + ) + (wire (pts (xy 73.66 118.11) (xy 73.66 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3b74f317-e152-453a-8cce-248c8b1dc7b3) + ) + (wire (pts (xy 99.06 62.23) (xy 50.8 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3cf1e09d-abd0-44db-b881-3e79c937917f) + ) + (wire (pts (xy 182.88 107.95) (xy 182.88 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3d521624-9ecd-4b1c-bc20-3873f0e399bf) + ) + (wire (pts (xy 107.95 113.03) (xy 115.57 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3e698a9c-1148-4397-9467-73ed35631fb7) + ) + (wire (pts (xy 107.9077 109.2214) (xy 107.95 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 406162fd-a324-4eeb-b78b-f9c4f3be9ff9) + ) + (wire (pts (xy 73.66 109.22) (xy 107.9077 109.2214)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 453d203f-5011-4d6e-8b1a-26937c71c1d3) + ) + (wire (pts (xy 167.64 124.46) (xy 167.64 118.11)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 47a08740-6973-4f3d-bc33-da22086387b4) + ) + (wire (pts (xy 99.06 127) (xy 168.91 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 49b3fc09-ece2-4c43-b960-5ff536d1758f) + ) + (wire (pts (xy 115.57 100.33) (xy 109.22 100.33)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4b8029c5-5ca7-41f3-89ba-c4c7ca60727f) + ) + (wire (pts (xy 100.33 74.93) (xy 115.57 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4fc5083c-49c2-402b-91da-70ea04d2c119) + ) + (wire (pts (xy 99.06 116.84) (xy 101.6 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 52daab00-3677-4fe6-af22-27984261bd83) + ) + (wire (pts (xy 50.8 59.69) (xy 100.33 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 531a88fb-ecfe-4b8f-a9d8-725644dfe554) + ) + (wire (pts (xy 50.8 64.77) (xy 58.42 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 55316188-1ed6-4c76-bce6-491f0814d6c8) + ) + (wire (pts (xy 104.14 118.11) (xy 104.14 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5ab123ef-60a2-4f38-8884-167dcfc32060) + ) + (wire (pts (xy 110.49 97.79) (xy 115.57 97.79)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 698788a3-ab92-4b7e-98e6-fab2a06de505) + ) + (wire (pts (xy 107.95 102.87) (xy 115.57 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6afe7f07-b5c5-46e5-8c67-9f3c2f2ccc07) + ) + (wire (pts (xy 182.88 113.03) (xy 166.37 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6b411294-bda7-48cc-bda7-1623378101a3) + ) + (wire (pts (xy 99.06 129.54) (xy 101.6 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6cf5d6dd-fbb6-437e-9f93-d98763dddd29) + ) + (wire (pts (xy 73.66 109.22) (xy 73.66 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6e0e2292-3055-422e-8ec2-8ecd9b40482c) + ) + (wire (pts (xy 101.6 50.8) (xy 101.6 49.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7183429d-1ff8-4256-a1db-6a7616e9a998) + ) + (wire (pts (xy 109.22 100.33) (xy 109.22 92.71)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7b0a9257-6c3a-42a8-811b-a01f90d9828d) + ) + (wire (pts (xy 110.49 106.68) (xy 110.49 110.49)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8a1bb529-71e5-4a61-a78d-f45a8413f009) + ) + (wire (pts (xy 102.87 119.38) (xy 102.87 115.57)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 97f6d382-da90-4970-9d44-d3b93aae86bc) + ) + (wire (pts (xy 166.37 115.57) (xy 168.91 115.57)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 99d522a8-cdb0-4eb2-913a-15390faac3c7) + ) + (wire (pts (xy 86.36 71.12) (xy 86.36 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid aec8e439-2867-4f73-81ef-139fceac2a57) + ) + (wire (pts (xy 73.66 111.76) (xy 69.85 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b0bad092-6df4-471b-8d2a-09ba7ff80fd1) + ) + (wire (pts (xy 69.85 114.3) (xy 77.47 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b1177e5c-b9a9-493e-aa0c-0850b0019a60) + ) + (wire (pts (xy 69.85 106.68) (xy 69.85 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bd671f12-c259-4c6d-a27f-66521edc446a) + ) + (wire (pts (xy 115.57 118.11) (xy 104.14 118.11)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bfb85001-8d8b-4e2c-bcc8-07ecf2a2f14b) + ) + (wire (pts (xy 69.85 106.68) (xy 110.49 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c1c32f36-f1a6-4ede-9365-45cd009f0f20) + ) + (wire (pts (xy 99.06 85.09) (xy 110.49 85.09)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c57b6527-2148-4ea7-931d-36e0ce4ce760) + ) + (wire (pts (xy 177.8 107.95) (xy 177.8 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d18b40ba-97b7-41aa-b920-8af6fc63ded5) + ) + (wire (pts (xy 99.06 119.38) (xy 102.87 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d3ee5e22-3226-4c44-8f80-fd50ea4805fb) + ) + (wire (pts (xy 102.87 115.57) (xy 115.57 115.57)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f16cd22c-faf5-4570-a34d-f0c5b0ab3166) + ) + (wire (pts (xy 166.37 107.95) (xy 177.8 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f1ed2fce-d8b1-4c28-aabf-2e3102a1be42) + ) + (wire (pts (xy 110.49 110.49) (xy 115.57 110.49)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f3bc37d3-8f1a-472f-8cff-fa912350b962) + ) + (wire (pts (xy 99.06 124.46) (xy 167.64 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f7304ba3-4d69-4e35-ae24-014661c784a8) + ) + (wire (pts (xy 168.91 115.57) (xy 168.91 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f76df7a0-4a0c-46a8-8647-a0539b0d3e1e) + ) + (wire (pts (xy 101.6 49.53) (xy 115.57 49.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f9e307e6-3dd1-4610-83f2-b27e78ef584c) + ) + + (label "SDA" (at 69.85 106.68 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 90a1896c-1f1e-4f9e-9d9f-3cb028437cc1) + ) + (label "SCL" (at 69.85 111.76 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid ab321462-361e-4835-b9ce-aa1f5f7f4ffb) + ) + + (symbol (lib_id "power:+3V3") (at 182.88 107.95 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0f8cfa67-6c37-4c56-98c0-e134c16a7f3e) + (property "Reference" "#PWR0109" (id 0) (at 182.88 111.76 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 182.88 102.87 0)) + (property "Footprint" "" (id 2) (at 182.88 107.95 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 182.88 107.95 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 56e45240-b720-42c0-83bf-349a57dd6000)) + ) + + (symbol (lib_id "power:+3V3") (at 86.36 71.12 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 11c6c966-f405-45ac-8af4-77525c0062ad) + (property "Reference" "#PWR0101" (id 0) (at 86.36 74.93 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 86.36 66.04 0)) + (property "Footprint" "" (id 2) (at 86.36 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 86.36 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f68bcda-3546-4f9b-bcc7-32c07c384d80)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x06") (at 93.98 124.46 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 3616507a-404e-4274-bd2e-b65f2f1e94f1) + (property "Reference" "J2" (id 0) (at 93.98 110.49 0)) + (property "Value" "gametrak" (id 1) (at 93.98 113.03 0)) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical" (id 2) (at 93.98 124.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 93.98 124.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fae56bb7-57cc-49c9-b6bc-2b2c7572cb4d)) + (pin "2" (uuid 5a13c6df-701f-44fd-98e4-8c9b38f9866b)) + (pin "3" (uuid 851438e6-5f10-4030-bea6-f0be46d599c8)) + (pin "4" (uuid f66b56fa-066e-4a44-8a3d-61d4e66309c0)) + (pin "5" (uuid 1bbf984a-7d93-4eb5-9cfc-fe624671ca4e)) + (pin "6" (uuid 72dc6770-429d-41bb-9334-d150c4e162ea)) + ) + + (symbol (lib_id "power:GND") (at 73.66 118.11 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 68700896-6ce6-44b0-ac02-9e847f29bf8c) + (property "Reference" "#PWR?" (id 0) (at 73.66 124.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 73.66 123.19 0)) + (property "Footprint" "" (id 2) (at 73.66 118.11 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 73.66 118.11 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c8d528ba-3961-4b69-9675-6c6f1ce7bccc)) + ) + + (symbol (lib_id "power:+3V3") (at 101.6 114.3 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 8fe253e7-d29a-4557-be20-dce5f7266292) + (property "Reference" "#PWR0104" (id 0) (at 101.6 118.11 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 101.6 109.22 0)) + (property "Footprint" "" (id 2) (at 101.6 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 101.6 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e9dc1328-1e77-4f1c-8e07-90ab62ecac3f)) + ) + (symbol (lib_id "Teensy:Teensy3.2") (at 140.97 83.82 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 947df0d8-493c-4a35-aca7-d69eb00dcd35) - (property "Reference" "U?" (id 0) (at 140.97 41.91 0) + (property "Reference" "U2" (id 0) (at 140.97 41.91 0) (effects (font (size 1.524 1.524))) ) (property "Value" "Teensy3.2" (id 1) (at 140.97 45.72 0) (effects (font (size 1.524 1.524))) ) (property "Footprint" "" (id 2) (at 140.97 102.87 0) - (effects (font (size 1.524 1.524))) + (effects (font (size 1.524 1.524)) hide) ) (property "Datasheet" "" (id 3) (at 140.97 102.87 0) (effects (font (size 1.524 1.524))) @@ -325,13 +1057,229 @@ (pin "9" (uuid a8563204-70f4-4d77-a558-f3190b711e16)) ) + (symbol (lib_id "power:GND") (at 58.42 66.04 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 99281594-4b04-4091-873c-ef1a43d332df) + (property "Reference" "#PWR0102" (id 0) (at 58.42 72.39 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 58.42 71.12 0)) + (property "Footprint" "" (id 2) (at 58.42 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 58.42 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f71fd012-75cf-4a94-ac61-c01ef3de9386)) + ) + + (symbol (lib_id "RF:NRF24L01_Breakout") (at 86.36 87.63 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a2a0f5cc-b5aa-4e3e-8d85-23bdc2f59aec) + (property "Reference" "U1" (id 0) (at 76.2 86.3599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "NRF24L01_Breakout" (id 1) (at 76.2 88.8999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "RF_Module:nRF24L01_Breakout" (id 2) (at 82.55 72.39 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "http://www.nordicsemi.com/eng/content/download/2730/34105/file/nRF24L01_Product_Specification_v2_0.pdf" (id 3) (at 86.36 90.17 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 386faf3f-2adf-472a-84bf-bd511edf2429)) + (pin "2" (uuid de552ae9-cde6-4643-8cc7-9de2579dadae)) + (pin "3" (uuid 72366acb-6c86-4134-89df-01ed6e4dc8e0)) + (pin "4" (uuid 7274c82d-0cb9-47de-b093-7d848f491410)) + (pin "5" (uuid b66b83a0-313f-4b03-b851-c6e9577a6eb7)) + (pin "6" (uuid dad2f9a9-292b-4f7e-9524-a263f3c1ba74)) + (pin "7" (uuid 112371bd-7aa2-4b47-b184-50d12afc2534)) + (pin "8" (uuid 5c32b099-dba7-4228-8a5e-c2156f635ce2)) + ) + + (symbol (lib_id "power:GND") (at 86.36 102.87 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid ae000762-c3ad-4b38-9916-bc37fd454d17) + (property "Reference" "#PWR0103" (id 0) (at 86.36 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 90.17 102.87 0)) + (property "Footprint" "" (id 2) (at 86.36 102.87 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 86.36 102.87 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid db2012c2-1d36-4ca8-b114-91af6d0eeef8)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x04") (at 45.72 62.23 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid af706b9d-2e5e-46ab-9a95-50062787b0fa) + (property "Reference" "J?" (id 0) (at 45.72 50.8 0)) + (property "Value" "serial_esc" (id 1) (at 40.64 53.34 0)) + (property "Footprint" "" (id 2) (at 45.72 62.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 45.72 62.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5042aa84-76f9-413b-aadc-7658cbc67e45)) + (pin "2" (uuid e6acf612-6407-4324-875f-1f62f23cedcb)) + (pin "3" (uuid bf040bc2-4e16-4c47-9ed2-67d4b1e19c77)) + (pin "4" (uuid 152e88e2-10fd-4968-81be-a4dad9cd656d)) + ) + + (symbol (lib_id "power:VCC") (at 259.08 34.29 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid b1c36f6e-75a8-4c4c-8ed4-d43e9de62446) + (property "Reference" "#PWR0108" (id 0) (at 259.08 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "VCC" (id 1) (at 259.08 29.21 0)) + (property "Footprint" "" (id 2) (at 259.08 34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 259.08 34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 45ca1f4a-173f-4489-88f4-cd794594e9bb)) + ) + + (symbol (lib_id "power:+5V") (at 177.8 101.6 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ba54f50c-d12f-43c2-8756-845c9dd68f54) + (property "Reference" "#PWR0107" (id 0) (at 177.8 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 177.8 96.52 0)) + (property "Footprint" "" (id 2) (at 177.8 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 177.8 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fa7593ec-8234-4796-9fa6-3876cab5c179)) + ) + + (symbol (lib_id "power:GND") (at 101.6 132.08 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c85f50b8-8333-412a-940a-b25e6bc9faf2) + (property "Reference" "#PWR0105" (id 0) (at 101.6 138.43 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 101.6 137.16 0)) + (property "Footprint" "" (id 2) (at 101.6 132.08 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 101.6 132.08 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ae83c378-a041-4724-a78d-ecaa63c7d735)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x04") (at 64.77 114.3 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid d29ab708-161a-4071-a560-c882ef4a2aee) + (property "Reference" "J?" (id 0) (at 64.77 102.87 0)) + (property "Value" "display" (id 1) (at 59.69 105.41 0)) + (property "Footprint" "" (id 2) (at 64.77 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 64.77 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 966ddd39-479f-4c5c-a820-c16248f60f7b)) + (pin "2" (uuid ef8d8aed-1b1e-4df1-9a6e-d9e1993ff692)) + (pin "3" (uuid 7f11a61f-d2ef-4b7b-8666-40c44fbcb166)) + (pin "4" (uuid 3de85ec2-70e9-4177-b17a-a884cf5e37f0)) + ) + + (symbol (lib_id "power:+3V3") (at 77.47 114.3 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid e621af57-2812-4c4e-aa8c-a74faeb9bc03) + (property "Reference" "#PWR?" (id 0) (at 77.47 118.11 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 80.01 111.76 0)) + (property "Footprint" "" (id 2) (at 77.47 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 77.47 114.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 32554fc8-cb49-4082-8504-db43b97e1dcd)) + ) + + (symbol (lib_id "power:GND") (at 101.6 50.8 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid f4dc8ac3-d986-48a0-a66a-459daadef931) + (property "Reference" "#PWR0106" (id 0) (at 101.6 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 101.6 55.88 0)) + (property "Footprint" "" (id 2) (at 101.6 50.8 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 101.6 50.8 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 24448553-0091-4116-9d12-831ac18b42ae)) + ) + (sheet_instances (path "/" (page "1")) ) (symbol_instances + (path "/11c6c966-f405-45ac-8af4-77525c0062ad" + (reference "#PWR0101") (unit 1) (value "+3V3") (footprint "") + ) + (path "/99281594-4b04-4091-873c-ef1a43d332df" + (reference "#PWR0102") (unit 1) (value "GND") (footprint "") + ) + (path "/ae000762-c3ad-4b38-9916-bc37fd454d17" + (reference "#PWR0103") (unit 1) (value "GND") (footprint "") + ) + (path "/8fe253e7-d29a-4557-be20-dce5f7266292" + (reference "#PWR0104") (unit 1) (value "+3V3") (footprint "") + ) + (path "/c85f50b8-8333-412a-940a-b25e6bc9faf2" + (reference "#PWR0105") (unit 1) (value "GND") (footprint "") + ) + (path "/f4dc8ac3-d986-48a0-a66a-459daadef931" + (reference "#PWR0106") (unit 1) (value "GND") (footprint "") + ) + (path "/ba54f50c-d12f-43c2-8756-845c9dd68f54" + (reference "#PWR0107") (unit 1) (value "+5V") (footprint "") + ) + (path "/b1c36f6e-75a8-4c4c-8ed4-d43e9de62446" + (reference "#PWR0108") (unit 1) (value "VCC") (footprint "") + ) + (path "/0f8cfa67-6c37-4c56-98c0-e134c16a7f3e" + (reference "#PWR0109") (unit 1) (value "+3V3") (footprint "") + ) + (path "/68700896-6ce6-44b0-ac02-9e847f29bf8c" + (reference "#PWR?") (unit 1) (value "GND") (footprint "") + ) + (path "/e621af57-2812-4c4e-aa8c-a74faeb9bc03" + (reference "#PWR?") (unit 1) (value "+3V3") (footprint "") + ) + (path "/3616507a-404e-4274-bd2e-b65f2f1e94f1" + (reference "J2") (unit 1) (value "gametrak") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical") + ) + (path "/af706b9d-2e5e-46ab-9a95-50062787b0fa" + (reference "J?") (unit 1) (value "serial_esc") (footprint "") + ) + (path "/d29ab708-161a-4071-a560-c882ef4a2aee" + (reference "J?") (unit 1) (value "display") (footprint "") + ) + (path "/a2a0f5cc-b5aa-4e3e-8d85-23bdc2f59aec" + (reference "U1") (unit 1) (value "NRF24L01_Breakout") (footprint "RF_Module:nRF24L01_Breakout") + ) (path "/947df0d8-493c-4a35-aca7-d69eb00dcd35" - (reference "U?") (unit 1) (value "Teensy3.2") (footprint "") + (reference "U2") (unit 1) (value "Teensy3.2") (footprint "") ) ) )