diff --git a/Firmware/.gitignore b/Firmware/.gitignore new file mode 100644 index 0000000..89cc49c --- /dev/null +++ b/Firmware/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/Firmware/src/cameraInit.h b/Firmware/src/cameraInit.h new file mode 100644 index 0000000..330c768 --- /dev/null +++ b/Firmware/src/cameraInit.h @@ -0,0 +1,91 @@ +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_camera.h" + +// WROVER-KIT PIN Map +#define CAM_PIN_PWDN 32 +#define CAM_PIN_RESET -1 // software reset will be performed +#define CAM_PIN_XCLK 0 +#define CAM_PIN_SIOD 26 +#define CAM_PIN_SIOC 27 + +#define CAM_PIN_D7 35 +#define CAM_PIN_D6 34 +#define CAM_PIN_D5 39 +#define CAM_PIN_D4 36 +#define CAM_PIN_D3 21 +#define CAM_PIN_D2 19 +#define CAM_PIN_D1 18 +#define CAM_PIN_D0 5 +#define CAM_PIN_VSYNC 25 +#define CAM_PIN_HREF 23 +#define CAM_PIN_PCLK 22 + +static camera_config_t camera_config = { + .pin_pwdn = CAM_PIN_PWDN, + .pin_reset = CAM_PIN_RESET, + .pin_xclk = CAM_PIN_XCLK, + .pin_sscb_sda = CAM_PIN_SIOD, + .pin_sscb_scl = CAM_PIN_SIOC, + + .pin_d7 = CAM_PIN_D7, + .pin_d6 = CAM_PIN_D6, + .pin_d5 = CAM_PIN_D5, + .pin_d4 = CAM_PIN_D4, + .pin_d3 = CAM_PIN_D3, + .pin_d2 = CAM_PIN_D2, + .pin_d1 = CAM_PIN_D1, + .pin_d0 = CAM_PIN_D0, + .pin_vsync = CAM_PIN_VSYNC, + .pin_href = CAM_PIN_HREF, + .pin_pclk = CAM_PIN_PCLK, + + .xclk_freq_hz = 20000000, // EXPERIMENTAL: Set to 16MHz on ESP32-S2 or ESP32-S3 to enable EDMA mode + .ledc_timer = LEDC_TIMER_0, + .ledc_channel = LEDC_CHANNEL_0, + + .pixel_format = PIXFORMAT_JPEG, // YUV422,GRAYSCALE,RGB565,JPEG + .frame_size = FRAMESIZE_UXGA, // QQVGA-QXGA Do not use sizes above QVGA when not JPEG + + .jpeg_quality = 12, // 0-63 lower number means higher quality + .fb_count = 1, // if more than one, i2s runs in continuous mode. Use only with JPEG + // .grab_mode = CAMERA_GRAB_WHEN_EMPTY // CAMERA_GRAB_LATEST. Sets when buffers should be filled +}; + +esp_err_t camera_init() +{ + // power up the camera if PWDN pin is defined + if (CAM_PIN_PWDN != -1) + { + pinMode(CAM_PIN_PWDN, OUTPUT); + digitalWrite(CAM_PIN_PWDN, LOW); + } + + // initialize the camera + esp_err_t err = esp_camera_init(&camera_config); + if (err != ESP_OK) + { + ESP_LOGE(TAG, "Camera Init Failed"); + return err; + } + + return ESP_OK; +} + +esp_err_t camera_capture() +{ + // acquire a frame + camera_fb_t *fb = esp_camera_fb_get(); + if (!fb) + { + ESP_LOGE(TAG, "Camera Capture Failed"); + return ESP_FAIL; + } + // replace this with your own function + // process_image(fb->width, fb->height, fb->format, fb->buf, fb->len); + + // return the frame buffer back to the driver for reuse + esp_camera_fb_return(fb); + return ESP_OK; +} \ No newline at end of file diff --git a/Firmware/src/cameraStreamer.h b/Firmware/src/cameraStreamer.h new file mode 100644 index 0000000..c4a587d --- /dev/null +++ b/Firmware/src/cameraStreamer.h @@ -0,0 +1,90 @@ +#include "esp_camera.h" +#include "esp_http_server.h" +#include "esp_timer.h" + +#define PART_BOUNDARY "123456789000000000000987654321" +static const char *_STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY; +static const char *_STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n"; +static const char *_STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n"; + +static const char *TAG = "example:take_picture"; // Change me later? + +esp_err_t jpg_stream_httpd_handler(httpd_req_t *req) +{ + camera_fb_t *fb = NULL; + esp_err_t res = ESP_OK; + size_t _jpg_buf_len; + uint8_t *_jpg_buf; + char *part_buf[64]; + static int64_t last_frame = 0; + if (!last_frame) + { + last_frame = esp_timer_get_time(); + } + + res = httpd_resp_set_type(req, _STREAM_CONTENT_TYPE); + if (res != ESP_OK) + { + return res; + } + + while (true) + { + fb = esp_camera_fb_get(); + if (!fb) + { + ESP_LOGE(TAG, "Camera capture failed"); + res = ESP_FAIL; + break; + } + if (fb->format != PIXFORMAT_JPEG) + { + bool jpeg_converted = frame2jpg(fb, 80, &_jpg_buf, &_jpg_buf_len); + if (!jpeg_converted) + { + ESP_LOGE(TAG, "JPEG compression failed"); + esp_camera_fb_return(fb); + res = ESP_FAIL; + } + } + else + { + _jpg_buf_len = fb->len; + _jpg_buf = fb->buf; + } + + if (res == ESP_OK) + { + res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY)); + } + if (res == ESP_OK) + { + size_t hlen = snprintf((char *)part_buf, 64, _STREAM_PART, _jpg_buf_len); + + res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen); + } + if (res == ESP_OK) + { + res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len); + } + if (fb->format != PIXFORMAT_JPEG) + { + free(_jpg_buf); + } + esp_camera_fb_return(fb); + if (res != ESP_OK) + { + break; + } + int64_t fr_end = esp_timer_get_time(); + int64_t frame_time = fr_end - last_frame; + last_frame = fr_end; + frame_time /= 1000; + ESP_LOGI(TAG, "MJPG: %uKB %ums (%.1ffps)", + (uint32_t)(_jpg_buf_len / 1024), + (uint32_t)frame_time, 1000.0 / (uint32_t)frame_time); + } + + last_frame = 0; + return res; +} \ No newline at end of file diff --git a/Firmware/src/main.cpp b/Firmware/src/main.cpp index 8f92bd5..ee082c7 100644 --- a/Firmware/src/main.cpp +++ b/Firmware/src/main.cpp @@ -1,5 +1,4 @@ -/* Orbital Percession - * Concord Robotics +/* SNHU Robotics * * Fight robots! Fight! */ @@ -7,17 +6,31 @@ // Arduino Libs #include "Arduino.h" -#define FLASH_LED 4 +// ESP Libs +#include "esp_camera.h" +#include + +// Pins +#include "cameraInit.h" + +// Wifi settings +const char *ssid = "BattleBot"; +const char *password = "iamnotacrook"; void setup() { // Serial over USB Serial.begin(115200); - // initialize digital pin LED_BUILTIN as an output. - pinMode(FLASH_LED, OUTPUT); + // Wifi setup + WiFi.softAP(ssid, password); + + IPAddress IP = WiFi.softAPIP(); + Serial.print("AP IP address: "); + Serial.println(IP); - delay(500); + // Camera + camera_init(); // Print MOTD Serial.println(MOTD); diff --git a/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_pcb b/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_pcb index e4f1f8a..7506ef8 100644 --- a/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_pcb +++ b/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_pcb @@ -75,47 +75,45 @@ ) (net 0 "") - (net 1 "unconnected-(U1-Pad16)") - (net 2 "unconnected-(U1-Pad15)") - (net 3 "unconnected-(U1-Pad14)") - (net 4 "unconnected-(U1-Pad13)") - (net 5 "unconnected-(U1-Pad12)") - (net 6 "unconnected-(U1-Pad11)") - (net 7 "unconnected-(U1-Pad10)") - (net 8 "unconnected-(U1-Pad9)") - (net 9 "unconnected-(U1-Pad8)") - (net 10 "unconnected-(U1-Pad7)") - (net 11 "unconnected-(U1-Pad6)") - (net 12 "unconnected-(U1-Pad5)") - (net 13 "unconnected-(U1-Pad4)") - (net 14 "unconnected-(U1-Pad3)") - (net 15 "unconnected-(U1-Pad2)") - (net 16 "unconnected-(U1-Pad1)") - (net 17 "unconnected-(U1-Pad17)") - (net 18 "unconnected-(U1-Pad18)") - (net 19 "unconnected-(U1-Pad19)") - (net 20 "unconnected-(U1-Pad20)") - (net 21 "unconnected-(U1-Pad21)") - (net 22 "unconnected-(U1-Pad22)") - (net 23 "unconnected-(U1-Pad23)") - (net 24 "unconnected-(U1-Pad24)") - (net 25 "unconnected-(U1-Pad25)") - (net 26 "unconnected-(U1-Pad26)") - (net 27 "unconnected-(U1-Pad27)") - (net 28 "unconnected-(U1-Pad28)") - (net 29 "unconnected-(U1-Pad29)") - (net 30 "unconnected-(U1-Pad30)") - (net 31 "unconnected-(U1-Pad31)") - (net 32 "unconnected-(U1-Pad32)") - (net 33 "unconnected-(U1-Pad33)") - (net 34 "unconnected-(U1-Pad34)") - (net 35 "unconnected-(U1-Pad35)") - (net 36 "unconnected-(U1-Pad36)") - (net 37 "unconnected-(U1-Pad37)") - (net 38 "unconnected-(U1-Pad38)") - (net 39 "unconnected-(U1-Pad39)") - (net 40 "unconnected-(U1-Pad40)") - (net 41 "unconnected-(U1-Pad41)") + (net 1 "unconnected-(U101-Pad14)") + (net 2 "unconnected-(U101-Pad13)") + (net 3 "unconnected-(U101-Pad12)") + (net 4 "unconnected-(U101-Pad11)") + (net 5 "unconnected-(U101-Pad10)") + (net 6 "unconnected-(U101-Pad9)") + (net 7 "unconnected-(U101-Pad8)") + (net 8 "unconnected-(U101-Pad7)") + (net 9 "unconnected-(U101-Pad6)") + (net 10 "unconnected-(U101-Pad5)") + (net 11 "unconnected-(U101-Pad4)") + (net 12 "unconnected-(U101-Pad3)") + (net 13 "+3V3") + (net 14 "GND") + (net 15 "unconnected-(U101-Pad15)") + (net 16 "unconnected-(U101-Pad16)") + (net 17 "unconnected-(U101-Pad17)") + (net 18 "unconnected-(U101-Pad18)") + (net 19 "unconnected-(U101-Pad19)") + (net 20 "unconnected-(U101-Pad20)") + (net 21 "unconnected-(U101-Pad21)") + (net 22 "unconnected-(U101-Pad22)") + (net 23 "unconnected-(U101-Pad23)") + (net 24 "unconnected-(U101-Pad24)") + (net 25 "unconnected-(U101-Pad27)") + (net 26 "unconnected-(U101-Pad28)") + (net 27 "unconnected-(U101-Pad29)") + (net 28 "unconnected-(U101-Pad30)") + (net 29 "unconnected-(U101-Pad31)") + (net 30 "unconnected-(U101-Pad32)") + (net 31 "unconnected-(U101-Pad33)") + (net 32 "unconnected-(U101-Pad34)") + (net 33 "unconnected-(U101-Pad35)") + (net 34 "unconnected-(U101-Pad36)") + (net 35 "unconnected-(U101-Pad37)") + (net 36 "unconnected-(U101-Pad38)") + (net 37 "unconnected-(U101-Pad39)") + (net 38 "unconnected-(U101-Pad25)") + (net 39 "unconnected-(U101-Pad26)") (footprint "MountingHole:MountingHole_2.5mm_Pad" (layer "F.Cu") (tedit 56D1B4CB) (tstamp 7485bdea-c308-4764-8fda-8a0919bd8d2d) @@ -126,7 +124,7 @@ (property "Sheetname" "") (path "/1ca854b6-fa72-4706-8d20-31a710f3f33c") (attr exclude_from_pos_files) - (fp_text reference "H1" (at 0 -3.5) (layer "F.SilkS") + (fp_text reference "H101" (at 0 -3.5) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 1bc5891f-b4fb-4096-a7c6-00a9002ac9bd) ) @@ -144,149 +142,154 @@ ) (footprint "Espressif:ESP32-S2-SOLO" (layer "F.Cu") - (tedit 60FECD9E) (tstamp a30b5704-3e10-4af4-9f8b-3087e45ada14) - (at 132.865 111.835) + (tedit 60FECD9E) (tstamp 917a62ab-a9b7-453d-a16e-894d67fe2447) + (at 141.732 111.76) (descr "ESP32-S2-SOLO https://www.espressif.com/sites/default/files/documentation/esp32-s2-solo_esp32-s2-solo-u_datasheet_en.pdf") (tags "esp32-s2 module") (property "Sheetfile" "BattleBot_Motherboard.kicad_sch") (property "Sheetname" "") (path "/be5f784a-be17-4300-97a7-e317142c7f33") (attr smd) - (fp_text reference "U1" (at 0 -17.05) (layer "F.SilkS") + (fp_text reference "U101" (at 0 -17.05) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) - (tstamp 7c225315-0485-448b-bf84-c21b558231a9) + (tstamp 26682dad-3ab6-4334-a5f4-1edaee379394) ) (fp_text value "ESP32-S2-SOLO" (at 0 12) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) - (tstamp d6116112-28b2-4d9b-9b55-e5d32537dfa3) + (tstamp b834037e-ea57-48fd-a923-70e1bcada3d6) ) (fp_text user "Antenna Area" (at 0 -12.75) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) - (tstamp 6deae973-29af-4210-9042-d8b19621508b) + (tstamp 62ff751f-9ac6-45d5-9083-1e43ba146197) ) (fp_text user "Antenna Area" (at 0 -12.75) (layer "Eco2.User") (effects (font (size 1 1) (thickness 0.15))) - (tstamp ae13a577-70ee-429f-b175-c753fe5ec02d) + (tstamp 07da0212-dd58-4a3a-8729-0ba25d96045a) ) (fp_text user "REF**" (at 0 0) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) - (tstamp 54d4b9f2-9916-4087-82d5-bf30612e940a) + (tstamp 3580da1a-d575-4a3c-83d5-507e3f0e279d) ) - (fp_line (start -9 9.75) (end -8 9.75) (layer "F.SilkS") (width 0.12) (tstamp 01885d44-7855-4271-9700-6cc809fd2fcc)) - (fp_line (start -9 9) (end -9 9.75) (layer "F.SilkS") (width 0.12) (tstamp 14a4a3f8-2bc2-4340-b6ad-6fa1627d7e61)) - (fp_line (start 9 -15.75) (end 9 -9) (layer "F.SilkS") (width 0.12) (tstamp 1b104a3f-bdfe-499c-a42a-87e125763ee9)) - (fp_line (start 9 9) (end 9 9.75) (layer "F.SilkS") (width 0.12) (tstamp 24037655-d911-4d65-82fd-521b0e38040e)) - (fp_line (start -9 -15.75) (end 9 -15.75) (layer "F.SilkS") (width 0.12) (tstamp 56655816-2f4e-4eaf-98bb-d64482b330b2)) - (fp_line (start -9 -15.75) (end -9 -9) (layer "F.SilkS") (width 0.12) (tstamp c801e053-1939-4f96-aad4-7369b54203e8)) - (fp_line (start 9 9.75) (end 8 9.75) (layer "F.SilkS") (width 0.12) (tstamp cbe8e10d-8555-4e1c-b6a3-0f73361381a8)) - (fp_line (start 9 -9.81) (end -9 -9.81) (layer "F.SilkS") (width 0.12) (tstamp fc3c9229-e949-4049-97e2-b4acf221373d)) - (fp_line (start -9 -15.75) (end 9 -15.75) (layer "Eco2.User") (width 0.12) (tstamp 00122f7a-cb8f-4193-9b1d-4d49f4c98acd)) - (fp_line (start 9 9.75) (end -9 9.75) (layer "Eco2.User") (width 0.12) (tstamp 5cfb2310-d88d-4b44-96b7-a663c685148f)) - (fp_line (start -9 -9.81) (end 9 -9.81) (layer "Eco2.User") (width 0.12) (tstamp 600678d1-7ad8-46ed-b07c-28067cdf8306)) - (fp_line (start -9 9.75) (end -9 -15.75) (layer "Eco2.User") (width 0.12) (tstamp a81cc976-8466-4257-9346-85f7dce370d8)) - (fp_line (start 9 -15.75) (end 9 9.75) (layer "Eco2.User") (width 0.12) (tstamp b6767de3-c956-4d72-9404-3019054565a5)) - (fp_line (start -9.8 10.55) (end 9.8 10.55) (layer "F.CrtYd") (width 0.12) (tstamp 16256f44-f9ec-4809-8b3d-f8fd162ac17f)) - (fp_line (start 9.8 -16.05) (end -9.8 -16.05) (layer "F.CrtYd") (width 0.12) (tstamp 6b7a8942-ee96-437d-bd9f-08b90b7bc0fd)) - (fp_line (start 9.8 -16.05) (end 9.8 10.55) (layer "F.CrtYd") (width 0.12) (tstamp a06f0b70-0535-487b-952f-348f35b8f6a8)) - (fp_line (start -9.8 -16.05) (end -9.8 10.55) (layer "F.CrtYd") (width 0.12) (tstamp ca93df12-12f6-49c2-ae12-b5988e8d452e)) + (fp_line (start -9 -15.75) (end -9 -9) (layer "F.SilkS") (width 0.12) (tstamp 01e8af55-7133-425a-9ac2-c60223462334)) + (fp_line (start 9 9) (end 9 9.75) (layer "F.SilkS") (width 0.12) (tstamp 180f376a-286a-4e65-b829-8201607e6e44)) + (fp_line (start -9 9) (end -9 9.75) (layer "F.SilkS") (width 0.12) (tstamp 4355ddfc-33f4-4ee3-a31a-6f5881cb19f2)) + (fp_line (start 9 -15.75) (end 9 -9) (layer "F.SilkS") (width 0.12) (tstamp 822d6386-a5f7-4294-91c2-3bc6aec0cb29)) + (fp_line (start 9 9.75) (end 8 9.75) (layer "F.SilkS") (width 0.12) (tstamp b3ab074d-c73b-4528-a921-12c2aea79ebd)) + (fp_line (start 9 -9.81) (end -9 -9.81) (layer "F.SilkS") (width 0.12) (tstamp c9242553-9ad2-4eb2-ba80-3637d1574835)) + (fp_line (start -9 9.75) (end -8 9.75) (layer "F.SilkS") (width 0.12) (tstamp f2366ec4-8e11-411e-8d5d-2e69963d5607)) + (fp_line (start -9 -15.75) (end 9 -15.75) (layer "F.SilkS") (width 0.12) (tstamp fad4409c-8669-4b06-b0e8-51a67394b319)) + (fp_line (start 9 -15.75) (end 9 9.75) (layer "Eco2.User") (width 0.12) (tstamp 68ba4ddc-904d-4c1f-a454-00c4689a48d8)) + (fp_line (start -9 9.75) (end -9 -15.75) (layer "Eco2.User") (width 0.12) (tstamp 83cb5301-9dea-41fe-ab8e-01285819165d)) + (fp_line (start 9 9.75) (end -9 9.75) (layer "Eco2.User") (width 0.12) (tstamp a05f8c6e-3690-4f7d-a8b1-193c0876e137)) + (fp_line (start -9 -9.81) (end 9 -9.81) (layer "Eco2.User") (width 0.12) (tstamp cf34c5a8-98f8-49c1-bbfa-f42a36d862d0)) + (fp_line (start -9 -15.75) (end 9 -15.75) (layer "Eco2.User") (width 0.12) (tstamp f703d94f-a349-45e7-a354-6d78bd869502)) + (fp_line (start -9.8 -16.05) (end -9.8 10.55) (layer "F.CrtYd") (width 0.12) (tstamp 77363930-4d78-4f5d-b30f-049b0886c096)) + (fp_line (start 9.8 -16.05) (end -9.8 -16.05) (layer "F.CrtYd") (width 0.12) (tstamp d97abde7-8f47-4d36-bca1-a66ef97d4074)) + (fp_line (start -9.8 10.55) (end 9.8 10.55) (layer "F.CrtYd") (width 0.12) (tstamp dc3b141c-a303-4f96-aa7e-67242d2e54f2)) + (fp_line (start 9.8 -16.05) (end 9.8 10.55) (layer "F.CrtYd") (width 0.12) (tstamp dd9ed2b7-929f-42b6-ba6a-f77ec7ffe184)) (pad "1" smd rect locked (at -8.75 -8.26) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 16 "unconnected-(U1-Pad1)") (pinfunction "GND") (pintype "power_in") (tstamp 9244c137-5662-4183-82d9-388cdbe6cd1f)) + (net 14 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 43b77fb4-54f3-4d8d-8c77-76af6dc2f7d3)) (pad "2" smd rect locked (at -8.75 -6.99) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 15 "unconnected-(U1-Pad2)") (pinfunction "3V3") (pintype "power_in") (tstamp bce546fd-f044-464d-8192-1da0015cfe4e)) + (net 13 "+3V3") (pinfunction "3V3") (pintype "power_in") (tstamp 8e3dabb8-e038-4831-98b7-39a44de179d9)) (pad "3" smd rect locked (at -8.75 -5.72) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 14 "unconnected-(U1-Pad3)") (pinfunction "EN") (pintype "bidirectional") (tstamp f698bb2b-f699-4348-a176-104d728dc2f7)) + (net 12 "unconnected-(U101-Pad3)") (pinfunction "EN") (pintype "bidirectional") (tstamp 5fedccbc-5d18-49fc-aa00-d0590d2c91f7)) (pad "4" smd rect locked (at -8.75 -4.45) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 13 "unconnected-(U1-Pad4)") (pinfunction "GPIO4/TOUCH4/ADC1_CH3") (pintype "bidirectional") (tstamp 44da0ceb-7410-4a2a-9e41-939ac06de063)) + (net 11 "unconnected-(U101-Pad4)") (pinfunction "GPIO4/TOUCH4/ADC1_CH3") (pintype "bidirectional") (tstamp 1fbbcd67-3c73-45e1-9e77-0077ec1cda43)) (pad "5" smd rect locked (at -8.75 -3.18) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 12 "unconnected-(U1-Pad5)") (pinfunction "GPIO5/TOUCH5/ADC1_CH4") (pintype "bidirectional") (tstamp 64e4856a-ab29-4f74-ab8f-7c8f905d3678)) + (net 10 "unconnected-(U101-Pad5)") (pinfunction "GPIO5/TOUCH5/ADC1_CH4") (pintype "bidirectional") (tstamp d034e182-e67c-422a-9369-3c47e41920c4)) (pad "6" smd rect locked (at -8.75 -1.91) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 11 "unconnected-(U1-Pad6)") (pinfunction "GPIO6/TOUCH6/ADC1_CH5") (pintype "bidirectional") (tstamp 60b6144a-b98b-4982-931d-771d6c77092f)) + (net 9 "unconnected-(U101-Pad6)") (pinfunction "GPIO6/TOUCH6/ADC1_CH5") (pintype "bidirectional") (tstamp e118abf4-3d93-4410-bb75-4c10ac8f9c58)) (pad "7" smd rect locked (at -8.75 -0.64) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 10 "unconnected-(U1-Pad7)") (pinfunction "GPIO7/TOUCH7/ADC1_CH6") (pintype "bidirectional") (tstamp 3c2f7bc9-11cc-4657-81dc-c7368b59652b)) + (net 8 "unconnected-(U101-Pad7)") (pinfunction "GPIO7/TOUCH7/ADC1_CH6") (pintype "bidirectional") (tstamp d7cae748-6fce-40c1-85e5-2d8c6c829f66)) (pad "8" smd rect locked (at -8.75 0.63) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 9 "unconnected-(U1-Pad8)") (pinfunction "GPIO15/U0RTS/ADC2_CH4/XTAL_32K_P") (pintype "bidirectional") (tstamp 18ef2588-0d8d-4d81-a8a7-07ff73311e38)) + (net 7 "unconnected-(U101-Pad8)") (pinfunction "GPIO15/U0RTS/ADC2_CH4/XTAL_32K_P") (pintype "bidirectional") (tstamp d9aced33-2c6b-47b3-843a-515e9051c577)) (pad "9" smd rect locked (at -8.75 1.9) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 8 "unconnected-(U1-Pad9)") (pinfunction "GPIO16/U0CTS/ADC2_CH5/XTAL_32K_N") (pintype "bidirectional") (tstamp 6c619cf0-955e-4a53-9164-4bc601f01782)) + (net 6 "unconnected-(U101-Pad9)") (pinfunction "GPIO16/U0CTS/ADC2_CH5/XTAL_32K_N") (pintype "bidirectional") (tstamp 822cd8c3-87b4-4b99-97e0-eb9c1f47113f)) (pad "10" smd rect locked (at -8.75 3.17) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 7 "unconnected-(U1-Pad10)") (pinfunction "GPIO17/U1TXD/ADC2_CH6/DAC_1") (pintype "bidirectional") (tstamp b4045e28-69ae-42fe-a446-85e90d4281b6)) + (net 5 "unconnected-(U101-Pad10)") (pinfunction "GPIO17/U1TXD/ADC2_CH6/DAC_1") (pintype "bidirectional") (tstamp 62a0e673-7f0f-4894-b79c-fb2569eff903)) (pad "11" smd rect locked (at -8.75 4.44) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 6 "unconnected-(U1-Pad11)") (pinfunction "GPIO18/U1RXD/ADC2_CH7/DAC_2/CLK_OUT3") (pintype "bidirectional") (tstamp 11e43be2-9e54-41ba-931e-b30f690e061d)) + (net 4 "unconnected-(U101-Pad11)") (pinfunction "GPIO18/U1RXD/ADC2_CH7/DAC_2/CLK_OUT3") (pintype "bidirectional") (tstamp f4ab8498-0c98-4bb9-8cfb-9c15c512f47c)) (pad "12" smd rect locked (at -8.75 5.71) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 5 "unconnected-(U1-Pad12)") (pinfunction "GPIO8/TOUCH8/ADC1_CH7") (pintype "bidirectional") (tstamp f957c373-b32a-4d48-95b6-ee2f94d3bb4b)) + (net 3 "unconnected-(U101-Pad12)") (pinfunction "GPIO8/TOUCH8/ADC1_CH7") (pintype "bidirectional") (tstamp 258e4210-2a3d-4d73-9421-d276ca416ebf)) (pad "13" smd rect locked (at -8.75 6.98) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 4 "unconnected-(U1-Pad13)") (pinfunction "GPIO19/U1RTS/ADC2_CH8/CLK_OUT2/USB_D-") (pintype "bidirectional") (tstamp 9c3c3f87-71dd-459e-adc1-f9a46f7289f6)) + (net 2 "unconnected-(U101-Pad13)") (pinfunction "GPIO19/U1RTS/ADC2_CH8/CLK_OUT2/USB_D-") (pintype "bidirectional") (tstamp 276fb266-1f66-444d-8dee-332e871f4731)) (pad "14" smd rect locked (at -8.75 8.25) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 3 "unconnected-(U1-Pad14)") (pinfunction "GPIO20/U1CTS/ADC2_CH9/CLK_OUT1/USB_D+") (pintype "bidirectional") (tstamp 2f32e74e-6d6d-450e-8f3d-b6fc4e70c684)) + (net 1 "unconnected-(U101-Pad14)") (pinfunction "GPIO20/U1CTS/ADC2_CH9/CLK_OUT1/USB_D+") (pintype "bidirectional") (tstamp ad7e18e5-ef2e-4481-a27d-3906ef2bb670)) (pad "15" smd rect locked (at -6.985 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 2 "unconnected-(U1-Pad15)") (pinfunction "GPIO3/TOUCH3/ADC1_CH2") (pintype "bidirectional") (tstamp 6057585b-e475-46e1-a83e-9e7c1eb356f5)) + (net 15 "unconnected-(U101-Pad15)") (pinfunction "GPIO3/TOUCH3/ADC1_CH2") (pintype "bidirectional") (tstamp b8a458af-c229-4d40-ba45-62729ab0d12b)) (pad "16" smd rect locked (at -5.715 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 1 "unconnected-(U1-Pad16)") (pinfunction "GPIO46") (pintype "input") (tstamp 4a80f509-b9fb-4719-97de-92e6d3444ac8)) + (net 16 "unconnected-(U101-Pad16)") (pinfunction "GPIO46") (pintype "input") (tstamp 6af8d279-5bf2-4727-8c45-8d43e0d1d6e9)) (pad "17" smd rect locked (at -4.445 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 17 "unconnected-(U1-Pad17)") (pinfunction "GPIO9/TOUCH9/ADC1_CH8/FSPIHD") (pintype "bidirectional") (tstamp 9b1e2588-c980-4c9a-a17e-419a71469ba0)) + (net 17 "unconnected-(U101-Pad17)") (pinfunction "GPIO9/TOUCH9/ADC1_CH8/FSPIHD") (pintype "bidirectional") (tstamp fa1d4729-b4df-4d98-8aa5-d1c12fbf7155)) (pad "18" smd rect locked (at -3.175 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 18 "unconnected-(U1-Pad18)") (pinfunction "GPIO10/TOUCH10/ADC1_CH9/FSPICS0/FSPIIO4") (pintype "bidirectional") (tstamp 0aed695f-2ab0-4aa1-af1c-6a198525542b)) + (net 18 "unconnected-(U101-Pad18)") (pinfunction "GPIO10/TOUCH10/ADC1_CH9/FSPICS0/FSPIIO4") (pintype "bidirectional") (tstamp 0421244f-4467-4d8d-bc85-482e9b2b3ea6)) (pad "19" smd rect locked (at -1.905 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 19 "unconnected-(U1-Pad19)") (pinfunction "GPIO11/TOUCH11/ADC2_CH0/FSPID/FSPIIO5") (pintype "bidirectional") (tstamp 2351f8b4-4acc-44cd-bc30-e0366403bd89)) + (net 19 "unconnected-(U101-Pad19)") (pinfunction "GPIO11/TOUCH11/ADC2_CH0/FSPID/FSPIIO5") (pintype "bidirectional") (tstamp 8036e7dc-75b1-4857-b987-3c192773b929)) (pad "20" smd rect locked (at -0.635 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 20 "unconnected-(U1-Pad20)") (pinfunction "GPIO12/TOUCH12/ADC2_CH1/FSPICLK/FSPIIO6") (pintype "bidirectional") (tstamp ff55db1a-6b4a-408f-bce8-99dcfe2a2dcc)) + (net 20 "unconnected-(U101-Pad20)") (pinfunction "GPIO12/TOUCH12/ADC2_CH1/FSPICLK/FSPIIO6") (pintype "bidirectional") (tstamp e63b41b9-9fad-4b85-bcd3-e87e9e7212df)) (pad "21" smd rect locked (at 0.635 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 21 "unconnected-(U1-Pad21)") (pinfunction "GPIO13/TOUCH13/ADC2_CH2/FSPIQ/FSPIIO7") (pintype "bidirectional") (tstamp 1f93ece9-18d1-4295-8900-c2bae74ef5eb)) + (net 21 "unconnected-(U101-Pad21)") (pinfunction "GPIO13/TOUCH13/ADC2_CH2/FSPIQ/FSPIIO7") (pintype "bidirectional") (tstamp 5db16e12-ec27-4a0a-a28a-027d4631b0ea)) (pad "22" smd rect locked (at 1.905 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 22 "unconnected-(U1-Pad22)") (pinfunction "GPIO14/TOUCH14/ADC2_CH3/FSPIWP/FSPIDQS") (pintype "bidirectional") (tstamp abf08d50-6907-4ab2-891a-c5a72cfe2fa5)) + (net 22 "unconnected-(U101-Pad22)") (pinfunction "GPIO14/TOUCH14/ADC2_CH3/FSPIWP/FSPIDQS") (pintype "bidirectional") (tstamp 92eb3150-c71b-46af-8b3d-00d7a5f3d2a8)) (pad "23" smd rect locked (at 3.175 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 23 "unconnected-(U1-Pad23)") (pinfunction "GPIO21") (pintype "bidirectional") (tstamp df3951a6-8589-4bfc-8374-c6867718aae4)) + (net 23 "unconnected-(U101-Pad23)") (pinfunction "GPIO21") (pintype "bidirectional") (tstamp 5c3fde48-dc67-4d3d-a8bf-66b6d93bfd5d)) (pad "24" smd rect locked (at 4.445 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 24 "unconnected-(U1-Pad24)") (pinfunction "SPIIO4/GPIO33/FSPIHD") (pintype "bidirectional") (tstamp 0a997e92-5379-4a27-9934-d81ae61b495e)) + (net 24 "unconnected-(U101-Pad24)") (pinfunction "SPIIO4/GPIO33/FSPIHD") (pintype "bidirectional") (tstamp d41e7413-ba82-4ac2-9493-23edc5dc9c73)) (pad "25" smd rect locked (at 5.715 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 25 "unconnected-(U1-Pad25)") (pinfunction "SPIIO5/GPIO34/FSPICS0") (pintype "bidirectional") (tstamp c008794e-3dfd-4b3d-ba11-59bff75a95dd)) + (net 38 "unconnected-(U101-Pad25)") (pinfunction "SPIIO5/GPIO34/FSPICS0") (pintype "bidirectional") (tstamp 98bd3ad3-73af-4654-a5a9-2b20a9d65c3a)) (pad "26" smd rect locked (at 6.985 9.5 90) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 26 "unconnected-(U1-Pad26)") (pinfunction "GPIO45") (pintype "bidirectional") (tstamp d6c5e37d-56a7-489b-8794-ff25beae73ed)) + (net 39 "unconnected-(U101-Pad26)") (pinfunction "GPIO45") (pintype "bidirectional") (tstamp e4394603-f9c6-4971-b99a-3a65b4c6c354)) (pad "27" smd rect locked (at 8.75 8.25 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 27 "unconnected-(U1-Pad27)") (pinfunction "GPIO0") (pintype "bidirectional") (tstamp 4e111928-f76d-4319-8581-5b10d44611ef)) + (net 25 "unconnected-(U101-Pad27)") (pinfunction "GPIO0") (pintype "bidirectional") (tstamp aaf4adc9-df5b-4fba-b0f4-08b18e52eafe)) (pad "28" smd rect locked (at 8.75 6.98 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 28 "unconnected-(U1-Pad28)") (pinfunction "SPIIO6/GPIO35/FSPID") (pintype "bidirectional") (tstamp 0ddf81b3-c3ce-4c88-acd4-0e418c02b9bb)) + (net 26 "unconnected-(U101-Pad28)") (pinfunction "SPIIO6/GPIO35/FSPID") (pintype "bidirectional") (tstamp 07663dc5-c64b-457a-b500-65fe72066fe4)) (pad "29" smd rect locked (at 8.75 5.71 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 29 "unconnected-(U1-Pad29)") (pinfunction "SPIIO7/GPIO36/FSPICLK") (pintype "bidirectional") (tstamp ac8d149c-d879-4c54-93f5-6bfdad4aa603)) + (net 27 "unconnected-(U101-Pad29)") (pinfunction "SPIIO7/GPIO36/FSPICLK") (pintype "bidirectional") (tstamp d71b3fd3-5700-4932-8fe6-7548815c12ac)) (pad "30" smd rect locked (at 8.75 4.44 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 30 "unconnected-(U1-Pad30)") (pinfunction "SPIDQS/GPIO37/FSPIQ") (pintype "bidirectional") (tstamp 5b327fee-b0f3-4296-8055-4f6b34848f70)) + (net 28 "unconnected-(U101-Pad30)") (pinfunction "SPIDQS/GPIO37/FSPIQ") (pintype "bidirectional") (tstamp 97f9d729-5290-46cb-a930-0906e46fb017)) (pad "31" smd rect locked (at 8.75 3.17 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 31 "unconnected-(U1-Pad31)") (pinfunction "GPIO38/FSPIWP") (pintype "bidirectional") (tstamp 8fa09615-f0e6-4d52-b6c2-bc0c4afbe43d)) + (net 29 "unconnected-(U101-Pad31)") (pinfunction "GPIO38/FSPIWP") (pintype "bidirectional") (tstamp 91667399-abf2-4110-9ac5-1b3df111b03b)) (pad "32" smd rect locked (at 8.75 1.9 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 32 "unconnected-(U1-Pad32)") (pinfunction "MTCK/GPIO39/CLK_OUT3") (pintype "bidirectional") (tstamp d78ec8e4-d17b-4101-833f-322a39455809)) + (net 30 "unconnected-(U101-Pad32)") (pinfunction "MTCK/GPIO39/CLK_OUT3") (pintype "bidirectional") (tstamp b1adc389-9561-4a62-b0ce-9d6e24309169)) (pad "33" smd rect locked (at 8.75 0.63 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 33 "unconnected-(U1-Pad33)") (pinfunction "MTDO/GPIO40/CLK_OUT2") (pintype "bidirectional") (tstamp 46aa9259-a4db-40c2-92b1-0b642c576c0e)) + (net 31 "unconnected-(U101-Pad33)") (pinfunction "MTDO/GPIO40/CLK_OUT2") (pintype "bidirectional") (tstamp e4f82b5e-5b14-4189-a67d-98a0ba84c2ac)) (pad "34" smd rect locked (at 8.75 -0.64 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 34 "unconnected-(U1-Pad34)") (pinfunction "MTDI/GPIO41/CLK_OUT1") (pintype "bidirectional") (tstamp e90f4402-b476-4300-8dde-c4e4d1e278ed)) + (net 32 "unconnected-(U101-Pad34)") (pinfunction "MTDI/GPIO41/CLK_OUT1") (pintype "bidirectional") (tstamp 2f526123-5e4b-487a-90ba-492167d03e36)) (pad "35" smd rect locked (at 8.75 -1.91 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 35 "unconnected-(U1-Pad35)") (pinfunction "MTMS/GPIO42") (pintype "bidirectional") (tstamp c0bdd0c5-d021-4742-831b-f790286bce07)) + (net 33 "unconnected-(U101-Pad35)") (pinfunction "MTMS/GPIO42") (pintype "bidirectional") (tstamp 82e518c8-292f-40d4-9a26-d02686d9c1f9)) (pad "36" smd rect locked (at 8.75 -3.18 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 36 "unconnected-(U1-Pad36)") (pinfunction "U0RXD/GPIO44/CLK_OUT2") (pintype "bidirectional") (tstamp f1cbd70a-bd7a-4ff9-8ee4-242cd49d2834)) + (net 34 "unconnected-(U101-Pad36)") (pinfunction "U0RXD/GPIO44/CLK_OUT2") (pintype "bidirectional") (tstamp c23a83c0-e1c3-4717-90d7-f8d3c3caab44)) (pad "37" smd rect locked (at 8.75 -4.45 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 37 "unconnected-(U1-Pad37)") (pinfunction "U0TXD/GPIO43/CLK_OUT1") (pintype "bidirectional") (tstamp 2cc1d6f8-6c93-49f8-89b0-68df3056ff3e)) + (net 35 "unconnected-(U101-Pad37)") (pinfunction "U0TXD/GPIO43/CLK_OUT1") (pintype "bidirectional") (tstamp 88f68640-4e30-4271-bbc2-8f2fce9b5599)) (pad "38" smd rect locked (at 8.75 -5.72 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 38 "unconnected-(U1-Pad38)") (pinfunction "GPIO2/TOUCH2/ADC1_CH1") (pintype "bidirectional") (tstamp 4ccc6398-b1dc-4b42-91e9-3d7dd2c5b9e9)) + (net 36 "unconnected-(U101-Pad38)") (pinfunction "GPIO2/TOUCH2/ADC1_CH1") (pintype "bidirectional") (tstamp 55ae5ec4-932d-4614-8f45-fa7399c126cd)) (pad "39" smd rect locked (at 8.75 -6.99 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 39 "unconnected-(U1-Pad39)") (pinfunction "GPIO1/TOUCH1/ADC1_CH0") (pintype "bidirectional") (tstamp 5a3f2ffc-6c7a-4575-a534-f74f64ef2e80)) + (net 37 "unconnected-(U101-Pad39)") (pinfunction "GPIO1/TOUCH1/ADC1_CH0") (pintype "bidirectional") (tstamp b36dea68-b257-440c-b576-16c608a6968d)) (pad "40" smd rect locked (at 8.75 -8.26 180) (size 1.5 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 40 "unconnected-(U1-Pad40)") (pinfunction "GND") (pintype "input") (tstamp a37a0167-552c-41c0-8ab2-306cb502886c)) - (pad "41" smd rect locked (at -1.5 -0.54 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp 1497db34-e245-4391-91d5-caae6f2280f9)) - (pad "41" smd rect locked (at -1.5 0.86 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp 1c23bf0f-1b05-49d8-8d9b-9a73006b2825)) + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp cd3866f1-c719-497f-a691-fd4075ec7e7c)) (pad "41" smd rect locked (at -2.9 -0.54 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp 51dc438b-9ba2-4caa-aef1-c80518259d52)) + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp 04201084-f14e-4eba-940a-caa0d0ec2ff7)) + (pad "41" smd rect locked (at -2.9 0.86 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp 1142687d-6d62-4c1b-9d96-717ff74a5865)) + (pad "41" smd rect locked (at -1.5 -1.94 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp 236c8369-ef80-4078-9fa6-398a98c4927d)) (pad "41" smd rect locked (at -0.1 -0.54 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp 7610f801-b865-402c-b226-db97daac3f57)) + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp 249bc938-4d7d-4537-bb3d-39afd03096ba)) (pad "41" smd rect locked (at -2.9 -1.94 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp 7d0e30f9-ecfc-45fa-9f34-7970b51843e3)) - (pad "41" smd rect locked (at -1.5 -1.94 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp 882b609b-0ae4-43d1-ae80-98ee3efad68d)) + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp 510df655-d869-4b9e-b022-eb3a50805789)) (pad "41" smd rect locked (at -0.1 -1.94 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp f19329b1-88e5-44c1-b1af-da2d1811e57c)) - (pad "41" smd rect locked (at -2.9 0.86 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp f5bb2452-5b71-492a-aa9e-7ad81b9b4089)) + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp 6369167a-b069-4f30-bbac-05f781491205)) (pad "41" smd rect locked (at -0.1 0.86 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "unconnected-(U1-Pad41)") (pinfunction "GND") (pintype "input") (tstamp ff63a6be-9a28-42fd-9f12-21cd9aabea34)) + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp 6cd3cc99-eeda-4e52-80b0-1cae8d8bac6c)) + (pad "41" smd rect locked (at -1.5 -0.54 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp a91d0d79-7fbd-4e89-9088-1d0e89b7e03f)) + (pad "41" smd rect locked (at -1.5 0.86 180) (size 0.9 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (net 14 "GND") (pinfunction "GND") (pintype "input") (tstamp bec42388-41a5-4f2c-b8de-5740660f01bd)) + (model "${ESPRESSIF_3DMODELS}/ESP32-WROOM-32E.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) ) (footprint "MountingHole:MountingHole_2.5mm_Pad" (layer "F.Cu") @@ -298,7 +301,7 @@ (property "Sheetname" "") (path "/51545956-afdd-4ba3-8cf1-1a9677f0be42") (attr exclude_from_pos_files) - (fp_text reference "H3" (at 0 -3.5) (layer "F.SilkS") + (fp_text reference "H103" (at 0 -3.5) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp cff75d49-e400-433e-96af-8ecc0ffc8bc5) ) @@ -324,7 +327,7 @@ (property "Sheetname" "") (path "/a397076e-32f4-4b81-aa06-446fc3c851d9") (attr exclude_from_pos_files) - (fp_text reference "H2" (at 0 -3.5) (layer "F.SilkS") + (fp_text reference "H102" (at 0 -3.5) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp a6944de9-4199-43c7-a2d8-2f045cf8e8df) ) @@ -350,7 +353,7 @@ (property "Sheetname" "") (path "/db284038-3452-455e-8453-88d57db2c118") (attr exclude_from_pos_files) - (fp_text reference "H4" (at 0 -3.5) (layer "F.SilkS") + (fp_text reference "H104" (at 0 -3.5) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 730cf5d6-a5fd-41c2-bb91-5ea9142bf433) ) diff --git a/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_sch b/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_sch index 85369b7..1057e74 100644 --- a/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_sch +++ b/Hardware/BattleBot_Motherboard/BattleBot_Motherboard.kicad_sch @@ -465,10 +465,10 @@ (symbol (lib_id "power:GND") (at 200.66 114.3 0) (unit 1) (in_bom yes) (on_board yes) (uuid 05219430-e0c9-4db7-944a-06d914af11a5) - (property "Reference" "#PWR0101" (id 0) (at 200.66 120.65 0) + (property "Reference" "#PWR0103" (id 0) (at 200.66 120.65 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Value" "" (id 1) (at 200.66 118.11 0)) + (property "Value" "GND" (id 1) (at 200.66 118.11 0)) (property "Footprint" "" (id 2) (at 200.66 114.3 0) (effects (font (size 1.27 1.27)) hide) ) @@ -481,7 +481,7 @@ (symbol (lib_id "Mechanical:MountingHole") (at 19.05 21.59 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 1ca854b6-fa72-4706-8d20-31a710f3f33c) - (property "Reference" "H1" (id 0) (at 21.59 20.3199 0) + (property "Reference" "H101" (id 0) (at 21.59 20.3199 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "MountingHole" (id 1) (at 21.59 22.8599 0) @@ -514,7 +514,7 @@ (symbol (lib_id "Mechanical:MountingHole") (at 19.05 34.29 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 51545956-afdd-4ba3-8cf1-1a9677f0be42) - (property "Reference" "H3" (id 0) (at 21.59 33.0199 0) + (property "Reference" "H103" (id 0) (at 21.59 33.0199 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "MountingHole" (id 1) (at 21.59 35.5599 0) @@ -531,10 +531,10 @@ (symbol (lib_id "power:+3.3V") (at 107.95 101.6 0) (unit 1) (in_bom yes) (on_board yes) (uuid 6f89c48b-e268-40d2-a5d4-4f8eaf2e354e) - (property "Reference" "#PWR0103" (id 0) (at 107.95 105.41 0) + (property "Reference" "#PWR0101" (id 0) (at 107.95 105.41 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Value" "" (id 1) (at 107.95 97.79 0)) + (property "Value" "+3.3V" (id 1) (at 107.95 97.79 0)) (property "Footprint" "" (id 2) (at 107.95 101.6 0) (effects (font (size 1.27 1.27)) hide) ) @@ -547,10 +547,10 @@ (symbol (lib_id "Device:C_Small") (at 107.95 110.49 0) (unit 1) (in_bom yes) (on_board yes) (uuid 8b330970-4632-412a-8c11-4d67e7df8c7c) - (property "Reference" "C?" (id 0) (at 109.22 109.22 0) + (property "Reference" "C101" (id 0) (at 109.22 109.22 0) (effects (font (size 1.27 1.27)) (justify left)) ) - (property "Value" "" (id 1) (at 109.22 113.03 0) + (property "Value" "0.1uf" (id 1) (at 109.22 113.03 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Footprint" "" (id 2) (at 107.95 110.49 0) @@ -566,7 +566,7 @@ (symbol (lib_id "Mechanical:MountingHole") (at 19.05 27.94 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid a397076e-32f4-4b81-aa06-446fc3c851d9) - (property "Reference" "H2" (id 0) (at 21.59 26.6699 0) + (property "Reference" "H102" (id 0) (at 21.59 26.6699 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "MountingHole" (id 1) (at 21.59 29.2099 0) @@ -583,9 +583,9 @@ (symbol (lib_id "Espressif:ESP32-S2-SOLO") (at 153.67 64.77 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid be5f784a-be17-4300-97a7-e317142c7f33) - (property "Reference" "U1" (id 0) (at 153.67 17.78 0)) - (property "Value" "" (id 1) (at 153.67 20.32 0)) - (property "Footprint" "" (id 2) (at 153.67 114.3 0) + (property "Reference" "U101" (id 0) (at 153.67 17.78 0)) + (property "Value" "ESP32-S2-SOLO" (id 1) (at 153.67 20.32 0)) + (property "Footprint" "Espressif:ESP32-S2-SOLO" (id 2) (at 153.67 114.3 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-s2-solo_esp32-s2-solo-u_datasheet_en.pdf" (id 3) (at 160.02 67.31 0) @@ -637,7 +637,7 @@ (symbol (lib_id "Mechanical:MountingHole") (at 19.05 40.64 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid db284038-3452-455e-8453-88d57db2c118) - (property "Reference" "H4" (id 0) (at 21.59 39.3699 0) + (property "Reference" "H104" (id 0) (at 21.59 39.3699 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "MountingHole" (id 1) (at 21.59 41.9099 0) @@ -656,32 +656,32 @@ ) (symbol_instances - (path "/05219430-e0c9-4db7-944a-06d914af11a5" - (reference "#PWR0101") (unit 1) (value "GND") (footprint "") + (path "/6f89c48b-e268-40d2-a5d4-4f8eaf2e354e" + (reference "#PWR0101") (unit 1) (value "+3.3V") (footprint "") ) (path "/4d93edd4-3fe5-4a85-a849-429789fe23b4" (reference "#PWR0102") (unit 1) (value "GND") (footprint "") ) - (path "/6f89c48b-e268-40d2-a5d4-4f8eaf2e354e" - (reference "#PWR0103") (unit 1) (value "+3.3V") (footprint "") + (path "/05219430-e0c9-4db7-944a-06d914af11a5" + (reference "#PWR0103") (unit 1) (value "GND") (footprint "") ) (path "/8b330970-4632-412a-8c11-4d67e7df8c7c" - (reference "C?") (unit 1) (value "0.1uf") (footprint "") + (reference "C101") (unit 1) (value "0.1uf") (footprint "") ) (path "/1ca854b6-fa72-4706-8d20-31a710f3f33c" - (reference "H1") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") + (reference "H101") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") ) (path "/a397076e-32f4-4b81-aa06-446fc3c851d9" - (reference "H2") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") + (reference "H102") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") ) (path "/51545956-afdd-4ba3-8cf1-1a9677f0be42" - (reference "H3") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") + (reference "H103") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") ) (path "/db284038-3452-455e-8453-88d57db2c118" - (reference "H4") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") + (reference "H104") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_2.5mm_Pad") ) (path "/be5f784a-be17-4300-97a7-e317142c7f33" - (reference "U1") (unit 1) (value "ESP32-S2-SOLO") (footprint "Espressif:ESP32-S2-SOLO") + (reference "U101") (unit 1) (value "ESP32-S2-SOLO") (footprint "Espressif:ESP32-S2-SOLO") ) ) ) diff --git a/README.md b/README.md index 1996531..a04fa6d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,28 @@ -# Unnamed Battle Bot +[![Battle Bot Builder](https://github.com/SNHU-Robotics/SumoBot-Joe/actions/workflows/battle_bot_builder.yml/badge.svg)](https://github.com/SNHU-Robotics/SumoBot-Joe/actions/workflows/battle_bot_builder.yml) -Fill me out! +Unnamed Battle Bot +================== + + +# Getting started + +First checkout this projects submodules + +``` +git clone https://github.com/SNHU-Robotics/SumoBot-Joe +git submodule update --init --recursive +``` + +# Hardware + +You will need KiCAD and latex (and kibot if you want to use the included build scripts) + + +# Software + +You will need python and platformio (and make tools if you want to use the build scripts) + + +# Docs + +You will need doxygen and latex (and make a good latex editor) also sphinx