From d393e0c30192611d4cac65a5429fd7180ce1f49c Mon Sep 17 00:00:00 2001 From: "info@mode42.com" Date: Fri, 7 Aug 2026 18:15:00 +0000 Subject: Initial push --- .gitignore | 55 + LICENSE | 674 + README.md | 48 + docs/POWER.md | 12 + docs/README.md | 31 + docs/USER-GUIDE.md | 53 + docs/figures/c1224-board-overview.png | Bin 0 -> 273801 bytes docs/figures/fig-01-pcb-standoffs.png | Bin 0 -> 230546 bytes docs/figures/fig-02-power-section.png | Bin 0 -> 236580 bytes docs/figures/fig-03-modem-crystal.png | Bin 0 -> 242963 bytes docs/figures/fig-04-pico.png | Bin 0 -> 237069 bytes docs/figures/fig-05-display.png | Bin 0 -> 235187 bytes docs/figures/fig-06-leds.png | Bin 0 -> 225222 bytes docs/figures/fig-07-connectors.png | Bin 0 -> 241270 bytes docs/figures/fig-08-final-check.png | Bin 0 -> 243171 bytes firmware/README.md | 5 + firmware/c1224/CMakeLists.txt | 57 + firmware/c1224/README.md | 116 + firmware/c1224/config/default.ini | 25 + firmware/c1224/include/afsk_bitbang.h | 30 + firmware/c1224/include/banner.h | 12 + firmware/c1224/include/baud_config.h | 14 + firmware/c1224/include/board_pins.h | 52 + firmware/c1224/include/config.h | 58 + firmware/c1224/include/crystal_steer.h | 10 + firmware/c1224/include/display.h | 17 + firmware/c1224/include/hdlc.h | 49 + firmware/c1224/include/kiss.h | 34 + firmware/c1224/include/modem_probe.h | 15 + firmware/c1224/include/ptt.h | 10 + firmware/c1224/include/sense.h | 19 + firmware/c1224/include/status.h | 23 + firmware/c1224/include/usb_cmd.h | 11 + firmware/c1224/include/version.h | 11 + firmware/c1224/src/common/afsk_bitbang.c | 116 + firmware/c1224/src/common/banner.c | 82 + firmware/c1224/src/common/baud_config.c | 14 + firmware/c1224/src/common/board_pins.c | 45 + firmware/c1224/src/common/config.c | 422 + firmware/c1224/src/common/crystal_steer.c | 20 + firmware/c1224/src/common/display.c | 187 + firmware/c1224/src/common/hdlc.c | 192 + firmware/c1224/src/common/kiss.c | 98 + firmware/c1224/src/common/main.c | 61 + firmware/c1224/src/common/modem_probe.c | 38 + firmware/c1224/src/common/ptt.c | 31 + firmware/c1224/src/common/sense.c | 99 + firmware/c1224/src/common/status.c | 78 + firmware/c1224/src/common/usb_cmd.c | 268 + hardware/BOM.md | 151 + hardware/README.md | 8 + hardware/bom/BOM.csv | 41 + hardware/kicad/README.md | 5 + hardware/kicad/t-modem-c1224/README.md | 13 + .../scripts/kicad10_layers_setup.sexpr | 110 + .../t-modem-c1224/scripts/render_docs_images.py | 610 + hardware/kicad/t-modem-c1224/sym-lib-table | 4 + .../kicad/t-modem-c1224/t-modem-c1224.kicad_pcb | 15627 +++++++++++++++++++ .../kicad/t-modem-c1224/t-modem-c1224.kicad_pro | 691 + .../kicad/t-modem-c1224/t-modem-c1224.kicad_sch | 3982 +++++ .../kicad/t-modem-c1224/t-modem-c1224.kicad_sym | 3753 +++++ hardware/kicad/t-modem-c1224/t-modem-c1224.rules | 59 + share/c1224.ini.example | 33 + 63 files changed, 28279 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/POWER.md create mode 100644 docs/README.md create mode 100644 docs/USER-GUIDE.md create mode 100644 docs/figures/c1224-board-overview.png create mode 100644 docs/figures/fig-01-pcb-standoffs.png create mode 100644 docs/figures/fig-02-power-section.png create mode 100644 docs/figures/fig-03-modem-crystal.png create mode 100644 docs/figures/fig-04-pico.png create mode 100644 docs/figures/fig-05-display.png create mode 100644 docs/figures/fig-06-leds.png create mode 100644 docs/figures/fig-07-connectors.png create mode 100644 docs/figures/fig-08-final-check.png create mode 100644 firmware/README.md create mode 100644 firmware/c1224/CMakeLists.txt create mode 100644 firmware/c1224/README.md create mode 100644 firmware/c1224/config/default.ini create mode 100644 firmware/c1224/include/afsk_bitbang.h create mode 100644 firmware/c1224/include/banner.h create mode 100644 firmware/c1224/include/baud_config.h create mode 100644 firmware/c1224/include/board_pins.h create mode 100644 firmware/c1224/include/config.h create mode 100644 firmware/c1224/include/crystal_steer.h create mode 100644 firmware/c1224/include/display.h create mode 100644 firmware/c1224/include/hdlc.h create mode 100644 firmware/c1224/include/kiss.h create mode 100644 firmware/c1224/include/modem_probe.h create mode 100644 firmware/c1224/include/ptt.h create mode 100644 firmware/c1224/include/sense.h create mode 100644 firmware/c1224/include/status.h create mode 100644 firmware/c1224/include/usb_cmd.h create mode 100644 firmware/c1224/include/version.h create mode 100644 firmware/c1224/src/common/afsk_bitbang.c create mode 100644 firmware/c1224/src/common/banner.c create mode 100644 firmware/c1224/src/common/baud_config.c create mode 100644 firmware/c1224/src/common/board_pins.c create mode 100644 firmware/c1224/src/common/config.c create mode 100644 firmware/c1224/src/common/crystal_steer.c create mode 100644 firmware/c1224/src/common/display.c create mode 100644 firmware/c1224/src/common/hdlc.c create mode 100644 firmware/c1224/src/common/kiss.c create mode 100644 firmware/c1224/src/common/main.c create mode 100644 firmware/c1224/src/common/modem_probe.c create mode 100644 firmware/c1224/src/common/ptt.c create mode 100644 firmware/c1224/src/common/sense.c create mode 100644 firmware/c1224/src/common/status.c create mode 100644 firmware/c1224/src/common/usb_cmd.c create mode 100644 hardware/BOM.md create mode 100644 hardware/README.md create mode 100644 hardware/bom/BOM.csv create mode 100644 hardware/kicad/README.md create mode 100644 hardware/kicad/t-modem-c1224/README.md create mode 100644 hardware/kicad/t-modem-c1224/scripts/kicad10_layers_setup.sexpr create mode 100644 hardware/kicad/t-modem-c1224/scripts/render_docs_images.py create mode 100644 hardware/kicad/t-modem-c1224/sym-lib-table create mode 100644 hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pcb create mode 100644 hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pro create mode 100644 hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sch create mode 100644 hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sym create mode 100644 hardware/kicad/t-modem-c1224/t-modem-c1224.rules create mode 100644 share/c1224.ini.example diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f76560f --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +# Local / secrets (never commit live values) +local/ +!local/README.md + +# Editor / OS +*~ +*.swp +*.swo +.DS_Store +.idea/ +.vscode/ +*.code-workspace + +# Build / firmware artifacts +*.o +*.elf +*.bin +*.hex +*.map +build/ +dist/ +out/ +.cache/ + +# KiCad +*-backups/ +*.kicad_prl +fp-info-cache +*-cache.lib +*.bak +\#auto_saved_files\# +_autosave-* + +# Python / tooling +__pycache__/ +*.pyc +.venv/ +venv/ + +# Logs +*.log + +# KiCad / generator +*.kicad_pro.lck +**/__pycache__/ +hardware/kicad/t-modem/*.kicad_prl + +# KiCad local UI +.history/ +~*.lck + +# Vault MASTER governance — never ship/commit to this slave +AGENT-INDEX.md +**/AGENT-INDEX.md +.deps/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0b35b1e --- /dev/null +++ b/README.md @@ -0,0 +1,48 @@ +# T-Modem-c1224 + +**Version:** **v1.0-prototype** · **AS-IS** · GPLv3 · non-profit + +**T-Modem-c1224** is a classic Terminal-Modem **chip PHY** reference: TCM3105-class **chip 1200** or **chip 2400** via **which crystal is stuffed** (**Y1 4.4336** / **Y2 6.5536**), Raspberry Pi **Pico** as **USB KISS half-TNC** (HDLC + bitbang to chip TXD/RXD) plus display / **PTT** / sense. Host USB CDC = **KISS** (`0xC0`) + ASCII service. **One** firmware image · **no** softmodem · transparent Host↔Chip bit bridge **abandoned** · **no** baud switching. Firmware language: **C** + +![T-Modem-c1224 board overview — major parts labeled](docs/figures/c1224-board-overview.png) + +| Item | Rule | +|------|------| +| Power | **12 V** barrel → buck → **5 V** · **no USB power** (USB = flash + KISS + service) | +| Modem | Stuff **Y1 4.4336** (1200) or **Y2 6.5536** (2400) · **advise against ≥8 MHz** (incl. **8.8672** deferred) · **no XTAL mux IC** | +| Rate model | **One board = one rate = one crystal** · rebuild FW with `-DC1224_BITRATE=2400` for Y2 · rate ≠ runtime switch | +| FW | **One** UF2 · KISS half-TNC · INI = **all** display/status texts · fixed boot banner always · default **`quiet=1`** damps extra CDC | +| Sense | **CDT→GP8** Signal/RX · **RXD→GP7** Packet UI + HDLC RX | +| Stuffing | Stuff **only** the crystal for the intended rate · other footprint **DNI** · keep Pierce **C_Y1+C_Y2** | +| PTT | Auto on KISS TX · ASCII `PTT ON`/`OFF` · GP9 → OC · **LED_PTT** optional/spare | +| INI SAVE | Last **4 KiB** flash **blob** · **not** a filesystem | +| PCB | In `local/kicad/` until finished · single-XTAL policy (mux abandoned) · **~180×180** | +| BOM | Tracked: [`hardware/BOM.md`](hardware/BOM.md) · [`hardware/bom/BOM.csv`](hardware/bom/BOM.csv) | + +## Build + +- Firmware (C): [`firmware/c1224/`](firmware/c1224/) — **one** UF2 · build `c1224.uf2` · INI example [`share/c1224.ini.example`](share/c1224.ini.example) +- BOM (public): [`hardware/BOM.md`](hardware/BOM.md) + +## Operate + +**Standalone — no MAX25-Stack required.** USB CDC is a normal KISS half-TNC (`0xC0` on `/dev/ttyACM*`). **All terminals should work insofar as applicable** (serial ASCII service + KISS packet). MAX25 (`tmodem` / max25-terminal) is **optional**. HyBBX is not built into this product. + +1. Power from **12 V** centre-positive barrel only. +2. USB host for flash / **KISS** / CDC service — expect **no** board power from VBUS. +3. Flash **`c1224.uf2`**; stuff **Y1** or **Y2** for the intended rate. Match `-DC1224_BITRATE`. +4. Open `/dev/ttyACM*` raw 8N1 → KISS (`0xC0` …) or ASCII `HELP`. Fixed boot banner always prints once. +5. Optional: max25d **`tmodem`** + `max25-terminal -d tmodem`, kissattach/kissutil, Dire Wolf serial. ASCII `STATUS`/`PTT`/`ID` when not mid-KISS frame. + +Anyone-oriented steps: [`docs/USER-GUIDE.md`](docs/USER-GUIDE.md). Firmware detail: [`firmware/c1224/README.md`](firmware/c1224/README.md). + +## Docs + +| Doc | Role | +|-----|------| +| [`docs/USER-GUIDE.md`](docs/USER-GUIDE.md) | Anyone — assemble · flash · terminals · SAVE | +| [`docs/README.md`](docs/README.md) | Doc index + figures | +| [`docs/POWER.md`](docs/POWER.md) | 12 V · USB data-only | +| [`firmware/c1224/README.md`](firmware/c1224/README.md) | Build · CDC · pins | + +**AS-IS** · GPLv3 · non-profit · standard reference only. diff --git a/docs/POWER.md b/docs/POWER.md new file mode 100644 index 0000000..78e2f54 --- /dev/null +++ b/docs/POWER.md @@ -0,0 +1,12 @@ +# Power — T-Modem-c1224 + +| Net / path | Role | +|------------|------| +| `VIN_12` | Barrel jack **5.5×2.1** centre-**positive** | +| `U_REG` | Buck **12 V → 5 V** (Mini560 5 V class / MP1584-class on headers) | +| `+5V` / `+5V_REG` | Board rail after buck (+ optional series PTC) | +| `GND` | Common ground | +| USB `VBUS` | **Isolated** — **DNI** OR diode · **no** feed into 5 V rail | +| USB D+/D− / GND | Flash + CDC command path to Pico · LCD service via Pico | + +Pico **VSYS/VBUS pin on headers** is fed from the **board 5 V rail**, not from the Type-A receptacle VBUS. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..c12f425 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,31 @@ +# Docs — T-Modem-c1224 + +| Doc | Role | +|-----|------| +| [`USER-GUIDE.md`](USER-GUIDE.md) | Anyone — what it is · assemble · flash · terminals · SAVE | +| [`../hardware/BOM.md`](../hardware/BOM.md) | Planning BOM v0.26 (tracked) | +| [`POWER.md`](POWER.md) | 12 V primary · USB data-only | +| [`../firmware/c1224/README.md`](../firmware/c1224/README.md) | Pico service FW (C + Pico SDK) | +| [`figures/`](figures/) | Board overview + assembly steps 1–8 | + +## Operate (standalone) + +**No MAX25-Stack required.** Flash `c1224.uf2` → plug USB → open `/dev/ttyACM*` → KISS (`0xC0`) or ASCII `HELP`. Fixed boot banner prints once. **All matching terminals work** insofar as applicable. Optional: MAX25 device **`tmodem`** / max25-terminal. + +**INI `SAVE`:** last **4 KiB** of Pico flash as a config **blob** — not a filesystem. + +## Figures + +| File | Content | +|------|---------| +| [`figures/c1224-board-overview.png`](figures/c1224-board-overview.png) | Top-down board · major parts | +| [`figures/fig-01-pcb-standoffs.png`](figures/fig-01-pcb-standoffs.png) | Step 1 — PCB + standoffs | +| [`figures/fig-02-power-section.png`](figures/fig-02-power-section.png) | Step 2 — 12 V → buck → 5 V | +| [`figures/fig-03-modem-crystal.png`](figures/fig-03-modem-crystal.png) | Step 3 — socket · single crystal · Pierce | +| [`figures/fig-04-pico.png`](figures/fig-04-pico.png) | Step 4 — Pico H | +| [`figures/fig-05-display.png`](figures/fig-05-display.png) | Step 5 — I²C display | +| [`figures/fig-06-leds.png`](figures/fig-06-leds.png) | Step 6 — indicators | +| [`figures/fig-07-connectors.png`](figures/fig-07-connectors.png) | Step 7 — AF/PTT · USB | +| [`figures/fig-08-final-check.png`](figures/fig-08-final-check.png) | Step 8 — final check | + +**AS-IS** · GPLv3 · non-profit. diff --git a/docs/USER-GUIDE.md b/docs/USER-GUIDE.md new file mode 100644 index 0000000..8b08a48 --- /dev/null +++ b/docs/USER-GUIDE.md @@ -0,0 +1,53 @@ +# T-Modem-c1224 — user guide + +**Audience:** anyone · **Version:** v1.0-prototype · **AS-IS** · GPLv3 · non-profit + +Classic **chip** AFSK modem (TCM3105-class) + Pico as USB **KISS** half-TNC. Power **12 V**; USB = flash + KISS + ASCII service only. + +## What you need + +- Assembled board (one crystal: **Y1 4.4336** → 1200 or **Y2 6.5536** → 2400) +- **12 V** centre-positive supply +- USB host + **any** serial/KISS terminal that speaks the CDC interface below + +## Assemble · flash (overview) + +Figures: [`figures/`](figures/) — steps 1–8 (do not edit PNGs for text-only doc updates). + +1. Power path on board · **no** USB VBUS power. +2. Stuff **one** crystal + both Pierce load caps · insert TCM3105. +3. Flash **`c1224.uf2`** (BOOTSEL) · match `-DC1224_BITRATE` to crystal. +4. Apply **12 V** · plug USB for CDC. + +Build: [`../firmware/c1224/README.md`](../firmware/c1224/README.md). + +## Terminals (all that match) + +USB CDC ACM · raw **8N1**: + +| Path | Use | +|------|-----| +| **KISS** `0xC0` … `0xC0` | Packet (half-TNC) | +| ASCII lines when not mid-frame | `HELP` · `STATUS` · `PTT` · `ID` · INI | + +**All terminals should work insofar as applicable** — serial apps for service ASCII; KISS tools (kissattach, kissutil, Dire Wolf serial, custom, optional max25-terminal) for packet. + +Open `/dev/ttyACM*` → fixed boot banner once → KISS or `HELP`. + +## CDC commands + +`HELP` · `STATUS` · `ID` · `PTT ON`/`OFF` · `QUIET`/`VERBOSE` · `INI`/`GET`/`SET`/`SAVE`/`RELOAD`/`DEFAULTS` + +## INI · SAVE + +`SET key=value` then **`SAVE`**. Persist storage = **last 4 KiB of Pico flash** as a **config blob** — **not** a filesystem. Example: [`../share/c1224.ini.example`](../share/c1224.ini.example). + +## Optional stacks + +Standalone is enough. MAX25 (`tmodem`) is optional. HyBBX is not built into this product. + +## Power + +See [`POWER.md`](POWER.md). + +**AS-IS** · no warranty · no support · standard reference only. diff --git a/docs/figures/c1224-board-overview.png b/docs/figures/c1224-board-overview.png new file mode 100644 index 0000000..0bde70c Binary files /dev/null and b/docs/figures/c1224-board-overview.png differ diff --git a/docs/figures/fig-01-pcb-standoffs.png b/docs/figures/fig-01-pcb-standoffs.png new file mode 100644 index 0000000..e3fe3b5 Binary files /dev/null and b/docs/figures/fig-01-pcb-standoffs.png differ diff --git a/docs/figures/fig-02-power-section.png b/docs/figures/fig-02-power-section.png new file mode 100644 index 0000000..f681b4b Binary files /dev/null and b/docs/figures/fig-02-power-section.png differ diff --git a/docs/figures/fig-03-modem-crystal.png b/docs/figures/fig-03-modem-crystal.png new file mode 100644 index 0000000..f1abb3a Binary files /dev/null and b/docs/figures/fig-03-modem-crystal.png differ diff --git a/docs/figures/fig-04-pico.png b/docs/figures/fig-04-pico.png new file mode 100644 index 0000000..4bca313 Binary files /dev/null and b/docs/figures/fig-04-pico.png differ diff --git a/docs/figures/fig-05-display.png b/docs/figures/fig-05-display.png new file mode 100644 index 0000000..beeb6ee Binary files /dev/null and b/docs/figures/fig-05-display.png differ diff --git a/docs/figures/fig-06-leds.png b/docs/figures/fig-06-leds.png new file mode 100644 index 0000000..668fd95 Binary files /dev/null and b/docs/figures/fig-06-leds.png differ diff --git a/docs/figures/fig-07-connectors.png b/docs/figures/fig-07-connectors.png new file mode 100644 index 0000000..b0b7fec Binary files /dev/null and b/docs/figures/fig-07-connectors.png differ diff --git a/docs/figures/fig-08-final-check.png b/docs/figures/fig-08-final-check.png new file mode 100644 index 0000000..c1aba6d Binary files /dev/null and b/docs/figures/fig-08-final-check.png differ diff --git a/firmware/README.md b/firmware/README.md new file mode 100644 index 0000000..86f7e8c --- /dev/null +++ b/firmware/README.md @@ -0,0 +1,5 @@ +# Firmware + +Product image: **[`c1224/`](c1224/)** — one UF2 (Pico service FW). + +See [`c1224/README.md`](c1224/README.md) for build, flash, pins, INI, CDC. diff --git a/firmware/c1224/CMakeLists.txt b/firmware/c1224/CMakeLists.txt new file mode 100644 index 0000000..8b5db51 --- /dev/null +++ b/firmware/c1224/CMakeLists.txt @@ -0,0 +1,57 @@ +# T-Modem-c1224 Pico firmware — ONE UF2 · GPLv3 · AS-IS +# USB KISS half-TNC (HDLC on Pico + bitbang GP6/GP7). No softmodem. +cmake_minimum_required(VERSION 3.13) + +if(NOT DEFINED ENV{PICO_SDK_PATH} AND NOT DEFINED PICO_SDK_PATH) + message(FATAL_ERROR "Set PICO_SDK_PATH to the Raspberry Pi Pico SDK root") +endif() +if(DEFINED ENV{PICO_SDK_PATH} AND NOT DEFINED PICO_SDK_PATH) + set(PICO_SDK_PATH $ENV{PICO_SDK_PATH}) +endif() + +include(${PICO_SDK_PATH}/external/pico_sdk_import.cmake) + +project(c1224_firmware C CXX ASM) +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) + +pico_sdk_init() + +# Physical rate = stuffed crystal. Bitbang must match: 1200 (Y1) or 2400 (Y2). +if(NOT DEFINED C1224_BITRATE) + set(C1224_BITRATE 1200) +endif() + +add_executable(c1224 + src/common/main.c + src/common/status.c + src/common/ptt.c + src/common/modem_probe.c + src/common/usb_cmd.c + src/common/display.c + src/common/board_pins.c + src/common/crystal_steer.c + src/common/baud_config.c + src/common/config.c + src/common/sense.c + src/common/hdlc.c + src/common/kiss.c + src/common/afsk_bitbang.c + src/common/banner.c +) + +target_include_directories(c1224 PRIVATE include) +target_compile_definitions(c1224 PRIVATE C1224_BITRATE=${C1224_BITRATE}) +target_link_libraries(c1224 + pico_stdlib + hardware_gpio + hardware_i2c + hardware_flash + hardware_sync +) + +pico_enable_stdio_usb(c1224 1) +pico_enable_stdio_uart(c1224 0) +pico_add_extra_outputs(c1224) + +pico_set_binary_type(c1224 default) diff --git a/firmware/c1224/README.md b/firmware/c1224/README.md new file mode 100644 index 0000000..298dc64 --- /dev/null +++ b/firmware/c1224/README.md @@ -0,0 +1,116 @@ +# T-Modem-c1224 — Pico USB KISS half-TNC firmware + +**AS-IS** · GPLv3 (repo `LICENSE`) · no support, no warranty · **v1.0-prototype**. + +**One** UF2 for Raspberry Pi Pico (RP2040). Chip does air AFSK; Pico is **USB KISS half-TNC** (HDLC + bitbang to TCM3105 TXD/RXD) plus display / PTT / sense. + +| Owns | Does **not** | +|------|----------------| +| HDLC TX/RX (flags, bit-stuff, FCS-CCITT) | Softmodem / AFSK DSP | +| Bitbang GP6 TXD / GP7 RXD at crystal rate | Transparent Host↔Chip bit bridge | +| USB CDC: KISS `0xC0` + ASCII service | Baud switch / XTAL mux | +| Auto PTT GP9 during KISS TX · `PTT ON`/`OFF` | Dual baud UF2 builds | +| Display / INI texts · CDT Signal · packet sense · fixed boot banner | INI/CDC boot-banner toggle | + +## Build + +Requires [Pico SDK](https://github.com/raspberrypi/pico-sdk) and `arm-none-eabi-gcc`. + +```bash +export PICO_SDK_PATH=/path/to/pico-sdk # or repo .deps/pico-sdk +cd firmware/c1224 +mkdir -p build && cd build +cmake .. -DC1224_BITRATE=1200 # or 2400 if Y2 stuffed +make -j$(nproc) c1224 +# → c1224.uf2 c1224.elf +``` + +`C1224_BITRATE` must match the stuffed crystal (**Y1 4.4336 → 1200**, **Y2 6.5536 → 2400**). Default **1200**. Same source tree; rebuild if field board is 2400. + +### Flash + +1. Hold **BOOTSEL**, plug USB (Path B — flash/service; board power = **12 V** barrel). +2. Copy `c1224.uf2` to RPI-RP2 (or `picotool load -f c1224.uf2`). +3. Host opens `/dev/ttyACM*` (USB CDC). + +## Any KISS terminal (standalone — no MAX25) + +**MAX25-Stack is not required.** No proprietary host protocol. **All terminals should work insofar as applicable** — any client that speaks **KISS and/or ASCII service** over a raw serial port. Optional convenience only: max25d device **`tmodem`** / `max25-terminal`. + +How-to: flash UF2 → plug USB → open `/dev/ttyACM*` → KISS `0xC0` or ASCII `HELP`. + +| Step | Detail | +|------|--------| +| Device | `/dev/ttyACM*` (Linux) / equivalent CDC ACM | +| Framing | Raw **8N1** · binary **KISS** (`0xC0` … `0xC0`) · DATA cmd `0x00` | +| Packet path | Send/receive KISS frames only — do **not** interleave ASCII while mid-frame | +| Service path | Optional line ASCII (`STATUS`, `PTT`, …) when **not** inside a KISS frame | +| Boot | Fixed source banner **always** once after CDC ready · `quiet=1` damps extra STATUS/CONFIG ASCII only | + +Examples: **kissattach** / ax25 tools, **kissutil**, Dire Wolf serial KISS, custom terminal, or optionally **max25-terminal** via **`tmodem`**. + +```bash +# Example: open CDC raw and use KISS (tool-dependent) +# stty -F /dev/ttyACM0 raw -echo +# kissutil -p /dev/ttyACM0 +# # or: kissattach /dev/ttyACM0 tm0 (ax25-tools; names vary by distro) +``` + +## Dual protocol (USB CDC) + +| Traffic | Rule | +|---------|------| +| Packet | Bytes starting with / continuing **`0xC0` KISS** → HDLC TX / RX encode | +| Service | Line-oriented ASCII → `PTT`, `STATUS`, `INI`, … | +| Custom terminals | Prefer **KISS-only** for packet; service commands optional | + +## Host path (summary) + +| Traffic | Format | +|---------|--------| +| Packet | Binary **KISS** frames (`0xC0` … `0xC0`) — DATA cmd `0x00` | +| Service | Line ASCII: `PTT`, `STATUS`, `ID`, `QUIET`/`VERBOSE`, `INI` / `GET` / `SET` / `SAVE` | + +## Pins + +| GPIO / rail | Role | +|-------------|------| +| GP0 / GP1 | I2C LCD | +| GP6 | Modem **TXD** — HDLC bitbang out | +| GP7 | Modem **RXD** — HDLC bitbang in + Packet UI sense | +| GP8 | Modem **CDT** → Signal/RX | +| GP9 | **PTT** (auto on TX + manual CDC) | +| GP10–12 | Optional LEDs | +| — | LED_PWR on **5 V rail** | + +## Boot banner + +Fixed source text in `src/common/banner.c` / `include/version.h` (not INI / CDC). **Always** printed once after USB CDC ready. Edit source only — no `banner=` INI key, no `BANNER ON|OFF`. `quiet=1` never suppresses the boot banner (only extra STATUS/PROBE/CONFIG ASCII). + +## USB CDC ASCII + +| Command | Effect | +|---------|--------| +| `HELP` | Command list | +| `STATUS` | state, PTT, signal, packet, bitrate, raw CDT/RXD | +| `ID` | `device_id` / `callsign` / bitrate / quiet (solicited) | +| `PTT ON` / `PTT OFF` | Key GP9 | +| `QUIET ON` / `OFF` | Suppress extra unsolicited CDC ASCII (default ON via INI `quiet=1`; never the boot banner) | +| `VERBOSE ON` / `OFF` | Alias: `QUIET OFF` / `QUIET ON` | +| `INI` / `GET` / `SET` / `SAVE` / `RELOAD` / `DEFAULTS` | Config | + +**`SAVE`:** writes a config **blob** into the **last 4 KiB** of Pico flash — **not** a filesystem. + +## INI (`[terminal]`) + +| Key | Default | Role | +|-----|---------|------| +| `callsign` | empty | Operator call / station string for `ID` | +| `device_id` | `c1224` | Short device mark (`c1224` or `tmodem`) | +| `quiet` | `1` | Suppress extra unsolicited CDC ASCII (not boot banner) | + +Display text keys (`starting`, `ready`, …) and sense keys unchanged. See [`share/c1224.ini.example`](../../share/c1224.ini.example). + +## Rate + +Stuff **Y1 4.4336** (1200) or **Y2 6.5536** (2400). Firmware does not switch baud at runtime. Rebuild with `-DC1224_BITRATE=2400` for Y2 boards. diff --git a/firmware/c1224/config/default.ini b/firmware/c1224/config/default.ini new file mode 100644 index 0000000..ff07c9e --- /dev/null +++ b/firmware/c1224/config/default.ini @@ -0,0 +1,25 @@ +# T-Modem-c1224 — default operator texts (embedded in FW; edit via CDC SET/SAVE) +# Physical rate = stuffed crystal (Y1 4.4336 → 1200 · Y2 6.5536 → 2400). Not a FW key. +# Boot banner is fixed in firmware source (always printed). quiet=1 suppresses extra ASCII. + +[texts] +starting=c1224 is starting +ready=c1224 is ready +fault=c1224 is fault +sending=c1224 is sending +signal=c1224 signal +packet=c1224 packet +power=c1224 power +idle=c1224 idle + +[terminal] +callsign= +device_id=c1224 +quiet=1 + +[sense] +# CDT active level: 0 = active-low (default, pull-up idle), 1 = active-high +cdt_active_high=0 +packet_hold_ms=500 +packet_edge_min=4 +packet_window_ms=50 diff --git a/firmware/c1224/include/afsk_bitbang.h b/firmware/c1224/include/afsk_bitbang.h new file mode 100644 index 0000000..886b912 --- /dev/null +++ b/firmware/c1224/include/afsk_bitbang.h @@ -0,0 +1,30 @@ +/** + * Bitbang / timed NRZI on TCM3105 TXD (GP6) and RXD (GP7). + * Rate matches stuffed crystal — compile C1224_BITRATE=1200|2400. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#ifndef C1224_AFSK_BITBANG_H +#define C1224_AFSK_BITBANG_H + +#include +#include +#include + +#ifndef C1224_BITRATE +#define C1224_BITRATE 1200 +#endif + +void afsk_bitbang_init(void); + +/** Transmit HDLC info payload (AX.25 frame without flags/FCS). Auto-PTT. */ +bool afsk_tx_frame(const uint8_t *info, size_t info_len); + +/** Poll RX sampler; call often from main loop. May emit via callback. */ +typedef void (*afsk_rx_frame_fn)(const uint8_t *info, size_t len); +void afsk_rx_set_callback(afsk_rx_frame_fn fn); +void afsk_rx_poll(void); + +bool afsk_tx_busy(void); +unsigned afsk_bitrate(void); + +#endif /* C1224_AFSK_BITBANG_H */ diff --git a/firmware/c1224/include/banner.h b/firmware/c1224/include/banner.h new file mode 100644 index 0000000..1592eb7 --- /dev/null +++ b/firmware/c1224/include/banner.h @@ -0,0 +1,12 @@ +/** + * Fixed CDC boot banner — source text only (not INI / CDC keys). + * Always printed once after USB ready; quiet does not suppress it. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#ifndef C1224_BANNER_H +#define C1224_BANNER_H + +/** Print fixed boot banner (call once after CDC ready). */ +void banner_print(void); + +#endif /* C1224_BANNER_H */ diff --git a/firmware/c1224/include/baud_config.h b/firmware/c1224/include/baud_config.h new file mode 100644 index 0000000..268ca15 --- /dev/null +++ b/firmware/c1224/include/baud_config.h @@ -0,0 +1,14 @@ +#ifndef C1224_BAUD_CONFIG_H +#define C1224_BAUD_CONFIG_H + +/** + * Informational only — physical rate = stuffed crystal (Y1/Y2). + * One FW image; no baud switch; no dual UF2. + */ +typedef struct { + const char *label; /* "crystal" — rate is board stuffing */ +} baud_crystal_config_t; + +const baud_crystal_config_t *baud_config_get(void); + +#endif diff --git a/firmware/c1224/include/board_pins.h b/firmware/c1224/include/board_pins.h new file mode 100644 index 0000000..1422335 --- /dev/null +++ b/firmware/c1224/include/board_pins.h @@ -0,0 +1,52 @@ +/** + * T-Modem-c1224 pin map (service Pico — not softmodem). + * Frozen copper intent (v0.25 schematic) reused as planning default for 180×180. + * GP14/GP15 = unused mux placeholders for v1.0 (single-XTAL; stuff matches image). + */ +#ifndef C1224_BOARD_PINS_H +#define C1224_BOARD_PINS_H + +#include +#include + +/* I2C LCD (shared-kit class; level-shifted on board) */ +#define PIN_I2C_SDA 0 /* GP0 */ +#define PIN_I2C_SCL 1 /* GP1 */ +#define I2C_LCD_BAUDRATE 100000 +#define I2C_LCD_ADDR_DEFAULT 0x27 /* common PCF8574 backpack; probe may fail → log-only */ + +/* Modem chip digital (TCM3105-class) — Pico does NOT generate AFSK */ +#define PIN_MODEM_TXD 6 /* GP6 → chip TXD */ +#define PIN_MODEM_RXD 7 /* GP7 ← chip RXD → Packet UI sense (required · status only) */ +#define PIN_MODEM_CDT 8 /* GP8 ← chip CDT → Signal/RX (required) */ + +/* PTT keying: Pico GPIO → OC → radio PTT (USB CDC service). Not the TX LED. */ +#define PIN_PTT_DRV 9 /* GP9 · required for USB PTT ON */ + +/* + * Status LEDs (c1224 copper — active-high source via series R; LED cathode = GND). + * LED_PWR is NOT a GPIO: +5V_OR → R_LED1 → LED_PWR → GND (rail Power indicator). + * + * Settled UI (2026-07-26): + * - Dual sense REQUIRED: CDT→GP8 Signal/RX · RXD→GP7 Packet (status only, not data bridge). + * - CDT = carrier/tone · RXD activity ≠ full AX.25 decode. + * - LED_PTT (GP10) = OPTIONAL/SPARE — not required product TX indicator. + * - Display TX optional; PTT keying GPIO (GP9) stays separate from LED_PTT. + * - LED_TXRX = spare/activity. + */ +#define PIN_LED_PTT 10 /* GP10 · LED_PTT_N · optional/spare (not required TX LED) */ +#define PIN_LED_DCD 11 /* GP11 · LED_DCD_N · optional RX mirror of CDT */ +#define PIN_LED_TXRX 12 /* GP12 · LED_TXRX_N · spare / optional activity */ + +/* + * Crystal mux placeholders — UNUSED for v1.0. + * Product: one crystal stuffed matching flash (Y1 4.4336 / Y2 6.5536). + * Dual/mux path abandoned; crystal_steer is a no-op. + * Optional keep defines if mux ever returns later. + */ +#define PIN_XTAL_SEL_A 14 /* GP14 — unused v1.0 */ +#define PIN_XTAL_SEL_B 15 /* GP15 — unused v1.0 */ + +void board_pins_init(void); + +#endif /* C1224_BOARD_PINS_H */ diff --git a/firmware/c1224/include/config.h b/firmware/c1224/include/config.h new file mode 100644 index 0000000..07b1093 --- /dev/null +++ b/firmware/c1224/include/config.h @@ -0,0 +1,58 @@ +/** + * Operator INI texts + sense tuning — defaults in FW, overlay from flash. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#ifndef C1224_CONFIG_H +#define C1224_CONFIG_H + +#include +#include +#include + +#define C1224_TEXT_MAX 48 + +typedef struct { + char starting[C1224_TEXT_MAX]; + char ready[C1224_TEXT_MAX]; + char fault[C1224_TEXT_MAX]; + char sending[C1224_TEXT_MAX]; + char signal[C1224_TEXT_MAX]; + char packet[C1224_TEXT_MAX]; + char power[C1224_TEXT_MAX]; + char idle[C1224_TEXT_MAX]; + /* Terminal-facing identity (CDC ID) */ + char callsign[C1224_TEXT_MAX]; + char device_id[C1224_TEXT_MAX]; + /* Extra CDC ASCII — quiet=1 default; never suppresses fixed boot banner */ + bool quiet; /* true = no unsolicited STATUS/PROBE/CONFIG ASCII */ + /* Sense tuning */ + bool cdt_active_high; /* false = active-low (default pull-up idle) */ + uint16_t packet_hold_ms; + uint16_t packet_edge_min; + uint16_t packet_window_ms; +} c1224_config_t; + +void config_init(void); +const c1224_config_t *config_get(void); +c1224_config_t *config_mutable(void); +/** True when extra unsolicited CDC ASCII (STATUS/PROBE/CONFIG) is allowed. */ +bool config_unsolicited_ok(void); + +/** Apply defaults (RAM only). */ +void config_load_defaults(void); +/** Load overlay from flash INI region if valid. */ +bool config_load_flash(void); +/** Persist current config as INI text to flash. */ +bool config_save_flash(void); +/** Erase flash overlay (next boot = defaults only until SAVE). */ +bool config_erase_flash(void); + +/** SET KEY=value (case-insensitive key). Returns false if unknown key. */ +bool config_set_kv(const char *key, const char *value); +/** GET KEY → copy value into buf. */ +bool config_get_kv(const char *key, char *buf, size_t buflen); + +/** Dump INI-like text to USB (printf). */ +void config_dump_ini(void); + +#endif diff --git a/firmware/c1224/include/crystal_steer.h b/firmware/c1224/include/crystal_steer.h new file mode 100644 index 0000000..9aa55f9 --- /dev/null +++ b/firmware/c1224/include/crystal_steer.h @@ -0,0 +1,10 @@ +#ifndef C1224_CRYSTAL_STEER_H +#define C1224_CRYSTAL_STEER_H + +#include + +/** v1.0 no-op — rate = stuffed crystal; no XTAL mux. */ +void crystal_steer_apply(void); +bool crystal_steer_applied(void); + +#endif diff --git a/firmware/c1224/include/display.h b/firmware/c1224/include/display.h new file mode 100644 index 0000000..1cd78f1 --- /dev/null +++ b/firmware/c1224/include/display.h @@ -0,0 +1,17 @@ +#ifndef C1224_DISPLAY_H +#define C1224_DISPLAY_H + +#include + +/** + * I2C HD44780 via PCF8574 backpack (0x27/0x3F). USB always logs. + * Shows Power/ready, Signal, Packet from INI texts. + */ +void display_init(void); +bool display_present(void); +/** Refresh LCD from current status + sense (uses INI texts). */ +void display_update(void); +/** Legacy single-line push (also used before full UI ready). */ +void display_show(const char *line); + +#endif diff --git a/firmware/c1224/include/hdlc.h b/firmware/c1224/include/hdlc.h new file mode 100644 index 0000000..1d64278 --- /dev/null +++ b/firmware/c1224/include/hdlc.h @@ -0,0 +1,49 @@ +/** + * HDLC frame helpers — flags, bit-stuff, FCS-CCITT (AX.25). + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#ifndef C1224_HDLC_H +#define C1224_HDLC_H + +#include +#include +#include + +#define HDLC_FLAG 0x7Eu +#define HDLC_FCS_INIT 0xFFFFu +#define HDLC_FCS_GOOD 0xF0B8u +#define HDLC_MAX_INFO 512 + +uint16_t hdlc_fcs_update(uint16_t fcs, uint8_t byte); +uint16_t hdlc_fcs_final(uint16_t fcs); + +/** + * Build on-wire bit stream (NRZI already applied by caller after this): + * FLAG + stuffed(info + FCS_lo + FCS_hi) + FLAG(+optional trailing flags). + * Returns bit count written to bits[] (MSB-first within each stuffed byte stream + * is not used — output is a raw bit array, LSB-first per AX.25 bit order). + * + * bits_cap is capacity in bits. Returns 0 on overflow / bad args. + */ +size_t hdlc_encode_bits(const uint8_t *info, size_t info_len, + uint8_t *bits, size_t bits_cap, + unsigned trailing_flags); + +/** + * Feed one NRZ bit (after NRZI decode). Returns true when a complete good + * frame is available in out[] (info only, FCS stripped). + */ +typedef struct { + uint8_t buf[HDLC_MAX_INFO + 2]; + size_t len; + uint8_t ones; + bool in_frame; + bool stuffing; + uint8_t byte_acc; + uint8_t bit_count; +} hdlc_rx_t; + +void hdlc_rx_init(hdlc_rx_t *rx); +bool hdlc_rx_bit(hdlc_rx_t *rx, bool bit, uint8_t *out, size_t *out_len); + +#endif /* C1224_HDLC_H */ diff --git a/firmware/c1224/include/kiss.h b/firmware/c1224/include/kiss.h new file mode 100644 index 0000000..0312bb4 --- /dev/null +++ b/firmware/c1224/include/kiss.h @@ -0,0 +1,34 @@ +/** + * KISS frame encode/decode (FEND 0xC0). + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#ifndef C1224_KISS_H +#define C1224_KISS_H + +#include +#include +#include + +#define KISS_FEND 0xC0u +#define KISS_FESC 0xDBu +#define KISS_TFEND 0xDCu +#define KISS_TFESC 0xDDu +#define KISS_CMD_DATA 0x00u +#define KISS_MAX_PAYLOAD 512 + +typedef struct { + uint8_t buf[KISS_MAX_PAYLOAD + 4]; + size_t len; + bool in_frame; + bool esc; +} kiss_rx_t; + +void kiss_rx_init(kiss_rx_t *kx); +/** Feed one byte. Returns true when a DATA payload is ready in out. */ +bool kiss_rx_byte(kiss_rx_t *kx, uint8_t b, uint8_t *out, size_t *out_len); + +/** Write KISS DATA frame to dst; returns bytes written (0 on overflow). */ +size_t kiss_encode_data(const uint8_t *payload, size_t len, + uint8_t *dst, size_t dst_cap); + +#endif /* C1224_KISS_H */ diff --git a/firmware/c1224/include/modem_probe.h b/firmware/c1224/include/modem_probe.h new file mode 100644 index 0000000..402e485 --- /dev/null +++ b/firmware/c1224/include/modem_probe.h @@ -0,0 +1,15 @@ +#ifndef C1224_MODEM_PROBE_H +#define C1224_MODEM_PROBE_H + +#include + +typedef struct { + bool crystal_driven; + bool cdt_readable; + bool rxd_readable; + bool ready; +} modem_probe_result_t; + +modem_probe_result_t modem_probe_run(void); + +#endif diff --git a/firmware/c1224/include/ptt.h b/firmware/c1224/include/ptt.h new file mode 100644 index 0000000..ca5e7d8 --- /dev/null +++ b/firmware/c1224/include/ptt.h @@ -0,0 +1,10 @@ +#ifndef C1224_PTT_H +#define C1224_PTT_H + +#include + +void ptt_init(void); +void ptt_set(bool on); +bool ptt_get(void); + +#endif diff --git a/firmware/c1224/include/sense.h b/firmware/c1224/include/sense.h new file mode 100644 index 0000000..25009e8 --- /dev/null +++ b/firmware/c1224/include/sense.h @@ -0,0 +1,19 @@ +/** + * Dual sense: CDT→Signal/RX, RXD→Packet (HDLC 0x7E / edge activity). + * Status only — not a Host↔Chip data bridge. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#ifndef C1224_SENSE_H +#define C1224_SENSE_H + +#include + +void sense_init(void); +/** Poll GPIO / heuristics; call from main loop (~10 ms). */ +void sense_poll(void); + +bool sense_signal_active(void); /* CDT carrier/tone */ +bool sense_packet_active(void); /* RXD activity or flag seen (held) */ +bool sense_packet_flag(void); /* last window saw 0x7E */ + +#endif diff --git a/firmware/c1224/include/status.h b/firmware/c1224/include/status.h new file mode 100644 index 0000000..fefe6e8 --- /dev/null +++ b/firmware/c1224/include/status.h @@ -0,0 +1,23 @@ +#ifndef C1224_STATUS_H +#define C1224_STATUS_H + +#include + +typedef enum { + C1224_STATE_STARTING = 0, + C1224_STATE_READY, + C1224_STATE_FAULT, + C1224_STATE_SENDING, + C1224_STATE_SIGNAL, /* CDT active (Signal/RX) */ + C1224_STATE_PACKET /* RXD packet sense (may coexist with signal) */ +} c1224_state_t; + +/** Operator-facing text for state (from INI). */ +const char *c1224_state_string(c1224_state_t st); +void status_set(c1224_state_t st); +c1224_state_t status_get(void); +/** Recompute composite state from PTT + sense; publish if changed. */ +void status_tick(void); +void status_publish(void); + +#endif diff --git a/firmware/c1224/include/usb_cmd.h b/firmware/c1224/include/usb_cmd.h new file mode 100644 index 0000000..e0fb513 --- /dev/null +++ b/firmware/c1224/include/usb_cmd.h @@ -0,0 +1,11 @@ +#ifndef C1224_USB_CMD_H +#define C1224_USB_CMD_H + +#include +#include + +void usb_cmd_init(void); +void usb_cmd_poll(void); +void usb_cmd_on_rx_frame(const uint8_t *info, size_t len); + +#endif diff --git a/firmware/c1224/include/version.h b/firmware/c1224/include/version.h new file mode 100644 index 0000000..a2c81ad --- /dev/null +++ b/firmware/c1224/include/version.h @@ -0,0 +1,11 @@ +/** + * Firmware version SSoT — bump here; banner and docs follow. + * Matches product tag style without leading 'v' (tag: v1.0-prototype). + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#ifndef C1224_VERSION_H +#define C1224_VERSION_H + +#define C1224_FW_VERSION "1.0-prototype" + +#endif /* C1224_VERSION_H */ diff --git a/firmware/c1224/src/common/afsk_bitbang.c b/firmware/c1224/src/common/afsk_bitbang.c new file mode 100644 index 0000000..7019100 --- /dev/null +++ b/firmware/c1224/src/common/afsk_bitbang.c @@ -0,0 +1,116 @@ +/* + * Timed NRZI bitbang to TCM3105 TXD/RXD — v1.0-prototype best effort. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "afsk_bitbang.h" +#include "hdlc.h" +#include "board_pins.h" +#include "ptt.h" +#include "status.h" +#include "hardware/gpio.h" +#include "pico/stdlib.h" +#include + +#define BIT_US (1000000u / (unsigned)C1224_BITRATE) +#define TX_BITS_MAX ((HDLC_MAX_INFO + 4) * 10 + 64) +#define RX_IDLE_MARK true + +static uint8_t g_tx_bits[TX_BITS_MAX]; +static volatile bool g_tx_busy; +static bool g_nrzi_level; +static hdlc_rx_t g_rx; +static bool g_rx_nrzi; +static absolute_time_t g_next_sample; +static afsk_rx_frame_fn g_rx_cb; +static uint8_t g_rx_out[HDLC_MAX_INFO]; + +void afsk_bitbang_init(void) +{ + gpio_put(PIN_MODEM_TXD, 1); + g_tx_busy = false; + g_nrzi_level = true; + g_rx_nrzi = RX_IDLE_MARK; + hdlc_rx_init(&g_rx); + g_rx_cb = NULL; + g_next_sample = get_absolute_time(); +} + +unsigned afsk_bitrate(void) +{ + return (unsigned)C1224_BITRATE; +} + +bool afsk_tx_busy(void) +{ + return g_tx_busy; +} + +void afsk_rx_set_callback(afsk_rx_frame_fn fn) +{ + g_rx_cb = fn; +} + +static void nrzi_emit(bool data_bit) +{ + /* AX.25 NRZI: 0 = transition, 1 = no transition */ + if (!data_bit) { + g_nrzi_level = !g_nrzi_level; + } + gpio_put(PIN_MODEM_TXD, g_nrzi_level ? 1 : 0); +} + +bool afsk_tx_frame(const uint8_t *info, size_t info_len) +{ + if (g_tx_busy || !info || info_len == 0 || info_len > HDLC_MAX_INFO) { + return false; + } + size_t nbits = hdlc_encode_bits(info, info_len, g_tx_bits, TX_BITS_MAX, 2); + if (nbits == 0) { + return false; + } + + g_tx_busy = true; + status_set(C1224_STATE_SENDING); + status_publish(); + ptt_set(true); + sleep_ms(40); /* key-up settle — prototype */ + + g_nrzi_level = true; + gpio_put(PIN_MODEM_TXD, 1); + + for (size_t i = 0; i < nbits; i++) { + nrzi_emit(g_tx_bits[i] != 0); + busy_wait_us_32(BIT_US); + } + + gpio_put(PIN_MODEM_TXD, 1); + sleep_ms(20); + ptt_set(false); + status_set(C1224_STATE_READY); + status_publish(); + g_tx_busy = false; + return true; +} + +void afsk_rx_poll(void) +{ + if (g_tx_busy) { + return; + } + absolute_time_t now = get_absolute_time(); + if (absolute_time_diff_us(g_next_sample, now) < 0) { + return; + } + g_next_sample = delayed_by_us(now, BIT_US); + + bool level = gpio_get(PIN_MODEM_RXD); + bool data_bit = (level == g_rx_nrzi); /* 1 = no transition */ + if (level != g_rx_nrzi) { + g_rx_nrzi = level; + } + + size_t out_len = 0; + if (hdlc_rx_bit(&g_rx, data_bit, g_rx_out, &out_len) && g_rx_cb && out_len > 0) { + g_rx_cb(g_rx_out, out_len); + } +} diff --git a/firmware/c1224/src/common/banner.c b/firmware/c1224/src/common/banner.c new file mode 100644 index 0000000..59eb5dd --- /dev/null +++ b/firmware/c1224/src/common/banner.c @@ -0,0 +1,82 @@ +/* + * Fixed boot banner — edit source only; not INI / CDC. + * Always printed once after USB CDC ready (main); quiet never suppresses it. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "banner.h" +#include "version.h" +#include "afsk_bitbang.h" +#include +#include + +/* Fixed CDC column width for centered serial look (40–48). */ +#define BANNER_WIDTH 44 + +/** Display columns (UTF-8 code points ≈ 1 col; ASCII-safe). */ +static size_t banner_cols(const char *s) +{ + size_t cols = 0; + while (*s) { + unsigned char c = (unsigned char)*s++; + if ((c & 0x80u) == 0u) { + cols++; + } else if ((c & 0xE0u) == 0xC0u) { + if (*s) { + s++; + } + cols++; + } else if ((c & 0xF0u) == 0xE0u) { + if (*s) { + s++; + } + if (*s) { + s++; + } + cols++; + } else if ((c & 0xF8u) == 0xF0u) { + if (*s) { + s++; + } + if (*s) { + s++; + } + if (*s) { + s++; + } + cols++; + } else { + cols++; + } + } + return cols; +} + +static void banner_line(const char *text) +{ + size_t cols = banner_cols(text); + size_t pad = 0; + if (cols < BANNER_WIDTH) { + pad = (BANNER_WIDTH - cols) / 2u; + } + for (size_t i = 0; i < pad; i++) { + putchar(' '); + } + fputs(text, stdout); + fputs("\r\n", stdout); +} + +void banner_print(void) +{ + /* Fixed boot banner — edit source only */ + char line[BANNER_WIDTH + 8]; + + snprintf(line, sizeof(line), "T-Modem-c1224 %s", C1224_FW_VERSION); + banner_line(line); + + snprintf(line, sizeof(line), "USB KISS Half-TNC · AFSK %u", + (unsigned)afsk_bitrate()); + banner_line(line); + + banner_line("Non-Profit · GNU GPLv3 · AS-IS"); + banner_line("https://github.com/ngteq"); +} diff --git a/firmware/c1224/src/common/baud_config.c b/firmware/c1224/src/common/baud_config.c new file mode 100644 index 0000000..7b7a37f --- /dev/null +++ b/firmware/c1224/src/common/baud_config.c @@ -0,0 +1,14 @@ +/* + * Informational label only — physical rate = stuffed crystal. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "baud_config.h" + +static const baud_crystal_config_t cfg = { + .label = "c1224", +}; + +const baud_crystal_config_t *baud_config_get(void) +{ + return &cfg; +} diff --git a/firmware/c1224/src/common/board_pins.c b/firmware/c1224/src/common/board_pins.c new file mode 100644 index 0000000..a199946 --- /dev/null +++ b/firmware/c1224/src/common/board_pins.c @@ -0,0 +1,45 @@ +/* + * Board GPIO setup — T-Modem-c1224 service Pico. + * Copyright (C) 2026 T-Modem contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "board_pins.h" +#include "hardware/gpio.h" +#include "hardware/i2c.h" + +void board_pins_init(void) +{ + /* Modem digital */ + gpio_init(PIN_MODEM_TXD); + gpio_set_dir(PIN_MODEM_TXD, GPIO_OUT); + gpio_put(PIN_MODEM_TXD, 0); + + gpio_init(PIN_MODEM_RXD); + gpio_set_dir(PIN_MODEM_RXD, GPIO_IN); + gpio_pull_up(PIN_MODEM_RXD); + + gpio_init(PIN_MODEM_CDT); + gpio_set_dir(PIN_MODEM_CDT, GPIO_IN); + /* CDT polarity is chip-dependent; no pull forced beyond weak up for floating unpopulated */ + gpio_pull_up(PIN_MODEM_CDT); + + /* GP14/GP15 mux placeholders — leave unused (single-XTAL v1.0) */ + + /* LEDs */ + gpio_init(PIN_LED_PTT); + gpio_set_dir(PIN_LED_PTT, GPIO_OUT); + gpio_put(PIN_LED_PTT, 0); + gpio_init(PIN_LED_DCD); + gpio_set_dir(PIN_LED_DCD, GPIO_OUT); + gpio_put(PIN_LED_DCD, 0); + gpio_init(PIN_LED_TXRX); + gpio_set_dir(PIN_LED_TXRX, GPIO_OUT); + gpio_put(PIN_LED_TXRX, 0); + + /* I2C for LCD backpack (may be absent — display layer tolerates NACK) */ + i2c_init(i2c0, I2C_LCD_BAUDRATE); + gpio_set_function(PIN_I2C_SDA, GPIO_FUNC_I2C); + gpio_set_function(PIN_I2C_SCL, GPIO_FUNC_I2C); + gpio_pull_up(PIN_I2C_SDA); + gpio_pull_up(PIN_I2C_SCL); +} diff --git a/firmware/c1224/src/common/config.c b/firmware/c1224/src/common/config.c new file mode 100644 index 0000000..70f2420 --- /dev/null +++ b/firmware/c1224/src/common/config.c @@ -0,0 +1,422 @@ +/* + * INI defaults + flash overlay (last 4 KiB of Pico flash). + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "config.h" +#include "hardware/flash.h" +#include "hardware/sync.h" +#include "pico/stdlib.h" +#include +#include +#include +#include + +#define CFG_MAGIC0 'C' +#define CFG_MAGIC1 '1' +#define CFG_MAGIC2 '2' +#define CFG_MAGIC3 '4' +#define CFG_VERSION 1 +#define CFG_SECTOR_SIZE 4096 +/* Store config in the last flash sector */ +#define CFG_FLASH_OFFSET (PICO_FLASH_SIZE_BYTES - CFG_SECTOR_SIZE) + +typedef struct __attribute__((packed)) { + uint8_t magic[4]; + uint8_t version; + uint8_t reserved; + uint16_t length; + uint16_t crc; + /* uint8_t data[length] follows */ +} cfg_hdr_t; + +static c1224_config_t g_cfg; + +static uint16_t crc16_ccitt(const uint8_t *data, size_t len) +{ + uint16_t crc = 0xFFFF; + for (size_t i = 0; i < len; i++) { + crc ^= (uint16_t)data[i] << 8; + for (int b = 0; b < 8; b++) { + if (crc & 0x8000) { + crc = (uint16_t)((crc << 1) ^ 0x1021); + } else { + crc <<= 1; + } + } + } + return crc; +} + +static void copy_text(char *dst, const char *src) +{ + size_t n = strlen(src); + if (n >= C1224_TEXT_MAX) { + n = C1224_TEXT_MAX - 1; + } + memcpy(dst, src, n); + dst[n] = '\0'; +} + +void config_load_defaults(void) +{ + copy_text(g_cfg.starting, "c1224 is starting"); + copy_text(g_cfg.ready, "c1224 is ready"); + copy_text(g_cfg.fault, "c1224 is fault"); + copy_text(g_cfg.sending, "c1224 is sending"); + copy_text(g_cfg.signal, "c1224 signal"); + copy_text(g_cfg.packet, "c1224 packet"); + copy_text(g_cfg.power, "c1224 power"); + copy_text(g_cfg.idle, "c1224 idle"); + copy_text(g_cfg.callsign, ""); + copy_text(g_cfg.device_id, "c1224"); + g_cfg.quiet = true; + g_cfg.cdt_active_high = false; + g_cfg.packet_hold_ms = 500; + g_cfg.packet_edge_min = 4; + g_cfg.packet_window_ms = 50; +} + +static char *trim(char *s) +{ + while (*s && isspace((unsigned char)*s)) { + s++; + } + char *e = s + strlen(s); + while (e > s && isspace((unsigned char)e[-1])) { + *--e = '\0'; + } + return s; +} + +static bool parse_bool(const char *v, bool *out) +{ + if (!v || !*v) { + return false; + } + if (v[0] == '1' || v[0] == 'y' || v[0] == 'Y' || v[0] == 't' || v[0] == 'T') { + *out = true; + return true; + } + if (v[0] == '0' || v[0] == 'n' || v[0] == 'N' || v[0] == 'f' || v[0] == 'F') { + *out = false; + return true; + } + return false; +} + +bool config_set_kv(const char *key, const char *value) +{ + if (!key || !value) { + return false; + } + char kbuf[32]; + size_t n = strlen(key); + if (n >= sizeof(kbuf)) { + return false; + } + for (size_t i = 0; i <= n; i++) { + kbuf[i] = (char)tolower((unsigned char)key[i]); + } + + if (strcmp(kbuf, "starting") == 0) { + copy_text(g_cfg.starting, value); + return true; + } + if (strcmp(kbuf, "ready") == 0) { + copy_text(g_cfg.ready, value); + return true; + } + if (strcmp(kbuf, "fault") == 0) { + copy_text(g_cfg.fault, value); + return true; + } + if (strcmp(kbuf, "sending") == 0) { + copy_text(g_cfg.sending, value); + return true; + } + if (strcmp(kbuf, "signal") == 0) { + copy_text(g_cfg.signal, value); + return true; + } + if (strcmp(kbuf, "packet") == 0) { + copy_text(g_cfg.packet, value); + return true; + } + if (strcmp(kbuf, "power") == 0) { + copy_text(g_cfg.power, value); + return true; + } + if (strcmp(kbuf, "idle") == 0) { + copy_text(g_cfg.idle, value); + return true; + } + if (strcmp(kbuf, "callsign") == 0) { + copy_text(g_cfg.callsign, value); + return true; + } + if (strcmp(kbuf, "device_id") == 0) { + copy_text(g_cfg.device_id, value); + return true; + } + if (strcmp(kbuf, "quiet") == 0) { + bool b; + if (!parse_bool(value, &b)) { + return false; + } + g_cfg.quiet = b; + return true; + } + if (strcmp(kbuf, "cdt_active_high") == 0) { + bool b; + if (!parse_bool(value, &b)) { + return false; + } + g_cfg.cdt_active_high = b; + return true; + } + if (strcmp(kbuf, "packet_hold_ms") == 0) { + g_cfg.packet_hold_ms = (uint16_t)atoi(value); + return true; + } + if (strcmp(kbuf, "packet_edge_min") == 0) { + g_cfg.packet_edge_min = (uint16_t)atoi(value); + return true; + } + if (strcmp(kbuf, "packet_window_ms") == 0) { + g_cfg.packet_window_ms = (uint16_t)atoi(value); + return true; + } + return false; +} + +bool config_get_kv(const char *key, char *buf, size_t buflen) +{ + if (!key || !buf || buflen == 0) { + return false; + } + char kbuf[32]; + size_t n = strlen(key); + if (n >= sizeof(kbuf)) { + return false; + } + for (size_t i = 0; i <= n; i++) { + kbuf[i] = (char)tolower((unsigned char)key[i]); + } + + const char *src = NULL; + char num[16]; + if (strcmp(kbuf, "starting") == 0) { + src = g_cfg.starting; + } else if (strcmp(kbuf, "ready") == 0) { + src = g_cfg.ready; + } else if (strcmp(kbuf, "fault") == 0) { + src = g_cfg.fault; + } else if (strcmp(kbuf, "sending") == 0) { + src = g_cfg.sending; + } else if (strcmp(kbuf, "signal") == 0) { + src = g_cfg.signal; + } else if (strcmp(kbuf, "packet") == 0) { + src = g_cfg.packet; + } else if (strcmp(kbuf, "power") == 0) { + src = g_cfg.power; + } else if (strcmp(kbuf, "idle") == 0) { + src = g_cfg.idle; + } else if (strcmp(kbuf, "callsign") == 0) { + src = g_cfg.callsign; + } else if (strcmp(kbuf, "device_id") == 0) { + src = g_cfg.device_id; + } else if (strcmp(kbuf, "quiet") == 0) { + snprintf(num, sizeof(num), "%d", (int)g_cfg.quiet); + src = num; + } else if (strcmp(kbuf, "cdt_active_high") == 0) { + snprintf(num, sizeof(num), "%d", (int)g_cfg.cdt_active_high); + src = num; + } else if (strcmp(kbuf, "packet_hold_ms") == 0) { + snprintf(num, sizeof(num), "%u", (unsigned)g_cfg.packet_hold_ms); + src = num; + } else if (strcmp(kbuf, "packet_edge_min") == 0) { + snprintf(num, sizeof(num), "%u", (unsigned)g_cfg.packet_edge_min); + src = num; + } else if (strcmp(kbuf, "packet_window_ms") == 0) { + snprintf(num, sizeof(num), "%u", (unsigned)g_cfg.packet_window_ms); + src = num; + } else { + return false; + } + snprintf(buf, buflen, "%s", src); + return true; +} + +static void parse_ini_text(char *text) +{ + char *save = NULL; + for (char *line = strtok_r(text, "\r\n", &save); line; + line = strtok_r(NULL, "\r\n", &save)) { + line = trim(line); + if (line[0] == '\0' || line[0] == '#' || line[0] == ';') { + continue; + } + if (line[0] == '[') { + continue; /* section headers ignored — flat keys */ + } + char *eq = strchr(line, '='); + if (!eq) { + continue; + } + *eq = '\0'; + char *k = trim(line); + char *v = trim(eq + 1); + (void)config_set_kv(k, v); + } +} + +bool config_load_flash(void) +{ + const uint8_t *base = (const uint8_t *)(XIP_BASE + CFG_FLASH_OFFSET); + const cfg_hdr_t *hdr = (const cfg_hdr_t *)base; + if (hdr->magic[0] != CFG_MAGIC0 || hdr->magic[1] != CFG_MAGIC1 || + hdr->magic[2] != CFG_MAGIC2 || hdr->magic[3] != CFG_MAGIC3) { + return false; + } + if (hdr->version != CFG_VERSION) { + return false; + } + if (hdr->length == 0 || hdr->length > (CFG_SECTOR_SIZE - sizeof(cfg_hdr_t) - 1)) { + return false; + } + const uint8_t *data = base + sizeof(cfg_hdr_t); + if (crc16_ccitt(data, hdr->length) != hdr->crc) { + return false; + } + static char tmp[CFG_SECTOR_SIZE]; + if (hdr->length + 1 > sizeof(tmp)) { + return false; + } + memcpy(tmp, data, hdr->length); + tmp[hdr->length] = '\0'; + parse_ini_text(tmp); + return true; +} + +static size_t build_ini(char *out, size_t outsz) +{ + int n = snprintf(out, outsz, + "# c1224.ini — operator texts + terminal + sense\n" + "[texts]\n" + "starting=%s\n" + "ready=%s\n" + "fault=%s\n" + "sending=%s\n" + "signal=%s\n" + "packet=%s\n" + "power=%s\n" + "idle=%s\n" + "[terminal]\n" + "callsign=%s\n" + "device_id=%s\n" + "quiet=%d\n" + "[sense]\n" + "cdt_active_high=%d\n" + "packet_hold_ms=%u\n" + "packet_edge_min=%u\n" + "packet_window_ms=%u\n", + g_cfg.starting, g_cfg.ready, g_cfg.fault, g_cfg.sending, + g_cfg.signal, g_cfg.packet, g_cfg.power, g_cfg.idle, + g_cfg.callsign, g_cfg.device_id, + (int)g_cfg.quiet, + (int)g_cfg.cdt_active_high, + (unsigned)g_cfg.packet_hold_ms, + (unsigned)g_cfg.packet_edge_min, + (unsigned)g_cfg.packet_window_ms); + if (n < 0) { + return 0; + } + if ((size_t)n >= outsz) { + return outsz - 1; + } + return (size_t)n; +} + +bool config_save_flash(void) +{ + char body[CFG_SECTOR_SIZE - sizeof(cfg_hdr_t)]; + size_t len = build_ini(body, sizeof(body)); + if (len == 0) { + return false; + } + uint8_t sector[CFG_SECTOR_SIZE]; + memset(sector, 0xFF, sizeof(sector)); + cfg_hdr_t *hdr = (cfg_hdr_t *)sector; + hdr->magic[0] = CFG_MAGIC0; + hdr->magic[1] = CFG_MAGIC1; + hdr->magic[2] = CFG_MAGIC2; + hdr->magic[3] = CFG_MAGIC3; + hdr->version = CFG_VERSION; + hdr->reserved = 0; + hdr->length = (uint16_t)len; + hdr->crc = crc16_ccitt((const uint8_t *)body, len); + memcpy(sector + sizeof(cfg_hdr_t), body, len); + + uint32_t ints = save_and_disable_interrupts(); + flash_range_erase(CFG_FLASH_OFFSET, CFG_SECTOR_SIZE); + flash_range_program(CFG_FLASH_OFFSET, sector, CFG_SECTOR_SIZE); + restore_interrupts(ints); + return true; +} + +bool config_erase_flash(void) +{ + uint32_t ints = save_and_disable_interrupts(); + flash_range_erase(CFG_FLASH_OFFSET, CFG_SECTOR_SIZE); + restore_interrupts(ints); + return true; +} + +void config_dump_ini(void) +{ + char body[CFG_SECTOR_SIZE - sizeof(cfg_hdr_t)]; + size_t len = build_ini(body, sizeof(body)); + if (len == 0) { + printf("(empty)\r\n"); + return; + } + /* print line by line for CDC */ + for (size_t i = 0; i < len; i++) { + putchar(body[i]); + if (body[i] == '\n') { + putchar('\r'); + } + } + if (len == 0 || body[len - 1] != '\n') { + printf("\r\n"); + } +} + +void config_init(void) +{ + config_load_defaults(); + bool flash_ok = config_load_flash(); + /* Extra chatter only when quiet=0 (fixed boot banner is separate / always on). */ + if (config_unsolicited_ok()) { + if (flash_ok) { + printf("CONFIG: flash INI loaded\r\n"); + } else { + printf("CONFIG: defaults (no flash overlay)\r\n"); + } + } +} + +const c1224_config_t *config_get(void) +{ + return &g_cfg; +} + +c1224_config_t *config_mutable(void) +{ + return &g_cfg; +} + +bool config_unsolicited_ok(void) +{ + return !g_cfg.quiet; +} diff --git a/firmware/c1224/src/common/crystal_steer.c b/firmware/c1224/src/common/crystal_steer.c new file mode 100644 index 0000000..520682c --- /dev/null +++ b/firmware/c1224/src/common/crystal_steer.c @@ -0,0 +1,20 @@ +/* + * Crystal policy — v1.0 single-XTAL: physical rate = stuffed crystal. + * FW does not switch baud; dual UF2 obsolete; crystal_steer = no-op. + * Y1 4.4336 → 1200 · Y2 6.5536 → 2400 · GP14/15 unused (mux abandoned). + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "crystal_steer.h" + +static bool g_applied; + +void crystal_steer_apply(void) +{ + /* No-op: board stuffing (not GPIO mux / not FW baud) selects the crystal. */ + g_applied = true; +} + +bool crystal_steer_applied(void) +{ + return g_applied; +} diff --git a/firmware/c1224/src/common/display.c b/firmware/c1224/src/common/display.c new file mode 100644 index 0000000..e3ac2ab --- /dev/null +++ b/firmware/c1224/src/common/display.c @@ -0,0 +1,187 @@ +/* + * HD44780 LCD via PCF8574 I2C backpack + USB mirror. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "display.h" +#include "board_pins.h" +#include "config.h" +#include "status.h" +#include "sense.h" +#include "ptt.h" +#include "hardware/i2c.h" +#include "pico/stdlib.h" +#include +#include +#include + +/* PCF8574 bit map (common backpack): P0=RS P1=RW P2=E P3=BL P4-7=D4-D7 */ +#define LCD_RS 0x01 +#define LCD_RW 0x02 +#define LCD_EN 0x04 +#define LCD_BL 0x08 + +static bool g_lcd; +static uint8_t g_addr = I2C_LCD_ADDR_DEFAULT; +static char g_last_l0[17]; +static char g_last_l1[17]; + +static bool i2c_write_u8(uint8_t addr, uint8_t v) +{ + return i2c_write_blocking(i2c0, addr, &v, 1, false) >= 0; +} + +static bool i2c_probe(uint8_t addr) +{ + uint8_t b = 0; + return i2c_write_blocking(i2c0, addr, &b, 1, false) >= 0; +} + +static void lcd_write4(uint8_t nibble, uint8_t mode) +{ + uint8_t data = (uint8_t)((nibble & 0xF0) | LCD_BL | mode); + i2c_write_u8(g_addr, (uint8_t)(data | LCD_EN)); + sleep_us(1); + i2c_write_u8(g_addr, (uint8_t)(data & (uint8_t)~LCD_EN)); + sleep_us(50); +} + +static void lcd_send(uint8_t value, uint8_t mode) +{ + lcd_write4((uint8_t)(value & 0xF0), mode); + lcd_write4((uint8_t)((value << 4) & 0xF0), mode); +} + +static void lcd_cmd(uint8_t c) +{ + lcd_send(c, 0); +} + +static void lcd_data(uint8_t c) +{ + lcd_send(c, LCD_RS); +} + +static void lcd_set_cursor(uint8_t col, uint8_t row) +{ + static const uint8_t row_addr[] = {0x00, 0x40, 0x14, 0x54}; + if (row > 1) { + row = 1; + } + lcd_cmd((uint8_t)(0x80 | (row_addr[row] + col))); +} + +static void lcd_print_line(uint8_t row, const char *s) +{ + char buf[17]; + size_t n = strlen(s); + if (n > 16) { + n = 16; + } + memset(buf, ' ', 16); + memcpy(buf, s, n); + buf[16] = '\0'; + lcd_set_cursor(0, row); + for (int i = 0; i < 16; i++) { + lcd_data((uint8_t)buf[i]); + } +} + +static bool lcd_init_seq(uint8_t addr) +{ + g_addr = addr; + sleep_ms(50); + lcd_write4(0x30, 0); + sleep_ms(5); + lcd_write4(0x30, 0); + sleep_us(150); + lcd_write4(0x30, 0); + sleep_us(150); + lcd_write4(0x20, 0); /* 4-bit */ + lcd_cmd(0x28); /* 2 line, 5x8 */ + lcd_cmd(0x0C); /* display on, cursor off */ + lcd_cmd(0x06); /* entry mode */ + lcd_cmd(0x01); /* clear */ + sleep_ms(2); + return true; +} + +void display_init(void) +{ + g_lcd = false; + g_last_l0[0] = '\0'; + g_last_l1[0] = '\0'; + + uint8_t addrs[] = {0x27, 0x3F}; + for (unsigned i = 0; i < sizeof(addrs); i++) { + if (i2c_probe(addrs[i])) { + if (lcd_init_seq(addrs[i])) { + g_lcd = true; + if (config_unsolicited_ok()) { + printf("LCD: HD44780 @ 0x%02X\r\n", addrs[i]); + } + return; + } + } + } + if (config_unsolicited_ok()) { + printf("LCD: none — USB status only\r\n"); + } +} + +bool display_present(void) +{ + return g_lcd; +} + +void display_show(const char *line) +{ + if (!line) { + return; + } + if (g_lcd) { + lcd_print_line(0, line); + } +} + +void display_update(void) +{ + const c1224_config_t *cfg = config_get(); + char l0[17]; + char l1[17]; + + c1224_state_t st = status_get(); + if (st == C1224_STATE_FAULT) { + snprintf(l0, sizeof(l0), "%.16s", cfg->fault); + } else if (ptt_get()) { + snprintf(l0, sizeof(l0), "%.16s", cfg->sending); + } else if (st == C1224_STATE_STARTING) { + snprintf(l0, sizeof(l0), "%.16s", cfg->starting); + } else { + /* Power/ready on line 0 */ + snprintf(l0, sizeof(l0), "%.16s", cfg->ready); + } + + /* Line 1: Signal + Packet from sense */ + bool sig = sense_signal_active(); + bool pkt = sense_packet_active(); + if (sig && pkt) { + snprintf(l1, sizeof(l1), "%.7s %.7s", cfg->signal, cfg->packet); + } else if (sig) { + snprintf(l1, sizeof(l1), "%.16s", cfg->signal); + } else if (pkt) { + snprintf(l1, sizeof(l1), "%.16s", cfg->packet); + } else { + snprintf(l1, sizeof(l1), "%.16s", cfg->power); + } + + if (strcmp(l0, g_last_l0) != 0 || strcmp(l1, g_last_l1) != 0) { + strncpy(g_last_l0, l0, sizeof(g_last_l0)); + strncpy(g_last_l1, l1, sizeof(g_last_l1)); + g_last_l0[16] = '\0'; + g_last_l1[16] = '\0'; + if (g_lcd) { + lcd_print_line(0, l0); + lcd_print_line(1, l1); + } + } +} diff --git a/firmware/c1224/src/common/hdlc.c b/firmware/c1224/src/common/hdlc.c new file mode 100644 index 0000000..3cee0da --- /dev/null +++ b/firmware/c1224/src/common/hdlc.c @@ -0,0 +1,192 @@ +/* + * HDLC encode/decode — AX.25 bit order (LSB first), FCS-CCITT. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "hdlc.h" + +uint16_t hdlc_fcs_update(uint16_t fcs, uint8_t byte) +{ + fcs ^= (uint16_t)byte; + for (int i = 0; i < 8; i++) { + if (fcs & 1u) { + fcs = (uint16_t)((fcs >> 1) ^ 0x8408u); + } else { + fcs >>= 1; + } + } + return fcs; +} + +uint16_t hdlc_fcs_final(uint16_t fcs) +{ + return (uint16_t)~fcs; +} + +static bool push_bit(uint8_t *bits, size_t bits_cap, size_t *n, bool v) +{ + if (*n >= bits_cap) { + return false; + } + bits[*n] = v ? 1u : 0u; + (*n)++; + return true; +} + +static bool stuff_bit(uint8_t *bits, size_t bits_cap, size_t *n, + unsigned *ones, bool bit) +{ + if (!push_bit(bits, bits_cap, n, bit)) { + return false; + } + if (bit) { + (*ones)++; + if (*ones == 5u) { + if (!push_bit(bits, bits_cap, n, false)) { + return false; + } + *ones = 0; + } + } else { + *ones = 0; + } + return true; +} + +static bool emit_raw_byte(uint8_t *bits, size_t bits_cap, size_t *n, uint8_t b) +{ + for (int i = 0; i < 8; i++) { + if (!push_bit(bits, bits_cap, n, (b >> i) & 1u)) { + return false; + } + } + return true; +} + +static bool emit_stuffed_byte(uint8_t *bits, size_t bits_cap, size_t *n, + unsigned *ones, uint8_t b) +{ + for (int i = 0; i < 8; i++) { + if (!stuff_bit(bits, bits_cap, n, ones, (b >> i) & 1u)) { + return false; + } + } + return true; +} + +size_t hdlc_encode_bits(const uint8_t *info, size_t info_len, + uint8_t *bits, size_t bits_cap, + unsigned trailing_flags) +{ + if (!info || !bits || info_len > HDLC_MAX_INFO) { + return 0; + } + size_t n = 0; + unsigned ones = 0; + + if (!emit_raw_byte(bits, bits_cap, &n, HDLC_FLAG)) { + return 0; + } + + uint16_t fcs = HDLC_FCS_INIT; + for (size_t i = 0; i < info_len; i++) { + fcs = hdlc_fcs_update(fcs, info[i]); + if (!emit_stuffed_byte(bits, bits_cap, &n, &ones, info[i])) { + return 0; + } + } + fcs = hdlc_fcs_final(fcs); + if (!emit_stuffed_byte(bits, bits_cap, &n, &ones, (uint8_t)(fcs & 0xFFu))) { + return 0; + } + if (!emit_stuffed_byte(bits, bits_cap, &n, &ones, (uint8_t)((fcs >> 8) & 0xFFu))) { + return 0; + } + + ones = 0; + unsigned flags = trailing_flags ? trailing_flags : 1u; + for (unsigned f = 0; f < flags; f++) { + if (!emit_raw_byte(bits, bits_cap, &n, HDLC_FLAG)) { + return 0; + } + } + return n; +} + +void hdlc_rx_init(hdlc_rx_t *rx) +{ + rx->len = 0; + rx->ones = 0; + rx->in_frame = false; + rx->stuffing = false; + rx->byte_acc = 0; + rx->bit_count = 0; +} + +bool hdlc_rx_bit(hdlc_rx_t *rx, bool bit, uint8_t *out, size_t *out_len) +{ + if (bit) { + rx->ones++; + } else { + if (rx->ones == 5u) { + /* stuffed 0 — discard */ + rx->ones = 0; + return false; + } + if (rx->ones == 6u) { + /* flag */ + if (rx->in_frame && rx->len >= 3) { + uint16_t fcs = HDLC_FCS_INIT; + for (size_t i = 0; i < rx->len; i++) { + fcs = hdlc_fcs_update(fcs, rx->buf[i]); + } + if (fcs == HDLC_FCS_GOOD) { + size_t info_len = rx->len - 2; + for (size_t i = 0; i < info_len; i++) { + out[i] = rx->buf[i]; + } + *out_len = info_len; + rx->len = 0; + rx->bit_count = 0; + rx->byte_acc = 0; + rx->ones = 0; + rx->in_frame = true; /* abutting frames */ + return true; + } + } + rx->len = 0; + rx->bit_count = 0; + rx->byte_acc = 0; + rx->ones = 0; + rx->in_frame = true; + return false; + } + if (rx->ones > 6u) { + /* abort */ + rx->in_frame = false; + rx->len = 0; + rx->bit_count = 0; + rx->byte_acc = 0; + rx->ones = 0; + return false; + } + rx->ones = 0; + } + + if (!rx->in_frame) { + return false; + } + + rx->byte_acc |= (uint8_t)((bit ? 1u : 0u) << rx->bit_count); + rx->bit_count++; + if (rx->bit_count >= 8) { + if (rx->len < sizeof(rx->buf)) { + rx->buf[rx->len++] = rx->byte_acc; + } else { + rx->in_frame = false; + rx->len = 0; + } + rx->byte_acc = 0; + rx->bit_count = 0; + } + return false; +} diff --git a/firmware/c1224/src/common/kiss.c b/firmware/c1224/src/common/kiss.c new file mode 100644 index 0000000..1d5d0e7 --- /dev/null +++ b/firmware/c1224/src/common/kiss.c @@ -0,0 +1,98 @@ +/* + * KISS encode/decode. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "kiss.h" + +void kiss_rx_init(kiss_rx_t *kx) +{ + kx->len = 0; + kx->in_frame = false; + kx->esc = false; +} + +bool kiss_rx_byte(kiss_rx_t *kx, uint8_t b, uint8_t *out, size_t *out_len) +{ + if (b == KISS_FEND) { + if (kx->in_frame && kx->len >= 1) { + uint8_t cmd = kx->buf[0]; + if ((cmd & 0x0Fu) == KISS_CMD_DATA && kx->len > 1) { + size_t n = kx->len - 1; + for (size_t i = 0; i < n; i++) { + out[i] = kx->buf[i + 1]; + } + *out_len = n; + kx->len = 0; + kx->esc = false; + kx->in_frame = true; + return true; + } + } + kx->len = 0; + kx->esc = false; + kx->in_frame = true; + return false; + } + if (!kx->in_frame) { + return false; + } + if (kx->esc) { + if (b == KISS_TFEND) { + b = KISS_FEND; + } else if (b == KISS_TFESC) { + b = KISS_FESC; + } + kx->esc = false; + } else if (b == KISS_FESC) { + kx->esc = true; + return false; + } + if (kx->len < sizeof(kx->buf)) { + kx->buf[kx->len++] = b; + } else { + kx->in_frame = false; + kx->len = 0; + } + return false; +} + +static bool push(uint8_t *dst, size_t cap, size_t *n, uint8_t b) +{ + if (*n >= cap) { + return false; + } + dst[(*n)++] = b; + return true; +} + +static bool push_esc(uint8_t *dst, size_t cap, size_t *n, uint8_t b) +{ + if (b == KISS_FEND) { + return push(dst, cap, n, KISS_FESC) && push(dst, cap, n, KISS_TFEND); + } + if (b == KISS_FESC) { + return push(dst, cap, n, KISS_FESC) && push(dst, cap, n, KISS_TFESC); + } + return push(dst, cap, n, b); +} + +size_t kiss_encode_data(const uint8_t *payload, size_t len, + uint8_t *dst, size_t dst_cap) +{ + size_t n = 0; + if (!push(dst, dst_cap, &n, KISS_FEND)) { + return 0; + } + if (!push_esc(dst, dst_cap, &n, KISS_CMD_DATA)) { + return 0; + } + for (size_t i = 0; i < len; i++) { + if (!push_esc(dst, dst_cap, &n, payload[i])) { + return 0; + } + } + if (!push(dst, dst_cap, &n, KISS_FEND)) { + return 0; + } + return n; +} diff --git a/firmware/c1224/src/common/main.c b/firmware/c1224/src/common/main.c new file mode 100644 index 0000000..e113f91 --- /dev/null +++ b/firmware/c1224/src/common/main.c @@ -0,0 +1,61 @@ +/* + * T-Modem-c1224 — USB KISS half-TNC (HDLC on Pico + bitbang to TCM3105). + * No softmodem · no transparent Host↔Chip bit bridge · one FW · rate = crystal. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "pico/stdlib.h" +#include "board_pins.h" +#include "status.h" +#include "ptt.h" +#include "modem_probe.h" +#include "usb_cmd.h" +#include "display.h" +#include "crystal_steer.h" +#include "baud_config.h" +#include "config.h" +#include "sense.h" +#include "afsk_bitbang.h" +#include "banner.h" +#include "hardware/gpio.h" +#include + +int main(void) +{ + stdio_init_all(); + sleep_ms(800); + + board_pins_init(); + ptt_init(); + config_init(); + display_init(); + sense_init(); + afsk_bitbang_init(); + usb_cmd_init(); + afsk_rx_set_callback(usb_cmd_on_rx_frame); + + status_set(C1224_STATE_STARTING); + status_publish(); + /* Fixed boot banner — always once after CDC ready; source-only (banner.c). */ + banner_print(); + + modem_probe_result_t probe = modem_probe_run(); + if (probe.ready) { + status_set(C1224_STATE_READY); + } else { + status_set(C1224_STATE_FAULT); + } + status_publish(); + + while (true) { + usb_cmd_poll(); + afsk_rx_poll(); + sense_poll(); + + gpio_put(PIN_LED_DCD, sense_signal_active() ? 1 : 0); + gpio_put(PIN_LED_PTT, ptt_get() ? 1 : 0); + gpio_put(PIN_LED_TXRX, sense_packet_active() ? 1 : 0); + + status_tick(); + sleep_us(50); + } +} diff --git a/firmware/c1224/src/common/modem_probe.c b/firmware/c1224/src/common/modem_probe.c new file mode 100644 index 0000000..33b58e4 --- /dev/null +++ b/firmware/c1224/src/common/modem_probe.c @@ -0,0 +1,38 @@ +/* + * Offline health check — CDT+RXD readable; crystal_steer no-op applied. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "modem_probe.h" +#include "config.h" +#include "board_pins.h" +#include "crystal_steer.h" +#include "hardware/gpio.h" +#include "pico/stdlib.h" +#include + +modem_probe_result_t modem_probe_run(void) +{ + modem_probe_result_t r = {0}; + + crystal_steer_apply(); + r.crystal_driven = crystal_steer_applied(); + + (void)gpio_get(PIN_MODEM_CDT); + (void)gpio_get(PIN_MODEM_RXD); + r.cdt_readable = true; + r.rxd_readable = true; + + /* Optional TXD pulse — no CDT reaction required offline */ + gpio_put(PIN_MODEM_TXD, 1); + sleep_ms(1); + gpio_put(PIN_MODEM_TXD, 0); + + r.ready = r.crystal_driven && r.cdt_readable && r.rxd_readable; + + if (config_unsolicited_ok()) { + printf("PROBE crystal=%d cdt=%d rxd=%d -> %s\r\n", + (int)r.crystal_driven, (int)r.cdt_readable, (int)r.rxd_readable, + r.ready ? "READY" : "FAULT"); + } + return r; +} diff --git a/firmware/c1224/src/common/ptt.c b/firmware/c1224/src/common/ptt.c new file mode 100644 index 0000000..f54f221 --- /dev/null +++ b/firmware/c1224/src/common/ptt.c @@ -0,0 +1,31 @@ +/* + * PTT via Pico GPIO — host asserts over USB CDC (Type-A Path B), not softmodem. + * PIN_PTT_DRV = keying (required). PIN_LED_PTT = optional/spare TX LED mirror. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "ptt.h" +#include "board_pins.h" +#include "hardware/gpio.h" + +static bool g_ptt; + +void ptt_init(void) +{ + gpio_init(PIN_PTT_DRV); + gpio_set_dir(PIN_PTT_DRV, GPIO_OUT); + gpio_put(PIN_PTT_DRV, 0); + g_ptt = false; + gpio_put(PIN_LED_PTT, 0); +} + +void ptt_set(bool on) +{ + g_ptt = on; + gpio_put(PIN_PTT_DRV, on ? 1 : 0); + gpio_put(PIN_LED_PTT, on ? 1 : 0); +} + +bool ptt_get(void) +{ + return g_ptt; +} diff --git a/firmware/c1224/src/common/sense.c b/firmware/c1224/src/common/sense.c new file mode 100644 index 0000000..6bd33a4 --- /dev/null +++ b/firmware/c1224/src/common/sense.c @@ -0,0 +1,99 @@ +/* + * Dual sense: CDT (Signal) + RXD packet heuristic (edges + HDLC 0x7E). + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "sense.h" +#include "board_pins.h" +#include "config.h" +#include "hardware/gpio.h" +#include "pico/stdlib.h" +#include + +static bool g_signal; +static bool g_packet; +static bool g_flag; +static absolute_time_t g_packet_until; +static absolute_time_t g_window_start; +static uint16_t g_edges; +static bool g_last_rxd; +static bool g_hold_valid; + +static void try_flag_sample(void) +{ + uint16_t sh = 0; + for (int i = 0; i < 16; i++) { + bool b = gpio_get(PIN_MODEM_RXD); + sh = (uint16_t)((sh << 1) | (b ? 1u : 0u)); + if ((uint8_t)(sh & 0xFFu) == 0x7Eu) { + g_flag = true; + return; + } + sleep_us(833); + } +} + +void sense_init(void) +{ + g_signal = false; + g_packet = false; + g_flag = false; + g_hold_valid = false; + g_window_start = get_absolute_time(); + g_edges = 0; + g_last_rxd = gpio_get(PIN_MODEM_RXD); +} + +void sense_poll(void) +{ + const c1224_config_t *cfg = config_get(); + + bool cdt = gpio_get(PIN_MODEM_CDT); + g_signal = cfg->cdt_active_high ? cdt : !cdt; + + bool rxd = gpio_get(PIN_MODEM_RXD); + if (rxd != g_last_rxd) { + g_edges++; + g_last_rxd = rxd; + } + + uint32_t win_ms = cfg->packet_window_ms ? cfg->packet_window_ms : 50; + if (absolute_time_diff_us(g_window_start, get_absolute_time()) >= + (int64_t)win_ms * 1000) { + if (g_edges >= cfg->packet_edge_min) { + g_flag = false; + try_flag_sample(); + g_packet_until = make_timeout_time_ms( + cfg->packet_hold_ms ? cfg->packet_hold_ms : 500); + g_hold_valid = true; + } + g_edges = 0; + g_window_start = get_absolute_time(); + } + + if (g_hold_valid) { + if (time_reached(g_packet_until)) { + g_hold_valid = false; + g_packet = false; + g_flag = false; + } else { + g_packet = true; + } + } else { + g_packet = false; + } +} + +bool sense_signal_active(void) +{ + return g_signal; +} + +bool sense_packet_active(void) +{ + return g_packet; +} + +bool sense_packet_flag(void) +{ + return g_flag; +} diff --git a/firmware/c1224/src/common/status.c b/firmware/c1224/src/common/status.c new file mode 100644 index 0000000..8d09f22 --- /dev/null +++ b/firmware/c1224/src/common/status.c @@ -0,0 +1,78 @@ +/* + * Status from PTT + dual sense; texts from INI. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "status.h" +#include "config.h" +#include "display.h" +#include "ptt.h" +#include "sense.h" +#include + +static c1224_state_t g_state = C1224_STATE_STARTING; + +const char *c1224_state_string(c1224_state_t st) +{ + const c1224_config_t *cfg = config_get(); + switch (st) { + case C1224_STATE_STARTING: + return cfg->starting; + case C1224_STATE_READY: + return cfg->ready; + case C1224_STATE_FAULT: + return cfg->fault; + case C1224_STATE_SENDING: + return cfg->sending; + case C1224_STATE_SIGNAL: + return cfg->signal; + case C1224_STATE_PACKET: + return cfg->packet; + default: + return cfg->fault; + } +} + +void status_set(c1224_state_t st) +{ + g_state = st; +} + +c1224_state_t status_get(void) +{ + return g_state; +} + +void status_publish(void) +{ + const char *s = c1224_state_string(g_state); + if (config_unsolicited_ok()) { + printf("STATUS %s\r\n", s); + } + display_update(); +} + +void status_tick(void) +{ + if (g_state == C1224_STATE_FAULT || g_state == C1224_STATE_STARTING) { + display_update(); + return; + } + + c1224_state_t next; + if (ptt_get()) { + next = C1224_STATE_SENDING; + } else if (sense_packet_active()) { + next = C1224_STATE_PACKET; + } else if (sense_signal_active()) { + next = C1224_STATE_SIGNAL; + } else { + next = C1224_STATE_READY; + } + + if (next != g_state) { + g_state = next; + status_publish(); + } else { + display_update(); + } +} diff --git a/firmware/c1224/src/common/usb_cmd.c b/firmware/c1224/src/common/usb_cmd.c new file mode 100644 index 0000000..3c412de --- /dev/null +++ b/firmware/c1224/src/common/usb_cmd.c @@ -0,0 +1,268 @@ +/* + * USB CDC multiplexer: KISS binary (0xC0 frames) + ASCII service commands. + * Transparent Host↔Chip bit bridge stays abandoned — KISS half-TNC is the exception. + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "usb_cmd.h" +#include "pico/stdlib.h" +#include "ptt.h" +#include "status.h" +#include "config.h" +#include "sense.h" +#include "board_pins.h" +#include "afsk_bitbang.h" +#include "kiss.h" +#include "hardware/gpio.h" +#include +#include +#include + +#define LINE_MAX 96 + +static char g_line[LINE_MAX]; +static unsigned g_len; +static kiss_rx_t g_kiss; +static uint8_t g_kiss_payload[KISS_MAX_PAYLOAD]; + +static void trim_copy_upper_cmd(char *dst, size_t dstsz, const char *src) +{ + while (*src && isspace((unsigned char)*src)) { + src++; + } + size_t i = 0; + while (src[i] && i + 1 < dstsz) { + dst[i] = (char)toupper((unsigned char)src[i]); + i++; + } + dst[i] = '\0'; + while (i > 0 && isspace((unsigned char)dst[i - 1])) { + dst[--i] = '\0'; + } +} + +static void handle_line(void) +{ + char cmd[LINE_MAX]; + trim_copy_upper_cmd(cmd, sizeof(cmd), g_line); + if (cmd[0] == '\0') { + return; + } + + if (strcmp(cmd, "PTT ON") == 0 || strcmp(cmd, "PTT 1") == 0) { + ptt_set(true); + status_tick(); + printf("OK PTT ON\r\n"); + return; + } + if (strcmp(cmd, "PTT OFF") == 0 || strcmp(cmd, "PTT 0") == 0) { + ptt_set(false); + status_tick(); + printf("OK PTT OFF\r\n"); + return; + } + if (strcmp(cmd, "STATUS") == 0) { + printf("STATUS state=%s ptt=%d signal=%d packet=%d flag=%d " + "cdt_raw=%d rxd_raw=%d bitrate=%u kiss_half_tnc=1\r\n", + c1224_state_string(status_get()), + (int)ptt_get(), + (int)sense_signal_active(), + (int)sense_packet_active(), + (int)sense_packet_flag(), + (int)gpio_get(PIN_MODEM_CDT), + (int)gpio_get(PIN_MODEM_RXD), + afsk_bitrate()); + return; + } + if (strcmp(cmd, "HELP") == 0) { + printf("Commands:\r\n"); + printf(" PTT ON | PTT OFF\r\n"); + printf(" STATUS | HELP | ID\r\n"); + printf(" QUIET ON|OFF | VERBOSE ON|OFF\r\n"); + printf(" INI | GET | SET =\r\n"); + printf(" SAVE | RELOAD | DEFAULTS\r\n"); + printf("Dual protocol: byte 0xC0 → KISS; line ASCII → service.\r\n"); + printf("Packet: use KISS-only (any host). Service cmds optional.\r\n"); + printf("Boot banner always on (source). quiet=1 damps extra ASCII.\r\n"); + printf("PTT = GP9 (auto during KISS TX; manual PTT ON/OFF kept).\r\n"); + printf("Rate = stuffed crystal (FW bitbang C1224_BITRATE=%u).\r\n", + afsk_bitrate()); + printf("No softmodem · no Host↔Chip bit bridge · no baud switch.\r\n"); + printf("INI: texts + callsign device_id quiet + sense keys\r\n"); + return; + } + if (strcmp(cmd, "ID") == 0) { + const c1224_config_t *cfg = config_get(); + printf("ID device_id=%s callsign=%s bitrate=%u quiet=%d\r\n", + cfg->device_id[0] ? cfg->device_id : "c1224", + cfg->callsign, + afsk_bitrate(), + (int)cfg->quiet); + return; + } + if (strcmp(cmd, "QUIET ON") == 0 || strcmp(cmd, "QUIET 1") == 0) { + config_mutable()->quiet = true; + printf("OK QUIET ON\r\n"); + return; + } + if (strcmp(cmd, "QUIET OFF") == 0 || strcmp(cmd, "QUIET 0") == 0) { + config_mutable()->quiet = false; + printf("OK QUIET OFF\r\n"); + return; + } + if (strcmp(cmd, "VERBOSE ON") == 0 || strcmp(cmd, "VERBOSE 1") == 0) { + config_mutable()->quiet = false; + printf("OK VERBOSE ON\r\n"); + return; + } + if (strcmp(cmd, "VERBOSE OFF") == 0 || strcmp(cmd, "VERBOSE 0") == 0) { + config_mutable()->quiet = true; + printf("OK VERBOSE OFF\r\n"); + return; + } + if (strcmp(cmd, "INI") == 0) { + config_dump_ini(); + return; + } + if (strcmp(cmd, "SAVE") == 0) { + printf(config_save_flash() ? "OK SAVE\r\n" : "ERR SAVE\r\n"); + return; + } + if (strcmp(cmd, "RELOAD") == 0) { + config_load_defaults(); + if (config_load_flash()) { + printf("OK RELOAD flash\r\n"); + } else { + printf("OK RELOAD defaults (no flash)\r\n"); + } + status_publish(); + return; + } + if (strcmp(cmd, "DEFAULTS") == 0) { + config_load_defaults(); + printf("OK DEFAULTS (RAM; SAVE to persist)\r\n"); + status_publish(); + return; + } + if (strncmp(cmd, "GET ", 4) == 0) { + char key[32]; + const char *p = g_line; + while (*p && isspace((unsigned char)*p)) { + p++; + } + if (strncasecmp(p, "GET", 3) == 0) { + p += 3; + } + while (*p && isspace((unsigned char)*p)) { + p++; + } + size_t i = 0; + while (*p && !isspace((unsigned char)*p) && i + 1 < sizeof(key)) { + key[i++] = *p++; + } + key[i] = '\0'; + char val[C1224_TEXT_MAX]; + if (config_get_kv(key, val, sizeof(val))) { + printf("OK %s=%s\r\n", key, val); + } else { + printf("ERR unknown key\r\n"); + } + return; + } + if (strncmp(cmd, "SET ", 4) == 0) { + const char *p = g_line; + while (*p && isspace((unsigned char)*p)) { + p++; + } + if (strncasecmp(p, "SET", 3) == 0) { + p += 3; + } + while (*p && isspace((unsigned char)*p)) { + p++; + } + char tmp[LINE_MAX]; + snprintf(tmp, sizeof(tmp), "%s", p); + char *eq = strchr(tmp, '='); + if (!eq) { + printf("ERR SET key=value\r\n"); + return; + } + *eq = '\0'; + char *k = tmp; + char *v = eq + 1; + while (*k && isspace((unsigned char)*k)) { + k++; + } + char *ke = k + strlen(k); + while (ke > k && isspace((unsigned char)ke[-1])) { + *--ke = '\0'; + } + while (*v && isspace((unsigned char)*v)) { + v++; + } + char *ve = v + strlen(v); + while (ve > v && isspace((unsigned char)ve[-1])) { + *--ve = '\0'; + } + if (config_set_kv(k, v)) { + printf("OK SET %s=%s (SAVE to persist)\r\n", k, v); + status_publish(); + } else { + printf("ERR unknown key or bad value\r\n"); + } + return; + } + + printf("ERR unknown (try HELP)\r\n"); +} + +void usb_cmd_on_rx_frame(const uint8_t *info, size_t len) +{ + uint8_t frame[KISS_MAX_PAYLOAD + 16]; + size_t n = kiss_encode_data(info, len, frame, sizeof(frame)); + for (size_t i = 0; i < n; i++) { + putchar_raw((int)frame[i]); + } +} + +void usb_cmd_poll(void) +{ + int c; + while ((c = getchar_timeout_us(0)) != PICO_ERROR_TIMEOUT) { + uint8_t b = (uint8_t)c; + + /* KISS path: FEND or mid-frame */ + if (b == KISS_FEND || g_kiss.in_frame) { + size_t plen = 0; + if (kiss_rx_byte(&g_kiss, b, g_kiss_payload, &plen)) { + if (plen > 0 && !afsk_tx_busy()) { + afsk_tx_frame(g_kiss_payload, plen); + } + } + continue; + } + + if (c == '\r' || c == '\n') { + if (g_len > 0) { + g_line[g_len] = '\0'; + handle_line(); + g_len = 0; + } + continue; + } + if (c == 0x08 || c == 0x7f) { + if (g_len > 0) { + g_len--; + } + continue; + } + if (g_len + 1 < LINE_MAX && c >= 32 && c < 127) { + g_line[g_len++] = (char)c; + } + } +} + +void usb_cmd_init(void) +{ + g_len = 0; + kiss_rx_init(&g_kiss); +} diff --git a/hardware/BOM.md b/hardware/BOM.md new file mode 100644 index 0000000..3d73e37 --- /dev/null +++ b/hardware/BOM.md @@ -0,0 +1,151 @@ +# T-Modem-c1224 — BOM v0.26 (planning) + +**Status:** complete **planning BOM** · PCB footprints/nets present · **not** fab release · **single-XTAL** settled +**Product:** **T-Modem-c1224** · slave `/home/akb/Code/10-PROJECTS/T-Modem-c1224/` +**License:** GNU **GPLv3** · **non-profit** · **AS-IS** +**Outline:** **180×180 mm** · routed (see vault healthcheck) +**Selection:** sicher · stabil · performant · günstig +**CSV:** [`bom/BOM.csv`](bom/BOM.csv) + +**Power law:** **12 V** barrel → buck → **5 V** · **USB VBUS does not power the board** (D_OR2 = **DNI**). + +**Starting material:** symbols/footprints adapted from frozen **c12s24** (separate product; not a rename). + +--- + +## Status legend + +| Status | Meaning | +|--------|---------| +| **STOCK** | On hand from classic kit / prior buy | +| **BUY** | Need for first bring-up | +| **OPTIONAL** | May ship unpopulated | +| **TBD** | Class settled · exact MPN / MHz open | +| **DNI** | Do not install / leave unconnected | +| **DEFERRED** | Do not buy yet | +| **OUT** | Explicitly not in product | + +--- + +## 0 — Operator summary + +| When | What | +|------|------| +| **STOCK** | Pico H class · DIP-16 modem socket · TCM3105-class · 16×2 LCD · AF screw · LEDs · passives · barrel jack · USB Type-A · buck module class | +| **BUY (crystal)** | Per intended rate: **Y1 = 4.4336 MHz** (flash **1200**) **or** **Y2 = 6.5536 MHz** (flash **2400**) · **8.8672 deferred** | +| **Rate model** | **One board = one flashed rate = one crystal** · other footprint **DNI** · dual footprints optional · second board for other rate | +| **Mux** | **Not required** · dual/mux path abandoned for v1.0 | +| **DNI** | **D_OR2** USB→5 V Schottky OR · unused crystal footprint | +| **OUT** | Softmodem AF path · Pi host · T-PROT · XTAL mux IC | + +--- + +## 1 — Modem PHY (chip 1200 / 2400) + +| Ref | Qty | Description | Package | Candidate | Status | +|-----|-----|-------------|---------|-----------|--------| +| SKT_MODEM | 1 | 16-pin DIP socket 0.3″ | DIP-16 7.62 mm | Generic / turned-pin | **STOCK** | +| U_MODEM | 1 | Bell-202 AFSK modem IC | DIP-16 in socket | **TCM3105** or MX614P-class | **STOCK** | +| Y1 | 0/1 | Crystal chip **1200** | HC-49 TH | **4.4336 MHz** (Amateur-PR / Bell-202) | **BUY** if 1200 board · else **DNI** | +| Y2 | 0/1 | Crystal chip **2400** | HC-49 TH | **6.5536 MHz** (field 2400) · **8.8672 deferred** | **BUY** if 2400 board · else **DNI** | +| C_Y1 | 1 | Pierce load OSC1↔GND | TH ceramic | ~22 pF class | **STOCK** / **TBD** | +| C_Y2 | 1 | Pierce load OSC2↔GND | TH ceramic | ~22 pF class · **keep** with single XTAL | **STOCK** / **TBD** | +| U_XTAL_MUX | 0 | Crystal mux / analog switch | — | **Not for v1.0** | **OUT** | +| RV_CDL | 1 | CD level trimmer | TH | Commodity | **STOCK** | +| R_TRS, R_TXR* | 1–3 | Bell-202 strap resistors | 0.25 W TH | Per frozen strap practice | **STOCK** | + +Pico GPIOs **GP14/GP15** are **unused** for v1.0 (optional pin placeholders in FW). Rate = **stuffed crystal** · **one** FW image · no mux drive · dual UF2 **obsolete**. + +**Stuffing:** keep both crystal footprints optional on copper; populate **only** the crystal for the intended rate; **never** stuff both in parallel. **C_Y1 + C_Y2** are the Pierce load pair for that single crystal — do **not** remove C_Y2 when leaving Y2 empty. + +--- + +## 2 — Pico / service + +| Ref | Qty | Description | Candidate | Status | +|-----|-----|-------------|-----------|--------| +| U1 | 1 | MCU module native USB UF2 | **Raspberry Pi Pico H** (headers) | **STOCK** | +| HDR_PICO_F | 2 | Female 1×20 2.54 mm | Commodity | **STOCK** | +| SW1 | 1 | BOOTSEL N.O. tactile | Omron B3F class | **STOCK** | +| TP_BOOTSEL | 1 | Test point optional | — | **OPTIONAL** | + +--- + +## 3 — Display (shared kit) + +| Ref | Qty | Description | Candidate | Status | +|-----|-----|-------------|-----------|--------| +| DSP1 | 1 | 16×2 HD44780 LCD green BL | Commodity | **STOCK** | +| HDR_LCD_F / J_LCD_I2C | 1 | Header / I²C connector | As on PCB | **STOCK** | +| U_LVL | 0/1 | BSS138-class I²C level shift | LV=3V3 · HV=5 V | **STOCK** | +| RV2 | 1 | 10 kΩ contrast | TH | **STOCK** | +| R_BL | 0/1 | Backlight series R | Per module | **STOCK** | + +--- + +## 4 — Power (12 V primary · no USB power) + +| Ref | Qty | Description | Candidate | Status | +|-----|-----|-------------|-----------|--------| +| J_DC | 1 | Barrel **5.5×2.1** centre-**positive** | CUI PJ-002A class | **STOCK** | +| U_REG | 1 | **12 V → 5 V** buck module | **Mini560 5 V** class preferred if stocked · else MP1584/LM2596 class | **STOCK** / **BUY** | +| HDR_REG | 1 | Header for buck | 2.54 mm | **STOCK** | +| D_OR1 | 1 | Schottky buck → +5 V | 1N5819 class | **STOCK** | +| D_OR2 | 0 | USB VBUS → 5 V OR | — | **DNI** | +| F1 | 1 | PTC on +5 V | ~0.5 A hold class | **STOCK** | +| C_IN | 1 | 100 µF / 25 V | radial | **STOCK** | +| C_BULK | 1 | 100 µF / 16 V on +5 V | radial | **STOCK** | +| C_BYP* | ≥8 | 100 nF decoupling | TH | **STOCK** | +| PSU_WALL | 1 | 12 V centre+ wall wart ≥0.5 A | Commodity | Not on PCB | + +Silk: **12 V CENTRE +** · **USB DATA ONLY — NO VBUS POWER**. + +--- + +## 5 — USB (data / flash / command only) + +| Ref | Qty | Description | Candidate | Status | +|-----|-----|-------------|-----------|--------| +| J_USB | 1 | USB Type-A receptacle TH | Amphenol/TE/Molex class | **STOCK** | +| J_USB_PICO | 1 | Path to Pico USB (D+/D−/GND) | As designed | **STOCK** | + +**Net:** `USB_VBUS_NC` — isolated · not tied to `+5V_OR` / `+5V`. + +--- + +## 6 — AF / PTT / indicators + +| Ref | Qty | Description | Candidate | Status | +|-----|-----|-------------|-----------|--------| +| J_AF | 1 | 4-pin screw 5.08 mm | `AF_TX` `AF_RX` `PTT` `GND` | **STOCK** | +| Q1 | 1 | NPN OC PTT | 2N2222A / BC547 | **STOCK** | +| R_PTT | 1 | 4.7 kΩ | TH | **STOCK** | +| RV1 | 1 | 10 kΩ TX AF level | TH | **STOCK** | +| C_TX, C_RX / C_AC* | 2 | AF AC couple | TH | **STOCK** | +| R_PAD* | 2–4 | Pad/bias | TH | **STOCK** | +| D_PROT | 0/2 | 1N4148 clamp | TH | **OPTIONAL** | +| LED_PWR, LED_PTT, LED_DCD, LED_TXRX | 4 | 3 mm LED | Commodity | **STOCK** | +| R_LED1–4 | 4 | 330 Ω–1 kΩ | TH | **STOCK** | + +--- + +## 7 — Explicitly out of BOM + +| Item | Reason | +|------|--------| +| Softmodem / DSP AFSK on Pico | Product line forbids | +| USB VBUS board power / OR diode stuffed | Power law | +| Pi host / CM108 air path | That is **384b** | +| Protocol T / T-PROT | Classic only | +| XTAL mux IC (74HCT4053 class etc.) | Dual path abandoned for v1.0 | + +--- + +## Open TBDs + +1. ~~XTAL mux topology + MPN~~ — **OUT** / abandoned +2. Final buck MPN (Mini560 5 V vs on-hand MP1584) +3. Whether strap resistors need Pico GPIO +4. Expected tones for **6.5536** path (AS-IS) + +**AS-IS** · no support · no warranty. diff --git a/hardware/README.md b/hardware/README.md new file mode 100644 index 0000000..7a7f507 --- /dev/null +++ b/hardware/README.md @@ -0,0 +1,8 @@ +# Hardware — T-Modem-c1224 + +| Path | Content | Git | +|------|---------|-----| +| [`BOM.md`](BOM.md) | Planning BOM (public) | **tracked** | +| [`bom/BOM.csv`](bom/BOM.csv) | Machine-readable BOM | **tracked** | +| [`kicad/README.md`](kicad/README.md) | Pointer only | tracked stub | +| `../local/kicad/t-modem-c1224/` | Live schematic + PCB | **local only** until finished | diff --git a/hardware/bom/BOM.csv b/hardware/bom/BOM.csv new file mode 100644 index 0000000..aecb523 --- /dev/null +++ b/hardware/bom/BOM.csv @@ -0,0 +1,41 @@ +Ref,Qty,Description,Preferred_candidate,Notes,Status +SKT_MODEM,1,16-pin DIP socket 0.3 inch,Generic/turned-pin,Do not solder modem IC directly,STOCK +U_MODEM,1,Bell-202 AFSK modem IC DIP-16,TCM3105 or MX614P-class,Chip 1200 or 2400 via flash+XTAL,STOCK +Y1,0,Crystal chip 1200 flash,4.4336 MHz HC-49 TH,Stuff for 1200 board only; DNI if 2400,BUY +Y2,0,Crystal chip 2400 flash,6.5536 MHz HC-49 TH,Stuff for 2400 board only; DNI if 1200; 8.8672 deferred,BUY +C_Y1,1,Pierce load OSC1-GND,TH ceramic ~22pF,Keep with single XTAL,TBD +C_Y2,1,Pierce load OSC2-GND,TH ceramic ~22pF,Keep with single XTAL; do not strip with unused Y2,TBD +U_XTAL_MUX,0,Crystal mux analog switch,NOT FOR v1.0,Single-XTAL policy; dual/mux abandoned,OUT +RV_CDL,1,CD level trimmer TH,Commodity,Carrier detect,STOCK +U1,1,MCU module UF2,Raspberry Pi Pico H,Service controller not softmodem,STOCK +HDR_PICO_F,2,Female header 1x20 2.54mm,Commodity,Socket Pico H,STOCK +SW1,1,BOOTSEL tactile N.O. TH,Omron B3F class,BOOTSEL to GND,STOCK +DSP1,1,16x2 HD44780 LCD green backlight,Commodity,Shared kit,STOCK +U_LVL,0,BSS138 I2C level shifter,Hobby module,LV=3V3 HV=5V,STOCK +RV2,1,10k contrast trimmer TH,Commodity,LCD V0,STOCK +J_DC,1,Barrel 5.5x2.1 centre-positive TH,CUI PJ-002A class,VIN_12 primary,STOCK +U_REG,1,12V to 5V buck module,Mini560 5V class or MP1584,Headers HDR_REG,STOCK +HDR_REG,1,Header for buck 2.54mm,Commodity,Plug-in module,STOCK +D_OR1,1,Schottky buck to +5V TH,1N5819,Keep,STOCK +D_OR2,0,Schottky USB VBUS to +5V,DNI,No USB board power,DNI +F1,1,PTC ~0.5A hold,MF-RG500 class,On +5V,STOCK +C_IN,1,100uF 25V electrolytic,Commodity,VIN_12 bulk,STOCK +C_BULK,1,100uF 16V electrolytic,Commodity,+5V bulk,STOCK +C_BYP,8,100nF decoupling TH,Commodity,Decoupling,STOCK +J_USB,1,USB Type-A receptacle TH,Amphenol/TE/Molex class,Data/flash/command only,STOCK +J_USB_PICO,1,USB path to Pico,As designed,D+/D-/GND; VBUS isolated,STOCK +J_AF,1,Screw terminal 4-pin 5.08mm,Phoenix/Wurth/generic,AF_TX AF_RX PTT GND,STOCK +Q1,1,NPN OC PTT TO-92,2N2222A or BC547,Open collector,STOCK +R_PTT,1,4.7k 0.25W TH,Commodity,Q1 base,STOCK +RV1,1,10k TX AF trimmer TH,Commodity,TX level,STOCK +C_TX,1,AF AC couple,Commodity,TX path,STOCK +C_RX,1,AF AC couple,Commodity,RX path,STOCK +LED_PWR,1,3mm LED,Commodity,Power,STOCK +LED_PTT,1,3mm LED,Commodity,PTT,STOCK +LED_DCD,1,3mm LED,Commodity,DCD,STOCK +LED_TXRX,1,3mm LED,Commodity,TX/RX,STOCK +R_LED1,1,330R-1k LED series,Commodity,,STOCK +R_LED2,1,330R-1k LED series,Commodity,,STOCK +R_LED3,1,330R-1k LED series,Commodity,,STOCK +R_LED4,1,330R-1k LED series,Commodity,,STOCK +PSU_WALL,1,12V centre-positive wall wart >=0.5A,Commodity,Not on PCB,STOCK diff --git a/hardware/kicad/README.md b/hardware/kicad/README.md new file mode 100644 index 0000000..c0019ec --- /dev/null +++ b/hardware/kicad/README.md @@ -0,0 +1,5 @@ +# KiCad + +Tracked project: **`hardware/kicad/t-modem-c1224/`** (fab-ready **v1.0-prototype**). + +Working copies under `local/kicad/` remain gitignored for operator scratch; ship gold lives here. diff --git a/hardware/kicad/t-modem-c1224/README.md b/hardware/kicad/t-modem-c1224/README.md new file mode 100644 index 0000000..6792cfd --- /dev/null +++ b/hardware/kicad/t-modem-c1224/README.md @@ -0,0 +1,13 @@ +# KiCad — T-Modem-c1224 + +| File | Role | +|------|------| +| `t-modem-c1224.kicad_sch` | Schematic | +| `t-modem-c1224.kicad_pcb` | PCB **180×180 mm** · fab-ready (DRC clean) | +| `t-modem-c1224.kicad_pro` | Project | +| `t-modem-c1224.kicad_sym` | Symbols | +| `sym-lib-table` | Symbol library table | +| `t-modem-c1224.rules` | Custom DRC rules | +| `scripts/` | Layer/docs helpers | + +Tag: **v1.0-prototype**. AS-IS · GPLv3 non-profit. diff --git a/hardware/kicad/t-modem-c1224/scripts/kicad10_layers_setup.sexpr b/hardware/kicad/t-modem-c1224/scripts/kicad10_layers_setup.sexpr new file mode 100644 index 0000000..0f3f583 --- /dev/null +++ b/hardware/kicad/t-modem-c1224/scripts/kicad10_layers_setup.sexpr @@ -0,0 +1,110 @@ +(layers + (0 "F.Cu" signal) + (2 "B.Cu" signal) + (9 "F.Adhes" user "F.Adhesive") + (11 "B.Adhes" user "B.Adhesive") + (13 "F.Paste" user) + (15 "B.Paste" user) + (5 "F.SilkS" user "F.Silkscreen") + (7 "B.SilkS" user "B.Silkscreen") + (1 "F.Mask" user) + (3 "B.Mask" user) + (17 "Dwgs.User" user "User.Drawings") + (19 "Cmts.User" user "User.Comments") + (21 "Eco1.User" user "User.Eco1") + (23 "Eco2.User" user "User.Eco2") + (25 "Edge.Cuts" user) + (27 "Margin" user) + (31 "F.CrtYd" user "F.Courtyard") + (29 "B.CrtYd" user "B.Courtyard") + (35 "F.Fab" user) + (33 "B.Fab" user) + ) +(setup + (stackup + (layer "F.SilkS" + (type "Top Silk Screen") + ) + (layer "F.Paste" + (type "Top Solder Paste") + ) + (layer "F.Mask" + (type "Top Solder Mask") + (color "Green") + (thickness 0.01) + ) + (layer "F.Cu" + (type "copper") + (thickness 0.035) + ) + (layer "dielectric 1" + (type "core") + (thickness 1.51) + (material "FR4") + (epsilon_r 4.5) + (loss_tangent 0.02) + ) + (layer "B.Cu" + (type "copper") + (thickness 0.035) + ) + (layer "B.Mask" + (type "Bottom Solder Mask") + (color "Green") + (thickness 0.01) + ) + (layer "B.Paste" + (type "Bottom Solder Paste") + ) + (layer "B.SilkS" + (type "Bottom Silk Screen") + ) + (copper_finish "None") + (dielectric_constraints no) + ) + (pad_to_mask_clearance 0) + (allow_soldermask_bridges_in_footprints no) + (tenting front back) + (aux_axis_origin 100 100) + (grid_origin 100 100) + (pcbplotparams + (layerselection 0x00000000_00000000_00000000_000000a5) + (plot_on_all_layers_selection 0x00000000_00000000_00000000_00000000) + (disableapertmacros no) + (usegerberextensions no) + (usegerberattributes yes) + (usegerberadvancedattributes yes) + (creategerberjobfile yes) + (dashed_line_dash_ratio 12.000000) + (dashed_line_gap_ratio 3.000000) + (svgprecision 6) + (plotframeref no) + (mode 1) + (useauxorigin no) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (pdf_front_fp_property_popups yes) + (pdf_back_fp_property_popups yes) + (pdf_metadata yes) + (pdf_single_document no) + (dxfpolygonmode yes) + (dxfimperialunits yes) + (dxfusepcbnewfont yes) + (psnegative no) + (psa4output no) + (plot_black_and_white yes) + (plotinvisibletext no) + (sketchpadsonfab no) + (plotpadnumbers no) + (hidednponfab no) + (sketchdnponfab yes) + (crossoutdnponfab yes) + (subtractmaskfromsilk no) + (outputformat 1) + (mirror no) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) diff --git a/hardware/kicad/t-modem-c1224/scripts/render_docs_images.py b/hardware/kicad/t-modem-c1224/scripts/render_docs_images.py new file mode 100644 index 0000000..7fd75f3 --- /dev/null +++ b/hardware/kicad/t-modem-c1224/scripts/render_docs_images.py @@ -0,0 +1,610 @@ +#!/usr/bin/env python3 +"""Render T-Modem docs images from the gold KiCad PCB. + +Outputs: + /t-modem-c12s24-complete.png + Assembled 3D (kicad-cli pcb render) — Pico H seated, top view, USB/DC at bottom. + /docs/images/explode/t-modem-explode-0N-*.png + Teaching explode panels from 2D SVG layers (not 3D). + +Requires: kicad-cli, kicad-packages3d (KICAD10_3DMODEL_DIR), PyGObject (Rsvg), +cairo, Pillow. + +Usage: + python3 render_docs_images.py # complete 3D only (default) + python3 render_docs_images.py --explode # teaching set only + python3 render_docs_images.py --all # both +""" + +from __future__ import annotations + +import argparse +import math +import os +import subprocess +import tempfile +from pathlib import Path + +import cairo +import gi +from PIL import Image, ImageDraw, ImageEnhance, ImageFont + +gi.require_version("Rsvg", "2.0") +from gi.repository import Rsvg # noqa: E402 + +REPO = Path(__file__).resolve().parents[4] +PCB = REPO / "hardware/kicad/t-modem/t-modem.kicad_pcb" +OUT_COMPLETE = REPO / "t-modem-c12s24-complete.png" +OUT_EXPLODE = REPO / "docs/images/explode" + +BOARD_W_MM = 190.0 +BOARD_H_MM = 110.0 +# Builder-facing: front (USB/DC, KiCad Y≈0) at bottom of image — matches docs ASCII. +FLIP_Y = True + +DEFAULT_3DMODEL_DIR = "/usr/share/kicad/3dmodels" + +# Footprint centres from gold PCB (mm, KiCad coords). +POS = { + "U1": (100.0, 36.0), + "SKT_MODEM": (22.0, 52.0), + "Y1": (40.0, 42.0), + "J_AF": (182.0, 78.0), + "J_USB": (22.0, 8.0), + "J_DC": (74.0, 12.0), + "J_LCD_I2C": (100.0, 101.45), + "U_LVL": (72.0, 101.45), + "U_REG": (140.0, 14.0), + "SW1": (98.0, 12.0), + "LED_PWR": (178.0, 28.0), + "LED_PTT": (178.0, 40.0), + "LED_DCD": (178.0, 52.0), + "LED_TXRX": (178.0, 64.0), + "RV1": (58.0, 80.0), + "RV2": (128.0, 100.0), + "RV_CDL": (58.0, 94.0), + "Q1": (148.0, 58.0), + "R_TRS": (42.0, 54.0), + "R_TXR1": (42.0, 62.0), + "R_TXR2": (27.9, 68.0), + "J_USB_PICO": (48.0, 22.0), + "TP_BOOTSEL": (112.0, 12.0), + "F1": (154.0, 14.0), + "H1": (6.0, 6.0), + "H2": (184.0, 6.0), + "H3": (6.0, 104.0), + "H4": (184.0, 104.0), +} + +# Highlight boxes (cx, cy, w, h) in KiCad mm. +BOX = { + "outline": (95.0, 55.0, 188.0, 108.0), + "pico": (100.0, 36.0, 28.0, 58.0), + "modem": (22.0, 52.0, 22.0, 28.0), + "crystal": (40.0, 42.0, 18.0, 20.0), + "radio": (175.0, 70.0, 28.0, 40.0), + "lcd": (90.0, 100.0, 70.0, 18.0), + "usb": (35.0, 14.0, 55.0, 24.0), + "straps_leds": (110.0, 55.0, 140.0, 70.0), + "power": (125.0, 16.0, 90.0, 28.0), +} + + +def find_font(size: int) -> ImageFont.FreeTypeFont | ImageFont.ImageFont: + for path in ( + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + "/usr/share/fonts/truetype/liberation/LiberationSans-Bold.ttf", + "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf", + ): + p = Path(path) + if p.is_file(): + return ImageFont.truetype(str(p), size) + return ImageFont.load_default() + + +def mm_to_xy(x_mm: float, y_mm: float, ox: float, oy: float, scale: float) -> tuple[float, float]: + y = (BOARD_H_MM - y_mm) if FLIP_Y else y_mm + return ox + x_mm * scale, oy + y * scale + + +def model_dir() -> str: + return os.environ.get("KICAD10_3DMODEL_DIR", DEFAULT_3DMODEL_DIR) + + +def pcb_for_complete_render(tmp: Path) -> Path: + """Copy gold PCB and seat a DIP-16 body in SKT_MODEM for the built look.""" + text = PCB.read_text(encoding="utf-8") + needle = ( + '\t\t(model "${KICAD10_3DMODEL_DIR}/Package_DIP.3dshapes/DIP-16_W7.62mm_Socket.step"\n' + "\t\t\t(offset\n" + "\t\t\t\t(xyz 0 0 0)\n" + "\t\t\t)\n" + "\t\t\t(scale\n" + "\t\t\t\t(xyz 1 1 1)\n" + "\t\t\t)\n" + "\t\t\t(rotate\n" + "\t\t\t\t(xyz 0 0 0)\n" + "\t\t\t)\n" + "\t\t)" + ) + insert = ( + needle + + "\n" + + '\t\t(model "${KICAD10_3DMODEL_DIR}/Package_DIP.3dshapes/DIP-16_W7.62mm.step"\n' + "\t\t\t(offset\n" + "\t\t\t\t(xyz 0 0 4.5)\n" + "\t\t\t)\n" + "\t\t\t(scale\n" + "\t\t\t\t(xyz 1 1 1)\n" + "\t\t\t)\n" + "\t\t\t(rotate\n" + "\t\t\t\t(xyz 0 0 0)\n" + "\t\t\t)\n" + "\t\t)" + ) + if needle not in text: + raise SystemExit("SKT_MODEM socket 3D model block not found in gold PCB") + out = tmp / "t-modem-complete-render.kicad_pcb" + out.write_text(text.replace(needle, insert, 1), encoding="utf-8") + return out + + +def render_complete_3d() -> Image.Image: + """Raytraced assembled top view; yaw 0 so silkscreen reads upright (front edge at top).""" + md = model_dir() + pico = Path(md) / "Module.3dshapes/RaspberryPi_Pico_H.step" + if not pico.is_file(): + raise SystemExit( + f"missing Pico 3D model: {pico}\n" + "Install kicad-packages3d or set KICAD10_3DMODEL_DIR." + ) + with tempfile.TemporaryDirectory(prefix="tmodem-complete-3d-") as td: + tmp = Path(td) + pcb = pcb_for_complete_render(tmp) + raw = tmp / "raw.png" + env = os.environ.copy() + env["KICAD10_3DMODEL_DIR"] = md + cmd = [ + "kicad-cli", + "pcb", + "render", + "-o", + str(raw), + "-w", + "1920", + "-h", + "1280", + "--side", + "top", + "--background", + "opaque", + "--quality", + "high", + "--floor", + "--zoom", + "0.92", + "--rotate", + "0,0,0", + "--define-var", + f"KICAD10_3DMODEL_DIR={md}", + str(pcb), + ] + subprocess.run(cmd, check=True, env=env) + return Image.open(raw).convert("RGB") + + +def compose_complete(raw: Image.Image) -> Image.Image: + """Title + crop → 1536×1024 README companion (matches prior complete size).""" + pixels = raw.load() + w, h = raw.size + xs: list[int] = [] + ys: list[int] = [] + for y in range(0, h, 2): + for x in range(0, w, 2): + r, g, b = pixels[x, y] + if not (r > 175 and g > 175 and b > 185 and abs(r - g) < 25 and abs(g - b) < 30): + xs.append(x) + ys.append(y) + if xs and ys: + pad = 40 + box = ( + max(0, min(xs) - pad), + max(0, min(ys) - pad), + min(w, max(xs) + pad), + min(h, max(ys) + pad), + ) + cropped = raw.crop(box) + else: + cropped = raw + + W, H = 1536, 1024 + canvas = Image.new("RGB", (W, H), (250, 250, 248)) + title_h = 110 + avail_w, avail_h = W - 80, H - title_h - 50 + cw, ch = cropped.size + scale = min(avail_w / cw, avail_h / ch) + nw, nh = int(cw * scale), int(ch * scale) + board = cropped.resize((nw, nh), Image.Resampling.LANCZOS) + ox = (W - nw) // 2 + oy = title_h + (avail_h - nh) // 2 + canvas.paste(board, (ox, oy)) + + draw = ImageDraw.Draw(canvas) + lines = ( + ("T-Modem-c12s24", find_font(36), 22, (20, 20, 20)), + ("chip 1200 · software 2400", find_font(20), 64, (55, 55, 55)), + ("GPLv3 · AS-IS · assembled 3D from gold PCB", find_font(16), 90, (90, 90, 90)), + ) + for text, font, y, fill in lines: + bbox = draw.textbbox((0, 0), text, font=font) + tw = bbox[2] - bbox[0] + draw.text(((W - tw) // 2, y), text, fill=fill, font=font) + + note = "Front edge (USB / DC / BOOTSEL) at top · Pico H seated · 190×110 mm · v0.25" + fn = find_font(13) + bbox = draw.textbbox((0, 0), note, font=fn) + draw.text(((W - (bbox[2] - bbox[0])) // 2, H - 32), note, fill=(100, 100, 100), font=fn) + return canvas + + +def export_svgs(tmp: Path) -> tuple[Path, Path]: + top = tmp / "top.svg" + bot = tmp / "bottom.svg" + layers_top = "F.Cu,F.SilkS,F.Mask,F.Fab,Edge.Cuts,User.Drawings,User.Comments" + layers_bot = "B.Cu,B.SilkS,B.Mask,B.Fab,Edge.Cuts" + common = [ + "kicad-cli", + "pcb", + "export", + "svg", + "--mode-single", + "--page-size-mode", + "2", + "--exclude-drawing-sheet", + "--fit-page-to-board", + "--drill-shape-opt", + "2", + "--subtract-soldermask", + ] + subprocess.run( + common + ["-o", str(top), "--layers", layers_top, str(PCB)], + check=True, + ) + subprocess.run( + common + ["-o", str(bot), "--layers", layers_bot, "--mirror", str(PCB)], + check=True, + ) + return top, bot + + +def svg_to_png(svg: Path, scale_px_per_mm: float) -> Image.Image: + handle = Rsvg.Handle.new_from_file(str(svg)) + w = int(math.ceil(BOARD_W_MM * scale_px_per_mm)) + h = int(math.ceil(BOARD_H_MM * scale_px_per_mm)) + surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h) + ctx = cairo.Context(surf) + ctx.set_source_rgb(1, 1, 1) + ctx.paint() + ctx.scale(scale_px_per_mm, scale_px_per_mm) + vp = Rsvg.Rectangle() + vp.x = 0 + vp.y = 0 + vp.width = BOARD_W_MM + vp.height = BOARD_H_MM + handle.render_document(ctx, vp) + buf = surf.get_data() + im = Image.frombuffer("RGBA", (w, h), bytes(buf), "raw", "BGRA", 0, 1).convert("RGB") + if FLIP_Y: + im = im.transpose(Image.FLIP_TOP_BOTTOM) + return im + + +def board_canvas( + board: Image.Image, + canvas_w: int, + canvas_h: int, + margin: int = 48, + title_h: int = 72, +) -> tuple[Image.Image, float, float, float]: + """Place board on canvas; return image, origin_x, origin_y, scale_px_per_mm.""" + avail_w = canvas_w - 2 * margin + avail_h = canvas_h - title_h - margin - 36 + scale = min(avail_w / BOARD_W_MM, avail_h / BOARD_H_MM) + bw = int(BOARD_W_MM * scale) + bh = int(BOARD_H_MM * scale) + board_r = board.resize((bw, bh), Image.Resampling.LANCZOS) + canvas = Image.new("RGB", (canvas_w, canvas_h), (248, 248, 246)) + ox = (canvas_w - bw) // 2 + oy = title_h + (avail_h - bh) // 2 + canvas.paste(board_r, (ox, oy)) + return canvas, float(ox), float(oy), scale + + +def draw_title(draw: ImageDraw.ImageDraw, text: str, sub: str, w: int) -> None: + font_t = find_font(28) + font_s = find_font(16) + draw.text((24, 16), text, fill=(20, 20, 20), font=font_t) + draw.text((24, 48), sub, fill=(70, 70, 70), font=font_s) + draw.line((24, 68, w - 24, 68), fill=(180, 180, 180), width=1) + + +def draw_box( + draw: ImageDraw.ImageDraw, + ox: float, + oy: float, + scale: float, + cx: float, + cy: float, + bw: float, + bh: float, + color: tuple[int, int, int] = (220, 40, 40), + width: int = 3, +) -> None: + x0, y0 = mm_to_xy(cx - bw / 2, cy + bh / 2, ox, oy, scale) + x1, y1 = mm_to_xy(cx + bw / 2, cy - bh / 2, ox, oy, scale) + draw.rectangle([x0, y0, x1, y1], outline=color, width=width) + + +def draw_callout( + draw: ImageDraw.ImageDraw, + ox: float, + oy: float, + scale: float, + x_mm: float, + y_mm: float, + label: str, + side: str = "right", + color: tuple[int, int, int] = (30, 30, 30), +) -> None: + font = find_font(15) + px, py = mm_to_xy(x_mm, y_mm, ox, oy, scale) + if side == "right": + tx, ty = px + 28, py - 8 + draw.line([(px, py), (px + 18, py), (tx - 4, ty + 8)], fill=color, width=2) + elif side == "left": + tx, ty = px - 160, py - 8 + draw.line([(px, py), (px - 18, py), (tx + 140, ty + 8)], fill=color, width=2) + elif side == "up": + tx, ty = px + 8, py - 36 + draw.line([(px, py), (px, py - 18), (tx, ty + 14)], fill=color, width=2) + else: + tx, ty = px + 8, py + 18 + draw.line([(px, py), (px, py + 14), (tx, ty)], fill=color, width=2) + bbox = draw.textbbox((tx, ty), label, font=font) + pad = 4 + draw.rectangle( + [bbox[0] - pad, bbox[1] - pad, bbox[2] + pad, bbox[3] + pad], + fill=(255, 255, 255), + outline=color, + ) + draw.text((tx, ty), label, fill=color, font=font) + + +def dim_except_boxes( + base: Image.Image, + ox: float, + oy: float, + scale: float, + boxes: list[tuple[float, float, float, float]], + dim: float = 0.38, +) -> Image.Image: + """Dim whole image then restore rectangular highlight regions.""" + faded = ImageEnhance.Brightness(base).enhance(dim) + faded = ImageEnhance.Color(faded).enhance(0.55) + out = faded.copy() + for cx, cy, bw, bh in boxes: + x0, y0 = mm_to_xy(cx - bw / 2, cy + bh / 2, ox, oy, scale) + x1, y1 = mm_to_xy(cx + bw / 2, cy - bh / 2, ox, oy, scale) + box = (int(min(x0, x1)), int(min(y0, y1)), int(max(x0, x1)), int(max(y0, y1))) + region = base.crop(box) + out.paste(region, box) + return out + + +def make_panel( + board: Image.Image, + step: int, + title: str, + subtitle: str, + highlight: list[str], + callouts: list[tuple[str, str, str]], + footer: str, +) -> Image.Image: + W, H = 1536, 1024 + base, ox, oy, scale = board_canvas(board, W, H, margin=56, title_h=78) + boxes = [BOX[k] for k in highlight if k in BOX] + if boxes: + base = dim_except_boxes(base, ox, oy, scale, boxes) + draw = ImageDraw.Draw(base) + draw_title(draw, f"{step}/10 · {title}", subtitle, W) + for key in highlight: + if key in BOX: + cx, cy, bw, bh = BOX[key] + draw_box(draw, ox, oy, scale, cx, cy, bw, bh, color=(200, 30, 30), width=3) + for ref, label, side in callouts: + if ref not in POS: + continue + x, y = POS[ref] + draw_callout(draw, ox, oy, scale, x, y, label, side=side, color=(25, 25, 25)) + draw.text((24, H - 28), footer, fill=(90, 90, 90), font=find_font(13)) + draw.text((W - 200, H - 28), f"Panel {step}/10", fill=(90, 90, 90), font=find_font(13)) + return base + + +def write_complete() -> None: + raw = render_complete_3d() + complete = compose_complete(raw) + complete.save(OUT_COMPLETE, "PNG", optimize=True) + print(f"wrote {OUT_COMPLETE}") + + +def write_explode() -> None: + OUT_EXPLODE.mkdir(parents=True, exist_ok=True) + with tempfile.TemporaryDirectory(prefix="tmodem-render-") as td: + tmp = Path(td) + top_svg, _bot_svg = export_svgs(tmp) + top = svg_to_png(top_svg, scale_px_per_mm=14.0) + + panels: list[tuple[str, str, str, list[str], list[tuple[str, str, str]], str]] = [ + ( + "t-modem-explode-01-board-outline.png", + "Board outline", + "190 × 110 mm · M3 holes · Edge.Cuts — empty teaching frame from gold PCB", + ["outline"], + [ + ("H1", "H1 M3", "down"), + ("H2", "H2 M3", "down"), + ("H3", "H3 M3", "up"), + ("H4", "H4 M3", "up"), + ], + "Step 1 — know the board size and mounting before stuffing parts", + ), + ( + "t-modem-explode-02-pico.png", + "Raspberry Pi Pico", + "U1 · RaspberryPi_Pico_Common_THT · Pico H plugs into female headers", + ["pico"], + [ + ("U1", "U1 Pico H", "right"), + ("SW1", "SW1 BOOTSEL", "down"), + ("TP_BOOTSEL", "TP_BOOTSEL flying lead", "down"), + ], + "Step 2 — MCU centre · USB end of Pico toward front edge", + ), + ( + "t-modem-explode-03-modem-socket.png", + "Modem socket · TCM3105", + "SKT_MODEM DIP-16 · do not solder the IC directly — socket first", + ["modem"], + [ + ("SKT_MODEM", "SKT_MODEM DIP-16", "right"), + ], + "Step 3 — PHY chip class: TCM3105 (c12) · socketed for service", + ), + ( + "t-modem-explode-04-crystal.png", + "Crystal · load caps", + "Y1 HC-49-U 4.433619 MHz · C_Y1 / C_Y2 22 pF beside modem", + ["crystal"], + [ + ("Y1", "Y1 4.433619", "right"), + ], + "Step 4 — short analog path: crystal next to TCM3105", + ), + ( + "t-modem-explode-05-radio-af.png", + "Radio AF · PTT", + "J_AF Phoenix 1×4 · AF_TX AF_RX PTT GND · Q1 2N2222A driver", + ["radio"], + [ + ("J_AF", "J_AF screw terminal", "left"), + ("Q1", "Q1 2N2222A PTT", "left"), + ], + "Step 5 — radio interconnect on the right edge", + ), + ( + "t-modem-explode-06-lcd-i2c.png", + "LCD · I²C · level shift", + "J_LCD_I2C GND VCC SDA SCL · U_LVL BSS138 · RV2 contrast optional", + ["lcd"], + [ + ("J_LCD_I2C", "J_LCD_I2C", "down"), + ("U_LVL", "U_LVL BSS138", "down"), + ("RV2", "RV2 contrast", "left"), + ], + "Step 6 — default display path: I²C backpack via level shifter", + ), + ( + "t-modem-explode-07-usb.png", + "USB Path B", + "J_USB Type-A device · J_USB_PICO cable to Pico Micro-USB · D+/D− + VBUS", + ["usb"], + [ + ("J_USB", "J_USB USB-A", "up"), + ("J_USB_PICO", "J_USB_PICO → Pico", "right"), + ], + "Step 7 — USB DEVICE on board; Path B data cable to Pico", + ), + ( + "t-modem-explode-08-straps-leds.png", + "Straps · LEDs · trimmers", + "0 Ω straps R_TRS / R_TXR* · LEDs PWR PTT DCD TXRX · RV1 TX · RV_CDL", + ["straps_leds"], + [ + ("R_TRS", "0 Ω straps", "right"), + ("LED_PWR", "LED row", "left"), + ("RV1", "RV1 / RV_CDL", "right"), + ], + "Step 8 — confirm strap silk vs TCM3105 datasheet before power", + ), + ( + "t-modem-explode-09-power-dc.png", + "12 V · buck · OR-ing", + "J_DC 12 V CENTRE+ · U_REG MP1584 · F1 · Schottky OR into +5V_OR", + ["power"], + [ + ("J_DC", "J_DC 12 V", "down"), + ("U_REG", "U_REG MP1584", "up"), + ("F1", "F1 fuse", "up"), + ], + "Step 9 — bring up 12 V alone → measure +5V_OR ≈ 5 V before USB-only path", + ), + ( + "t-modem-explode-10-complete-stack.png", + "Complete stack", + "All subsystems on one board — insert IC · Pico · LCD after soldering sockets", + ["outline", "pico", "modem", "crystal", "radio", "lcd", "usb", "power"], + [ + ("U1", "Pico", "right"), + ("SKT_MODEM", "TCM3105", "left"), + ("J_AF", "Radio", "left"), + ("J_USB", "USB", "down"), + ("J_LCD_I2C", "LCD I²C", "up"), + ("J_DC", "12 V", "down"), + ], + "Step 10 — RX before TX when RF is attached · AS-IS standard reference", + ), + ] + + expected = {p[0] for p in panels} + # Drop only superseded filenames; never wipe the whole dir blindly. + for old in OUT_EXPLODE.glob("t-modem-explode-*.png"): + if old.name not in expected: + old.unlink() + + for i, (fname, title, sub, hl, calls, foot) in enumerate(panels, start=1): + img = make_panel(top, i, title, sub, hl, calls, foot) + path = OUT_EXPLODE / fname + img.save(path, "PNG", optimize=True) + print(f"wrote {path}") + + +def main() -> None: + if not PCB.is_file(): + raise SystemExit(f"missing PCB: {PCB}") + + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument( + "--explode", + action="store_true", + help="Regenerate 2D teaching explode panels only", + ) + ap.add_argument( + "--all", + action="store_true", + help="Regenerate complete 3D and explode set", + ) + args = ap.parse_args() + + do_complete = args.all or not args.explode + do_explode = args.all or args.explode + + if do_complete: + write_complete() + if do_explode: + write_explode() + + +if __name__ == "__main__": + main() diff --git a/hardware/kicad/t-modem-c1224/sym-lib-table b/hardware/kicad/t-modem-c1224/sym-lib-table new file mode 100644 index 0000000..47c6030 --- /dev/null +++ b/hardware/kicad/t-modem-c1224/sym-lib-table @@ -0,0 +1,4 @@ +(sym_lib_table + (version 7) + (lib (name "t-modem")(type "KiCad")(uri "${KIPRJMOD}/t-modem-c1224.kicad_sym")(options "")(descr "T-Modem custom")) +) diff --git a/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pcb b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pcb new file mode 100644 index 0000000..0cf6173 --- /dev/null +++ b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pcb @@ -0,0 +1,15627 @@ +(kicad_pcb + (version 20260206) + (generator "pcbnew") + (generator_version "10.0") + (general + (thickness 1.6) + (legacy_teardrops no) + ) + (paper "A4") + (title_block + (title "T-Modem-c1224 v1.0") + (date "2026-07-21") + (rev "1") + (company "GNU/GPLv3-Non-Profit (as-is)") + (comment 1 "Chip AFSK 1200/2400 (2x XTAL) · Pico=Service/PTT/LCD/USB-CDC · 12V+buck") + ) + (layers + (0 "F.Cu" signal) + (2 "B.Cu" signal) + (9 "F.Adhes" user "F.Adhesive") + (11 "B.Adhes" user "B.Adhesive") + (13 "F.Paste" user) + (15 "B.Paste" user) + (5 "F.SilkS" user "F.Silkscreen") + (7 "B.SilkS" user "B.Silkscreen") + (1 "F.Mask" user) + (3 "B.Mask" user) + (17 "Dwgs.User" user "User.Drawings") + (19 "Cmts.User" user "User.Comments") + (21 "Eco1.User" user "User.Eco1") + (23 "Eco2.User" user "User.Eco2") + (25 "Edge.Cuts" user) + (27 "Margin" user) + (31 "F.CrtYd" user "F.Courtyard") + (29 "B.CrtYd" user "B.Courtyard") + (35 "F.Fab" user) + (33 "B.Fab" user) + ) + (setup + (stackup + (layer "F.SilkS" + (type "Top Silk Screen") + ) + (layer "F.Paste" + (type "Top Solder Paste") + ) + (layer "F.Mask" + (type "Top Solder Mask") + (color "Green") + (thickness 0.01) + ) + (layer "F.Cu" + (type "copper") + (thickness 0.035) + ) + (layer "dielectric 1" + (type "core") + (thickness 1.51) + (material "FR4") + (epsilon_r 4.5) + (loss_tangent 0.02) + ) + (layer "B.Cu" + (type "copper") + (thickness 0.035) + ) + (layer "B.Mask" + (type "Bottom Solder Mask") + (color "Green") + (thickness 0.01) + ) + (layer "B.Paste" + (type "Bottom Solder Paste") + ) + (layer "B.SilkS" + (type "Bottom Silk Screen") + ) + (copper_finish "None") + (dielectric_constraints no) + ) + (pad_to_mask_clearance 0) + (allow_soldermask_bridges_in_footprints no) + (tenting + (front yes) + (back yes) + ) + (covering + (front no) + (back no) + ) + (plugging + (front no) + (back no) + ) + (capping no) + (filling no) + (aux_axis_origin 100 100) + (grid_origin 100 100) + (pcbplotparams + (layerselection 0x00000000_00000000_00000000_000000a5) + (plot_on_all_layers_selection 0x00000000_00000000_00000000_00000000) + (disableapertmacros no) + (usegerberextensions no) + (usegerberattributes yes) + (usegerberadvancedattributes yes) + (creategerberjobfile yes) + (dashed_line_dash_ratio 12) + (dashed_line_gap_ratio 3) + (svgprecision 6) + (plotframeref no) + (mode 1) + (useauxorigin no) + (pdf_front_fp_property_popups yes) + (pdf_back_fp_property_popups yes) + (pdf_metadata yes) + (pdf_single_document no) + (dxfpolygonmode yes) + (dxfimperialunits yes) + (dxfusepcbnewfont yes) + (psnegative no) + (psa4output no) + (plot_black_and_white yes) + (sketchpadsonfab no) + (plotpadnumbers no) + (hidednponfab no) + (sketchdnponfab yes) + (crossoutdnponfab yes) + (subtractmaskfromsilk no) + (outputformat 1) + (mirror no) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + (property "PROJECT" "T-Modem") + (property "VERSION" "0.25") + (footprint "PinHeader_1x01_P2.54mm_Vertical" + (layer "F.Cu") + (uuid "0b440f68-9ffd-417a-86e4-ec8c0fc67e6b") + (at 92.38 16.18) + (descr "Through hole straight pin header, 1x01, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x01 2.54mm single row") + (property "Reference" "TP_BOOTSEL" + (at -7.62 0 0) + (layer "F.SilkS") + (uuid "bca9672a-41e0-47b7-b8ff-cf3243a8c0cd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "Pico BOOTSEL" + (at 10.16 0 0) + (layer "F.Fab") + (hide yes) + (uuid "979ad871-f620-4483-8370-37e1f37f2172") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "f0d58567-aba8-4bac-aafc-2d47431d02b7") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "cdd885e2-19c2-4f10-8aeb-144ba19db338") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "76f5f33d-ebea-493c-bce3-92c59de84a62") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/ec42938e-a45a-42d7-9d5c-743e9487caa4") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -1.38 -1.38) + (end 0 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d7f64006-a84e-4cbf-a480-70718205c093") + ) + (fp_line + (start -1.38 0) + (end -1.38 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a528ef25-0c3b-4b64-9474-f760e859d512") + ) + (fp_line + (start -1.38 1.27) + (end -1.38 1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2e49d3e2-34be-4d53-8e4c-b7e80c595d93") + ) + (fp_line + (start -1.38 1.27) + (end 1.38 1.27) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b1e01e46-787e-4759-9981-1ab93985eaf7") + ) + (fp_line + (start -1.38 1.38) + (end 1.38 1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c34d0604-849c-460a-95a7-61dbf9324a4c") + ) + (fp_line + (start 1.38 1.27) + (end 1.38 1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3074434f-78f3-4312-9a09-19858c0d025d") + ) + (fp_rect + (start -1.77 -1.77) + (end 1.77 1.77) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "305f2cb6-a31b-4b62-9d1c-64190c68ca02") + ) + (fp_line + (start -1.27 -0.635) + (end -0.635 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1dd967bb-0083-4ffa-a592-db37328cf3bd") + ) + (fp_line + (start -1.27 1.27) + (end -1.27 -0.635) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "36c689f7-d8db-487d-b3c6-c3ee22443b6a") + ) + (fp_line + (start -0.635 -1.27) + (end 1.27 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "55741d2d-d97a-44e5-b33c-44eef8894a43") + ) + (fp_line + (start 1.27 -1.27) + (end 1.27 1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "2ae5a8ff-02b5-4d37-bcef-e117e9351046") + ) + (fp_line + (start 1.27 1.27) + (end -1.27 1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "b161ee92-aaad-449d-b8d3-5611d9c0cf12") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "BOOTSEL") + (uuid "0def4566-e977-4cd1-8a94-523b36f74d9e") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x01_P2.54mm_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "PhoenixContact_MSTBA_2,5_4-G-5,08_1x04_P5.08mm_Horizontal" + (layer "F.Cu") + (uuid "144160bf-6a25-4d2d-8e48-98426bcd8e10") + (at 166.04 102.54 90) + (descr "Generic Phoenix Contact connector footprint for: MSTBA_2,5/4-G-5,08; number of pins: 04; pin pitch: 5.08mm; Angled || order number: 1757268 12A || order number: 1923885 16A (HC)") + (tags "phoenix_contact connector MSTBA_01x04_G_5.08mm") + (property "Reference" "J_AF" + (at -5.08 -2.54 0) + (layer "F.SilkS") + (uuid "e068e9b7-8a3a-42aa-8dbf-e1e0fac2cfd1") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "AF" + (at 7.62 11.2 0) + (layer "F.Fab") + (hide yes) + (uuid "e163f908-f4e9-4159-84cc-97c565e6ece0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "f0575467-835e-4af4-9532-c8c092bb79d9") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "acbc0cb0-9cb4-4fca-b25d-9f3fca9c1d9b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/PhoenixContact" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "9ad4e78e-fd4e-4e6e-be34-be8c254f9429") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/e94fe63c-77d4-4ab7-a6b2-ebf4bf1a1de1") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 0.3 -2.91) + (end 0 -2.31) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8a7a7fd5-c4e1-40ad-9877-5cc241b2ad86") + ) + (fp_line + (start -0.3 -2.91) + (end 0.3 -2.91) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2d352e87-d38d-45f3-bc90-689f3523fdf8") + ) + (fp_line + (start 0 -2.31) + (end -0.3 -2.91) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "28dcd2e3-90e6-4265-b658-ea2442033b41") + ) + (fp_line + (start 15.99 8.61) + (end 14.49 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a6bd51bb-aa0d-49f1-9489-c9f34856c9b5") + ) + (fp_line + (start 14.49 8.61) + (end 14.24 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "80a4ddf6-85d5-46cd-9c26-3a500cdc73f7") + ) + (fp_line + (start 10.91 8.61) + (end 9.41 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8dfa3d5a-78c6-4607-8354-e0db02f134ef") + ) + (fp_line + (start 9.41 8.61) + (end 9.16 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ffb7f115-d992-4cd0-8521-b7a4039e638e") + ) + (fp_line + (start 5.83 8.61) + (end 4.33 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dd33e797-c29c-4883-bd61-0eb235385b74") + ) + (fp_line + (start 4.33 8.61) + (end 4.08 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "82faecd8-0734-46a7-a70d-59ec64e1656a") + ) + (fp_line + (start 0.75 8.61) + (end -0.75 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "64f7d091-0542-4f44-8830-ab5b3c120830") + ) + (fp_line + (start -0.75 8.61) + (end -1 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "641082b1-1662-4c14-a18e-f1e722dca6fb") + ) + (fp_line + (start 16.24 10.11) + (end 15.99 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2f48bbf4-41b7-42a6-b1e2-76c8d44fdea3") + ) + (fp_line + (start 14.24 10.11) + (end 16.24 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "781d88ba-add3-4234-a240-8f2bed3e3655") + ) + (fp_line + (start 11.16 10.11) + (end 10.91 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ffc79475-82b1-4bd5-b48a-8099d9d7fc1b") + ) + (fp_line + (start 9.16 10.11) + (end 11.16 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9f703602-bf2b-4c94-bc53-e7a101849fb4") + ) + (fp_line + (start 6.08 10.11) + (end 5.83 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "14123652-f232-4769-821d-bb02ab418c39") + ) + (fp_line + (start 4.08 10.11) + (end 6.08 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4cabf37a-b148-4c0c-bedf-f1fcae485b3a") + ) + (fp_line + (start 1 10.11) + (end 0.75 8.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "be932ae8-7658-4451-851d-8b8aa249fee4") + ) + (fp_line + (start -1 10.11) + (end 1 10.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3101bad1-4010-4a22-bd20-892e85b3024b") + ) + (fp_rect + (start -3.65 -2.11) + (end 18.89 10.11) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "deb574e8-020e-4648-a5e6-3029168394bd") + ) + (fp_rect + (start -3.65 6.81) + (end 18.89 8.61) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "74a56e2b-af81-414c-a7e7-527f6a7f4b55") + ) + (fp_rect + (start -4.04 -2.5) + (end 19.28 10.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "54e58b39-53c0-4951-a98c-3e1b3a8aede6") + ) + (fp_line + (start 0.95 -2) + (end 0 -0.5) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "57c31a8b-e309-4b4f-9169-f5b99187c361") + ) + (fp_line + (start 0 -0.5) + (end -0.95 -2) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f3ce2979-066a-48cd-ada2-0cc07db45b13") + ) + (fp_rect + (start -3.54 -2) + (end 18.78 10) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "00f07cbe-49b5-4baa-911a-5a230e54ee7d") + ) + (pad "1" thru_hole roundrect + (at 0 0) + (size 2.08 3.6) + (drill 1.4) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.120192) + (net "AF_TX") + (uuid "eea3f5b1-e17c-4336-9665-baab4493c96a") + ) + (pad "2" thru_hole oval + (at 5.08 0) + (size 2.08 3.6) + (drill 1.4) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "AF_RX") + (uuid "50990f95-7f5e-4af8-80bf-31b026c9906f") + ) + (pad "3" thru_hole oval + (at 10.16 0) + (size 2.08 3.6) + (drill 1.4) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "PTT_OC") + (uuid "62a1aabd-ec17-4d6e-a097-768c7ba4b4d3") + ) + (pad "4" thru_hole oval + (at 15.24 0) + (size 2.08 3.6) + (drill 1.4) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "5d8bc04f-cab7-4291-b8d7-e161091957ad") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_Phoenix_MSTB.3dshapes/PhoenixContact_MSTBA_2,5_4-G-5,08_1x04_P5.08mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "DIP-16_W7.62mm_Socket" + (layer "F.Cu") + (uuid "1b28e26e-7ef2-44a0-a41d-8c6fb8b545fa") + (at 26.34 105.08) + (descr "16-lead though-hole mounted DIP package, row spacing 7.62mm (300 mils), Socket") + (tags "THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket") + (property "Reference" "SKT_MODEM" + (at -7.62 5.08 0) + (layer "F.SilkS") + (uuid "4cf12e6a-90c8-49ff-935a-4a0cdaa9d450") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "U_MODEM TCM3105" + (at 3.81 20.32 0) + (layer "F.Fab") + (hide yes) + (uuid "1207267a-a5d4-41cb-9d74-317eae65cc83") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "217cc01d-f14d-457a-81d1-89eca8fc25bf") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "dfd17f94-fcdf-4209-9ea0-b0e41233fbe3") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "package/DIP/legacy" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "d812b5b6-670e-41d5-936c-19f2b1d9e1cc") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/9ad5f245-f489-4ddc-bdc6-6a98960702bc") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.16 -1.33) + (end 1.16 19.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "584ed0ba-75b8-4c2f-b3e5-4eea5ff8f8a6") + ) + (fp_line + (start 1.16 19.11) + (end 6.46 19.11) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2cd5f05e-a96b-4199-a078-26856fb28f86") + ) + (fp_line + (start 2.81 -1.33) + (end 1.16 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7124f0e6-945d-461c-b302-ccef449e69a9") + ) + (fp_line + (start 6.46 -1.33) + (end 4.81 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3b143b63-f3ee-44a3-a8ce-f34c63a3a629") + ) + (fp_line + (start 6.46 19.11) + (end 6.46 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "12b88d4a-b495-439e-a0d3-beacddd5b931") + ) + (fp_rect + (start -1.33 -1.39) + (end 8.95 19.17) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "d8636e04-454e-42bf-bdb1-5addebb07936") + ) + (fp_arc + (start 4.81 -1.33) + (mid 3.81 -0.33) + (end 2.81 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "88f67f53-810d-40a1-b24a-28f64700b5f8") + ) + (fp_rect + (start -1.52 -1.58) + (end 9.14 19.36) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "57bcb8c2-79af-4bdb-8627-005024568f4b") + ) + (fp_line + (start 0.635 -0.27) + (end 1.635 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a5829a76-681a-425a-ab18-65353b5deaff") + ) + (fp_line + (start 0.635 19.05) + (end 0.635 -0.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f9c224f0-0594-40b4-89a2-d35f502283cd") + ) + (fp_line + (start 1.635 -1.27) + (end 6.985 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "8990dbaf-d396-44e3-9049-c0b5cabd163b") + ) + (fp_line + (start 6.985 -1.27) + (end 6.985 19.05) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a02c9d23-38fa-40d1-8091-c21db56dbdfc") + ) + (fp_line + (start 6.985 19.05) + (end 0.635 19.05) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "96c9afe4-f3d9-4747-a29d-702f63e998cd") + ) + (fp_rect + (start -1.27 -1.33) + (end 8.89 19.11) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "a64f0bdb-1a4d-4a5f-8ed2-1ed9efb2e174") + ) + (point + (at 8.15 61.97) + (size 1.27) + (layer "F.Fab") + (uuid "3131603f-4e9d-4538-b3b6-8342105bec03") + ) + (pad "1" thru_hole roundrect + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.15625) + (net "+5V_OR") + (uuid "0021f61e-7ab5-4586-912e-8711eb76782a") + ) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_CLK") + (uuid "fdb4eaac-fd18-4064-b20e-275d7271de58") + ) + (pad "3" thru_hole circle + (at 0 5.08) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_CDT") + (uuid "be2539a1-784e-4349-9ce8-8259a707d993") + ) + (pad "4" thru_hole circle + (at 0 7.62) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "RXA") + (uuid "cdd2757e-b906-4c54-a7ab-94672fbab137") + ) + (pad "5" thru_hole circle + (at 0 10.16) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TRS_N") + (uuid "c928f241-fecc-4414-acc8-15f55323d355") + ) + (pad "6" thru_hole circle + (at 0 12.7) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "916fb805-a9dc-4c04-9e87-a87210353d0e") + ) + (pad "7" thru_hole circle + (at 0 15.24) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "CDL") + (uuid "5321a8a5-75ba-4081-8e8c-aaaaa9de3f4f") + ) + (pad "8" thru_hole circle + (at 0 17.78) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_RXD") + (uuid "1f31a09c-90f9-4525-ac5a-97f2967087be") + ) + (pad "9" thru_hole circle + (at 7.62 17.78) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "c881412b-47ed-42d3-8f35-acf23890a589") + ) + (pad "10" thru_hole circle + (at 7.62 15.24) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "CDL") + (uuid "3dcc1522-a93b-4354-b860-5b4bbd086682") + ) + (pad "11" thru_hole circle + (at 7.62 12.7) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TXA") + (uuid "44a4f333-7d7f-441d-b125-4c50efb68774") + ) + (pad "12" thru_hole circle + (at 7.62 10.16) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TXR2_N") + (uuid "239d3283-dfb1-42fe-947c-f593b72a6a1e") + ) + (pad "13" thru_hole circle + (at 7.62 7.62) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TXR1_N") + (uuid "9df1b835-1416-4ddc-b48d-b4d0002488b2") + ) + (pad "14" thru_hole circle + (at 7.62 5.08) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_TXD") + (uuid "40f63c56-aa87-415d-9dd3-dd97530b1a16") + ) + (pad "15" thru_hole circle + (at 7.62 2.54) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "OSC1") + (uuid "29fe8083-3dc2-491a-a373-be52eeb4511c") + ) + (pad "16" thru_hole circle + (at 7.62 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "OSC2") + (uuid "15bf0760-726e-4ea2-83a0-66fd2eb2b13c") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Package_DIP.3dshapes/DIP-16_W7.62mm_Socket.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "BarrelJack_Horizontal" + (layer "F.Cu") + (uuid "23bf70ba-b2d7-4487-92b5-d79391e668dc") + (at 74 19.64 -90) + (descr "DC Barrel Jack") + (tags "Power Jack") + (property "Reference" "J_DC" + (at -8 7.02 0) + (layer "F.SilkS") + (uuid "fb26b2fe-e09d-459a-9edb-826cab3ad975") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "12V CENTRE" + (at -6 9.56 0) + (layer "F.Fab") + (uuid "0edfcb65-96c9-4a93-9bff-3340e0a5e468") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "be8b0f46-1ba8-440f-abc0-0b675f21482b") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "8309a05d-bf22-4235-94a6-f766fa6b43d4") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/244216c5-885a-4b44-a820-3e02bf8c942f") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -13.8 4.6) + (end -13.8 -4.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "923123f9-12b7-4e43-8909-5061dc90d5c6") + ) + (fp_line + (start -5 4.6) + (end -13.8 4.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f3f91167-fc12-429a-b253-fea358275737") + ) + (fp_line + (start 0.9 4.6) + (end -1 4.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6509e6b2-d599-49fb-84a1-9a95b1f27fa4") + ) + (fp_line + (start 0.9 1.9) + (end 0.9 4.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "abb31966-dd4e-4e5b-a0d8-d58bf8edeed0") + ) + (fp_line + (start 1.1 -3.75) + (end 1.1 -4.8) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8d0c9c81-147e-458c-aca2-23f4ae42ccf6") + ) + (fp_line + (start -13.8 -4.6) + (end 0.9 -4.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "44a5a468-6915-4024-97cf-13135785858b") + ) + (fp_line + (start 0.9 -4.6) + (end 0.9 -2) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "80c03f3b-7dc0-47c9-a54d-7407734c66f3") + ) + (fp_line + (start 0.05 -4.8) + (end 1.1 -4.8) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a8f8c17f-3d24-4f6d-a1f1-306fa9a0d1e2") + ) + (fp_line + (start -5 6.75) + (end -5 4.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f94de1ab-5dee-4f2b-a9cc-f91edff46ff9") + ) + (fp_line + (start -1 6.75) + (end -5 6.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "db7ba425-612e-46ce-bebd-10f941dc8dea") + ) + (fp_line + (start -14 4.75) + (end -14 -4.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "0731bd1a-5962-4702-a7f5-c92f39937716") + ) + (fp_line + (start -5 4.75) + (end -14 4.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "3eb677d2-6174-4de9-9186-e9d5b05b3cc7") + ) + (fp_line + (start -1 4.75) + (end -1 6.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "eb5b0a8c-fbe1-4b64-b580-3354b711d363") + ) + (fp_line + (start 1 4.75) + (end -1 4.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "8fbfe805-ec4e-4dfa-a357-05c9397f87bf") + ) + (fp_line + (start 1 2) + (end 1 4.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "de002fa0-f8cc-4c64-a2a3-458fe645c6ef") + ) + (fp_line + (start 2 2) + (end 1 2) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "da68baea-31bd-4bbe-8e18-a0e248df0be8") + ) + (fp_line + (start 1 -2) + (end 2 -2) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "031b447e-facf-4bf4-85f1-e763e91e226b") + ) + (fp_line + (start 2 -2) + (end 2 2) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "2440300f-c901-462c-9e00-53aa48ef28ad") + ) + (fp_line + (start 1 -4.5) + (end 1 -2) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "cae7e7b8-f543-4688-ac68-a4f06a48d355") + ) + (fp_line + (start 1 -4.5) + (end 1 -4.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "220e34df-93c8-4ab2-a7f2-1d5a80b2143a") + ) + (fp_line + (start 1 -4.75) + (end -14 -4.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "42c0e3b7-c9a9-4de9-aeb3-419ccb120eea") + ) + (fp_line + (start -13.7 4.5) + (end 0.8 4.5) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "5eca68a3-9f1c-4bd4-bf4c-71047f937ca2") + ) + (fp_line + (start 0.8 4.5) + (end 0.8 -3.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "127c5e30-5510-4e2b-acec-e9b0ee80188e") + ) + (fp_line + (start -13.7 -4.5) + (end -13.7 4.5) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "536c66f9-b576-4372-abd6-0e0ab73f5af5") + ) + (fp_line + (start -10.2 -4.5) + (end -10.2 4.5) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a6173a94-6c76-4fa8-b421-982963e4e6ee") + ) + (fp_line + (start 0 -4.5) + (end -13.7 -4.5) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a239ba4c-908a-485a-9903-3f73224c8b09") + ) + (fp_line + (start -0.003213 -4.505425) + (end 0.8 -3.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4308ea34-e3ba-4c41-8417-af15387f0bba") + ) + (fp_text user "${REFERENCE}" + (at 4.18 -0.6 0) + (layer "F.Fab") + (uuid "6d729b99-bfff-45e7-be1c-b03e04f6ecb2") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole rect + (at 0 0) + (size 3.5 3.5) + (drill oval 1 3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "VIN_12") + (uuid "8f005d1f-de94-4d27-8b5c-130202d59917") + ) + (pad "2" thru_hole roundrect + (at -6 0) + (size 3 3.5) + (drill oval 1 3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.25) + (net "GND") + (uuid "75084806-c0ae-49d3-b0a2-f8c280558519") + ) + (pad "3" thru_hole roundrect + (at -3 4.7) + (size 3.5 3.5) + (drill oval 3 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.25) + (net "GND") + (uuid "83226179-96af-46ff-ad15-59e238a8ec85") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_BarrelJack.3dshapes/BarrelJack_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "F.Cu") + (uuid "2782e37f-3af2-4b10-8e22-1ebfae268b0d") + (at 153.34 40) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_LED2" + (at 6.5 -2.5 0) + (layer "F.SilkS") + (uuid "dd3ae433-c24b-4689-9563-af7cae9599ec") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "1k" + (at 5.08 2.37 0) + (layer "F.Fab") + (uuid "93c78bdd-1dbe-4641-b498-b6abc9d7b891") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "73ddc093-a73f-4765-9a2c-56ccf2f5be51") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "3ed24982-e6ac-441b-b732-d2fc3485c30e") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "18a9cd90-bef2-4911-9779-7c8b55924b58") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/0f75ec44-2abb-40d3-a64f-e5ca7c9fa1b9") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "19dd657e-4cb4-47e0-87e6-56c027eed6f1") + ) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "99735d18-d16c-447b-b60e-04177890d12e") + ) + (fp_rect + (start 1.81 -1.37) + (end 8.35 1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "8f83b0c8-bf41-4883-816c-137524fa7228") + ) + (fp_rect + (start -1.05 -1.5) + (end 11.21 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "7db904b9-a99d-46cb-b216-b8422d3fcb83") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "7b56b0f5-7331-44ec-9ebd-b36000be4917") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4319d85e-6606-4001-9ecd-9a81a6da71a9") + ) + (fp_rect + (start 1.93 -1.25) + (end 8.23 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "f5b42e0f-d048-487c-bd13-503f7258bd39") + ) + (fp_text user "${REFERENCE}" + (at 5.08 0 0) + (layer "F.Fab") + (uuid "748a8c89-fe79-4aca-874b-db56d5147964") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_PTT_N") + (uuid "b05e50f3-8c38-4a0d-b0fb-16ad173a61d6") + ) + (pad "2" thru_hole circle + (at 10.16 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_PTT_A") + (uuid "ed8d4eba-b1a0-473d-b9ba-0c590eb84c7f") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Potentiometer_Bourns_3296W_Vertical" + (layer "F.Cu") + (uuid "2de43d95-97c9-4545-b6c7-c7c08ba27614") + (at 39.04 155.88) + (descr "Potentiometer, vertical, Bourns 3296W, https://www.bourns.com/pdfs/3296.pdf") + (tags "Potentiometer vertical Bourns 3296W") + (property "Reference" "RV_CDL" + (at 5.08 -4 0) + (layer "F.SilkS") + (uuid "3ce02157-2f9b-4533-9b93-744885605c90") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "50k CDL" + (at -2.54 3.67 0) + (layer "F.Fab") + (uuid "304ff28e-83c2-4369-8514-ed040a109c01") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "c83a292f-946c-4244-a86a-b5d8c41f39e4") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "3810d516-ce01-431e-8fa8-f54b5ea736da") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "potentiometer/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "aafc6320-0313-487c-9145-0adcd5756272") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/a0695033-8338-4b00-9978-d587be688b56") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -7.415 -2.52) + (end 2.335 -2.52) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bc9906a3-df4c-46dd-9a9c-4bece7975aa4") + ) + (fp_line + (start -7.415 2.53) + (end -7.415 -2.52) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "56f11664-8dc8-4b0d-8346-50e89c69e0da") + ) + (fp_line + (start 2.335 -2.52) + (end 2.335 2.53) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "df1e6f67-0c53-4fa8-a6ba-f09a74a33a95") + ) + (fp_line + (start 2.335 2.53) + (end -7.415 2.53) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1110c3b5-5ea1-45cb-bc5c-2b1744493de2") + ) + (fp_rect + (start -7.56 -2.66) + (end 2.48 2.67) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "55f8bfed-0b5e-4e60-b8b8-dca9624d65cf") + ) + (fp_line + (start 1.652 0.32) + (end 0.125 1.847) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "82822a96-8470-4adc-9181-cde22d622285") + ) + (fp_line + (start 1.785 0.453) + (end 0.258 1.98) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "58ca9e16-6b54-4b24-bacd-eb7f514ef885") + ) + (fp_rect + (start -7.305 -2.41) + (end 2.225 2.42) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "d1f5434c-fa58-48d8-ad23-abcbbbac28a4") + ) + (fp_circle + (center 0.955 1.15) + (end 2.05 1.15) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "3cc06a89-0238-449e-9642-516208fe5e23") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "a5920af8-46f4-43d9-a35c-b996acb997f7") + ) + (pad "2" thru_hole circle + (at -2.54 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "CDL") + (uuid "ff5ffb29-3af9-4868-9239-70e42e2fe544") + ) + (pad "3" thru_hole circle + (at -5.08 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "942860fc-eb6b-49c5-a374-122fea6e027e") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Potentiometer_THT.3dshapes/Potentiometer_Bourns_3296W_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "PinHeader_1x04_P2.54mm_Vertical" + (layer "F.Cu") + (uuid "2f7ead32-c086-404b-993d-f296e177c198") + (at 48 22) + (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x04 2.54mm single row") + (property "Reference" "J_USB_PICO" + (at 8.82 1.8 0) + (layer "F.SilkS") + (uuid "b53eaade-29e7-463a-b81b-fed5ae114d1c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "Pico Micro-USB cable" + (at 11.36 4.34 0) + (layer "F.Fab") + (uuid "48606708-8342-46ac-b065-f893f58875dd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "39348b77-27cf-4938-82a8-8c7e29f51e7b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "04e61209-e5a9-4672-bf48-0601af5f4205") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "f5ced6bc-302d-4f6b-9ef4-49e7c65643ca") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/bfd10f5b-fe80-4c5d-bdf2-dd53df57f1ad") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -1.38 -1.38) + (end 0 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b8ba1ac4-fd0d-409c-b252-5d7ab1fd3f79") + ) + (fp_line + (start -1.38 0) + (end -1.38 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b71ffb0b-c67a-4c3c-a76a-5fa31512506f") + ) + (fp_line + (start -1.38 1.27) + (end -1.38 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2d1187be-31c7-402a-8932-0c4cf97d01e3") + ) + (fp_line + (start -1.38 1.27) + (end 1.38 1.27) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fe9ca3aa-0902-4ee4-8c9a-b66961ca2fd7") + ) + (fp_line + (start -1.38 9) + (end 1.38 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "79ec964a-3051-4b6d-9d3b-27d03769a6e4") + ) + (fp_line + (start 1.38 1.27) + (end 1.38 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0e1f68a9-03e4-4f75-b84d-fc3fc567d0ac") + ) + (fp_rect + (start -1.77 -1.77) + (end 1.77 9.39) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "7a52a26b-5416-4ca9-b949-68e9886bbc08") + ) + (fp_line + (start -1.27 -0.635) + (end -0.635 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "35afc235-7131-4404-a4f0-824f454f27c7") + ) + (fp_line + (start -1.27 8.89) + (end -1.27 -0.635) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f50b198f-1178-4b19-8964-24d24ca5a5cf") + ) + (fp_line + (start -0.635 -1.27) + (end 1.27 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d11d0eb5-2d43-4f0c-aef3-c6f3864f5743") + ) + (fp_line + (start 1.27 -1.27) + (end 1.27 8.89) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f2674b77-db66-4117-b3ab-17ef01924a1f") + ) + (fp_line + (start 1.27 8.89) + (end -1.27 8.89) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "9ac40571-e756-49eb-85d7-9637373e441d") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "USB_VBUS_NC") + (uuid "1806c1f4-5ef9-48f2-b638-241bd40da088") + ) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "USB_DM") + (uuid "0cc5a4b7-8fb2-4b39-8677-9891556d8388") + ) + (pad "3" thru_hole circle + (at 0 5.08) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "USB_DP") + (uuid "40ac7af8-19bd-4cac-bfec-46fcc2f8af9f") + ) + (pad "4" thru_hole circle + (at 0 7.62) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "ed8503f2-3ad7-4871-9781-e828b28ec23a") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "PinHeader_2x04_P2.54mm_Vertical" + (layer "F.Cu") + (uuid "36272b1b-b3a4-480f-a9bd-f7015f8ac668") + (at 72 162.23) + (descr "Through hole straight pin header, 2x04, 2.54mm pitch, double rows") + (tags "Through hole pin header THT 2x04 2.54mm double row") + (property "Reference" "U_LVL" + (at 5.5 -3 0) + (layer "F.SilkS") + (uuid "62908e2a-9786-4417-bfcb-00e6857c1b70") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "BSS138" + (at 1.27 10 0) + (layer "F.Fab") + (uuid "3827bbe0-358d-4ade-8976-e48df954d53f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "bee40fe7-dff0-4a7f-8377-1a0e4f4afd07") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "5a161e3a-5543-43af-8b02-480ad2ee9817") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "76788471-ee7c-4621-820f-139dbd7d89fd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/80393265-175c-466f-b3d8-f66752d6d5c0") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -1.38 -1.38) + (end 0 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "168491ef-3d02-42ca-aa42-175c195b8a91") + ) + (fp_line + (start -1.38 0) + (end -1.38 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "626bcb54-1ff3-44f0-b968-70514af76aee") + ) + (fp_line + (start -1.38 1.27) + (end -1.38 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "630d3e26-2baf-42df-828d-a914ddd2388c") + ) + (fp_line + (start -1.38 1.27) + (end 1.27 1.27) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "af980767-d0d7-44d6-9a96-4c42e62f19c6") + ) + (fp_line + (start -1.38 9) + (end 3.92 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "750e837b-ca7c-47ee-9d8e-b059ac80d7bd") + ) + (fp_line + (start 1.27 -1.38) + (end 3.92 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c6599d25-cbd3-4d31-a801-0c52b4979558") + ) + (fp_line + (start 1.27 1.27) + (end 1.27 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b6b95aa6-569f-49d5-b126-66bc3437d8a1") + ) + (fp_line + (start 3.92 -1.38) + (end 3.92 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c58c842d-2ef3-4b47-88f7-8eb981a51094") + ) + (fp_rect + (start -1.77 -1.77) + (end 4.32 9.39) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "9c9547ef-5792-48ab-801e-be9b5f330aae") + ) + (fp_line + (start -1.27 0) + (end 0 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "30d2e32e-ac0c-44bc-8020-d9afe19abc78") + ) + (fp_line + (start -1.27 8.89) + (end -1.27 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1de26506-b535-4faf-89a7-105b14b945dd") + ) + (fp_line + (start 0 -1.27) + (end 3.81 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "41b26418-9b4b-4153-b359-db202d3b189f") + ) + (fp_line + (start 3.81 -1.27) + (end 3.81 8.89) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f3681b54-d302-48d2-a2f0-9649311f911d") + ) + (fp_line + (start 3.81 8.89) + (end -1.27 8.89) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "223f7b2a-7af3-4bc4-b6a0-c4f81bb29b55") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "3V3") + (uuid "cc4db96d-794d-46f0-9382-aa93cae61e1d") + ) + (pad "2" thru_hole circle + (at 2.54 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "74745035-ac1e-451a-85cc-3bec8002d51c") + ) + (pad "3" thru_hole circle + (at 0 2.54) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "I2C_SDA_3V3") + (uuid "19c16ca0-34f9-4a1d-80ba-1e63f75d6e0b") + ) + (pad "4" thru_hole circle + (at 2.54 2.54) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "I2C_SDA_5V") + (uuid "c40ec9eb-410a-4ed2-ba58-563f2589f1da") + ) + (pad "5" thru_hole circle + (at 0 5.08) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "I2C_SCL_3V3") + (uuid "93acaf64-68e5-42a0-b90a-8b27a23c3a58") + ) + (pad "6" thru_hole circle + (at 2.54 5.08) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "I2C_SCL_5V") + (uuid "380eae75-68da-4ae8-8f93-80aef01fba3e") + ) + (pad "7" thru_hole circle + (at 0 7.62) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "505f3a2c-fbfd-4d5f-bc27-fb9462c8413f") + ) + (pad "8" thru_hole circle + (at 2.54 7.62) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "499ec192-ce76-4661-a083-518ea1ac35b6") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_2x04_P2.54mm_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Crystal_HC49-U_Vertical" + (layer "F.Cu") + (uuid "43ece42a-6e0f-4329-b925-5994e8501cd3") + (at 77.34 41.58) + (descr "HC-49/U, Crystal, http://5hertz.com/pdfs/04404_D.pdf") + (property "Reference" "Y1" + (at 2.44 -3.52 0) + (layer "F.SilkS") + (uuid "d40f46c4-55f9-47af-8fe1-0a5ef3fa2968") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "4.4336/6.5536Mhz" + (at 2.44 3.52 0) + (layer "F.Fab") + (uuid "f8a6d8bb-9da7-44fd-9bec-5b6f457c4f6e") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "ce5aa933-e51d-4267-8127-497a4f23663b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "0710c860-443c-4873-a9a7-c6727f2299a5") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "crystal_resonator_oscillator" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "5c91fe80-ee56-42f3-8b70-2a6d193a74f5") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/f7446404-c894-475d-971b-efd7cfdb0a21") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.685 -2.435) + (end 5.565 -2.435) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f45d427c-c820-459c-ac50-f7d5f7d9b213") + ) + (fp_line + (start 5.565 2.435) + (end -0.685 2.435) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d036140d-a58e-4cd6-b6de-c6f43190d036") + ) + (fp_arc + (start -0.685 2.435) + (mid -3.12 0) + (end -0.685 -2.435) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "52fb445a-1d61-400c-9f21-c86b80754332") + ) + (fp_arc + (start 5.565 -2.435) + (mid 8 0) + (end 5.565 2.435) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "88a44e38-37df-4fe2-bda0-775336c02219") + ) + (fp_line + (start -0.68 -2.83) + (end 5.56 -2.83) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f7c261bc-a520-4794-ba6d-f9c1fb543185") + ) + (fp_line + (start 5.56 2.83) + (end -0.68 2.83) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7b704d5b-401f-42e3-89b1-c175ce6b8ce5") + ) + (fp_arc + (start -0.68 2.83) + (mid -3.51 0) + (end -0.68 -2.83) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "1476180f-0440-47d7-8b12-923800d111d7") + ) + (fp_arc + (start 5.56 -2.83) + (mid 8.39 0) + (end 5.56 2.83) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "1d734b96-38a9-434e-9e29-01496b6ef9fe") + ) + (fp_line + (start -0.685 -2.325) + (end 5.565 -2.325) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "aacdead5-e6ed-42f4-9629-f16b7193abca") + ) + (fp_line + (start 5.565 2.325) + (end -0.685 2.325) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "e4a09683-6dc9-44d7-80e9-7543c8b55634") + ) + (fp_arc + (start -0.685 2.325) + (mid -3.01 0) + (end -0.685 -2.325) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d11dfd3f-422d-4614-b985-7c5a8cdf3ff5") + ) + (fp_arc + (start 5.565 -2.325) + (mid 7.89 0) + (end 5.565 2.325) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "fa628da3-4513-4982-9f7f-405f2228fea1") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.5 1.5) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "OSC1") + (uuid "4728dfee-9793-4df9-9671-4efb828cc302") + ) + (pad "2" thru_hole circle + (at 4.88 0) + (size 1.5 1.5) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "OSC2") + (uuid "4f02a7ad-7347-4fd0-a1a0-19c77267dedc") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Crystal.3dshapes/Crystal_HC49-U_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "MountingHole_3.2mm_M3" + (layer "F.Cu") + (uuid "4861d949-8f05-4359-beeb-e89f481771a9") + (at 6.02 173.66) + (descr "Mounting Hole 3.2mm, M3, no annular, generated by kicad-footprint-generator mountinghole.py") + (tags "mountinghole M3") + (property "Reference" "H3" + (at 0 -4.15 0) + (layer "F.SilkS") + (uuid "2ddbd911-d446-4235-84b4-d5452a448242") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "M3" + (at 0 4.15 0) + (layer "F.Fab") + (uuid "7f13bcb7-13af-498d-8b70-98bb16655a22") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "f17d26c1-e137-4e21-9af0-6d95ee293d22") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d960e533-315b-4a2b-bb9b-029b2869b874") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "mounting_hardware/mounting_hole" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "5c980165-820e-442c-b3cd-fba14e402a33") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/ef7f98d5-f7e7-4401-b714-70bcbaba7d32") + (attr exclude_from_pos_files exclude_from_bom) + (duplicate_pad_numbers_are_jumpers no) + (fp_circle + (center 0 0) + (end 3.2 0) + (stroke + (width 0.15) + (type solid) + ) + (fill no) + (layer "Cmts.User") + (uuid "9b64e327-391a-4317-9558-c7986922484d") + ) + (fp_circle + (center 0 0) + (end 3.45 0) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "76789dc1-1476-44b7-8beb-37794640d8b0") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "8882cc27-34a5-42bc-a585-724be8e11165") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at 0 0) + (size 3.2 3.2) + (drill 3.2) + (layers "*.Cu" "*.Mask") + (uuid "d56e0d48-d25f-4428-9e9e-0c73925f224c") + ) + (embedded_fonts no) + ) + (footprint "C_Disc_D5.0mm_W2.5mm_P5.00mm" + (layer "F.Cu") + (uuid "4957d385-3e58-4242-b9fc-78c95f6210ce") + (at 22 76) + (descr "C, Disc series, Radial, pin pitch=5.00mm, diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf") + (tags "C Disc series Radial pin pitch 5.00mm diameter 5mm width 2.5mm Capacitor") + (property "Reference" "C_BYP1" + (at 2 -2.5 0) + (layer "F.SilkS") + (uuid "ec7ef278-b769-401b-8950-fc285e501e68") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "100nF" + (at 2.5 2.5 0) + (layer "F.Fab") + (uuid "7ab1281c-1182-44d1-838b-500c3731c75b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "05f11898-c1ce-49a9-93b2-fd6d2b54898b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "ec758453-a0fc-411c-a069-463e569fe2c2") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "73428f5a-0eda-4105-94c6-73a77127817a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/56506d1f-1d42-4cdc-99dc-50f3c39926df") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.12 -1.37) + (end 5.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "91750fdd-02c5-4a7a-be57-06a198d04370") + ) + (fp_line + (start -0.12 -1.033) + (end -0.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c6773bad-3429-4a2b-9128-6fee62495768") + ) + (fp_line + (start -0.12 1.37) + (end -0.12 1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "55dea602-e19c-4100-ae67-f70b259a26cf") + ) + (fp_line + (start 5.12 -1.37) + (end 5.12 -1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "29b64377-3f39-4d76-92c6-003f6c50c075") + ) + (fp_line + (start 5.12 1.033) + (end 5.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "28ebc6c4-f826-4710-9600-c4223df5af53") + ) + (fp_line + (start 5.12 1.37) + (end -0.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0b500ed5-7469-4711-993f-2dfeb9aba398") + ) + (fp_rect + (start -1.05 -1.5) + (end 6.05 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "dad71e44-1c67-43ac-bcf3-8139fade4b0a") + ) + (fp_rect + (start 0 -1.25) + (end 5 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "b2926772-d5cd-4823-95c3-6947dc60de33") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "8d8b61f0-7c3b-4d64-afc3-27b8f7cd0497") + ) + (pad "2" thru_hole circle + (at 5 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "6d8e899b-427c-4738-9c45-fdf25c0e4fb0") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/C_Disc_D5.0mm_W2.5mm_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "LED_D3.0mm" + (layer "F.Cu") + (uuid "518148b8-520c-45f9-914a-94a156d2423d") + (at 173.66 64 90) + (descr "LED, diameter 3.0mm, 2 pins, generated by kicad-footprint-generator") + (tags "LED") + (property "Reference" "LED_TXRX" + (at 4.64 0 0) + (layer "F.SilkS") + (uuid "13a933a5-2fce-45b9-81ff-4f515de56952") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "TXRX" + (at -0.44 -5.08 0) + (layer "F.Fab") + (uuid "c3bfbcdf-e579-4cdb-8c3e-eac5e1b8fef5") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "3f80a0e2-a01d-48c1-9c68-149a5b6a70f8") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "eddd243a-58bd-4ae0-9f51-646d95126131") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "LED/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "e965cff5-3663-4651-a48a-8f4613859fee") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/f3677291-6b26-457b-a4a6-1dfb209611eb") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.29 -1.236) + (end -0.29 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3529ee22-5858-4be9-a842-28bbf46b9fd5") + ) + (fp_line + (start -0.29 1.08) + (end -0.29 1.236) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9eba7473-5322-42c4-8e58-99bf9aef6e4f") + ) + (fp_arc + (start -0.29 -1.235516) + (mid 1.36566 -1.987699) + (end 2.941437 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c059e021-6f50-49e2-b2ba-54f2c436e5c2") + ) + (fp_arc + (start 0.229039 -1.08) + (mid 1.27 -1.5) + (end 2.310961 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1b98afda-f06c-4c67-a6cb-8524f309f505") + ) + (fp_arc + (start 2.941437 1.08) + (mid 1.36566 1.987699) + (end -0.29 1.235516) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e64685a1-113c-4f48-8402-fe31b00ca7ab") + ) + (fp_arc + (start 2.310961 1.08) + (mid 1.27 1.5) + (end 0.229039 1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ba899efb-d9c9-4b24-93f7-18fd663867fd") + ) + (fp_rect + (start -1.15 -2.21) + (end 3.69 2.21) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "db3a5378-fcbc-46bd-a7cb-ea587a5266c0") + ) + (fp_line + (start -0.23 -1.16619) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d95eb2c5-25ab-4509-8639-b6436b53ee51") + ) + (fp_arc + (start -0.23 -1.16619) + (mid 3.17 0) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f6888107-a9f5-4b84-a165-ce28fc2bb623") + ) + (fp_circle + (center 1.27 0) + (end 2.77 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "856a44bf-0abc-4644-96c0-bcbaa92d46c2") + ) + (point + (at -3.07 0) + (size 2) + (layer "F.Fab") + (uuid "5e83bab0-da02-4a9c-b9a4-5c3510a7f20b") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "eaab35de-b448-43ef-a142-a27defb9a05d") + ) + (pad "2" thru_hole circle + (at 2.54 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_TXRX_A") + (uuid "b6927b42-a203-4dcb-a345-3e8246d1e3e2") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/LED_THT.3dshapes/LED_D3.0mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "CP_Radial_D8.0mm_P3.50mm" + (layer "F.Cu") + (uuid "55bcfb88-67c8-491a-8a3c-2d04747473d9") + (at 130.48 155.88) + (descr "CP, Radial series, Radial, pin pitch=3.50mm, diameter=8mm, height=12mm, Electrolytic Capacitor") + (tags "CP Radial series Radial pin pitch 3.50mm diameter 8mm height 12mm Electrolytic Capacitor") + (property "Reference" "C_BULK" + (at 1 -5.25 0) + (layer "F.SilkS") + (uuid "0507aeb5-9138-426c-9cb6-ef70952dcf3e") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "100uF" + (at 1.75 5.25 0) + (layer "F.Fab") + (uuid "2ef15de1-3418-4864-bb43-6d59b23f8e23") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "b48f9ca4-8811-4f4c-9005-e48296a7ec76") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "e6f73264-a43d-44b0-b654-db244b9cd205") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "ed5c1847-31fc-43f8-b0fa-444967e1055f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/4efc7277-4b54-413d-8c2d-7c73cc4cd3dc") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -2.659698 -2.315) + (end -1.859698 -2.315) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "05462dfb-ac1f-4cce-83d1-5fc785782b12") + ) + (fp_line + (start -2.259698 -2.715) + (end -2.259698 -1.915) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ad013f57-7463-456e-b2cd-6bb37ad92090") + ) + (fp_line + (start 1.75 -4.08) + (end 1.75 4.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "957b875d-8d3a-43bb-82af-e295d58f0b6f") + ) + (fp_line + (start 1.79 -4.08) + (end 1.79 4.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "15599e59-0426-450f-8051-acfe6be527a2") + ) + (fp_line + (start 1.83 -4.079) + (end 1.83 4.079) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dafdc882-7fb0-4a98-9ccb-6fc5ae9b49de") + ) + (fp_line + (start 1.87 -4.078) + (end 1.87 4.078) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f71b550f-fc75-4a8d-8ecc-27f49f7697d3") + ) + (fp_line + (start 1.91 -4.077) + (end 1.91 4.077) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "787b3255-c650-47d5-be79-dc8dd856f318") + ) + (fp_line + (start 1.95 -4.075) + (end 1.95 4.075) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e39967d1-446f-42f1-a9aa-eda4faec2a0b") + ) + (fp_line + (start 1.99 -4.073) + (end 1.99 4.073) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9c282570-d5fe-4e3e-8086-f93c1de72ba0") + ) + (fp_line + (start 2.03 -4.07) + (end 2.03 4.07) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "294f958a-d0dc-4609-a82b-b3e64db0afef") + ) + (fp_line + (start 2.07 -4.068) + (end 2.07 4.068) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d03a265e-dfcb-4d6b-8530-d1d6c0272e3d") + ) + (fp_line + (start 2.11 -4.064) + (end 2.11 4.064) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d633d450-50f2-4f80-a896-7f62f7704b62") + ) + (fp_line + (start 2.15 -4.061) + (end 2.15 4.061) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b5693a66-95d9-42a3-afff-e07f991e7296") + ) + (fp_line + (start 2.19 -4.056) + (end 2.19 4.056) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4fc37fb0-0fd7-4049-894b-5e60d87b35c4") + ) + (fp_line + (start 2.23 -4.052) + (end 2.23 4.052) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5a7d0e2d-aafd-45cb-8b52-78ddf3095a7f") + ) + (fp_line + (start 2.27 -4.047) + (end 2.27 4.047) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d02d99c7-751d-4c66-a153-b0860a955831") + ) + (fp_line + (start 2.31 -4.042) + (end 2.31 4.042) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fc7df4fb-ae4b-4229-ba5e-c00a35db41db") + ) + (fp_line + (start 2.35 -4.036) + (end 2.35 4.036) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e45964fd-ad09-4eb7-b245-4c9e93d35072") + ) + (fp_line + (start 2.39 -4.03) + (end 2.39 4.03) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2820aa07-85ca-4246-b665-8b621ab3af61") + ) + (fp_line + (start 2.43 -4.023) + (end 2.43 4.023) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "78df0ba0-115d-4217-a367-24dc0232573d") + ) + (fp_line + (start 2.47 -4.017) + (end 2.47 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9522256d-f17d-4f11-b199-3ca1338fa31d") + ) + (fp_line + (start 2.47 1.04) + (end 2.47 4.017) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c81d447c-52ee-4ac6-a6a9-ed1c4c4e1bb1") + ) + (fp_line + (start 2.51 -4.009) + (end 2.51 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e198575b-3e1f-4db0-9367-bd8a7bc04584") + ) + (fp_line + (start 2.51 1.04) + (end 2.51 4.009) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8bebf5c3-b808-4f6c-9832-100f87f2b06c") + ) + (fp_line + (start 2.55 -4.002) + (end 2.55 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "56d46dbc-12af-4681-b4fc-c046d85dd159") + ) + (fp_line + (start 2.55 1.04) + (end 2.55 4.002) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a2a110ba-e806-4c41-8181-774712f490db") + ) + (fp_line + (start 2.59 -3.993) + (end 2.59 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2fd914f7-afd4-482f-ad8b-ae03304fbca6") + ) + (fp_line + (start 2.59 1.04) + (end 2.59 3.993) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "22297077-086c-4205-8259-47ec0d5375be") + ) + (fp_line + (start 2.63 -3.985) + (end 2.63 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7d21c02f-860a-4456-8a9e-fee45d1a803d") + ) + (fp_line + (start 2.63 1.04) + (end 2.63 3.985) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "06a94153-1db1-44fa-a185-0f7474cf4e05") + ) + (fp_line + (start 2.67 -3.976) + (end 2.67 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4620666d-438d-442a-9a98-a960a0931ad5") + ) + (fp_line + (start 2.67 1.04) + (end 2.67 3.976) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b6931990-a7cb-400f-9493-c8572e883aba") + ) + (fp_line + (start 2.71 -3.967) + (end 2.71 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "83916cfc-a34f-4e1f-bffc-9ec747400915") + ) + (fp_line + (start 2.71 1.04) + (end 2.71 3.967) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3e801f12-7591-4fb8-9654-b2d86124b95e") + ) + (fp_line + (start 2.75 -3.957) + (end 2.75 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d15d9027-aac6-4f85-af6c-f21f2aa6f94b") + ) + (fp_line + (start 2.75 1.04) + (end 2.75 3.957) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "110c2286-ce92-49ea-8e26-ad7d114e1a7d") + ) + (fp_line + (start 2.79 -3.947) + (end 2.79 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e9273049-9460-496b-ba7f-11fff3682155") + ) + (fp_line + (start 2.79 1.04) + (end 2.79 3.947) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "444fb448-6409-4053-93c5-aad1d85b7350") + ) + (fp_line + (start 2.83 -3.936) + (end 2.83 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fe7cc2e9-4c8e-4ba3-895a-753e38fa0f62") + ) + (fp_line + (start 2.83 1.04) + (end 2.83 3.936) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d111ca52-db86-47d9-ba0d-730d137683d0") + ) + (fp_line + (start 2.87 -3.925) + (end 2.87 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "87019cf2-0b03-4504-a965-82865eda8287") + ) + (fp_line + (start 2.87 1.04) + (end 2.87 3.925) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5b568fc1-c085-4288-9cd2-33fff3c21c44") + ) + (fp_line + (start 2.91 -3.913) + (end 2.91 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4634a90e-c89a-476f-ac50-a7f747769206") + ) + (fp_line + (start 2.91 1.04) + (end 2.91 3.913) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6f60b1fb-e4b8-421a-941f-b7360b07b94c") + ) + (fp_line + (start 2.95 -3.901) + (end 2.95 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8207f62c-9bb0-4614-a0d5-e7ca01c36bdc") + ) + (fp_line + (start 2.95 1.04) + (end 2.95 3.901) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b9c43a22-c699-454e-b4d9-5fe55c038f74") + ) + (fp_line + (start 2.99 -3.889) + (end 2.99 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "18d2a068-5425-42a3-8a6d-a22ccfdd2149") + ) + (fp_line + (start 2.99 1.04) + (end 2.99 3.889) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c57bc0ea-81b2-4ebb-a478-51dc9176255b") + ) + (fp_line + (start 3.03 -3.876) + (end 3.03 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fcf13a28-e9b2-4ed8-ba5e-16595ab44125") + ) + (fp_line + (start 3.03 1.04) + (end 3.03 3.876) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "efe308d9-3714-4787-a1e0-97af92e43462") + ) + (fp_line + (start 3.07 -3.863) + (end 3.07 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e8e298ea-356e-48e5-8bdc-3cd04ff04190") + ) + (fp_line + (start 3.07 1.04) + (end 3.07 3.863) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9c0a5fde-b537-4ca9-b410-fc5794a629d0") + ) + (fp_line + (start 3.11 -3.849) + (end 3.11 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8fc38f41-da5f-491c-9e15-e0f187e81495") + ) + (fp_line + (start 3.11 1.04) + (end 3.11 3.849) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dfc995f6-3c01-468f-9027-68a19277cf14") + ) + (fp_line + (start 3.15 -3.835) + (end 3.15 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b3abc1a3-e97d-429c-8ab2-2b81f56c637a") + ) + (fp_line + (start 3.15 1.04) + (end 3.15 3.835) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c15784f5-d2e3-4868-9888-6395642df5a5") + ) + (fp_line + (start 3.19 -3.82) + (end 3.19 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e1eb7416-32c7-494c-90cd-b85f12e713af") + ) + (fp_line + (start 3.19 1.04) + (end 3.19 3.82) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d94c870b-8a01-4e57-a374-7892f57730cb") + ) + (fp_line + (start 3.23 -3.805) + (end 3.23 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "30d34fca-2700-47c5-853d-1ed960bc8985") + ) + (fp_line + (start 3.23 1.04) + (end 3.23 3.805) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6688b301-97bd-4341-b544-452adfadaf02") + ) + (fp_line + (start 3.27 -3.789) + (end 3.27 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "12fb24b7-a9f4-43b2-9b92-9e661c1dcd0e") + ) + (fp_line + (start 3.27 1.04) + (end 3.27 3.789) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "26d3e16f-4ffd-4e29-b137-9c2dec53200a") + ) + (fp_line + (start 3.31 -3.773) + (end 3.31 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2f71aa7d-f9c2-491c-bbf1-20d80136a840") + ) + (fp_line + (start 3.31 1.04) + (end 3.31 3.773) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8dd941ef-b4ee-45de-adbd-0939662979d8") + ) + (fp_line + (start 3.35 -3.757) + (end 3.35 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4401b1c2-377e-4e68-8c0a-e34ba567c812") + ) + (fp_line + (start 3.35 1.04) + (end 3.35 3.757) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1cb09035-149e-460d-b587-1b896831711b") + ) + (fp_line + (start 3.39 -3.74) + (end 3.39 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a80a13b4-a9c3-451d-99bf-1f2024b6b02b") + ) + (fp_line + (start 3.39 1.04) + (end 3.39 3.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c6a16534-458f-4eab-873d-62c8635ea16a") + ) + (fp_line + (start 3.43 -3.722) + (end 3.43 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a71e94eb-3b4c-46cb-acda-51f7b2cd595a") + ) + (fp_line + (start 3.43 1.04) + (end 3.43 3.722) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7ec345f9-4b98-4f90-b6fe-6d7f979f6ec3") + ) + (fp_line + (start 3.47 -3.704) + (end 3.47 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6683857e-6778-404a-89c0-c3e17cac7041") + ) + (fp_line + (start 3.47 1.04) + (end 3.47 3.704) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4770f7d6-4f47-4ec8-91bc-0dd659ff3e40") + ) + (fp_line + (start 3.51 -3.685) + (end 3.51 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "09469f7f-e490-40e6-b173-40742cd1ad9f") + ) + (fp_line + (start 3.51 1.04) + (end 3.51 3.685) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "61155785-9eec-4f6f-9381-186e16a323d3") + ) + (fp_line + (start 3.55 -3.666) + (end 3.55 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4200e2ed-4bcd-44b6-9029-2437ba86318b") + ) + (fp_line + (start 3.55 1.04) + (end 3.55 3.666) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2b9df9b0-c599-4eae-bd17-1b3edf492fff") + ) + (fp_line + (start 3.59 -3.646) + (end 3.59 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4013c7e1-a746-46f9-8235-71a8b6bf710e") + ) + (fp_line + (start 3.59 1.04) + (end 3.59 3.646) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7274afbf-c5a7-4958-97c4-078ff03a3307") + ) + (fp_line + (start 3.63 -3.626) + (end 3.63 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f06e5220-e91d-4911-9e8f-9311c26301e4") + ) + (fp_line + (start 3.63 1.04) + (end 3.63 3.626) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "260e29b8-f0be-41b1-ab29-6ae8bbf23167") + ) + (fp_line + (start 3.67 -3.605) + (end 3.67 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1324abca-d458-4904-8150-d30bf688eb14") + ) + (fp_line + (start 3.67 1.04) + (end 3.67 3.605) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "12b5e961-36ff-43f7-9a85-f2428e4b360a") + ) + (fp_line + (start 3.71 -3.584) + (end 3.71 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "909da490-deda-476a-b4cd-5415be6bec2d") + ) + (fp_line + (start 3.71 1.04) + (end 3.71 3.584) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e90ac864-cfd7-4ee4-96f5-0dac1f1dda14") + ) + (fp_line + (start 3.75 -3.562) + (end 3.75 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "37bfc010-57f6-4961-b31f-06c9d6fee59f") + ) + (fp_line + (start 3.75 1.04) + (end 3.75 3.562) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2564be7f-2077-4d99-881e-d476dbc4e155") + ) + (fp_line + (start 3.79 -3.539) + (end 3.79 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f3d4b2fa-a16d-4b00-b75a-27d60a100c12") + ) + (fp_line + (start 3.79 1.04) + (end 3.79 3.539) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "cb2d3fa3-815c-4b99-a9ff-dc494b1c6e8a") + ) + (fp_line + (start 3.83 -3.516) + (end 3.83 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "32e80681-c739-42fc-a0ee-4ee1c9b7b2ef") + ) + (fp_line + (start 3.83 1.04) + (end 3.83 3.516) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "69075dc6-d704-4da0-84e3-653774cebdcc") + ) + (fp_line + (start 3.87 -3.493) + (end 3.87 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9e358789-9ef3-4458-a189-8d411b4306e5") + ) + (fp_line + (start 3.87 1.04) + (end 3.87 3.493) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ad7534c6-508f-4984-abe8-a1a515d6fd99") + ) + (fp_line + (start 3.91 -3.468) + (end 3.91 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8d0e78f2-1eae-4651-8e79-59a6e1632f3c") + ) + (fp_line + (start 3.91 1.04) + (end 3.91 3.468) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "edc26105-3e2a-48e2-ae96-03740720dd74") + ) + (fp_line + (start 3.95 -3.443) + (end 3.95 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a2b2b266-885d-4d22-9f74-9ff4e62419df") + ) + (fp_line + (start 3.95 1.04) + (end 3.95 3.443) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5f7a6484-3905-4b02-a3a1-5a7393f98e87") + ) + (fp_line + (start 3.99 -3.418) + (end 3.99 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "82cf5b53-1937-4e8d-b2a7-f0f82f756e4a") + ) + (fp_line + (start 3.99 1.04) + (end 3.99 3.418) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0eea9ffe-626b-4776-9b66-02d5691d552e") + ) + (fp_line + (start 4.03 -3.392) + (end 4.03 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "95f12468-8e39-45a7-ad7b-150b2ef3fa88") + ) + (fp_line + (start 4.03 1.04) + (end 4.03 3.392) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dea3b343-8b17-4c21-8f72-d768d6a2ed15") + ) + (fp_line + (start 4.07 -3.365) + (end 4.07 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "80b170fa-a852-448d-b5eb-07b38e838882") + ) + (fp_line + (start 4.07 1.04) + (end 4.07 3.365) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a9397ea3-5a87-4c06-84ca-45adae9472d6") + ) + (fp_line + (start 4.11 -3.337) + (end 4.11 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0d32df4f-e329-440b-b33b-d452023153e1") + ) + (fp_line + (start 4.11 1.04) + (end 4.11 3.337) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6bb5894d-9331-48e5-94f6-0158c21030d1") + ) + (fp_line + (start 4.15 -3.309) + (end 4.15 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6c4e9e15-664a-439b-8def-273c9af587e6") + ) + (fp_line + (start 4.15 1.04) + (end 4.15 3.309) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a856aea5-7e5b-4d9a-834a-d38b42f243c1") + ) + (fp_line + (start 4.19 -3.28) + (end 4.19 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fcf8099c-0ed7-46c4-96f1-4f747f26fc1e") + ) + (fp_line + (start 4.19 1.04) + (end 4.19 3.28) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2803fb3b-25c4-4a5f-9f38-df4827500db3") + ) + (fp_line + (start 4.23 -3.25) + (end 4.23 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4d23f094-d237-44bc-8b41-0c8c3299e60c") + ) + (fp_line + (start 4.23 1.04) + (end 4.23 3.25) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bda5b95e-558f-47c1-abb9-ceae4590c6c8") + ) + (fp_line + (start 4.27 -3.219) + (end 4.27 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "56987b77-5560-42c1-b19c-535450abea25") + ) + (fp_line + (start 4.27 1.04) + (end 4.27 3.219) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9a455f21-f430-4d6b-a38b-476ac9368632") + ) + (fp_line + (start 4.31 -3.188) + (end 4.31 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7d8aca97-7ea3-4357-bef9-f86435cf7a04") + ) + (fp_line + (start 4.31 1.04) + (end 4.31 3.188) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "37992425-d778-4110-8b5c-6bec6034173a") + ) + (fp_line + (start 4.35 -3.156) + (end 4.35 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "aa42ef7e-23cf-4d29-b662-a408d54640aa") + ) + (fp_line + (start 4.35 1.04) + (end 4.35 3.156) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "07ebb8a0-c8d1-46b5-8b30-36a2ff49a38b") + ) + (fp_line + (start 4.39 -3.123) + (end 4.39 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0b2dd2ce-279c-4840-b29e-cd3f8b2c1a25") + ) + (fp_line + (start 4.39 1.04) + (end 4.39 3.123) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "cf10818a-2bf7-4466-a971-6c3d4f66599f") + ) + (fp_line + (start 4.43 -3.089) + (end 4.43 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "273a39ad-22c3-43e8-9eff-40c7e2e7c8ea") + ) + (fp_line + (start 4.43 1.04) + (end 4.43 3.089) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b042ba92-39ec-4c1c-a274-7f7e6ecbe0cc") + ) + (fp_line + (start 4.47 -3.055) + (end 4.47 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4f4b12f2-cf17-40e1-8199-ff76089b9e57") + ) + (fp_line + (start 4.47 1.04) + (end 4.47 3.055) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5f94b36f-17de-47d1-82f3-5b24fadd7c4b") + ) + (fp_line + (start 4.51 -3.019) + (end 4.51 -1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1e4f7274-0dbc-4fc2-8d54-c9930bba00bf") + ) + (fp_line + (start 4.51 1.04) + (end 4.51 3.019) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "51e21a7e-6319-432c-9f94-f8de73c9d43f") + ) + (fp_line + (start 4.55 -2.982) + (end 4.55 2.982) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d9dea75c-f6f5-4c98-9d0e-f6084961d4c3") + ) + (fp_line + (start 4.59 -2.945) + (end 4.59 2.945) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "30c837d8-cc70-49f0-87e4-236421887876") + ) + (fp_line + (start 4.63 -2.906) + (end 4.63 2.906) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ef0e6112-10e6-4889-b89c-ba7e6ba4bba3") + ) + (fp_line + (start 4.67 -2.867) + (end 4.67 2.867) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1df1393a-6865-441a-9b53-1fd171032154") + ) + (fp_line + (start 4.71 -2.826) + (end 4.71 2.826) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "02a6f4d3-6428-4732-84ef-6d822835a0ff") + ) + (fp_line + (start 4.75 -2.784) + (end 4.75 2.784) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "db050a38-f295-45d4-98d7-676b12d6d5c0") + ) + (fp_line + (start 4.79 -2.741) + (end 4.79 2.741) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0ec12279-f39a-4f06-8880-ba4be8c3dfaa") + ) + (fp_line + (start 4.83 -2.696) + (end 4.83 2.696) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "834247bb-d37f-40af-883e-19c8a9267173") + ) + (fp_line + (start 4.87 -2.651) + (end 4.87 2.651) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7e6205f3-e718-4f49-84e9-53eb171b0e09") + ) + (fp_line + (start 4.91 -2.604) + (end 4.91 2.604) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1fdccc44-089a-45de-be39-27c3dc4863e0") + ) + (fp_line + (start 4.95 -2.555) + (end 4.95 2.555) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "edac842c-6022-46fd-84dc-20a150a96dd9") + ) + (fp_line + (start 4.99 -2.505) + (end 4.99 2.505) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "14510e03-071b-486c-9a9b-9e1f77599920") + ) + (fp_line + (start 5.03 -2.453) + (end 5.03 2.453) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "df94de7e-064c-4843-a92f-c0d7c02e577a") + ) + (fp_line + (start 5.07 -2.4) + (end 5.07 2.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "31a8d241-2b66-4b96-829c-74c646fd62d8") + ) + (fp_line + (start 5.11 -2.344) + (end 5.11 2.344) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5cb21b70-84a6-42bd-b6c0-eb9d8b1ae54f") + ) + (fp_line + (start 5.15 -2.287) + (end 5.15 2.287) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b8f5ae27-ef8c-455d-9e6f-6d2867bf0999") + ) + (fp_line + (start 5.19 -2.227) + (end 5.19 2.227) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fe27ed31-5045-4f55-b942-40fba023382d") + ) + (fp_line + (start 5.23 -2.165) + (end 5.23 2.165) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a4f981e8-848d-4036-be8d-d01248658c04") + ) + (fp_line + (start 5.27 -2.101) + (end 5.27 2.101) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1522e358-e271-4fcb-986e-c595fd3e40bc") + ) + (fp_line + (start 5.31 -2.034) + (end 5.31 2.034) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6b1eeb68-c21b-43f2-b8a0-4d52af1f8b90") + ) + (fp_line + (start 5.35 -1.964) + (end 5.35 1.964) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "426f55a2-fb53-474e-845f-443cbfddabae") + ) + (fp_line + (start 5.39 -1.89) + (end 5.39 1.89) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c420665e-a655-4ca2-b580-e8c45e9f475d") + ) + (fp_line + (start 5.43 -1.813) + (end 5.43 1.813) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "60a76c00-eaa5-487c-ae3c-8e11af7b7bb7") + ) + (fp_line + (start 5.47 -1.731) + (end 5.47 1.731) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "528ddff0-4978-4db8-acaa-9b87a350e58e") + ) + (fp_line + (start 5.51 -1.644) + (end 5.51 1.644) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ca35171f-8d07-4da8-b507-5d5211fff353") + ) + (fp_line + (start 5.55 -1.552) + (end 5.55 1.552) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "122a5072-b264-4234-b521-16001da676a0") + ) + (fp_line + (start 5.59 -1.453) + (end 5.59 1.453) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5a987b5e-bbac-4241-9788-193ce9d6b8a9") + ) + (fp_line + (start 5.63 -1.346) + (end 5.63 1.346) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f4c91351-53dc-4a29-8da2-cb419e38b7b0") + ) + (fp_line + (start 5.67 -1.228) + (end 5.67 1.228) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e14fa92b-de9e-4aa2-a51c-0fc94328bece") + ) + (fp_line + (start 5.71 -1.097) + (end 5.71 1.097) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "27d72987-9a21-4a70-bfc7-5f7418efe2bb") + ) + (fp_line + (start 5.75 -0.947) + (end 5.75 0.947) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "15bc9d1e-8ae4-47f9-8a11-0d4c31bbe27b") + ) + (fp_line + (start 5.79 -0.768) + (end 5.79 0.768) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7effed9d-9319-4d71-a1e2-aed006314e3f") + ) + (fp_line + (start 5.83 -0.533) + (end 5.83 0.533) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8b02218a-af8a-4d9e-a639-3304260a2f5e") + ) + (fp_circle + (center 1.75 0) + (end 5.87 0) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "def7a5ac-0ea4-4d39-8265-79c74a991a0d") + ) + (fp_circle + (center 1.75 0) + (end 6 0) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "f901a1c5-9c78-45d5-958c-955d5ca659a7") + ) + (fp_line + (start -1.676759 -1.7475) + (end -0.876759 -1.7475) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "0404bdd3-212c-4870-8591-8a1a0a98df22") + ) + (fp_line + (start -1.276759 -2.1475) + (end -1.276759 -1.3475) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "827fe434-0cc8-4ac4-9cf6-332405ef7e82") + ) + (fp_circle + (center 1.75 0) + (end 5.75 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "8f87dce2-fe8f-42cf-a254-90979dba37a8") + ) + (pad "1" thru_hole roundrect + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.15625) + (net "+5V_OR") + (uuid "27567d27-9758-4d47-8181-403a6f95cc1e") + ) + (pad "2" thru_hole circle + (at 3.5 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "5f08729b-c49a-4ce4-92eb-f75693df9138") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/CP_Radial_D8.0mm_P3.50mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "F.Cu") + (uuid "57a91605-6b54-426c-be24-f9c44ef58258") + (at 153.34 28) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_LED1" + (at 6.5 -4.2 0) + (layer "F.SilkS") + (uuid "b41c8594-3016-4876-a082-900907e63471") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "1k" + (at 5.08 2.37 0) + (layer "F.Fab") + (uuid "45272f6a-73d4-4464-9b7e-baee2897729c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "84a6f1dc-03a7-41b3-8392-5f32403adaf7") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "f4671f9b-dcec-491a-9813-2df8e350c5b6") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "101cceb9-ca91-4a29-bb70-dc8310afb11c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/5ff90fa0-0a4a-47cd-a535-c85de2f3b582") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "72f4c1c4-5371-4e8f-9a1e-706d1b19379e") + ) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a80172b4-1019-4916-b876-7dbb9eb9ed92") + ) + (fp_rect + (start 1.81 -1.37) + (end 8.35 1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "71792257-f683-459b-995a-72d1b3d0301a") + ) + (fp_rect + (start -1.05 -1.5) + (end 11.21 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "0e6680e6-2d58-4c90-8703-786aa0ccd6ed") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "5817029f-6d37-4a3c-81a9-046ecbfab9d9") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4cb39c7a-e5d1-4365-8689-33eb25731345") + ) + (fp_rect + (start 1.93 -1.25) + (end 8.23 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "c5d14871-db3f-4f22-b33c-0c982a1eb862") + ) + (fp_text user "${REFERENCE}" + (at 5.08 0 0) + (layer "F.Fab") + (uuid "093751d8-450b-426c-a10b-f62f20aa3d5c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "f37dea81-380c-4764-9df5-04dde6cb4d2f") + ) + (pad "2" thru_hole circle + (at 10.16 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_PWR_A") + (uuid "4cba8950-52db-4424-94f4-ad5a4594f93a") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "PinHeader_1x03_P2.54mm_Vertical" + (layer "F.Cu") + (uuid "5b31a5cb-8288-438b-9c07-6a6f84c3cca8") + (at 127.94 41.58) + (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x03 2.54mm single row") + (property "Reference" "U_REG" + (at 0 -2.54 0) + (layer "F.SilkS") + (uuid "5474ada0-ae61-44a5-9a7e-97d52efc79a3") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "Mini560-5V" + (at 0 7.46 0) + (layer "F.Fab") + (uuid "069388cd-f1c7-4195-8137-25120b23a502") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "8a3ea2b4-c04f-4843-bace-e7997f682784") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "2d2b27c4-632c-407e-858f-ecf849b6ee26") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "bde3c99e-29d3-477a-babd-dfbd13ce5299") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/08c1111c-1cbf-4a43-a71c-0225e3477843") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -1.38 -1.38) + (end 0 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0c994faa-635c-49d6-8fbb-93a7006d0032") + ) + (fp_line + (start -1.38 0) + (end -1.38 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bb515de4-c3d9-4b13-917f-e3a52e44acaa") + ) + (fp_line + (start -1.38 1.27) + (end -1.38 6.46) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ecdde867-e35f-4124-8908-9afa1a5a0050") + ) + (fp_line + (start -1.38 1.27) + (end 1.38 1.27) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7323dc39-d48d-46bc-b5b5-4317e379e7be") + ) + (fp_line + (start -1.38 6.46) + (end 1.38 6.46) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bac163b9-b01a-4089-a966-ce2126b358cb") + ) + (fp_line + (start 1.38 1.27) + (end 1.38 6.46) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "492dad7d-4982-4a89-bd0d-4d7e83bcac8c") + ) + (fp_rect + (start -1.77 -1.77) + (end 1.77 6.85) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "a4dad6d1-a907-4424-b5b1-94c93abf4a6c") + ) + (fp_line + (start -1.27 -0.635) + (end -0.635 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a5e86994-7c16-4f3e-958a-636d375ed483") + ) + (fp_line + (start -1.27 6.35) + (end -1.27 -0.635) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d9c8c9cf-3a75-41b6-b582-7c852dc0d137") + ) + (fp_line + (start -0.635 -1.27) + (end 1.27 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "ee23713a-5450-421e-a894-acd4e57629ea") + ) + (fp_line + (start 1.27 -1.27) + (end 1.27 6.35) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "61e3c81a-3db3-4226-a8ab-cdd772426eda") + ) + (fp_line + (start 1.27 6.35) + (end -1.27 6.35) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "2da7853a-be43-4704-9b3d-9ae80188865b") + ) + (fp_text user "${REFERENCE}" + (at 0 2.54 90) + (layer "F.Fab") + (uuid "5d236d8a-4b45-4caf-b94b-34fae6ef2003") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "VIN_12") + (uuid "70a76370-86e4-4a63-a0e8-713200df57ca") + ) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "9d4407b1-7d19-461a-addb-9f843b96a06c") + ) + (pad "3" thru_hole circle + (at 0 5.08) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_REG") + (uuid "83fbbf09-ebe2-4295-8eb4-d6b448b40705") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "C_Disc_D5.0mm_W2.5mm_P5.00mm" + (layer "F.Cu") + (uuid "5f392be5-399f-45ff-ae59-b087e8502eb6") + (at 59.36 94.92) + (descr "C, Disc series, Radial, pin pitch=5.00mm, diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf") + (tags "C Disc series Radial pin pitch 5.00mm diameter 5mm width 2.5mm Capacitor") + (property "Reference" "C_RX" + (at 7.62 2.54 0) + (layer "F.SilkS") + (uuid "ee5dce06-4869-4d5a-98a5-a955c3754ba1") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "100nF" + (at 2.54 -2.54 0) + (layer "F.Fab") + (uuid "85884e59-18d9-47cc-a77e-a843c4ea239f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "7d7d66a9-46b7-4ee0-8eb1-9fb7ea4e31f1") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "6abf252d-d918-44d8-8e67-091054e1679c") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "501d458b-a902-410b-8b6d-c83be3465f48") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/73264c8f-e193-4711-8b7b-b8895072d5d9") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.12 -1.37) + (end 5.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "75017567-bf22-4fe0-82f0-9151f9f2b662") + ) + (fp_line + (start -0.12 -1.033) + (end -0.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4e76cf1c-a384-4d8c-9ec5-92db215ec7b9") + ) + (fp_line + (start -0.12 1.37) + (end -0.12 1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2c539186-9043-4f2d-9731-fa2eb9d5be3f") + ) + (fp_line + (start 5.12 -1.37) + (end 5.12 -1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "125bc737-246f-4283-8495-0c0a4a6d9da1") + ) + (fp_line + (start 5.12 1.033) + (end 5.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a6d0d90e-8545-473e-9ab4-0006c5a8ae84") + ) + (fp_line + (start 5.12 1.37) + (end -0.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "40612935-2c4e-41d9-afdd-e267ee2cc65d") + ) + (fp_rect + (start -1.05 -1.5) + (end 6.05 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "ac5bee13-2ffc-472b-b349-5f7a06f8f4c9") + ) + (fp_rect + (start 0 -1.25) + (end 5 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "d2666da8-6b4d-414b-8968-ef36d0ae22b1") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "AF_RX") + (uuid "6fa65264-5b12-480d-86d1-7e03f3b243e8") + ) + (pad "2" thru_hole circle + (at 5 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "RXA") + (uuid "461fb4f8-9dbe-41d7-941a-4c63a1aefc29") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/C_Disc_D5.0mm_W2.5mm_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "LED_D3.0mm" + (layer "F.Cu") + (uuid "694ec3f3-62ef-43ff-b251-844a192742c1") + (at 173.66 28 90) + (descr "LED, diameter 3.0mm, 2 pins, generated by kicad-footprint-generator") + (tags "LED") + (property "Reference" "LED_PWR" + (at 6.74 0 0) + (layer "F.SilkS") + (uuid "db3d3a9a-5df3-425b-b8b8-9028c29996c0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "PWR" + (at -0.88 -5.08 0) + (layer "F.Fab") + (uuid "7d81aaaa-8142-4038-a658-301c1fe54f31") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "9f289dce-df32-4208-a8d8-0ae076944d90") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "101b4db2-4b49-4935-8cf6-250bba17b2bd") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "LED/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "f2dc693b-c927-4ba7-8e8e-28cd393b422a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/a18e6eea-7ae9-4117-bb53-79fbfeb6aa2d") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.29 -1.236) + (end -0.29 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2d45bdab-5926-4a6f-bf2f-b25ea4b1f66c") + ) + (fp_line + (start -0.29 1.08) + (end -0.29 1.236) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e32d7afa-bb5c-4c62-96a9-774d51de3335") + ) + (fp_arc + (start -0.29 -1.235516) + (mid 1.36566 -1.987699) + (end 2.941437 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "38c00c4b-e36e-472d-956e-b7337fb0628d") + ) + (fp_arc + (start 0.229039 -1.08) + (mid 1.27 -1.5) + (end 2.310961 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "aa4cf2b8-88c3-4ed2-913a-afea1a773028") + ) + (fp_arc + (start 2.941437 1.08) + (mid 1.36566 1.987699) + (end -0.29 1.235516) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "65aaa5d1-8b44-4975-a7fd-388cfa2e6714") + ) + (fp_arc + (start 2.310961 1.08) + (mid 1.27 1.5) + (end 0.229039 1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a00e61c4-0c5c-4c04-a9e2-e3fe9c92bba1") + ) + (fp_rect + (start -1.15 -2.21) + (end 3.69 2.21) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "93cc90d3-67d0-4f50-b247-38c6c9ec5e7c") + ) + (fp_line + (start -0.23 -1.16619) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "8fd0ef1a-b783-466a-ba64-f914a77f09be") + ) + (fp_arc + (start -0.23 -1.16619) + (mid 3.17 0) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "0a41117d-a4c7-4e0c-aacd-ee743cfe1e05") + ) + (fp_circle + (center 1.27 0) + (end 2.77 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "4058d478-83e4-41b0-ac24-39a2cbadfc59") + ) + (point + (at -3.07 0) + (size 2) + (layer "F.Fab") + (uuid "936718e1-7f1f-4689-be41-5cbcbd0de5ff") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "996e83d0-2efa-4bee-a054-1626eec872d2") + ) + (pad "2" thru_hole circle + (at 2.54 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_PWR_A") + (uuid "00628539-e4d5-4634-a4f1-fccd936ba826") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/LED_THT.3dshapes/LED_D3.0mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Potentiometer_Bourns_3296W_Vertical" + (layer "F.Cu") + (uuid "7409261e-b2ca-4570-8d35-4f5c1e5f0004") + (at 54.28 80) + (descr "Potentiometer, vertical, Bourns 3296W, https://www.bourns.com/pdfs/3296.pdf") + (tags "Potentiometer vertical Bourns 3296W") + (property "Reference" "RV1" + (at -5.08 -3.66 0) + (layer "F.SilkS") + (uuid "0f2d4c26-d904-486e-9a53-43bfb47b1169") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "10k TX" + (at -5.08 3.67 0) + (layer "F.Fab") + (uuid "ecadff80-b799-4c86-bf0a-d7b72eb4913d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "be070560-a60c-4a21-82f3-3a4f32cc0968") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d8d8f45b-357c-4ff9-af01-3f61f0ebac4a") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "potentiometer/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "d427a56d-8492-4cfc-b83a-f1c2fda4a29d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/89a57363-728b-48eb-8811-52c819e71695") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -7.415 -2.52) + (end 2.335 -2.52) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2a7d01cd-13bc-4ed9-ba03-c6c73c890347") + ) + (fp_line + (start -7.415 2.53) + (end -7.415 -2.52) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d892f0b8-75e9-4875-80f4-6cd633701dd9") + ) + (fp_line + (start 2.335 -2.52) + (end 2.335 2.53) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1e971f13-8140-46df-a054-191d46f60d7c") + ) + (fp_line + (start 2.335 2.53) + (end -7.415 2.53) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "48937189-4ad0-4785-b997-6f6f3d64c15b") + ) + (fp_rect + (start -7.56 -2.66) + (end 2.48 2.67) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "50715194-f54e-4ad3-9bf5-d98455f7d8e2") + ) + (fp_line + (start 1.652 0.32) + (end 0.125 1.847) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "13961f59-df67-4baa-bcc4-3d3ba9ba3baa") + ) + (fp_line + (start 1.785 0.453) + (end 0.258 1.98) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "5d23fec9-7350-4f04-a881-c108106a97ee") + ) + (fp_rect + (start -7.305 -2.41) + (end 2.225 2.42) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "2336b8a5-57ce-4a72-a1f6-6d242ac7cf0e") + ) + (fp_circle + (center 0.955 1.15) + (end 2.05 1.15) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "316f1524-23a1-4b7a-9226-a6240c1603e9") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TXA") + (uuid "bdf93508-55a9-40ef-847c-684e12701117") + ) + (pad "2" thru_hole circle + (at -2.54 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TX_LVL") + (uuid "5f327585-7537-4247-976d-59ab39f4acba") + ) + (pad "3" thru_hole circle + (at -5.08 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "913b538e-94a3-4c76-9be2-6e508aac99b7") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Potentiometer_THT.3dshapes/Potentiometer_Bourns_3296W_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "USB_A_Molex_67643_Horizontal" + (layer "F.Cu") + (uuid "829eaa44-6c02-4fe9-a5ab-ed5c3d039946") + (at 38.51 19 180) + (descr "USB type A, Horizontal, https://www.molex.com/pdm_docs/sd/676433910_sd.pdf") + (tags "USB_A Female Connector receptacle") + (property "Reference" "J_USB" + (at 4 5 0) + (layer "F.SilkS") + (uuid "587e4453-7e49-4893-bd4f-3a1ef4e2ce42") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "USB_A" + (at -8.15 10.44 0) + (layer "F.Fab") + (uuid "3615cb5b-8728-4b2f-afb6-67e0662da806") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "5f730274-d097-4c92-a4fe-802c66eb6b17") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "d3e3a8f4-79d9-474d-bf5f-a0c8c93c3fb2") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/c04bfcf0-04b4-453a-b9d2-070b78d1dbe0") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 10.81 13.1) + (end 10.81 12.58) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "70701789-addc-46d6-8a95-ba5b08456f31") + ) + (fp_line + (start 10.81 12.58) + (end 10.16 12.58) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "cf6a96be-974a-47fe-b2b5-42c2727814b5") + ) + (fp_line + (start 10.16 4.47) + (end 10.16 12.58) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e47a7d8e-26e2-4a53-91a8-2bf4bcb50f1d") + ) + (fp_line + (start 10.16 -2.38) + (end 10.16 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0d7c0ec7-b3d9-44e9-952a-aa7b784ed261") + ) + (fp_line + (start -0.9 -2.6) + (end 0.9 -2.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7c894fe1-4355-4b3b-99ed-a6b6c13cb5cf") + ) + (fp_line + (start -3.16 12.58) + (end -3.16 4.47) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "db8a890b-eaa1-429f-8435-6e8acac1a9ae") + ) + (fp_line + (start -3.16 12.58) + (end -3.81 12.58) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a8594c88-9867-431b-b60b-461ab0dba057") + ) + (fp_line + (start -3.16 -2.38) + (end 10.16 -2.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "22407be2-efeb-4861-a7b7-ba32ac0566a9") + ) + (fp_line + (start -3.16 -2.38) + (end -3.16 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "af4dc554-31e5-48be-9055-bd8b7c2cfdc5") + ) + (fp_line + (start -3.81 13.1) + (end 10.81 13.1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a78d414f-b558-494c-bb19-8aa264a11024") + ) + (fp_line + (start -3.81 12.58) + (end -3.81 13.1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2cf9a91f-ff15-4a66-974c-416fe7ec94c0") + ) + (fp_line + (start 11.2 13.49) + (end 11.2 12.19) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "71ec7051-2b3c-4216-9baa-de67be71e97e") + ) + (fp_line + (start 11.2 12.19) + (end 10.55 12.19) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f9c005ee-2e8b-4c3f-8046-1f4c278e1163") + ) + (fp_line + (start 10.55 12.19) + (end 10.55 4.66) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "e670c602-a738-4264-867a-9726dcf77c28") + ) + (fp_line + (start 10.55 -2.77) + (end 10.55 0.76) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "65c10a22-328e-41a9-872a-4fd7214e552b") + ) + (fp_line + (start -3.55 12.19) + (end -3.55 4.66) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "49a37cc5-2383-439a-9589-633c3d2f896e") + ) + (fp_line + (start -3.55 -2.77) + (end 10.55 -2.77) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "9b526364-6a56-4cb3-b04c-ba6b5282fda6") + ) + (fp_line + (start -3.55 -2.77) + (end -3.55 0.76) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "409d9c61-4e97-459d-b629-c46726f24326") + ) + (fp_line + (start -4.2 13.49) + (end 11.2 13.49) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5efa714a-d5b5-4c97-8f3b-99e142483d99") + ) + (fp_line + (start -4.2 13.49) + (end -4.2 12.19) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "aa6c0397-be1e-4c48-bc36-e705ca35ccc2") + ) + (fp_line + (start -4.2 12.19) + (end -3.55 12.19) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "eceefd87-77a6-4aeb-830c-e7ac61e166d8") + ) + (fp_arc + (start 10.55 0.76) + (mid 12.078208 2.71) + (end 10.55 4.66) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "03118c98-85db-4cdb-a830-28dbafd84c51") + ) + (fp_arc + (start -3.55 4.66) + (mid -5.078208 2.71) + (end -3.55 0.76) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7f586e7e-3fc0-4a1b-b233-8c69d2c7d6cc") + ) + (fp_line + (start 10.7 12.99) + (end 10.7 12.69) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1caf59fd-5faf-4557-beda-a217fea7c972") + ) + (fp_line + (start 10.7 12.69) + (end 10.05 12.69) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "30740382-5570-49ad-9d82-0c762e5b8f4c") + ) + (fp_line + (start 10.05 -2.27) + (end 10.05 12.69) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a7c82cdf-f22c-478b-a5fd-4ab6dac78db5") + ) + (fp_line + (start 0 -1.27) + (end 1 -2.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d59dcb5b-6a1c-4267-b1be-655e54836132") + ) + (fp_line + (start -1 -2.27) + (end 0 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "b306152d-ede2-4837-ac0e-f7d12c3a82ed") + ) + (fp_line + (start -3.05 12.69) + (end -3.05 -2.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "da215caf-c849-4317-8d39-0f98758bf85b") + ) + (fp_line + (start -3.05 12.69) + (end -3.7 12.69) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1c0c3a8d-e67b-4eab-9833-238a0aeb448e") + ) + (fp_line + (start -3.05 9.27) + (end 10.05 9.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "0e2c4c84-e596-46ba-8430-bb1f6aaf8cdf") + ) + (fp_line + (start -3.05 -2.27) + (end 10.05 -2.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a6013904-4f15-4823-bc7f-3a001e203e8a") + ) + (fp_line + (start -3.7 12.99) + (end 10.7 12.99) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "8a959f5c-4cc3-4df7-95e5-27f9b5fac41c") + ) + (fp_line + (start -3.7 12.69) + (end -3.7 12.99) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "cc6ac842-9b10-4a94-a4a8-0dcc7cbedf8e") + ) + (pad "1" thru_hole roundrect + (at 0 0) + (size 1.6 1.5) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.1666666667) + (net "USB_VBUS_NC") + (uuid "e84cd6c1-184c-48b3-ae68-9129c997e0d9") + ) + (pad "2" thru_hole circle + (at 2.5 0) + (size 1.6 1.6) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "USB_DM") + (uuid "d3e350d1-baa4-476b-aca3-c74e913c537a") + ) + (pad "3" thru_hole circle + (at 4.5 0) + (size 1.6 1.6) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "USB_DP") + (uuid "6d04f8be-fb86-4a41-8bf6-8f76048bcbcb") + ) + (pad "4" thru_hole circle + (at 7 0) + (size 1.6 1.6) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "0bf54474-9bfc-4c82-8e47-f969e243cc2c") + ) + (pad "SH" thru_hole circle + (at -3.07 2.71) + (size 3 3) + (drill 2.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "621acea4-9a16-439d-8e41-3df07c814f1a") + ) + (pad "SH" thru_hole circle + (at 10.07 2.71) + (size 3 3) + (drill 2.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "9393741f-5c41-4d95-a20a-c9f0e4e26061") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_USB.3dshapes/USB_A_Molex_67643_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "SW_PUSH_6mm" + (layer "F.Cu") + (uuid "858a8dc1-fc74-47e3-b675-a2c8db7936cb") + (at 102.54 24.38) + (descr "Generic 6mm SW tactile push button") + (tags "tact sw push 6mm") + (property "Reference" "SW1" + (at 3.25 -3.12 0) + (layer "F.SilkS") + (uuid "d9b14bfd-afca-4841-849d-339b3eb36aae") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "BOOTSEL" + (at 3.75 6.7 0) + (layer "F.Fab") + (uuid "9ced1728-4336-4de3-bbd8-7bd0080e602f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "c3fc7971-322d-4bc5-84d3-abdc5ea47ef6") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "eaec6715-0cce-4817-aa0d-174aa68eb8f9") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/5f002700-21f9-497a-a451-604989e47635") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.25 1.5) + (end -0.25 3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "730a3c7c-5c64-4d1b-871b-c99799504ccc") + ) + (fp_line + (start 1 5.5) + (end 5.5 5.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "89d10412-b90a-428d-b24f-022023495354") + ) + (fp_line + (start 5.5 -1) + (end 1 -1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d7aeaa6c-e266-4f57-a358-d8074ad46506") + ) + (fp_line + (start 6.75 3) + (end 6.75 1.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "06e8ccef-769f-4ae3-8513-4d793c5251b9") + ) + (fp_line + (start -1.5 -1.5) + (end -1.25 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "ad7508e9-0950-4e59-b4e9-eeea81d4fa58") + ) + (fp_line + (start -1.5 -1.25) + (end -1.5 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "cbf6a171-f322-4026-9fcd-1037ff10145f") + ) + (fp_line + (start -1.5 5.75) + (end -1.5 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "ade3dc5b-1110-42c4-b18c-19efbaa44385") + ) + (fp_line + (start -1.5 5.75) + (end -1.5 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "98001447-5ade-45db-8917-e5ac01a2c2af") + ) + (fp_line + (start -1.5 6) + (end -1.25 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "38d3164c-f5a1-4571-a887-6707a70c8240") + ) + (fp_line + (start -1.25 -1.5) + (end 7.75 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7d090ec5-e9db-4737-ac25-09e1f5e98db0") + ) + (fp_line + (start 7.75 -1.5) + (end 8 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7ad3a04c-8a39-4f9c-82f6-5d0fc0577d47") + ) + (fp_line + (start 7.75 6) + (end -1.25 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "4cd94d15-3cca-4cb6-ada1-a94a49190126") + ) + (fp_line + (start 7.75 6) + (end 8 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7b1ad61f-8775-46ae-bd70-56bf9e83049a") + ) + (fp_line + (start 8 -1.5) + (end 8 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "993d54a1-ac3f-4232-9f1b-37a14ff7d9aa") + ) + (fp_line + (start 8 -1.25) + (end 8 5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "6136890c-c45d-445a-9e67-83df9f0b1fd2") + ) + (fp_line + (start 8 6) + (end 8 5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "babdcefc-1868-4e09-b02c-2bf28c98a6e7") + ) + (fp_line + (start 0.25 -0.75) + (end 3.25 -0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "dfe9fff6-4034-4785-ac3f-a245d0031585") + ) + (fp_line + (start 0.25 5.25) + (end 0.25 -0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "63140a52-2f60-44a9-8eaf-6597c4c7b599") + ) + (fp_line + (start 3.25 -0.75) + (end 6.25 -0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f23108e9-7a68-4221-a60e-8d15cadd28aa") + ) + (fp_line + (start 6.25 -0.75) + (end 6.25 5.25) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "dc91abba-352d-4fe7-9439-52282443e3b3") + ) + (fp_line + (start 6.25 5.25) + (end 0.25 5.25) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "bf6f7382-b807-49f1-b040-83c75d2eab4f") + ) + (fp_circle + (center 3.25 2.25) + (end 1.25 2.5) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "d965a88e-4774-4acd-b7b3-bcce8e56ce77") + ) + (pad "1" thru_hole circle + (at 0 0 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "493f5835-58b0-45c3-b15f-5fa84703bfb5") + ) + (pad "1" thru_hole circle + (at 6.5 0 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "3b24c419-2725-425c-b25a-37ebdccc5329") + ) + (pad "2" thru_hole circle + (at 0 4.5 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "BOOTSEL") + (uuid "d930e72f-1640-4a6b-8d94-68332ff6469c") + ) + (pad "2" thru_hole circle + (at 6.5 4.5 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "BOOTSEL") + (uuid "f25d5acf-91c9-4234-8adf-1e0273a161fa") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_THT.3dshapes/SW_PUSH_6mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "F.Cu") + (uuid "8b4fbc76-fddf-4f7f-af53-aff20c81f8ed") + (at 125.4 125.4) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_PTT" + (at 5.08 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "c3f48974-efb3-4754-98c6-628874a86e3d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "4.7k" + (at 5.08 2.37 0) + (layer "F.Fab") + (uuid "57fa3956-b624-4f99-9266-860e502b4f07") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "fb726e39-4cd1-413b-9d3a-715aa4ed669b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "5fe8e0aa-bec9-45a6-9b8e-7b3db7a11fb5") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "06437af3-f6f9-42bf-ad3e-e2dd42ea2096") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/583a0f7f-2804-47a4-9b55-3e466d8551f8") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ddc9df70-2962-4619-a989-c27e86420c0d") + ) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0bb68dc5-34ab-46f9-827a-6fccb1756faf") + ) + (fp_rect + (start 1.81 -1.37) + (end 8.35 1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "0bf166d1-757a-4746-8f93-7d892bec3c43") + ) + (fp_rect + (start -1.05 -1.5) + (end 11.21 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "537a3f1e-3e9a-4137-a0ed-92906e032aa4") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d217b61d-b9f3-4160-8510-0e1337e3f786") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "acc96c72-eaef-4ff4-8805-3dbc84cdb0e2") + ) + (fp_rect + (start 1.93 -1.25) + (end 8.23 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "adeccbf9-b942-4ec5-bc20-aa7e1d9c8b79") + ) + (fp_text user "${REFERENCE}" + (at 2.54 -2.54 0) + (layer "F.Fab") + (uuid "2507b8ca-2649-40ba-a13e-f1bb02b6bdcc") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "PTT_DRV") + (uuid "c7933e20-9d12-49bd-a729-18848f1d35f0") + ) + (pad "2" thru_hole circle + (at 10.16 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "PTT_B") + (uuid "f95623b1-c75d-472b-8470-aa42fe25fcb2") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "MountingHole_3.2mm_M3" + (layer "F.Cu") + (uuid "9224c078-0fc2-4687-a0f7-657a83e0d387") + (at 173.66 6) + (descr "Mounting Hole 3.2mm, M3, no annular, generated by kicad-footprint-generator mountinghole.py") + (tags "mountinghole M3") + (property "Reference" "H2" + (at 0 -4.15 0) + (layer "F.SilkS") + (uuid "66357a0e-34b3-42f4-ac36-eddaf01794bd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "M3" + (at 0 4.15 0) + (layer "F.Fab") + (uuid "720ae7d5-1cff-4954-afee-fa9fc174ef49") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "b8e9ec0a-3cc2-4188-8b04-203e17f0d755") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "03af3693-8121-4b47-8a4a-d9fe82a70924") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "mounting_hardware/mounting_hole" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "af153632-1b0d-47f6-b803-334152b17b8d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/c31eda4e-dd4c-4c44-9422-bfdcf84d2286") + (attr exclude_from_pos_files exclude_from_bom) + (duplicate_pad_numbers_are_jumpers no) + (fp_circle + (center 0 0) + (end 3.2 0) + (stroke + (width 0.15) + (type solid) + ) + (fill no) + (layer "Cmts.User") + (uuid "5552ba82-18f2-465e-9a5b-7efbe1e504d8") + ) + (fp_circle + (center 0 0) + (end 3.45 0) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "d0bb5e14-b4d1-4b9c-9f46-fd3b772807fc") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "0e54145e-121c-42ea-9d1d-b9b8305ae594") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at 0 0) + (size 3.2 3.2) + (drill 3.2) + (layers "*.Cu" "*.Mask") + (uuid "b10efe1f-fdb0-4932-ae89-4e36637f3a4e") + ) + (embedded_fonts no) + ) + (footprint "TO-92" + (layer "F.Cu") + (uuid "9473cea6-0439-4fe9-a8c3-6cbd96d00e9e") + (at 120.32 105.08) + (descr "TO-92 leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf)") + (tags "to-92 sc-43 sc-43a sot54 PA33 transistor") + (property "Reference" "Q1" + (at 7.62 -2.54 0) + (layer "F.SilkS") + (uuid "e2742de6-fe8b-4881-846e-cd495155e9cf") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "2N2222A" + (at 0 -5.08 0) + (layer "F.Fab") + (uuid "239aaee1-ca38-4255-8d77-2509d4e25cda") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "d3f6a78d-d231-47e5-9259-29c1293f1631") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "84ab43d4-be6c-41fb-82a3-d78d6ff53a34") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/015ad29e-2f6f-4a13-9a8f-3f39792fe5c6") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.53 1.85) + (end 3.07 1.85) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "17467156-a095-4226-82d6-b1341c2968d0") + ) + (fp_arc + (start -0.568478 1.838478) + (mid -1.132087 -0.994977) + (end 1.27 -2.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c1b87c38-1dcf-4eb5-b373-66df8491a78a") + ) + (fp_arc + (start 1.27 -2.6) + (mid 3.672087 -0.994977) + (end 3.108478 1.838478) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6668e529-b5db-4ec2-ae7c-0a1d7b521373") + ) + (fp_line + (start -1.46 -2.73) + (end -1.46 2.01) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f36ad45e-be9e-4223-8a0b-74b5e837f9cc") + ) + (fp_line + (start -1.46 -2.73) + (end 4 -2.73) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "92e781b1-2c14-4520-bb48-53cac4b7bdb3") + ) + (fp_line + (start 4 2.01) + (end -1.46 2.01) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "fa40c644-7aa9-49b8-b00b-72d5cb03811e") + ) + (fp_line + (start 4 2.01) + (end 4 -2.73) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5bd3d71c-cf2f-44dc-9a12-574c4f12d7f5") + ) + (fp_line + (start -0.5 1.75) + (end 3 1.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a8cb959c-d03a-498a-bb82-5a14e3f5cd05") + ) + (fp_arc + (start -0.483625 1.753625) + (mid -1.021221 -0.949055) + (end 1.27 -2.48) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "fad91bb5-558e-44bb-ab97-b08c8ae0be93") + ) + (fp_arc + (start 1.27 -2.48) + (mid 3.561221 -0.949055) + (end 3.023625 1.753625) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "84c4902c-bfd1-4384-89b9-39fd4fbf6732") + ) + (fp_text user "${REFERENCE}" + (at 1.27 0 0) + (layer "F.Fab") + (uuid "b4edade7-95e6-4fcb-b987-6c2885fa6cfd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.3 1.3) + (drill 0.75) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "7656204d-70f9-404d-9b1b-d49769ff67fe") + ) + (pad "2" thru_hole circle + (at 1.27 -1.27) + (size 1.3 1.3) + (drill 0.75) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "PTT_B") + (uuid "4a7e3e77-3658-4ec3-b652-53ef5384ad1b") + ) + (pad "3" thru_hole circle + (at 2.54 0) + (size 1.3 1.3) + (drill 0.75) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "PTT_OC") + (uuid "5d71ac3e-c820-442b-ba5a-b5bdc2353303") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_THT.3dshapes/TO-92.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "PinHeader_1x04_P2.54mm_Vertical" + (layer "F.Cu") + (uuid "97342a38-3114-439a-8c13-28d3d787b0d8") + (at 100 162.23) + (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x04 2.54mm single row") + (property "Reference" "J_LCD_I2C" + (at 0.5 -4.5 0) + (layer "F.SilkS") + (uuid "caa96619-3ab1-4bfb-8b48-a2c4d834b5f7") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "LCD I2C" + (at 0 10 0) + (layer "F.Fab") + (uuid "6a6ebb97-4c31-499f-8a16-b7a3961bee0a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "6d75f73b-6a0e-4bf1-8d45-37286079e846") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "e82f537b-8e89-41b9-8f28-3b9f4c54194d") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "5e91d665-2dd7-48e2-b733-66db4dc656a1") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/bb4fb939-a2cc-4c5f-82da-6f7855c7fed5") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -1.38 -1.38) + (end 0 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d78e882e-2d27-406f-b3b4-f2a0b70d6392") + ) + (fp_line + (start -1.38 0) + (end -1.38 -1.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8a57e87b-8082-4d61-a17e-e7484414e0b5") + ) + (fp_line + (start -1.38 1.27) + (end -1.38 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "96c4f7d1-b383-4f8a-a02a-3c62eaa60766") + ) + (fp_line + (start -1.38 1.27) + (end 1.38 1.27) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "74fb3227-8b73-4835-ad0f-747351abd4bd") + ) + (fp_line + (start -1.38 9) + (end 1.38 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a739aaa0-e426-4774-bcf8-a6c2d651c562") + ) + (fp_line + (start 1.38 1.27) + (end 1.38 9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3350829c-2674-4ba6-8cef-244c75b3a817") + ) + (fp_rect + (start -1.77 -1.77) + (end 1.77 9.39) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "c56912ab-3fba-43a9-9fac-27dbf023910e") + ) + (fp_line + (start -1.27 -0.635) + (end -0.635 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "e89ce63c-ccb6-42a4-8202-51365aacce17") + ) + (fp_line + (start -1.27 8.89) + (end -1.27 -0.635) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "baaa0b8c-7ad4-4c1e-ba78-a168a8e9e833") + ) + (fp_line + (start -0.635 -1.27) + (end 1.27 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "41398790-1831-41ae-a426-32a6a7af489f") + ) + (fp_line + (start 1.27 -1.27) + (end 1.27 8.89) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f7bf9d6e-c1ea-4776-9bba-ae01a70bbc5a") + ) + (fp_line + (start 1.27 8.89) + (end -1.27 8.89) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4ece94c1-65c1-47aa-92d8-6e08a59c3037") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "b23ba930-86b8-4e7e-9483-f0514386132e") + ) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "a7c972e7-fcb8-4d3e-a434-63820b41b772") + ) + (pad "3" thru_hole circle + (at 0 5.08) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "I2C_SDA_5V") + (uuid "10869fc4-a796-4283-98c7-5f97f1dc9e88") + ) + (pad "4" thru_hole circle + (at 0 7.62) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "I2C_SCL_5V") + (uuid "fde7013d-083e-402c-9e7f-abda4d271612") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "MountingHole_3.2mm_M3" + (layer "F.Cu") + (uuid "9fd263cb-a819-40f6-ab27-f9617718fb4e") + (at 173.66 173.66) + (descr "Mounting Hole 3.2mm, M3, no annular, generated by kicad-footprint-generator mountinghole.py") + (tags "mountinghole M3") + (property "Reference" "H4" + (at 0 -4.15 0) + (layer "F.SilkS") + (uuid "6ff46282-b7e8-49f5-bb76-e5ab4691aabe") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "M3" + (at 0 4.15 0) + (layer "F.Fab") + (uuid "6dd43417-2612-494a-905f-919382cb9d15") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "c09f372d-e2ae-48bb-95ce-3954f10bf90a") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "3f9e3065-1ab3-4a44-9587-b127d3781a95") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "mounting_hardware/mounting_hole" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "092c2e8b-a726-4575-9837-319796716130") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/d96bd5db-1bf4-40c0-b2ea-fde786d4fd1d") + (attr exclude_from_pos_files exclude_from_bom) + (duplicate_pad_numbers_are_jumpers no) + (fp_circle + (center 0 0) + (end 3.2 0) + (stroke + (width 0.15) + (type solid) + ) + (fill no) + (layer "Cmts.User") + (uuid "d52c602b-dbc0-4f05-bcb3-b7250555afba") + ) + (fp_circle + (center 0 0) + (end 3.45 0) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "7430e9e5-f63c-44f1-803d-a85175578f11") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "7d5851a1-d54d-4674-8021-9982126d92b4") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at 0 0) + (size 3.2 3.2) + (drill 3.2) + (layers "*.Cu" "*.Mask") + (uuid "15adf3ec-9a72-4880-a963-9960b56149c3") + ) + (embedded_fonts no) + ) + (footprint "C_Disc_D5.0mm_W2.5mm_P5.00mm" + (layer "F.Cu") + (uuid "bc3093d9-24b0-48f3-a00a-5a5251255b62") + (at 64.44 84.76) + (descr "C, Disc series, Radial, pin pitch=5.00mm, diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf") + (tags "C Disc series Radial pin pitch 5.00mm diameter 5mm width 2.5mm Capacitor") + (property "Reference" "C_TX" + (at 2.54 -2.54 0) + (layer "F.SilkS") + (uuid "f724aa49-05c9-420d-b202-f397d5dc9772") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "100nF" + (at 2.5 2.5 0) + (layer "F.Fab") + (uuid "64f27c30-5ac6-4d01-a88c-3e49c5186fe9") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "3a552c68-757e-465c-8c99-ce1de434227b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "bb1ec306-6761-4a14-94d5-c939f140343c") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "cd821ab5-9e38-4ca8-9eba-a83c6dec8987") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/22728b68-9ff0-4a6b-b0ba-1a6b80d0ae1e") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.12 -1.37) + (end 5.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "de562afb-35d6-4f23-9106-f827943da9fc") + ) + (fp_line + (start -0.12 -1.033) + (end -0.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a6371275-077d-462a-bd86-35b8d86b2286") + ) + (fp_line + (start -0.12 1.37) + (end -0.12 1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "83c0709e-9d8b-42e7-b4a5-68d23f191ff4") + ) + (fp_line + (start 5.12 -1.37) + (end 5.12 -1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e7a5410e-e793-4f85-acaa-8e56cff18375") + ) + (fp_line + (start 5.12 1.033) + (end 5.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bacaa4e1-9017-499a-a203-84c165e60583") + ) + (fp_line + (start 5.12 1.37) + (end -0.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0c9d1a0e-12a0-4bcd-b02f-1d64d40b17fb") + ) + (fp_rect + (start -1.05 -1.5) + (end 6.05 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "1e91d2e3-5a54-4a87-9505-ae0c639191ed") + ) + (fp_rect + (start 0 -1.25) + (end 5 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "e87509a1-4bce-4dbd-9e42-a128747fd6f6") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TX_LVL") + (uuid "88e2718c-bacc-4477-a360-a740be28ab8f") + ) + (pad "2" thru_hole circle + (at 5 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "AF_TX") + (uuid "4b8c276f-02ff-46f2-8c76-9ae9b46974d6") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/C_Disc_D5.0mm_W2.5mm_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "RaspberryPi_Pico_Common_THT" + (layer "F.Cu") + (uuid "c1df9e8d-946a-4740-8150-4316ef24154b") + (at 82.22 74.6) + (descr "Raspberry Pi Pico common (Pico & Pico W) through-hole footprint, supports Raspberry Pi Pico 2, default socketed model has height of 8.51mm, https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf") + (tags "module usb pcb antenna") + (property "Reference" "U1" + (at 20.6375 48.895 0) + (unlocked yes) + (layer "F.SilkS") + (uuid "2b61754d-9353-48e3-b050-dcd1af6b2edd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify left) + ) + ) + (property "Value" "RPi-Pico" + (at 8.89 52.07 0) + (unlocked yes) + (layer "F.Fab") + (uuid "8544a195-2802-4405-91fa-f161ce30aa26") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 8.89 24.13 0) + (layer "F.Fab") + (hide yes) + (uuid "d8c023b4-832b-47a2-98ce-81c0a94a8a28") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 8.89 24.13 0) + (layer "F.Fab") + (hide yes) + (uuid "efe4c0aa-2ab4-40a4-8d5e-f6352362dc3b") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/05fa5316-8a4b-4d0c-9b66-c34cfb8c4a38") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -2.04 0.8) + (end -2.04 -0.8) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5fee54ee-9c2a-4b51-ac55-302f302622d7") + ) + (fp_line + (start -1.72 -0.87) + (end -1.72 49.13) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "470c1ed3-960a-4577-9854-7da4046b9590") + ) + (fp_line + (start -1.38 -1.417) + (end -1.38 49.677) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5468bbff-24d7-4a05-8056-c9bdeb821015") + ) + (fp_line + (start -1.11 -1.48) + (end 1.38 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5d9b38dd-6476-4d71-b919-a86b41ee3314") + ) + (fp_line + (start -1.11 49.74) + (end 2.727939 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "84f49e42-9a51-4dcd-a82a-a184812e8b8f") + ) + (fp_line + (start 1.38 -1.48) + (end 1.38 -0.56648) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5fedb5f9-3b88-46a2-8800-d175332de5df") + ) + (fp_line + (start 1.38 -1.48) + (end 2.72794 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4364d81a-a05f-4ade-a1ac-d7eb37d788d3") + ) + (fp_line + (start 1.38 1.82648) + (end 1.38 46.43352) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "cc6cd0c8-cfd7-40da-8b59-c0f6bda88bd8") + ) + (fp_line + (start 1.38 48.82648) + (end 1.38 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5bce4d98-6593-4a1b-b4dc-94b0cee8b389") + ) + (fp_line + (start 3.652061 -1.48) + (end 4.655 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e48c7a47-6d83-458c-840a-22242671e181") + ) + (fp_line + (start 4.655 -1.48) + (end 13.125 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ef92cfca-d0ac-43fd-b0e0-08eae3aab1ae") + ) + (fp_line + (start 4.78 -2.78) + (end 4.78 -1.96) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a4435662-3861-4ea1-ba0b-e4f0ddd2b44c") + ) + (fp_line + (start 4.78 -2.78) + (end 13 -2.78) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e0ee82dc-7b5f-4dc3-989d-0f7fabffbfc8") + ) + (fp_line + (start 4.78 -1.96) + (end 4.99 -1.96) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2dc1afd5-9160-479e-8a75-a3db0a7047c3") + ) + (fp_line + (start 4.99 -1.96) + (end 4.99 -0.564) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2977f59d-c3cf-4f35-9c02-a6b82e952c3e") + ) + (fp_line + (start 4.99 1.824) + (end 4.99 3.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3fcfde3e-3f64-426d-9256-a6acaf514b04") + ) + (fp_line + (start 5.29 49.74) + (end 3.652061 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1aa28d1f-349c-4e4d-b85b-12120b63d555") + ) + (fp_line + (start 12.49 49.74) + (end 5.29 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d51b1ff1-5609-41c0-96f3-fbb2e648c309") + ) + (fp_line + (start 12.79 -1.96) + (end 12.79 -0.564) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "efa914c0-84d3-48bb-a539-ee9efc0c397d") + ) + (fp_line + (start 12.79 1.824) + (end 12.79 3.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9f35b726-9404-4e7c-a828-922852be2d2c") + ) + (fp_line + (start 12.79 3.04) + (end 4.99 3.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "209eb2db-a5c0-4ce9-a0b5-16de3f06444c") + ) + (fp_line + (start 13 -2.78) + (end 13 -1.96) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fb71d80a-b5ee-4b08-89f2-fac9a5cefb99") + ) + (fp_line + (start 13 -1.96) + (end 12.79 -1.96) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1405909d-1e99-46dd-bde1-23998c41b497") + ) + (fp_line + (start 13.125 -1.48) + (end 14.127939 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d2ede917-ceb3-4931-9876-5084bcc2c6e6") + ) + (fp_line + (start 14.127939 49.74) + (end 12.49 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "947bf455-6756-4476-b2f0-11b1da7628bf") + ) + (fp_line + (start 15.052061 -1.48) + (end 16.4 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2b1fadca-a8b2-48a5-8008-859650b26d49") + ) + (fp_line + (start 15.052061 49.74) + (end 18.89 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "cfd70ab6-12b0-4bef-ab5b-fb7887c72ab1") + ) + (fp_line + (start 16.4 -1.48) + (end 16.4 -0.56648) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "77aa4cd8-05f7-4999-99c0-1a3755e2d86a") + ) + (fp_line + (start 16.4 1.82648) + (end 16.4 46.43352) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4da87717-f4d4-4988-805b-06748ffe1b6f") + ) + (fp_line + (start 16.4 48.82648) + (end 16.4 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a5ffe63a-bd42-4359-b086-d15c58da35c3") + ) + (fp_line + (start 18.89 -1.48) + (end 16.4 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2e2b139a-0c9d-4c10-89c7-dc0c003fe6ca") + ) + (fp_line + (start 19.16 49.677) + (end 19.16 -1.417) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b7d85c42-84ee-491e-94e3-db8d63c6ace7") + ) + (fp_line + (start 19.5 -0.87) + (end 19.5 49.13) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "86476022-55d5-4498-b866-37513f80791b") + ) + (fp_arc + (start -1.72 -0.87) + (mid -1.541335 -1.301335) + (end -1.11 -1.48) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c165c0dc-e541-4803-904c-5ed4fc37a468") + ) + (fp_arc + (start -1.11 49.74) + (mid -1.541364 49.561364) + (end -1.72 49.13) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "23a6c90f-fa6c-4e14-b12e-419c7192e82e") + ) + (fp_arc + (start 18.89 -1.48) + (mid 19.321335 -1.301335) + (end 19.5 -0.87) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8a6bc093-d5a8-4947-8c95-fea3c95e699e") + ) + (fp_arc + (start 19.5 49.13) + (mid 19.321335 49.561335) + (end 18.89 49.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8ef0126a-a2ca-466c-817a-12cef184c071") + ) + (fp_circle + (center 3.19 0.63) + (end 4.24 0.63) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "Dwgs.User") + (uuid "32b1b466-aa55-4032-bb37-7fb92e692568") + ) + (fp_circle + (center 3.19 47.63) + (end 4.24 47.63) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "Dwgs.User") + (uuid "2ddee93e-05b1-4586-9e42-644a7b96343f") + ) + (fp_circle + (center 14.59 0.63) + (end 15.64 0.63) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "Dwgs.User") + (uuid "d3587733-3906-4d91-94e9-cde324bd2fef") + ) + (fp_circle + (center 14.59 47.63) + (end 15.64 47.63) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "Dwgs.User") + (uuid "2e79c306-b781-40bb-83f0-888fa79f81f2") + ) + (fp_poly + (pts + (xy 4.39 -3.17) (xy 13.39 -3.17) (xy 13.39 -1.62) (xy 20.43 -1.62) (xy 20.43 50.68) (xy -2.65 50.68) + (xy -2.65 -1.62) (xy 4.39 -1.62) + ) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "522d8da4-3696-445e-b946-08b014507bd8") + ) + (fp_line + (start -1.61 -0.37) + (end -0.61 -1.37) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "14ae5a25-4bdb-4c90-89ef-24b4ef6fe49d") + ) + (fp_line + (start -1.61 49.13) + (end -1.61 -0.37) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "0e9e86cf-94eb-4468-9961-662130668050") + ) + (fp_line + (start -0.61 -1.37) + (end 18.89 -1.37) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "e4333e89-5e70-4279-85e5-08367a6092de") + ) + (fp_line + (start 4.265 10.055) + (end 4.265 11.205) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "bfbc85f2-f762-4b37-a1d2-75deff314253") + ) + (fp_line + (start 6.515 10.055) + (end 6.515 11.205) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "42b6bca8-80bd-4860-9245-f8f7d512b6b9") + ) + (fp_line + (start 18.89 49.63) + (end -1.11 49.63) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f55b5088-83ee-42ee-9163-43ef5e7d05e7") + ) + (fp_line + (start 19.39 -0.87) + (end 19.39 49.13) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "dccd72a9-50e6-46fb-9208-eb5ad8a83e3c") + ) + (fp_rect + (start 2.39 3.03) + (end 3.99 3.83) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "f18fcf13-a6b3-41a9-9e61-dc747619575e") + ) + (fp_rect + (start 2.69 3.03) + (end 3.69 3.83) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "1f91b42a-563e-4810-864a-1d9bb63a799e") + ) + (fp_rect + (start 3.79 8.505) + (end 6.99 12.755) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "91c54cb7-604c-40a8-9b9c-df490d0de431") + ) + (fp_arc + (start -1.11 49.63) + (mid -1.463553 49.483553) + (end -1.61 49.13) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "18bdbd9b-50ac-479d-9ae0-95cc3e7a80ae") + ) + (fp_arc + (start 4.265 10.055) + (mid 5.39 8.93) + (end 6.515 10.055) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "ec1085dc-4b0e-4887-ac88-188bf06d8c02") + ) + (fp_arc + (start 6.515 11.205) + (mid 5.39 12.33) + (end 4.265 11.205) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "e9bad97e-66fa-4c72-a831-66afcbc32cae") + ) + (fp_arc + (start 18.89 -1.37) + (mid 19.243553 -1.223553) + (end 19.39 -0.87) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "97cd3e45-7613-4d6f-ae8e-8b55148293c5") + ) + (fp_arc + (start 19.39 49.13) + (mid 19.243553 49.483553) + (end 18.89 49.63) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "e97949aa-c2a3-4682-8896-e02ef230c2db") + ) + (fp_poly + (pts + (xy 12.68 2.93) (xy 12.68 -2.07) (xy 12.89 -2.07) (xy 12.89 -2.67) (xy 4.89 -2.67) (xy 4.89 -2.07) + (xy 5.1 -2.07) (xy 5.1 2.93) + ) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "51b2062d-9018-40fa-be42-16ab29de67de") + ) + (fp_text user "${REFERENCE}" + (at 8.89 24.13 90) + (layer "F.Fab") + (uuid "02fc3602-2c07-42fc-bd41-7a0ae5b83a2f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole roundrect + (at 0 0) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.125) + (net "I2C_SDA_3V3") + (uuid "b856ce74-7ce0-4461-858d-21319142fe9f") + ) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "I2C_SCL_3V3") + (uuid "14cabb3b-0c23-419d-aca5-d809a8e186e5") + ) + (pad "3" thru_hole custom + (at 0 5.08) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy 0.8 0.6) (xy 0.8 -0.6) (xy 0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy 0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 0.6) + (end 0.8 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 -0.6) + (end 0.8 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "0b1edc77-47c2-4f5d-8159-032eebcab9d0") + ) + (pad "4" thru_hole circle + (at 0 7.62) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "abd1d8b8-18dd-4616-ad1e-9d552991647a") + ) + (pad "5" thru_hole circle + (at 0 10.16) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "07eabee1-5cfe-44e2-80e1-3902770ef420") + ) + (pad "6" thru_hole circle + (at 0 12.7) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "e3f16b28-1f19-434a-9769-ed4c1f9bcaf4") + ) + (pad "7" thru_hole circle + (at 0 15.24) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "2c8b54e9-e4e7-426f-b8c2-88f78c0fbd32") + ) + (pad "8" thru_hole custom + (at 0 17.78) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy 0.8 0.6) (xy 0.8 -0.6) (xy 0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy 0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 0.6) + (end 0.8 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 -0.6) + (end 0.8 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "83fd10d6-cb4a-4631-8ab1-0b6ec552c923") + ) + (pad "9" thru_hole circle + (at 0 20.32) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_TXD") + (uuid "725fdd17-7cc5-45ce-85e5-1d9e1bbb72e2") + ) + (pad "10" thru_hole circle + (at 0 22.86) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_RXD") + (uuid "7797ab62-2a04-4d4b-9f52-8b9d2f6c3a5a") + ) + (pad "11" thru_hole circle + (at 0 25.4) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_CDT") + (uuid "eb044dd7-e2c4-4b7c-b41f-68d22392a200") + ) + (pad "12" thru_hole circle + (at 0 27.94) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "PTT_DRV") + (uuid "66c19f2f-6aaa-4451-892f-2632c1f1730d") + ) + (pad "13" thru_hole custom + (at 0 30.48) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy 0.8 0.6) (xy 0.8 -0.6) (xy 0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy 0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 0.6) + (end 0.8 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 -0.6) + (end 0.8 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "4b405003-c0da-4d8b-b816-0bf2f26d4b73") + ) + (pad "14" thru_hole circle + (at 0 33.02) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_PTT_N") + (uuid "e46b9cad-d78f-4d8a-b8b7-6b37d0b69a0d") + ) + (pad "15" thru_hole circle + (at 0 35.56) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_DCD_N") + (uuid "b160a8bf-dd9a-4254-a172-2faf0444fd9b") + ) + (pad "16" thru_hole circle + (at 0 38.1) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_TXRX_N") + (uuid "c6260c10-5331-4722-b860-058d6b84437f") + ) + (pad "17" thru_hole circle + (at 0 40.64) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "8dac0faa-d564-4f7c-afe9-85aa66f3c54c") + ) + (pad "18" thru_hole custom + (at 0 43.18) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy 0.8 0.6) (xy 0.8 -0.6) (xy 0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy 0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 0.6) + (end 0.8 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center 0.6 -0.6) + (end 0.8 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "3c4deb53-4d25-4955-8472-d33cb1eb8eb3") + ) + (pad "19" thru_hole circle + (at 0 45.72) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "cf174319-573d-435f-a22d-efc920c1cca2") + ) + (pad "20" thru_hole circle + (at 0 48.26) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "214c073f-aef1-459a-8066-14bf03ca005d") + ) + (pad "21" thru_hole circle + (at 17.78 48.26) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "36576fed-8c56-440e-8de5-e0a2e2e886fd") + ) + (pad "22" thru_hole circle + (at 17.78 45.72) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "00716868-2c9d-4b80-a891-5d7e1df5692a") + ) + (pad "23" thru_hole custom + (at 17.78 43.18) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy -0.8 0.6) (xy -0.8 -0.6) (xy -0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy -0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 0.6) + (end -0.4 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 -0.6) + (end -0.4 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "f159a746-4837-41fa-981d-8b4e67f01933") + ) + (pad "24" thru_hole circle + (at 17.78 40.64) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "d5909047-6968-4343-bd93-8541b603296a") + ) + (pad "25" thru_hole circle + (at 17.78 38.1) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "1a7b4704-6a0f-4af5-8586-ebee7e26bece") + ) + (pad "26" thru_hole circle + (at 17.78 35.56) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "ae41e52b-9bf8-4d60-9b6a-47b7d2ee3265") + ) + (pad "27" thru_hole circle + (at 17.78 33.02) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "9b3e47cb-efcc-4965-a81d-63a0f13c5f40") + ) + (pad "28" thru_hole custom + (at 17.78 30.48) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy -0.8 0.6) (xy -0.8 -0.6) (xy -0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy -0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 0.6) + (end -0.4 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 -0.6) + (end -0.4 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "b9afa3f4-6422-4f68-af23-6bb8584c4c47") + ) + (pad "29" thru_hole circle + (at 17.78 27.94) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "31fd3dea-79db-458f-8d21-8c90f1ef301f") + ) + (pad "30" thru_hole circle + (at 17.78 25.4) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "a52f5f61-3ee7-47c1-ba8e-3e5d3ca472ad") + ) + (pad "31" thru_hole circle + (at 17.78 22.86) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "a1d2d3c2-3e03-4425-a214-c6f9c6f47b15") + ) + (pad "32" thru_hole circle + (at 17.78 20.32) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "3742279f-e898-4f5c-8d39-8249e346fb65") + ) + (pad "33" thru_hole custom + (at 17.78 17.78) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy -0.8 0.6) (xy -0.8 -0.6) (xy -0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy -0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 0.6) + (end -0.4 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 -0.6) + (end -0.4 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "5f1155d1-4465-44e4-b030-387eb5bf3a91") + ) + (pad "34" thru_hole circle + (at 17.78 15.24) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "50db6db7-d9ed-4d51-b673-143097dbdbce") + ) + (pad "35" thru_hole circle + (at 17.78 12.7) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "195c5a66-37fd-4f16-a999-e8f678b1a027") + ) + (pad "36" thru_hole circle + (at 17.78 10.16) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "3V3") + (uuid "fda28c22-4f11-49ee-b90d-96a9f3a5c6c1") + ) + (pad "37" thru_hole circle + (at 17.78 7.62) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "92c47ee7-e114-4159-b55b-732a50424ec9") + ) + (pad "38" thru_hole custom + (at 17.78 5.08) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (options + (clearance outline) + (anchor circle) + ) + (primitives + (gr_poly + (pts + (xy -0.8 0.6) (xy -0.8 -0.6) (xy -0.6 -0.8) (xy 0 -0.8) (xy 0 0.8) (xy -0.6 0.8) + ) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 0.6) + (end -0.4 0.6) + (width 0) + (fill yes) + ) + (gr_circle + (center -0.6 -0.6) + (end -0.4 -0.6) + (width 0) + (fill yes) + ) + ) + (uuid "b6dd3b83-b60e-4995-a2cb-8af4d768882c") + ) + (pad "39" thru_hole circle + (at 17.78 2.54) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "ce5b9710-57db-40dd-89c3-b48a0a0ee7fd") + ) + (pad "40" thru_hole circle + (at 17.78 0) + (size 1.6 1.6) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "79ec5433-7930-4e74-b819-f7024ac0ccfb") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Module.3dshapes/RaspberryPi_Pico_PinSockets_H8.50mm.step" + (hide yes) + (offset + (xyz 8.89 -24.13 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + (model "${KICAD10_3DMODEL_DIR}/Module.3dshapes/RaspberryPi_Pico_AddedHeaders_H2.54mm.step" + (hide yes) + (offset + (xyz 8.89 -24.13 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + (model "${KICAD10_3DMODEL_DIR}/Module.3dshapes/RaspberryPi_Pico_H.step" + (offset + (xyz 8.89 -24.13 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + (model "${KICAD10_3DMODEL_DIR}/Module.3dshapes/RaspberryPi_Pico_W_AddedHeaders_H2.54mm.step" + (hide yes) + (offset + (xyz 8.89 -24.13 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + (model "${KICAD10_3DMODEL_DIR}/Module.3dshapes/RaspberryPi_Pico_WH.step" + (hide yes) + (offset + (xyz 8.89 -24.13 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Fuse_Bourns_MF-RG500" + (layer "F.Cu") + (uuid "c1e9244e-9d1b-486d-9b85-a0ce5fd5dd3a") + (at 131.82 28.9 90) + (descr "PTC Resettable Fuse, Ihold = 5.0A, Itrip=8.5A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf") + (tags "ptc resettable fuse polyfuse THT") + (property "Reference" "F1" + (at 7.64 -1.9 0) + (layer "F.SilkS") + (uuid "8379bb8b-80a6-4846-aedd-96e2b186566c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "MF-RG500" + (at 2.56 6.28 0) + (layer "F.Fab") + (uuid "73878f17-a941-49ea-83de-5c122de80e98") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "46be5fc5-2fc4-402e-a185-1b0f13be1d20") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "780ec98c-3a75-4b84-a09b-d5698628ed34") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "fuse" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "bc5105e0-3302-48db-adcd-c7fa52471396") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/00000000-0000-0000-0000-0000000000f1") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 7.85 -1) + (end 7.85 2.2) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2f7c5003-a137-4bce-8ac9-cbcf32a54226") + ) + (fp_line + (start 0.838 -1) + (end 7.85 -1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "51c9f213-28aa-4e5a-a1ce-f0ecbf507771") + ) + (fp_line + (start -2.75 -1) + (end -0.838 -1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "750b8eb6-e9b4-4c50-b54e-eaa83a2eec0a") + ) + (fp_line + (start 7.85 2.2) + (end 5.938 2.2) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dc2366ca-eb7b-416c-992e-62ad951272b6") + ) + (fp_line + (start 4.262 2.2) + (end -2.75 2.2) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ba7def3f-a836-403b-bbdf-6e96db2abde9") + ) + (fp_line + (start -2.75 2.2) + (end -2.75 -1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b9500369-1cda-4125-bee7-31545732d82d") + ) + (fp_rect + (start -2.9 -1.15) + (end 8 2.35) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "6e8cc6ec-ce64-4c25-9d1e-3f74ee380607") + ) + (fp_rect + (start -2.65 -0.9) + (end 7.75 2.1) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "16808eaf-0eaf-4acc-b7f1-2931a295bffc") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 2.01 2.01) + (drill 1.01) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_REG") + (uuid "477e9913-d0d1-433a-bcf9-25a8a74c376d") + ) + (pad "2" thru_hole circle + (at 5.1 1.2) + (size 2.01 2.01) + (drill 1.01) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V") + (uuid "896d1b3f-d67f-403e-8608-628c21d8f0b0") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Fuse.3dshapes/Fuse_Bourns_MF-RG500.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "F.Cu") + (uuid "cfc5638a-3576-4545-86d8-144ffc62afd9") + (at 153.34 64) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_LED4" + (at 6.5 -2.37 0) + (layer "F.SilkS") + (uuid "f4b7c81a-fc23-4398-acfa-6f4c1caba345") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "1k" + (at 5.08 2.37 0) + (layer "F.Fab") + (uuid "0096008e-15c3-4e98-aeb6-9333e69aaa48") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "2377f854-12fc-427b-83c4-b5f64c1b9f26") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "c552970d-5380-4aa1-a9c6-fa0c73f8a022") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "6a91a055-edde-471c-9082-ad5660ba45cc") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/cbf8c832-3e90-4605-bbbe-9687683faa18") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "449aebc4-8f1f-4808-ad14-1c4a5a425ef8") + ) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "703c2257-849e-4e98-bf2f-aeb6aeb76065") + ) + (fp_rect + (start 1.81 -1.37) + (end 8.35 1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "4ba11d03-92ba-4fa9-a24b-c0935ebe6c9c") + ) + (fp_rect + (start -1.05 -1.5) + (end 11.21 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "2b81bae5-0524-4b09-9e1b-5951876eace2") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "e4fe89c9-7c37-46d7-9b82-fc724a11ada2") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "0937dfff-cef4-4fa4-8a5c-70f1ebf4d749") + ) + (fp_rect + (start 1.93 -1.25) + (end 8.23 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "536ad660-01b5-4f2a-92a8-e4a39a5d83f3") + ) + (fp_text user "${REFERENCE}" + (at 5.08 0 0) + (layer "F.Fab") + (uuid "450dc67f-2956-4bb3-8f5b-561ea38deb01") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_TXRX_N") + (uuid "14583171-e691-4da7-b8f4-b312741cda11") + ) + (pad "2" thru_hole circle + (at 10.16 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_TXRX_A") + (uuid "0d094bd9-e340-4e19-b07b-0465d73d30de") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "LED_D3.0mm" + (layer "F.Cu") + (uuid "db001652-22f6-4c72-b27e-518848e08d02") + (at 173.66 52 90) + (descr "LED, diameter 3.0mm, 2 pins, generated by kicad-footprint-generator") + (tags "LED") + (property "Reference" "LED_DCD" + (at 5.34 0 0) + (layer "F.SilkS") + (uuid "1e8f99b9-e140-4a0a-bf6e-cae864f68f86") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "DCD" + (at 0.26 -5.08 0) + (layer "F.Fab") + (uuid "bd9e0ed7-a103-4928-a66e-c1aa5fe0ef6b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "fd07d3b1-e6c4-4d7c-803d-5128fabcd593") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "313c26a8-3e42-406a-b8e1-065283ac24ea") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "LED/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "a33d7f22-27f4-48d8-b1a7-b030d809d333") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/137cb216-6d36-4ead-99d0-5c8d1a3918d1") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.29 -1.236) + (end -0.29 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dd1b682c-a21c-4593-a79a-35424f53cb2f") + ) + (fp_line + (start -0.29 1.08) + (end -0.29 1.236) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "32240639-7745-4036-947e-81d00cc0d351") + ) + (fp_arc + (start -0.29 -1.235516) + (mid 1.36566 -1.987699) + (end 2.941437 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a687f512-d4d8-4300-92c7-c2d3254ff653") + ) + (fp_arc + (start 0.229039 -1.08) + (mid 1.27 -1.5) + (end 2.310961 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9ea34f41-5ca8-43f5-9828-450f687f8dc2") + ) + (fp_arc + (start 2.941437 1.08) + (mid 1.36566 1.987699) + (end -0.29 1.235516) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5ddf7f04-139b-491b-b9d6-cd4a24b6a678") + ) + (fp_arc + (start 2.310961 1.08) + (mid 1.27 1.5) + (end 0.229039 1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f1810e64-5327-41e9-bd9a-6b19c863db46") + ) + (fp_rect + (start -1.15 -2.21) + (end 3.69 2.21) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "a2e8531c-e040-418c-8440-12780115f9ec") + ) + (fp_line + (start -0.23 -1.16619) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "45ff6103-1a40-436a-8b57-c43fd4dbe02c") + ) + (fp_arc + (start -0.23 -1.16619) + (mid 3.17 0) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "b02b7c04-dbb7-4e1a-99b3-1dafc8f77c11") + ) + (fp_circle + (center 1.27 0) + (end 2.77 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "87cd02a4-5dbf-446c-bd16-c0c32289de21") + ) + (point + (at -3.07 0) + (size 2) + (layer "F.Fab") + (uuid "bf43da38-43bc-41b0-94d5-81f72d6ee230") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "60184952-13aa-4a45-a593-585f764dd23a") + ) + (pad "2" thru_hole circle + (at 2.54 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_DCD_A") + (uuid "48a57295-d3fd-4ab9-9db2-2aa3f1288f04") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/LED_THT.3dshapes/LED_D3.0mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "MountingHole_3.2mm_M3" + (layer "F.Cu") + (uuid "dc51be39-8b9d-4508-9ce4-d4a265166416") + (at 6 6) + (descr "Mounting Hole 3.2mm, M3, no annular, generated by kicad-footprint-generator mountinghole.py") + (tags "mountinghole M3") + (property "Reference" "H1" + (at 5.1 0.02 0) + (layer "F.SilkS") + (uuid "77f38d2b-d3cd-4580-ac22-43957dac805b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "M3" + (at 0 5.1 0) + (layer "F.Fab") + (uuid "a57abacb-efb4-4e28-a32e-47b9665dae71") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "f73d25e6-8d4c-4201-bfde-0dbb5dab3996") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "13dbd19e-d55d-4f06-8bb2-d1d1c6ef666a") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "mounting_hardware/mounting_hole" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "66681611-daa5-4bbb-93e4-718fc5115439") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/afb849d3-7e6f-4bd4-89ab-99fc9ce9acab") + (attr exclude_from_pos_files exclude_from_bom) + (duplicate_pad_numbers_are_jumpers no) + (fp_circle + (center 0 0) + (end 3.2 0) + (stroke + (width 0.15) + (type solid) + ) + (fill no) + (layer "Cmts.User") + (uuid "024a0a4d-d73d-4ec4-8192-cdeb0ea0de6c") + ) + (fp_circle + (center 0 0) + (end 3.45 0) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "dcf58587-7e83-4c6f-b163-4291cc39a59f") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "f3384378-085b-49c5-bec4-25af0962f4fb") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at 0 0) + (size 3.2 3.2) + (drill 3.2) + (layers "*.Cu" "*.Mask") + (uuid "f560dd40-3fcc-4140-938c-767045de1d8d") + ) + (embedded_fonts no) + ) + (footprint "Potentiometer_Bourns_3296W_Vertical" + (layer "F.Cu") + (uuid "e074dc42-38ed-4d68-9638-50df8277b8d0") + (at 160.96 145.72) + (descr "Potentiometer, vertical, Bourns 3296W, https://www.bourns.com/pdfs/3296.pdf") + (tags "Potentiometer vertical Bourns 3296W") + (property "Reference" "RV2" + (at 2.54 -3.5 0) + (layer "F.SilkS") + (uuid "0cdea029-a631-4ea4-81d6-eee862589d14") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "10k contrast" + (at -2.54 3.67 0) + (layer "F.Fab") + (uuid "6f6fe575-4987-4267-8c8c-e96a8afb46f8") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "50338528-26e8-4681-9866-3cf38c8604b6") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "62940e7d-5774-4e65-ba43-904a42361cfa") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "potentiometer/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "317ce60c-2c59-4fa7-8683-2f6731d4e6a1") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/3ab53dbe-64f3-4932-b0b2-3833da31c1c6") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -7.415 -2.52) + (end 2.335 -2.52) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "09051e6a-75be-46a6-ba6d-ab23763d1939") + ) + (fp_line + (start -7.415 2.53) + (end -7.415 -2.52) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9c8abe30-8745-430e-a44d-f3a7d853e874") + ) + (fp_line + (start 2.335 -2.52) + (end 2.335 2.53) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "25292781-6263-41af-8a6c-f1f8456c3882") + ) + (fp_line + (start 2.335 2.53) + (end -7.415 2.53) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "05ccd2e8-38d9-466c-9a62-913f8414d0a2") + ) + (fp_rect + (start -7.56 -2.66) + (end 2.48 2.67) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "794a4473-5683-4f53-b2e9-82601456156c") + ) + (fp_line + (start 1.652 0.32) + (end 0.125 1.847) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "cef71e8e-5300-4492-8069-0fd260171bda") + ) + (fp_line + (start 1.785 0.453) + (end 0.258 1.98) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "92556cde-44d6-4de0-9dcd-33ca65c190ca") + ) + (fp_rect + (start -7.305 -2.41) + (end 2.225 2.42) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "09c1e049-f212-4d76-bfba-52f8eec0580e") + ) + (fp_circle + (center 0.955 1.15) + (end 2.05 1.15) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "3bb0d38a-4da6-4557-a435-7f2d36528e1c") + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "f5ff9ca7-205a-4240-a557-d2f65ea943a4") + ) + (pad "2" thru_hole circle + (at -2.54 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LCD_VO") + (uuid "a247e17c-9267-4ee2-87d1-9db47af4335b") + ) + (pad "3" thru_hole circle + (at -5.08 0) + (size 1.44 1.44) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "0455e73b-e756-41f2-a01a-eb3c5ccbea65") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Potentiometer_THT.3dshapes/Potentiometer_Bourns_3296W_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "F.Cu") + (uuid "e18ef1ed-1318-46c1-98ad-7875323e1b35") + (at 153.34 52) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_LED3" + (at 6.5 -2.5 0) + (layer "F.SilkS") + (uuid "ace876e6-86e4-4f10-aeaf-fb4b4e93eb66") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "1k" + (at 5.08 2.37 0) + (layer "F.Fab") + (uuid "e72293eb-b13a-43a2-b3bf-cff7fea605fe") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "8d1a6d41-d043-4cbf-8e05-d4323f741cf2") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "49cee4fa-7017-46ce-98aa-c81cedfb56c2") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "6e278f7f-7e25-4b2c-8226-1e5b9958eb62") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/92e6b544-0c7f-45e9-87f5-2be4105d04a9") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "25a4deef-6cd4-4c38-96ba-3d0c4a17fee7") + ) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4304b3d2-14d7-4275-a54f-126617081d56") + ) + (fp_rect + (start 1.81 -1.37) + (end 8.35 1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "78be0af8-69d9-4e08-8961-e452ef71a028") + ) + (fp_rect + (start -1.05 -1.5) + (end 11.21 1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "62e18a42-aeaa-4c98-b608-21354f2b59e7") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4a91b9a9-66e8-48dc-bdae-fbabdc126117") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1fda14bb-c5c7-41d1-b342-0addea1cb264") + ) + (fp_rect + (start 1.93 -1.25) + (end 8.23 1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "400ed4ab-3252-42d1-8a06-2b206d102478") + ) + (fp_text user "${REFERENCE}" + (at 5.08 0 0) + (layer "F.Fab") + (uuid "bd666154-d774-434a-9aee-ac2fd77a05d9") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole circle + (at 0 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_DCD_N") + (uuid "67426617-716b-4fdd-8b50-6f08f6347a4c") + ) + (pad "2" thru_hole circle + (at 10.16 0) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_DCD_A") + (uuid "b706ce13-37b0-40a7-a062-d3860adaf8ad") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "LED_D3.0mm" + (layer "F.Cu") + (uuid "e31d4cea-bf30-4bfa-9894-6b5ef15d5cb2") + (at 173.66 40 90) + (descr "LED, diameter 3.0mm, 2 pins, generated by kicad-footprint-generator") + (tags "LED") + (property "Reference" "LED_PTT" + (at 6.04 0 0) + (layer "F.SilkS") + (uuid "0a3768b7-66c4-404a-ac5a-4ed7b1a1d9d0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "PTT" + (at 0.96 -5.08 0) + (layer "F.Fab") + (uuid "3970497a-a326-45af-8b26-fc8c348849ec") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "df421d98-c054-4488-b90f-d8cedae598ac") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "d26c3a18-e18d-45db-b517-96b1c810ac2a") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "LED/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "c9fefb40-81a3-4974-9e59-c7fad0a984f4") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/51ddcf64-e41a-4942-a9b3-55a304d49734") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.29 -1.236) + (end -0.29 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ddf0a95a-320d-4e80-824d-a0e463c173cd") + ) + (fp_line + (start -0.29 1.08) + (end -0.29 1.236) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2f978a97-17a2-458b-914b-052bf350d341") + ) + (fp_arc + (start -0.29 -1.235516) + (mid 1.36566 -1.987699) + (end 2.941437 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "52c00d98-b1e1-4c62-b67f-0712f202abed") + ) + (fp_arc + (start 0.229039 -1.08) + (mid 1.27 -1.5) + (end 2.310961 -1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3cad91e8-64e6-4243-9141-a7576a3a5bce") + ) + (fp_arc + (start 2.941437 1.08) + (mid 1.36566 1.987699) + (end -0.29 1.235516) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8c15cb9a-e3cb-40be-9e2f-7a7cf28246e1") + ) + (fp_arc + (start 2.310961 1.08) + (mid 1.27 1.5) + (end 0.229039 1.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "567cfaa1-40fd-4a55-8dde-c65563a9adca") + ) + (fp_rect + (start -1.15 -2.21) + (end 3.69 2.21) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "f450a41e-9100-4f53-9a87-7143fa0f317e") + ) + (fp_line + (start -0.23 -1.16619) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "5e62b2f8-5371-48a9-93db-5af6db7a58a4") + ) + (fp_arc + (start -0.23 -1.16619) + (mid 3.17 0) + (end -0.23 1.16619) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "444e0978-81e7-4240-8a3b-9e3820357827") + ) + (fp_circle + (center 1.27 0) + (end 2.77 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "c745c85c-4238-4790-9bc7-377435826f2e") + ) + (point + (at -3.07 0) + (size 2) + (layer "F.Fab") + (uuid "2b8d1f0c-5ad3-4434-83be-34c6c5bb4acc") + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "72e506f5-635e-467a-a612-b702903ccb2d") + ) + (pad "2" thru_hole circle + (at 2.54 0) + (size 1.8 1.8) + (drill 0.9) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "LED_PTT_A") + (uuid "9a8f1f17-50fd-405b-a4aa-4d278e8da070") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/LED_THT.3dshapes/LED_D3.0mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "D_DO-41_SOD81_P10.16mm_Horizontal" + (layer "F.Cu") + (uuid "ee404ffc-3dcd-43c6-890c-a694f697ee7e") + (at 145.72 10) + (descr "Diode, DO-41_SOD81 series, Axial, Horizontal, pin pitch=10.16mm, length*diameter=5.2*2.7mm^2, https://www.diodes.com/assets/Package-Files/DO-41-Plastic.pdf") + (tags "Diode DO-41_SOD81 series Axial Horizontal pin pitch 10.16mm length 5.2mm diameter 2.7mm") + (property "Reference" "D_OR1" + (at 5.08 -2.47 0) + (layer "F.SilkS") + (uuid "a4ccdf7d-011e-4fd3-99ef-769346f9d8bd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "1N5819" + (at 5.08 2.47 0) + (layer "F.Fab") + (uuid "9f55c63c-64ef-4b13-89ed-d8b2ba38bd44") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "a0413087-30ef-4c62-9157-d1a0f044b899") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "deff6d2e-e4c1-4ad9-aba1-310034fcb96d") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "diode/THT" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "8b8f5231-3c03-40da-b753-695c5efee6cf") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/1658740e-2a47-4506-99d2-abf221454a7f") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.34 0) + (end 2.36 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "daccfd7c-ec7e-4925-8be6-daef0102aee4") + ) + (fp_line + (start 3.14 -1.47) + (end 3.14 1.47) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "996f65aa-a944-4dae-af36-47353b394a27") + ) + (fp_line + (start 3.26 -1.47) + (end 3.26 1.47) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7d1c0c20-b590-4a1f-a58d-48b28e3fe816") + ) + (fp_line + (start 3.38 -1.47) + (end 3.38 1.47) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e555e7b3-f2ef-4d02-98af-55455ce6cba0") + ) + (fp_line + (start 8.82 0) + (end 7.8 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "aa9d9d59-0216-46ea-b0b8-efa336b9692e") + ) + (fp_rect + (start 2.36 -1.47) + (end 7.8 1.47) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "649ce73e-8afd-4883-9492-a594a16e19a2") + ) + (fp_rect + (start -1.35 -1.6) + (end 11.51 1.6) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "b2b5bc4c-96d3-48be-8149-f59edb9a49b3") + ) + (fp_line + (start 0 0) + (end 2.48 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "07d91d45-3127-4246-bd12-44efc766e7ef") + ) + (fp_line + (start 3.16 -1.35) + (end 3.16 1.35) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a917af76-aa64-422c-b161-79b8e1b20405") + ) + (fp_line + (start 3.26 -1.35) + (end 3.26 1.35) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "54a3eec1-0bcf-4cd7-a0b2-eb5cf48ca4eb") + ) + (fp_line + (start 3.36 -1.35) + (end 3.36 1.35) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4d86d8d9-aba4-4556-88d8-a421e1baf9c2") + ) + (fp_line + (start 10.16 0) + (end 7.68 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "70b8be8a-c773-4a1c-9fdd-6c6b17897b0a") + ) + (fp_rect + (start 2.48 -1.35) + (end 7.68 1.35) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "b6217a74-f52f-43a6-aca3-10f059e38724") + ) + (fp_text user "K" + (at 0 -2.1 0) + (layer "F.SilkS") + (uuid "6fd20f99-add2-4cfe-8410-09c83eaa5946") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (fp_text user "K" + (at 0 -2.1 0) + (layer "F.Fab") + (uuid "36d2e30e-2c14-4b66-8e4b-906c8d7c2c2d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole roundrect + (at 0 0) + (size 2.2 2.2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.113636) + (net "+5V_OR") + (uuid "daf87b91-6b89-4919-ad40-1c8d0b271f4c") + ) + (pad "2" thru_hole circle + (at 10.16 0) + (size 2.2 2.2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V") + (uuid "35cbe9da-6fcd-4584-923e-70487b66f55b") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Diode_THT.3dshapes/D_DO-41_SOD81_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "B.Cu") + (uuid "118855cd-5282-413e-854f-ef57b17f86f3") + (at 28.88 54.28 180) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_TXR1" + (at 5.08 2.37 0) + (layer "B.SilkS") + (uuid "933c37f0-f44a-448c-9a9e-ce18de2805f2") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "0R" + (at 5.08 -2.37 0) + (layer "B.Fab") + (uuid "0d9832b8-0ce7-4e6b-9b1c-f85c4abbaee1") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "76bcca3b-cbf6-4c5f-b10c-c8dd4afc113b") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "d599c031-792b-4a3b-b8c8-e2dbeee0de5c") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "B.SilkS") + (hide yes) + (uuid "f779fa80-4d73-4a05-8efe-ca5cfea22189") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (path "/073a2608-8e17-453e-963c-effe4f3922ee") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "6f0897d0-0b52-43bf-9056-2088ae8eb1ef") + ) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "4866a531-ee17-4440-9820-9288160c4c6b") + ) + (fp_rect + (start 1.81 1.37) + (end 8.35 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "B.SilkS") + (uuid "aca1244a-5e14-479b-9111-23813823e77d") + ) + (fp_rect + (start -1.05 1.5) + (end 11.21 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "B.CrtYd") + (uuid "18d675da-ed44-406d-b5f3-acd2d5daaa50") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "4c25f281-95b0-470b-b231-f2fcbcae4444") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "237ffe6e-88f3-4747-8253-8ec5714ec2d9") + ) + (fp_rect + (start 1.93 1.25) + (end 8.23 -1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "41f95083-ab12-43a1-86ec-c1d57b02e046") + ) + (pad "1" thru_hole circle + (at 0 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TXR1_N") + (uuid "627fe02f-5d99-4bbb-b021-616a1a714c56") + ) + (pad "2" thru_hole circle + (at 10.16 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "6ef598d1-1e65-4334-81c9-99f74b0edbe5") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "CP_Radial_D8.0mm_P3.50mm" + (layer "B.Cu") + (uuid "146de104-6b47-4141-b2e6-234b52d14604") + (at 117.78 16.18 180) + (descr "CP, Radial series, Radial, pin pitch=3.50mm, diameter=8mm, height=12mm, Electrolytic Capacitor") + (tags "CP Radial series Radial pin pitch 3.50mm diameter 8mm height 12mm Electrolytic Capacitor") + (property "Reference" "C_IN" + (at 1.75 5.25 0) + (layer "B.SilkS") + (uuid "4bad26d3-77dd-462a-8432-2346818d04be") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "100uF" + (at 0 -5.25 0) + (layer "B.Fab") + (hide yes) + (uuid "aa782ab0-93d0-4ce4-a057-89c00f01117c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "5f9a62ab-3e3a-4834-97d0-00a8b181b64f") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "10a230cd-3de3-41b7-900f-7fd3aee0dbac") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "B.SilkS") + (hide yes) + (uuid "4916bd8d-3d3c-4c84-a1aa-12ecde500315") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (path "/3c4b5bd5-5b37-4322-a2cd-9768e252839c") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 5.83 0.533) + (end 5.83 -0.533) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "15cf5c96-aabf-440f-9743-f8f96e38f7a8") + ) + (fp_line + (start 5.79 0.768) + (end 5.79 -0.768) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "2c1cfb70-67a7-4a98-b284-1435d2fd39eb") + ) + (fp_line + (start 5.75 0.947) + (end 5.75 -0.947) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "39d83f73-a11b-4df1-b03a-b78399494e63") + ) + (fp_line + (start 5.71 1.097) + (end 5.71 -1.097) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "51047570-226c-4ff8-b815-a5380e3b41ae") + ) + (fp_line + (start 5.67 1.228) + (end 5.67 -1.228) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "757c1383-a0c6-4d66-b0be-91e0358b8896") + ) + (fp_line + (start 5.63 1.346) + (end 5.63 -1.346) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f9e1179c-dbdc-48ac-872b-a34b52310199") + ) + (fp_line + (start 5.59 1.453) + (end 5.59 -1.453) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9221bfa0-b307-4a05-b4c6-19f586680257") + ) + (fp_line + (start 5.55 1.552) + (end 5.55 -1.552) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "6f9fc719-a4ac-4c7f-8b99-cb1d58f26868") + ) + (fp_line + (start 5.51 1.644) + (end 5.51 -1.644) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "1f5c39ca-1f31-4514-b1a0-967fe0387574") + ) + (fp_line + (start 5.47 1.731) + (end 5.47 -1.731) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f8bc7041-5825-414d-a2dd-5538f0f1cd75") + ) + (fp_line + (start 5.43 1.813) + (end 5.43 -1.813) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f07628fc-d55e-4b77-9689-5aced7283e93") + ) + (fp_line + (start 5.39 1.89) + (end 5.39 -1.89) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "34c5f3a0-ff95-472a-8256-1bda7bdea210") + ) + (fp_line + (start 5.35 1.964) + (end 5.35 -1.964) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "e81b5b2f-85e6-493a-a66f-e9a1bc60f155") + ) + (fp_line + (start 5.31 2.034) + (end 5.31 -2.034) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "11911df7-03bd-4a7c-b300-120fafcd2569") + ) + (fp_line + (start 5.27 2.101) + (end 5.27 -2.101) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "69f6708f-8d00-40ba-be17-7ea18da1c5ec") + ) + (fp_line + (start 5.23 2.165) + (end 5.23 -2.165) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "fc05bebe-3a4d-4d73-8180-d607228d20ff") + ) + (fp_line + (start 5.19 2.227) + (end 5.19 -2.227) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "13c748a1-b312-475c-935e-00314df027d0") + ) + (fp_line + (start 5.15 2.287) + (end 5.15 -2.287) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "1b475ef8-b325-416b-95fe-8114bb491b12") + ) + (fp_line + (start 5.11 2.344) + (end 5.11 -2.344) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "3c089aa5-5518-48f0-9341-594d86586f61") + ) + (fp_line + (start 5.07 2.4) + (end 5.07 -2.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9da6f0f2-725c-4c6e-a2f1-ae557f45753d") + ) + (fp_line + (start 5.03 2.453) + (end 5.03 -2.453) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "e6a8bf23-c4fa-4563-ae14-b4a596800170") + ) + (fp_line + (start 4.99 2.505) + (end 4.99 -2.505) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "d522a5a6-bc88-47f3-b756-cd06fbdb8827") + ) + (fp_line + (start 4.95 2.555) + (end 4.95 -2.555) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "495ba7cb-82bb-416d-83b1-10ba3ddde87e") + ) + (fp_line + (start 4.91 2.604) + (end 4.91 -2.604) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "d224616b-d6a9-4a9d-a956-1c6a9a56ba1b") + ) + (fp_line + (start 4.87 2.651) + (end 4.87 -2.651) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "a5d26a82-3daa-488b-b67b-cb85fe6b753f") + ) + (fp_line + (start 4.83 2.696) + (end 4.83 -2.696) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "826b32c3-e26a-4e4f-b0c2-59b8cfb77089") + ) + (fp_line + (start 4.79 2.741) + (end 4.79 -2.741) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "09d491e7-b733-4df9-b5fe-a1b847857888") + ) + (fp_line + (start 4.75 2.784) + (end 4.75 -2.784) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f8bff706-885f-45bb-9781-cea9a9540a0b") + ) + (fp_line + (start 4.71 2.826) + (end 4.71 -2.826) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ce091c05-780d-42d2-8b59-1fb71aeeec10") + ) + (fp_line + (start 4.67 2.867) + (end 4.67 -2.867) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "80321ed8-56f8-4330-9fae-c0ebd03816d9") + ) + (fp_line + (start 4.63 2.906) + (end 4.63 -2.906) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "376f2fe4-c231-4682-b3a4-dc94b21f167e") + ) + (fp_line + (start 4.59 2.945) + (end 4.59 -2.945) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "a1371e77-ba3f-4af3-a9f5-ac8447b112f3") + ) + (fp_line + (start 4.55 2.982) + (end 4.55 -2.982) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f385bf1d-618d-4ef5-870c-746f34a96cc1") + ) + (fp_line + (start 4.51 3.019) + (end 4.51 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "3515636e-71d7-4bcd-a62b-08283c2c029b") + ) + (fp_line + (start 4.51 -1.04) + (end 4.51 -3.019) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f680ba08-654e-4dab-a590-bd0005371019") + ) + (fp_line + (start 4.47 3.055) + (end 4.47 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "921dd1b6-6519-4882-92a2-38d3369799fb") + ) + (fp_line + (start 4.47 -1.04) + (end 4.47 -3.055) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "35d60e77-0f6a-414e-b9e9-08759dcec26a") + ) + (fp_line + (start 4.43 3.089) + (end 4.43 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "5c16a417-6d74-412e-8251-1cf7f9bd9e3c") + ) + (fp_line + (start 4.43 -1.04) + (end 4.43 -3.089) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f83d83ee-da6b-4d92-837a-3b3013998790") + ) + (fp_line + (start 4.39 3.123) + (end 4.39 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "c6b1d05d-8129-4b16-b5de-84a2460d384c") + ) + (fp_line + (start 4.39 -1.04) + (end 4.39 -3.123) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f40b4972-1d5d-4bf8-a748-14143919ab3d") + ) + (fp_line + (start 4.35 3.156) + (end 4.35 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ee6e1029-a70d-4d92-aa13-bf1973c74357") + ) + (fp_line + (start 4.35 -1.04) + (end 4.35 -3.156) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "097785c7-d01e-41fc-801b-077acd963664") + ) + (fp_line + (start 4.31 3.188) + (end 4.31 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "a8823f66-5bfe-4748-9237-a70f82e71180") + ) + (fp_line + (start 4.31 -1.04) + (end 4.31 -3.188) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9c7c4b6c-90b0-46d0-ac50-e5e58aa5c097") + ) + (fp_line + (start 4.27 3.219) + (end 4.27 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "84aad937-cb6b-4c21-9385-59e57a482f63") + ) + (fp_line + (start 4.27 -1.04) + (end 4.27 -3.219) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "dab607ff-da94-4c20-9530-e2f95c100a70") + ) + (fp_line + (start 4.23 3.25) + (end 4.23 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "07bc94ba-ee8a-4556-aad4-14c2a1aab4ed") + ) + (fp_line + (start 4.23 -1.04) + (end 4.23 -3.25) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "8fdafc90-c624-4d67-bf8d-0a51d9b43be7") + ) + (fp_line + (start 4.19 3.28) + (end 4.19 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "af493a8b-73a1-40a4-a8ae-377af90fb32f") + ) + (fp_line + (start 4.19 -1.04) + (end 4.19 -3.28) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "019b5aab-f3ad-4de2-9435-e563d009ab0d") + ) + (fp_line + (start 4.15 3.309) + (end 4.15 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "2bf21f3b-4f1f-4f46-b73d-34cc05bc09d3") + ) + (fp_line + (start 4.15 -1.04) + (end 4.15 -3.309) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "aa05622b-13c9-448b-bb4c-0d542e67e7fe") + ) + (fp_line + (start 4.11 3.337) + (end 4.11 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "c8c5b92a-47b9-47bc-ae7b-9b373de2e07d") + ) + (fp_line + (start 4.11 -1.04) + (end 4.11 -3.337) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "de775bc6-9e28-448b-874a-d19f4c3bd9e5") + ) + (fp_line + (start 4.07 3.365) + (end 4.07 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "2684c444-e3ae-47e0-af88-43a78914ed9c") + ) + (fp_line + (start 4.07 -1.04) + (end 4.07 -3.365) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7d7d8734-630b-43e3-8691-2bfd558c4262") + ) + (fp_line + (start 4.03 3.392) + (end 4.03 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ed91d14e-a25f-4e42-b569-ed70ca8aef64") + ) + (fp_line + (start 4.03 -1.04) + (end 4.03 -3.392) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "570dc430-ab94-4dd3-901c-eee503d2c5ae") + ) + (fp_line + (start 3.99 3.418) + (end 3.99 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ec3dca46-d30c-4fa0-b1ed-f61e9afdf9c4") + ) + (fp_line + (start 3.99 -1.04) + (end 3.99 -3.418) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "a6973682-c1f1-46a9-a44a-c0c895008115") + ) + (fp_line + (start 3.95 3.443) + (end 3.95 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "37fced36-c850-4d47-a9b4-5f2d744dd5a0") + ) + (fp_line + (start 3.95 -1.04) + (end 3.95 -3.443) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "110eb412-0069-426f-b2f6-be402aecedf8") + ) + (fp_line + (start 3.91 3.468) + (end 3.91 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7102342f-e49e-4576-a64d-9cf9c1ede18b") + ) + (fp_line + (start 3.91 -1.04) + (end 3.91 -3.468) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "491d4a88-d816-4e3a-970d-b93565474b4d") + ) + (fp_line + (start 3.87 3.493) + (end 3.87 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "52dc1138-7a2c-4077-8492-f82693c1fd9a") + ) + (fp_line + (start 3.87 -1.04) + (end 3.87 -3.493) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "77794bc3-a6bb-4dca-9373-925767ed60a7") + ) + (fp_line + (start 3.83 3.516) + (end 3.83 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "bed3c944-1f77-4c4b-a971-c224fe771be1") + ) + (fp_line + (start 3.83 -1.04) + (end 3.83 -3.516) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "af8d40a8-cf5a-4c9a-a228-3487ba414240") + ) + (fp_line + (start 3.79 3.539) + (end 3.79 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "5e8a8afa-d823-4c5e-a40d-a7c677015518") + ) + (fp_line + (start 3.79 -1.04) + (end 3.79 -3.539) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "78bcfbdb-28fd-4bb4-95cc-a596fa8667ff") + ) + (fp_line + (start 3.75 3.562) + (end 3.75 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "21611dbe-a048-4c86-bbe9-7ecf8ef15196") + ) + (fp_line + (start 3.75 -1.04) + (end 3.75 -3.562) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f812e3a3-958f-4463-8253-8cd8859cc896") + ) + (fp_line + (start 3.71 3.584) + (end 3.71 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "36b66ef4-aa10-4cec-93b3-4af57fcfb320") + ) + (fp_line + (start 3.71 -1.04) + (end 3.71 -3.584) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "fc597185-271a-4066-9fe4-0920009b1514") + ) + (fp_line + (start 3.67 3.605) + (end 3.67 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "3383fbaa-022a-4485-a39e-b1388ca3912f") + ) + (fp_line + (start 3.67 -1.04) + (end 3.67 -3.605) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "26419477-fdbd-488a-93b4-99a6bbc20b34") + ) + (fp_line + (start 3.63 3.626) + (end 3.63 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "d024e20c-cc4f-4a35-98f1-c17aae5f3718") + ) + (fp_line + (start 3.63 -1.04) + (end 3.63 -3.626) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9514056b-ec67-4a0d-bd57-a61af5e16cdb") + ) + (fp_line + (start 3.59 3.646) + (end 3.59 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7ba376eb-8e5b-4679-8725-d88c9d21d0d2") + ) + (fp_line + (start 3.59 -1.04) + (end 3.59 -3.646) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ab74f3ba-21f3-4f1a-b91e-6865ff2923bd") + ) + (fp_line + (start 3.55 3.666) + (end 3.55 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "60404f45-ab31-4f48-ba61-71f36a96aecf") + ) + (fp_line + (start 3.55 -1.04) + (end 3.55 -3.666) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "df5aa1bf-3d48-4727-9bca-026fe4d9eaa0") + ) + (fp_line + (start 3.51 3.685) + (end 3.51 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "2b340871-4f27-4366-9509-564e4e98afac") + ) + (fp_line + (start 3.51 -1.04) + (end 3.51 -3.685) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "41b4712c-783c-42f8-8ae4-5345056d79d7") + ) + (fp_line + (start 3.47 3.704) + (end 3.47 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "c08c94d0-af40-4d4a-b0b1-dbe7cf71c144") + ) + (fp_line + (start 3.47 -1.04) + (end 3.47 -3.704) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "35b565d7-ccee-457f-a349-d5414f5cdcc1") + ) + (fp_line + (start 3.43 3.722) + (end 3.43 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "6597ff4d-fe35-47ff-8391-6fac4150c592") + ) + (fp_line + (start 3.43 -1.04) + (end 3.43 -3.722) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "29171011-0d22-4278-bbeb-6f8a64a5629d") + ) + (fp_line + (start 3.39 3.74) + (end 3.39 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7775b2df-ff8b-49ce-93e3-4a22ee5e5c85") + ) + (fp_line + (start 3.39 -1.04) + (end 3.39 -3.74) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "16d4545c-feff-46af-a10e-0575e60f2803") + ) + (fp_line + (start 3.35 3.757) + (end 3.35 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "8013b419-9857-43f4-a31e-bb41dc34f078") + ) + (fp_line + (start 3.35 -1.04) + (end 3.35 -3.757) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7e9740d2-31a5-4cdd-8435-0704fe1c046b") + ) + (fp_line + (start 3.31 3.773) + (end 3.31 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9c4b83d6-a125-47b0-81af-1cc574f1da23") + ) + (fp_line + (start 3.31 -1.04) + (end 3.31 -3.773) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "8ee46a25-5590-4321-b44c-c2064484a600") + ) + (fp_line + (start 3.27 3.789) + (end 3.27 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7741fde1-7d14-4448-8367-153bfbf8cc68") + ) + (fp_line + (start 3.27 -1.04) + (end 3.27 -3.789) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "65faa33b-aeb7-476f-a9ac-b6ff80635f53") + ) + (fp_line + (start 3.23 3.805) + (end 3.23 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "47ddbc75-7cf2-4325-8f7a-eca36746138b") + ) + (fp_line + (start 3.23 -1.04) + (end 3.23 -3.805) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "d8c18dae-2ac7-4219-beb1-03904c63f13e") + ) + (fp_line + (start 3.19 3.82) + (end 3.19 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "613c4e0e-ce16-49a8-a7d5-b763cf6a4bbe") + ) + (fp_line + (start 3.19 -1.04) + (end 3.19 -3.82) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "bf1dd096-5b44-4262-a2f4-980773d3cd2c") + ) + (fp_line + (start 3.15 3.835) + (end 3.15 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "fc991788-94a6-4f38-9b6b-d2ac50257722") + ) + (fp_line + (start 3.15 -1.04) + (end 3.15 -3.835) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "df035b1b-d453-43bb-bdb2-1a6c33605f30") + ) + (fp_line + (start 3.11 3.849) + (end 3.11 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7766ad5b-03aa-4257-b3f7-520915ee2557") + ) + (fp_line + (start 3.11 -1.04) + (end 3.11 -3.849) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "181d642f-a794-4ec5-b89e-46ca06e299d6") + ) + (fp_line + (start 3.07 3.863) + (end 3.07 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "0564b527-8ca5-43bf-8127-dd01baec09c8") + ) + (fp_line + (start 3.07 -1.04) + (end 3.07 -3.863) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "3f6ffbd3-3054-4bec-b38d-718f70c5bf7d") + ) + (fp_line + (start 3.03 3.876) + (end 3.03 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "68e1a19e-f309-4453-9dde-ba2e8a9cc2fe") + ) + (fp_line + (start 3.03 -1.04) + (end 3.03 -3.876) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "704758ea-54ad-4e8f-9922-a66f2786d988") + ) + (fp_line + (start 2.99 3.889) + (end 2.99 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "261a93fc-ccf1-4e60-9126-615d023e4cba") + ) + (fp_line + (start 2.99 -1.04) + (end 2.99 -3.889) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "15a8fc62-a37c-4250-be6f-98aebd05df19") + ) + (fp_line + (start 2.95 3.901) + (end 2.95 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "c91a3700-0f57-4f03-a076-06a3abab1126") + ) + (fp_line + (start 2.95 -1.04) + (end 2.95 -3.901) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "4191ac4f-81dd-4af9-a710-26b019202188") + ) + (fp_line + (start 2.91 3.913) + (end 2.91 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "167aceb9-064e-4bda-956a-81844c67c1e6") + ) + (fp_line + (start 2.91 -1.04) + (end 2.91 -3.913) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "18e8dd24-adde-4639-a6ca-5fd8198ecdd6") + ) + (fp_line + (start 2.87 3.925) + (end 2.87 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "95ec8404-6a2a-4201-a2b9-ff38948dc0b1") + ) + (fp_line + (start 2.87 -1.04) + (end 2.87 -3.925) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "6920ee11-5c14-458b-bf5a-41ab2f1b0a15") + ) + (fp_line + (start 2.83 3.936) + (end 2.83 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7dd013df-ceb4-4eb6-838e-3839806f6d50") + ) + (fp_line + (start 2.83 -1.04) + (end 2.83 -3.936) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9ca89c02-4441-40c2-a784-d12f54b716cd") + ) + (fp_line + (start 2.79 3.947) + (end 2.79 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "e5ef01df-fd02-40d3-bf5b-2e6a98a1db43") + ) + (fp_line + (start 2.79 -1.04) + (end 2.79 -3.947) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "dd829cdf-8a7a-43bc-826b-f08a27e8c9c8") + ) + (fp_line + (start 2.75 3.957) + (end 2.75 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "4187c702-7696-4c9e-9b1f-49a3a8b1140f") + ) + (fp_line + (start 2.75 -1.04) + (end 2.75 -3.957) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "bcd7d7fc-0179-4972-b368-00cb893aba60") + ) + (fp_line + (start 2.71 3.967) + (end 2.71 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ff3f5aa5-364b-43af-8bf8-263c940614d9") + ) + (fp_line + (start 2.71 -1.04) + (end 2.71 -3.967) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "60dd7b0a-469b-4d7a-9373-e721f2ba61d9") + ) + (fp_line + (start 2.67 3.976) + (end 2.67 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "a11797f7-c038-4d74-8c6c-db41940fa268") + ) + (fp_line + (start 2.67 -1.04) + (end 2.67 -3.976) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "1167807d-dae6-4c10-8fcc-5c46645b08cb") + ) + (fp_line + (start 2.63 3.985) + (end 2.63 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "00ce399d-a668-4ac5-bcbf-bc43afb2b3a9") + ) + (fp_line + (start 2.63 -1.04) + (end 2.63 -3.985) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "a8fcede7-fa03-47aa-80a4-26c4cc5dd241") + ) + (fp_line + (start 2.59 3.993) + (end 2.59 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "b2f53505-0c20-4b16-81a0-d858566b58cd") + ) + (fp_line + (start 2.59 -1.04) + (end 2.59 -3.993) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "d4d4cecf-5c68-4567-a769-f05ce2d6ef0e") + ) + (fp_line + (start 2.55 4.002) + (end 2.55 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "bafc238b-90af-429d-8614-b558c1c02cab") + ) + (fp_line + (start 2.55 -1.04) + (end 2.55 -4.002) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "8388fda8-8422-4e94-ab71-2efa3a31c016") + ) + (fp_line + (start 2.51 4.009) + (end 2.51 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "e680ae59-2a97-4466-9b2a-07834ace7e8d") + ) + (fp_line + (start 2.51 -1.04) + (end 2.51 -4.009) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "888f0fb0-019a-4f79-8022-e0131179210d") + ) + (fp_line + (start 2.47 4.017) + (end 2.47 1.04) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "6aadf371-8659-491f-a942-634c9200b9ae") + ) + (fp_line + (start 2.47 -1.04) + (end 2.47 -4.017) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "57d0f31e-605d-440d-8e9b-d97b3c80a512") + ) + (fp_line + (start 2.43 4.023) + (end 2.43 -4.023) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "fdf374e6-ba05-4184-b302-73befa112a2a") + ) + (fp_line + (start 2.39 4.03) + (end 2.39 -4.03) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "5a5813d0-ad2a-4e3b-b96e-dd3329b539b3") + ) + (fp_line + (start 2.35 4.036) + (end 2.35 -4.036) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "8eed9005-a3f6-4609-8de3-bfb023d591b9") + ) + (fp_line + (start 2.31 4.042) + (end 2.31 -4.042) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "0f36dd9c-1fda-4c65-8933-c6c4188a0ae4") + ) + (fp_line + (start 2.27 4.047) + (end 2.27 -4.047) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ad1308a4-ebb2-469c-91a6-5945c64770ad") + ) + (fp_line + (start 2.23 4.052) + (end 2.23 -4.052) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "fce117a6-6f84-4b68-a018-4463bfde78c1") + ) + (fp_line + (start 2.19 4.056) + (end 2.19 -4.056) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9e78f134-a596-4721-993e-0dcd4134c284") + ) + (fp_line + (start 2.15 4.061) + (end 2.15 -4.061) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "0853e9fd-fe96-4c60-8f1a-a6afa687735c") + ) + (fp_line + (start 2.11 4.064) + (end 2.11 -4.064) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "897b3278-1b62-4915-8478-3496e3560f2a") + ) + (fp_line + (start 2.07 4.068) + (end 2.07 -4.068) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "b2d882ca-fda9-4226-a595-c376aaffa6e3") + ) + (fp_line + (start 2.03 4.07) + (end 2.03 -4.07) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "fcabfd3d-7f26-4f1d-9f99-414ee631383b") + ) + (fp_line + (start 1.99 4.073) + (end 1.99 -4.073) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "f06c1481-2edf-4ba4-9627-58c4a81eadba") + ) + (fp_line + (start 1.95 4.075) + (end 1.95 -4.075) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "74bb3389-8c54-4313-b008-88ff8a17db65") + ) + (fp_line + (start 1.91 4.077) + (end 1.91 -4.077) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "0561ac89-e360-4796-ac4f-7582dee1231d") + ) + (fp_line + (start 1.87 4.078) + (end 1.87 -4.078) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "3ecb7b73-d6c5-4988-a393-60d534f1be28") + ) + (fp_line + (start 1.83 4.079) + (end 1.83 -4.079) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "fbd53577-dd7c-4a33-a556-610357274e52") + ) + (fp_line + (start 1.79 4.08) + (end 1.79 -4.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "465a4eac-8905-4dd7-8ca0-9425e0cd6b40") + ) + (fp_line + (start 1.75 4.08) + (end 1.75 -4.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "654cdc4e-5376-49ef-9781-11c2dafe61f4") + ) + (fp_line + (start -2.259698 2.715) + (end -2.259698 1.915) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7e1994d3-8aaa-4820-82f6-d62ab2764c0b") + ) + (fp_line + (start -2.659698 2.315) + (end -1.859698 2.315) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "08d2f193-4027-4bec-8f88-d2231b32b182") + ) + (fp_circle + (center 1.75 0) + (end 5.87 0) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "B.SilkS") + (uuid "8e36a411-db34-480e-9017-4b9abadb1897") + ) + (fp_circle + (center 1.75 0) + (end 6 0) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "B.CrtYd") + (uuid "ab06c60b-9c2a-4760-aa0c-3a244895135f") + ) + (fp_line + (start -1.276759 2.1475) + (end -1.276759 1.3475) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "adc60a35-d4ef-4451-8b70-4f6916412ab8") + ) + (fp_line + (start -1.676759 1.7475) + (end -0.876759 1.7475) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "fcf84afd-a64a-4b42-929c-8c9b506e2953") + ) + (fp_circle + (center 1.75 0) + (end 5.75 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "0b6aa1dd-9bb2-4799-a69f-b038bc53e593") + ) + (pad "1" thru_hole roundrect + (at 0 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.15625) + (net "VIN_12") + (uuid "bee6921e-c338-48c9-bd70-7e6dd84b7011") + ) + (pad "2" thru_hole circle + (at 3.5 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "485560ec-f3f8-4e2f-be6e-322707b1b591") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/CP_Radial_D8.0mm_P3.50mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "C_Disc_D5.0mm_W2.5mm_P5.00mm" + (layer "B.Cu") + (uuid "271339ac-edf6-4144-955c-20f257dc329f") + (at 120.24 74.6 180) + (descr "C, Disc series, Radial, pin pitch=5.00mm, diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf") + (tags "C Disc series Radial pin pitch 5.00mm diameter 5mm width 2.5mm Capacitor") + (property "Reference" "C_BYP2" + (at 1.5 3 0) + (layer "B.SilkS") + (uuid "d4865a05-42f1-4efe-93eb-543ab337c4b3") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "100nF" + (at 2.5 -2.5 0) + (layer "B.Fab") + (uuid "6c3e011e-f3b7-4960-b67a-4f1acc31fa50") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "f4bedee7-9f3b-427f-8ed9-6c8f3756a862") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "fb8ff664-c6cc-472b-b705-de4188669928") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "B.SilkS") + (hide yes) + (uuid "6e1ba26b-a513-40d8-a6fe-da71eea59e5d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (path "/09495a39-44d8-4909-becc-4e005d0b595a") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 5.12 1.37) + (end 5.12 1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "55543a79-2484-4ba3-98af-37d49fec66cb") + ) + (fp_line + (start 5.12 -1.033) + (end 5.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "9b9b6a21-fe2b-4629-b061-bca1a7706aaa") + ) + (fp_line + (start 5.12 -1.37) + (end -0.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "6762c84d-72ac-41f9-892f-3be83524544c") + ) + (fp_line + (start -0.12 1.37) + (end 5.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "6094fa66-b1e0-4e19-9205-60c6d6be64fc") + ) + (fp_line + (start -0.12 1.033) + (end -0.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "c44a23a1-75aa-40f9-9f56-c192a0dcfff4") + ) + (fp_line + (start -0.12 -1.37) + (end -0.12 -1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "5feb3ba4-0fd5-4d06-b81b-9d868e4c5c55") + ) + (fp_rect + (start -1.05 1.5) + (end 6.05 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "B.CrtYd") + (uuid "3022c9db-23b4-422c-834e-30031502d35f") + ) + (fp_rect + (start 0 1.25) + (end 5 -1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "c4d257a3-b352-4211-8afa-461870bd7691") + ) + (pad "1" thru_hole circle + (at 0 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "+5V_OR") + (uuid "ad999c7d-d58d-4dcd-b755-ebf988919ef9") + ) + (pad "2" thru_hole circle + (at 5 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "c41e0d11-a4d3-4e96-8e4a-bcb295ea9f38") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/C_Disc_D5.0mm_W2.5mm_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "C_Disc_D5.0mm_W2.5mm_P5.00mm" + (layer "B.Cu") + (uuid "50bf6bf6-7f65-45d4-9af8-43ba4cb7eae9") + (at 23.8 33.96 180) + (descr "C, Disc series, Radial, pin pitch=5.00mm, diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf") + (tags "C Disc series Radial pin pitch 5.00mm diameter 5mm width 2.5mm Capacitor") + (property "Reference" "C_Y1" + (at 2.5 2.5 0) + (layer "B.SilkS") + (uuid "bf150f86-0277-497b-9520-69729873e06b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "22pF" + (at 2.5 -2.5 0) + (layer "B.Fab") + (uuid "04ef625b-e95e-41cb-92dc-64a356d40a57") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "2b22d5b3-b68d-4d7f-b836-b9c429cb7b98") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "615d280c-86a9-4e17-9cd2-17fb3c993bf0") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "B.SilkS") + (hide yes) + (uuid "1415f938-7797-4742-82f4-bfe5c24716d2") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (path "/de2eefc1-9c33-4e80-bf65-51de03c71b39") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 5.12 1.37) + (end 5.12 1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "664d6d12-e3e5-45e2-8a75-58ad84021e11") + ) + (fp_line + (start 5.12 -1.033) + (end 5.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "b110284d-d27c-45df-abf7-ddff992edcef") + ) + (fp_line + (start 5.12 -1.37) + (end -0.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "4c584f79-d46f-4dc4-8044-054c5caffba3") + ) + (fp_line + (start -0.12 1.37) + (end 5.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "5da0204d-2569-4de7-96bb-66ec29ee9a1c") + ) + (fp_line + (start -0.12 1.033) + (end -0.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "5e4ab623-f57c-410d-b076-743643607eb2") + ) + (fp_line + (start -0.12 -1.37) + (end -0.12 -1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "56b0ce53-8c78-42ec-8725-b773b4bc4048") + ) + (fp_rect + (start -1.05 1.5) + (end 6.05 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "B.CrtYd") + (uuid "188eb42f-412d-459f-ae55-2fe663239843") + ) + (fp_rect + (start 0 1.25) + (end 5 -1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "8ed3d5c5-b090-45ff-b5e4-aae4aa66ab87") + ) + (pad "1" thru_hole circle + (at 0 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "OSC1") + (uuid "f9a17875-6ea6-498b-88b0-88b531e52da5") + ) + (pad "2" thru_hole circle + (at 5 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "cf7123f8-83a6-454f-a87b-5c7af95a1059") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/C_Disc_D5.0mm_W2.5mm_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "B.Cu") + (uuid "52387124-dbef-44eb-91a9-f4fba0e1fb41") + (at 69.52 56.82 180) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_TRS" + (at 4.692502 0 0) + (layer "B.SilkS") + (uuid "69db3646-e419-4633-868a-bc00423c638f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "0R" + (at 5.08 -2.37 0) + (layer "B.Fab") + (uuid "c21d8339-41d8-4b74-ba79-68645c76b68f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "70f482ec-8acb-4d26-821b-477fd328f961") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "14f0f213-a582-46b7-b501-b9034227a9d7") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "B.SilkS") + (hide yes) + (uuid "5a8ff303-284d-4ce3-b8bf-038bc69981f7") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (path "/36f8e00d-e57f-4eee-b3dd-68f4c15aa26d") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "7ea20753-84fa-4d77-bfdb-6c8b226d8c6b") + ) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "d7e9746f-a73a-4134-ab30-96d680d6f7af") + ) + (fp_rect + (start 1.81 1.37) + (end 8.35 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "B.SilkS") + (uuid "a8002823-9656-466a-85ff-8b7ed0cb9bdc") + ) + (fp_rect + (start -1.05 1.5) + (end 11.21 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "B.CrtYd") + (uuid "1f1c57f2-bc0a-435a-8b9d-dc3b0f63e7a5") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "5f4ee77a-f474-4d6f-bc2d-7dc49563509f") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "efef0422-aa4b-4ded-8f3f-d70008de777d") + ) + (fp_rect + (start 1.93 1.25) + (end 8.23 -1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "2b71be6b-3372-4df0-ae28-bc441ace48cf") + ) + (pad "1" thru_hole circle + (at 0 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TRS_N") + (uuid "9d29b99c-76b9-4fa0-98cf-a1d7dae15bdb") + ) + (pad "2" thru_hole circle + (at 10.16 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "MODEM_CLK") + (uuid "07592a8b-4ef7-43ba-9d1d-a0e4914a5e98") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "C_Disc_D5.0mm_W2.5mm_P5.00mm" + (layer "B.Cu") + (uuid "8261bb2f-a228-48ad-a5e7-2af1370f24a8") + (at 28.88 44.12 180) + (descr "C, Disc series, Radial, pin pitch=5.00mm, diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf") + (tags "C Disc series Radial pin pitch 5.00mm diameter 5mm width 2.5mm Capacitor") + (property "Reference" "C_Y2" + (at 2.5 2.5 0) + (layer "B.SilkS") + (uuid "dc0d9c60-7bfc-48b2-8d41-a202ff25090b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "22pF" + (at 2.5 -2.5 0) + (layer "B.Fab") + (uuid "fa20f71d-ee1e-4a32-af81-1ee308db2497") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "8b147c70-d5b3-4965-93f2-3c3b57f7f672") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "80cb54bc-44ff-4ba0-8688-c5d866f39399") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "KiLib_Generator" "capacitor/THT/other" + (at 0 0 0) + (layer "B.SilkS") + (hide yes) + (uuid "eff53d2c-20aa-493c-acb6-4d01d346fb26") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 5.12 1.37) + (end 5.12 1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "b73efba8-cab6-44c4-a61e-429657933a07") + ) + (fp_line + (start 5.12 -1.033) + (end 5.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "8cd50d68-aba9-4f39-aac5-8daad8cc92b2") + ) + (fp_line + (start 5.12 -1.37) + (end -0.12 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "12a54791-ff80-4149-ad4c-a3ca503f09aa") + ) + (fp_line + (start -0.12 1.37) + (end 5.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "25a8632b-7665-4001-b67a-6272d271b9b6") + ) + (fp_line + (start -0.12 1.033) + (end -0.12 1.37) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "681c68f2-ace0-4350-888f-eb57bc16cfa1") + ) + (fp_line + (start -0.12 -1.37) + (end -0.12 -1.033) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "73f1a973-5ca9-4fc9-97cb-93de049cadd0") + ) + (fp_rect + (start -1.05 1.5) + (end 6.05 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "B.CrtYd") + (uuid "fa24d7d9-1542-4a3d-89f9-d71d6ab7fdf9") + ) + (fp_rect + (start 0 1.25) + (end 5 -1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "ade26e3b-ecbc-4b8f-babb-48b36ae09e3c") + ) + (pad "1" thru_hole circle + (at 0 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "OSC2") + (uuid "58963a1c-a922-4b59-9469-47f98a371dc9") + ) + (pad "2" thru_hole circle + (at 5 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "f313c013-9e94-4bfd-974e-4550c9055757") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_THT.3dshapes/C_Disc_D5.0mm_W2.5mm_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal" + (layer "B.Cu") + (uuid "caeac259-181f-4ddf-8ada-90192c56704e") + (at 49.2 112.7 180) + (descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf") + (tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm") + (property "Reference" "R_TXR2" + (at -5.08 0 0) + (layer "B.SilkS") + (uuid "2596f817-bafe-4c14-8926-33a1fc03758c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "0R" + (at -5.08 -2.37 0) + (layer "B.Fab") + (uuid "78a77d54-fbea-4c3e-8f2c-d5624c76c165") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "ae2b63ea-afb3-4938-94ff-d834e95c1218") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "B.Fab") + (hide yes) + (uuid "0f23b7e0-788b-4a4c-87d5-bdbce39d49f2") + (effects + (font + (size 1.27 1.27) + ) + (justify mirror) + ) + ) + (property "KiLib_Generator" "resistor/THT" + (at 0 0 0) + (layer "B.SilkS") + (hide yes) + (uuid "03312096-0e44-4d7b-810e-c96cb24a2451") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (path "/081135b4-64ee-4d90-a2bf-1c87fe908a38") + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 9.12 0) + (end 8.35 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "970c17b5-e4ad-4258-8e5b-c03f631d5c00") + ) + (fp_line + (start 1.04 0) + (end 1.81 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "715daa64-2e02-4a82-8478-ddcc6438f3a7") + ) + (fp_rect + (start 1.81 1.37) + (end 8.35 -1.37) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "B.SilkS") + (uuid "a4c653e0-65e6-4dc0-8df6-0dc19e1d963d") + ) + (fp_rect + (start -1.05 1.5) + (end 11.21 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "B.CrtYd") + (uuid "bd8c7642-8a7d-4ec3-8789-f16f73d37907") + ) + (fp_line + (start 10.16 0) + (end 8.23 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "336505c0-50a3-4d04-ba22-5465d5149c28") + ) + (fp_line + (start 0 0) + (end 1.93 0) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "d0598440-e6f6-4cee-b0de-330817591b18") + ) + (fp_rect + (start 1.93 1.25) + (end 8.23 -1.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "9f9ea59a-2aa9-438e-a2a7-20500dffc354") + ) + (pad "1" thru_hole circle + (at 0 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "TXR2_N") + (uuid "e9befa73-d42a-47c4-a51e-91d94dfe7bcc") + ) + (pad "2" thru_hole circle + (at 10.16 0 180) + (size 1.6 1.6) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (uuid "3616d1fa-bcbf-42bd-9594-9bf3bc6a0f59") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (gr_rect + (start 0 0) + (end 180 180) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "Edge.Cuts") + (uuid "a26a8360-973b-41ee-a8ed-508661091a6d") + ) + (gr_text "confirm datasheet" + (at 18.72 69.52 0) + (layer "F.SilkS") + (uuid "63d9572b-a451-4386-a33d-4bc125da0f15") + (effects + (font + (size 0.8 0.8) + (thickness 0.12) + ) + ) + ) + (gr_text "U_REG MP1584" + (at 125.4 13.64 0) + (layer "F.SilkS") + (uuid "7f2417b4-da91-4186-bd07-fb07a49c6027") + (effects + (font + (size 0.8 0.8) + (thickness 0.12) + ) + ) + ) + (gr_text "USB DEVICE" + (at 21.26 14 0) + (layer "F.SilkS") + (uuid "b943390e-4fd4-4168-a2a8-4d829ee5b5d3") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (gr_text "https://github.com/ngteq" + (at 112.7 8.56 0) + (layer "F.SilkS") + (uuid "960deea0-5681-416e-8cb6-144416738ea5") + (effects + (font + (size 1 1) + (thickness 0.2) + (bold yes) + ) + ) + ) + (gr_text "T-Modem-c1224 v1.0 GNU/GPL-Non-Profit" + (at 102.54 6.02 0) + (layer "F.SilkS") + (uuid "7f15b99c-19ad-4cf9-a045-02708c433c45") + (effects + (font + (size 1.2 1.2) + (thickness 0.15) + ) + (justify left bottom) + ) + ) + (segment + (start 109.04 28.88) + (end 102.54 28.88) + (width 0.25) + (layer "F.Cu") + (net "BOOTSEL") + (uuid "910df0ff-9382-484a-833e-56c9b89e87a1") + ) + (segment + (start 102.54 28.88) + (end 92.38 18.72) + (width 0.25) + (layer "B.Cu") + (net "BOOTSEL") + (uuid "46a1aa46-cc55-4829-83a7-ec106164cdb9") + ) + (segment + (start 92.38 18.72) + (end 92.38 16.18) + (width 0.25) + (layer "B.Cu") + (net "BOOTSEL") + (uuid "a7177e55-0f57-4512-bcbf-5e00f0924359") + ) + (segment + (start 168.58 102.54) + (end 168.58 85.9466) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "274d101c-7a22-4d37-bff4-805a9c1be1c2") + ) + (segment + (start 166.04 102.54) + (end 168.58 102.54) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "79c86ba1-4b28-40ce-91e8-d524781f300e") + ) + (segment + (start 168.58 85.9466) + (end 166.7167 84.0833) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "b76dd44c-fd38-4c3e-9242-282428ca94d9") + ) + (segment + (start 70.71 86.03) + (end 69.44 84.76) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "b95e2697-39c2-4fcd-a617-706fa74abe70") + ) + (segment + (start 166.7167 84.0833) + (end 112.2033 84.0833) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "d55196c9-413c-459c-8185-0885a9532fa9") + ) + (segment + (start 106.4466 89.84) + (end 102.6366 86.03) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "e48d0351-88ec-483a-861e-1b8ed7e55334") + ) + (segment + (start 102.6366 86.03) + (end 70.71 86.03) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "eff2729e-c61e-465e-9a00-17043ea11bf1") + ) + (segment + (start 112.2033 84.0833) + (end 106.4466 89.84) + (width 0.25) + (layer "F.Cu") + (net "AF_TX") + (uuid "fb4442fe-8f56-47cc-9daa-af4a1cbf86bc") + ) + (segment + (start 60.5532 93.7268) + (end 59.36 94.92) + (width 0.25) + (layer "F.Cu") + (net "AF_RX") + (uuid "3de10216-34c4-4692-b062-26bd2fbb9b45") + ) + (segment + (start 163.5 100) + (end 163.5 106.2247) + (width 0.25) + (layer "F.Cu") + (net "AF_RX") + (uuid "55f757b3-982e-46d1-b17e-b9164ac78c55") + ) + (segment + (start 84.8264 93.7268) + (end 60.5532 93.7268) + (width 0.25) + (layer "F.Cu") + (net "AF_RX") + (uuid "8d85755e-1455-44e4-83de-b9dcf223d708") + ) + (segment + (start 163.5 106.2247) + (end 97.3243 106.2247) + (width 0.25) + (layer "F.Cu") + (net "AF_RX") + (uuid "b0e8ec77-344f-4213-9df3-6bcc9026222f") + ) + (segment + (start 166.04 97.46) + (end 163.5 100) + (width 0.25) + (layer "F.Cu") + (net "AF_RX") + (uuid "bd72c88d-3c07-42fa-8e2e-9c05d6f8d133") + ) + (segment + (start 97.3243 106.2247) + (end 84.8264 93.7268) + (width 0.25) + (layer "F.Cu") + (net "AF_RX") + (uuid "fa68042c-8f91-415b-9388-28529860a1f9") + ) + (segment + (start 166.04 92.38) + (end 135.56 92.38) + (width 0.25) + (layer "F.Cu") + (net "PTT_OC") + (uuid "65b4943f-9718-410c-8fdd-bac2d9e6b76b") + ) + (segment + (start 135.56 92.38) + (end 122.86 105.08) + (width 0.25) + (layer "F.Cu") + (net "PTT_OC") + (uuid "ddd230ef-21fa-4e59-905b-998999929191") + ) + (segment + (start 115.24 74.6) + (end 110.16 79.68) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "00235b6f-b4dc-4c40-a3ca-f64f571ff6cf") + ) + (segment + (start 132.8191 154.7191) + (end 133.98 155.88) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "02d73c18-ce52-4075-ae65-7bd647ce7281") + ) + (segment + (start 18.72 54.28) + (end 18.72 49.28) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "061457a1-4739-4880-a040-42c8479c78fc") + ) + (segment + (start 82.22 79.68) + (end 81.0416 78.5016) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "28046fff-f2b1-42a6-9d81-b9b1e817eba3") + ) + (segment + (start 18.72 49.28) + (end 23.88 44.12) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "2ba2e68c-2c1d-439f-aee4-bfe5d14775c2") + ) + (segment + (start 81.0416 78.5016) + (end 50.6984 78.5016) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "2c3cc3cb-c6ec-480d-a2a9-2ab02264fabe") + ) + (segment + (start 145.72 155.88) + (end 133.98 155.88) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "364d5e93-586b-429a-9145-594da8f5c21d") + ) + (segment + (start 101.1767 162.23) + (end 108.6876 154.7191) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "42623075-4a95-4bb7-be41-97c04a8b3a08") + ) + (segment + (start 45.2 76) + (end 49.2 80) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "512a1349-7e8f-48a2-9c7d-4b8296b94a9c") + ) + (segment + (start 50.6984 78.5016) + (end 49.2 80) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "5bac32e4-e4c8-4af2-8733-4673ac2e8b8a") + ) + (segment + (start 33.96 122.86) + (end 35.0867 121.7333) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "5c44f8d4-553c-4136-a704-1239d17ee2ac") + ) + (segment + (start 27 76) + (end 45.2 76) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "5ea75b32-50cb-4205-a975-2932c4d50b65") + ) + (segment + (start 74.54 169.85) + (end 72 169.85) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "72980f26-7f7d-44e1-b037-d163bd2c8a76") + ) + (segment + (start 34.04 33.96) + (end 46.66 33.96) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "7e1d55b7-75fc-4de5-a546-f8ca10ad04dd") + ) + (segment + (start 46.66 30.96) + (end 48 29.62) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "88d2e616-956e-4809-815f-c3d194a9bf1a") + ) + (segment + (start 100 79.68) + (end 82.22 79.68) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "89497da1-eb23-4954-8474-4f879c3ed346") + ) + (segment + (start 100 162.23) + (end 101.1767 162.23) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "90e2cf64-0a5c-41f5-abfd-586b64b3a0d6") + ) + (segment + (start 78.2667 121.7333) + (end 82.22 117.78) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "93ef6ad1-f0d1-4817-ab0e-65f83c4396f6") + ) + (segment + (start 35.0867 121.7333) + (end 78.2667 121.7333) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "9bdf8cd7-7629-4c2d-8d8e-12ff703b9024") + ) + (segment + (start 110.16 79.68) + (end 100 79.68) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "a49fb956-c166-4549-bf8e-0e1e5e817563") + ) + (segment + (start 108.6876 154.7191) + (end 132.8191 154.7191) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "c3595d3d-0d62-44c5-930f-88155b18cbf4") + ) + (segment + (start 155.88 145.72) + (end 145.72 155.88) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "c67fd3d2-6fd4-4b14-bd8f-4677f29657e3") + ) + (segment + (start 46.66 33.96) + (end 46.66 30.96) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "dc1fdb8c-b09c-46da-baf6-8f8ccecc9629") + ) + (segment + (start 120.32 105.08) + (end 100 105.08) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "e346e5fb-5a2a-47ca-bbfe-b4a85028df83") + ) + (segment + (start 23.88 44.12) + (end 34.04 33.96) + (width 0.25) + (layer "F.Cu") + (net "GND") + (uuid "e83d825a-ea9b-462c-8de2-b8e262a41516") + ) + (segment + (start 74 13.64) + (end 102.54 13.64) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "025fff81-c7b5-4e3a-9b8f-e4eaf29a0989") + ) + (segment + (start 78.265 73.475) + (end 83.043004 73.475) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "029502fc-08ec-49a3-af6e-9f7e3c7546af") + ) + (segment + (start 18.72 54.28) + (end 27 62.56) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "064bc8b2-34e0-45f9-b9ef-871192cbb57d") + ) + (segment + (start 166.04 87.3) + (end 153.34 87.3) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "07d06f19-61c4-45fd-82d0-e7ff3dddfa41") + ) + (segment + (start 102.54 24.38) + (end 109.04 24.38) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "0fc59887-abcd-4367-8475-c1fcf1b19036") + ) + (segment + (start 41.58 16.29) + (end 68.95 16.29) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "1045d33b-f5dd-4a40-90e7-b14dbc3d4a5b") + ) + (segment + (start 69.3 16.64) + (end 72.3 13.64) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "1b008cc2-67d1-488c-941a-e30fd9a2a61f") + ) + (segment + (start 42.13 29.62) + (end 48 29.62) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "1e62ab8e-6c18-4f58-9b5d-565333cb6efa") + ) + (segment + (start 33.96 155.88) + (end 33.96 122.86) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "232984d4-41b4-4ab8-948a-5e0213741cb8") + ) + (segment + (start 82.22 117.78) + (end 83.3695 116.6305) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "2483b281-151c-4025-990a-f45f2fbc17dd") + ) + (segment + (start 83.043004 73.475) + (end 83.8271 74.259096) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "286bed5b-79d9-42d4-b21b-2b9e86f54817") + ) + (segment + (start 100 162.23) + (end 100 161.0533) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "28a6d5d3-144b-4e2f-8778-b03fcea171f7") + ) + (segment + (start 83.3467 91.2533) + (end 82.22 92.38) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "293eb0ae-da2a-4669-859d-3392b38c89eb") + ) + (segment + (start 173.66 40) + (end 174.885 41.225) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "2d1e54a4-a42e-445c-8338-72717445f109") + ) + (segment + (start 83.3467 80.8067) + (end 83.3467 91.2533) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "2e7bb75c-bc95-4524-a565-64261e09b967") + ) + (segment + (start 100 79.68) + (end 101.1267 80.8067) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "2ed9beeb-7d80-4fb0-9f0f-7b6e66339f0f") + ) + (segment + (start 101.1267 106.2067) + (end 100 105.08) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "30dfa10a-d30d-4399-bc6b-b99456bdc2db") + ) + (segment + (start 174.885 62.775) + (end 173.66 64) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "3448bf29-1167-4e5a-a076-37983f056b01") + ) + (segment + (start 101.1267 93.5067) + (end 101.1267 103.9533) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "3cfa4170-9b42-4c26-aa9f-80cddb82fadf") + ) + (segment + (start 101.1267 118.9067) + (end 100 117.78) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "3e7a7bc4-9dbb-404a-a6c3-a9ad0dc80ab4") + ) + (segment + (start 83.8271 78.0729) + (end 82.22 79.68) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "3ef9ba93-b2ca-436e-8887-70817cc4f1a5") + ) + (segment + (start 173.66 64) + (end 173.66 64.4867) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "4239cd04-508e-4f16-a3a6-6ecaf0087dfd") + ) + (segment + (start 151.4245 112.0755) + (end 131.898096 112.0755) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "456ef6aa-6fcb-4f83-ac1d-7abb45bac985") + ) + (segment + (start 101.1267 159.9266) + (end 101.1267 118.9067) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "45c841aa-3767-4703-8f18-d3595b052283") + ) + (segment + (start 83.3695 93.5295) + (end 82.22 92.38) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "4a7ce8d4-2fe4-4d89-884e-2fc6c013afd7") + ) + (segment + (start 101.1267 80.8067) + (end 101.1267 91.2533) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "4eea9bdb-4e55-4ec8-b703-e56c6625a6af") + ) + (segment + (start 28.44 16.29) + (end 31.15 19) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "5099dc95-7d2c-47fe-8900-9cbcd5566a70") + ) + (segment + (start 28.44 16.29) + (end 41.58 16.29) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "528a6053-ec95-424b-a833-73961502eb15") + ) + (segment + (start 18.8 31.71) + (end 31.51 19) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "53fef707-3fa9-4267-9434-79dbb0fa0bb7") + ) + (segment + (start 91.2033 169.85) + (end 74.54 169.85) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "551788bd-49f8-494f-b56e-b008988bfc3f") + ) + (segment + (start 100 92.38) + (end 101.1267 93.5067) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "5c53a9de-9407-4e42-80d0-19cabf7c7dc3") + ) + (segment + (start 173.66 28) + (end 174.885 29.225) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "6034a16f-aac1-4adc-b23e-53a193a38a38") + ) + (segment + (start 83.3695 105.08) + (end 82.22 105.08) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "61a7d5a7-81e3-4910-85bb-b15e01dbf8ba") + ) + (segment + (start 174.885 29.225) + (end 174.885 38.775) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "65748096-560f-4dda-8df9-8d96a4766c8f") + ) + (segment + (start 31.51 19) + (end 42.13 29.62) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "66f6560a-8338-4abd-a381-499945f4a508") + ) + (segment + (start 83.3695 116.6305) + (end 83.3695 105.08) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "68559372-085f-439e-8d23-f0eac7ebc62f") + ) + (segment + (start 100 161.0533) + (end 101.1267 159.9266) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "68d62700-6eb2-436f-94b3-fc2b061eff7d") + ) + (segment + (start 98.8233 162.23) + (end 91.2033 169.85) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "68f68d9a-3d93-43bd-9f80-79de41eba46b") + ) + (segment + (start 39.04 112.7) + (end 78.265 73.475) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "6f33b05f-f9bb-4392-a108-85722a1d6e2b") + ) + (segment + (start 18.8 39.04) + (end 23.88 44.12) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "71feb749-9ca8-4eb5-a94f-0c27e8b68509") + ) + (segment + (start 18.8 54.2) + (end 18.72 54.28) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "72392b92-2d14-4549-a26d-5cdbfe8e3a47") + ) + (segment + (start 121.186141 102.835) + (end 120.32 103.701141) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "78362392-0e8d-4489-8dc9-28ac570c3939") + ) + (segment + (start 114.28 16.18) + (end 114.28 30.46) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "85acd2e9-cdb3-43db-8f6d-af1dd8e37a10") + ) + (segment + (start 174.885 50.775) + (end 173.66 52) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "871361ef-0c1d-47ce-a5d1-6e84991e449c") + ) + (segment + (start 82.22 79.68) + (end 83.3467 80.8067) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "8bb12b7e-3d7d-4aed-a611-dec37e88d7c0") + ) + (segment + (start 174.885 41.225) + (end 174.885 50.775) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "8dd76cfb-c047-4b53-8afc-800fbead812e") + ) + (segment + (start 176.2 67.0267) + (end 176.2 74.6) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "929b3fc9-f5ee-49c0-89a1-8c1121a21b15") + ) + (segment + (start 127.94 44.12) + (end 115.24 56.82) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "976f336f-3191-4d1a-a3b9-46d998d7686c") + ) + (segment + (start 153.34 87.3) + (end 153.34 110.16) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "9a2a88f0-61d4-49a4-8bb2-b7552d89447f") + ) + (segment + (start 18.8 33.96) + (end 18.8 39.04) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "9e263815-5911-4904-a625-76eb7d1cf7aa") + ) + (segment + (start 101.1267 116.6533) + (end 101.1267 106.2067) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "9f16bdef-53ab-4c7b-9b32-950b8d5f4784") + ) + (segment + (start 174.885 53.225) + (end 174.885 62.775) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "a42409e6-3a7f-42cd-9566-399145d40080") + ) + (segment + (start 100 162.23) + (end 98.8233 162.23) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "a50366a9-7958-4879-86d2-ac9361e27a0f") + ) + (segment + (start 68.95 16.29) + (end 69.3 16.64) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ab50c24d-13fe-4ca6-bd10-cad9a336a6bc") + ) + (segment + (start 109.04 21.42) + (end 109.04 24.38) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "acf3fd3d-663c-4825-9933-7803b101fa98") + ) + (segment + (start 176.2 74.6) + (end 166.04 84.76) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ad5b187a-d352-406c-bf0b-15c886fe3316") + ) + (segment + (start 120.32 103.701141) + (end 120.32 105.08) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "b58547d2-5ac4-4aab-9907-e6b711ff32bb") + ) + (segment + (start 114.28 30.46) + (end 127.94 44.12) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ba1f48ec-8f79-4b01-a55e-93b92798c006") + ) + (segment + (start 173.66 64.4867) + (end 176.2 67.0267) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "bcd06bf8-7a63-4d3b-8adc-81494fdb9400") + ) + (segment + (start 122.657596 102.835) + (end 121.186141 102.835) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "bcf63ccc-498a-4a32-9562-3ee66460f189") + ) + (segment + (start 27 62.56) + (end 27 76) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "c01e48b2-8ab1-4048-9075-f86f0ba79a31") + ) + (segment + (start 18.8 33.96) + (end 18.8 31.71) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "c186e0a5-3b7a-4b88-b35e-6e0a6eff86fc") + ) + (segment + (start 166.04 84.76) + (end 166.04 87.3) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ca1e8bfe-ede5-4c3d-b360-18efa3ae8985") + ) + (segment + (start 101.1267 103.9533) + (end 100 105.08) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "caa5ddfe-56b9-49d3-b6e7-244675725747") + ) + (segment + (start 115.24 56.82) + (end 115.24 74.6) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "cd876930-b29d-40ed-b7a0-0a7410f5a1ca") + ) + (segment + (start 83.8271 74.259096) + (end 83.8271 78.0729) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "d01e2339-cb92-449e-954d-48c25a8d0731") + ) + (segment + (start 174.885 38.775) + (end 173.66 40) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "d1778645-0087-41d9-8654-476f22ddf106") + ) + (segment + (start 83.3695 105.08) + (end 83.3695 93.5295) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "d941319b-6e9a-4207-8e67-8537d6f5bbd9") + ) + (segment + (start 153.34 110.16) + (end 151.4245 112.0755) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "e11bb2bd-71c0-4700-beeb-24656702db7e") + ) + (segment + (start 101.1267 91.2533) + (end 100 92.38) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ec018723-c5db-4c71-bd94-7c35c3cf4a67") + ) + (segment + (start 131.898096 112.0755) + (end 122.657596 102.835) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ec76873e-b3bf-41c6-a7a0-1c74013e0761") + ) + (segment + (start 173.66 52) + (end 174.885 53.225) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ed5d3924-23fc-498f-ae62-947263f4a367") + ) + (segment + (start 102.54 13.64) + (end 102.54 24.38) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "f1146616-1eec-4639-a6ce-dd715fff92e0") + ) + (segment + (start 31.15 19) + (end 31.51 19) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "f2d245d3-8645-495f-bf1e-16a30fe65d1f") + ) + (segment + (start 100 117.78) + (end 101.1267 116.6533) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "fa4f0fb3-645c-4835-9060-36642f779708") + ) + (segment + (start 72.3 13.64) + (end 74 13.64) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "fcaeb95a-0f61-4019-aa76-89e8435a3fda") + ) + (segment + (start 114.28 16.18) + (end 109.04 21.42) + (width 0.25) + (layer "B.Cu") + (net "GND") + (uuid "ff1476dc-5397-4485-bf51-aaa1f4584e61") + ) + (segment + (start 68.19 155.88) + (end 39.04 155.88) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "04337a82-d20b-43c9-a99a-2e10ca64fa22") + ) + (segment + (start 98.817 75.957) + (end 100 77.14) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "06aaae56-81d0-4d48-96c7-d085f7ab246e") + ) + (segment + (start 149.6222 157.0578) + (end 131.6578 157.0578) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "0d7c1ce8-c8b5-427b-b12d-126d96374c99") + ) + (segment + (start 78.946 74.8202) + (end 80.0828 75.957) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "12455251-bacf-4e03-a813-ab687063be4c") + ) + (segment + (start 119.0739 73.4339) + (end 103.7061 73.4339) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "24ce7285-2816-497b-a494-358f885e179b") + ) + (segment + (start 130.48 155.88) + (end 121.59 164.77) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "32318a3f-ed38-488d-b8d1-9d10e11b6599") + ) + (segment + (start 22 76) + (end 23.1798 74.8202) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "3f5e8812-21b2-4874-812c-1f76063a07ac") + ) + (segment + (start 23.1798 74.8202) + (end 78.946 74.8202) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "4348229a-d886-46a0-9aa2-863bae1da474") + ) + (segment + (start 80.0828 75.957) + (end 98.817 75.957) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "545af351-d596-45c4-9810-f4ea1f583e7c") + ) + (segment + (start 160.96 145.72) + (end 149.6222 157.0578) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "7517127b-94b3-4163-b832-d29616550bf1") + ) + (segment + (start 103.7061 73.4339) + (end 100 77.14) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "8926e5d1-0faf-4fd4-a897-18f6413fb7c3") + ) + (segment + (start 121.59 164.77) + (end 100 164.77) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "a133e371-f812-4fa5-affb-89b95622bece") + ) + (segment + (start 97.46 162.23) + (end 100 164.77) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "cbed305b-46b1-413b-b209-c6abd4a54eff") + ) + (segment + (start 131.6578 157.0578) + (end 130.48 155.88) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "e199e3ec-c8e5-4025-8328-cc248410d283") + ) + (segment + (start 74.54 162.23) + (end 68.19 155.88) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "e2dbb663-ea50-497e-bb0b-8d2d4d87abc5") + ) + (segment + (start 74.54 162.23) + (end 97.46 162.23) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "eb90a1d5-db4b-4e6f-8be2-4b2f260a75a7") + ) + (segment + (start 120.24 74.6) + (end 119.0739 73.4339) + (width 0.25) + (layer "F.Cu") + (net "+5V_OR") + (uuid "fdc5a083-4cec-47cc-98a9-634d443512e8") + ) + (segment + (start 26.34 80.34) + (end 22 76) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "2ff1c4cb-55a5-4a2a-8e7e-967f134b440f") + ) + (segment + (start 34.2958 119.05) + (end 33.5761 119.05) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "5eee65f8-868e-4fca-aa5f-893db166bbaa") + ) + (segment + (start 27.7548 113.2287) + (end 27.7548 106.4948) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "62b1af0e-ce3e-4726-8409-515a929539ea") + ) + (segment + (start 147.565 28) + (end 147.565 47.275) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "730ed1c4-dc8d-4388-afde-4df199675836") + ) + (segment + (start 153.34 28) + (end 147.565 28) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "734396eb-dd87-4fb9-b2e7-71bf88fd0067") + ) + (segment + (start 39.04 155.88) + (end 39.04 123.7942) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "a1eb6c78-8deb-4666-8b3d-54f3ab642d7c") + ) + (segment + (start 39.04 123.7942) + (end 34.2958 119.05) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "a655a445-d925-4a61-96e7-bc09e5a8a43b") + ) + (segment + (start 145.72 26.155) + (end 147.565 28) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "aa50d70f-5bd4-4748-8ba4-b34a3efbf576") + ) + (segment + (start 145.72 10) + (end 145.72 26.155) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "d1dd45ab-01dc-4c84-a922-c3ff428fb5e8") + ) + (segment + (start 33.5761 119.05) + (end 27.7548 113.2287) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "eee58ff4-ec43-4b35-95bc-c1521c98d7d7") + ) + (segment + (start 147.565 47.275) + (end 120.24 74.6) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "f3d5184c-970f-4300-91a7-bce215312fb5") + ) + (segment + (start 27.7548 106.4948) + (end 26.34 105.08) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "f658d123-0a33-4411-8eeb-397e27052195") + ) + (segment + (start 26.34 105.08) + (end 26.34 80.34) + (width 0.25) + (layer "B.Cu") + (net "+5V_OR") + (uuid "fc43978e-2266-4137-bb76-9890a83637bf") + ) + (segment + (start 42.0015 91.9585) + (end 45.6769 91.9585) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CLK") + (uuid "6ca42699-3685-4662-b040-b2f3cd05972a") + ) + (segment + (start 26.34 107.62) + (end 42.0015 91.9585) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CLK") + (uuid "bfee3af0-9c50-4282-b1c4-8944e2708fd3") + ) + (via + (at 45.6769 91.9585) + (size 0.8) + (drill 0.4) + (layers "F.Cu" "B.Cu") + (net "MODEM_CLK") + (uuid "37276145-acc5-4c2a-a584-8b8880b635d6") + ) + (segment + (start 45.6769 70.5031) + (end 59.36 56.82) + (width 0.25) + (layer "B.Cu") + (net "MODEM_CLK") + (uuid "4aee65db-14e5-43af-95c9-555da102a615") + ) + (segment + (start 45.6769 91.9585) + (end 45.6769 70.5031) + (width 0.25) + (layer "B.Cu") + (net "MODEM_CLK") + (uuid "88eae36b-02b9-47db-9957-b44a3d236e3e") + ) + (segment + (start 25.1962 115.7224) + (end 25.8853 116.4115) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CDT") + (uuid "04148cf5-0d39-4493-80e1-402255df6f4c") + ) + (segment + (start 61.4933 116.4115) + (end 77.9048 100) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CDT") + (uuid "0b3cd986-e4bb-46f4-8f2a-bb8ac0826b30") + ) + (segment + (start 25.8853 116.4115) + (end 61.4933 116.4115) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CDT") + (uuid "2ddc06f5-0fbf-40d6-988a-5baf8313df06") + ) + (segment + (start 77.9048 100) + (end 82.22 100) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CDT") + (uuid "3d87ed77-046e-4102-9166-78e3cdfb946e") + ) + (segment + (start 25.1962 111.3038) + (end 25.1962 115.7224) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CDT") + (uuid "72d1c94b-a395-4702-b5f3-69923162f10c") + ) + (segment + (start 26.34 110.16) + (end 25.1962 111.3038) + (width 0.25) + (layer "F.Cu") + (net "MODEM_CDT") + (uuid "8d8759cf-c401-4971-8a8c-f95897b19ebc") + ) + (segment + (start 32.8291 104.5181) + (end 40.3352 97.012) + (width 0.25) + (layer "F.Cu") + (net "RXA") + (uuid "0f8a8269-ff59-4777-a19d-147f50f05ce9") + ) + (segment + (start 32.8291 106.2109) + (end 32.8291 104.5181) + (width 0.25) + (layer "F.Cu") + (net "RXA") + (uuid "20994c98-1d5b-4cf3-83a7-55ffca2b68d4") + ) + (segment + (start 40.3352 97.012) + (end 62.268 97.012) + (width 0.25) + (layer "F.Cu") + (net "RXA") + (uuid "6b98f9af-07e5-4e2c-899c-269638ef7af4") + ) + (segment + (start 62.268 97.012) + (end 64.36 94.92) + (width 0.25) + (layer "F.Cu") + (net "RXA") + (uuid "b11845f9-8a64-4f43-afec-34f93067c4f6") + ) + (segment + (start 26.34 112.7) + (end 32.8291 106.2109) + (width 0.25) + (layer "F.Cu") + (net "RXA") + (uuid "f96bd36e-cf56-4453-9af6-75356ee986d9") + ) + (segment + (start 35.8101 106.4933) + (end 37.854 104.4494) + (width 0.25) + (layer "F.Cu") + (net "TRS_N") + (uuid "334d488d-5a7b-473a-a9c8-00eb1b75d2ab") + ) + (segment + (start 33.4832 106.4933) + (end 35.8101 106.4933) + (width 0.25) + (layer "F.Cu") + (net "TRS_N") + (uuid "356e5002-2299-4036-800f-035f76c1104f") + ) + (segment + (start 26.34 115.24) + (end 27.6538 113.9262) + (width 0.25) + (layer "F.Cu") + (net "TRS_N") + (uuid "688c9181-2b79-4f00-b989-dfe5b8bc2c18") + ) + (segment + (start 27.6538 113.9262) + (end 27.6538 112.3227) + (width 0.25) + (layer "F.Cu") + (net "TRS_N") + (uuid "aacd2525-4e07-434c-b1ab-ffe727ee5399") + ) + (segment + (start 27.6538 112.3227) + (end 33.4832 106.4933) + (width 0.25) + (layer "F.Cu") + (net "TRS_N") + (uuid "c5a6bc12-e1d6-4b63-94aa-2027b87734b1") + ) + (via + (at 37.854 104.4494) + (size 0.8) + (drill 0.4) + (layers "F.Cu" "B.Cu") + (net "TRS_N") + (uuid "baf14fcd-13e1-42bc-a495-409b73aa4e2e") + ) + (segment + (start 53.01 89.2934) + (end 53.01 73.33) + (width 0.25) + (layer "B.Cu") + (net "TRS_N") + (uuid "5b9230ae-262c-4f2d-ae13-163d28241c89") + ) + (segment + (start 53.01 73.33) + (end 69.52 56.82) + (width 0.25) + (layer "B.Cu") + (net "TRS_N") + (uuid "b5bbf9f4-25bf-418f-8d59-4aab365faf84") + ) + (segment + (start 37.854 104.4494) + (end 53.01 89.2934) + (width 0.25) + (layer "B.Cu") + (net "TRS_N") + (uuid "c4a8e19b-878c-498d-99df-fe7451add7a1") + ) + (segment + (start 36.5 122.86) + (end 36.5 155.88) + (width 0.25) + (layer "B.Cu") + (net "CDL") + (uuid "337b05d0-a7fa-4198-bf03-4a7aee51050a") + ) + (segment + (start 33.96 120.32) + (end 26.34 120.32) + (width 0.25) + (layer "B.Cu") + (net "CDL") + (uuid "452ca587-9222-4a35-b25b-1638de59b2e6") + ) + (segment + (start 33.96 120.32) + (end 36.5 122.86) + (width 0.25) + (layer "B.Cu") + (net "CDL") + (uuid "a23a2b95-0193-42a5-8582-3bc8d3f3ef54") + ) + (segment + (start 83.3605 98.6005) + (end 82.22 97.46) + (width 0.25) + (layer "F.Cu") + (net "MODEM_RXD") + (uuid "0020207f-01d0-4bee-8542-1646e721a2d7") + ) + (segment + (start 82.5775 101.27) + (end 83.3605 100.487) + (width 0.25) + (layer "F.Cu") + (net "MODEM_RXD") + (uuid "342f29e9-a5c0-4749-9d22-6c3a91b9091a") + ) + (segment + (start 83.3605 100.487) + (end 83.3605 98.6005) + (width 0.25) + (layer "F.Cu") + (net "MODEM_RXD") + (uuid "739747d9-8e8e-4f8d-91ea-a5292a8d9264") + ) + (segment + (start 26.34 122.86) + (end 30.15 119.05) + (width 0.25) + (layer "F.Cu") + (net "MODEM_RXD") + (uuid "7dcf3f38-50d6-4fae-b1e1-ce3cc1a2de64") + ) + (segment + (start 81.5888 101.27) + (end 82.5775 101.27) + (width 0.25) + (layer "F.Cu") + (net "MODEM_RXD") + (uuid "b659102d-f16d-4ffc-afd6-445f87a84bed") + ) + (segment + (start 30.15 119.05) + (end 63.8088 119.05) + (width 0.25) + (layer "F.Cu") + (net "MODEM_RXD") + (uuid "d5b9fb67-2d63-4675-9bd5-4dcdf0f7ef9d") + ) + (segment + (start 63.8088 119.05) + (end 81.5888 101.27) + (width 0.25) + (layer "F.Cu") + (net "MODEM_RXD") + (uuid "db14229e-f546-43fc-8fbb-bbb6a54a21bc") + ) + (segment + (start 33.4474 114.1133) + (end 34.2033 114.1133) + (width 0.25) + (layer "B.Cu") + (net "TXA") + (uuid "2053633d-9754-4fdf-8ff7-1e86f4b9a5ad") + ) + (segment + (start 32.8271 114.7336) + (end 33.4474 114.1133) + (width 0.25) + (layer "B.Cu") + (net "TXA") + (uuid "85bc0118-d12f-49a7-9c1b-73021a51b90f") + ) + (segment + (start 33.96 117.78) + (end 32.8271 116.6471) + (width 0.25) + (layer "B.Cu") + (net "TXA") + (uuid "b10e47e6-007c-4350-b457-7ca32c6e5b2a") + ) + (segment + (start 32.8271 116.6471) + (end 32.8271 114.7336) + (width 0.25) + (layer "B.Cu") + (net "TXA") + (uuid "b31317a0-9923-4153-a7ae-d10ec59f485d") + ) + (segment + (start 54.28 94.0366) + (end 54.28 80) + (width 0.25) + (layer "B.Cu") + (net "TXA") + (uuid "ba97f467-06b5-400a-afd4-b5824806dabc") + ) + (segment + (start 34.2033 114.1133) + (end 54.28 94.0366) + (width 0.25) + (layer "B.Cu") + (net "TXA") + (uuid "ecde50cc-3238-41ce-bfe5-602d98a7d725") + ) + (segment + (start 49.2 112.7) + (end 46.66 115.24) + (width 0.25) + (layer "F.Cu") + (net "TXR2_N") + (uuid "75a733e1-91a4-43e8-9ee2-83486718f4f1") + ) + (segment + (start 46.66 115.24) + (end 33.96 115.24) + (width 0.25) + (layer "F.Cu") + (net "TXR2_N") + (uuid "78f3bbd6-a5ca-4155-8ad7-45567edde118") + ) + (segment + (start 28.88 107.62) + (end 28.88 54.28) + (width 0.25) + (layer "B.Cu") + (net "TXR1_N") + (uuid "4da9a5ad-feee-4a02-b449-526afd5673de") + ) + (segment + (start 33.96 112.7) + (end 28.88 107.62) + (width 0.25) + (layer "B.Cu") + (net "TXR1_N") + (uuid "86c3673a-8d3d-4c3c-a9f3-b24c928f8bed") + ) + (segment + (start 76.6348 100.5052) + (end 82.22 94.92) + (width 0.25) + (layer "F.Cu") + (net "MODEM_TXD") + (uuid "037dafa3-ca70-4063-a5f5-41fdc0eef9c8") + ) + (segment + (start 33.96 110.16) + (end 43.6147 100.5053) + (width 0.25) + (layer "F.Cu") + (net "MODEM_TXD") + (uuid "2bcc97e0-50a6-41f0-b37c-542a0cdab5f8") + ) + (segment + (start 43.6147 100.5053) + (end 76.6348 100.5053) + (width 0.25) + (layer "F.Cu") + (net "MODEM_TXD") + (uuid "38431407-291e-4aa4-8485-78aab4426437") + ) + (segment + (start 29.315 28.445) + (end 23.8 33.96) + (width 0.25) + (layer "F.Cu") + (net "OSC1") + (uuid "638dbf92-3bb7-4d7f-b2b8-f489dac60b9d") + ) + (segment + (start 64.205 28.445) + (end 29.315 28.445) + (width 0.25) + (layer "F.Cu") + (net "OSC1") + (uuid "7f0ae1d4-3bff-428c-9c4a-957fe3c971bf") + ) + (segment + (start 77.34 41.58) + (end 64.205 28.445) + (width 0.25) + (layer "F.Cu") + (net "OSC1") + (uuid "e4395b40-f728-48c0-9b56-d386641020ce") + ) + (segment + (start 31.42 59.36) + (end 31.42 105.08) + (width 0.25) + (layer "B.Cu") + (net "OSC1") + (uuid "1a223c3c-9638-4d3e-ba19-5b163ebcc11e") + ) + (segment + (start 33.96 56.82) + (end 31.42 59.36) + (width 0.25) + (layer "B.Cu") + (net "OSC1") + (uuid "338269a3-1d70-4541-a37a-5ededa2b18de") + ) + (segment + (start 33.96 107.3158) + (end 33.96 107.62) + (width 0.25) + (layer "B.Cu") + (net "OSC1") + (uuid "7af67e6a-9e34-4b74-959e-68d01fdb6cdc") + ) + (segment + (start 33.96 107.62) + (end 33.96 107.318095) + (width 0.25) + (layer "B.Cu") + (net "OSC1") + (uuid "a3005087-bdea-40e2-b491-15193f738ee0") + ) + (segment + (start 33.96 33.96) + (end 33.96 56.82) + (width 0.25) + (layer "B.Cu") + (net "OSC1") + (uuid "c3777b5c-ca4f-4068-b61b-4b972555ce34") + ) + (segment + (start 23.8 33.96) + (end 33.96 33.96) + (width 0.25) + (layer "B.Cu") + (net "OSC1") + (uuid "c4e8abbe-d2cc-40aa-9526-d225da552e60") + ) + (segment + (start 31.42 105.08) + (end 33.96 107.62) + (width 0.25) + (layer "B.Cu") + (net "OSC1") + (uuid "cee6c5e0-bd23-4fc7-ae3c-bc5c455aa876") + ) + (segment + (start 82.22 41.58) + (end 79.68 44.12) + (width 0.25) + (layer "F.Cu") + (net "OSC2") + (uuid "434be72c-08ed-4633-a8a5-667e247c91d9") + ) + (segment + (start 79.68 44.12) + (end 28.88 44.12) + (width 0.25) + (layer "F.Cu") + (net "OSC2") + (uuid "b41fbde3-394e-414e-bd36-e4ad0187987a") + ) + (segment + (start 36.5 56.82) + (end 36.5 31.42) + (width 0.25) + (layer "B.Cu") + (net "OSC2") + (uuid "1e891395-4a93-4e23-886a-d02f110f24e1") + ) + (segment + (start 21.26 36.5) + (end 28.88 44.12) + (width 0.25) + (layer "B.Cu") + (net "OSC2") + (uuid "2d963864-7d78-4e12-bd41-2ace360fb7e1") + ) + (segment + (start 23.8 31.42) + (end 21.26 33.96) + (width 0.25) + (layer "B.Cu") + (net "OSC2") + (uuid "6fb29b8e-8b5b-428c-a989-156e1c8538c6") + ) + (segment + (start 21.26 33.96) + (end 21.26 36.5) + (width 0.25) + (layer "B.Cu") + (net "OSC2") + (uuid "73bada82-984f-4405-b6f8-0b39d32aafb5") + ) + (segment + (start 33.96 59.36) + (end 36.5 56.82) + (width 0.25) + (layer "B.Cu") + (net "OSC2") + (uuid "74e4d4f9-19d5-46ed-a5ea-5e55875f23a4") + ) + (segment + (start 33.96 105.08) + (end 33.96 59.36) + (width 0.25) + (layer "B.Cu") + (net "OSC2") + (uuid "91d9dc9e-0d77-4ed7-9a78-d7a7ef7152bd") + ) + (segment + (start 36.5 31.42) + (end 23.8 31.42) + (width 0.25) + (layer "B.Cu") + (net "OSC2") + (uuid "a7f98f10-199a-4a8c-aaca-6703ad2b6cd5") + ) + (segment + (start 75.52 19.64) + (end 97.46 41.58) + (width 0.25) + (layer "F.Cu") + (net "VIN_12") + (uuid "1399d69c-0d82-490a-b75d-2339245b215f") + ) + (segment + (start 127.94 41.58) + (end 97.46 41.58) + (width 0.25) + (layer "F.Cu") + (net "VIN_12") + (uuid "2d413ec2-a344-48d5-860c-9ee2931d8649") + ) + (segment + (start 127.94 41.58) + (end 127.94 26.34) + (width 0.25) + (layer "F.Cu") + (net "VIN_12") + (uuid "cb1fb6b5-d1d5-447e-abbc-430a60bcb9e6") + ) + (segment + (start 74 19.64) + (end 75.52 19.64) + (width 0.25) + (layer "F.Cu") + (net "VIN_12") + (uuid "f24d44f2-29fc-4d66-9af0-b6ec2d22b3e8") + ) + (segment + (start 127.94 26.34) + (end 117.78 16.18) + (width 0.25) + (layer "F.Cu") + (net "VIN_12") + (uuid "f3406ccd-cf88-4b30-b65a-d46111cb8ba7") + ) + (segment + (start 82.22 107.62) + (end 83.3758 108.7758) + (width 0.25) + (layer "F.Cu") + (net "LED_PTT_N") + (uuid "3a02bb4f-6395-4382-993c-afa88768d50f") + ) + (segment + (start 83.3758 108.7758) + (end 131.1329 108.7758) + (width 0.25) + (layer "F.Cu") + (net "LED_PTT_N") + (uuid "cb25f526-a72e-4a6a-861e-0b599bd81008") + ) + (via + (at 131.1329 108.7758) + (size 0.8) + (drill 0.4) + (layers "F.Cu" "B.Cu") + (net "LED_PTT_N") + (uuid "4fa06a16-416e-42e1-9a3e-2c12cc9631cd") + ) + (segment + (start 151.76 41.58) + (end 150.8 41.58) + (width 0.25) + (layer "B.Cu") + (net "LED_PTT_N") + (uuid "4e4e4e79-c777-4fcf-ba55-72e4985ece38") + ) + (segment + (start 153.34 40) + (end 151.76 41.58) + (width 0.25) + (layer "B.Cu") + (net "LED_PTT_N") + (uuid "58ad7246-9715-48dd-abb4-4a828bf912be") + ) + (segment + (start 150.8 49.2) + (end 131.1329 68.8671) + (width 0.25) + (layer "B.Cu") + (net "LED_PTT_N") + (uuid "58f47e65-102b-4b7f-8932-0d2e7c99ca51") + ) + (segment + (start 131.1329 68.8671) + (end 131.1329 108.7758) + (width 0.25) + (layer "B.Cu") + (net "LED_PTT_N") + (uuid "a19a6b77-a69d-4e6c-9421-fd055285ce3f") + ) + (segment + (start 150.8 41.58) + (end 150.8 49.2) + (width 0.25) + (layer "B.Cu") + (net "LED_PTT_N") + (uuid "d3100e45-7abc-4715-8f88-58234c52ece5") + ) + (segment + (start 173.66 37.46) + (end 166.04 37.46) + (width 0.25) + (layer "F.Cu") + (net "LED_PTT_A") + (uuid "6fb910b4-bc38-4ca7-870e-65c35fe382d9") + ) + (segment + (start 166.04 37.46) + (end 163.5 40) + (width 0.25) + (layer "F.Cu") + (net "LED_PTT_A") + (uuid "a9b4d0c4-b222-4a0a-a27b-55a680f50333") + ) + (segment + (start 38.51 19) + (end 45 19) + (width 0.25) + (layer "F.Cu") + (net "USB_VBUS_NC") + (uuid "56ccc1d5-3794-4cb1-873c-6f4f227638cc") + ) + (segment + (start 45 19) + (end 48 22) + (width 0.25) + (layer "F.Cu") + (net "USB_VBUS_NC") + (uuid "658a9f40-4511-4e8c-8689-15d99c5ebdea") + ) + (segment + (start 41.55 24.54) + (end 48 24.54) + (width 0.25) + (layer "F.Cu") + (net "USB_DM") + (uuid "af02fc6c-78de-4c85-9592-5eba21cea443") + ) + (segment + (start 36.01 19) + (end 41.55 24.54) + (width 0.25) + (layer "F.Cu") + (net "USB_DM") + (uuid "fcad0ede-fb3e-4642-aec2-7eba06116a4e") + ) + (segment + (start 34.01 19) + (end 42.09 27.08) + (width 0.25) + (layer "F.Cu") + (net "USB_DP") + (uuid "77b460f4-e0f2-4bdb-ae0a-c9609f22c9dd") + ) + (segment + (start 42.09 27.08) + (end 48 27.08) + (width 0.25) + (layer "F.Cu") + (net "USB_DP") + (uuid "b399c677-51df-4153-a78a-c07ed00fe701") + ) + (segment + (start 100 84.76) + (end 84.359 100.401) + (width 0.25) + (layer "B.Cu") + (net "3V3") + (uuid "06c8e9a5-27e3-44b5-8438-a72c46306920") + ) + (segment + (start 84.359 100.401) + (end 84.359 148.6943) + (width 0.25) + (layer "B.Cu") + (net "3V3") + (uuid "6a1a8521-dc35-4fb4-b0e0-ca7b54fbf93c") + ) + (segment + (start 84.359 148.6943) + (end 72 161.0533) + (width 0.25) + (layer "B.Cu") + (net "3V3") + (uuid "8cd1a7e5-e0d6-4a3f-9f14-33fb53fa760e") + ) + (segment + (start 72 162.23) + (end 72 161.0533) + (width 0.25) + (layer "B.Cu") + (net "3V3") + (uuid "ce1756cc-6c02-4e74-9725-3260d429d46a") + ) + (segment + (start 70.8233 89.4095) + (end 70.8233 163.5933) + (width 0.25) + (layer "B.Cu") + (net "I2C_SDA_3V3") + (uuid "25163ba8-5a8a-40af-933e-07a6fdd412c2") + ) + (segment + (start 83.3771 75.7571) + (end 83.3771 77.6028) + (width 0.25) + (layer "B.Cu") + (net "I2C_SDA_3V3") + (uuid "adce18c7-f608-418c-91b5-dbf57eefba0d") + ) + (segment + (start 70.8233 163.5933) + (end 72 164.77) + (width 0.25) + (layer "B.Cu") + (net "I2C_SDA_3V3") + (uuid "ba563f66-ec08-4203-b89e-f26a4fdd4c16") + ) + (segment + (start 83.3771 77.6028) + (end 82.5672 78.4127) + (width 0.25) + (layer "B.Cu") + (net "I2C_SDA_3V3") + (uuid "be29c88b-6488-4b0f-8549-265129f55336") + ) + (segment + (start 82.5672 78.4127) + (end 81.8201 78.4127) + (width 0.25) + (layer "B.Cu") + (net "I2C_SDA_3V3") + (uuid "d6c632e4-fa09-4909-b3aa-6108b3bbc7a8") + ) + (segment + (start 81.8201 78.4127) + (end 70.8233 89.4095) + (width 0.25) + (layer "B.Cu") + (net "I2C_SDA_3V3") + (uuid "db351cf4-c60a-4c51-a103-8d6d1ec4cfa6") + ) + (segment + (start 82.22 74.6) + (end 83.3771 75.7571) + (width 0.25) + (layer "B.Cu") + (net "I2C_SDA_3V3") + (uuid "ef77c54a-7cb5-4537-88f2-d5ea40c32bf7") + ) + (segment + (start 74.54 164.77) + (end 97.46 164.77) + (width 0.25) + (layer "F.Cu") + (net "I2C_SDA_5V") + (uuid "7bf7c7d8-7bd7-41e9-b773-11638fcf7607") + ) + (segment + (start 97.46 164.77) + (end 100 167.31) + (width 0.25) + (layer "F.Cu") + (net "I2C_SDA_5V") + (uuid "c92bf23c-c5ba-41df-b213-73db7f90866e") + ) + (segment + (start 70.3577 89.0023) + (end 70.3577 165.6677) + (width 0.25) + (layer "B.Cu") + (net "I2C_SCL_3V3") + (uuid "187b20dc-e457-49b0-9c26-24b7b1c26e46") + ) + (segment + (start 70.3577 165.6677) + (end 72 167.31) + (width 0.25) + (layer "B.Cu") + (net "I2C_SCL_3V3") + (uuid "21a7fdcc-9696-4ddf-b455-a6e6a35f1f6d") + ) + (segment + (start 82.22 77.14) + (end 70.3577 89.0023) + (width 0.25) + (layer "B.Cu") + (net "I2C_SCL_3V3") + (uuid "4f1270bd-4f09-4355-b7f7-257d856c5f7f") + ) + (segment + (start 71.4581 171.0314) + (end 98.8186 171.0314) + (width 0.25) + (layer "F.Cu") + (net "I2C_SCL_5V") + (uuid "0e81b945-190c-4355-8cd0-35b016e62929") + ) + (segment + (start 71.5103 168.58) + (end 70.7785 169.3118) + (width 0.25) + (layer "F.Cu") + (net "I2C_SCL_5V") + (uuid "26e685cf-970e-461d-af59-1f3bb711d93c") + ) + (segment + (start 74.54 167.31) + (end 73.27 168.58) + (width 0.25) + (layer "F.Cu") + (net "I2C_SCL_5V") + (uuid "3da29502-55f6-4109-a2fe-9395596f8e28") + ) + (segment + (start 73.27 168.58) + (end 71.5103 168.58) + (width 0.25) + (layer "F.Cu") + (net "I2C_SCL_5V") + (uuid "7d8e0c3a-bb63-44d7-be85-06be8d13c92f") + ) + (segment + (start 98.8186 171.0314) + (end 100 169.85) + (width 0.25) + (layer "F.Cu") + (net "I2C_SCL_5V") + (uuid "91a3e30a-3396-49be-99e1-211e26661ef6") + ) + (segment + (start 70.7785 170.3518) + (end 71.4581 171.0314) + (width 0.25) + (layer "F.Cu") + (net "I2C_SCL_5V") + (uuid "921ef2d7-ab87-4202-be05-7f3ec03a0178") + ) + (segment + (start 70.7785 169.3118) + (end 70.7785 170.3518) + (width 0.25) + (layer "F.Cu") + (net "I2C_SCL_5V") + (uuid "f59fd309-693e-4101-9551-4b0144bc0b15") + ) + (segment + (start 166.04 61.46) + (end 163.5 64) + (width 0.25) + (layer "F.Cu") + (net "LED_TXRX_A") + (uuid "1f852a70-6ef6-49b8-a308-2a0730e9f9bf") + ) + (segment + (start 173.66 61.46) + (end 166.04 61.46) + (width 0.25) + (layer "F.Cu") + (net "LED_TXRX_A") + (uuid "7db5a85c-82ad-4b0a-9f1a-564105f01a9d") + ) + (segment + (start 166.04 25.46) + (end 163.5 28) + (width 0.25) + (layer "F.Cu") + (net "LED_PWR_A") + (uuid "032a8fef-9b92-400c-bc02-acce36872aec") + ) + (segment + (start 173.66 25.46) + (end 166.04 25.46) + (width 0.25) + (layer "F.Cu") + (net "LED_PWR_A") + (uuid "ee4cbe78-8140-4a8a-ba83-a52cc1428e7d") + ) + (segment + (start 131.82 28.9) + (end 131.82 42.78) + (width 0.25) + (layer "B.Cu") + (net "+5V_REG") + (uuid "4098a5fd-0da0-4437-a5e8-cb80b14ad322") + ) + (segment + (start 131.82 42.78) + (end 127.94 46.66) + (width 0.25) + (layer "B.Cu") + (net "+5V_REG") + (uuid "5028f1bc-2208-45eb-8f71-dc524682c0fd") + ) + (segment + (start 51.74 80) + (end 52.7867 78.9533) + (width 0.25) + (layer "F.Cu") + (net "TX_LVL") + (uuid "383c875e-d44d-4c4c-ab6e-db49c04786eb") + ) + (segment + (start 52.7867 78.9533) + (end 58.6333 78.9533) + (width 0.25) + (layer "F.Cu") + (net "TX_LVL") + (uuid "7ae4ed18-573c-468e-a6d3-36a6842d74e5") + ) + (segment + (start 58.6333 78.9533) + (end 64.44 84.76) + (width 0.25) + (layer "F.Cu") + (net "TX_LVL") + (uuid "f5d8b56e-b04c-4d65-b57b-e578001f4160") + ) + (segment + (start 81.0445 103.7155) + (end 81.0445 113.171) + (width 0.25) + (layer "F.Cu") + (net "PTT_DRV") + (uuid "0f95b7ae-d3ba-42b6-b87c-d4c482fe7e02") + ) + (segment + (start 81.7002 113.8267) + (end 113.8267 113.8267) + (width 0.25) + (layer "F.Cu") + (net "PTT_DRV") + (uuid "2e8a1c75-4b5f-48cd-8769-f08bc7e143d8") + ) + (segment + (start 113.8267 113.8267) + (end 125.4 125.4) + (width 0.25) + (layer "F.Cu") + (net "PTT_DRV") + (uuid "94039f0f-11ca-497d-8266-41d9e6711455") + ) + (segment + (start 81.0445 113.171) + (end 81.7002 113.8267) + (width 0.25) + (layer "F.Cu") + (net "PTT_DRV") + (uuid "9e0979ff-2ee3-485a-9256-0edd5f02ca03") + ) + (segment + (start 82.22 102.54) + (end 81.0445 103.7155) + (width 0.25) + (layer "F.Cu") + (net "PTT_DRV") + (uuid "b269d46a-6338-4d81-a8fd-676ad3502520") + ) + (segment + (start 122.9962 103.81) + (end 135.56 116.3738) + (width 0.25) + (layer "B.Cu") + (net "PTT_B") + (uuid "e04edeb6-e4e4-41fb-b38d-fdd8256b4537") + ) + (segment + (start 121.59 103.81) + (end 122.9962 103.81) + (width 0.25) + (layer "B.Cu") + (net "PTT_B") + (uuid "f14754bc-12f2-431d-820e-9e9564ec87d8") + ) + (segment + (start 135.56 116.3738) + (end 135.56 125.4) + (width 0.25) + (layer "B.Cu") + (net "PTT_B") + (uuid "fa07f160-347a-40d4-954f-f6e774556e0b") + ) + (segment + (start 83.4105 111.3505) + (end 150.7199 111.3505) + (width 0.25) + (layer "F.Cu") + (net "LED_DCD_N") + (uuid "45eb16ce-d5cc-490a-a3ed-01b16725177c") + ) + (segment + (start 82.22 110.16) + (end 83.4105 111.3505) + (width 0.25) + (layer "F.Cu") + (net "LED_DCD_N") + (uuid "f9df3e95-5762-4a17-bbe8-88063eaab54e") + ) + (via + (at 150.7199 111.3505) + (size 0.8) + (drill 0.4) + (layers "F.Cu" "B.Cu") + (net "LED_DCD_N") + (uuid "15163a10-cb7c-4825-ae4a-6bc666d256f8") + ) + (segment + (start 153.34 52) + (end 150.7199 54.6201) + (width 0.25) + (layer "B.Cu") + (net "LED_DCD_N") + (uuid "61d301f2-da19-4ca8-93c7-fde3ccfc5c7c") + ) + (segment + (start 150.7199 54.6201) + (end 150.7199 111.3505) + (width 0.25) + (layer "B.Cu") + (net "LED_DCD_N") + (uuid "e9ac9ec2-d1ed-45df-be77-bf853ec68078") + ) + (segment + (start 153.34 64) + (end 153.34 70.66) + (width 0.25) + (layer "F.Cu") + (net "LED_TXRX_N") + (uuid "39d01fe3-697f-4cfd-872c-9e752e72b08b") + ) + (segment + (start 140.3667 83.6333) + (end 79.834 83.6333) + (width 0.25) + (layer "F.Cu") + (net "LED_TXRX_N") + (uuid "95d4310f-80fa-412d-9500-4674efc01c20") + ) + (segment + (start 153.34 70.66) + (end 140.3667 83.6333) + (width 0.25) + (layer "F.Cu") + (net "LED_TXRX_N") + (uuid "e37f8c06-c2a2-453e-85f5-db741f94b304") + ) + (via + (at 79.834 83.6333) + (size 0.8) + (drill 0.4) + (layers "F.Cu" "B.Cu") + (net "LED_TXRX_N") + (uuid "b997a2bd-5b54-4665-8b66-e605935f146f") + ) + (segment + (start 79.834 110.314) + (end 79.834 83.6333) + (width 0.25) + (layer "B.Cu") + (net "LED_TXRX_N") + (uuid "1567baa4-c2cd-4da9-a378-8e600e1c5caf") + ) + (segment + (start 82.22 112.7) + (end 79.834 110.314) + (width 0.25) + (layer "B.Cu") + (net "LED_TXRX_N") + (uuid "b4161c9e-fe4c-4e31-8939-c73ee022eb02") + ) + (segment + (start 155.88 10) + (end 142.08 23.8) + (width 0.25) + (layer "F.Cu") + (net "+5V") + (uuid "404cf877-385e-4b9b-898f-720ba3bca41a") + ) + (segment + (start 142.08 23.8) + (end 133.02 23.8) + (width 0.25) + (layer "F.Cu") + (net "+5V") + (uuid "83ab44ea-757e-4b1f-95f0-20d36f932b81") + ) + (segment + (start 166.04 49.46) + (end 163.5 52) + (width 0.25) + (layer "F.Cu") + (net "LED_DCD_A") + (uuid "2b6b0364-0860-4a5e-baf2-d31d8cb798be") + ) + (segment + (start 173.66 49.46) + (end 166.04 49.46) + (width 0.25) + (layer "F.Cu") + (net "LED_DCD_A") + (uuid "f213417d-08c6-4014-aba5-bc15580634c0") + ) + (embedded_fonts no) +) diff --git a/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pro b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pro new file mode 100644 index 0000000..d0f5fc5 --- /dev/null +++ b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_pro @@ -0,0 +1,691 @@ +{ + "board": { + "3dviewports": [], + "design_settings": { + "defaults": { + "apply_defaults_to_fp_barcodes": false, + "apply_defaults_to_fp_dimensions": false, + "apply_defaults_to_fp_fields": false, + "apply_defaults_to_fp_shapes": false, + "apply_defaults_to_fp_text": false, + "board_outline_line_width": 0.05, + "copper_line_width": 0.2, + "copper_text_italic": false, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "copper_text_upright": false, + "courtyard_line_width": 0.05, + "dimension_precision": 4, + "dimension_units": 3, + "dimensions": { + "arrow_length": 1270000, + "extension_offset": 500000, + "keep_text_aligned": true, + "suppress_zeroes": true, + "text_position": 0, + "units_format": 0 + }, + "fab_line_width": 0.1, + "fab_text_italic": false, + "fab_text_size_h": 1.0, + "fab_text_size_v": 1.0, + "fab_text_thickness": 0.15, + "fab_text_upright": false, + "other_line_width": 0.1, + "other_text_italic": false, + "other_text_size_h": 1.0, + "other_text_size_v": 1.0, + "other_text_thickness": 0.15, + "other_text_upright": false, + "pads": { + "drill": 0.8, + "height": 1.6, + "width": 1.6 + }, + "silk_line_width": 0.1, + "silk_text_italic": false, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.1, + "silk_text_upright": false, + "zones": { + "border_display_style": 2, + "border_hatch_pitch": 0.5, + "corner_radius": 0.0, + "corner_smoothing": 0, + "fill_mode": 0, + "hatch_gap": 1.5, + "hatch_orientation": 0.0, + "hatch_smoothing_level": 0, + "hatch_smoothing_value": 0.1, + "hatch_thickness": 1.0, + "min_clearance": 0.5, + "min_island_area": 10.0, + "min_thickness": 0.25, + "pad_connection": 1, + "remove_islands": 0, + "thermal_relief_gap": 0.5, + "thermal_relief_spoke_width": 0.5 + } + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "meta": { + "version": 2 + }, + "rule_severities": { + "annular_width": "error", + "clearance": "error", + "connection_width": "warning", + "copper_edge_clearance": "error", + "copper_sliver": "warning", + "courtyards_overlap": "error", + "creepage": "error", + "diff_pair_gap_out_of_range": "error", + "diff_pair_uncoupled_length_too_long": "error", + "drill_out_of_range": "error", + "duplicate_footprints": "warning", + "extra_footprint": "warning", + "footprint": "error", + "footprint_filters_mismatch": "ignore", + "footprint_symbol_field_mismatch": "warning", + "footprint_symbol_mismatch": "warning", + "footprint_type_mismatch": "ignore", + "hole_clearance": "error", + "hole_to_hole": "warning", + "holes_co_located": "warning", + "invalid_outline": "error", + "isolated_copper": "warning", + "item_on_disabled_layer": "error", + "items_not_allowed": "error", + "length_out_of_range": "error", + "lib_footprint_issues": "warning", + "lib_footprint_mismatch": "warning", + "malformed_courtyard": "error", + "microvia_drill_out_of_range": "error", + "mirrored_text_on_front_layer": "warning", + "missing_courtyard": "ignore", + "missing_footprint": "warning", + "missing_tuning_profile": "warning", + "net_conflict": "warning", + "nonmirrored_text_on_back_layer": "warning", + "npth_inside_courtyard": "error", + "padstack": "warning", + "pth_inside_courtyard": "error", + "shorting_items": "error", + "silk_edge_clearance": "warning", + "silk_over_copper": "warning", + "silk_overlap": "warning", + "skew_out_of_range": "error", + "solder_mask_bridge": "error", + "starved_thermal": "error", + "text_height": "warning", + "text_on_edge_cuts": "error", + "text_thickness": "warning", + "through_hole_pad_without_hole": "error", + "too_many_vias": "error", + "track_angle": "error", + "track_dangling": "warning", + "track_not_centered_on_via": "ignore", + "track_on_post_machined_layer": "error", + "track_segment_length": "error", + "track_width": "error", + "tracks_crossing": "error", + "tuning_profile_track_geometries": "ignore", + "unconnected_items": "error", + "unresolved_variable": "error", + "via_dangling": "warning", + "zones_intersect": "error" + }, + "rules": { + "max_error": 0.005, + "min_clearance": 0.0, + "min_connection": 0.0, + "min_copper_edge_clearance": 0.5, + "min_groove_width": 0.0, + "min_hole_clearance": 0.25, + "min_hole_to_hole": 0.25, + "min_microvia_diameter": 0.2, + "min_microvia_drill": 0.1, + "min_resolved_spokes": 2, + "min_silk_clearance": 0.0, + "min_text_height": 0.8, + "min_text_thickness": 0.08, + "min_through_hole_diameter": 0.3, + "min_track_width": 0.2, + "min_via_annular_width": 0.1, + "min_via_diameter": 0.5, + "solder_mask_to_copper_clearance": 0.0, + "use_height_for_length_calcs": true + }, + "teardrop_options": [ + { + "td_onpthpad": true, + "td_onroundshapesonly": false, + "td_onsmdpad": true, + "td_ontrackend": false, + "td_onvia": true + } + ], + "teardrop_parameters": [ + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_round_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_rect_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_track_end", + "td_width_to_size_filter_ratio": 0.9 + } + ], + "track_widths": [], + "tuning_pattern_settings": { + "diff_pair_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 1.0 + }, + "diff_pair_skew_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 0.6 + }, + "single_track_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 0.6 + } + }, + "via_dimensions": [], + "zones_allow_external_fillets": false + }, + "ipc2581": { + "bom_rev": "", + "dist": "", + "distpn": "", + "internal_id": "", + "mfg": "", + "mpn": "", + "sch_revision": "" + }, + "layer_pairs": [], + "layer_presets": [], + "viewports": [] + }, + "boards": [], + "component_class_settings": { + "assignments": [], + "meta": { + "version": 0 + }, + "sheet_component_classes": { + "enabled": false + } + }, + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "endpoint_off_grid": "warning", + "extra_units": "error", + "field_name_whitespace": "warning", + "footprint_filter": "ignore", + "footprint_link_issues": "warning", + "four_way_junction": "ignore", + "ground_pin_not_ground": "warning", + "hier_label_mismatch": "error", + "isolated_pin_label": "warning", + "label_dangling": "error", + "label_multiple_wires": "warning", + "lib_symbol_issues": "warning", + "lib_symbol_mismatch": "warning", + "missing_bidi_pin": "warning", + "missing_input_pin": "warning", + "missing_power_pin": "error", + "missing_unit": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "same_local_global_label": "warning", + "similar_label_and_power": "warning", + "similar_labels": "warning", + "similar_power": "warning", + "simulation_model_issue": "ignore", + "single_global_label": "ignore", + "stacked_pin_name": "warning", + "unannotated": "error", + "unconnected_wire_endpoint": "warning", + "undefined_netclass": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "t-modem-c1224.kicad_pro", + "version": 3 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "priority": 2147483647, + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "tuning_profile": "", + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6 + } + ], + "meta": { + "version": 5 + }, + "net_colors": null, + "netclass_assignments": null, + "netclass_patterns": [ + { + "netclass": "Default", + "pattern": "GND" + }, + { + "netclass": "Default", + "pattern": "MODEM_CLK" + }, + { + "netclass": "Default", + "pattern": "OSC2" + } + ] + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "./", + "plot": "", + "specctra_dsn": "t-modem-c1224.dsn", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "annotation": { + "method": 0, + "sort_order": 0 + }, + "bom_export_filename": "${PROJECTNAME}.csv", + "bom_fmt_presets": [], + "bom_fmt_settings": { + "field_delimiter": ",", + "keep_line_breaks": false, + "keep_tabs": false, + "name": "CSV", + "ref_delimiter": ",", + "ref_range_delimiter": "", + "string_delimiter": "\"" + }, + "bom_presets": [], + "bom_settings": { + "exclude_dnp": false, + "fields_ordered": [ + { + "group_by": false, + "label": "Reference", + "name": "Reference", + "show": true + }, + { + "group_by": false, + "label": "Qty", + "name": "${QUANTITY}", + "show": true + }, + { + "group_by": true, + "label": "Value", + "name": "Value", + "show": true + }, + { + "group_by": true, + "label": "DNP", + "name": "${DNP}", + "show": true + }, + { + "group_by": true, + "label": "Exclude from BOM", + "name": "${EXCLUDE_FROM_BOM}", + "show": true + }, + { + "group_by": true, + "label": "Exclude from Board", + "name": "${EXCLUDE_FROM_BOARD}", + "show": true + }, + { + "group_by": true, + "label": "Footprint", + "name": "Footprint", + "show": true + }, + { + "group_by": false, + "label": "Datasheet", + "name": "Datasheet", + "show": true + } + ], + "filter_string": "", + "group_symbols": true, + "include_excluded_from_bom": true, + "name": "Default Editing", + "sort_asc": true, + "sort_field": "Referenz" + }, + "bus_aliases": {}, + "connection_grid_size": 50.0, + "drawing": { + "dashed_lines_dash_length_ratio": 12.0, + "dashed_lines_gap_length_ratio": 3.0, + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "hop_over_size_choice": 0, + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "operating_point_overlay_i_precision": 3, + "operating_point_overlay_i_range": "~A", + "operating_point_overlay_v_precision": 3, + "operating_point_overlay_v_range": "~V", + "overbar_offset_ratio": 0.12, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "page_layout_descr_file": "", + "plot_directory": "", + "reuse_designators": true, + "spice_current_sheet_as_root": false, + "spice_external_command": "spice \"%I\"", + "spice_model_language": true, + "spice_save_all_currents": false, + "spice_save_all_voltages": false, + "subpart_first_id": 65, + "subpart_id_separator": 0, + "top_level_sheets": [ + { + "filename": "t-modem-c1224.kicad_sch", + "name": "t-modem-c1224", + "uuid": "00000000-0000-0000-0000-000000000000" + } + ], + "used_designators": "", + "variants": [] + }, + "sheets": [ + [ + "e2b1c8a0-0000-4000-8000-000000000001", + "" + ] + ], + "text_variables": { + "PROJECT": "T-Modem", + "VERSION": "0.25" + }, + "tuning_profiles": { + "meta": { + "version": 0 + }, + "tuning_profiles_impedance_geometric": [] + } +} diff --git a/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sch b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sch new file mode 100644 index 0000000..dbd70cf --- /dev/null +++ b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sch @@ -0,0 +1,3982 @@ +(kicad_sch + (version 20241209) + (generator "eeschema") + (generator_version "10.0") + (uuid "a5eb3280-2789-4cbf-b8c9-0e2eeea741d8") + (paper "A3") + (title_block + (title "T-Modem") + (date "2026-07-21") + (rev "0.25") + (company "ngteq GPLv3 AS-IS standard reference") + (comment 1 "c1224 · 12V+buck · USB data-only (no VBUS power) · dual XTAL") + (comment 2 "Nets: docs/SCHEMATIC.md") + ) + (lib_symbols +(symbol "R" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "R" + (at 2.032 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R" + (at 0 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "R res resistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "R_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "R_0_1" + (rectangle + (start -1.016 -2.54) + (end 1.016 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "C" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "C" + (at 0.635 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C" + (at 0.635 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "C_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "C_0_1" + (polyline + (pts + (xy -2.032 0.762) (xy 2.032 0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.032 -0.762) (xy 2.032 -0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "C_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "LED" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "D" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "LED" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Light emitting diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "LED diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "LED* LED_SMD:* LED_THT:*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "LED_0_1" + (polyline + (pts + (xy -3.048 -0.762) (xy -4.572 -2.286) (xy -3.81 -2.286) (xy -4.572 -2.286) (xy -4.572 -1.524) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.778 -0.762) (xy -3.302 -2.286) (xy -2.54 -2.286) (xy -3.302 -2.286) (xy -3.302 -1.524) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 0) (xy 1.27 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 -1.27) (xy -1.27 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -1.27) (xy 1.27 1.27) (xy -1.27 0) (xy 1.27 -1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "LED_1_1" + (pin passive line + (at -3.81 0 0) + (length 2.54) + (name "K" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 2.54) + (name "A" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "D_Schottky" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "D" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "D_Schottky" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Schottky diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "diode Schottky" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "TO-???* *_Diode_* *SingleDiode* D_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "D_Schottky_0_1" + (polyline + (pts + (xy -1.905 0.635) (xy -1.905 1.27) (xy -1.27 1.27) (xy -1.27 -1.27) (xy -0.635 -1.27) (xy -0.635 -0.635) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 1.27) (xy 1.27 -1.27) (xy -1.27 0) (xy 1.27 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 0) (xy -1.27 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "D_Schottky_1_1" + (pin passive line + (at -3.81 0 0) + (length 2.54) + (name "K" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 2.54) + (name "A" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Fuse" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "F" + (at 2.032 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Fuse" + (at -1.905 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Fuse" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "fuse" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "*Fuse*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Fuse_0_1" + (rectangle + (start -0.762 -2.54) + (end 0.762 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0 -2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Fuse_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "C_Polarized" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "C" + (at 0.635 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C_Polarized" + (at 0.635 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Polarized capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "CP_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "C_Polarized_0_1" + (rectangle + (start -2.286 0.508) + (end 2.286 1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.778 2.286) (xy -0.762 2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 2.794) (xy -1.27 1.778) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 2.286 -0.508) + (end -2.286 -1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + ) + (symbol "C_Polarized_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Crystal_GND24" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "Y" + (at 3.175 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "Crystal_GND24" + (at 3.175 3.175 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Four pin crystal, GND on pins 2 and 4" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property private "KLC_S3.3" "The rectangle is not a symbol body but a graphical element" + (at 0 -12.7 0) + (show_name yes) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property private "KLC_S4.1" "Some pins are on 50mil grid to make the symbol small" + (at 0 -15.24 0) + (show_name yes) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "quartz ceramic resonator oscillator" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Crystal*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Crystal_GND24_0_1" + (polyline + (pts + (xy -2.54 2.286) (xy -2.54 3.556) (xy 2.54 3.556) (xy 2.54 2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.54 0) (xy -2.032 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.54 -2.286) (xy -2.54 -3.556) (xy 2.54 -3.556) (xy 2.54 -2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.032 -1.27) (xy -2.032 1.27) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.143 2.54) + (end 1.143 -2.54) + (stroke + (width 0.3048) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 -3.81) (xy 0 -3.556) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.032 0) (xy 2.54 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.032 -1.27) (xy 2.032 1.27) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Crystal_GND24_1_1" + (pin passive line + (at -3.81 0 0) + (length 1.27) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -5.08 90) + (length 1.27) + (name "G" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 1.27) + (name "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -5.08 90) + (length 1.27) + (hide yes) + (name "G" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "R_Potentiometer" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "RV" + (at -4.445 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R_Potentiometer" + (at -2.54 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Potentiometer" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "R" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Type" "POT" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=r0 2=wiper 3=r1" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "resistor variable" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Potentiometer*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "R_Potentiometer_0_1" + (rectangle + (start 1.016 2.54) + (end -1.016 -2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.143 0) (xy 2.286 0.508) (xy 2.286 -0.508) (xy 1.143 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 2.54 0) (xy 1.524 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_Potentiometer_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 1.27) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "GND" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -6.35 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "GND_1_1" + (pin power_in line + (at 0 0 270) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "+5V" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "+5V" + (at 0 3.556 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+5V\"" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "+5V_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+5V_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "+3V3" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "+3V3" + (at 0 3.556 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3V3\"" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "+3V3_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+3V3_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "USB_A" + (pin_names + (offset 1.016) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at -5.08 11.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "USB_A" + (at -5.08 8.89 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 3.81 -1.27 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 3.81 -1.27 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "USB Type A connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector USB" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "USB*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "USB_A_0_1" + (rectangle + (start -5.08 -7.62) + (end 5.08 7.62) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (circle + (center -3.81 2.159) + (radius 0.635) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy -3.175 2.159) (xy -2.54 2.159) (xy -1.27 3.429) (xy -0.635 3.429) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.54 2.159) (xy -1.905 2.159) (xy -1.27 0.889) (xy 0 0.889) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.524 4.826) + (end -4.318 5.334) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -1.27 4.572) + (end -4.572 5.842) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center -0.635 3.429) + (radius 0.381) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -0.127 -7.62) + (end 0.127 -6.858) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 0.254 1.27) + (end -0.508 0.508) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 0.635 2.794) (xy 0.635 1.524) (xy 1.905 2.159) (xy 0.635 2.794) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 5.08 4.953) + (end 4.318 5.207) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 5.08 -0.127) + (end 4.318 0.127) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 5.08 -2.667) + (end 4.318 -2.413) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "USB_A_1_1" + (polyline + (pts + (xy -1.905 2.159) (xy 0.635 2.159) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (pin power_in line + (at 7.62 5.08 180) + (length 2.54) + (name "VBUS" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 7.62 -2.54 180) + (length 2.54) + (name "D-" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 7.62 0 180) + (length 2.54) + (name "D+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -10.16 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -2.54 -10.16 90) + (length 2.54) + (name "Shield" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "SH" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Barrel_Jack" + (pin_names + (offset 1.016) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 5.334 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Barrel_Jack" + (at 0 -5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 1.27 -1.016 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 1.27 -1.016 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "DC Barrel Jack" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "DC power barrel jack connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "BarrelJack*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Barrel_Jack_0_1" + (rectangle + (start -5.08 3.81) + (end 5.08 -3.81) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (polyline + (pts + (xy -3.81 -2.54) (xy -2.54 -2.54) (xy -1.27 -1.27) (xy 0 -2.54) (xy 2.54 -2.54) (xy 5.08 -2.54) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start -3.302 1.905) + (mid -3.9343 2.54) + (end -3.302 3.175) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start -3.302 1.905) + (mid -3.9343 2.54) + (end -3.302 3.175) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 3.683 3.175) + (end -3.302 1.905) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 5.08 2.54) (xy 3.81 2.54) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Barrel_Jack_1_1" + (pin passive line + (at 7.62 2.54 180) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 -2.54 180) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_01x04" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_01x04" + (at 0 -7.62 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x04_1_1" + (rectangle + (start -1.27 3.81) + (end 1.27 -6.35) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -4.953) + (end 0 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 2.54 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -2.54 0) + (length 3.81) + (name "Pin_3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -5.08 0) + (length 3.81) + (name "Pin_4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_01x03" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_01x03" + (at 0 -5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x03_1_1" + (rectangle + (start -1.27 3.81) + (end 1.27 -3.81) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 2.54 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -2.54 0) + (length 3.81) + (name "Pin_3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_01x01" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_01x01" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x01_1_1" + (rectangle + (start -1.27 1.27) + (end 1.27 -1.27) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_02x04_Odd_Even" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 1.27 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_02x04_Odd_Even" + (at 1.27 -7.62 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, double row, 02x04, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_2x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_02x04_Odd_Even_1_1" + (rectangle + (start -1.27 3.81) + (end 3.81 -6.35) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -4.953) + (end 0 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 2.667) + (end 2.54 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 0.127) + (end 2.54 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 -2.413) + (end 2.54 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 -4.953) + (end 2.54 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 2.54 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 2.54 180) + (length 3.81) + (name "Pin_2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 0 180) + (length 3.81) + (name "Pin_4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -2.54 0) + (length 3.81) + (name "Pin_5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 -2.54 180) + (length 3.81) + (name "Pin_6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -5.08 0) + (length 3.81) + (name "Pin_7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 -5.08 180) + (length 3.81) + (name "Pin_8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "SW_Push" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "SW" + (at 1.27 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push" + (at 0 -1.524 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "SW_Push_0_1" + (circle + (center -2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 1.27) (xy -2.54 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "PN2222A" + (extends "Q_NPN_EBC") + (property "Reference" "Q" + (at 5.08 1.905 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "PN2222A" + (at 5.08 0 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-92_Inline" + (at 5.08 -1.905 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + ) + ) + (property "Datasheet" "https://www.onsemi.com/pub/Collateral/PN2222-D.PDF" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Description" "1A Ic, 40V Vce, NPN Transistor, General Purpose Transistor, TO-92" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "NPN Transistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "TO?92*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "TCM3105" + (pin_names (offset 1.016)) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "U" (at 0 11.43 0) (effects (font (size 1.27 1.27)))) + (property "Value" "TCM3105" (at 0 -11.43 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "Package_DIP:DIP-16_W7.62mm_Socket" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Datasheet" "https://www.qsl.net/o/on7pc/datasheet/ic/TCM3105.pdf" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Description" "Bell 202 FSK modem DIP-16" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (symbol "TCM3105_0_1" + (rectangle (start -5.08 10.16) (end 5.08 -10.16) + (stroke (width 0.254) (type default)) (fill (type background))) + ) + (symbol "TCM3105_1_1" + (pin power_in line + (at -7.62 8.89 0) + (length 2.54) + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -7.62 6.35 0) + (length 2.54) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin output line + (at -7.62 3.81 0) + (length 2.54) + (name "CDT" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin input line + (at -7.62 1.27 0) + (length 2.54) + (name "RXA" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -7.62 -1.27 0) + (length 2.54) + (name "TRS" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line + (at -7.62 -3.81 0) + (length 2.54) + (name "NC" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -7.62 -6.35 0) + (length 2.54) + (name "RXB" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin output line + (at -7.62 -8.89 0) + (length 2.54) + (name "RXD" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line + (at 7.62 -8.89 180) + (length 2.54) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 -6.35 180) + (length 2.54) + (name "CDL" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin output line + (at 7.62 -3.81 180) + (length 2.54) + (name "TXA" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 -1.27 180) + (length 2.54) + (name "TXR2" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 1.27 180) + (length 2.54) + (name "TXR1" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin input line + (at 7.62 3.81 180) + (length 2.54) + (name "TXD" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 6.35 180) + (length 2.54) + (name "OSC1" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 8.89 180) + (length 2.54) + (name "OSC2" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + ) + (embedded_fonts no) + ) +(symbol "RaspberryPi_Pico" + (pin_names (offset 1.016)) + (exclude_from_sim no) (in_bom yes) (on_board yes) + (property "Reference" "U" (at 0 17.78 0) (effects (font (size 1.27 1.27)))) + (property "Value" "RaspberryPi_Pico" (at 0 -5.08 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "Module:RaspberryPi_Pico_Common_THT" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Datasheet" "https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Description" "Raspberry Pi Pico module subset" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (symbol "RaspberryPi_Pico_0_1" + (rectangle (start -5.08 16.51) (end 5.08 -3.81) + (stroke (width 0.254) (type default)) (fill (type background))) + ) + (symbol "RaspberryPi_Pico_1_1" + (pin bidirectional line + (at -7.62 15.24 0) + (length 2.54) + (name "GP0" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 12.7 0) + (length 2.54) + (name "GP1" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 10.16 0) + (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 7.62 0) + (length 2.54) + (name "GP6" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 5.08 0) + (length 2.54) + (name "GP7" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 2.540000000000001 0) + (length 2.54) + (name "GP8" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 0.0 0) + (length 2.54) + (name "GP9" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -2.540000000000001 0) + (length 2.54) + (name "GP10" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -5.08 0) + (length 2.54) + (name "GP11" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -7.619999999999999 0) + (length 2.54) + (name "GP12" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -10.159999999999998 0) + (length 2.54) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -12.700000000000001 0) + (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -15.24 0) + (length 2.54) + (name "VSYS" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -17.78 0) + (length 2.54) + (name "VBUS" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + ) + (embedded_fonts no) + ) + ) + (text "T-Modem-c1224 v0.26. 12V->buck->5V. USB VBUS DNI. Single XTAL: Y1 4.4336 (1200) or Y2 6.5536 (2400); other DNI. No mux. PCB 180x180. TXR1/TXR2 0R default Bell202 1200." + (at 20 20 0) + (effects (font (size 1.5 1.5)) (justify left top)) + (uuid "da604e3e-83d5-486a-b912-236bab322db8") + ) + (symbol + (lib_id "RaspberryPi_Pico") + (at 50 80 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "10ad2916-0267-4d48-a041-fd533d17aea0") + (property "Reference" "U1" (at 50 85 0) (effects (font (size 1.27 1.27)))) + (property "Value" "Pico" (at 50 75 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "Module:RaspberryPi_Pico_Common_THT" (at 50 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 50 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "TCM3105") + (at 120 80 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "5e7a6d1b-8291-4ff3-9572-e2c8af10d017") + (property "Reference" "U_MODEM" (at 120 85 0) (effects (font (size 1.27 1.27)))) + (property "Value" "TCM3105" (at 120 75 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "Package_DIP:DIP-16_W7.62mm_Socket" (at 120 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 120 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "USB_A") + (at 40 40 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "435b6b2d-ffbf-43d2-a02a-687ee6a3ead9") + (property "Reference" "J_USB" (at 40 45 0) (effects (font (size 1.27 1.27)))) + (property "Value" "USB_A" (at 40 35 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "Connector_USB:USB_A_Molex_67643_Horizontal" (at 40 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 40 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Conn_01x04") + (at 80 40 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "d380c833-bcb6-4a3e-a958-9636ce54e81c") + (property "Reference" "J_USB_PICO" (at 80 45 0) (effects (font (size 1.27 1.27)))) + (property "Value" "to Pico Micro-USB" (at 80 35 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 80 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 80 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Barrel_Jack") + (at 120 40 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "9a85b3a8-b3f2-4ce8-ae6a-454225375903") + (property "Reference" "J_DC" (at 120 45 0) (effects (font (size 1.27 1.27)))) + (property "Value" "12V" (at 120 35 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 120 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 120 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Conn_01x04") + (at 180 80 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "bc47bb3f-fa42-49f8-9584-d070a174dc5b") + (property "Reference" "J_AF" (at 180 85 0) (effects (font (size 1.27 1.27)))) + (property "Value" "AF" (at 180 75 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 180 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 180 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Conn_01x04") + (at 180 40 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "b0e5fb1a-cb51-493d-b215-3f3526e36a27") + (property "Reference" "J_LCD_I2C" (at 180 45 0) (effects (font (size 1.27 1.27)))) + (property "Value" "LCD_I2C" (at 180 35 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 180 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 180 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Conn_02x04_Odd_Even") + (at 150 40 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "58dddaf1-e83f-44f1-abb9-7fbccd7bc715") + (property "Reference" "U_LVL" (at 150 45 0) (effects (font (size 1.27 1.27)))) + (property "Value" "BSS138" (at 150 35 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 150 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 150 40 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Conn_01x03") + (at 160 120 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "18e37f15-5a90-4e37-b9cf-8c812c3d4bed") + (property "Reference" "U_REG" (at 160 125 0) (effects (font (size 1.27 1.27)))) + (property "Value" "Mini560-5V" (at 160 115 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 160 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 160 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "D_Schottky") + (at 200 110 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "59ccbd3e-7676-442e-9866-8743fbaa8c5a") + (property "Reference" "D_OR1" (at 200 115 0) (effects (font (size 1.27 1.27)))) + (property "Value" "1N5819" (at 200 105 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 200 110 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 200 110 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "D_Schottky") + (at 200 130 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "fae9bf4e-241d-43b4-abeb-ac089c2932ae") + (property "Reference" "D_OR2" (at 200 135 0) (effects (font (size 1.27 1.27)))) + (property "Value" "DNI-no-VBUS-OR" (at 200 125 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 200 130 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 200 130 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Fuse") + (at 180 120 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "38e8d49b-f710-407e-99cf-5b279d13b6b1") + (property "Reference" "F1" (at 180 125 0) (effects (font (size 1.27 1.27)))) + (property "Value" "MF-RG500" (at 180 115 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 180 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 180 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "PN2222A") + (at 220 80 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "63bedf57-c9eb-4cc6-9684-6efdac0fcad7") + (property "Reference" "Q1" (at 220 85 0) (effects (font (size 1.27 1.27)))) + (property "Value" "2N2222A" (at 220 75 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 220 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 220 80 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "SW_Push") + (at 100 120 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "d803de91-51c1-4f42-9778-6c1f19c4e393") + (property "Reference" "SW1" (at 100 125 0) (effects (font (size 1.27 1.27)))) + (property "Value" "BOOTSEL" (at 100 115 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 100 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 100 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Crystal_GND24") + (at 120 120 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "66113680-c9ed-4b56-b3ca-6059c0ae60fb") + (property "Reference" "Y1" (at 120 125 0) (effects (font (size 1.27 1.27)))) + (property "Value" "4.4336 MHz" (at 120 115 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 120 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 120 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (symbol + (lib_id "Crystal_GND24") + (at 145 120 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (uuid "e99a82ba-0ef4-4116-b623-e8cf842f0f3e") + (property "Reference" "Y2" (at 145 125 0) (effects (font (size 1.27 1.27)))) + (property "Value" "6.5536 MHz" (at 145 115 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "" (at 145 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + (property "Datasheet" "" (at 145 120 0) (effects (font (size 1.27 1.27))) (hide yes)) + ) + (sheet_instances + (path "/" (page "1")) + ) + (embedded_fonts no) +) \ No newline at end of file diff --git a/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sym b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sym new file mode 100644 index 0000000..df0b12a --- /dev/null +++ b/hardware/kicad/t-modem-c1224/t-modem-c1224.kicad_sym @@ -0,0 +1,3753 @@ +(kicad_symbol_lib + (version 20241209) + (generator "t_modem_generate_board") + (generator_version "0.25") +(symbol "R" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "R" + (at 2.032 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R" + (at 0 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "R res resistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "R_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "R_0_1" + (rectangle + (start -1.016 -2.54) + (end 1.016 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "C" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "C" + (at 0.635 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C" + (at 0.635 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "C_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "C_0_1" + (polyline + (pts + (xy -2.032 0.762) (xy 2.032 0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.032 -0.762) (xy 2.032 -0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "C_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "C_Polarized" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "C" + (at 0.635 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C_Polarized" + (at 0.635 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Polarized capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "CP_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "C_Polarized_0_1" + (rectangle + (start -2.286 0.508) + (end 2.286 1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.778 2.286) (xy -0.762 2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 2.794) (xy -1.27 1.778) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 2.286 -0.508) + (end -2.286 -1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + ) + (symbol "C_Polarized_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "LED" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "D" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "LED" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Light emitting diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "LED diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "LED* LED_SMD:* LED_THT:*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "LED_0_1" + (polyline + (pts + (xy -3.048 -0.762) (xy -4.572 -2.286) (xy -3.81 -2.286) (xy -4.572 -2.286) (xy -4.572 -1.524) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.778 -0.762) (xy -3.302 -2.286) (xy -2.54 -2.286) (xy -3.302 -2.286) (xy -3.302 -1.524) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 0) (xy 1.27 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 -1.27) (xy -1.27 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -1.27) (xy 1.27 1.27) (xy -1.27 0) (xy 1.27 -1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "LED_1_1" + (pin passive line + (at -3.81 0 0) + (length 2.54) + (name "K" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 2.54) + (name "A" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Crystal_GND24" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "Y" + (at 3.175 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "Crystal_GND24" + (at 3.175 3.175 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Four pin crystal, GND on pins 2 and 4" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property private "KLC_S3.3" "The rectangle is not a symbol body but a graphical element" + (at 0 -12.7 0) + (show_name yes) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property private "KLC_S4.1" "Some pins are on 50mil grid to make the symbol small" + (at 0 -15.24 0) + (show_name yes) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "quartz ceramic resonator oscillator" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Crystal*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Crystal_GND24_0_1" + (polyline + (pts + (xy -2.54 2.286) (xy -2.54 3.556) (xy 2.54 3.556) (xy 2.54 2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.54 0) (xy -2.032 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.54 -2.286) (xy -2.54 -3.556) (xy 2.54 -3.556) (xy 2.54 -2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.032 -1.27) (xy -2.032 1.27) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.143 2.54) + (end 1.143 -2.54) + (stroke + (width 0.3048) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 -3.81) (xy 0 -3.556) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.032 0) (xy 2.54 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.032 -1.27) (xy 2.032 1.27) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Crystal_GND24_1_1" + (pin passive line + (at -3.81 0 0) + (length 1.27) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -5.08 90) + (length 1.27) + (name "G" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 1.27) + (name "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -5.08 90) + (length 1.27) + (hide yes) + (name "G" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "D_Schottky" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "D" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "D_Schottky" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Schottky diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "diode Schottky" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "TO-???* *_Diode_* *SingleDiode* D_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "D_Schottky_0_1" + (polyline + (pts + (xy -1.905 0.635) (xy -1.905 1.27) (xy -1.27 1.27) (xy -1.27 -1.27) (xy -0.635 -1.27) (xy -0.635 -0.635) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 1.27) (xy 1.27 -1.27) (xy -1.27 0) (xy 1.27 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 0) (xy -1.27 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "D_Schottky_1_1" + (pin passive line + (at -3.81 0 0) + (length 2.54) + (name "K" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 2.54) + (name "A" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Fuse" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "F" + (at 2.032 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Fuse" + (at -1.905 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Fuse" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "fuse" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "*Fuse*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Fuse_0_1" + (rectangle + (start -0.762 -2.54) + (end 0.762 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0 -2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Fuse_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "R_Potentiometer" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "RV" + (at -4.445 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R_Potentiometer" + (at -2.54 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Potentiometer" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "R" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Type" "POT" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=r0 2=wiper 3=r1" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "resistor variable" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Potentiometer*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "R_Potentiometer_0_1" + (rectangle + (start 1.016 2.54) + (end -1.016 -2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.143 0) (xy 2.286 0.508) (xy 2.286 -0.508) (xy 1.143 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 2.54 0) (xy 1.524 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_Potentiometer_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 1.27) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "USB_A" + (pin_names + (offset 1.016) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at -5.08 11.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "USB_A" + (at -5.08 8.89 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 3.81 -1.27 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 3.81 -1.27 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "USB Type A connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector USB" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "USB*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "USB_A_0_1" + (rectangle + (start -5.08 -7.62) + (end 5.08 7.62) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (circle + (center -3.81 2.159) + (radius 0.635) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy -3.175 2.159) (xy -2.54 2.159) (xy -1.27 3.429) (xy -0.635 3.429) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.54 2.159) (xy -1.905 2.159) (xy -1.27 0.889) (xy 0 0.889) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.524 4.826) + (end -4.318 5.334) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -1.27 4.572) + (end -4.572 5.842) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center -0.635 3.429) + (radius 0.381) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -0.127 -7.62) + (end 0.127 -6.858) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 0.254 1.27) + (end -0.508 0.508) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 0.635 2.794) (xy 0.635 1.524) (xy 1.905 2.159) (xy 0.635 2.794) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 5.08 4.953) + (end 4.318 5.207) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 5.08 -0.127) + (end 4.318 0.127) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 5.08 -2.667) + (end 4.318 -2.413) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "USB_A_1_1" + (polyline + (pts + (xy -1.905 2.159) (xy 0.635 2.159) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (pin power_in line + (at 7.62 5.08 180) + (length 2.54) + (name "VBUS" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 7.62 -2.54 180) + (length 2.54) + (name "D-" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 7.62 0 180) + (length 2.54) + (name "D+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -10.16 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -2.54 -10.16 90) + (length 2.54) + (name "Shield" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "SH" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Barrel_Jack" + (pin_names + (offset 1.016) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 5.334 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Barrel_Jack" + (at 0 -5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 1.27 -1.016 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 1.27 -1.016 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "DC Barrel Jack" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "DC power barrel jack connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "BarrelJack*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Barrel_Jack_0_1" + (rectangle + (start -5.08 3.81) + (end 5.08 -3.81) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (polyline + (pts + (xy -3.81 -2.54) (xy -2.54 -2.54) (xy -1.27 -1.27) (xy 0 -2.54) (xy 2.54 -2.54) (xy 5.08 -2.54) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start -3.302 1.905) + (mid -3.9343 2.54) + (end -3.302 3.175) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start -3.302 1.905) + (mid -3.9343 2.54) + (end -3.302 3.175) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 3.683 3.175) + (end -3.302 1.905) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 5.08 2.54) (xy 3.81 2.54) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Barrel_Jack_1_1" + (pin passive line + (at 7.62 2.54 180) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 -2.54 180) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_01x01" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_01x01" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x01_1_1" + (rectangle + (start -1.27 1.27) + (end 1.27 -1.27) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_01x03" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_01x03" + (at 0 -5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x03_1_1" + (rectangle + (start -1.27 3.81) + (end 1.27 -3.81) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 2.54 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -2.54 0) + (length 3.81) + (name "Pin_3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_01x04" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_01x04" + (at 0 -7.62 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x04_1_1" + (rectangle + (start -1.27 3.81) + (end 1.27 -6.35) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -4.953) + (end 0 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 2.54 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -2.54 0) + (length 3.81) + (name "Pin_3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -5.08 0) + (length 3.81) + (name "Pin_4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "Conn_02x04_Odd_Even" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 1.27 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_02x04_Odd_Even" + (at 1.27 -7.62 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, double row, 02x04, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_2x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_02x04_Odd_Even_1_1" + (rectangle + (start -1.27 3.81) + (end 3.81 -6.35) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (rectangle + (start -1.27 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start -1.27 -4.953) + (end 0 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 2.667) + (end 2.54 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 0.127) + (end 2.54 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 -2.413) + (end 2.54 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 -4.953) + (end 2.54 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 2.54 0) + (length 3.81) + (name "Pin_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 2.54 180) + (length 3.81) + (name "Pin_2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 3.81) + (name "Pin_3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 0 180) + (length 3.81) + (name "Pin_4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -2.54 0) + (length 3.81) + (name "Pin_5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 -2.54 180) + (length 3.81) + (name "Pin_6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -5.08 -5.08 0) + (length 3.81) + (name "Pin_7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 7.62 -5.08 180) + (length 3.81) + (name "Pin_8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "SW_Push" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "SW" + (at 1.27 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push" + (at 0 -1.524 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "SW_Push_0_1" + (circle + (center -2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 1.27) (xy -2.54 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "PN2222A" + (extends "Q_NPN_EBC") + (property "Reference" "Q" + (at 5.08 1.905 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "PN2222A" + (at 5.08 0 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-92_Inline" + (at 5.08 -1.905 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + ) + ) + (property "Datasheet" "https://www.onsemi.com/pub/Collateral/PN2222-D.PDF" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Description" "1A Ic, 40V Vce, NPN Transistor, General Purpose Transistor, TO-92" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "NPN Transistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "TO?92*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "GND" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -6.35 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "GND_1_1" + (pin power_in line + (at 0 0 270) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "+5V" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "+5V" + (at 0 3.556 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+5V\"" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "+5V_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+5V_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +(symbol "+3V3" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "+3V3" + (at 0 3.556 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3V3\"" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "+3V3_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+3V3_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "TCM3105" + (pin_names (offset 1.016)) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "U" (at 0 11.43 0) (effects (font (size 1.27 1.27)))) + (property "Value" "TCM3105" (at 0 -11.43 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "Package_DIP:DIP-16_W7.62mm_Socket" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Datasheet" "https://www.qsl.net/o/on7pc/datasheet/ic/TCM3105.pdf" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Description" "Bell 202 FSK modem DIP-16" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (symbol "TCM3105_0_1" + (rectangle (start -5.08 10.16) (end 5.08 -10.16) + (stroke (width 0.254) (type default)) (fill (type background))) + ) + (symbol "TCM3105_1_1" + (pin power_in line + (at -7.62 8.89 0) + (length 2.54) + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -7.62 6.35 0) + (length 2.54) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin output line + (at -7.62 3.81 0) + (length 2.54) + (name "CDT" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin input line + (at -7.62 1.27 0) + (length 2.54) + (name "RXA" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -7.62 -1.27 0) + (length 2.54) + (name "TRS" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line + (at -7.62 -3.81 0) + (length 2.54) + (name "NC" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -7.62 -6.35 0) + (length 2.54) + (name "RXB" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin output line + (at -7.62 -8.89 0) + (length 2.54) + (name "RXD" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line + (at 7.62 -8.89 180) + (length 2.54) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 -6.35 180) + (length 2.54) + (name "CDL" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin output line + (at 7.62 -3.81 180) + (length 2.54) + (name "TXA" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 -1.27 180) + (length 2.54) + (name "TXR2" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 1.27 180) + (length 2.54) + (name "TXR1" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin input line + (at 7.62 3.81 180) + (length 2.54) + (name "TXD" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 6.35 180) + (length 2.54) + (name "OSC1" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 8.89 180) + (length 2.54) + (name "OSC2" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + ) + (embedded_fonts no) + ) + (symbol "RaspberryPi_Pico" + (pin_names (offset 1.016)) + (exclude_from_sim no) (in_bom yes) (on_board yes) + (property "Reference" "U" (at 0 17.78 0) (effects (font (size 1.27 1.27)))) + (property "Value" "RaspberryPi_Pico" (at 0 -5.08 0) (effects (font (size 1.27 1.27)))) + (property "Footprint" "Module:RaspberryPi_Pico_Common_THT" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Datasheet" "https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (property "Description" "Raspberry Pi Pico module subset" (at 0 0 0) (hide yes) + (effects (font (size 1.27 1.27)))) + (symbol "RaspberryPi_Pico_0_1" + (rectangle (start -5.08 16.51) (end 5.08 -3.81) + (stroke (width 0.254) (type default)) (fill (type background))) + ) + (symbol "RaspberryPi_Pico_1_1" + (pin bidirectional line + (at -7.62 15.24 0) + (length 2.54) + (name "GP0" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 12.7 0) + (length 2.54) + (name "GP1" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 10.16 0) + (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 7.62 0) + (length 2.54) + (name "GP6" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 5.08 0) + (length 2.54) + (name "GP7" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 2.540000000000001 0) + (length 2.54) + (name "GP8" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 0.0 0) + (length 2.54) + (name "GP9" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -2.540000000000001 0) + (length 2.54) + (name "GP10" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -5.08 0) + (length 2.54) + (name "GP11" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -7.619999999999999 0) + (length 2.54) + (name "GP12" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -10.159999999999998 0) + (length 2.54) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -12.700000000000001 0) + (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -15.24 0) + (length 2.54) + (name "VSYS" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line + (at -7.62 -17.78 0) + (length 2.54) + (name "VBUS" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + ) + (embedded_fonts no) + ) +) diff --git a/hardware/kicad/t-modem-c1224/t-modem-c1224.rules b/hardware/kicad/t-modem-c1224/t-modem-c1224.rules new file mode 100644 index 0000000..4b6810f --- /dev/null +++ b/hardware/kicad/t-modem-c1224/t-modem-c1224.rules @@ -0,0 +1,59 @@ + +(rules PCB t-modem-c1224.dsn + (snap_angle + fortyfive_degree + ) + (rule + (width 250.0) + (clearance 200.0) + (clearance 125.0 (type smd_to_turn_gap)) + (clearance 50.0 (type smd)) + (clearance 200.0 (type "kicad_default")) + ) + (padstack "Via[0-1]_800:400_um" + (shape + (circle F.Cu 800.0 0.0 0.0) + ) + (shape + (circle B.Cu 800.0 0.0 0.0) + ) + (attach off) + ) + (via + "Via[0-1]_800:400_um" "Via[0-1]_800:400_um" default + ) + (via + "Via[0-1]_800:400_um-kicad_default" "Via[0-1]_800:400_um" "kicad_default" + ) + (via_rule + default "Via[0-1]_800:400_um" + ) + (via_rule + "kicad_default" "Via[0-1]_800:400_um-kicad_default" + ) + (class default + (clearance_class default) + (via_rule default) + (rule + (width 250.0) + ) + (circuit + (use_layer F.Cu B.Cu) + ) + ) + (class "kicad_default" + OSC2 GND BOOTSEL "AF_TX" "AF_RX" "PTT_OC" "+5V_OR" "MODEM_CLK" + "MODEM_CDT" RXA "TRS_N" CDL "MODEM_RXD" TXA "TXR2_N" "TXR1_N" + "MODEM_TXD" OSC1 "VIN_12" "LED_PTT_N" "LED_PTT_A" "USB_VBUS_NC" "USB_DM" "USB_DP" + "3V3" "I2C_SDA_3V3" "I2C_SDA_5V" "I2C_SCL_3V3" "I2C_SCL_5V" "LED_TXRX_A" "LED_PWR_A" "+5V_REG" + "TX_LVL" "PTT_DRV" "PTT_B" "LED_DCD_N" "LED_TXRX_N" +5V "LED_DCD_A" "LCD_VO" + (clearance_class "kicad_default") + (via_rule "kicad_default") + (rule + (width 250.0) + ) + (circuit + (use_layer F.Cu B.Cu) + ) + ) +) \ No newline at end of file diff --git a/share/c1224.ini.example b/share/c1224.ini.example new file mode 100644 index 0000000..0980d2e --- /dev/null +++ b/share/c1224.ini.example @@ -0,0 +1,33 @@ +# T-Modem-c1224 operator INI example +# Apply on device via USB CDC: +# SET callsign=N0CALL +# SET device_id=c1224 +# SET quiet=1 +# SAVE +# Or dump/compare with: INI · RELOAD · DEFAULTS +# +# SAVE persists a config blob in the last 4 KiB of Pico flash — not a filesystem. +# Boot banner is fixed in firmware source (always on CDC) — not an INI key. +# quiet=1 suppresses extra unsolicited ASCII (STATUS/PROBE/CONFIG), not the boot banner. +# Not configurable here: baud/rate (crystal stuffing), softmodem, data bridge, boot banner. + +[texts] +starting=c1224 is starting +ready=c1224 is ready +fault=c1224 is fault +sending=c1224 is sending +signal=c1224 signal +packet=c1224 packet +power=c1224 power +idle=c1224 idle + +[terminal] +callsign= +device_id=c1224 +quiet=1 + +[sense] +cdt_active_high=0 +packet_hold_ms=500 +packet_edge_min=4 +packet_window_ms=50 -- cgit v1.3.1