Porównaj commity

...

62 Commity

Autor SHA1 Wiadomość Data
sh123 8a6427f088 Fix issue with RadioLib API changes 2023-12-01 16:37:01 +02:00
sh123 e78e0e8513 Serial tx delay update 2023-11-17 15:49:48 +02:00
sh123 cf99eb014d Avoid switching to rx on each packet 2023-11-17 14:25:06 +02:00
sh123 b89a13680e Handle control data escape 2023-11-17 14:25:06 +02:00
sh123 0a43429b1c Convert to khz 2023-11-17 14:25:06 +02:00
sh123 2083f946d9 Update SetHardware command 2023-11-17 14:25:06 +02:00
sh123 3e90abd47f
Update README.md 2023-11-16 17:17:21 +02:00
sh123 127ccbe072 Add support for FSK modulation 2023-11-16 17:15:52 +02:00
sh123 4794ee4f61 Updated Espressif and libraries to latest version 2023-11-12 16:14:46 +02:00
sh123 77515ce9f7 Merge branch 'master' of https://github.com/sh123/esp32_loraprs 2023-08-09 17:12:40 +03:00
sh123 7345b1ee08 Added lora32-v2 env 2023-08-09 17:12:21 +03:00
sh123 99b4f97116
Update README.md 2023-03-18 22:16:29 +02:00
sh123 6ad59c9599
Update README.md 2023-03-18 22:15:40 +02:00
sh123 a24a39c98b
Update README.md 2023-03-18 22:14:54 +02:00
sh123 03d40ebf9c
Update README.md 2023-03-18 22:14:18 +02:00
sh123 d9b41b5888
Update README.md 2023-03-18 22:13:32 +02:00
sh123 7f56629f90
Update README.md 2023-03-18 22:12:32 +02:00
sh123 fd92d2e049 Merge branch 'master' of https://github.com/sh123/esp32_loraprs 2023-03-18 22:10:42 +02:00
sh123 68284bf975 Cleanup 2023-03-18 22:10:28 +02:00
sh123 6c587f1861 Added wide board pcb 2023-03-18 22:09:23 +02:00
sh123 0cfb99bce6
Update README.md 2023-03-18 21:33:04 +02:00
sh123 5dbc192dd7
Update README.md 2023-03-18 21:32:39 +02:00
sh123 9f977043cb
Update README.md 2023-03-18 21:28:20 +02:00
sh123 cc19becdf9 Merge branch 'master' of https://github.com/sh123/esp32_loraprs 2023-03-18 21:02:31 +02:00
sh123 fd387c3f00 Fix lib table 2023-03-18 21:02:13 +02:00
sh123 8ec92d08d1
Update README.md 2023-03-18 20:53:33 +02:00
sh123 8fd408eba5
Update README.md 2023-03-18 20:52:21 +02:00
sh123 087eb487f2
Update README.md 2023-03-18 20:51:36 +02:00
sh123 b3d2599415
Update README.md 2023-03-18 20:51:17 +02:00
sh123 99e419e3dc
Update README.md 2023-03-18 20:50:28 +02:00
sh123 fd2d407f77 Update espressif and libraries to latest versions 2023-03-15 19:42:40 +02:00
sh123 3540ef3006 Allow to specify preamble length and select modem type from platformio ini 2023-03-15 08:26:07 +02:00
sh123 c203b98d51 Fix typo 2023-01-05 16:07:33 +02:00
sh123 82aedb11fe Allow digirepeating in client mode 2023-01-04 20:04:20 +02:00
sh123 a4fe30319e Add fix for last character loss 2023-01-03 17:50:12 +02:00
sh123 d094d05cd4 Fix for TNC2 digi repeating 2022-12-30 23:43:14 +02:00
sh123 4d653c3fcb Small refactoring 2022-12-29 19:24:39 +02:00
sh123 c2e65d9bf6 Small refactoring 2022-12-29 18:54:13 +02:00
sh123 5f4b5a7ddb Version logging 2022-12-22 21:39:43 +02:00
sh123 9349cd9fc1 Improve half duplex operation 2022-12-22 15:14:37 +02:00
sh123 e3196d4736 Small refactoring 2022-12-21 15:38:52 +02:00
sh123 17a9d652af
Update README.md 2022-12-21 12:12:51 +02:00
sh123 bcecb5b9be
Update README.md 2022-12-21 12:10:59 +02:00
sh123 a403dac65e
Update README.md 2022-12-21 12:09:16 +02:00
sh123 e7b0cbfee3
Update README.md 2022-12-21 12:07:36 +02:00
sh123 72c7a536c7
Update config.h 2022-12-20 16:45:59 +02:00
sh123 3375aa1270 Increase version 2022-12-20 13:17:11 +02:00
sh123 ca926369f9 Fix naming 2022-12-20 13:06:32 +02:00
sh123 2515924479 Minor improvements 2022-12-20 11:02:31 +02:00
sh123 6dc667be62 Split operation fixes 2022-12-20 10:57:29 +02:00
sh123 cc0145a5e8 Styling 2022-12-19 13:36:26 +02:00
sh123 1d480fd245 Code styling 2022-12-19 12:16:14 +02:00
sh123 2cfd838bc3 Removed old file 2022-12-19 12:04:01 +02:00
sh123 e944d26471
Update README.md 2022-12-19 12:01:32 +02:00
sh123 1f53cbd03e
Update README.md 2022-12-19 12:00:15 +02:00
sh123 f4b138edda Added missing lib from schematics 2022-12-19 11:56:04 +02:00
sh123 a7b007cbc4
Update README.md 2022-12-19 11:52:04 +02:00
sh123 d6055f327b
Update README.md 2022-12-19 11:45:08 +02:00
sh123 1469f28c32 Update 2022-12-19 11:43:39 +02:00
sh123 6cb84996f8 Update readme 2022-12-19 11:42:30 +02:00
sh123 0023906d5d Added more models 2022-12-19 11:41:59 +02:00
sh123 42329ca0cc Added more cad models 2022-12-19 11:38:09 +02:00
75 zmienionych plików z 25796 dodań i 2359 usunięć

7
.gitignore vendored
Wyświetl plik

@ -1,2 +1,7 @@
.pio
.vscode
.vscode
*.FCStd1
*.sch-bak
*.kicad_pcb-bak
fp-info-cache
*-cache.lib

Wyświetl plik

@ -1,7 +1,7 @@
# ESP32 LoRa APRS Modem
![Modes of operation](extras/images/diagram.png)
This project is amateur radio ESP32 based LoRa **KISS Bluetooth/BLE/USB/TCPIP** modem + LoRa **APRS-IS RX/TX iGate** server over WiFI + LoRa **APRS digipeater** + **Codec2 DV modem** (with Codec2 Talkie Android application).
This project is amateur radio ESP32 based LoRa/FSK **KISS Bluetooth/BLE/USB/TCPIP** modem + LoRa **APRS-IS RX/TX iGate** server over WiFI + LoRa/FSK **APRS digipeater** + **Codec2 DV modem** (with Codec2 Talkie Android application).
⚠ **To configure sketch modify default parameters in config.h file.**
@ -23,11 +23,16 @@ Modules, which are used by users and known to work
- TTGO T-Beam (SX1276)
# Building
- Update `include/config.h`
- Build for client/tracker mode `pio run -e esp32dev`
- Build for iGate `pio run -e esp32dev_igate`
- Update `include/config.h` with your radio settings
- If you are using lora-aprs iGate (non AX.25) then set `CFG_TEXT_PACKETS` and `CFG_TEXT_PACKETS_3` config parameters to `true` and use APRSDroid TNC2 connection protocol
- To build for client/tracker mode use `pio run -e esp32dev`
- To build for iGate mode use `pio run -e esp32dev_igate`
# Development board
Development board schematics, case and antenna models are available under `extras/cad` and `extras/schematics`.
Development board schematics, case and antenna models are available under `extras/cad` and `extras/schematics`.
Supported ESP32 boards are with 36 and 38 pinouts (configured with solder pads).
⚠ **There are ESP32 boards with different socket widths: 22mm and 25mm, board files for 25mm have _wide suffix in file names.**
![Modes of operation](extras/images/device.png)

Wyświetl plik

@ -7,5 +7,10 @@
👉 Rubber duck antenna spiral widing was done with 1.3mm copper wire on 8mm aluminium scaffolding tube.
**Tracker case**:
- `aprs_tracker_e22_v2` - base for tracker case.
- `aprs_tracker_e22_cover_v2` - upper cover for tracker case.
- `aprs_tracker_e22_base` - base for tracker case without battery compartment.
- `aprs_tracker_e22_cover` - upper cover for headless tracker without any controls.
- `aprs_tracker_e22_antenna_ring` - TPU filament ring placed under antenna.
- `aprs_tracker_e22_base_battery_lid` - lid for battery compartment.
- `aprs_tracker_e22_base_battery` - base for tracker case with battery compartment (for single 18650 with charging + dc-dc 5v converter).
- `aprs_tracker_e22_cover_dv` - DV cover version with holes for screen, encoder, ptt button, speaker, mic.
- `aprs_tracker_e22_encoder_knob` - knob for encoder.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 142 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 142 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 27 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 15 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 15 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 9.2 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 58 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 59 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 66 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 68 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 57 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 59 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 19 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 9.2 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 132 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 116 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 130 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 132 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 45 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 47 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 53 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 53 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 564 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 874 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 134 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 139 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 64 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 66 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 86 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 86 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 39 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 41 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 118 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 105 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 39 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 41 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 31 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 33 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 29 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 31 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 247 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 250 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 147 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 150 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 99 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 101 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 567 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 578 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 23 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 24 KiB

Wyświetl plik

@ -1,6 +1,12 @@
# ESP32 LoRa modem devboard
This is small universal ESP32 devkit LoRa prototyping board for RA-01 or E22-400M30S modules on the same board. Suitable for two different ESP32 devkit types with different pinouts. Pinout configuration is done via solder pads.
This is small universal ESP32 devkit LoRa prototyping board for RA-01 or E22-400M30S modules on the same board.
Suitable for two different narrower ESP32 devkit board types with different pinouts (38 pins and 36 pins).
Pinout configuration is done via solder pads.
⚠ **There are ESP32 boards with different socket widths: 22mm and 25mm, board files for 25mm have _wide suffix in file names.**
![Board](../images/board.png)

Wyświetl plik

@ -1,3 +1,3 @@
(fp_lib_table
(lib (name gs)(type KiCad)(uri ${KIPRJMOD}/lora_tracker.pretty)(options "")(descr ""))
(lib (name lora_tracker)(type KiCad)(uri ${KIPRJMOD}/lora_tracker.pretty)(options "")(descr ""))
)

Wyświetl plik

@ -0,0 +1,199 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1+deb11u1*
G04 #@! TF.CreationDate,2023-03-18T22:01:19+02:00*
G04 #@! TF.ProjectId,lora_tracker_wide,6c6f7261-5f74-4726-9163-6b65725f7769,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Soldermask,Bot*
G04 #@! TF.FilePolarity,Negative*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1+deb11u1) date 2023-03-18 22:01:19*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10O,1.802000X1.802000*%
%ADD11C,1.626000*%
G04 APERTURE END LIST*
G36*
G01*
X85847000Y-43620000D02*
X85847000Y-47820000D01*
G75*
G02*
X85796000Y-47871000I-51000J0D01*
G01*
X84446000Y-47871000D01*
G75*
G02*
X84395000Y-47820000I0J51000D01*
G01*
X84395000Y-43620000D01*
G75*
G02*
X84446000Y-43569000I51000J0D01*
G01*
X85796000Y-43569000D01*
G75*
G02*
X85847000Y-43620000I0J-51000D01*
G01*
G37*
G36*
G01*
X80197000Y-43620000D02*
X80197000Y-47820000D01*
G75*
G02*
X80146000Y-47871000I-51000J0D01*
G01*
X78796000Y-47871000D01*
G75*
G02*
X78745000Y-47820000I0J51000D01*
G01*
X78745000Y-43620000D01*
G75*
G02*
X78796000Y-43569000I51000J0D01*
G01*
X80146000Y-43569000D01*
G75*
G02*
X80197000Y-43620000I0J-51000D01*
G01*
G37*
G36*
G01*
X80149000Y-116498000D02*
X80149000Y-118198000D01*
G75*
G02*
X80098000Y-118249000I-51000J0D01*
G01*
X78398000Y-118249000D01*
G75*
G02*
X78347000Y-118198000I0J51000D01*
G01*
X78347000Y-116498000D01*
G75*
G02*
X78398000Y-116447000I51000J0D01*
G01*
X80098000Y-116447000D01*
G75*
G02*
X80149000Y-116498000I0J-51000D01*
G01*
G37*
D10*
X79248000Y-114808000D03*
X79248000Y-112268000D03*
X79248000Y-109728000D03*
X79248000Y-107188000D03*
X79248000Y-104648000D03*
X79248000Y-102108000D03*
X79248000Y-99568000D03*
X79248000Y-97028000D03*
X79248000Y-94488000D03*
G36*
G01*
X111137000Y-125134000D02*
X111137000Y-126834000D01*
G75*
G02*
X111086000Y-126885000I-51000J0D01*
G01*
X109386000Y-126885000D01*
G75*
G02*
X109335000Y-126834000I0J51000D01*
G01*
X109335000Y-125134000D01*
G75*
G02*
X109386000Y-125083000I51000J0D01*
G01*
X111086000Y-125083000D01*
G75*
G02*
X111137000Y-125134000I0J-51000D01*
G01*
G37*
X110236000Y-123444000D03*
X110236000Y-120904000D03*
X110236000Y-118364000D03*
X110236000Y-115824000D03*
X110236000Y-113284000D03*
X110236000Y-110744000D03*
X110236000Y-108204000D03*
X110236000Y-105664000D03*
X110236000Y-103124000D03*
X110236000Y-100584000D03*
X110236000Y-98044000D03*
G36*
G01*
X78347000Y-129374000D02*
X78347000Y-127674000D01*
G75*
G02*
X78398000Y-127623000I51000J0D01*
G01*
X80098000Y-127623000D01*
G75*
G02*
X80149000Y-127674000I0J-51000D01*
G01*
X80149000Y-129374000D01*
G75*
G02*
X80098000Y-129425000I-51000J0D01*
G01*
X78398000Y-129425000D01*
G75*
G02*
X78347000Y-129374000I0J51000D01*
G01*
G37*
X79248000Y-131064000D03*
X79248000Y-133604000D03*
D11*
X82042000Y-88265000D03*
X82042000Y-90805000D03*
X82042000Y-93345000D03*
X82042000Y-95885000D03*
X82042000Y-98425000D03*
X82042000Y-100965000D03*
X82042000Y-103505000D03*
X82042000Y-106045000D03*
X82042000Y-108585000D03*
X82042000Y-111125000D03*
X82042000Y-113665000D03*
X82042000Y-116205000D03*
X82042000Y-118745000D03*
X82042000Y-121285000D03*
X82042000Y-123825000D03*
X82042000Y-126365000D03*
X82042000Y-128905000D03*
X82042000Y-131445000D03*
X107442000Y-133985000D03*
X107442000Y-131445000D03*
X107442000Y-128905000D03*
X107442000Y-126365000D03*
X107442000Y-123825000D03*
X107442000Y-121285000D03*
X107442000Y-118745000D03*
X107442000Y-116205000D03*
X107442000Y-113665000D03*
X107442000Y-111125000D03*
X107442000Y-108585000D03*
X107442000Y-106045000D03*
X107442000Y-103505000D03*
X107442000Y-100965000D03*
X107442000Y-98425000D03*
X107442000Y-95885000D03*
X107442000Y-93345000D03*
X107442000Y-90805000D03*
X82042000Y-133985000D03*
X107442000Y-88265000D03*
M02*

Wyświetl plik

@ -0,0 +1,15 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1+deb11u1*
G04 #@! TF.CreationDate,2023-03-18T22:01:19+02:00*
G04 #@! TF.ProjectId,lora_tracker_wide,6c6f7261-5f74-4726-9163-6b65725f7769,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1+deb11u1) date 2023-03-18 22:01:19*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

Wyświetl plik

@ -0,0 +1,35 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1+deb11u1*
G04 #@! TF.CreationDate,2023-03-18T22:01:19+02:00*
G04 #@! TF.ProjectId,lora_tracker_wide,6c6f7261-5f74-4726-9163-6b65725f7769,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1+deb11u1) date 2023-03-18 22:01:19*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 #@! TA.AperFunction,Profile*
%ADD10C,0.200000*%
G04 #@! TD*
G04 #@! TA.AperFunction,Profile*
%ADD11C,0.150000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
X73660000Y-43180000D02*
X113665000Y-43180000D01*
D11*
X113665000Y-138430000D02*
X73660000Y-138430000D01*
X113665000Y-43180000D02*
X113665000Y-138430000D01*
X73660000Y-137160000D02*
X73660000Y-138430000D01*
X73660000Y-44450000D02*
X73660000Y-43180000D01*
D10*
X73660000Y-137160000D02*
X73660000Y-44450000D01*
M02*

Wyświetl plik

@ -0,0 +1,677 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1+deb11u1*
G04 #@! TF.CreationDate,2023-03-18T22:01:19+02:00*
G04 #@! TF.ProjectId,lora_tracker_wide,6c6f7261-5f74-4726-9163-6b65725f7769,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1+deb11u1) date 2023-03-18 22:01:19*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.127000*%
%ADD11C,0.120000*%
%ADD12C,0.150000*%
G04 APERTURE END LIST*
D10*
X112958501Y-50700000D02*
X111658501Y-50700000D01*
X112958501Y-74700000D02*
X112958501Y-50700000D01*
X111658501Y-74700000D02*
X112958501Y-74700000D01*
X86258501Y-50700000D02*
X91258501Y-50700000D01*
X86258501Y-74700000D02*
X91258501Y-74700000D01*
X80958501Y-74700000D02*
X81358501Y-74700000D01*
X83458501Y-74700000D02*
X83858501Y-74700000D01*
X93558501Y-74700000D02*
X93958501Y-74700000D01*
X96158501Y-74700000D02*
X96558501Y-74700000D01*
X98658501Y-74700000D02*
X99058501Y-74700000D01*
X101258501Y-74700000D02*
X101658501Y-74700000D01*
X103758501Y-74700000D02*
X104158501Y-74700000D01*
X106258501Y-74700000D02*
X106658501Y-74700000D01*
X108858501Y-74700000D02*
X109258501Y-74700000D01*
X108858501Y-50700000D02*
X109258501Y-50700000D01*
X106358501Y-50700000D02*
X106758501Y-50700000D01*
X103758501Y-50700000D02*
X104158501Y-50700000D01*
X101258501Y-50700000D02*
X101658501Y-50700000D01*
X98658501Y-50700000D02*
X99058501Y-50700000D01*
X96158501Y-50700000D02*
X96558501Y-50700000D01*
X93558501Y-50700000D02*
X93958501Y-50700000D01*
X83458501Y-50700000D02*
X83858501Y-50700000D01*
X80958501Y-50700000D02*
X81358501Y-50700000D01*
X74358501Y-50700000D02*
X78558501Y-50700000D01*
X74358501Y-74700000D02*
X74358501Y-50700000D01*
X78558501Y-74700000D02*
X74358501Y-74700000D01*
D11*
X99584000Y-103142000D02*
X99584000Y-99042000D01*
X99584000Y-99042000D02*
X101584000Y-99042000D01*
X101584000Y-99042000D02*
X101584000Y-103142000D01*
X101584000Y-103142000D02*
X99584000Y-103142000D01*
X101784000Y-102392000D02*
X102084000Y-102692000D01*
X102084000Y-102692000D02*
X102084000Y-102092000D01*
X101784000Y-102392000D02*
X102084000Y-102092000D01*
X101784000Y-107218000D02*
X102084000Y-106918000D01*
X102084000Y-107518000D02*
X102084000Y-106918000D01*
X101784000Y-107218000D02*
X102084000Y-107518000D01*
X101584000Y-107968000D02*
X99584000Y-107968000D01*
X101584000Y-103868000D02*
X101584000Y-107968000D01*
X99584000Y-103868000D02*
X101584000Y-103868000D01*
X99584000Y-107968000D02*
X99584000Y-103868000D01*
X99584000Y-113048000D02*
X99584000Y-108948000D01*
X99584000Y-108948000D02*
X101584000Y-108948000D01*
X101584000Y-108948000D02*
X101584000Y-113048000D01*
X101584000Y-113048000D02*
X99584000Y-113048000D01*
X101784000Y-112298000D02*
X102084000Y-112598000D01*
X102084000Y-112598000D02*
X102084000Y-111998000D01*
X101784000Y-112298000D02*
X102084000Y-111998000D01*
X87252000Y-121904000D02*
X84452000Y-121904000D01*
X84452000Y-121904000D02*
X84452000Y-119904000D01*
X84452000Y-119904000D02*
X87252000Y-119904000D01*
X87252000Y-119904000D02*
X87252000Y-121904000D01*
X87394000Y-130064000D02*
X87394000Y-132064000D01*
X84594000Y-130064000D02*
X87394000Y-130064000D01*
X84594000Y-132064000D02*
X84594000Y-130064000D01*
X87394000Y-132064000D02*
X84594000Y-132064000D01*
X99584000Y-98428000D02*
X99584000Y-95628000D01*
X99584000Y-95628000D02*
X101584000Y-95628000D01*
X101584000Y-95628000D02*
X101584000Y-98428000D01*
X101584000Y-98428000D02*
X99584000Y-98428000D01*
X82296000Y-47980000D02*
X82046000Y-48480000D01*
X82046000Y-48480000D02*
X82546000Y-48480000D01*
X82546000Y-48480000D02*
X82296000Y-47980000D01*
X105254500Y-79600500D02*
X104879500Y-79600500D01*
X105067000Y-79413000D02*
X105067000Y-79788000D01*
X102572000Y-80217437D02*
X101872000Y-80917437D01*
X104692000Y-80217437D02*
X105392000Y-80917437D01*
X101872000Y-80917437D02*
X101872000Y-83548000D01*
X105392000Y-80917437D02*
X105392000Y-83548000D01*
X105392000Y-83548000D02*
X104692000Y-83548000D01*
X101872000Y-83548000D02*
X102572000Y-83548000D01*
X107186000Y-79076733D02*
X107186000Y-79419267D01*
X108206000Y-79076733D02*
X108206000Y-79419267D01*
X84852000Y-85976000D02*
X86852000Y-85976000D01*
X84852000Y-88776000D02*
X84852000Y-85976000D01*
X86852000Y-88776000D02*
X84852000Y-88776000D01*
X86852000Y-85976000D02*
X86852000Y-88776000D01*
X103508000Y-135112000D02*
X100708000Y-135112000D01*
X100708000Y-135112000D02*
X100708000Y-133112000D01*
X100708000Y-133112000D02*
X103508000Y-133112000D01*
X103508000Y-133112000D02*
X103508000Y-135112000D01*
D12*
X82174000Y-70484000D02*
X82174000Y-71234000D01*
X82174000Y-71234000D02*
X98674000Y-71234000D01*
X98674000Y-71234000D02*
X98674000Y-70484000D01*
X82174000Y-54484000D02*
X82174000Y-53734000D01*
X82174000Y-53734000D02*
X98674000Y-53734000D01*
X98674000Y-53734000D02*
X98674000Y-54484000D01*
D11*
X79250000Y-57067267D02*
X79250000Y-56724733D01*
X78230000Y-57067267D02*
X78230000Y-56724733D01*
X79248000Y-118678000D02*
X77918000Y-118678000D01*
X77918000Y-118678000D02*
X77918000Y-117348000D01*
X77918000Y-116078000D02*
X77918000Y-93158000D01*
X80578000Y-93158000D02*
X77918000Y-93158000D01*
X80578000Y-116078000D02*
X80578000Y-93158000D01*
X80578000Y-116078000D02*
X77918000Y-116078000D01*
X110236000Y-127314000D02*
X108906000Y-127314000D01*
X108906000Y-127314000D02*
X108906000Y-125984000D01*
X108906000Y-124714000D02*
X108906000Y-96714000D01*
X111566000Y-96714000D02*
X108906000Y-96714000D01*
X111566000Y-124714000D02*
X111566000Y-96714000D01*
X111566000Y-124714000D02*
X108906000Y-124714000D01*
X79248000Y-127194000D02*
X80578000Y-127194000D01*
X80578000Y-127194000D02*
X80578000Y-128524000D01*
X80578000Y-129794000D02*
X80578000Y-134934000D01*
X77918000Y-134934000D02*
X80578000Y-134934000D01*
X77918000Y-129794000D02*
X77918000Y-134934000D01*
X77918000Y-129794000D02*
X80578000Y-129794000D01*
D12*
X103632000Y-135255000D02*
X106172000Y-135255000D01*
X106172000Y-85725000D02*
X106172000Y-135255000D01*
X103632000Y-85725000D02*
X106172000Y-85725000D01*
X83312000Y-85725000D02*
X83312000Y-132715000D01*
X103632000Y-85725000D02*
X83312000Y-85725000D01*
X83312000Y-132715000D02*
X83312000Y-135255000D01*
X83312000Y-135255000D02*
X103632000Y-135255000D01*
X98236380Y-101925333D02*
X98950666Y-101925333D01*
X99093523Y-101972952D01*
X99188761Y-102068190D01*
X99236380Y-102211047D01*
X99236380Y-102306285D01*
X99236380Y-101449142D02*
X98236380Y-101449142D01*
X98236380Y-101068190D01*
X98284000Y-100972952D01*
X98331619Y-100925333D01*
X98426857Y-100877714D01*
X98569714Y-100877714D01*
X98664952Y-100925333D01*
X98712571Y-100972952D01*
X98760190Y-101068190D01*
X98760190Y-101449142D01*
X99236380Y-99925333D02*
X99236380Y-100496761D01*
X99236380Y-100211047D02*
X98236380Y-100211047D01*
X98379238Y-100306285D01*
X98474476Y-100401523D01*
X98522095Y-100496761D01*
X98236380Y-106751333D02*
X98950666Y-106751333D01*
X99093523Y-106798952D01*
X99188761Y-106894190D01*
X99236380Y-107037047D01*
X99236380Y-107132285D01*
X99236380Y-106275142D02*
X98236380Y-106275142D01*
X98236380Y-105894190D01*
X98284000Y-105798952D01*
X98331619Y-105751333D01*
X98426857Y-105703714D01*
X98569714Y-105703714D01*
X98664952Y-105751333D01*
X98712571Y-105798952D01*
X98760190Y-105894190D01*
X98760190Y-106275142D01*
X98331619Y-105322761D02*
X98284000Y-105275142D01*
X98236380Y-105179904D01*
X98236380Y-104941809D01*
X98284000Y-104846571D01*
X98331619Y-104798952D01*
X98426857Y-104751333D01*
X98522095Y-104751333D01*
X98664952Y-104798952D01*
X99236380Y-105370380D01*
X99236380Y-104751333D01*
X98236380Y-111831333D02*
X98950666Y-111831333D01*
X99093523Y-111878952D01*
X99188761Y-111974190D01*
X99236380Y-112117047D01*
X99236380Y-112212285D01*
X99236380Y-111355142D02*
X98236380Y-111355142D01*
X98236380Y-110974190D01*
X98284000Y-110878952D01*
X98331619Y-110831333D01*
X98426857Y-110783714D01*
X98569714Y-110783714D01*
X98664952Y-110831333D01*
X98712571Y-110878952D01*
X98760190Y-110974190D01*
X98760190Y-111355142D01*
X98236380Y-110450380D02*
X98236380Y-109831333D01*
X98617333Y-110164666D01*
X98617333Y-110021809D01*
X98664952Y-109926571D01*
X98712571Y-109878952D01*
X98807809Y-109831333D01*
X99045904Y-109831333D01*
X99141142Y-109878952D01*
X99188761Y-109926571D01*
X99236380Y-110021809D01*
X99236380Y-110307523D01*
X99188761Y-110402761D01*
X99141142Y-110450380D01*
X85018666Y-122156380D02*
X85018666Y-122870666D01*
X84971047Y-123013523D01*
X84875809Y-123108761D01*
X84732952Y-123156380D01*
X84637714Y-123156380D01*
X85494857Y-123156380D02*
X85494857Y-122156380D01*
X85875809Y-122156380D01*
X85971047Y-122204000D01*
X86018666Y-122251619D01*
X86066285Y-122346857D01*
X86066285Y-122489714D01*
X86018666Y-122584952D01*
X85971047Y-122632571D01*
X85875809Y-122680190D01*
X85494857Y-122680190D01*
X86923428Y-122489714D02*
X86923428Y-123156380D01*
X86685333Y-122108761D02*
X86447238Y-122823047D01*
X87066285Y-122823047D01*
X85160666Y-132316380D02*
X85160666Y-133030666D01*
X85113047Y-133173523D01*
X85017809Y-133268761D01*
X84874952Y-133316380D01*
X84779714Y-133316380D01*
X85636857Y-133316380D02*
X85636857Y-132316380D01*
X86017809Y-132316380D01*
X86113047Y-132364000D01*
X86160666Y-132411619D01*
X86208285Y-132506857D01*
X86208285Y-132649714D01*
X86160666Y-132744952D01*
X86113047Y-132792571D01*
X86017809Y-132840190D01*
X85636857Y-132840190D01*
X87113047Y-132316380D02*
X86636857Y-132316380D01*
X86589238Y-132792571D01*
X86636857Y-132744952D01*
X86732095Y-132697333D01*
X86970190Y-132697333D01*
X87065428Y-132744952D01*
X87113047Y-132792571D01*
X87160666Y-132887809D01*
X87160666Y-133125904D01*
X87113047Y-133221142D01*
X87065428Y-133268761D01*
X86970190Y-133316380D01*
X86732095Y-133316380D01*
X86636857Y-133268761D01*
X86589238Y-133221142D01*
X98236380Y-97861333D02*
X98950666Y-97861333D01*
X99093523Y-97908952D01*
X99188761Y-98004190D01*
X99236380Y-98147047D01*
X99236380Y-98242285D01*
X99236380Y-97385142D02*
X98236380Y-97385142D01*
X98236380Y-97004190D01*
X98284000Y-96908952D01*
X98331619Y-96861333D01*
X98426857Y-96813714D01*
X98569714Y-96813714D01*
X98664952Y-96861333D01*
X98712571Y-96908952D01*
X98760190Y-97004190D01*
X98760190Y-97385142D01*
X98236380Y-95956571D02*
X98236380Y-96147047D01*
X98284000Y-96242285D01*
X98331619Y-96289904D01*
X98474476Y-96385142D01*
X98664952Y-96432761D01*
X99045904Y-96432761D01*
X99141142Y-96385142D01*
X99188761Y-96337523D01*
X99236380Y-96242285D01*
X99236380Y-96051809D01*
X99188761Y-95956571D01*
X99141142Y-95908952D01*
X99045904Y-95861333D01*
X98807809Y-95861333D01*
X98712571Y-95908952D01*
X98664952Y-95956571D01*
X98617333Y-96051809D01*
X98617333Y-96242285D01*
X98664952Y-96337523D01*
X98712571Y-96385142D01*
X98807809Y-96432761D01*
X81962666Y-48672380D02*
X81962666Y-49386666D01*
X81915047Y-49529523D01*
X81819809Y-49624761D01*
X81676952Y-49672380D01*
X81581714Y-49672380D01*
X82962666Y-49672380D02*
X82391238Y-49672380D01*
X82676952Y-49672380D02*
X82676952Y-48672380D01*
X82581714Y-48815238D01*
X82486476Y-48910476D01*
X82391238Y-48958095D01*
X106689142Y-81954666D02*
X106736761Y-82002285D01*
X106784380Y-82145142D01*
X106784380Y-82240380D01*
X106736761Y-82383238D01*
X106641523Y-82478476D01*
X106546285Y-82526095D01*
X106355809Y-82573714D01*
X106212952Y-82573714D01*
X106022476Y-82526095D01*
X105927238Y-82478476D01*
X105832000Y-82383238D01*
X105784380Y-82240380D01*
X105784380Y-82145142D01*
X105832000Y-82002285D01*
X105879619Y-81954666D01*
X105879619Y-81573714D02*
X105832000Y-81526095D01*
X105784380Y-81430857D01*
X105784380Y-81192761D01*
X105832000Y-81097523D01*
X105879619Y-81049904D01*
X105974857Y-81002285D01*
X106070095Y-81002285D01*
X106212952Y-81049904D01*
X106784380Y-81621333D01*
X106784380Y-81002285D01*
X109483142Y-79414666D02*
X109530761Y-79462285D01*
X109578380Y-79605142D01*
X109578380Y-79700380D01*
X109530761Y-79843238D01*
X109435523Y-79938476D01*
X109340285Y-79986095D01*
X109149809Y-80033714D01*
X109006952Y-80033714D01*
X108816476Y-79986095D01*
X108721238Y-79938476D01*
X108626000Y-79843238D01*
X108578380Y-79700380D01*
X108578380Y-79605142D01*
X108626000Y-79462285D01*
X108673619Y-79414666D01*
X109578380Y-78462285D02*
X109578380Y-79033714D01*
X109578380Y-78748000D02*
X108578380Y-78748000D01*
X108721238Y-78843238D01*
X108816476Y-78938476D01*
X108864095Y-79033714D01*
X87104380Y-88209333D02*
X87818666Y-88209333D01*
X87961523Y-88256952D01*
X88056761Y-88352190D01*
X88104380Y-88495047D01*
X88104380Y-88590285D01*
X88104380Y-87733142D02*
X87104380Y-87733142D01*
X87104380Y-87352190D01*
X87152000Y-87256952D01*
X87199619Y-87209333D01*
X87294857Y-87161714D01*
X87437714Y-87161714D01*
X87532952Y-87209333D01*
X87580571Y-87256952D01*
X87628190Y-87352190D01*
X87628190Y-87733142D01*
X87104380Y-86828380D02*
X87104380Y-86161714D01*
X88104380Y-86590285D01*
X101274666Y-135364380D02*
X101274666Y-136078666D01*
X101227047Y-136221523D01*
X101131809Y-136316761D01*
X100988952Y-136364380D01*
X100893714Y-136364380D01*
X101750857Y-136364380D02*
X101750857Y-135364380D01*
X102131809Y-135364380D01*
X102227047Y-135412000D01*
X102274666Y-135459619D01*
X102322285Y-135554857D01*
X102322285Y-135697714D01*
X102274666Y-135792952D01*
X102227047Y-135840571D01*
X102131809Y-135888190D01*
X101750857Y-135888190D01*
X102893714Y-135792952D02*
X102798476Y-135745333D01*
X102750857Y-135697714D01*
X102703238Y-135602476D01*
X102703238Y-135554857D01*
X102750857Y-135459619D01*
X102798476Y-135412000D01*
X102893714Y-135364380D01*
X103084190Y-135364380D01*
X103179428Y-135412000D01*
X103227047Y-135459619D01*
X103274666Y-135554857D01*
X103274666Y-135602476D01*
X103227047Y-135697714D01*
X103179428Y-135745333D01*
X103084190Y-135792952D01*
X102893714Y-135792952D01*
X102798476Y-135840571D01*
X102750857Y-135888190D01*
X102703238Y-135983428D01*
X102703238Y-136173904D01*
X102750857Y-136269142D01*
X102798476Y-136316761D01*
X102893714Y-136364380D01*
X103084190Y-136364380D01*
X103179428Y-136316761D01*
X103227047Y-136269142D01*
X103274666Y-136173904D01*
X103274666Y-135983428D01*
X103227047Y-135888190D01*
X103179428Y-135840571D01*
X103084190Y-135792952D01*
X89662095Y-60936380D02*
X89662095Y-61745904D01*
X89709714Y-61841142D01*
X89757333Y-61888761D01*
X89852571Y-61936380D01*
X90043047Y-61936380D01*
X90138285Y-61888761D01*
X90185904Y-61841142D01*
X90233523Y-61745904D01*
X90233523Y-60936380D01*
X90614476Y-60936380D02*
X91233523Y-60936380D01*
X90900190Y-61317333D01*
X91043047Y-61317333D01*
X91138285Y-61364952D01*
X91185904Y-61412571D01*
X91233523Y-61507809D01*
X91233523Y-61745904D01*
X91185904Y-61841142D01*
X91138285Y-61888761D01*
X91043047Y-61936380D01*
X90757333Y-61936380D01*
X90662095Y-61888761D01*
X90614476Y-61841142D01*
X77667142Y-57062666D02*
X77714761Y-57110285D01*
X77762380Y-57253142D01*
X77762380Y-57348380D01*
X77714761Y-57491238D01*
X77619523Y-57586476D01*
X77524285Y-57634095D01*
X77333809Y-57681714D01*
X77190952Y-57681714D01*
X77000476Y-57634095D01*
X76905238Y-57586476D01*
X76810000Y-57491238D01*
X76762380Y-57348380D01*
X76762380Y-57253142D01*
X76810000Y-57110285D01*
X76857619Y-57062666D01*
X76762380Y-56729333D02*
X76762380Y-56110285D01*
X77143333Y-56443619D01*
X77143333Y-56300761D01*
X77190952Y-56205523D01*
X77238571Y-56157904D01*
X77333809Y-56110285D01*
X77571904Y-56110285D01*
X77667142Y-56157904D01*
X77714761Y-56205523D01*
X77762380Y-56300761D01*
X77762380Y-56586476D01*
X77714761Y-56681714D01*
X77667142Y-56729333D01*
X78914666Y-119570380D02*
X78914666Y-120284666D01*
X78867047Y-120427523D01*
X78771809Y-120522761D01*
X78628952Y-120570380D01*
X78533714Y-120570380D01*
X79343238Y-119665619D02*
X79390857Y-119618000D01*
X79486095Y-119570380D01*
X79724190Y-119570380D01*
X79819428Y-119618000D01*
X79867047Y-119665619D01*
X79914666Y-119760857D01*
X79914666Y-119856095D01*
X79867047Y-119998952D01*
X79295619Y-120570380D01*
X79914666Y-120570380D01*
X109902666Y-128206380D02*
X109902666Y-128920666D01*
X109855047Y-129063523D01*
X109759809Y-129158761D01*
X109616952Y-129206380D01*
X109521714Y-129206380D01*
X110283619Y-128206380D02*
X110902666Y-128206380D01*
X110569333Y-128587333D01*
X110712190Y-128587333D01*
X110807428Y-128634952D01*
X110855047Y-128682571D01*
X110902666Y-128777809D01*
X110902666Y-129015904D01*
X110855047Y-129111142D01*
X110807428Y-129158761D01*
X110712190Y-129206380D01*
X110426476Y-129206380D01*
X110331238Y-129158761D01*
X110283619Y-129111142D01*
X78914666Y-125206380D02*
X78914666Y-125920666D01*
X78867047Y-126063523D01*
X78771809Y-126158761D01*
X78628952Y-126206380D01*
X78533714Y-126206380D01*
X79819428Y-125539714D02*
X79819428Y-126206380D01*
X79581333Y-125158761D02*
X79343238Y-125873047D01*
X79962285Y-125873047D01*
X85090095Y-83907380D02*
X85090095Y-84716904D01*
X85137714Y-84812142D01*
X85185333Y-84859761D01*
X85280571Y-84907380D01*
X85471047Y-84907380D01*
X85566285Y-84859761D01*
X85613904Y-84812142D01*
X85661523Y-84716904D01*
X85661523Y-83907380D01*
X86661523Y-84907380D02*
X86090095Y-84907380D01*
X86375809Y-84907380D02*
X86375809Y-83907380D01*
X86280571Y-84050238D01*
X86185333Y-84145476D01*
X86090095Y-84193095D01*
M02*

Wyświetl plik

@ -0,0 +1,7 @@
M48
INCH,TZ
%
G90
G05
T0
M30

Wyświetl plik

@ -0,0 +1,273 @@
M48
INCH,TZ
T1C0.0157
T2C0.0300
T3C0.0394
%
G90
G05
T1
X29600Y-17600
X29600Y-18400
X29600Y-19200
X29600Y-20000
X29600Y-20800
X29600Y-21600
X29600Y-22400
X29600Y-23200
X29600Y-24000
X29600Y-24800
X29600Y-25600
X29600Y-26400
X29600Y-27200
X29600Y-28000
X29600Y-28800
X29600Y-29600
X29600Y-30400
X29600Y-31200
X29600Y-32000
X29600Y-32800
X29600Y-33600
X29600Y-34400
X29600Y-35200
X29600Y-36000
X29600Y-36800
X29600Y-37600
X29600Y-38400
X29600Y-39200
X29600Y-40000
X29600Y-40800
X29600Y-41600
X29600Y-42400
X29600Y-43200
X29600Y-44000
X29600Y-44800
X29600Y-45600
X29600Y-46400
X29600Y-47200
X29600Y-48000
X29600Y-48800
X29600Y-49600
X29600Y-50400
X29600Y-51200
X29600Y-52000
X29600Y-52800
X29600Y-53600
X30000Y-54000
X30400Y-17600
X30400Y-18400
X30400Y-19200
X30400Y-20000
X30400Y-20800
X30800Y-54000
X31000Y-31200
X31000Y-33600
X31200Y-21200
X31600Y-54000
X32400Y-54000
X32600Y-31200
X32600Y-33600
X33200Y-54000
X33400Y-21200
X33400Y-24200
X33600Y-25000
X33600Y-27200
X34000Y-31200
X34000Y-38000
X34000Y-40000
X34000Y-42000
X34000Y-50000
X34000Y-54000
X34198Y-26402
X34200Y-22200
X34200Y-23400
X34200Y-46000
X34400Y-19200
X34400Y-20000
X34600Y-17600
X34600Y-18400
X34600Y-25000
X34800Y-54000
X35400Y-17600
X35600Y-23400
X35600Y-54000
X35785Y-39250
X36000Y-41800
X36000Y-43800
X36000Y-46000
X36000Y-48000
X36000Y-52000
X36200Y-17600
X36200Y-50000
X36250Y-40000
X36400Y-54000
X36500Y-21500
X36600Y-23400
X36600Y-31200
X37000Y-17600
X37200Y-26000
X37200Y-54000
X37500Y-21500
X37600Y-23600
X37800Y-17600
X37800Y-31200
X38000Y-34000
X38000Y-36000
X38000Y-38000
X38000Y-39800
X38000Y-40400
X38000Y-41000
X38000Y-43800
X38000Y-46000
X38000Y-48000
X38000Y-50000
X38000Y-52000
X38000Y-54000
X38600Y-17600
X38800Y-54000
X39000Y-31200
X39000Y-32600
X39000Y-34000
X39400Y-17600
X39600Y-54000
X39800Y-22200
X40000Y-46000
X40000Y-48000
X40000Y-50000
X40000Y-52000
X40200Y-17600
X40400Y-21000
X40400Y-34000
X40400Y-54000
X41000Y-17600
X41000Y-25000
X41000Y-28000
X41200Y-54000
X41400Y-22200
X41400Y-23600
X41800Y-17600
X41800Y-33600
X42000Y-54000
X42400Y-32800
X42600Y-17600
X42600Y-28000
X42800Y-54000
X43200Y-30400
X43200Y-31200
X43200Y-32000
X43200Y-32800
X43400Y-17600
X43600Y-54000
X44200Y-17600
X44200Y-18400
X44200Y-19200
X44200Y-20000
X44200Y-20800
X44200Y-21600
X44200Y-22400
X44200Y-23200
X44200Y-24000
X44200Y-24800
X44200Y-25600
X44200Y-26400
X44200Y-27200
X44200Y-28000
X44200Y-28800
X44200Y-29600
X44200Y-30400
X44200Y-31200
X44200Y-32000
X44200Y-32800
X44200Y-33600
X44200Y-34400
X44200Y-35200
X44200Y-36000
X44200Y-36800
X44200Y-37600
X44200Y-38400
X44200Y-39200
X44200Y-40000
X44200Y-40800
X44200Y-41600
X44200Y-42400
X44200Y-43200
X44200Y-44000
X44200Y-44800
X44200Y-45600
X44200Y-46400
X44200Y-47200
X44200Y-48000
X44200Y-48800
X44200Y-49600
X44200Y-50400
X44200Y-51200
X44200Y-52000
X44200Y-52800
X44200Y-53600
T2
X32300Y-34750
X32300Y-35750
X32300Y-36750
X32300Y-37750
X32300Y-38750
X32300Y-39750
X32300Y-40750
X32300Y-41750
X32300Y-42750
X32300Y-43750
X32300Y-44750
X32300Y-45750
X32300Y-46750
X32300Y-47750
X32300Y-48750
X32300Y-49750
X32300Y-50750
X32300Y-51750
X32300Y-52750
X42300Y-34750
X42300Y-35750
X42300Y-36750
X42300Y-37750
X42300Y-38750
X42300Y-39750
X42300Y-40750
X42300Y-41750
X42300Y-42750
X42300Y-43750
X42300Y-44750
X42300Y-45750
X42300Y-46750
X42300Y-47750
X42300Y-48750
X42300Y-49750
X42300Y-50750
X42300Y-51750
X42300Y-52750
T3
X31200Y-37200
X31200Y-38200
X31200Y-39200
X31200Y-40200
X31200Y-41200
X31200Y-42200
X31200Y-43200
X31200Y-44200
X31200Y-45200
X31200Y-46200
X31200Y-50600
X31200Y-51600
X31200Y-52600
X43400Y-38600
X43400Y-39600
X43400Y-40600
X43400Y-41600
X43400Y-42600
X43400Y-43600
X43400Y-44600
X43400Y-45600
X43400Y-46600
X43400Y-47600
X43400Y-48600
X43400Y-49600
T0
M30

Wyświetl plik

@ -87,7 +87,7 @@
(mirror false)
(drillshape 0)
(scaleselection 1)
(outputdirectory "/home/sh/tmp/gerber/"))
(outputdirectory "gerber/"))
)
(net 0 "")

Plik diff jest za duży Load Diff

Wyświetl plik

@ -1,6 +1,6 @@
(export (version D)
(design
(source /home/sh/src/projects/Electronics/projects/lora_tracker/lora_tracker_3/lora_tracker.sch)
(source ${KIPRJMOD}/lora_tracker.sch)
(date "Mon 22 Nov 2021 03:11:38 PM EET")
(tool "Eeschema 5.0.2+dfsg1-1")
(sheet (number 1) (name /) (tstamps /)
@ -358,7 +358,7 @@
(library (logical RF_Module)
(uri /usr/share/kicad/library/RF_Module.lib))
(library (logical gs-eagle-import)
(uri /home/sh/src/projects/Electronics/projects/lora_tracker/lora_tracker/gs-eagle-import.lib)))
(uri ${KIPRJMOD}/gs-eagle-import.lib)))
(nets
(net (code 1) (name GPIO7)
(node (ref J3) (pin 1))
@ -535,4 +535,4 @@
(net (code 48) (name "Net-(JP1-Pad3)")
(node (ref JP6) (pin 1))
(node (ref JP1) (pin 3))
(node (ref U1) (pin 32)))))
(node (ref U1) (pin 32)))))

Wyświetl plik

@ -1,14 +1,14 @@
(module "esp32 devkit2" (layer F.Cu) (tedit 6199FDB0)
(module esp32-devkit-narrow (layer F.Cu) (tedit 64160EBC)
(fp_text reference REF** (at -11.43 -1.27) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value "esp32 devkit2" (at -3.81 -3.04) (layer F.Fab)
(fp_text value "esp32 devkit narrow" (at -3.81 -3.04) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.97 50.8) (end -13.97 0) (layer F.SilkS) (width 0.15))
(fp_line (start 6.35 0) (end 6.35 50.8) (layer F.SilkS) (width 0.15))
(fp_line (start 6.35 0) (end -13.97 0) (layer F.SilkS) (width 0.15))
(fp_line (start -13.97 46.99) (end 6.35 46.99) (layer F.SilkS) (width 0.15))
(fp_line (start 6.35 46.99) (end 6.35 0) (layer F.SilkS) (width 0.15))
(fp_line (start -13.97 0) (end -13.97 46.99) (layer F.SilkS) (width 0.15))
(fp_line (start 6.35 50.8) (end -13.97 50.8) (layer F.SilkS) (width 0.15))
(pad 1 thru_hole circle (at -15.24 2.54) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 2 thru_hole circle (at -15.24 5.08) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 3 thru_hole circle (at -15.24 7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
@ -27,22 +27,24 @@
(pad 16 thru_hole circle (at -15.24 40.64) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 17 thru_hole circle (at -15.24 43.18) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 18 thru_hole circle (at -15.24 45.72) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 20 thru_hole circle (at 7.62 45.72) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 21 thru_hole circle (at 7.62 43.18) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 22 thru_hole circle (at 7.62 40.64) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 23 thru_hole circle (at 7.62 38.1) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 24 thru_hole circle (at 7.62 35.56) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 25 thru_hole circle (at 7.62 33.02) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 26 thru_hole circle (at 7.62 30.48) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 27 thru_hole circle (at 7.62 27.94) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 28 thru_hole circle (at 7.62 25.4) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 29 thru_hole circle (at 7.62 22.86) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 30 thru_hole circle (at 7.62 20.32) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 31 thru_hole circle (at 7.62 17.78) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 32 thru_hole circle (at 7.62 15.24) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 33 thru_hole circle (at 7.62 12.7) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 34 thru_hole circle (at 7.62 10.16) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 35 thru_hole circle (at 7.62 7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 36 thru_hole circle (at 7.62 5.08) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 37 thru_hole circle (at 7.62 2.54) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 19 thru_hole circle (at -15.24 48.26) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 20 thru_hole circle (at 7.62 48.26) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 21 thru_hole circle (at 7.62 45.72) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 22 thru_hole circle (at 7.62 43.18) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 23 thru_hole circle (at 7.62 40.64) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 24 thru_hole circle (at 7.62 38.1) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 25 thru_hole circle (at 7.62 35.56) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 26 thru_hole circle (at 7.62 33.02) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 27 thru_hole circle (at 7.62 30.48) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 28 thru_hole circle (at 7.62 27.94) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 29 thru_hole circle (at 7.62 25.4) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 30 thru_hole circle (at 7.62 22.86) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 31 thru_hole circle (at 7.62 20.32) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 32 thru_hole circle (at 7.62 17.78) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 33 thru_hole circle (at 7.62 15.24) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 34 thru_hole circle (at 7.62 12.7) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 35 thru_hole circle (at 7.62 10.16) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 36 thru_hole circle (at 7.62 7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 37 thru_hole circle (at 7.62 5.08) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 38 thru_hole circle (at 7.62 2.54) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
)

Wyświetl plik

@ -0,0 +1,53 @@
(module esp32-devkit-wide (layer F.Cu) (tedit 64161444)
(fp_text reference REF** (at -11.43 -1.27) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value "esp32 devkit wide" (at -1.27 -3.04) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.97 49.53) (end 6.35 49.53) (layer F.SilkS) (width 0.15))
(fp_line (start -13.97 46.99) (end -13.97 49.53) (layer F.SilkS) (width 0.15))
(fp_line (start 6.35 0) (end -13.97 0) (layer F.SilkS) (width 0.15))
(fp_line (start -13.97 0) (end -13.97 46.99) (layer F.SilkS) (width 0.15))
(fp_line (start 6.35 0) (end 8.89 0) (layer F.SilkS) (width 0.15))
(fp_line (start 8.89 0) (end 8.89 49.53) (layer F.SilkS) (width 0.15))
(fp_line (start 6.35 49.53) (end 8.89 49.53) (layer F.SilkS) (width 0.15))
(pad 1 thru_hole circle (at -15.24 2.54) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 2 thru_hole circle (at -15.24 5.08) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 3 thru_hole circle (at -15.24 7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 4 thru_hole circle (at -15.24 10.16) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 5 thru_hole circle (at -15.24 12.7) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 6 thru_hole circle (at -15.24 15.24) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 7 thru_hole circle (at -15.24 17.78) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 8 thru_hole circle (at -15.24 20.32) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 9 thru_hole circle (at -15.24 22.86) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 10 thru_hole circle (at -15.24 25.4) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 11 thru_hole circle (at -15.24 27.94) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 12 thru_hole circle (at -15.24 30.48) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 13 thru_hole circle (at -15.24 33.02) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 14 thru_hole circle (at -15.24 35.56) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 15 thru_hole circle (at -15.24 38.1) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 16 thru_hole circle (at -15.24 40.64) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 17 thru_hole circle (at -15.24 43.18) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 18 thru_hole circle (at -15.24 45.72) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 20 thru_hole circle (at 10.16 48.26) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 21 thru_hole circle (at 10.16 45.72) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 22 thru_hole circle (at 10.16 43.18) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 23 thru_hole circle (at 10.16 40.64) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 24 thru_hole circle (at 10.16 38.1) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 25 thru_hole circle (at 10.16 35.56) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 26 thru_hole circle (at 10.16 33.02) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 27 thru_hole circle (at 10.16 30.48) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 28 thru_hole circle (at 10.16 27.94) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 29 thru_hole circle (at 10.16 25.4) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 30 thru_hole circle (at 10.16 22.86) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 31 thru_hole circle (at 10.16 20.32) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 32 thru_hole circle (at 10.16 17.78) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 33 thru_hole circle (at 10.16 15.24) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 34 thru_hole circle (at 10.16 12.7) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 35 thru_hole circle (at 10.16 10.16) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 36 thru_hole circle (at 10.16 7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 37 thru_hole circle (at 10.16 5.08) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 19 thru_hole circle (at -15.24 48.26) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
(pad 38 thru_hole circle (at 10.16 2.54) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
)

Wyświetl plik

@ -1,4 +1,4 @@
update=22/05/2015 07:44:53
update=Sat 18 Mar 2023 09:44:06 PM EET
version=1
last_client=kicad
[general]
@ -31,3 +31,13 @@ NetIExt=net
version=1
LibDir=
[eeschema/libraries]
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceAjustPassiveValues=0
LabSize=50
ERC_TestSimilarLabels=1

Wyświetl plik

@ -1,6 +1,5 @@
EESchema Schematic File Version 4
LIBS:lora_tracker-cache
EELAYER 26 0
EELAYER 30 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
@ -523,7 +522,7 @@ U 1 1 61978D9D
P 2650 1850
F 0 "U1" H 2725 2015 50 0000 C CNN
F 1 "ESP32" H 2725 1924 50 0000 C CNN
F 2 "lora_tracker:esp32 devkit" H 2700 2000 50 0001 C CNN
F 2 "lora_tracker:esp32-devkit-wide" H 2700 2000 50 0001 C CNN
F 3 "" H 2700 2000 50 0001 C CNN
1 2650 1850
1 0 0 -1

Wyświetl plik

@ -0,0 +1,538 @@
(export (version D)
(design
(source ${KIPRJMOD}/lora_tracker.sch)
(date "Sat 18 Mar 2023 09:45:42 PM EET")
(tool "Eeschema 5.1.9+dfsg1-1+deb11u1")
(sheet (number 1) (name /) (tstamps /)
(title_block
(title)
(company)
(rev)
(date)
(source lora_tracker.sch)
(comment (number 1) (value ""))
(comment (number 2) (value ""))
(comment (number 3) (value ""))
(comment (number 4) (value "")))))
(components
(comp (ref U2)
(value E22-400M30S)
(footprint lora_tracker:E22-400M30S)
(libsource (lib lora_tracker) (part E22-400M30S) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 6194CACC))
(comp (ref J1)
(value Conn_Coaxial)
(footprint Connector_Coaxial:SMA_Samtec_SMA-J-P-H-ST-EM1_EdgeMount)
(datasheet " ~")
(libsource (lib Connector) (part Conn_Coaxial) (description "coaxial connector (BNC, SMA, SMB, SMC, Cinch/RCA, ...)"))
(sheetpath (names /) (tstamps /))
(tstamp 619A9181))
(comp (ref JP1)
(value SolderJumper_3_Open)
(footprint Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_3_Open) (description "Solder Jumper, 3-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619A9CAA))
(comp (ref JP2)
(value SolderJumper_3_Open)
(footprint Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_3_Open) (description "Solder Jumper, 3-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619AAF54))
(comp (ref JP3)
(value SolderJumper_3_Open)
(footprint Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_3_Open) (description "Solder Jumper, 3-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619AC0BC))
(comp (ref JP4)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619C59F2))
(comp (ref JP5)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619C9C44))
(comp (ref JP6)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619D6D42))
(comp (ref C2)
(value 100uF)
(footprint Capacitor_SMD:CP_Elec_3x5.3)
(datasheet ~)
(libsource (lib Device) (part CP1) (description "Polarized capacitor, US symbol"))
(sheetpath (names /) (tstamps /))
(tstamp 619EF8E3))
(comp (ref C1)
(value 100nF)
(footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder)
(datasheet ~)
(libsource (lib Device) (part C) (description "Unpolarized capacitor"))
(sheetpath (names /) (tstamps /))
(tstamp 619EF996))
(comp (ref U3)
(value Ai-Thinker-Ra-01)
(footprint RF_Module:Ai-Thinker-Ra-01-LoRa)
(datasheet https://mikroelectron.com/Product/10KM-433M-LORA-LONG-RANGE-WIRELESS-MODULE-RA-01)
(libsource (lib RF_Module) (part Ai-Thinker-Ra-01) (description "Ai-Thinker LoRa Module Ra-01"))
(sheetpath (names /) (tstamps /))
(tstamp 61A0738A))
(comp (ref JP8)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 61A555B2))
(comp (ref JP7)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 61A74681))
(comp (ref C3)
(value 100nF)
(footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder)
(datasheet ~)
(libsource (lib Device) (part C) (description "Unpolarized capacitor"))
(sheetpath (names /) (tstamps /))
(tstamp 61A98B18))
(comp (ref J2)
(value Conn_01x10_Female)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib Connector) (part Conn_01x10_Female) (description "Generic connector, single row, 01x10, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 61AA7D88))
(comp (ref J3)
(value Conn_01x12_Female)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x12_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib Connector) (part Conn_01x12_Female) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 61AA8097))
(comp (ref U1)
(value ESP32)
(footprint lora_tracker:esp32-devkit-wide)
(libsource (lib lora_tracker) (part ESP32) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 61978D9D))
(comp (ref J4)
(value Conn_01x03_Female)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib Connector) (part Conn_01x03_Female) (description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 61D04C33)))
(libparts
(libpart (lib Connector) (part Conn_01x03_Female)
(description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x03_Female))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))))
(libpart (lib Connector) (part Conn_01x10_Female)
(description "Generic connector, single row, 01x10, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x10_Female))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))
(pin (num 7) (name Pin_7) (type passive))
(pin (num 8) (name Pin_8) (type passive))
(pin (num 9) (name Pin_9) (type passive))
(pin (num 10) (name Pin_10) (type passive))))
(libpart (lib Connector) (part Conn_01x12_Female)
(description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x12_Female))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))
(pin (num 7) (name Pin_7) (type passive))
(pin (num 8) (name Pin_8) (type passive))
(pin (num 9) (name Pin_9) (type passive))
(pin (num 10) (name Pin_10) (type passive))
(pin (num 11) (name Pin_11) (type passive))
(pin (num 12) (name Pin_12) (type passive))))
(libpart (lib Connector) (part Conn_Coaxial)
(description "coaxial connector (BNC, SMA, SMB, SMC, Cinch/RCA, ...)")
(docs " ~")
(footprints
(fp *BNC*)
(fp *SMA*)
(fp *SMB*)
(fp *SMC*)
(fp *Cinch*))
(fields
(field (name Reference) J)
(field (name Value) Conn_Coaxial))
(pins
(pin (num 1) (name In) (type passive))
(pin (num 2) (name Ext) (type passive))))
(libpart (lib Device) (part C)
(description "Unpolarized capacitor")
(docs ~)
(footprints
(fp C_*))
(fields
(field (name Reference) C)
(field (name Value) C))
(pins
(pin (num 1) (name ~) (type passive))
(pin (num 2) (name ~) (type passive))))
(libpart (lib Device) (part CP1)
(description "Polarized capacitor, US symbol")
(docs ~)
(footprints
(fp CP_*))
(fields
(field (name Reference) C)
(field (name Value) CP1))
(pins
(pin (num 1) (name ~) (type passive))
(pin (num 2) (name ~) (type passive))))
(libpart (lib Jumper) (part SolderJumper_2_Open)
(description "Solder Jumper, 2-pole, open")
(docs ~)
(footprints
(fp SolderJumper*Open*))
(fields
(field (name Reference) JP)
(field (name Value) SolderJumper_2_Open))
(pins
(pin (num 1) (name A) (type passive))
(pin (num 2) (name B) (type passive))))
(libpart (lib Jumper) (part SolderJumper_3_Open)
(description "Solder Jumper, 3-pole, open")
(docs ~)
(footprints
(fp SolderJumper*Open*))
(fields
(field (name Reference) JP)
(field (name Value) SolderJumper_3_Open))
(pins
(pin (num 1) (name A) (type passive))
(pin (num 2) (name C) (type input))
(pin (num 3) (name B) (type passive))))
(libpart (lib RF_Module) (part Ai-Thinker-Ra-01)
(description "Ai-Thinker LoRa Module Ra-01")
(docs https://mikroelectron.com/Product/10KM-433M-LORA-LONG-RANGE-WIRELESS-MODULE-RA-01)
(footprints
(fp Ai?Thinker?Ra?01*))
(fields
(field (name Reference) U)
(field (name Value) Ai-Thinker-Ra-01)
(field (name Footprint) RF_Module:Ai-Thinker-Ra-01-LoRa))
(pins
(pin (num 1) (name Ant) (type input))
(pin (num 2) (name Gnd) (type power_in))
(pin (num 3) (name 3v3) (type power_in))
(pin (num 4) (name ~Reset) (type input))
(pin (num 5) (name DIO0) (type BiDi))
(pin (num 6) (name DIO1) (type BiDi))
(pin (num 7) (name DIO2) (type BiDi))
(pin (num 8) (name DIO3) (type BiDi))
(pin (num 9) (name Gnd) (type passive))
(pin (num 10) (name DIO4) (type BiDi))
(pin (num 11) (name DIO5) (type BiDi))
(pin (num 12) (name SCK) (type BiDi))
(pin (num 13) (name MISO) (type output))
(pin (num 14) (name MOSI) (type input))
(pin (num 15) (name ~SS) (type input))
(pin (num 16) (name Gnd) (type passive))))
(libpart (lib lora_tracker) (part E22-400M30S)
(fields
(field (name Reference) U)
(field (name Value) E22-400M30S))
(pins
(pin (num 1) (name GND@1) (type BiDi))
(pin (num 2) (name GND@2) (type BiDi))
(pin (num 3) (name GND@3) (type BiDi))
(pin (num 4) (name GND@4) (type BiDi))
(pin (num 5) (name GND@5) (type BiDi))
(pin (num 6) (name RXEN) (type BiDi))
(pin (num 7) (name TXEN) (type BiDi))
(pin (num 8) (name DIO2) (type BiDi))
(pin (num 9) (name VCC@1) (type BiDi))
(pin (num 10) (name VCC@2) (type BiDi))
(pin (num 11) (name GND@6) (type BiDi))
(pin (num 12) (name GND@7) (type BiDi))
(pin (num 13) (name DIO1) (type BiDi))
(pin (num 14) (name BUSY) (type BiDi))
(pin (num 15) (name NRST) (type BiDi))
(pin (num 16) (name MISO) (type BiDi))
(pin (num 17) (name MOSI) (type BiDi))
(pin (num 18) (name SCK) (type BiDi))
(pin (num 19) (name NSS) (type BiDi))
(pin (num 20) (name GND@8) (type BiDi))
(pin (num 21) (name ANT) (type BiDi))
(pin (num 22) (name GND@9) (type BiDi))))
(libpart (lib lora_tracker) (part ESP32)
(fields
(field (name Reference) U)
(field (name Value) ESP32))
(pins
(pin (num 1) (name +3V3) (type input))
(pin (num 2) (name EN) (type input))
(pin (num 3) (name GPIO36) (type input))
(pin (num 4) (name GPIO39) (type input))
(pin (num 5) (name GPIO34) (type input))
(pin (num 6) (name GPIO35) (type input))
(pin (num 7) (name GPIO32) (type input))
(pin (num 8) (name GPIO33) (type input))
(pin (num 9) (name GPIO25) (type input))
(pin (num 10) (name GPIO26) (type input))
(pin (num 11) (name GPIO27) (type input))
(pin (num 12) (name GPIO14) (type input))
(pin (num 13) (name GPIO12) (type input))
(pin (num 14) (name GND) (type input))
(pin (num 15) (name GPIO13) (type input))
(pin (num 16) (name GPIO9) (type input))
(pin (num 17) (name GPIO10) (type input))
(pin (num 18) (name GPIO11) (type input))
(pin (num 19) (name VIN) (type input))
(pin (num 20) (name GPIO6) (type input))
(pin (num 21) (name GPIO7) (type input))
(pin (num 22) (name GPIO8) (type input))
(pin (num 23) (name GPIO15) (type input))
(pin (num 24) (name GPIO2) (type input))
(pin (num 25) (name GPIO0) (type input))
(pin (num 26) (name GPIO4) (type input))
(pin (num 27) (name GPIO16) (type input))
(pin (num 28) (name GPIO17) (type input))
(pin (num 29) (name GPIO5) (type input))
(pin (num 30) (name GPIO18) (type input))
(pin (num 31) (name GPIO19) (type input))
(pin (num 32) (name GND) (type input))
(pin (num 33) (name GPIO21) (type input))
(pin (num 34) (name GPIO3) (type input))
(pin (num 35) (name GPIO1) (type input))
(pin (num 36) (name GPIO22) (type input))
(pin (num 37) (name GPIO23) (type input))
(pin (num 38) (name GND) (type input)))))
(libraries
(library (logical Connector)
(uri /usr/share/kicad/library/Connector.lib))
(library (logical Device)
(uri /usr/share/kicad/library/Device.lib))
(library (logical Jumper)
(uri /usr/share/kicad/library/Jumper.lib))
(library (logical RF_Module)
(uri /usr/share/kicad/library/RF_Module.lib))
(library (logical lora_tracker)
(uri ${KIPRJMOD}/lora_tracker.lib)))
(nets
(net (code 1) (name "Net-(JP5-Pad2)")
(node (ref JP5) (pin 2))
(node (ref U1) (pin 18)))
(net (code 2) (name GPIO9)
(node (ref U1) (pin 16))
(node (ref J2) (pin 2)))
(net (code 3) (name "Net-(JP4-Pad2)")
(node (ref U1) (pin 14))
(node (ref JP4) (pin 2)))
(net (code 4) (name GPIO34)
(node (ref U1) (pin 5))
(node (ref J2) (pin 7)))
(net (code 5) (name GPIO39)
(node (ref U1) (pin 4))
(node (ref J2) (pin 8)))
(net (code 6) (name GPIO36)
(node (ref U1) (pin 3))
(node (ref J2) (pin 9)))
(net (code 7) (name EN)
(node (ref J2) (pin 10))
(node (ref U1) (pin 2)))
(net (code 8) (name GPIO21)
(node (ref U1) (pin 33))
(node (ref J3) (pin 9)))
(net (code 9) (name GPIO35)
(node (ref J2) (pin 6))
(node (ref U1) (pin 6)))
(net (code 10) (name "Net-(JP2-Pad1)")
(node (ref JP3) (pin 3))
(node (ref JP2) (pin 1))
(node (ref U1) (pin 30)))
(net (code 11) (name "Net-(JP3-Pad1)")
(node (ref U1) (pin 29))
(node (ref JP3) (pin 1)))
(net (code 12) (name BUSY)
(node (ref U3) (pin 5))
(node (ref U2) (pin 14))
(node (ref U1) (pin 12)))
(net (code 13) (name "Net-(JP7-Pad2)")
(node (ref U1) (pin 1))
(node (ref JP7) (pin 2)))
(net (code 14) (name "Net-(JP8-Pad1)")
(node (ref U1) (pin 20))
(node (ref JP8) (pin 1)))
(net (code 15) (name MOSI)
(node (ref U3) (pin 14))
(node (ref U2) (pin 17))
(node (ref U1) (pin 37)))
(net (code 16) (name DIO1)
(node (ref U2) (pin 13))
(node (ref U3) (pin 6))
(node (ref U1) (pin 13)))
(net (code 17) (name MISO)
(node (ref JP1) (pin 2))
(node (ref U3) (pin 13))
(node (ref U2) (pin 16)))
(net (code 18) (name SCK)
(node (ref U2) (pin 18))
(node (ref U3) (pin 12))
(node (ref JP2) (pin 2)))
(net (code 19) (name NSS)
(node (ref JP3) (pin 2))
(node (ref U3) (pin 15))
(node (ref U2) (pin 19)))
(net (code 20) (name NRST)
(node (ref U1) (pin 11))
(node (ref U3) (pin 4))
(node (ref U2) (pin 15)))
(net (code 21) (name GPIO8)
(node (ref U1) (pin 22))
(node (ref J3) (pin 2)))
(net (code 22) (name GPIO1)
(node (ref U1) (pin 35))
(node (ref J3) (pin 11)))
(net (code 23) (name GPIO3)
(node (ref U1) (pin 34))
(node (ref J3) (pin 10)))
(net (code 24) (name GPIO7)
(node (ref U1) (pin 21))
(node (ref J3) (pin 1)))
(net (code 25) (name GPIO22)
(node (ref J3) (pin 12))
(node (ref U1) (pin 36)))
(net (code 26) (name GPIO2)
(node (ref J3) (pin 4))
(node (ref U1) (pin 24)))
(net (code 27) (name GPIO0)
(node (ref U1) (pin 25))
(node (ref J3) (pin 5)))
(net (code 28) (name GPIO4)
(node (ref U1) (pin 26))
(node (ref J3) (pin 6)))
(net (code 29) (name GPIO16)
(node (ref J3) (pin 7))
(node (ref U1) (pin 27)))
(net (code 30) (name GPIO17)
(node (ref U1) (pin 28))
(node (ref J3) (pin 8)))
(net (code 31) (name GPIO15)
(node (ref J3) (pin 3))
(node (ref U1) (pin 23)))
(net (code 32) (name "Net-(U3-Pad8)")
(node (ref U3) (pin 8)))
(net (code 33) (name GND)
(node (ref U2) (pin 11))
(node (ref U2) (pin 12))
(node (ref U1) (pin 38))
(node (ref U2) (pin 2))
(node (ref U3) (pin 2))
(node (ref U3) (pin 16))
(node (ref U3) (pin 9))
(node (ref JP6) (pin 2))
(node (ref JP5) (pin 1))
(node (ref U2) (pin 1))
(node (ref JP4) (pin 1))
(node (ref C1) (pin 2))
(node (ref C2) (pin 2))
(node (ref J1) (pin 2))
(node (ref U2) (pin 20))
(node (ref J4) (pin 1))
(node (ref C3) (pin 2))
(node (ref U2) (pin 5))
(node (ref U2) (pin 4))
(node (ref U2) (pin 3))
(node (ref U2) (pin 22)))
(net (code 34) (name 3v3)
(node (ref J4) (pin 2))
(node (ref JP8) (pin 2))
(node (ref U3) (pin 3))
(node (ref C3) (pin 1))
(node (ref JP7) (pin 1)))
(net (code 35) (name VCC)
(node (ref C2) (pin 1))
(node (ref C1) (pin 1))
(node (ref J4) (pin 3))
(node (ref U1) (pin 19))
(node (ref U2) (pin 10))
(node (ref U2) (pin 9)))
(net (code 36) (name "Net-(U3-Pad11)")
(node (ref U3) (pin 11)))
(net (code 37) (name "Net-(U3-Pad10)")
(node (ref U3) (pin 10)))
(net (code 38) (name "Net-(U3-Pad7)")
(node (ref U3) (pin 7)))
(net (code 39) (name GPIO10)
(node (ref U1) (pin 17))
(node (ref J2) (pin 1)))
(net (code 40) (name GPIO26)
(node (ref U1) (pin 10))
(node (ref J2) (pin 4)))
(net (code 41) (name GPIO25)
(node (ref U1) (pin 9))
(node (ref J2) (pin 5)))
(net (code 42) (name GPIO13)
(node (ref J2) (pin 3))
(node (ref U1) (pin 15)))
(net (code 43) (name "Net-(J1-Pad1)")
(node (ref J1) (pin 1))
(node (ref U3) (pin 1))
(node (ref U2) (pin 21)))
(net (code 44) (name TXEN)
(node (ref U1) (pin 8))
(node (ref U2) (pin 7)))
(net (code 45) (name RXEN)
(node (ref U1) (pin 7))
(node (ref U2) (pin 6)))
(net (code 46) (name "Net-(JP1-Pad1)")
(node (ref JP2) (pin 3))
(node (ref U1) (pin 31))
(node (ref JP1) (pin 1)))
(net (code 47) (name "Net-(U2-Pad8)")
(node (ref U2) (pin 8)))
(net (code 48) (name "Net-(JP1-Pad3)")
(node (ref JP1) (pin 3))
(node (ref JP6) (pin 1))
(node (ref U1) (pin 32)))))

Wyświetl plik

@ -0,0 +1,538 @@
(export (version D)
(design
(source ${KIPRJMOD}/lora_tracker.sch)
(date "Sat 18 Mar 2023 09:44:06 PM EET")
(tool "Eeschema 5.1.9+dfsg1-1+deb11u1")
(sheet (number 1) (name /) (tstamps /)
(title_block
(title)
(company)
(rev)
(date)
(source lora_tracker.sch)
(comment (number 1) (value ""))
(comment (number 2) (value ""))
(comment (number 3) (value ""))
(comment (number 4) (value "")))))
(components
(comp (ref U2)
(value E22-400M30S)
(footprint lora_tracker:E22-400M30S)
(libsource (lib lora_tracker) (part E22-400M30S) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 6194CACC))
(comp (ref J1)
(value Conn_Coaxial)
(footprint Connector_Coaxial:SMA_Samtec_SMA-J-P-H-ST-EM1_EdgeMount)
(datasheet " ~")
(libsource (lib Connector) (part Conn_Coaxial) (description "coaxial connector (BNC, SMA, SMB, SMC, Cinch/RCA, ...)"))
(sheetpath (names /) (tstamps /))
(tstamp 619A9181))
(comp (ref JP1)
(value SolderJumper_3_Open)
(footprint Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_3_Open) (description "Solder Jumper, 3-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619A9CAA))
(comp (ref JP2)
(value SolderJumper_3_Open)
(footprint Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_3_Open) (description "Solder Jumper, 3-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619AAF54))
(comp (ref JP3)
(value SolderJumper_3_Open)
(footprint Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_3_Open) (description "Solder Jumper, 3-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619AC0BC))
(comp (ref JP4)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619C59F2))
(comp (ref JP5)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619C9C44))
(comp (ref JP6)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 619D6D42))
(comp (ref C2)
(value 100uF)
(footprint Capacitor_SMD:CP_Elec_3x5.3)
(datasheet ~)
(libsource (lib Device) (part CP1) (description "Polarized capacitor, US symbol"))
(sheetpath (names /) (tstamps /))
(tstamp 619EF8E3))
(comp (ref C1)
(value 100nF)
(footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder)
(datasheet ~)
(libsource (lib Device) (part C) (description "Unpolarized capacitor"))
(sheetpath (names /) (tstamps /))
(tstamp 619EF996))
(comp (ref U3)
(value Ai-Thinker-Ra-01)
(footprint RF_Module:Ai-Thinker-Ra-01-LoRa)
(datasheet https://mikroelectron.com/Product/10KM-433M-LORA-LONG-RANGE-WIRELESS-MODULE-RA-01)
(libsource (lib RF_Module) (part Ai-Thinker-Ra-01) (description "Ai-Thinker LoRa Module Ra-01"))
(sheetpath (names /) (tstamps /))
(tstamp 61A0738A))
(comp (ref JP8)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 61A555B2))
(comp (ref JP7)
(value SolderJumper_2_Open)
(footprint Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm)
(datasheet ~)
(libsource (lib Jumper) (part SolderJumper_2_Open) (description "Solder Jumper, 2-pole, open"))
(sheetpath (names /) (tstamps /))
(tstamp 61A74681))
(comp (ref C3)
(value 100nF)
(footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder)
(datasheet ~)
(libsource (lib Device) (part C) (description "Unpolarized capacitor"))
(sheetpath (names /) (tstamps /))
(tstamp 61A98B18))
(comp (ref J2)
(value Conn_01x10_Female)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib Connector) (part Conn_01x10_Female) (description "Generic connector, single row, 01x10, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 61AA7D88))
(comp (ref J3)
(value Conn_01x12_Female)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x12_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib Connector) (part Conn_01x12_Female) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 61AA8097))
(comp (ref U1)
(value ESP32)
(footprint lora_tracker:esp32-devkit-wide)
(libsource (lib lora_tracker) (part ESP32) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 61978D9D))
(comp (ref J4)
(value Conn_01x03_Female)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib Connector) (part Conn_01x03_Female) (description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 61D04C33)))
(libparts
(libpart (lib Connector) (part Conn_01x03_Female)
(description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x03_Female))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))))
(libpart (lib Connector) (part Conn_01x10_Female)
(description "Generic connector, single row, 01x10, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x10_Female))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))
(pin (num 7) (name Pin_7) (type passive))
(pin (num 8) (name Pin_8) (type passive))
(pin (num 9) (name Pin_9) (type passive))
(pin (num 10) (name Pin_10) (type passive))))
(libpart (lib Connector) (part Conn_01x12_Female)
(description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x12_Female))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))
(pin (num 7) (name Pin_7) (type passive))
(pin (num 8) (name Pin_8) (type passive))
(pin (num 9) (name Pin_9) (type passive))
(pin (num 10) (name Pin_10) (type passive))
(pin (num 11) (name Pin_11) (type passive))
(pin (num 12) (name Pin_12) (type passive))))
(libpart (lib Connector) (part Conn_Coaxial)
(description "coaxial connector (BNC, SMA, SMB, SMC, Cinch/RCA, ...)")
(docs " ~")
(footprints
(fp *BNC*)
(fp *SMA*)
(fp *SMB*)
(fp *SMC*)
(fp *Cinch*))
(fields
(field (name Reference) J)
(field (name Value) Conn_Coaxial))
(pins
(pin (num 1) (name In) (type passive))
(pin (num 2) (name Ext) (type passive))))
(libpart (lib Device) (part C)
(description "Unpolarized capacitor")
(docs ~)
(footprints
(fp C_*))
(fields
(field (name Reference) C)
(field (name Value) C))
(pins
(pin (num 1) (name ~) (type passive))
(pin (num 2) (name ~) (type passive))))
(libpart (lib Device) (part CP1)
(description "Polarized capacitor, US symbol")
(docs ~)
(footprints
(fp CP_*))
(fields
(field (name Reference) C)
(field (name Value) CP1))
(pins
(pin (num 1) (name ~) (type passive))
(pin (num 2) (name ~) (type passive))))
(libpart (lib Jumper) (part SolderJumper_2_Open)
(description "Solder Jumper, 2-pole, open")
(docs ~)
(footprints
(fp SolderJumper*Open*))
(fields
(field (name Reference) JP)
(field (name Value) SolderJumper_2_Open))
(pins
(pin (num 1) (name A) (type passive))
(pin (num 2) (name B) (type passive))))
(libpart (lib Jumper) (part SolderJumper_3_Open)
(description "Solder Jumper, 3-pole, open")
(docs ~)
(footprints
(fp SolderJumper*Open*))
(fields
(field (name Reference) JP)
(field (name Value) SolderJumper_3_Open))
(pins
(pin (num 1) (name A) (type passive))
(pin (num 2) (name C) (type input))
(pin (num 3) (name B) (type passive))))
(libpart (lib RF_Module) (part Ai-Thinker-Ra-01)
(description "Ai-Thinker LoRa Module Ra-01")
(docs https://mikroelectron.com/Product/10KM-433M-LORA-LONG-RANGE-WIRELESS-MODULE-RA-01)
(footprints
(fp Ai?Thinker?Ra?01*))
(fields
(field (name Reference) U)
(field (name Value) Ai-Thinker-Ra-01)
(field (name Footprint) RF_Module:Ai-Thinker-Ra-01-LoRa))
(pins
(pin (num 1) (name Ant) (type input))
(pin (num 2) (name Gnd) (type power_in))
(pin (num 3) (name 3v3) (type power_in))
(pin (num 4) (name ~Reset) (type input))
(pin (num 5) (name DIO0) (type BiDi))
(pin (num 6) (name DIO1) (type BiDi))
(pin (num 7) (name DIO2) (type BiDi))
(pin (num 8) (name DIO3) (type BiDi))
(pin (num 9) (name Gnd) (type passive))
(pin (num 10) (name DIO4) (type BiDi))
(pin (num 11) (name DIO5) (type BiDi))
(pin (num 12) (name SCK) (type BiDi))
(pin (num 13) (name MISO) (type output))
(pin (num 14) (name MOSI) (type input))
(pin (num 15) (name ~SS) (type input))
(pin (num 16) (name Gnd) (type passive))))
(libpart (lib lora_tracker) (part E22-400M30S)
(fields
(field (name Reference) U)
(field (name Value) E22-400M30S))
(pins
(pin (num 1) (name GND@1) (type BiDi))
(pin (num 2) (name GND@2) (type BiDi))
(pin (num 3) (name GND@3) (type BiDi))
(pin (num 4) (name GND@4) (type BiDi))
(pin (num 5) (name GND@5) (type BiDi))
(pin (num 6) (name RXEN) (type BiDi))
(pin (num 7) (name TXEN) (type BiDi))
(pin (num 8) (name DIO2) (type BiDi))
(pin (num 9) (name VCC@1) (type BiDi))
(pin (num 10) (name VCC@2) (type BiDi))
(pin (num 11) (name GND@6) (type BiDi))
(pin (num 12) (name GND@7) (type BiDi))
(pin (num 13) (name DIO1) (type BiDi))
(pin (num 14) (name BUSY) (type BiDi))
(pin (num 15) (name NRST) (type BiDi))
(pin (num 16) (name MISO) (type BiDi))
(pin (num 17) (name MOSI) (type BiDi))
(pin (num 18) (name SCK) (type BiDi))
(pin (num 19) (name NSS) (type BiDi))
(pin (num 20) (name GND@8) (type BiDi))
(pin (num 21) (name ANT) (type BiDi))
(pin (num 22) (name GND@9) (type BiDi))))
(libpart (lib lora_tracker) (part ESP32)
(fields
(field (name Reference) U)
(field (name Value) ESP32))
(pins
(pin (num 1) (name +3V3) (type input))
(pin (num 2) (name EN) (type input))
(pin (num 3) (name GPIO36) (type input))
(pin (num 4) (name GPIO39) (type input))
(pin (num 5) (name GPIO34) (type input))
(pin (num 6) (name GPIO35) (type input))
(pin (num 7) (name GPIO32) (type input))
(pin (num 8) (name GPIO33) (type input))
(pin (num 9) (name GPIO25) (type input))
(pin (num 10) (name GPIO26) (type input))
(pin (num 11) (name GPIO27) (type input))
(pin (num 12) (name GPIO14) (type input))
(pin (num 13) (name GPIO12) (type input))
(pin (num 14) (name GND) (type input))
(pin (num 15) (name GPIO13) (type input))
(pin (num 16) (name GPIO9) (type input))
(pin (num 17) (name GPIO10) (type input))
(pin (num 18) (name GPIO11) (type input))
(pin (num 19) (name VIN) (type input))
(pin (num 20) (name GPIO6) (type input))
(pin (num 21) (name GPIO7) (type input))
(pin (num 22) (name GPIO8) (type input))
(pin (num 23) (name GPIO15) (type input))
(pin (num 24) (name GPIO2) (type input))
(pin (num 25) (name GPIO0) (type input))
(pin (num 26) (name GPIO4) (type input))
(pin (num 27) (name GPIO16) (type input))
(pin (num 28) (name GPIO17) (type input))
(pin (num 29) (name GPIO5) (type input))
(pin (num 30) (name GPIO18) (type input))
(pin (num 31) (name GPIO19) (type input))
(pin (num 32) (name GND) (type input))
(pin (num 33) (name GPIO21) (type input))
(pin (num 34) (name GPIO3) (type input))
(pin (num 35) (name GPIO1) (type input))
(pin (num 36) (name GPIO22) (type input))
(pin (num 37) (name GPIO23) (type input))
(pin (num 38) (name GND) (type input)))))
(libraries
(library (logical Connector)
(uri /usr/share/kicad/library/Connector.lib))
(library (logical Device)
(uri /usr/share/kicad/library/Device.lib))
(library (logical Jumper)
(uri /usr/share/kicad/library/Jumper.lib))
(library (logical RF_Module)
(uri /usr/share/kicad/library/RF_Module.lib))
(library (logical lora_tracker)
(uri ${KIPRJMOD}/lora_tracker.lib)))
(nets
(net (code 1) (name "Net-(JP5-Pad2)")
(node (ref JP5) (pin 2))
(node (ref U1) (pin 18)))
(net (code 2) (name GPIO9)
(node (ref U1) (pin 16))
(node (ref J2) (pin 2)))
(net (code 3) (name "Net-(JP4-Pad2)")
(node (ref U1) (pin 14))
(node (ref JP4) (pin 2)))
(net (code 4) (name GPIO34)
(node (ref U1) (pin 5))
(node (ref J2) (pin 7)))
(net (code 5) (name GPIO39)
(node (ref U1) (pin 4))
(node (ref J2) (pin 8)))
(net (code 6) (name GPIO36)
(node (ref U1) (pin 3))
(node (ref J2) (pin 9)))
(net (code 7) (name EN)
(node (ref J2) (pin 10))
(node (ref U1) (pin 2)))
(net (code 8) (name GPIO21)
(node (ref U1) (pin 33))
(node (ref J3) (pin 9)))
(net (code 9) (name GPIO35)
(node (ref J2) (pin 6))
(node (ref U1) (pin 6)))
(net (code 10) (name "Net-(JP2-Pad1)")
(node (ref JP3) (pin 3))
(node (ref JP2) (pin 1))
(node (ref U1) (pin 30)))
(net (code 11) (name "Net-(JP3-Pad1)")
(node (ref U1) (pin 29))
(node (ref JP3) (pin 1)))
(net (code 12) (name BUSY)
(node (ref U3) (pin 5))
(node (ref U2) (pin 14))
(node (ref U1) (pin 12)))
(net (code 13) (name "Net-(JP7-Pad2)")
(node (ref U1) (pin 1))
(node (ref JP7) (pin 2)))
(net (code 14) (name "Net-(JP8-Pad1)")
(node (ref U1) (pin 20))
(node (ref JP8) (pin 1)))
(net (code 15) (name MOSI)
(node (ref U3) (pin 14))
(node (ref U2) (pin 17))
(node (ref U1) (pin 37)))
(net (code 16) (name DIO1)
(node (ref U2) (pin 13))
(node (ref U3) (pin 6))
(node (ref U1) (pin 13)))
(net (code 17) (name MISO)
(node (ref JP1) (pin 2))
(node (ref U3) (pin 13))
(node (ref U2) (pin 16)))
(net (code 18) (name SCK)
(node (ref U2) (pin 18))
(node (ref U3) (pin 12))
(node (ref JP2) (pin 2)))
(net (code 19) (name NSS)
(node (ref JP3) (pin 2))
(node (ref U3) (pin 15))
(node (ref U2) (pin 19)))
(net (code 20) (name NRST)
(node (ref U1) (pin 11))
(node (ref U3) (pin 4))
(node (ref U2) (pin 15)))
(net (code 21) (name GPIO8)
(node (ref U1) (pin 22))
(node (ref J3) (pin 2)))
(net (code 22) (name GPIO1)
(node (ref U1) (pin 35))
(node (ref J3) (pin 11)))
(net (code 23) (name GPIO3)
(node (ref U1) (pin 34))
(node (ref J3) (pin 10)))
(net (code 24) (name GPIO7)
(node (ref U1) (pin 21))
(node (ref J3) (pin 1)))
(net (code 25) (name GPIO22)
(node (ref J3) (pin 12))
(node (ref U1) (pin 36)))
(net (code 26) (name GPIO2)
(node (ref J3) (pin 4))
(node (ref U1) (pin 24)))
(net (code 27) (name GPIO0)
(node (ref U1) (pin 25))
(node (ref J3) (pin 5)))
(net (code 28) (name GPIO4)
(node (ref U1) (pin 26))
(node (ref J3) (pin 6)))
(net (code 29) (name GPIO16)
(node (ref J3) (pin 7))
(node (ref U1) (pin 27)))
(net (code 30) (name GPIO17)
(node (ref U1) (pin 28))
(node (ref J3) (pin 8)))
(net (code 31) (name GPIO15)
(node (ref J3) (pin 3))
(node (ref U1) (pin 23)))
(net (code 32) (name "Net-(U3-Pad8)")
(node (ref U3) (pin 8)))
(net (code 33) (name GND)
(node (ref U2) (pin 11))
(node (ref U2) (pin 12))
(node (ref U1) (pin 38))
(node (ref U2) (pin 2))
(node (ref U3) (pin 2))
(node (ref U3) (pin 16))
(node (ref U3) (pin 9))
(node (ref JP6) (pin 2))
(node (ref JP5) (pin 1))
(node (ref U2) (pin 1))
(node (ref JP4) (pin 1))
(node (ref C1) (pin 2))
(node (ref C2) (pin 2))
(node (ref J1) (pin 2))
(node (ref U2) (pin 20))
(node (ref J4) (pin 1))
(node (ref C3) (pin 2))
(node (ref U2) (pin 5))
(node (ref U2) (pin 4))
(node (ref U2) (pin 3))
(node (ref U2) (pin 22)))
(net (code 34) (name 3v3)
(node (ref J4) (pin 2))
(node (ref JP8) (pin 2))
(node (ref U3) (pin 3))
(node (ref C3) (pin 1))
(node (ref JP7) (pin 1)))
(net (code 35) (name VCC)
(node (ref C2) (pin 1))
(node (ref C1) (pin 1))
(node (ref J4) (pin 3))
(node (ref U1) (pin 19))
(node (ref U2) (pin 10))
(node (ref U2) (pin 9)))
(net (code 36) (name "Net-(U3-Pad11)")
(node (ref U3) (pin 11)))
(net (code 37) (name "Net-(U3-Pad10)")
(node (ref U3) (pin 10)))
(net (code 38) (name "Net-(U3-Pad7)")
(node (ref U3) (pin 7)))
(net (code 39) (name GPIO10)
(node (ref U1) (pin 17))
(node (ref J2) (pin 1)))
(net (code 40) (name GPIO26)
(node (ref U1) (pin 10))
(node (ref J2) (pin 4)))
(net (code 41) (name GPIO25)
(node (ref U1) (pin 9))
(node (ref J2) (pin 5)))
(net (code 42) (name GPIO13)
(node (ref J2) (pin 3))
(node (ref U1) (pin 15)))
(net (code 43) (name "Net-(J1-Pad1)")
(node (ref J1) (pin 1))
(node (ref U3) (pin 1))
(node (ref U2) (pin 21)))
(net (code 44) (name TXEN)
(node (ref U1) (pin 8))
(node (ref U2) (pin 7)))
(net (code 45) (name RXEN)
(node (ref U1) (pin 7))
(node (ref U2) (pin 6)))
(net (code 46) (name "Net-(JP1-Pad1)")
(node (ref JP2) (pin 3))
(node (ref U1) (pin 31))
(node (ref JP1) (pin 1)))
(net (code 47) (name "Net-(U2-Pad8)")
(node (ref U2) (pin 8)))
(net (code 48) (name "Net-(JP1-Pad3)")
(node (ref JP1) (pin 3))
(node (ref JP6) (pin 1))
(node (ref U1) (pin 32)))))

Wyświetl plik

@ -0,0 +1,238 @@
update=Sat 18 Mar 2023 09:48:06 PM EET
version=1
last_client=pcbnew
[general]
version=1
RootSch=
BoardNm=
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=lora_tracker_wide.net
CopperLayerCount=2
BoardThickness=1.6
AllowMicroVias=0
AllowBlindVias=0
RequireCourtyardDefinitions=0
ProhibitOverlappingCourtyards=1
MinTrackWidth=0.2
MinViaDiameter=0.4
MinViaDrill=0.3
MinMicroViaDiameter=0.2
MinMicroViaDrill=0.09999999999999999
MinHoleToHole=0.25
TrackWidth1=0.25
ViaDiameter1=0.8
ViaDrill1=0.4
dPairWidth1=0.2
dPairGap1=0.25
dPairViaGap1=0.25
SilkLineWidth=0.15
SilkTextSizeV=1
SilkTextSizeH=1
SilkTextSizeThickness=0.15
SilkTextItalic=0
SilkTextUpright=1
CopperLineWidth=0.2
CopperTextSizeV=1.5
CopperTextSizeH=1.5
CopperTextThickness=0.3
CopperTextItalic=0
CopperTextUpright=1
EdgeCutLineWidth=0.15
CourtyardLineWidth=0.05
OthersLineWidth=0.15
OthersTextSizeV=1
OthersTextSizeH=1
OthersTextSizeThickness=0.15
OthersTextItalic=0
OthersTextUpright=1
SolderMaskClearance=0.051
SolderMaskMinWidth=0.25
SolderPasteClearance=0
SolderPasteRatio=0
[pcbnew/Layer.F.Cu]
Name=F.Cu
Type=0
Enabled=1
[pcbnew/Layer.In1.Cu]
Name=In1.Cu
Type=0
Enabled=0
[pcbnew/Layer.In2.Cu]
Name=In2.Cu
Type=0
Enabled=0
[pcbnew/Layer.In3.Cu]
Name=In3.Cu
Type=0
Enabled=0
[pcbnew/Layer.In4.Cu]
Name=In4.Cu
Type=0
Enabled=0
[pcbnew/Layer.In5.Cu]
Name=In5.Cu
Type=0
Enabled=0
[pcbnew/Layer.In6.Cu]
Name=In6.Cu
Type=0
Enabled=0
[pcbnew/Layer.In7.Cu]
Name=In7.Cu
Type=0
Enabled=0
[pcbnew/Layer.In8.Cu]
Name=In8.Cu
Type=0
Enabled=0
[pcbnew/Layer.In9.Cu]
Name=In9.Cu
Type=0
Enabled=0
[pcbnew/Layer.In10.Cu]
Name=In10.Cu
Type=0
Enabled=0
[pcbnew/Layer.In11.Cu]
Name=In11.Cu
Type=0
Enabled=0
[pcbnew/Layer.In12.Cu]
Name=In12.Cu
Type=0
Enabled=0
[pcbnew/Layer.In13.Cu]
Name=In13.Cu
Type=0
Enabled=0
[pcbnew/Layer.In14.Cu]
Name=In14.Cu
Type=0
Enabled=0
[pcbnew/Layer.In15.Cu]
Name=In15.Cu
Type=0
Enabled=0
[pcbnew/Layer.In16.Cu]
Name=In16.Cu
Type=0
Enabled=0
[pcbnew/Layer.In17.Cu]
Name=In17.Cu
Type=0
Enabled=0
[pcbnew/Layer.In18.Cu]
Name=In18.Cu
Type=0
Enabled=0
[pcbnew/Layer.In19.Cu]
Name=In19.Cu
Type=0
Enabled=0
[pcbnew/Layer.In20.Cu]
Name=In20.Cu
Type=0
Enabled=0
[pcbnew/Layer.In21.Cu]
Name=In21.Cu
Type=0
Enabled=0
[pcbnew/Layer.In22.Cu]
Name=In22.Cu
Type=0
Enabled=0
[pcbnew/Layer.In23.Cu]
Name=In23.Cu
Type=0
Enabled=0
[pcbnew/Layer.In24.Cu]
Name=In24.Cu
Type=0
Enabled=0
[pcbnew/Layer.In25.Cu]
Name=In25.Cu
Type=0
Enabled=0
[pcbnew/Layer.In26.Cu]
Name=In26.Cu
Type=0
Enabled=0
[pcbnew/Layer.In27.Cu]
Name=In27.Cu
Type=0
Enabled=0
[pcbnew/Layer.In28.Cu]
Name=In28.Cu
Type=0
Enabled=0
[pcbnew/Layer.In29.Cu]
Name=In29.Cu
Type=0
Enabled=0
[pcbnew/Layer.In30.Cu]
Name=In30.Cu
Type=0
Enabled=0
[pcbnew/Layer.B.Cu]
Name=B.Cu
Type=0
Enabled=1
[pcbnew/Layer.B.Adhes]
Enabled=1
[pcbnew/Layer.F.Adhes]
Enabled=1
[pcbnew/Layer.B.Paste]
Enabled=1
[pcbnew/Layer.F.Paste]
Enabled=1
[pcbnew/Layer.B.SilkS]
Enabled=1
[pcbnew/Layer.F.SilkS]
Enabled=1
[pcbnew/Layer.B.Mask]
Enabled=1
[pcbnew/Layer.F.Mask]
Enabled=1
[pcbnew/Layer.Dwgs.User]
Enabled=1
[pcbnew/Layer.Cmts.User]
Enabled=1
[pcbnew/Layer.Eco1.User]
Enabled=1
[pcbnew/Layer.Eco2.User]
Enabled=1
[pcbnew/Layer.Edge.Cuts]
Enabled=1
[pcbnew/Layer.Margin]
Enabled=1
[pcbnew/Layer.B.CrtYd]
Enabled=1
[pcbnew/Layer.F.CrtYd]
Enabled=1
[pcbnew/Layer.B.Fab]
Enabled=1
[pcbnew/Layer.F.Fab]
Enabled=1
[pcbnew/Layer.Rescue]
Enabled=0
[pcbnew/Netclasses]
[pcbnew/Netclasses/Default]
Name=Default
Clearance=0.2
TrackWidth=0.25
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25

Wyświetl plik

@ -1,5 +1,8 @@
#ifndef CONFIG_H
#define CONFIG_H
// Uncomment for SX126X module usage
#define USE_SX126X
// #define USE_SX126X
// Check your module name at https://github.com/jgromes/RadioLib/wiki/Modules
#ifdef USE_SX126X
@ -38,7 +41,9 @@
#define CFG_LORA_PIN_RXEN 32 // (sx127x - unused, sx126x - RXEN pin number)
#define CFG_LORA_PIN_TXEN 33 // (sx127x - unused, sx126x - TXEN pin number)
#else
#define CFG_LORA_PIN_B RADIOLIB_NC // (sx127x - dio1, sx126x/sx128x - busy)
#define CFG_LORA_PIN_B RADIOLIB_NC
#define CFG_LORA_PIN_RXEN RADIOLIB_NC
#define CFG_LORA_PIN_TXEN RADIOLIB_NC
#endif
// Redefine LED if not defined in Arduino to have module heartbeat indication
@ -54,16 +59,29 @@
#define CFG_LORA_USE_CAD true // set to true to utilize carrier detection
#endif
// LoRa protocol default parameters (they need to match between devices!!!)
// modulation
#define CFG_MOD_TYPE_LORA 0
#define CFG_MOD_TYPE_FSK 1
#define CFG_MOD_TYPE CFG_MOD_TYPE_LORA
// general radio parameters
#define CFG_LORA_FREQ_RX 433.775e6 // RX frequency in MHz
#define CFG_LORA_FREQ_TX 433.775e6 // TX frequency in MHz
#define CFG_LORA_PWR 20 // output power in dBm
// LoRa protocol default parameters (they need to match between devices!!!)
#define CFG_LORA_BW 125e3 // bandwidth (from 7.8 kHz up to 500 kHz)
#define CFG_LORA_SF 12 // spreading factor (6 - 12), 6 requires implicit header mode
#define CFG_LORA_CR 7 // coding rate (5 - 8)
#define CFG_LORA_CRC 1 // 0 - disabled, 1 - 1 byte, 2 - 2 bytes
#define CFG_LORA_EXPLICIT true // header mode, true - explicit, false - implicit
#define CFG_LORA_SYNC 0x12 // sync word (0x12 - private used by other trackers, 0x34 - public used by LoRaWAN)
#define CFG_LORA_PWR 20 // output power in dBm
#define CFG_LORA_PREAMBLE 8 // preamble length from 6 to 65535
// fsk modem default parameters (they need to match between devices!!!)
#define CFG_FSK_BIT_RATE 4.8 // bit rate in Kbps from 0.6 to 300.0
#define CFG_FSK_FREQ_DEV 1.2 // frequency deviation in kHz from 0.6 to 200.0
#define CFG_FSK_RX_BW 9.7 // rx bandwidth in kHz !!discrete!! from 4.8 to 467.0
// WiFi client and AP options
#define CFG_WIFI_ENABLE_AP false // run as wifi access point (for CFG_KISS_TCP_IP mode)
@ -111,3 +129,5 @@
#define CFG_TLM_ENABLE false // enable modem battery monitor
#define CFG_TLM_BAT_MON_PIN 36 // battery ADC pin
#define CFG_TLM_BAT_MON_CAL 0.37f // calibration coefficient
#endif // CONFIG_H

Wyświetl plik

@ -50,6 +50,7 @@ protected:
None = 0x80
};
static const int CfgToSerialDelayMs = 10;
static const int CfgSerialToRigQueueSize = 4096;
static const int CfgRigToSerialQueueSize = 4096;

Wyświetl plik

@ -11,16 +11,27 @@ struct Config
DebugLogLevel LogLevel; // log level
bool IsClientMode; // false - server mode, true - client mode (disables wifi and aprsis)
// lora protocol parameters
// modulation type
int ModType; // 0 - lora, 1 - fsk
// general radio parameters
long LoraFreqRx; // lora RX frequency, e.g. 433.775e6
long LoraFreqTx; // lora TX frequency, e.g. 433.775e6
int LoraPower; // lora power level in dbm, 20
// lora protocol parameters
long LoraBw; // lora bandwidth, e.g. 125e3
int LoraSf; // lora spreading factor, e.g. 12
int LoraCodingRate; // lora coding rate, e.g. 7
int LoraPower; // lora power level in dbm, 20
int LoraSync; // lora sync word/packet id, 0x34
int LoraCrc; // lora crc mode, 0 - disabled, 1 - 1 byte, 2 - 2 bytes
bool LoraExplicit; // lora header mode, true - explicit, false - implicit
int LoraPreamble; // lora preamble length from 6 to 65535
// fsk modulation parameters
float FskBitRate; // fsk bit rate, 0.6 - 300.0 Kbps
float FskFreqDev; // fsk frequency deviation 0.6 - 200 kHz
float FskRxBw; // fsk rx bandwidth, discrete from 4.8 to 467 kHz
// lora hardware pinouts and isr
byte LoraPinSs; // lora ss pin

Wyświetl plik

@ -26,7 +26,7 @@
namespace LoraPrs {
class Service : public Kiss::Processor
class Service : virtual public Kiss::Processor
{
public:
Service();
@ -35,23 +35,31 @@ public:
void loop();
private:
void printConfig();
void printConfig() const;
void setupWifi(const String &wifiName, const String &wifiKey);
void setupRig(long freq, long bw, int sf, int cr, int pwr, int sync, int crcBytes, bool isExplicit);
void setFreq(long freq) const;
void setupRigFsk(long freq, float bitRate, float freqDev, float rxBw, int pwr);
void setupBt(const String &btName);
void setFreq(long freq) const;
void reconnectWifi() const;
bool reconnectAprsis();
void attachKissNetworkClient();
bool isRigRxBusy();
inline bool isRigRxBusy() const { return config_.LoraUseCad && rigIsRxActive_; }
void onRigTaskRxPacket();
void onRigTaskTxPacket();
void onRigTaskStartRx();
void onRigTaskStartTx();
static void rigTask(void *self);
static ICACHE_RAM_ATTR void onRigIsrRxPacket();
void startRx();
static bool startRxTimer(void *param);
void onAprsisDataAvailable();
void sendSignalReportEvent(int rssi, float snr);
@ -80,33 +88,41 @@ private:
return !config_.IsClientMode // beaconing only in apris gate / server mode
&& config_.EnableBeacon; // beacon must be explicitly enabled
}
inline bool splitEnabled() const {
inline bool isHalfDuplex() const {
return config_.LoraFreqRx != config_.LoraFreqTx;
}
protected:
virtual bool onRigTxBegin();
virtual void onRigTx(byte b);
virtual void onRigTxEnd();
virtual void onRigPacket(void *packet, int packetLength);
virtual void onSerialTx(byte b);
virtual bool onSerialRxHasData();
virtual bool onSerialRx(byte *b);
inline int getSpeed(int sf, int cr, long bw) const { return (int)(sf * (4.0 / cr) / (pow(2.0, sf) / bw)); }
float getSnrLimit(int sf, long bw) const;
virtual void onControlCommand(Cmd cmd, byte value);
virtual void onRadioControlCommand(const std::vector<byte> &command);
virtual void onRebootCommand();
protected:
virtual bool onRigTxBegin() override;
virtual void onRigTx(byte b) override;
virtual void onRigTxEnd() override;
virtual void onRigPacket(void *packet, int packetLength) override;
virtual void onSerialTx(byte b) override;
virtual bool onSerialRxHasData() override;
virtual bool onSerialRx(byte *b) override;
virtual void onControlCommand(Cmd cmd, byte value) override;
virtual void onRadioControlCommand(const std::vector<byte> &command) override;
virtual void onRebootCommand() override;
private:
struct SetHardware {
uint32_t freq;
uint32_t freqRx;
uint32_t freqTx;
uint8_t modType;
int16_t pwr;
uint32_t bw;
uint16_t sf;
uint16_t cr;
uint16_t pwr;
uint16_t sync;
uint8_t crc;
uint32_t fskBitRate;
uint32_t fskFreqDev;
uint32_t fskRxBw;
} __attribute__((packed));
struct SignalReport {
@ -119,11 +135,10 @@ private:
} __attribute__((packed));
private:
const String CfgLoraprsVersion = "LoRAPRS 1.0.7";
const String CfgLoraprsVersion = "LoRAPRS 1.0.15";
// processor config
const int CfgConnRetryMs = 500; // connection retry delay, e.g. wifi
const int CfgPollDelayMs = 20; // main loop delay
const int CfgConnRetryMaxTimes = 10; // number of connection retries
const int CfgTelemetryPeriodMs = 60000; // how often to send telemetry event
@ -140,7 +155,9 @@ private:
// radio task commands
enum RadioTaskBits {
Receive = 0x01,
Transmit = 0x02
Transmit = 0x02,
StartReceive = 0x04,
StartTransmit = 0x10
};
private:
@ -159,6 +176,7 @@ private:
// peripherals, radio
static TaskHandle_t rigTaskHandle_;
Timer<1> startRxTimer_;
static volatile bool rigIsRxActive_;
static volatile bool rigIsRxIsrEnabled_;
bool rigIsImplicitMode_;

Wyświetl plik

@ -1,9 +1,9 @@
[platformio]
description = ESP32 LoRA APRS modem
default_envs = esp32dev
default_envs = esp32dev_sx126x_modem
[env]
platform = espressif32 @ 5.2.0
platform = espressif32 @ 6.4.0
framework = arduino
monitor_speed = 115200
board_build.partitions = min_spiffs.csv
@ -11,26 +11,44 @@ board_build.f_cpu = 80000000L
upload_protocol = esptool
lib_deps =
hideakitai/DebugLog @ 0.6.6
contrem/arduino-timer @ 2.3.1
jgromes/RadioLib @ 5.5.0
contrem/arduino-timer @ 3.0.1
jgromes/RadioLib @ 6.2.0
rlogiacco/CircularBuffer @ 1.3.3
check_tool = cppcheck
check_flags =
cppcheck: --suppress=*:*.pio\* --inline-suppr -DCPPCHECK
check_skip_packages = yes
[env:esp32dev]
[env:esp32dev_sx126x_modem]
board = esp32dev
build_flags =
'-D CFG_IS_CLIENT_MODE=true'
-D CFG_IS_CLIENT_MODE=true
-D USE_SX126X
[env:esp32dev_igate]
[env:esp32dev_sx126x_igate]
board = esp32dev
board_build.f_cpu = 240000000L
build_flags =
'-D CFG_IS_CLIENT_MODE=false'
-D CFG_IS_CLIENT_MODE=false
-D USE_SX126X
[env:ttgo-lora32-v1]
[env:esp32dev_sx127x_modem]
board = esp32dev
build_flags =
-D CFG_IS_CLIENT_MODE=true
[env:esp32dev_sx127x_igate]
board = esp32dev
board_build.f_cpu = 240000000L
build_flags =
-D CFG_IS_CLIENT_MODE=false
[env:ttgo-lora32-v1_modem]
board = ttgo-lora32-v1
build_flags =
'-D CFG_IS_CLIENT_MODE=true'
-D CFG_IS_CLIENT_MODE=true
[env:ttgo-lora32-v2_modem]
board = ttgo-lora32-v2
build_flags =
-D CFG_IS_CLIENT_MODE=true

Wyświetl plik

@ -45,9 +45,8 @@ class BLESerialCharacteristicCallbacks: public BLECharacteristicCallbacks {
BLESerial::BLESerial()
: pService(NULL)
, pTxCharacteristic(NULL)
, receiveBuffer("")
{
// create instance
receiveBuffer = "";
}
// Destructor

Wyświetl plik

@ -66,12 +66,6 @@ void Processor::queueRigToSerial(Cmd cmd, const byte *packet, int packetLength)
void Processor::queueSerialToRig(Cmd cmd, const byte *packet, int packetLength) {
bool result = 1;
if (disableKiss_) {
// inject proprietary identifier
if (usePrefix3_) {
result &= serialToRigQueue_.unshift('<');
result &= serialToRigQueue_.unshift(0xff);
result &= serialToRigQueue_.unshift(0x01);
}
// TNC2, send as is, receiveByteRaw will deal with it
for (int i = 0; i < packetLength; i++) {
byte rxByte = packet[i];
@ -140,7 +134,7 @@ bool Processor::processRigToSerial()
onRigPacket(&buf, rxPacketSize);
isProcessed = true;
yield();
if (!rigToSerialQueueIndex_.isEmpty()) delay(CfgToSerialDelayMs);
}
return isProcessed;
}
@ -286,11 +280,19 @@ bool Processor::receiveByteKiss(byte rxByte)
break;
case State::Escape:
if (rxByte == Marker::Tfend) {
onRigTx((byte)Marker::Fend);
if (dataType_ == DataType::Raw) {
onRigTx((byte)Marker::Fend);
} else if (dataType_ == DataType::Control) {
cmdBuffer_.push_back((byte)Marker::Fend);
}
state_ = State::GetData;
}
else if (rxByte == Marker::Tfesc) {
onRigTx((byte)Marker::Fesc);
if (dataType_ == DataType::Raw) {
onRigTx((byte)Marker::Fesc);
} else if (dataType_ == DataType::Control) {
cmdBuffer_.push_back((byte)Marker::Fesc);
}
state_ = State::GetData;
}
else if (rxByte != Marker::Fend) {

Wyświetl plik

@ -41,8 +41,6 @@ void Service::setup(const Config &conf)
LOG_SET_LEVEL(config_.LogLevel);
}
printConfig();
// KISS extensions are disabled in TNC2 mode
if (disableKiss_) {
LOG_INFO("KISS extensions are disabled in TNC2 mode");
@ -63,9 +61,14 @@ void Service::setup(const Config &conf)
}
aprsLoginCommand_ += String("\n");
// peripherals, LoRa
setupRig(config_.LoraFreqRx, config_.LoraBw, config_.LoraSf,
config_.LoraCodingRate, config_.LoraPower, config_.LoraSync, config_.LoraCrc, config_.LoraExplicit);
// radio module, FSK/LoRa
if (config_.ModType == CFG_MOD_TYPE_FSK) {
setupRigFsk(config_.LoraFreqRx, config_.FskBitRate, config_.FskFreqDev, config_.FskRxBw, config_.LoraPower);
}
else {
setupRig(config_.LoraFreqRx, config_.LoraBw, config_.LoraSf,
config_.LoraCodingRate, config_.LoraPower, config_.LoraSync, config_.LoraCrc, config_.LoraExplicit);
}
// start radio task
xTaskCreate(rigTask, "rigTask", 4096, this, 5, &rigTaskHandle_);
@ -98,7 +101,8 @@ void Service::setup(const Config &conf)
}
}
void Service::printConfig() {
void Service::printConfig() const {
LOG_INFO("Version:", CfgLoraprsVersion);
LOG_INFO("Current mode:", config_.IsClientMode ? "NORMAL" : "APRS-IS iGate");
LOG_INFO(disableKiss_ ? "Using TNC2 text mode" : "Using TNC KISS and AX.25 mode");
LOG_INFO("UsbSerialEnable:", config_.UsbSerialEnable ? "yes" : "no");
@ -187,24 +191,8 @@ bool Service::reconnectAprsis()
return true;
}
void Service::setupRig(long loraFreq, long bw, int sf, int cr, int pwr, int sync, int crcBytes, bool isExplicit)
float Service::getSnrLimit(int sf, long bw) const
{
rigIsImplicitMode_ = !isExplicit;
rigIsImplicitMode_ = sf == 6; // must be implicit for SF6
int loraSpeed = (int)(sf * (4.0 / cr) / (pow(2.0, sf) / bw));
LOG_INFO("Initializing LoRa");
LOG_INFO("Frequency:", loraFreq, "Hz");
LOG_INFO("Bandwidth:", bw, "Hz");
LOG_INFO("Spreading:", sf);
LOG_INFO("Coding rate:", cr);
LOG_INFO("Power:", pwr, "dBm");
LOG_INFO("Sync:", "0x" + String(sync, HEX));
LOG_INFO("CRC:", crcBytes);
LOG_INFO("Header:", rigIsImplicitMode_ ? "implicit" : "explicit");
LOG_INFO("Speed:", loraSpeed, "bps");
LOG_INFO("TOA (compressed):", 37.0 / ((double)loraSpeed / 8.0), "sec");
LOG_INFO("TOA (uncompressed):", 64.0 / ((double)loraSpeed / 8.0), "sec");
float snrLimit = -7;
switch (sf) {
case 7:
@ -226,13 +214,37 @@ void Service::setupRig(long loraFreq, long bw, int sf, int cr, int pwr, int sync
snrLimit = -20.0;
break;
}
LOG_INFO("Min level:", -174 + 10 * log10(bw) + 6 + snrLimit, "dBm");
return -174 + 10 * log10(bw) + 6 + snrLimit;
}
void Service::setupRig(long loraFreq, long bw, int sf, int cr, int pwr, int sync, int crcBytes, bool isExplicit)
{
rigIsImplicitMode_ = !isExplicit;
rigIsImplicitMode_ = sf == 6; // must be implicit for SF6
int loraSpeed = getSpeed(sf, cr, bw);
LOG_INFO("Initializing LoRa");
LOG_INFO("Frequency:", loraFreq, "Hz");
LOG_INFO("Bandwidth:", bw, "Hz");
LOG_INFO("Spreading:", sf);
LOG_INFO("Coding rate:", cr);
LOG_INFO("Power:", pwr, "dBm");
LOG_INFO("Sync:", "0x" + String(sync, HEX));
LOG_INFO("CRC:", crcBytes);
LOG_INFO("Header:", rigIsImplicitMode_ ? "implicit" : "explicit");
LOG_INFO("Speed:", loraSpeed, "bps");
LOG_INFO("TOA (compressed): ~", 37.0 / ((double)loraSpeed / 8.0), "sec");
LOG_INFO("TOA (uncompressed): ~", 64.0 / ((double)loraSpeed / 8.0), "sec");
LOG_INFO("Min level:", getSnrLimit(sf, bw), "dBm");
printConfig();
rig_ = std::make_shared<MODULE_NAME>(new Module(config_.LoraPinSs, config_.LoraPinA, config_.LoraPinRst, config_.LoraPinB));
int state = rig_->begin((float)loraFreq / 1e6, (float)bw / 1e3, sf, cr, sync, pwr);
if (state != RADIOLIB_ERR_NONE) {
LOG_ERROR("Radio start error:", state);
}
rig_->setCRC(crcBytes);
rig_->setPreambleLength(config_.LoraPreamble);
#ifdef USE_SX126X
#pragma message("Using SX126X")
LOG_INFO("Using SX126X module");
@ -243,8 +255,8 @@ void Service::setupRig(long loraFreq, long bw, int sf, int cr, int pwr, int sync
#else
#pragma message("Using SX127X")
LOG_INFO("Using SX127X module");
if (isIsrInstalled_) radio_->clearDio0Action();
radio_->setDio0Action(onRigIsrRxPacket);
if (isIsrInstalled_) rig_->clearDio0Action();
rig_->setDio0Action(onRigIsrRxPacket, RISING);
isIsrInstalled_ = true;
#endif
@ -262,6 +274,43 @@ void Service::setupRig(long loraFreq, long bw, int sf, int cr, int pwr, int sync
LOG_INFO("LoRa initialized");
}
void Service::setupRigFsk(long freq, float bitRate, float freqDev, float rxBw, int pwr)
{
LOG_INFO("Initializing FSK");
LOG_INFO("Frequency:", freq, "Hz");
LOG_INFO("Bit rate:", bitRate, "kbps");
LOG_INFO("Deviation:", freqDev, "kHz");
LOG_INFO("Bandwidth:", rxBw, "kHz");
LOG_INFO("Power:", pwr, "dBm");
rig_ = std::make_shared<MODULE_NAME>(new Module(config_.LoraPinSs, config_.LoraPinA, config_.LoraPinRst, config_.LoraPinB));
int state = rig_->beginFSK((float)freq / 1e6, bitRate, freqDev, rxBw, pwr);
if (state != RADIOLIB_ERR_NONE) {
LOG_ERROR("Radio start error:", state);
}
rig_->disableAddressFiltering();
#ifdef USE_SX126X
#pragma message("Using SX126X")
LOG_INFO("Using SX126X module");
rig_->setRfSwitchPins(config_.LoraPinSwitchRx, config_.LoraPinSwitchTx);
if (isIsrInstalled_) rig_->clearDio1Action();
rig_->setDio1Action(onRigIsrRxPacket);
isIsrInstalled_ = true;
#else
#pragma message("Using SX127X")
LOG_INFO("Using SX127X module");
if (isIsrInstalled_) rig_->clearDio0Action();
rig_->setDio0Action(onRigIsrRxPacket, RISING);
isIsrInstalled_ = true;
#endif
state = rig_->startReceive();
if (state != RADIOLIB_ERR_NONE) {
LOG_ERROR("Receive start error:", state);
}
LOG_INFO("FSK initialized");
}
void Service::setupBt(const String &btName)
{
String btType = config_.BtEnableBle ? "BLE" : "BT";
@ -281,31 +330,34 @@ void Service::setupBt(const String &btName)
void Service::loop()
{
// wifi connectivity check
if (needsWifi() && WiFi.status() != WL_CONNECTED) {
reconnectWifi();
}
// aprs connectivity check
if (needsAprsis() && !aprsisConnection_.connected() && config_.EnablePersistentAprsConnection) {
reconnectAprsis();
}
// tcp/ip kiss client connectivity check
if (config_.KissEnableTcpIp) {
attachKissNetworkClient();
}
// RX path, Rig -> Serial
bool isRigToSerialProcessed = false;
isRigToSerialProcessed = processRigToSerial();
// TX path, Serial -> Rig
if (!isRigToSerialProcessed) {
if (!processRigToSerial()) {
// TX path, Serial -> Rig
long currentTime = millis();
if (!isRigRxBusy() && currentTime > csmaSlotTimePrev_ + csmaSlotTime_ && random(0, 255) < csmaP_) {
// new data from aprsis
if (aprsisConnection_.available() > 0) {
onAprsisDataAvailable();
}
// periodic beacon
if (needsBeacon()) {
sendPeriodicBeacon();
}
// tx if data available
processSerialToRig();
csmaSlotTimePrev_ = currentTime;
}
@ -315,19 +367,14 @@ void Service::loop()
if (config_.TlmEnable) {
telemetryTimer_.tick();
}
delay(CfgPollDelayMs);
}
bool Service::isRigRxBusy() {
return config_.LoraUseCad && rigIsRxActive_;
startRxTimer_.tick();
}
ICACHE_RAM_ATTR void Service::onRigIsrRxPacket() {
BaseType_t xHigherPriorityTaskWoken;
if (rigIsRxIsrEnabled_) {
rigIsRxActive_ = true;
uint32_t radioReceiveBit = RadioTaskBits::Receive;
xTaskNotifyFromISR(rigTaskHandle_, radioReceiveBit, eSetBits, &xHigherPriorityTaskWoken);
xTaskNotifyFromISR(rigTaskHandle_, RadioTaskBits::Receive, eSetBits, &xHigherPriorityTaskWoken);
}
}
@ -337,14 +384,35 @@ void Service::rigTask(void *self) {
uint32_t commandBits = 0;
xTaskNotifyWaitIndexed(0, 0x00, ULONG_MAX, &commandBits, portMAX_DELAY);
if (commandBits & RadioTaskBits::Receive) {
((Service*)self)->onRigTaskRxPacket();
static_cast<Service*>(self)->onRigTaskRxPacket();
}
else if (commandBits & RadioTaskBits::Transmit) {
((Service*)self)->onRigTaskTxPacket();
static_cast<Service*>(self)->onRigTaskTxPacket();
}
if (commandBits & RadioTaskBits::StartReceive) {
static_cast<Service*>(self)->onRigTaskStartRx();
}
else if (commandBits & RadioTaskBits::StartTransmit) {
static_cast<Service*>(self)->onRigTaskStartTx();
}
}
}
void Service::onRigTaskStartRx() {
LOG_TRACE("onRigTaskStartRx");
if (config_.PttEnable) {
digitalWrite(config_.PttPin, LOW);
}
if (isHalfDuplex()) {
setFreq(config_.LoraFreqRx);
}
int state = rig_->startReceive();
if (state != RADIOLIB_ERR_NONE) {
LOG_ERROR("Start receive error: ", state);
}
rigIsRxIsrEnabled_ = true;
}
void Service::onRigTaskRxPacket() {
int packetSize = rig_->getPacketLength();
LOG_TRACE("onRigTaskRxPacket", packetSize);
@ -365,6 +433,20 @@ void Service::onRigTaskRxPacket() {
rigIsRxActive_ = false;
}
void Service::onRigTaskStartTx() {
LOG_TRACE("onRigTaskStartTx");
if (rigIsRxIsrEnabled_) {
rigIsRxIsrEnabled_ = false;
if (isHalfDuplex()) {
setFreq(config_.LoraFreqTx);
}
if (config_.PttEnable) {
digitalWrite(config_.PttPin, HIGH);
}
delay(config_.PttTxDelayMs);
}
}
void Service::onRigTaskTxPacket() {
while (rigTxQueueIndex_.size() > 0) {
int txPacketSize = rigTxQueueIndex_.shift();
@ -375,25 +457,13 @@ void Service::onRigTaskTxPacket() {
txBuf[i] = rigTxQueue_.shift();
}
rigIsRxIsrEnabled_ = false;
int state = rig_->transmit(txBuf, txPacketSize);
if (state != RADIOLIB_ERR_NONE) {
LOG_ERROR("TX error: ", state);
}
vTaskDelay(1);
}
int state = rig_->startReceive();
if (state != RADIOLIB_ERR_NONE) {
LOG_ERROR("Start receive error: ", state);
}
rigIsRxIsrEnabled_ = true;
if (config_.PttEnable) {
delay(config_.PttTxTailMs);
digitalWrite(config_.PttPin, LOW);
}
if (splitEnabled()) {
setFreq(config_.LoraFreqRx);
}
startRxTimer_.in(config_.PttTxTailMs, &startRxTimer);
}
void Service::sendPeriodicBeacon()
@ -471,10 +541,20 @@ void Service::sendSignalReportEvent(int rssi, float snr)
bool Service::sendModemTelemetryTimer(void *param)
{
((Service *)param)->sendModemTelemetry();
static_cast<Service*>(param)->sendModemTelemetry();
return true;
}
bool Service::startRxTimer(void *param)
{
static_cast<Service*>(param)->startRx();
return true;
}
void Service::startRx() {
xTaskNotify(rigTaskHandle_, RadioTaskBits::StartReceive, eSetBits);
}
void Service::sendModemTelemetry()
{
float batVoltage = 2 * analogRead(config_.TlmBatMonPin) * (3.3 / 4096.0) + config_.TlmBatMonCal;
@ -493,7 +573,8 @@ bool Service::sendAx25PayloadToRig(const AX25::Payload &payload)
// TNC2 text mode
if (config_.EnableTextPackets) {
String textPayload = payload.ToString();
bytesWritten = textPayload.length() > CfgMaxPacketSize ? CfgMaxPacketSize : textPayload.length();
int textPayloadLength = textPayload.length() + 1; // include null terminator
bytesWritten = textPayloadLength > CfgMaxPacketSize ? CfgMaxPacketSize : textPayloadLength;
textPayload.getBytes(buf, bytesWritten);
buf[bytesWritten-1] = '\0';
@ -517,7 +598,7 @@ void Service::onRigPacket(void *packet, int packetLength)
if (config_.KissEnableExtensions) {
sendSignalReportEvent(rig_->getRSSI(), rig_->getSNR());
}
if (!config_.IsClientMode) {
if (!config_.IsClientMode || config_.EnableRepeater) {
processIncomingRawPacketAsServer((const byte*)packet, packetLength);
}
}
@ -526,7 +607,7 @@ void Service::performFrequencyCorrection() {
#ifdef USE_SX126X
long frequencyErrorHz = 0;
#else
long frequencyErrorHz = radio_->getFrequencyError();
long frequencyErrorHz = rig_->getFrequencyError();
#endif
if (abs(frequencyErrorHz) > config_.AutoFreqCorrectionDeltaHz) {
config_.LoraFreqRx -= frequencyErrorHz;
@ -536,11 +617,7 @@ void Service::performFrequencyCorrection() {
}
void Service::setFreq(long loraFreq) const {
rig_->setFrequency((float)config_.LoraFreqRx / 1e6);
int state = rig_->startReceive();
if (state != RADIOLIB_ERR_NONE) {
LOG_ERROR("Start receive error:", state);
}
rig_->setFrequency((float)loraFreq / 1e6);
}
void Service::processIncomingRawPacketAsServer(const byte *packet, int packetLength) {
@ -563,7 +640,7 @@ void Service::processIncomingRawPacketAsServer(const byte *packet, int packetLen
#ifdef USE_SX126X
long frequencyError = 0;
#else
long frequencyError = radio_->getFrequencyError();
long frequencyError = rig_->getFrequencyError();
#endif
String signalReport = String("rssi: ") +
String(snr < 0 ? rssi + snr : rssi) +
@ -596,14 +673,9 @@ void Service::processIncomingRawPacketAsServer(const byte *packet, int packetLen
bool Service::onRigTxBegin()
{
LOG_TRACE("onRigTxBegin");
startRxTimer_.cancel();
xTaskNotify(rigTaskHandle_, RadioTaskBits::StartTransmit, eSetBits);
rigCurrentTxPacketSize_ = 0;
if (splitEnabled()) {
setFreq(config_.LoraFreqTx);
}
if (config_.PttEnable) {
digitalWrite(config_.PttPin, HIGH);
delay(config_.PttTxDelayMs);
}
return true;
}
@ -618,8 +690,7 @@ void Service::onRigTxEnd()
{
LOG_TRACE("onRigTxEnd", rigCurrentTxPacketSize_);
rigTxQueueIndex_.push(rigCurrentTxPacketSize_);
uint32_t radioTransmitBit = RadioTaskBits::Transmit;
xTaskNotify(rigTaskHandle_, radioTransmitBit, eSetBits);
xTaskNotify(rigTaskHandle_, RadioTaskBits::Transmit, eSetBits);
}
void Service::attachKissNetworkClient()
@ -735,19 +806,29 @@ void Service::onRadioControlCommand(const std::vector<byte> &rawCommand) {
if (config_.KissEnableExtensions && rawCommand.size() == sizeof(SetHardware)) {
LOG_INFO("Setting new radio parameters");
const struct SetHardware * setHardware = reinterpret_cast<const struct SetHardware*>(rawCommand.data());
config_.LoraFreqRx = be32toh(setHardware->freq);
config_.LoraFreqRx = be32toh(setHardware->freqRx);
config_.LoraFreqTx = be32toh(setHardware->freqTx);
config_.ModType = setHardware->modType;
config_.LoraBw = be32toh(setHardware->bw);
config_.LoraSf = be16toh(setHardware->sf);
config_.LoraCodingRate = be16toh(setHardware->cr);
config_.LoraPower = be16toh(setHardware->pwr);
config_.LoraPower = (int16_t)be16toh(setHardware->pwr);
config_.LoraSync = be16toh(setHardware->sync);
config_.FskBitRate = (float)be32toh(setHardware->fskBitRate) / 1e3;
config_.FskFreqDev = (float)be32toh(setHardware->fskFreqDev) / 1e3;
config_.FskRxBw = (float)be32toh(setHardware->fskRxBw) / 1e3;
int crcType = setHardware->crc ? config_.LoraCrc : 0;
setupRig(config_.LoraFreqRx, config_.LoraBw, config_.LoraSf,
config_.LoraCodingRate, config_.LoraPower, config_.LoraSync, crcType, config_.LoraExplicit);
if (config_.ModType == CFG_MOD_TYPE_FSK) {
setupRigFsk(config_.LoraFreqRx, config_.FskBitRate, config_.FskFreqDev, config_.FskRxBw, config_.LoraPower);
}
else {
setupRig(config_.LoraFreqRx, config_.LoraBw, config_.LoraSf,
config_.LoraCodingRate, config_.LoraPower, config_.LoraSync, crcType, config_.LoraExplicit);
}
} else {
LOG_ERROR("Radio control command of wrong size");
LOG_ERROR("Radio control command of wrong size", rawCommand.size());
}
}

Wyświetl plik

@ -1,8 +1,5 @@
#include <arduino-timer.h>
#include <DebugLog.h>
#include "WiFi.h"
#include "loraprs_service.h"
#if __has_include("/tmp/esp32_loraprs_config.h")
#pragma message("Using external config")
@ -18,6 +15,10 @@
#pragma message("Configured for server mode")
#endif
#include "loraprs_service.h"
const int CfgPollDelayMs = 10; // main loop delay
/*
* Initialize config from config.h options.
* Enables future use of EEPROM or allows user to dynamically modify config at run time.
@ -30,16 +31,27 @@ void initializeConfig(LoraPrs::Config &cfg) {
// client/server mode switch
cfg.IsClientMode = CFG_IS_CLIENT_MODE;
// lora parameters, must match on devices
// modulation
cfg.ModType = CFG_MOD_TYPE;
// generic module parameters
cfg.LoraFreqRx = CFG_LORA_FREQ_RX;
cfg.LoraFreqTx = CFG_LORA_FREQ_TX;
cfg.LoraPower = CFG_LORA_PWR;
// lora parameters, must match on devices
cfg.LoraBw = CFG_LORA_BW;
cfg.LoraSf = CFG_LORA_SF;
cfg.LoraCodingRate = CFG_LORA_CR;
cfg.LoraSync = CFG_LORA_SYNC;
cfg.LoraCrc = CFG_LORA_CRC; // set to 0 to disable
cfg.LoraExplicit = CFG_LORA_EXPLICIT;
cfg.LoraPower = CFG_LORA_PWR;
cfg.LoraPreamble = CFG_LORA_PREAMBLE;
// fsk parameters
cfg.FskBitRate = CFG_FSK_BIT_RATE;
cfg.FskFreqDev = CFG_FSK_FREQ_DEV;
cfg.FskRxBw = CFG_FSK_RX_BW;
// lora pinouts
cfg.LoraPinSs = CFG_LORA_PIN_SS;
@ -128,4 +140,5 @@ void setup() {
void loop() {
loraPrsService.loop();
watchdogLedTimer.tick();
delay(CfgPollDelayMs);
}