summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore66
-rw-r--r--LICENSE674
-rw-r--r--README.md63
-rw-r--r--docs/POWER.md12
-rw-r--r--docs/README.md33
-rw-r--r--docs/USER-GUIDE.md60
-rw-r--r--docs/figures/fig-01-pcb-standoffs.pngbin0 -> 200881 bytes
-rw-r--r--docs/figures/fig-02-power-section.pngbin0 -> 205895 bytes
-rw-r--r--docs/figures/fig-03-modem-dni.pngbin0 -> 212477 bytes
-rw-r--r--docs/figures/fig-04-pico.pngbin0 -> 208808 bytes
-rw-r--r--docs/figures/fig-05-display.pngbin0 -> 205354 bytes
-rw-r--r--docs/figures/fig-06-leds.pngbin0 -> 196356 bytes
-rw-r--r--docs/figures/fig-07-connectors.pngbin0 -> 209955 bytes
-rw-r--r--docs/figures/fig-08-final-check.pngbin0 -> 211768 bytes
-rw-r--r--docs/figures/s1224-board-overview.pngbin0 -> 241935 bytes
-rw-r--r--firmware/README.md5
-rw-r--r--firmware/s1224/CMakeLists.txt67
-rw-r--r--firmware/s1224/README.md95
-rw-r--r--firmware/s1224/config/default.ini22
-rw-r--r--firmware/s1224/include/afsk_profile.h35
-rw-r--r--firmware/s1224/include/afsk_soft.h32
-rw-r--r--firmware/s1224/include/banner.h12
-rw-r--r--firmware/s1224/include/baud_config.h10
-rw-r--r--firmware/s1224/include/board_pins.h39
-rw-r--r--firmware/s1224/include/config.h58
-rw-r--r--firmware/s1224/include/crystal_steer.h10
-rw-r--r--firmware/s1224/include/display.h17
-rw-r--r--firmware/s1224/include/hdlc.h49
-rw-r--r--firmware/s1224/include/kiss.h34
-rw-r--r--firmware/s1224/include/modem_probe.h14
-rw-r--r--firmware/s1224/include/ptt.h10
-rw-r--r--firmware/s1224/include/sense.h19
-rw-r--r--firmware/s1224/include/status.h23
-rw-r--r--firmware/s1224/include/usb_cmd.h11
-rw-r--r--firmware/s1224/include/version.h9
-rw-r--r--firmware/s1224/src/common/afsk_soft.c224
-rw-r--r--firmware/s1224/src/common/banner.c82
-rw-r--r--firmware/s1224/src/common/baud_config.c19
-rw-r--r--firmware/s1224/src/common/board_pins.c47
-rw-r--r--firmware/s1224/src/common/config.c422
-rw-r--r--firmware/s1224/src/common/crystal_steer.c17
-rw-r--r--firmware/s1224/src/common/display.c187
-rw-r--r--firmware/s1224/src/common/hdlc.c192
-rw-r--r--firmware/s1224/src/common/kiss.c98
-rw-r--r--firmware/s1224/src/common/main.c61
-rw-r--r--firmware/s1224/src/common/modem_probe.c22
-rw-r--r--firmware/s1224/src/common/ptt.c31
-rw-r--r--firmware/s1224/src/common/sense.c72
-rw-r--r--firmware/s1224/src/common/status.c78
-rw-r--r--firmware/s1224/src/common/usb_cmd.c267
-rw-r--r--hardware/BOM.md16
-rw-r--r--hardware/README.md8
-rw-r--r--hardware/bom/BOM.csv41
-rw-r--r--hardware/kicad/README.md39
-rw-r--r--hardware/kicad/t-modem-s1224/README.md67
-rw-r--r--hardware/kicad/t-modem-s1224/scripts/kicad10_layers_setup.sexpr110
-rw-r--r--hardware/kicad/t-modem-s1224/scripts/render_docs_images.py610
-rw-r--r--hardware/kicad/t-modem-s1224/sym-lib-table4
-rw-r--r--hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pcb12982
-rw-r--r--hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pro683
-rw-r--r--hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_sch3986
-rw-r--r--hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_sym3753
-rw-r--r--hardware/kicad/t-modem-s1224/t-modem-s1224.rules58
-rw-r--r--share/s1224.ini.example27
64 files changed, 25682 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4063ddf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,66 @@
+# 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
+*.uf2
+*.dis
+build/
+firmware/**/build*/
+firmware/**/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/
+
+# Pico out-of-tree builds
+firmware/**/build*/
+
+# Freerouting artifacts
+*.dsn
+*.ses
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. <https://fsf.org/>
+ 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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 <https://www.gnu.org/licenses/>.
+
+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:
+
+ <program> Copyright (C) <year> <name of author>
+ 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
+<https://www.gnu.org/licenses/>.
+
+ 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
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cd81607
--- /dev/null
+++ b/README.md
@@ -0,0 +1,63 @@
+# T-Modem-s1224
+
+**Version mark:** `v1.0-prototype` (firmware `S1224_FW_VERSION` = `1.0-prototype`; git tag **`v1.0-prototype`**).
+
+**T-Modem-s1224** is the softmodem-only sibling of **T-Modem-c1224**: same PCB base, **no** TCM3105-class modem IC / socket. Raspberry Pi **Pico** does **USB KISS half-TNC** (HDLC) plus **AFSK softmodem** (PWM TX / ADC Goertzel RX), display, and **PTT**. Host USB CDC = **KISS** (`0xC0`) + ASCII service. Firmware language: **C**
+
+![T-Modem-s1224 board overview — major parts labeled](docs/figures/s1224-board-overview.png)
+
+| Item | Rule |
+|------|------|
+| Power | **12 V** barrel → buck → **5 V** · **no USB power** (USB = flash + KISS + service) |
+| PHY | Softmodem AFSK only · **no** modem chip · **no** socket · XTAL footprints **DNI** |
+| Rate model | **Three** UF2 builds · rate ≠ runtime switch |
+| FW | `s1224-300` · `s1224-1200` · `s1224-2400` · INI = **all** display/status texts · fixed boot banner · default **`quiet=1`** |
+| AF pins | **GP6** PWM AFSK out · **GP26** ADC AF in · **GP9** PTT |
+| INI SAVE | Last **4 KiB** flash **blob** · **not** a filesystem |
+| PCB | [`hardware/kicad/t-modem-s1224/`](hardware/kicad/t-modem-s1224/) · same base as c1224 |
+| BOM | [`hardware/BOM.md`](hardware/BOM.md) · [`hardware/bom/BOM.csv`](hardware/bom/BOM.csv) |
+
+## Tone profiles (compile-time)
+
+| Build | Baud | Mark / Space (Hz) | Note |
+|-------|------|-------------------|------|
+| **`s1224-300`** | 300 | 1600 / 1800 | HF-class narrow AFSK |
+| **`s1224-1200`** | 1200 | 1200 / 2200 | Bell 202 · matches **c1224** 1200-class target |
+| **`s1224-2400`** | 2400 | ~1775 / 3250 | **c1224 Y2 / 6.5536** class · **not** Dire Wolf 2400 |
+
+## Build
+
+- Firmware: [`firmware/s1224/`](firmware/s1224/) — three UF2 · INI example [`share/s1224.ini.example`](share/s1224.ini.example)
+
+```bash
+export PICO_SDK_PATH=/path/to/pico-sdk # or c1224 `.deps/pico-sdk`
+cd firmware/s1224
+mkdir -p build && cd build
+cmake .. -DS1224_BITRATE=1200 # 300 | 1200 | 2400
+make -j$(nproc)
+# → s1224-1200.uf2 (name follows bitrate)
+```
+
+## Operate
+
+**Standalone — no MAX25-Stack required.** USB CDC is a normal KISS half-TNC. **All terminals should work insofar as applicable** (serial ASCII + KISS packet). MAX25 / HyBBX are **not required**.
+
+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 the UF2 for the intended rate profile.
+4. Open `/dev/ttyACM*` raw 8N1 → KISS (`0xC0` …) or ASCII `HELP`. Fixed boot banner always prints once.
+5. Wire AF: GP6 → radio TX AF inject · discriminator/RX AF → GP26 (ADC0).
+
+Anyone-oriented steps: [`docs/USER-GUIDE.md`](docs/USER-GUIDE.md). Firmware detail: [`firmware/s1224/README.md`](firmware/s1224/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/s1224/README.md`](firmware/s1224/README.md) | Build · CDC · pins |
+| [`docs/figures/`](docs/figures/) | Board overview + steps 1–8 (softmodem DNI) |
+
+**AS-IS** · GPLv3 · non-profit · standard reference only · sibling of **c1224** (chip path unchanged).
diff --git a/docs/POWER.md b/docs/POWER.md
new file mode 100644
index 0000000..9082796
--- /dev/null
+++ b/docs/POWER.md
@@ -0,0 +1,12 @@
+# Power — T-Modem-s1224
+
+| 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..1d0492e
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,33 @@
+# Docs — T-Modem-s1224
+
+| Doc | Role |
+|-----|------|
+| [`USER-GUIDE.md`](USER-GUIDE.md) | Anyone — what it is · assemble · flash · terminals · SAVE |
+| [`../README.md`](../README.md) | Product overview |
+| [`../firmware/s1224/README.md`](../firmware/s1224/README.md) | Pico softmodem FW |
+| [`POWER.md`](POWER.md) | 12 V barrel / no USB power |
+| [`../hardware/kicad/t-modem-s1224/README.md`](../hardware/kicad/t-modem-s1224/README.md) | PCB · DNI modem/socket |
+| [`../hardware/BOM.md`](../hardware/BOM.md) | Planning BOM (tracked) |
+| [`figures/`](figures/) | Board overview + assembly steps 1–8 |
+
+## Operate (standalone)
+
+**No MAX25-Stack required.** Flash `s1224-*.uf2` → USB → `/dev/ttyACM*` → KISS (`0xC0`) or ASCII `HELP`. Fixed boot banner prints once. **All matching terminals work** insofar as applicable.
+
+**INI `SAVE`:** last **4 KiB** of Pico flash as a config **blob** — not a filesystem.
+
+## Figures
+
+| File | Content |
+|------|---------|
+| [`figures/s1224-board-overview.png`](figures/s1224-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-dni.png`](figures/fig-03-modem-dni.png) | Step 3 — modem/socket/XTAL **DNI** |
+| [`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 · standard reference only.
diff --git a/docs/USER-GUIDE.md b/docs/USER-GUIDE.md
new file mode 100644
index 0000000..567dbcb
--- /dev/null
+++ b/docs/USER-GUIDE.md
@@ -0,0 +1,60 @@
+# T-Modem-s1224 — user guide
+
+**Audience:** anyone · **Version:** v1.0-prototype · **AS-IS** · GPLv3 · non-profit
+
+Softmodem sibling of **c1224**: Pico does AFSK (PWM/ADC) + USB **KISS** half-TNC. **No** TCM3105 / socket. Power **12 V**; USB = flash + KISS + ASCII service only.
+
+## What you need
+
+- Assembled board with modem IC / socket / crystals **DNI**
+- **12 V** centre-positive supply
+- USB host + **any** serial/KISS terminal that speaks the CDC interface below
+- AF wiring: **GP6** → radio TX AF · RX AF → **GP26** · **GP9** PTT
+
+## 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. Leave modem/socket/XTAL area **unstuffed**.
+3. Flash **`s1224-300.uf2`**, **`s1224-1200.uf2`**, or **`s1224-2400.uf2`**.
+4. Apply **12 V** · plug USB for CDC.
+
+| UF2 | Mark / Space (Hz) |
+|-----|-------------------|
+| 300 | 1600 / 1800 |
+| 1200 | 1200 / 2200 (Bell 202) |
+| 2400 | ~1775 / 3250 (Y2-class · not Dire Wolf 2400) |
+
+Build: [`../firmware/s1224/README.md`](../firmware/s1224/README.md).
+
+## Terminals (all that match)
+
+USB CDC ACM · raw **8N1**:
+
+| Path | Use |
+|------|-----|
+| **KISS** `0xC0` … `0xC0` | Packet (half-TNC + softmodem) |
+| 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 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/s1224.ini.example`](../share/s1224.ini.example).
+
+## Optional stacks
+
+Standalone is enough. MAX25 / HyBBX are **not required** and are not claimed as shipped integrations here.
+
+## Power
+
+See [`POWER.md`](POWER.md).
+
+**AS-IS** · no warranty · no support · standard reference only · sibling of **c1224**.
diff --git a/docs/figures/fig-01-pcb-standoffs.png b/docs/figures/fig-01-pcb-standoffs.png
new file mode 100644
index 0000000..26e4db4
--- /dev/null
+++ b/docs/figures/fig-01-pcb-standoffs.png
Binary files 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..8fe1ec5
--- /dev/null
+++ b/docs/figures/fig-02-power-section.png
Binary files differ
diff --git a/docs/figures/fig-03-modem-dni.png b/docs/figures/fig-03-modem-dni.png
new file mode 100644
index 0000000..8ba724a
--- /dev/null
+++ b/docs/figures/fig-03-modem-dni.png
Binary files differ
diff --git a/docs/figures/fig-04-pico.png b/docs/figures/fig-04-pico.png
new file mode 100644
index 0000000..8649c60
--- /dev/null
+++ b/docs/figures/fig-04-pico.png
Binary files differ
diff --git a/docs/figures/fig-05-display.png b/docs/figures/fig-05-display.png
new file mode 100644
index 0000000..f670ba9
--- /dev/null
+++ b/docs/figures/fig-05-display.png
Binary files differ
diff --git a/docs/figures/fig-06-leds.png b/docs/figures/fig-06-leds.png
new file mode 100644
index 0000000..a8eaa05
--- /dev/null
+++ b/docs/figures/fig-06-leds.png
Binary files differ
diff --git a/docs/figures/fig-07-connectors.png b/docs/figures/fig-07-connectors.png
new file mode 100644
index 0000000..efe1090
--- /dev/null
+++ b/docs/figures/fig-07-connectors.png
Binary files 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..5b6e0b0
--- /dev/null
+++ b/docs/figures/fig-08-final-check.png
Binary files differ
diff --git a/docs/figures/s1224-board-overview.png b/docs/figures/s1224-board-overview.png
new file mode 100644
index 0000000..55b5a77
--- /dev/null
+++ b/docs/figures/s1224-board-overview.png
Binary files differ
diff --git a/firmware/README.md b/firmware/README.md
new file mode 100644
index 0000000..d78750a
--- /dev/null
+++ b/firmware/README.md
@@ -0,0 +1,5 @@
+# Firmware
+
+Product images: **[`s1224/`](s1224/)** — three UF2 builds (`s1224-300` · `s1224-1200` · `s1224-2400`).
+
+See [`s1224/README.md`](s1224/README.md) for build, flash, pins, tones, INI, CDC.
diff --git a/firmware/s1224/CMakeLists.txt b/firmware/s1224/CMakeLists.txt
new file mode 100644
index 0000000..a255afb
--- /dev/null
+++ b/firmware/s1224/CMakeLists.txt
@@ -0,0 +1,67 @@
+# T-Modem-s1224 Pico firmware — softmodem · three UF2 images (build separately)
+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(s1224_firmware C CXX ASM)
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_CXX_STANDARD 17)
+
+pico_sdk_init()
+
+if(NOT DEFINED S1224_BITRATE)
+ set(S1224_BITRATE 1200)
+endif()
+
+if(S1224_BITRATE EQUAL 300)
+ set(S1224_TARGET s1224-300)
+elseif(S1224_BITRATE EQUAL 1200)
+ set(S1224_TARGET s1224-1200)
+elseif(S1224_BITRATE EQUAL 2400)
+ set(S1224_TARGET s1224-2400)
+else()
+ message(FATAL_ERROR "S1224_BITRATE must be 300, 1200, or 2400")
+endif()
+
+add_executable(${S1224_TARGET}
+ 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_soft.c
+ src/common/banner.c
+)
+
+target_include_directories(${S1224_TARGET} PRIVATE include)
+target_compile_definitions(${S1224_TARGET} PRIVATE S1224_BITRATE=${S1224_BITRATE})
+target_link_libraries(${S1224_TARGET}
+ pico_stdlib
+ hardware_gpio
+ hardware_i2c
+ hardware_flash
+ hardware_sync
+ hardware_pwm
+ hardware_adc
+ m
+)
+
+pico_enable_stdio_usb(${S1224_TARGET} 1)
+pico_enable_stdio_uart(${S1224_TARGET} 0)
+pico_add_extra_outputs(${S1224_TARGET})
+pico_set_binary_type(${S1224_TARGET} default)
diff --git a/firmware/s1224/README.md b/firmware/s1224/README.md
new file mode 100644
index 0000000..976947c
--- /dev/null
+++ b/firmware/s1224/README.md
@@ -0,0 +1,95 @@
+# T-Modem-s1224 — Pico USB KISS half-TNC + softmodem
+
+**AS-IS** · GPLv3 (repo `LICENSE`) · no support, no warranty · **v1.0-prototype**.
+
+**Three** UF2 images for Raspberry Pi Pico (RP2040). Softmodem does air AFSK; Pico is **USB KISS half-TNC** (HDLC) plus display / PTT / sense. **No** TCM3105 chip path.
+
+| Owns | Does **not** |
+|------|----------------|
+| HDLC TX/RX (flags, bit-stuff, FCS-CCITT) | Chip bitbang / TCM3105 TXD-RXD |
+| Soft AFSK: PWM TX (GP6) · Goertzel RX (GP26 ADC) | Runtime baud switch |
+| USB CDC: KISS `0xC0` + ASCII service | XTAL-rate crystal steering |
+| Auto PTT GP9 during KISS TX · `PTT ON`/`OFF` | Modem IC / socket |
+| Display / INI texts · carrier sense · fixed boot banner | INI/CDC boot-banner toggle |
+
+## Tone profiles
+
+| `-DS1224_BITRATE=` | UF2 | Mark / Space Hz |
+|--------------------|-----|-----------------|
+| `300` | `s1224-300.uf2` | 1600 / 1800 |
+| `1200` (default) | `s1224-1200.uf2` | 1200 / 2200 (Bell 202) |
+| `2400` | `s1224-2400.uf2` | ~1775 / 3250 (c1224 Y2-class) |
+
+## Build
+
+Requires [Pico SDK](https://github.com/raspberrypi/pico-sdk) and `arm-none-eabi-gcc`.
+
+```bash
+export PICO_SDK_PATH=/path/to/pico-sdk # e.g. T-Modem-c1224/.deps/pico-sdk
+cd firmware/s1224
+mkdir -p build && cd build
+cmake .. -DS1224_BITRATE=1200 # or 300 / 2400
+make -j$(nproc)
+# → s1224-1200.uf2 s1224-1200.elf
+```
+
+Rebuild separately for each bitrate (clean build dir or out-of-tree dirs recommended).
+
+### Flash
+
+1. Hold **BOOTSEL**, plug USB (board power = **12 V** barrel).
+2. Copy `s1224-*.uf2` to RPI-RP2 (or `picotool load -f …`).
+3. Host opens `/dev/ttyACM*` (USB CDC).
+
+## Any KISS terminal (standalone — no MAX25)
+
+**MAX25-Stack is not required.** **All terminals should work insofar as applicable** — flash UF2 → plug USB → open `/dev/ttyACM*` → KISS `0xC0` or ASCII `HELP`.
+
+| Step | Detail |
+|------|--------|
+| Device | `/dev/ttyACM*` |
+| Framing | Raw **8N1** · binary **KISS** (`0xC0` … `0xC0`) · DATA cmd `0x00` |
+| Boot | Fixed source banner **always** once · `quiet=1` damps extra STATUS/CONFIG ASCII only |
+
+## Pins
+
+| GPIO / rail | Role |
+|-------------|------|
+| GP0 / GP1 | I2C LCD |
+| GP6 | **AF_TX** — PWM AFSK out (bypass DNI modem footprint) |
+| GP26 | **AF_RX** — ADC0 soft demod in |
+| GP7 / GP8 | Legacy chip pads — leave open on softmodem boards |
+| 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`. **Always** printed once after USB CDC ready.
+
+## USB CDC ASCII
+
+| Command | Effect |
+|---------|--------|
+| `HELP` | Command list |
+| `STATUS` | state, PTT, signal, packet, carrier, bitrate |
+| `ID` | `device_id` / `callsign` / bitrate / quiet |
+| `PTT ON` / `PTT OFF` | Key GP9 |
+| `QUIET ON` / `OFF` | Suppress extra unsolicited CDC ASCII |
+| `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` | `s1224` | Short device mark |
+| `quiet` | `1` | Suppress extra unsolicited CDC ASCII (not boot banner) |
+
+See [`share/s1224.ini.example`](../../share/s1224.ini.example).
+
+## Rate
+
+Firmware does not switch baud at runtime. Flash the UF2 that matches the intended tone profile.
diff --git a/firmware/s1224/config/default.ini b/firmware/s1224/config/default.ini
new file mode 100644
index 0000000..6f24e7e
--- /dev/null
+++ b/firmware/s1224/config/default.ini
@@ -0,0 +1,22 @@
+# T-Modem-s1224 built-in defaults (flash override via CDC SAVE)
+
+[display]
+starting=s1224 is starting
+ready=s1224 is ready
+fault=s1224 is fault
+sending=s1224 is sending
+signal=s1224 signal
+packet=s1224 packet
+power=s1224 power
+idle=s1224 idle
+
+[terminal]
+callsign=
+device_id=s1224
+quiet=1
+
+[sense]
+cdt_active_high=0
+packet_hold_ms=500
+packet_edge_min=4
+packet_window_ms=50
diff --git a/firmware/s1224/include/afsk_profile.h b/firmware/s1224/include/afsk_profile.h
new file mode 100644
index 0000000..da0fc29
--- /dev/null
+++ b/firmware/s1224/include/afsk_profile.h
@@ -0,0 +1,35 @@
+/**
+ * Mark/space tone pairs per build (Hz) — see product README.
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#ifndef S1224_AFSK_PROFILE_H
+#define S1224_AFSK_PROFILE_H
+
+#include <stdint.h>
+
+#ifndef S1224_BITRATE
+#define S1224_BITRATE 1200
+#endif
+
+typedef struct {
+ uint32_t baud;
+ uint32_t mark_hz;
+ uint32_t space_hz;
+ const char *profile_name;
+} afsk_profile_t;
+
+static inline afsk_profile_t afsk_profile_get(void)
+{
+#if S1224_BITRATE == 300
+ return (afsk_profile_t){300, 1600, 1800, "HF-300 (1600/1800)"};
+#elif S1224_BITRATE == 1200
+ return (afsk_profile_t){1200, 1200, 2200, "Bell202-1200"};
+#elif S1224_BITRATE == 2400
+ /* c1224 Y2 / 6.5536 MHz field overclock class — NOT Dire Wolf 2400 */
+ return (afsk_profile_t){2400, 1775, 3250, "Y2-class-2400"};
+#else
+#error "S1224_BITRATE must be 300, 1200, or 2400"
+#endif
+}
+
+#endif /* S1224_AFSK_PROFILE_H */
diff --git a/firmware/s1224/include/afsk_soft.h b/firmware/s1224/include/afsk_soft.h
new file mode 100644
index 0000000..5a23141
--- /dev/null
+++ b/firmware/s1224/include/afsk_soft.h
@@ -0,0 +1,32 @@
+/**
+ * Softmodem AFSK — PWM/DDS TX + Goertzel RX (ADC when wired).
+ * Profile tones selected at compile time via S1224_BITRATE=300|1200|2400.
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#ifndef S1224_AFSK_SOFT_H
+#define S1224_AFSK_SOFT_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifndef S1224_BITRATE
+#define S1224_BITRATE 1200
+#endif
+
+void afsk_soft_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);
+
+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);
+
+/** Carrier/energy sense for UI (softmodem — not chip CDT). */
+bool afsk_rx_carrier_active(void);
+
+#endif /* S1224_AFSK_SOFT_H */
diff --git a/firmware/s1224/include/banner.h b/firmware/s1224/include/banner.h
new file mode 100644
index 0000000..d9bc1a2
--- /dev/null
+++ b/firmware/s1224/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 S1224_BANNER_H
+#define S1224_BANNER_H
+
+/** Print fixed boot banner (call once after CDC ready). */
+void banner_print(void);
+
+#endif /* S1224_BANNER_H */
diff --git a/firmware/s1224/include/baud_config.h b/firmware/s1224/include/baud_config.h
new file mode 100644
index 0000000..28e07ee
--- /dev/null
+++ b/firmware/s1224/include/baud_config.h
@@ -0,0 +1,10 @@
+#ifndef S1224_BAUD_CONFIG_H
+#define S1224_BAUD_CONFIG_H
+
+typedef struct {
+ const char *label;
+} baud_profile_config_t;
+
+const baud_profile_config_t *baud_config_get(void);
+
+#endif
diff --git a/firmware/s1224/include/board_pins.h b/firmware/s1224/include/board_pins.h
new file mode 100644
index 0000000..0fb1a21
--- /dev/null
+++ b/firmware/s1224/include/board_pins.h
@@ -0,0 +1,39 @@
+/**
+ * T-Modem-s1224 pin map — softmodem service Pico (same PCB base as c1224).
+ * No TCM3105: PWM AF out bypasses chip socket (prototype jumper to AF path).
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#ifndef S1224_BOARD_PINS_H
+#define S1224_BOARD_PINS_H
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#define S1224_HAS_CHIP_MODEM 0
+
+/* I2C LCD (shared-kit class; level-shifted on board) */
+#define PIN_I2C_SDA 0
+#define PIN_I2C_SCL 1
+#define I2C_LCD_BAUDRATE 100000
+#define I2C_LCD_ADDR_DEFAULT 0x27
+
+/* GP6 · PCB net AF_TX · PWM AFSK out */
+#define PIN_AF_TX 6
+
+/* GP26 · PCB net AF_RX when routed · ADC channel 0 */
+#define PIN_AF_RX_ADC 26
+
+/* GP7/GP8 · NC on s1224 PCB · optional FW sense if wired */
+#define PIN_GP7_SENSE 7
+#define PIN_MODEM_RXD PIN_GP7_SENSE /* alias · was chip RXD name */
+#define PIN_MODEM_CDT 8 /* unused · NC on board */
+
+#define PIN_PTT_DRV 9 /* GP9 · PTT keying */
+
+#define PIN_LED_PTT 10
+#define PIN_LED_DCD 11
+#define PIN_LED_TXRX 12
+
+void board_pins_init(void);
+
+#endif /* S1224_BOARD_PINS_H */
diff --git a/firmware/s1224/include/config.h b/firmware/s1224/include/config.h
new file mode 100644
index 0000000..9792aed
--- /dev/null
+++ b/firmware/s1224/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 S1224_CONFIG_H
+#define S1224_CONFIG_H
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <stddef.h>
+
+#define S1224_TEXT_MAX 48
+
+typedef struct {
+ char starting[S1224_TEXT_MAX];
+ char ready[S1224_TEXT_MAX];
+ char fault[S1224_TEXT_MAX];
+ char sending[S1224_TEXT_MAX];
+ char signal[S1224_TEXT_MAX];
+ char packet[S1224_TEXT_MAX];
+ char power[S1224_TEXT_MAX];
+ char idle[S1224_TEXT_MAX];
+ /* Terminal-facing identity (CDC ID) */
+ char callsign[S1224_TEXT_MAX];
+ char device_id[S1224_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;
+} s1224_config_t;
+
+void config_init(void);
+const s1224_config_t *config_get(void);
+s1224_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/s1224/include/crystal_steer.h b/firmware/s1224/include/crystal_steer.h
new file mode 100644
index 0000000..43f0dd7
--- /dev/null
+++ b/firmware/s1224/include/crystal_steer.h
@@ -0,0 +1,10 @@
+#ifndef S1224_CRYSTAL_STEER_H
+#define S1224_CRYSTAL_STEER_H
+
+#include <stdbool.h>
+
+/** Softmodem — no-op (rate = compile-time S1224_BITRATE). */
+void crystal_steer_apply(void);
+bool crystal_steer_applied(void);
+
+#endif
diff --git a/firmware/s1224/include/display.h b/firmware/s1224/include/display.h
new file mode 100644
index 0000000..67b32ce
--- /dev/null
+++ b/firmware/s1224/include/display.h
@@ -0,0 +1,17 @@
+#ifndef S1224_DISPLAY_H
+#define S1224_DISPLAY_H
+
+#include <stdbool.h>
+
+/**
+ * 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/s1224/include/hdlc.h b/firmware/s1224/include/hdlc.h
new file mode 100644
index 0000000..9b4cb22
--- /dev/null
+++ b/firmware/s1224/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 S1224_HDLC_H
+#define S1224_HDLC_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#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 /* S1224_HDLC_H */
diff --git a/firmware/s1224/include/kiss.h b/firmware/s1224/include/kiss.h
new file mode 100644
index 0000000..66a890b
--- /dev/null
+++ b/firmware/s1224/include/kiss.h
@@ -0,0 +1,34 @@
+/**
+ * KISS frame encode/decode (FEND 0xC0).
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#ifndef S1224_KISS_H
+#define S1224_KISS_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#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 /* S1224_KISS_H */
diff --git a/firmware/s1224/include/modem_probe.h b/firmware/s1224/include/modem_probe.h
new file mode 100644
index 0000000..7e63904
--- /dev/null
+++ b/firmware/s1224/include/modem_probe.h
@@ -0,0 +1,14 @@
+#ifndef S1224_MODEM_PROBE_H
+#define S1224_MODEM_PROBE_H
+
+#include <stdbool.h>
+
+typedef struct {
+ bool softmodem_ok;
+ bool af_tx_pwm;
+ bool ready;
+} modem_probe_result_t;
+
+modem_probe_result_t modem_probe_run(void);
+
+#endif
diff --git a/firmware/s1224/include/ptt.h b/firmware/s1224/include/ptt.h
new file mode 100644
index 0000000..501c558
--- /dev/null
+++ b/firmware/s1224/include/ptt.h
@@ -0,0 +1,10 @@
+#ifndef S1224_PTT_H
+#define S1224_PTT_H
+
+#include <stdbool.h>
+
+void ptt_init(void);
+void ptt_set(bool on);
+bool ptt_get(void);
+
+#endif
diff --git a/firmware/s1224/include/sense.h b/firmware/s1224/include/sense.h
new file mode 100644
index 0000000..50933f3
--- /dev/null
+++ b/firmware/s1224/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 S1224_SENSE_H
+#define S1224_SENSE_H
+
+#include <stdbool.h>
+
+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/s1224/include/status.h b/firmware/s1224/include/status.h
new file mode 100644
index 0000000..3c62390
--- /dev/null
+++ b/firmware/s1224/include/status.h
@@ -0,0 +1,23 @@
+#ifndef S1224_STATUS_H
+#define S1224_STATUS_H
+
+#include <stdbool.h>
+
+typedef enum {
+ S1224_STATE_STARTING = 0,
+ S1224_STATE_READY,
+ S1224_STATE_FAULT,
+ S1224_STATE_SENDING,
+ S1224_STATE_SIGNAL, /* CDT active (Signal/RX) */
+ S1224_STATE_PACKET /* RXD packet sense (may coexist with signal) */
+} s1224_state_t;
+
+/** Operator-facing text for state (from INI). */
+const char *s1224_state_string(s1224_state_t st);
+void status_set(s1224_state_t st);
+s1224_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/s1224/include/usb_cmd.h b/firmware/s1224/include/usb_cmd.h
new file mode 100644
index 0000000..8f0ded6
--- /dev/null
+++ b/firmware/s1224/include/usb_cmd.h
@@ -0,0 +1,11 @@
+#ifndef S1224_USB_CMD_H
+#define S1224_USB_CMD_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+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/s1224/include/version.h b/firmware/s1224/include/version.h
new file mode 100644
index 0000000..d1a288f
--- /dev/null
+++ b/firmware/s1224/include/version.h
@@ -0,0 +1,9 @@
+#ifndef S1224_VERSION_H
+#define S1224_VERSION_H
+/**
+ * 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
+ */
+#define S1224_FW_VERSION "1.0-prototype"
+#endif
diff --git a/firmware/s1224/src/common/afsk_soft.c b/firmware/s1224/src/common/afsk_soft.c
new file mode 100644
index 0000000..3e5d966
--- /dev/null
+++ b/firmware/s1224/src/common/afsk_soft.c
@@ -0,0 +1,224 @@
+/*
+ * Continuous-phase AFSK TX via PWM frequency (mark/space) + NRZI/HDLC.
+ * RX: per-bit Goertzel mark/space on ADC (GP26) when wired.
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#include "afsk_soft.h"
+#include "afsk_profile.h"
+#include "hdlc.h"
+#include "board_pins.h"
+#include "ptt.h"
+#include "status.h"
+#include "hardware/gpio.h"
+#include "hardware/pwm.h"
+#include "hardware/clocks.h"
+#include "pico/stdlib.h"
+#include <string.h>
+#include <math.h>
+
+#define BIT_US (1000000u / (unsigned)S1224_BITRATE)
+#define TX_BITS_MAX ((HDLC_MAX_INFO + 4) * 10 + 64)
+#define PWM_CLKDIV 4.0f
+#define RX_SAMPLES_BIT 8
+#define RX_FS_HZ ((unsigned)S1224_BITRATE * RX_SAMPLES_BIT)
+#define CARRIER_THRESH 50.0f
+
+static uint8_t g_tx_bits[TX_BITS_MAX];
+static volatile bool g_tx_busy;
+static bool g_nrzi_mark;
+static hdlc_rx_t g_rx;
+static afsk_rx_frame_fn g_rx_cb;
+static uint8_t g_rx_out[HDLC_MAX_INFO];
+static uint g_pwm_slice;
+static uint g_pwm_chan;
+static afsk_profile_t g_prof;
+static bool g_carrier;
+
+#if PIN_AF_RX_ADC >= 0
+#include "hardware/adc.h"
+#define RX_GOERTZEL_ENABLE 1
+static float g_rx_samp[RX_SAMPLES_BIT];
+static unsigned g_rx_n;
+static absolute_time_t g_next_adc;
+static bool g_rx_nrzi_mark;
+static float g_coeff_mark;
+static float g_coeff_space;
+#else
+#define RX_GOERTZEL_ENABLE 0
+#endif
+
+static void pwm_tone_hz(uint32_t freq_hz)
+{
+ if (freq_hz < 100) {
+ pwm_set_enabled(g_pwm_slice, false);
+ return;
+ }
+ uint32_t sys = clock_get_hz(clk_sys);
+ uint32_t wrap = (uint32_t)((float)sys / (freq_hz * PWM_CLKDIV)) - 1u;
+ if (wrap < 10) {
+ wrap = 10;
+ }
+ pwm_set_clkdiv(g_pwm_slice, PWM_CLKDIV);
+ pwm_set_wrap(g_pwm_slice, wrap);
+ pwm_set_chan_level(g_pwm_slice, g_pwm_chan, wrap / 2u);
+ pwm_set_enabled(g_pwm_slice, true);
+}
+
+static void nrzi_play_bit(bool data_bit)
+{
+ if (!data_bit) {
+ g_nrzi_mark = !g_nrzi_mark;
+ }
+ pwm_tone_hz(g_nrzi_mark ? g_prof.mark_hz : g_prof.space_hz);
+ busy_wait_us_32(BIT_US);
+}
+
+#if RX_GOERTZEL_ENABLE
+static float goertzel_mag(const float *x, unsigned n, float coeff)
+{
+ float s0 = 0.0f, s1 = 0.0f, s2 = 0.0f;
+ for (unsigned i = 0; i < n; i++) {
+ s0 = x[i] + coeff * s1 - s2;
+ s2 = s1;
+ s1 = s0;
+ }
+ float power = s1 * s1 + s2 * s2 - coeff * s1 * s2;
+ return power < 0.0f ? 0.0f : power;
+}
+
+static float goertzel_coeff(uint32_t tone_hz)
+{
+ float w = 2.0f * (float)M_PI * ((float)tone_hz / (float)RX_FS_HZ);
+ return 2.0f * cosf(w);
+}
+#endif
+
+void afsk_soft_init(void)
+{
+ g_prof = afsk_profile_get();
+ gpio_set_function(PIN_AF_TX, GPIO_FUNC_PWM);
+ g_pwm_slice = pwm_gpio_to_slice_num(PIN_AF_TX);
+ g_pwm_chan = pwm_gpio_to_channel(PIN_AF_TX);
+ pwm_tone_hz(0);
+ g_tx_busy = false;
+ g_nrzi_mark = true;
+ hdlc_rx_init(&g_rx);
+ g_rx_cb = NULL;
+ g_carrier = false;
+
+#if RX_GOERTZEL_ENABLE
+ adc_init();
+ adc_gpio_init(PIN_AF_RX_ADC);
+ adc_select_input((uint)(PIN_AF_RX_ADC - 26));
+ g_rx_n = 0;
+ g_rx_nrzi_mark = true;
+ g_coeff_mark = goertzel_coeff(g_prof.mark_hz);
+ g_coeff_space = goertzel_coeff(g_prof.space_hz);
+ g_next_adc = get_absolute_time();
+#endif
+}
+
+unsigned afsk_bitrate(void)
+{
+ return (unsigned)S1224_BITRATE;
+}
+
+bool afsk_tx_busy(void)
+{
+ return g_tx_busy;
+}
+
+bool afsk_rx_carrier_active(void)
+{
+ return g_carrier;
+}
+
+void afsk_rx_set_callback(afsk_rx_frame_fn fn)
+{
+ g_rx_cb = fn;
+}
+
+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(S1224_STATE_SENDING);
+ status_publish();
+ ptt_set(true);
+ sleep_ms(40);
+
+ g_nrzi_mark = true;
+ pwm_tone_hz(g_prof.mark_hz);
+
+ for (size_t i = 0; i < nbits; i++) {
+ nrzi_play_bit(g_tx_bits[i] != 0);
+ }
+
+ pwm_tone_hz(0);
+ sleep_ms(20);
+ ptt_set(false);
+ status_set(S1224_STATE_READY);
+ status_publish();
+ g_tx_busy = false;
+ return true;
+}
+
+#if RX_GOERTZEL_ENABLE
+static void rx_process_bit_window(void)
+{
+ float m = goertzel_mag(g_rx_samp, RX_SAMPLES_BIT, g_coeff_mark);
+ float s = goertzel_mag(g_rx_samp, RX_SAMPLES_BIT, g_coeff_space);
+ float peak = m > s ? m : s;
+ g_carrier = peak > CARRIER_THRESH;
+
+ bool tone_mark = (m >= s);
+ bool data_bit = (tone_mark == g_rx_nrzi_mark); /* NRZI: 1 = no transition */
+ if (tone_mark != g_rx_nrzi_mark) {
+ g_rx_nrzi_mark = tone_mark;
+ }
+
+ 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);
+ }
+}
+
+static void rx_goertzel_sample(void)
+{
+ absolute_time_t now = get_absolute_time();
+ if (absolute_time_diff_us(g_next_adc, now) < 0) {
+ return;
+ }
+ g_next_adc = delayed_by_us(now, 1000000u / RX_FS_HZ);
+
+ uint16_t raw = adc_read();
+ /* Center around mid-scale (12-bit ADC). */
+ g_rx_samp[g_rx_n++] = ((float)raw - 2048.0f) / 2048.0f;
+
+ if (g_rx_n >= RX_SAMPLES_BIT) {
+ g_rx_n = 0;
+ rx_process_bit_window();
+ }
+}
+#else
+static void rx_goertzel_sample(void)
+{
+ /* TX-only boards: leave PIN_AF_RX_ADC as -1. */
+ g_carrier = false;
+}
+#endif
+
+void afsk_rx_poll(void)
+{
+ if (g_tx_busy) {
+ return;
+ }
+ rx_goertzel_sample();
+}
diff --git a/firmware/s1224/src/common/banner.c b/firmware/s1224/src/common/banner.c
new file mode 100644
index 0000000..21d1f3c
--- /dev/null
+++ b/firmware/s1224/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_soft.h"
+#include <stdio.h>
+#include <string.h>
+
+/* 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-s1224 %s", S1224_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/s1224/src/common/baud_config.c b/firmware/s1224/src/common/baud_config.c
new file mode 100644
index 0000000..8a94a19
--- /dev/null
+++ b/firmware/s1224/src/common/baud_config.c
@@ -0,0 +1,19 @@
+#include "baud_config.h"
+#include "afsk_soft.h"
+
+static const baud_profile_config_t cfg = {
+#if S1224_BITRATE == 300
+ .label = "s1224-300",
+#elif S1224_BITRATE == 1200
+ .label = "s1224-1200",
+#elif S1224_BITRATE == 2400
+ .label = "s1224-2400",
+#else
+ .label = "s1224",
+#endif
+};
+
+const baud_profile_config_t *baud_config_get(void)
+{
+ return &cfg;
+}
diff --git a/firmware/s1224/src/common/board_pins.c b/firmware/s1224/src/common/board_pins.c
new file mode 100644
index 0000000..d02ebd0
--- /dev/null
+++ b/firmware/s1224/src/common/board_pins.c
@@ -0,0 +1,47 @@
+/*
+ * Board GPIO setup — T-Modem-s1224 softmodem Pico.
+ * 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)
+{
+ gpio_init(PIN_AF_TX);
+ gpio_set_dir(PIN_AF_TX, GPIO_OUT);
+ gpio_put(PIN_AF_TX, 0);
+
+#if PIN_AF_RX_ADC >= 0
+ gpio_init(PIN_AF_RX_ADC);
+ gpio_set_dir(PIN_AF_RX_ADC, GPIO_IN);
+#endif
+
+ 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);
+ gpio_pull_up(PIN_MODEM_CDT);
+
+ gpio_init(PIN_PTT_DRV);
+ gpio_set_dir(PIN_PTT_DRV, GPIO_OUT);
+ gpio_put(PIN_PTT_DRV, 0);
+
+ 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_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/s1224/src/common/config.c b/firmware/s1224/src/common/config.c
new file mode 100644
index 0000000..7c8f33c
--- /dev/null
+++ b/firmware/s1224/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 <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#define CFG_MAGIC0 'S'
+#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 s1224_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 >= S1224_TEXT_MAX) {
+ n = S1224_TEXT_MAX - 1;
+ }
+ memcpy(dst, src, n);
+ dst[n] = '\0';
+}
+
+void config_load_defaults(void)
+{
+ copy_text(g_cfg.starting, "s1224 is starting");
+ copy_text(g_cfg.ready, "s1224 is ready");
+ copy_text(g_cfg.fault, "s1224 is fault");
+ copy_text(g_cfg.sending, "s1224 is sending");
+ copy_text(g_cfg.signal, "s1224 signal");
+ copy_text(g_cfg.packet, "s1224 packet");
+ copy_text(g_cfg.power, "s1224 power");
+ copy_text(g_cfg.idle, "s1224 idle");
+ copy_text(g_cfg.callsign, "");
+ copy_text(g_cfg.device_id, "s1224");
+ 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,
+ "# s1224.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 s1224_config_t *config_get(void)
+{
+ return &g_cfg;
+}
+
+s1224_config_t *config_mutable(void)
+{
+ return &g_cfg;
+}
+
+bool config_unsolicited_ok(void)
+{
+ return !g_cfg.quiet;
+}
diff --git a/firmware/s1224/src/common/crystal_steer.c b/firmware/s1224/src/common/crystal_steer.c
new file mode 100644
index 0000000..863b7b1
--- /dev/null
+++ b/firmware/s1224/src/common/crystal_steer.c
@@ -0,0 +1,17 @@
+/*
+ * Softmodem product — no crystal mux / no TCM3105 XTAL steering.
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#include "crystal_steer.h"
+
+static bool g_applied;
+
+void crystal_steer_apply(void)
+{
+ g_applied = true;
+}
+
+bool crystal_steer_applied(void)
+{
+ return g_applied;
+}
diff --git a/firmware/s1224/src/common/display.c b/firmware/s1224/src/common/display.c
new file mode 100644
index 0000000..e2875be
--- /dev/null
+++ b/firmware/s1224/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 <stdio.h>
+#include <string.h>
+#include <stdint.h>
+
+/* 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 s1224_config_t *cfg = config_get();
+ char l0[17];
+ char l1[17];
+
+ s1224_state_t st = status_get();
+ if (st == S1224_STATE_FAULT) {
+ snprintf(l0, sizeof(l0), "%.16s", cfg->fault);
+ } else if (ptt_get()) {
+ snprintf(l0, sizeof(l0), "%.16s", cfg->sending);
+ } else if (st == S1224_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/s1224/src/common/hdlc.c b/firmware/s1224/src/common/hdlc.c
new file mode 100644
index 0000000..3cee0da
--- /dev/null
+++ b/firmware/s1224/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/s1224/src/common/kiss.c b/firmware/s1224/src/common/kiss.c
new file mode 100644
index 0000000..1d5d0e7
--- /dev/null
+++ b/firmware/s1224/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/s1224/src/common/main.c b/firmware/s1224/src/common/main.c
new file mode 100644
index 0000000..ae17585
--- /dev/null
+++ b/firmware/s1224/src/common/main.c
@@ -0,0 +1,61 @@
+/*
+ * T-Modem-s1224 — USB KISS half-TNC + softmodem AFSK (PWM TX / Goertzel RX).
+ * Three UF2 builds (300 / 1200 / 2400). No TCM3105 chip path.
+ * 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_soft.h"
+#include "banner.h"
+#include "hardware/gpio.h"
+#include <stdio.h>
+
+int main(void)
+{
+ stdio_init_all();
+ sleep_ms(800);
+
+ board_pins_init();
+ ptt_init();
+ config_init();
+ display_init();
+ sense_init();
+ afsk_soft_init();
+ usb_cmd_init();
+ afsk_rx_set_callback(usb_cmd_on_rx_frame);
+
+ status_set(S1224_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(S1224_STATE_READY);
+ } else {
+ status_set(S1224_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/s1224/src/common/modem_probe.c b/firmware/s1224/src/common/modem_probe.c
new file mode 100644
index 0000000..9624d32
--- /dev/null
+++ b/firmware/s1224/src/common/modem_probe.c
@@ -0,0 +1,22 @@
+/*
+ * Softmodem health — no chip/crystal checks.
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#include "modem_probe.h"
+#include "config.h"
+#include "afsk_soft.h"
+#include <stdio.h>
+
+modem_probe_result_t modem_probe_run(void)
+{
+ modem_probe_result_t r = {0};
+ r.softmodem_ok = true;
+ r.af_tx_pwm = true;
+ r.ready = r.softmodem_ok && (afsk_bitrate() == 300u || afsk_bitrate() == 1200u || afsk_bitrate() == 2400u);
+
+ if (config_unsolicited_ok()) {
+ printf("PROBE softmodem=%d bitrate=%u -> %s\r\n",
+ (int)r.softmodem_ok, afsk_bitrate(), r.ready ? "READY" : "FAULT");
+ }
+ return r;
+}
diff --git a/firmware/s1224/src/common/ptt.c b/firmware/s1224/src/common/ptt.c
new file mode 100644
index 0000000..f54f221
--- /dev/null
+++ b/firmware/s1224/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/s1224/src/common/sense.c b/firmware/s1224/src/common/sense.c
new file mode 100644
index 0000000..376004d
--- /dev/null
+++ b/firmware/s1224/src/common/sense.c
@@ -0,0 +1,72 @@
+/*
+ * Sense for softmodem: carrier from demod stub + optional GP7 heuristic.
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+#include "sense.h"
+#include "board_pins.h"
+#include "config.h"
+#include "afsk_soft.h"
+#include "hardware/gpio.h"
+#include "pico/stdlib.h"
+#include <stdint.h>
+
+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;
+
+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 s1224_config_t *cfg = config_get();
+
+ g_signal = afsk_rx_carrier_active();
+
+ 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_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/s1224/src/common/status.c b/firmware/s1224/src/common/status.c
new file mode 100644
index 0000000..ca4df5c
--- /dev/null
+++ b/firmware/s1224/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 <stdio.h>
+
+static s1224_state_t g_state = S1224_STATE_STARTING;
+
+const char *s1224_state_string(s1224_state_t st)
+{
+ const s1224_config_t *cfg = config_get();
+ switch (st) {
+ case S1224_STATE_STARTING:
+ return cfg->starting;
+ case S1224_STATE_READY:
+ return cfg->ready;
+ case S1224_STATE_FAULT:
+ return cfg->fault;
+ case S1224_STATE_SENDING:
+ return cfg->sending;
+ case S1224_STATE_SIGNAL:
+ return cfg->signal;
+ case S1224_STATE_PACKET:
+ return cfg->packet;
+ default:
+ return cfg->fault;
+ }
+}
+
+void status_set(s1224_state_t st)
+{
+ g_state = st;
+}
+
+s1224_state_t status_get(void)
+{
+ return g_state;
+}
+
+void status_publish(void)
+{
+ const char *s = s1224_state_string(g_state);
+ if (config_unsolicited_ok()) {
+ printf("STATUS %s\r\n", s);
+ }
+ display_update();
+}
+
+void status_tick(void)
+{
+ if (g_state == S1224_STATE_FAULT || g_state == S1224_STATE_STARTING) {
+ display_update();
+ return;
+ }
+
+ s1224_state_t next;
+ if (ptt_get()) {
+ next = S1224_STATE_SENDING;
+ } else if (sense_packet_active()) {
+ next = S1224_STATE_PACKET;
+ } else if (sense_signal_active()) {
+ next = S1224_STATE_SIGNAL;
+ } else {
+ next = S1224_STATE_READY;
+ }
+
+ if (next != g_state) {
+ g_state = next;
+ status_publish();
+ } else {
+ display_update();
+ }
+}
diff --git a/firmware/s1224/src/common/usb_cmd.c b/firmware/s1224/src/common/usb_cmd.c
new file mode 100644
index 0000000..e4a5fc7
--- /dev/null
+++ b/firmware/s1224/src/common/usb_cmd.c
@@ -0,0 +1,267 @@
+/*
+ * 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_soft.h"
+#include "kiss.h"
+#include "hardware/gpio.h"
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+#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 "
+ "carrier=%d bitrate=%u softmodem=1 kiss_half_tnc=1\r\n",
+ s1224_state_string(status_get()),
+ (int)ptt_get(),
+ (int)sense_signal_active(),
+ (int)sense_packet_active(),
+ (int)sense_packet_flag(),
+ (int)afsk_rx_carrier_active(),
+ 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 <key> | SET <key>=<value>\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("Softmodem AFSK · S1224_BITRATE=%u (build: 300/1200/2400).\r\n",
+ afsk_bitrate());
+ printf("PWM AF_TX GP6 · ADC AF_RX GP26 · no chip modem · no baud switch.\r\n");
+ printf("INI: texts + callsign device_id quiet + sense keys\r\n");
+ return;
+ }
+ if (strcmp(cmd, "ID") == 0) {
+ const s1224_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 : "s1224",
+ 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[S1224_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..e852f0d
--- /dev/null
+++ b/hardware/BOM.md
@@ -0,0 +1,16 @@
+# T-Modem-s1224 — BOM (planning)
+
+**Status:** planning BOM · shared PCB base with **c1224** · softmodem stuffing
+**Product:** **T-Modem-s1224** · slave `/home/akb/Code/10-PROJECTS/T-Modem-s1224/`
+**License:** GNU **GPLv3** · **non-profit** · **AS-IS**
+
+## Delta vs c1224
+
+| Item | Qty s1224 | Note |
+|------|-----------|------|
+| U_MODEM (TCM3105-class) | **0 DNI** | Softmodem replaces chip AFSK |
+| SKT_MODEM (DIP-16 socket) | **0 DNI** | Omit |
+| Y1 / Y2 crystals | **0 DNI** | Rate = FW profile (300/1200/2400) |
+| Pico + power + display + AF jacks | as c1224 | Shared kit |
+
+CSV: [`bom/BOM.csv`](bom/BOM.csv)
diff --git a/hardware/README.md b/hardware/README.md
new file mode 100644
index 0000000..5be5061
--- /dev/null
+++ b/hardware/README.md
@@ -0,0 +1,8 @@
+# Hardware — T-Modem-s1224
+
+| Path | Role |
+|------|------|
+| [`kicad/t-modem-s1224/`](kicad/t-modem-s1224/) | Schematic + PCB (shared base · modem **DNI**) |
+| [`BOM.md`](BOM.md) · [`bom/BOM.csv`](bom/BOM.csv) | Planning BOM |
+
+Softmodem AF: Pico **GP6** PWM out · **GP26** ADC in. See KiCad README for DNI table.
diff --git a/hardware/bom/BOM.csv b/hardware/bom/BOM.csv
new file mode 100644
index 0000000..c76cffc
--- /dev/null
+++ b/hardware/bom/BOM.csv
@@ -0,0 +1,41 @@
+Ref,Qty,Description,Preferred_candidate,Notes,Status
+SKT_MODEM,0,16-pin DIP socket 0.3 inch,Generic/turned-pin,DNI softmodem — omit socket,DNI
+U_MODEM,0,Bell-202 AFSK modem IC DIP-16,TCM3105 or MX614P-class,DNI softmodem — Pico PWM/ADC AFSK,DNI
+Y1,0,Crystal chip 1200 flash,4.4336 MHz HC-49 TH,DNI softmodem (rate=FW),DNI
+Y2,0,Crystal chip 2400 flash,6.5536 MHz HC-49 TH,DNI softmodem (rate=FW),DNI
+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..34ac7b2
--- /dev/null
+++ b/hardware/kicad/README.md
@@ -0,0 +1,39 @@
+# KiCad — T-Modem-s1224
+
+Tracked project: **`t-modem-s1224/`** — started from **c1224** copper; softmodem line.
+
+## State (2026-08-03)
+
+| Metric | Value |
+|--------|------:|
+| Segments (tracks) | **0** (stripped for clean re-route) |
+| Vias | **0** |
+| Footprints on PCB | **31** |
+| Schematic chip symbols | **DNP** (`U_MODEM`, `Y1`, `Y2`) |
+
+**Backups:**
+
+- `t-modem-s1224/t-modem-s1224.pre-strip-backup.kicad_pcb` (289 segments)
+- `t-modem-s1224/t-modem-s1224.2026-08-03-pre-reroute-backup.kicad_pcb` (199 segments)
+- MASTER vault: `hardware/open-designs/t-modem-s1224-pcb-backup/`
+
+DRC: **unconnected** on all signal pads — expected until re-route.
+
+Detail: [`t-modem-s1224/README.md`](t-modem-s1224/README.md).
+
+## Keep for re-route
+
+U1 Pico · power (J_DC / U_REG / D_OR1 / F1 / bulk+bypass) · J_AF · Q1 / R_PTT · J_LCD_I2C / U_LVL / RV2 · J_USB / J_USB_PICO · LEDs+R_LED* · SW1 / TP_BOOTSEL · H1–H4.
+
+**Not stuffed / not on PCB:** RV1 · C_TX · C_RX · modem socket/chip.
+
+## Softmodem AF (net names)
+
+| GPIO | Net |
+|------|-----|
+| GP6 | **`AF_TX`** |
+| GP26 | **`AF_RX`** |
+| GP9 | **`PTT_DRV`** |
+| GP7 / GP8 | **NC** |
+
+U1.9 = **GP6** / **`AF_TX`** · U1.31 = **GP26** / **`AF_RX`** · U1.12 = **GP9** / **`PTT_DRV`**.
diff --git a/hardware/kicad/t-modem-s1224/README.md b/hardware/kicad/t-modem-s1224/README.md
new file mode 100644
index 0000000..fc9b05a
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/README.md
@@ -0,0 +1,67 @@
+# KiCad — T-Modem-s1224
+
+Same PCB base as **T-Modem-c1224**, softmodem stuffing / metadata variant.
+
+| File | Role |
+|------|------|
+| `t-modem-s1224.kicad_sch` | Schematic (chip symbols **DNP**) |
+| `t-modem-s1224.kicad_pcb` | PCB **180×180 mm** · **0** tracks · **0** vias |
+| `t-modem-s1224.kicad_pro` | Project · `PROJECT=T-Modem-s1224` · `VERSION=1.0-upcoming1` |
+| `t-modem-s1224.kicad_sym` | Symbols |
+| `t-modem-s1224.rules` | Custom DRC rules |
+| `t-modem-s1224.pre-strip-backup.kicad_pcb` | Pre first strip (289 segments) |
+| `t-modem-s1224.2026-08-03-pre-reroute-backup.kicad_pcb` | Pre second strip / re-route reset (199 segments) |
+
+## Inventory — PCB footprints (**31**)
+
+**Keep:** U1 Pico · J_DC / U_REG / D_OR1 / F1 / C_BULK / C_BYP* / C_IN · J_AF · Q1 / R_PTT · J_LCD_I2C / U_LVL / RV2 · J_USB / J_USB_PICO · LED_* / R_LED* · SW1 / TP_BOOTSEL · H1–H4.
+
+**Removed (softmodem — not on PCB):**
+
+| Ref | Role |
+|-----|------|
+| **U_MODEM** / **SKT_MODEM** | TCM3105 + socket (sch **DNP** only) |
+| **Y1** / **Y2** / **C_Y*** | Pierce (sch **DNP**) |
+| **RV1** / **C_TX** / **C_RX** | Chip-era AF trim / coupling — **DNP** |
+| **RV_CDL** / **R_TXR*** / **R_TRS** | Chip straps |
+
+## Schematic DNP (not stuffed)
+
+| Ref | Value | Flags |
+|-----|-------|-------|
+| **U_MODEM** | TCM3105 | `dnp` · `in_bom no` · `on_board no` |
+| **Y1** | 4.4336 MHz | same |
+| **Y2** | 6.5536 MHz | same |
+| **D_OR2** | DNI-no-VBUS-OR | same (USB VBUS OR unused) |
+
+Tracks (`segment`): **0** — stripped 2026-08-03 for clean re-route.
+
+## U1 Pico AF nets (s1224 — no chip-era `MODEM_*` names)
+
+| Pad | GPIO | Net | Role |
+|-----|------|-----|------|
+| **9** | GP6 | **`AF_TX`** | PWM AFSK TX → radio AF inject |
+| **10** | GP7 | *(NC)* | Unconnected on board |
+| **11** | GP8 | *(NC)* | Unconnected on board |
+| **31** | GP26 | **`AF_RX`** | ADC RX ← radio AF |
+| **12** | GP9 | **`PTT_DRV`** | PTT keying |
+
+## Connector / power nets (pad names)
+
+| Ref | Nets |
+|-----|------|
+| **J_AF** | `AF_TX` · `AF_RX` · `PTT_OC` · `GND` |
+| **J_DC** | `VIN_12` · `GND` ×2 |
+| **F1** | `+5V_REG` → `+5V` |
+| **D_OR1** | `+5V_OR` ← `+5V` |
+| **Q1** / **R_PTT** | `PTT_DRV` → `PTT_B` → `PTT_OC` |
+
+No **`MODEM_*`** · **`TXA`** · **`RXA`** · **`TX_LVL`** on PCB.
+
+## Prototype AF wiring
+
+- **GP6** PWM AFSK out → `AF_TX` → radio inject
+- **GP26** ADC0 ← `AF_RX` ← radio RX AF
+- **GP9** PTT → `PTT_DRV`
+
+**AS-IS** · GPLv3 · non-profit.
diff --git a/hardware/kicad/t-modem-s1224/scripts/kicad10_layers_setup.sexpr b/hardware/kicad/t-modem-s1224/scripts/kicad10_layers_setup.sexpr
new file mode 100644
index 0000000..0f3f583
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/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-s1224/scripts/render_docs_images.py b/hardware/kicad/t-modem-s1224/scripts/render_docs_images.py
new file mode 100644
index 0000000..7fd75f3
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/scripts/render_docs_images.py
@@ -0,0 +1,610 @@
+#!/usr/bin/env python3
+"""Render T-Modem docs images from the gold KiCad PCB.
+
+Outputs:
+ <repo>/t-modem-c12s24-complete.png
+ Assembled 3D (kicad-cli pcb render) — Pico H seated, top view, USB/DC at bottom.
+ <repo>/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-s1224/sym-lib-table b/hardware/kicad/t-modem-s1224/sym-lib-table
new file mode 100644
index 0000000..88a6e7a
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/sym-lib-table
@@ -0,0 +1,4 @@
+(sym_lib_table
+ (version 7)
+ (lib (name "t-modem")(type "KiCad")(uri "${KIPRJMOD}/t-modem-s1224.kicad_sym")(options "")(descr "T-Modem custom"))
+)
diff --git a/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pcb b/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pcb
new file mode 100644
index 0000000..dd15f80
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pcb
@@ -0,0 +1,12982 @@
+(kicad_pcb
+ (version 20260206)
+ (generator "pcbnew")
+ (generator_version "10.0")
+ (general
+ (thickness 1.6)
+ (legacy_teardrops no)
+ )
+ (paper "A4")
+ (title_block
+ (title "T-Modem-s1224 v1.0")
+ (date "2026-07-21")
+ (rev "1")
+ (company "GNU/GPLv3-Non-Profit (as-is)")
+ (comment 1 "Softmodem 300/1200/2400 · 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-s1224")
+ (property "VERSION" "1.0-prototype")
+ (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 "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 "PinHeader_1x04_P2.54mm_Vertical"
+ (layer "F.Cu")
+ (uuid "2f7ead32-c086-404b-993d-f296e177c198")
+ (at 48 36.5)
+ (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 "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 125.4 49.2)
+ (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 "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 "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 100 34.54)
+ (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")
+ )
+ (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 -7.62 -1.27 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 "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 "AF_TX")
+ (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)
+ (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)
+ (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)
+ (net "AF_RX")
+ (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 "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.62 -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)
+ )
+ )
+ )
+ (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-s1224 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 92.38 16.18)
+ (end 92.38 31.42)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "BOOTSEL")
+ (uuid "2305b976-0ead-4532-83c7-ee66f21418ef")
+ )
+ (segment
+ (start 100 39.04)
+ (end 106.5 39.04)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "BOOTSEL")
+ (uuid "28e26ae1-b2a2-4701-bd11-cbd7b9193b9f")
+ )
+ (segment
+ (start 92.38 31.42)
+ (end 100 39.04)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "BOOTSEL")
+ (uuid "455c6cb5-2cdc-47ed-9f62-0713e77b724e")
+ )
+ (segment
+ (start 81.754009 106.495)
+ (end 83.018604 106.495)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "18d5c13a-376a-4e62-9e7b-f420c8d8f2a5")
+ )
+ (segment
+ (start 81.754009 116.365)
+ (end 80.645 115.255991)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "1d0aec67-6332-4fd7-8a59-8426ed7cd158")
+ )
+ (segment
+ (start 80.645 107.604009)
+ (end 81.754009 106.495)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "2241eb2b-a9bc-459d-beef-f44496dfedb7")
+ )
+ (segment
+ (start 166.04 102.54)
+ (end 136.525 73.025)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "43035f90-fd15-40f2-bd4c-98a1bfa4ae95")
+ )
+ (segment
+ (start 83.345 114.774009)
+ (end 83.345 115.705991)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "656f2509-e086-4922-ba30-69fba1730aae")
+ )
+ (segment
+ (start 83.018604 106.495)
+ (end 83.693604 105.82)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "8083366c-87c1-47fa-869c-73c632211f38")
+ )
+ (segment
+ (start 119.587613 73.025)
+ (end 115 77.612613)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "98f42f9c-1e26-4688-a697-5fe8de9a432c")
+ )
+ (segment
+ (start 80.645 115.255991)
+ (end 80.645 107.604009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "a28a1f4e-d2c1-4bf0-92b3-43b318aeffae")
+ )
+ (segment
+ (start 82.685991 116.365)
+ (end 81.754009 116.365)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "a35b799a-91a3-402c-ab08-14dc68eef316")
+ )
+ (segment
+ (start 115 77.612613)
+ (end 115 96)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "a5441a49-e3e0-4e5e-9818-826354ba1550")
+ )
+ (segment
+ (start 83.693604 96.393604)
+ (end 82.22 94.92)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "b0814acd-6602-4b68-9125-ebaf09ee8f2a")
+ )
+ (segment
+ (start 99.534009 98.585)
+ (end 83.345 114.774009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "bb9f85aa-74c8-4e9d-90bd-a778970b24e5")
+ )
+ (segment
+ (start 83.345 115.705991)
+ (end 82.685991 116.365)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "bcb2578b-a153-4f64-bc02-2e90a7beaa0d")
+ )
+ (segment
+ (start 83.693604 105.82)
+ (end 83.693604 96.393604)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "da082266-648c-4541-a285-e96ddc869eb4")
+ )
+ (segment
+ (start 136.525 73.025)
+ (end 119.587613 73.025)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "e8d03fbc-b3fd-4b18-a9ea-dfbe854632b6")
+ )
+ (segment
+ (start 112.415 98.585)
+ (end 99.534009 98.585)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "ef0de8c9-8f94-47a3-9e75-0e95e4f278da")
+ )
+ (segment
+ (start 115 96)
+ (end 112.415 98.585)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "AF_TX")
+ (uuid "f46af3af-09e3-4f8a-8a7c-aa05eef842a0")
+ )
+ (segment
+ (start 94 103.46)
+ (end 94 124.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "AF_RX")
+ (uuid "013103af-b086-4d5b-bb28-789fcfc55bd5")
+ )
+ (segment
+ (start 144.5 119)
+ (end 166.04 97.46)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "AF_RX")
+ (uuid "1002e09f-c08f-4d54-ad97-f08cdb073636")
+ )
+ (segment
+ (start 94 124.5)
+ (end 100 124.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "AF_RX")
+ (uuid "3ca0c21e-4504-4aab-9909-4cc06148d39e")
+ )
+ (segment
+ (start 100 97.46)
+ (end 94 103.46)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "AF_RX")
+ (uuid "ae6c15fc-5893-480b-a29a-995f295f4457")
+ )
+ (segment
+ (start 100 124.5)
+ (end 105.5 119)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "AF_RX")
+ (uuid "ddda4e8b-cef9-48c2-a50e-242588b7f490")
+ )
+ (segment
+ (start 105.5 119)
+ (end 144.5 119)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "AF_RX")
+ (uuid "fa6091cb-5fc0-4285-89a6-553293eb8041")
+ )
+ (segment
+ (start 159.835 95)
+ (end 166 95)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "PTT_OC")
+ (uuid "24722398-30e1-46ca-9e97-81ff8293d5af")
+ )
+ (segment
+ (start 122.86 105.08)
+ (end 128.355 99.585)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "PTT_OC")
+ (uuid "3aa80ebe-58ab-459c-beca-225defdbf21e")
+ )
+ (segment
+ (start 128.355 99.585)
+ (end 155.25 99.585)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "PTT_OC")
+ (uuid "4ae0061a-0797-45ef-85a9-2d56040a0124")
+ )
+ (segment
+ (start 155.25 99.585)
+ (end 159.835 95)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "PTT_OC")
+ (uuid "5743f1df-b1b3-4332-a884-4e21ddf2d2ae")
+ )
+ (segment
+ (start 166.04 94.96)
+ (end 166.04 92.38)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "PTT_OC")
+ (uuid "64c89236-09a9-4e4e-a985-0702eaf7ccfd")
+ )
+ (segment
+ (start 166 95)
+ (end 166.04 94.96)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "PTT_OC")
+ (uuid "d86cc8bf-d2d7-46d1-9771-d3cebaa4886d")
+ )
+ (segment
+ (start 100 154.5)
+ (end 100 162.23)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "GND")
+ (uuid "65ff8257-0312-48f7-8a71-46b39e53efe0")
+ )
+ (segment
+ (start 129.5 125)
+ (end 100 154.5)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "GND")
+ (uuid "696dd6a6-7ae7-4ecb-9535-3773babd5413")
+ )
+ (segment
+ (start 100 117.78)
+ (end 122.28 117.78)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "GND")
+ (uuid "7047cb34-852a-4027-8148-96e71d99e3c4")
+ )
+ (segment
+ (start 122.28 117.78)
+ (end 129.5 125)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "GND")
+ (uuid "ce0025a5-2778-4441-9714-49a74cbf712e")
+ )
+ (segment
+ (start 27 76)
+ (end 73.1 76)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "004bba72-d5bc-485f-810f-f69de7577be6")
+ )
+ (segment
+ (start 173.66 64)
+ (end 173.66 64.84)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "02cc08c0-429b-4935-90f9-cecf9f03612d")
+ )
+ (segment
+ (start 79.5 82.4)
+ (end 82.22 79.68)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "091f60df-fac5-42dc-816c-6217d7cbfd81")
+ )
+ (segment
+ (start 114.28 26.76)
+ (end 114.28 16.18)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "0f709c23-86de-48f5-ae8f-c760e91d4ea5")
+ )
+ (segment
+ (start 106.5 34.54)
+ (end 114.28 26.76)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "139978c5-25f3-45a3-99fa-6cd73b6cc831")
+ )
+ (segment
+ (start 79.5 118)
+ (end 79.72 117.78)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "14afdec6-9125-4a32-829a-5d57246186e7")
+ )
+ (segment
+ (start 133.98 155.88)
+ (end 145.72 155.88)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "14e11138-a86c-40cb-abd3-32d800e04477")
+ )
+ (segment
+ (start 100 34.54)
+ (end 106.5 34.54)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "199b61da-58f8-4e8d-9bbb-1df8fdf00cde")
+ )
+ (segment
+ (start 173.66 40)
+ (end 172 38.34)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "1ba4d9fd-5657-424a-a3eb-7b1ffb107a72")
+ )
+ (segment
+ (start 173.66 52)
+ (end 172 50.34)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "2473bbc6-679b-4422-b8dd-e5b2fdc2ae1b")
+ )
+ (segment
+ (start 170.5 60.84)
+ (end 173.66 64)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "253209e3-3551-41a6-911d-feda91894177")
+ )
+ (segment
+ (start 100 117.78)
+ (end 102.34 115.44)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "260951da-8314-47c9-be40-67db9ba09fbd")
+ )
+ (segment
+ (start 172 41.66)
+ (end 173.66 40)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "27ba7f27-fcb3-4c45-8bcf-d4303be58aed")
+ )
+ (segment
+ (start 173.66 54.84)
+ (end 173.66 52)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "2b476591-9e04-4664-a79c-e64d9aa4ee4f")
+ )
+ (segment
+ (start 106.5 34.54)
+ (end 123.7 51.74)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "2ce0368a-6bfd-4d55-800f-7cabab78cd23")
+ )
+ (segment
+ (start 166.04 72.46)
+ (end 166.04 87.3)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "31f5e2f2-3b67-48dd-bcb8-f48061eebe3b")
+ )
+ (segment
+ (start 145.72 155.88)
+ (end 155.88 145.72)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "3497cd03-3a6f-455e-92d2-c83ac91b32c8")
+ )
+ (segment
+ (start 28.44 16.29)
+ (end 31.15 19)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "353f8cd0-8ffb-43b3-a30a-7f8b0b07c154")
+ )
+ (segment
+ (start 123.7 51.74)
+ (end 125.4 51.74)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "44f4a1f9-acb4-4f27-892b-c92789c6e5ff")
+ )
+ (segment
+ (start 173.66 54.84)
+ (end 170.5 58)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "461965c5-38ba-45a5-a3bc-4ac4f7584e2f")
+ )
+ (segment
+ (start 172 38.34)
+ (end 172 29.66)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "4675ec55-3dcf-4a8b-b611-8a97566b1e48")
+ )
+ (segment
+ (start 115.24 68.1)
+ (end 128.5 54.84)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "4c31b11b-d5a3-473a-bf1a-f092a87221a0")
+ )
+ (segment
+ (start 79.5 125.5)
+ (end 79.5 118.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "66ec7fcc-959d-4e31-9024-e70d3df2a463")
+ )
+ (segment
+ (start 172 50.34)
+ (end 172 41.66)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "67d26149-21df-42c1-84e0-85a3bc090865")
+ )
+ (segment
+ (start 79.5 107.8)
+ (end 82.22 105.08)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "6a57f8c5-2fb3-4200-ad5e-5653363fcaa2")
+ )
+ (segment
+ (start 79.5 118.5)
+ (end 79.5 118)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "6a89d495-1675-46cd-9e36-be6c39c250b4")
+ )
+ (segment
+ (start 74 13.64)
+ (end 79.1 13.64)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "6ba5817d-33f8-43ae-8265-91b6945de15c")
+ )
+ (segment
+ (start 69.3 16.64)
+ (end 72.3 13.64)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "6ca60c1e-54e0-4ad1-85ab-f6245969acc8")
+ )
+ (segment
+ (start 66 16.29)
+ (end 66.35 16.64)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "712c8d0a-7ca1-44ae-ac92-1f718f394456")
+ )
+ (segment
+ (start 79.5 95.5)
+ (end 79.5 95.1)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "77c9fbbb-7846-4419-9b63-49224d0d9502")
+ )
+ (segment
+ (start 27 65.12)
+ (end 48 44.12)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "79d8c0fa-8be8-4c78-b796-c1a2f9285920")
+ )
+ (segment
+ (start 73.1 76)
+ (end 79.5 82.4)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "7cfe275e-81fb-4841-975e-a7cfafc70f19")
+ )
+ (segment
+ (start 127.63 162.23)
+ (end 133.98 155.88)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "7d6a697b-167e-4833-8191-d4a4542c9b7d")
+ )
+ (segment
+ (start 100 105.08)
+ (end 102.34 102.74)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "85c69d89-effc-4d2c-a719-38bf8dcf33cf")
+ )
+ (segment
+ (start 67 164.85)
+ (end 72 169.85)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "86d3fa30-2935-4fdb-a4b4-9a1c1e8ddaa2")
+ )
+ (segment
+ (start 79.5 95.1)
+ (end 82.22 92.38)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "8deaeb71-e9bb-4e00-b594-72e69213f6f2")
+ )
+ (segment
+ (start 170.5 58)
+ (end 170.5 60.84)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "923e655a-433c-45ef-9d6d-d89269569363")
+ )
+ (segment
+ (start 102.34 115.44)
+ (end 102.34 105)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "98c737cd-c068-4d93-b7c8-912a4254583c")
+ )
+ (segment
+ (start 31.51 19)
+ (end 34.22 16.29)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "9ba39692-f894-4bf1-aac7-57e8879ac97c")
+ )
+ (segment
+ (start 105.08 74.6)
+ (end 115.24 74.6)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "9bee5efa-5ea8-44c4-a22d-92a161421e69")
+ )
+ (segment
+ (start 72.3 13.64)
+ (end 74 13.64)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "9e213649-47ab-4710-9a79-edbcd8b37816")
+ )
+ (segment
+ (start 100 79.68)
+ (end 102.34 77.34)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "a1768662-d8eb-417b-8e2f-655e8d6a58b2")
+ )
+ (segment
+ (start 66.35 16.64)
+ (end 69.3 16.64)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "a8470c4a-bc4a-471c-b782-21a55acf82c3")
+ )
+ (segment
+ (start 173.66 64.84)
+ (end 166.04 72.46)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "a92cb57f-34d4-42e5-8449-7e46a0061d8b")
+ )
+ (segment
+ (start 27 76)
+ (end 27 65.12)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "a9df768d-a68b-4d79-a728-bd6488f9b695")
+ )
+ (segment
+ (start 102.34 105)
+ (end 102.34 102.74)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "a9f80b64-740b-472f-9b4b-ab46f39e36e4")
+ )
+ (segment
+ (start 100 162.23)
+ (end 127.63 162.23)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "acdfecd3-d212-4bb5-9760-6e8f72b95bb1")
+ )
+ (segment
+ (start 31.15 19)
+ (end 31.51 19)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "ae6aacf7-2172-4efc-afbd-787b14ec424b")
+ )
+ (segment
+ (start 100 92.38)
+ (end 102.34 90.04)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "b088b8ae-160f-4262-8cb5-a5509124a6ad")
+ )
+ (segment
+ (start 79.5 107.8)
+ (end 79.5 95.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "b34ea240-851f-46f4-bf74-891100f56d75")
+ )
+ (segment
+ (start 102.34 102.74)
+ (end 102.34 90.04)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "b4d43d78-1c68-4a45-85fa-7770154a88f9")
+ )
+ (segment
+ (start 79.5 95.5)
+ (end 79.5 82.4)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "b622d2ae-346c-403d-9451-a24473803f1b")
+ )
+ (segment
+ (start 102.34 90.04)
+ (end 102.34 77.34)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "b62b2825-e1c0-4b1d-a8ef-445f9bfbc1c6")
+ )
+ (segment
+ (start 79.5 118.5)
+ (end 79.5 107.8)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "b9b6919e-4a33-4ba7-a9ed-fd038644b748")
+ )
+ (segment
+ (start 41.58 16.29)
+ (end 66 16.29)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "bb3d49b5-e7e7-42af-bfb4-3c657dd85c5b")
+ )
+ (segment
+ (start 120.32 105.08)
+ (end 102.42 105.08)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "bd314bc4-6ab8-4edc-99d7-ae5242ef14c5")
+ )
+ (segment
+ (start 102.5 125.5)
+ (end 100 128)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "c21cafd5-087d-414d-a4cc-c1fc6e781eeb")
+ )
+ (segment
+ (start 79.1 13.64)
+ (end 100 34.54)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "c28911fd-3711-4ed5-a2c9-71a535b1ee87")
+ )
+ (segment
+ (start 102.34 77.34)
+ (end 105.08 74.6)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "c5c68ad7-39e1-40ae-94da-a730b3f9b95d")
+ )
+ (segment
+ (start 115.24 74.6)
+ (end 115.24 68.1)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "d8818610-b60d-40ae-be9c-b0802be3b87c")
+ )
+ (segment
+ (start 79.5 125.5)
+ (end 67 138)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "deb59006-9b7f-426e-904e-f99b2b3935c4")
+ )
+ (segment
+ (start 102.42 105.08)
+ (end 102.34 105)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "dfde5548-91f3-48aa-9ca0-b290b6a2ad8a")
+ )
+ (segment
+ (start 72 169.85)
+ (end 74.54 169.85)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "e12273ce-b153-4302-b6d0-110ce71caed7")
+ )
+ (segment
+ (start 172 29.66)
+ (end 173.66 28)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "e3a781a6-a9a4-4959-a7ca-3ba24dc37108")
+ )
+ (segment
+ (start 128.5 54.84)
+ (end 173.66 54.84)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "ed6448bc-4741-4660-9c1e-4eacf5e427bf")
+ )
+ (segment
+ (start 79.72 117.78)
+ (end 82.22 117.78)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "f00fab83-7ea8-4356-bf27-9cd499889122")
+ )
+ (segment
+ (start 34.22 16.29)
+ (end 41.58 16.29)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "f44f893f-0232-4f3e-98a5-a847aa0f096f")
+ )
+ (segment
+ (start 67 138)
+ (end 67 164.85)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "f471460b-deb8-40e6-a2aa-663101b8f06b")
+ )
+ (segment
+ (start 125.4 51.74)
+ (end 128.5 54.84)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "f6cc7f34-e3ae-4324-af1f-6e0429c06c6e")
+ )
+ (segment
+ (start 100 128)
+ (end 100 162.23)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "fb4dfa84-521f-4377-8a62-ebe62637aa10")
+ )
+ (segment
+ (start 102.5 125.5)
+ (end 79.5 125.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "GND")
+ (uuid "fb9db726-49fe-4bbc-bad7-4229aaddae6c")
+ )
+ (segment
+ (start 125.4 46.4)
+ (end 117.78 38.78)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "VIN_12")
+ (uuid "45246944-8898-483b-8d1b-5656608e0047")
+ )
+ (segment
+ (start 103.56 49.2)
+ (end 125.4 49.2)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "VIN_12")
+ (uuid "59301748-136a-400b-8a50-9c593e6b5331")
+ )
+ (segment
+ (start 74 19.64)
+ (end 103.56 49.2)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "VIN_12")
+ (uuid "62b52c68-2560-4ee6-9950-df7981ba5989")
+ )
+ (segment
+ (start 117.78 38.78)
+ (end 117.78 16.18)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "VIN_12")
+ (uuid "804adc52-9355-4a4d-bfbd-5b4a9bd45fb5")
+ )
+ (segment
+ (start 125.4 49.2)
+ (end 125.4 46.4)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "VIN_12")
+ (uuid "c0d73174-2679-496e-9f55-294c733f06e2")
+ )
+ (segment
+ (start 84.5 107.5)
+ (end 84 107.5)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "14238b41-64f9-4a8d-af49-a8b84ca2f390")
+ )
+ (segment
+ (start 100.325 86.175)
+ (end 99.534009 86.175)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "1a3c9da3-5a1b-4eba-96ad-ff4ba474b992")
+ )
+ (segment
+ (start 95 62)
+ (end 95 79.100991)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "2371f815-2359-4564-86a1-ba424a1262d5")
+ )
+ (segment
+ (start 100.465991 83.635)
+ (end 101.125 84.294009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "25dd6446-bfcd-4b41-83ee-d3eb7e852fcb")
+ )
+ (segment
+ (start 131.67 61.67)
+ (end 95.33 61.67)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "2abc484b-0ae9-4e7a-b8df-c3770879035d")
+ )
+ (segment
+ (start 83.88 107.62)
+ (end 82.22 107.62)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "6391058c-51ca-4248-acc0-9dcd99107833")
+ )
+ (segment
+ (start 84.5 101.209009)
+ (end 84.5 107.5)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "8449fe32-cbac-4a4f-92c3-d663684ebd05")
+ )
+ (segment
+ (start 99.534009 86.175)
+ (end 84.5 101.209009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "a58807b9-4bc0-4aa8-b1cd-75107e316d5f")
+ )
+ (segment
+ (start 95 79.100991)
+ (end 99.534009 83.635)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "a7c5c60f-e866-40ff-a903-3eb2e22c155a")
+ )
+ (segment
+ (start 153.34 40)
+ (end 131.67 61.67)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "ac115480-61f0-4469-993e-c1f0f5bd911b")
+ )
+ (segment
+ (start 99.534009 83.635)
+ (end 100.465991 83.635)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "bec436f5-00e4-488d-83b8-7452b94ab9ed")
+ )
+ (segment
+ (start 101.125 85.375)
+ (end 100.325 86.175)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "c1d4a142-6e31-49dc-8523-731cce514761")
+ )
+ (segment
+ (start 101.125 84.294009)
+ (end 101.125 85.375)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "c9f39760-0676-4084-a021-c67ba33dd24c")
+ )
+ (segment
+ (start 84 107.5)
+ (end 83.88 107.62)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "cc279e0a-8df8-4f7b-a2af-95d2342c4ecd")
+ )
+ (segment
+ (start 95.33 61.67)
+ (end 95 62)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_N")
+ (uuid "cd05cbad-e2d6-4401-9475-637fc26efac1")
+ )
+ (segment
+ (start 166.04 37.46)
+ (end 163.5 40)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_A")
+ (uuid "a5fb1810-1e8b-4764-a408-a9fab42d0976")
+ )
+ (segment
+ (start 173.66 37.46)
+ (end 166.04 37.46)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PTT_A")
+ (uuid "b74ddd23-fa9f-4078-a63e-02d3b571506c")
+ )
+ (segment
+ (start 48 28.49)
+ (end 38.51 19)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_VBUS_NC")
+ (uuid "e363f956-dd3e-4358-8353-544ff280f281")
+ )
+ (segment
+ (start 48 36.5)
+ (end 48 28.49)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_VBUS_NC")
+ (uuid "e904887b-eaf5-4dea-a349-9cade0bf3f36")
+ )
+ (segment
+ (start 49.175 37.865)
+ (end 49.175 27.7949)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_DM")
+ (uuid "3a666cf1-be4a-4028-8fb0-7563af01f502")
+ )
+ (segment
+ (start 48 39.04)
+ (end 49.175 37.865)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_DM")
+ (uuid "aa976fb6-ed3c-4f4b-b7af-136396aa06c3")
+ )
+ (segment
+ (start 49.175 27.7949)
+ (end 39.3051 17.925)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_DM")
+ (uuid "c359cce6-417c-435f-9ca7-6e399995945f")
+ )
+ (segment
+ (start 37.085 17.925)
+ (end 36.01 19)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_DM")
+ (uuid "cddc5eeb-51b1-4806-a7e7-80fa2c262ddc")
+ )
+ (segment
+ (start 39.3051 17.925)
+ (end 37.085 17.925)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_DM")
+ (uuid "eca5cd1d-833e-4029-921b-013acbd44f04")
+ )
+ (segment
+ (start 34.01 27.59)
+ (end 34.01 19)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_DP")
+ (uuid "8db6e226-43c6-4398-bb56-f7cb3206514e")
+ )
+ (segment
+ (start 48 41.58)
+ (end 34.01 27.59)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "USB_DP")
+ (uuid "90b9a4a5-75d1-4098-a3e6-f56208600474")
+ )
+ (segment
+ (start 82.708604 75.725)
+ (end 81.396996 75.725)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "2291e855-fbd6-47b0-a57e-5765c5d9bcb9")
+ )
+ (segment
+ (start 83.039534 78.55)
+ (end 83.55 78.039534)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "3b918e69-d9e7-4c94-8527-e2c6d296043f")
+ )
+ (segment
+ (start 81.095 73.776996)
+ (end 81.396996 73.475)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "4c640bba-1723-4bea-a4a4-b5412a2c140e")
+ )
+ (segment
+ (start 83.55 76.566396)
+ (end 82.708604 75.725)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "555275f0-fe99-4833-aa9c-b7e628bc66cb")
+ )
+ (segment
+ (start 72 162.23)
+ (end 72 88.301936)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "a892bcc1-5c0c-423f-8374-756e7c81b44b")
+ )
+ (segment
+ (start 81.396996 73.475)
+ (end 88.715 73.475)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "ae93c8b8-09c6-4b7c-a586-1ce7fb660222")
+ )
+ (segment
+ (start 83.55 78.039534)
+ (end 83.55 76.566396)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "b665e400-7c99-446f-ab7d-0ca5efa73a55")
+ )
+ (segment
+ (start 81.095 75.423004)
+ (end 81.095 73.776996)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "d430eb39-f55d-47b9-b775-f9675b17a3d6")
+ )
+ (segment
+ (start 81.396996 75.725)
+ (end 81.095 75.423004)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "d68d1b3f-09c9-46ea-8ea0-b6a70d9df55a")
+ )
+ (segment
+ (start 88.715 73.475)
+ (end 100 84.76)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "dca9a9e9-0588-4714-82f2-e0a0593d9c62")
+ )
+ (segment
+ (start 81.751936 78.55)
+ (end 83.039534 78.55)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "dd7748fd-185c-4f44-ae94-38167a1893af")
+ )
+ (segment
+ (start 72 88.301936)
+ (end 81.751936 78.55)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "3V3")
+ (uuid "de11a525-04ac-4062-bb35-19f1f3755ec5")
+ )
+ (segment
+ (start 153.805991 38.875)
+ (end 154.465 39.534009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "0adc5ffa-1cd7-45d1-9d6b-b876b133d46e")
+ )
+ (segment
+ (start 141 164.77)
+ (end 100 164.77)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "38b7bb38-ed80-40ff-bd79-8067b61f7d9f")
+ )
+ (segment
+ (start 130.48 155.88)
+ (end 130.48 84.84)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "45ef52cf-a122-4620-919b-780daae3b57d")
+ )
+ (segment
+ (start 77.08 164.77)
+ (end 74.54 162.23)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "4a91765d-2f87-43ba-adf0-9cdda7b0db64")
+ )
+ (segment
+ (start 153.34 28)
+ (end 153.34 33.66)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "4e3f4a6d-369a-4433-aa97-daa7a6e3fede")
+ )
+ (segment
+ (start 130.48 84.84)
+ (end 120.24 74.6)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "63727845-5799-45f5-8eb4-9c66f11d820a")
+ )
+ (segment
+ (start 108.961396 68.178604)
+ (end 100 77.14)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "66e2079a-16f7-4c49-965f-52bf99a4b163")
+ )
+ (segment
+ (start 154.465 39.534009)
+ (end 154.465 40.465991)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "6abb8a35-1fc9-41e9-bf5b-c38498cc4505")
+ )
+ (segment
+ (start 153.34 28)
+ (end 153.34 17.62)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "73dc54e2-be02-4fc3-9b69-c2631c98c180")
+ )
+ (segment
+ (start 154.465 40.465991)
+ (end 126.752387 68.178604)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "7dd94637-cffe-4a00-be0c-6ea93eaa9607")
+ )
+ (segment
+ (start 148.125 38.875)
+ (end 153.805991 38.875)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "8d001031-4955-4f41-95e8-06b7340cb908")
+ )
+ (segment
+ (start 153.34 33.66)
+ (end 148.125 38.875)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "a830af76-0da9-486c-9223-d433c5815079")
+ )
+ (segment
+ (start 132.11 155.88)
+ (end 141 164.77)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "a9feb9b0-9f62-45a5-b18a-a14cc4691397")
+ )
+ (segment
+ (start 130.48 155.88)
+ (end 132.11 155.88)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "be95502c-6f92-4fdd-9d2c-a77875ec1b4f")
+ )
+ (segment
+ (start 141.91 164.77)
+ (end 141 164.77)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "c2179af5-25aa-4bfb-a7dd-51a8e6551500")
+ )
+ (segment
+ (start 160.96 145.72)
+ (end 141.91 164.77)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "d8942ade-1c81-4404-9897-55adb4df7423")
+ )
+ (segment
+ (start 153.34 17.62)
+ (end 145.72 10)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "df4e3abc-9dc8-43fa-9f35-12af4417124c")
+ )
+ (segment
+ (start 100 164.77)
+ (end 77.08 164.77)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "e708c603-ed99-4dc6-9703-07d965ac83cb")
+ )
+ (segment
+ (start 126.752387 68.178604)
+ (end 108.961396 68.178604)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_OR")
+ (uuid "ead76eb4-2655-4a81-bc1d-a3edf878657d")
+ )
+ (segment
+ (start 166.605402 89.425)
+ (end 178 78.030402)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "030c85f0-b8ca-429c-9d80-fe29715eee0d")
+ )
+ (segment
+ (start 37.5 29)
+ (end 52 29)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "1ecf9410-33fb-427a-8880-1f55d475b501")
+ )
+ (segment
+ (start 52 29)
+ (end 66.68 43.68)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "2357156f-fae1-4fb5-9b12-b40500693877")
+ )
+ (segment
+ (start 66.68 43.68)
+ (end 66.68 43.82)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "44327a52-8e76-48fb-abb2-06f7713851da")
+ )
+ (segment
+ (start 22 44.5)
+ (end 37.5 29)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "44b0cb11-ac11-4271-93f1-9c5c2cc54a16")
+ )
+ (segment
+ (start 120.24 74.6)
+ (end 135.065 89.425)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "5bb6eb0c-6e78-4905-beb8-83c351957ec8")
+ )
+ (segment
+ (start 178 21.5)
+ (end 159.84 21.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "6d5c6846-ad53-43e8-ac14-b050a89b1eef")
+ )
+ (segment
+ (start 159.84 21.5)
+ (end 153.34 28)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "88d7f3e1-1b5e-467b-ab09-10627d8ec890")
+ )
+ (segment
+ (start 178 78.030402)
+ (end 178 21.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "94e47b4d-f91b-4f70-a7f9-8b3c0b46eda4")
+ )
+ (segment
+ (start 22 76)
+ (end 22 44.5)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "9bcdc5f3-4241-4eee-bfb2-e31af2964c0a")
+ )
+ (segment
+ (start 66.68 43.82)
+ (end 100 77.14)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "a4ce677b-3fd7-4be3-98a1-bf99c42d5ee7")
+ )
+ (segment
+ (start 135.065 89.425)
+ (end 166.605402 89.425)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "bfe33a28-8336-431e-b743-9071a2eff534")
+ )
+ (segment
+ (start 22 68.458299)
+ (end 22 76)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V_OR")
+ (uuid "cd155366-cdd9-4b2d-8e1c-a78e4c8f8294")
+ )
+ (segment
+ (start 84 80.5)
+ (end 84 76.38)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_3V3")
+ (uuid "0cc904f0-620d-45fd-8e94-cb420e8c060b")
+ )
+ (segment
+ (start 72 164.77)
+ (end 73.365 163.405)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_3V3")
+ (uuid "0e39511c-e931-40e7-a2c3-834fc3148d94")
+ )
+ (segment
+ (start 73.365 163.405)
+ (end 73.365 89.196936)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_3V3")
+ (uuid "47c791b8-e721-4c22-8cf9-2fb82833cd57")
+ )
+ (segment
+ (start 73.365 89.196936)
+ (end 81.561936 81)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_3V3")
+ (uuid "694f372f-1bba-43b3-b636-a53fc6c32f69")
+ )
+ (segment
+ (start 83.5 81)
+ (end 84 80.5)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_3V3")
+ (uuid "846bff32-c39b-45e2-9ee2-de9c3a2098a7")
+ )
+ (segment
+ (start 81.561936 81)
+ (end 83.5 81)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_3V3")
+ (uuid "b0325d5c-fc25-43af-ac8d-151afe64c14c")
+ )
+ (segment
+ (start 84 76.38)
+ (end 82.22 74.6)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_3V3")
+ (uuid "fcf77a22-98e6-4168-b846-f88f6b18ec95")
+ )
+ (segment
+ (start 74.54 164.77)
+ (end 77.08 167.31)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_5V")
+ (uuid "459145a5-905e-49d8-a45e-b6c7ab55c35e")
+ )
+ (segment
+ (start 77.08 167.31)
+ (end 100 167.31)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SDA_5V")
+ (uuid "cebe8d76-c225-4940-877c-4bc0b07cb232")
+ )
+ (segment
+ (start 71.81 167.5)
+ (end 69 167.5)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SCL_3V3")
+ (uuid "0053f496-5201-4950-8318-d42f03a25844")
+ )
+ (segment
+ (start 72 167.31)
+ (end 71.81 167.5)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SCL_3V3")
+ (uuid "007f1c3b-7d04-4f57-ae72-5ff8b39b58ae")
+ )
+ (segment
+ (start 69 90.36)
+ (end 82.22 77.14)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SCL_3V3")
+ (uuid "243a9e51-8e45-46f2-9fe5-84259307b9e8")
+ )
+ (segment
+ (start 69 167.5)
+ (end 69 90.36)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SCL_3V3")
+ (uuid "409f89fc-1cdd-4c02-9bda-bd695931a9e8")
+ )
+ (segment
+ (start 74.54 167.31)
+ (end 77.08 169.85)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SCL_5V")
+ (uuid "58db3475-99d0-42c2-94c7-677280ddc6e0")
+ )
+ (segment
+ (start 77.08 169.85)
+ (end 100 169.85)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "I2C_SCL_5V")
+ (uuid "7f726cc2-c82f-4538-807b-11cf7bb2a4a1")
+ )
+ (segment
+ (start 166.04 61.46)
+ (end 163.5 64)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_A")
+ (uuid "4df49738-f753-429e-8817-0ef76a66ec5e")
+ )
+ (segment
+ (start 173.66 61.46)
+ (end 166.04 61.46)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_A")
+ (uuid "8bcb5613-55fa-4231-9188-761bcf5773b5")
+ )
+ (segment
+ (start 166.04 25.46)
+ (end 173.66 25.46)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PWR_A")
+ (uuid "3fb4cec3-f170-4b85-9439-2fed2cf5a297")
+ )
+ (segment
+ (start 166.04 25.46)
+ (end 163.5 28)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_PWR_A")
+ (uuid "98999d5c-9029-44cd-aaef-480b5384f3ff")
+ )
+ (segment
+ (start 131.82 47.86)
+ (end 131.82 28.9)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_REG")
+ (uuid "7a91c1d4-07dd-4b17-aa12-46dcb5b891d2")
+ )
+ (segment
+ (start 125.4 54.28)
+ (end 131.82 47.86)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "+5V_REG")
+ (uuid "98b0a8ab-729a-4759-afcb-d746fb61cd2e")
+ )
+ (segment
+ (start 79 105.76)
+ (end 82.22 102.54)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_DRV")
+ (uuid "0a0deada-7ed2-4640-b7a0-811a79cbedee")
+ )
+ (segment
+ (start 79.1 125.4)
+ (end 79 125.5)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_DRV")
+ (uuid "6a5d96bf-b1ec-4c2c-8b61-abddd87b8664")
+ )
+ (segment
+ (start 79 125.5)
+ (end 79 105.76)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_DRV")
+ (uuid "6a902968-4a70-4f8f-8006-26983b461686")
+ )
+ (segment
+ (start 125.4 125.4)
+ (end 79.1 125.4)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_DRV")
+ (uuid "c28f6e9a-db4b-449e-8928-af1b26592fb2")
+ )
+ (segment
+ (start 135.56 88.329009)
+ (end 120.705991 73.475)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_B")
+ (uuid "196c7a9e-ec60-4626-b8bf-6fbd6fedd77d")
+ )
+ (segment
+ (start 120.705991 73.475)
+ (end 119.774009 73.475)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_B")
+ (uuid "6d1a9067-d360-4256-9a40-a19e9c3bed2b")
+ )
+ (segment
+ (start 119.115 101.335)
+ (end 121.59 103.81)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_B")
+ (uuid "6e273fe4-6c12-4715-beec-438b2aca70c7")
+ )
+ (segment
+ (start 119.774009 73.475)
+ (end 119.115 74.134009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_B")
+ (uuid "abe4b4be-8759-47aa-af59-990a5b494fe7")
+ )
+ (segment
+ (start 135.56 125.4)
+ (end 135.56 88.329009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_B")
+ (uuid "cbe010a6-a645-4b71-bea4-f1c03e32f3f7")
+ )
+ (segment
+ (start 119.115 74.134009)
+ (end 119.115 101.335)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "PTT_B")
+ (uuid "daf868f3-9ae6-464f-b4b2-f52790f325f1")
+ )
+ (segment
+ (start 112.813604 83.697387)
+ (end 100.465991 96.045)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "15f275a8-6990-4d21-a309-faa7163a526b")
+ )
+ (segment
+ (start 141.919598 70.95)
+ (end 112.813604 70.95)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "1d2f58c9-c4d6-46a6-8f4e-12f57776a1bf")
+ )
+ (segment
+ (start 98.5 97.079009)
+ (end 98.5 98.010991)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "2f17d5de-4cbd-4982-8dab-29cad792c613")
+ )
+ (segment
+ (start 99.534009 96.045)
+ (end 98.5 97.079009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "366cd0c4-85f0-49b2-910b-94158795941d")
+ )
+ (segment
+ (start 167.405 76.474009)
+ (end 167.405 93.705402)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "41fbecf7-d18c-46e3-b3ad-7b5e87f1c25e")
+ )
+ (segment
+ (start 153.34 52)
+ (end 153.34 62.409009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "51437ca1-2e10-48f0-ba01-1c04531b09e2")
+ )
+ (segment
+ (start 167.405 93.705402)
+ (end 166.605402 94.505)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "57ee7101-6c28-4928-9bad-a329b6d57048")
+ )
+ (segment
+ (start 81.754009 113.825)
+ (end 81.095 113.165991)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "763fd624-cb4d-41a4-9689-21fc4243687b")
+ )
+ (segment
+ (start 112.813604 70.95)
+ (end 112.813604 83.697387)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "83283a3d-b0ca-48de-9e2e-7fb56b120bcd")
+ )
+ (segment
+ (start 100.465991 96.045)
+ (end 99.534009 96.045)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "8bccc101-c5b0-4ccb-9995-56762b10d53e")
+ )
+ (segment
+ (start 81.095 113.165991)
+ (end 81.095 111.285)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "965bf79d-7e58-4228-a0e7-b20e2d329fba")
+ )
+ (segment
+ (start 166.605402 94.505)
+ (end 165.474598 94.505)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "9cc76abd-082e-4d50-9ba8-820d8d406b6c")
+ )
+ (segment
+ (start 82.685991 113.825)
+ (end 81.754009 113.825)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "9f5e4eb8-800d-458a-a1e9-5d15666afab8")
+ )
+ (segment
+ (start 81.095 111.285)
+ (end 82.22 110.16)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "b64e6463-cfb4-4dea-92e9-bd29e51cd71f")
+ )
+ (segment
+ (start 153.34 62.409009)
+ (end 167.405 76.474009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "d7db7c2a-c281-4259-b234-04ae8aec42aa")
+ )
+ (segment
+ (start 98.5 98.010991)
+ (end 82.685991 113.825)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "e8e504ed-8fb5-4a4b-8f3c-fafcf5d9b69b")
+ )
+ (segment
+ (start 165.474598 94.505)
+ (end 141.919598 70.95)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_N")
+ (uuid "f36e1fe9-a8fe-4489-a673-0dbf4683c1cd")
+ )
+ (segment
+ (start 101.575 81.288604)
+ (end 112.931802 69.931802)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "0419cc5a-545f-43ef-814a-05381d3700a2")
+ )
+ (segment
+ (start 100.205 93.795)
+ (end 101.575 92.425)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "1a738a99-d3c0-4a15-baf9-172dd257e2fa")
+ )
+ (segment
+ (start 99.534009 93.795)
+ (end 100.205 93.795)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "4572ccba-ad34-4a29-a91d-87bcf4656f52")
+ )
+ (segment
+ (start 153.34 66.523604)
+ (end 153.34 64)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "568c26ed-57d1-44ec-ad4c-d6f1f671c9d8")
+ )
+ (segment
+ (start 98.875 94.454009)
+ (end 99.534009 93.795)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "7d75532a-731a-4597-af59-c23afcb06dd8")
+ )
+ (segment
+ (start 82.22 112.7)
+ (end 98.875 96.045)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "974671df-ada8-4f60-9615-e6f343081748")
+ )
+ (segment
+ (start 149.931802 69.931802)
+ (end 153.34 66.523604)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "9d0cd30e-eac3-4daf-9cfe-b972f41457b7")
+ )
+ (segment
+ (start 98.875 96.045)
+ (end 98.875 94.454009)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "bece445f-353e-46b1-8b34-cbb7cdd4b096")
+ )
+ (segment
+ (start 112.931802 69.931802)
+ (end 149.931802 69.931802)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "def92285-4e76-4b26-be7c-76193400eea6")
+ )
+ (segment
+ (start 101.575 92.425)
+ (end 101.575 81.288604)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_TXRX_N")
+ (uuid "fad54fda-1385-4391-b550-d0df8830d4ff")
+ )
+ (segment
+ (start 142.08 23.8)
+ (end 155.88 10)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V")
+ (uuid "3dc7d3e8-d997-4d12-85d6-3b9ad1721113")
+ )
+ (segment
+ (start 133.02 23.8)
+ (end 142.08 23.8)
+ (width 0.25)
+ (layer "B.Cu")
+ (net "+5V")
+ (uuid "daa35d4d-6b82-4412-8b00-47ee90576721")
+ )
+ (segment
+ (start 173.66 49.46)
+ (end 166.04 49.46)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_A")
+ (uuid "c3e11a10-cfe8-4bdc-b5e2-00689d2a66a9")
+ )
+ (segment
+ (start 166.04 49.46)
+ (end 163.5 52)
+ (width 0.25)
+ (layer "F.Cu")
+ (net "LED_DCD_A")
+ (uuid "f92d7a47-df8a-4298-8f98-04d2b79aeba4")
+ )
+ (embedded_fonts no)
+)
diff --git a/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pro b/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pro
new file mode 100644
index 0000000..e0cffe3
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_pro
@@ -0,0 +1,683 @@
+{
+ "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": 1.0,
+ "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-s1224.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"
+ }
+ ]
+ },
+ "pcbnew": {
+ "last_paths": {
+ "gencad": "",
+ "idf": "",
+ "netlist": "./",
+ "plot": "",
+ "specctra_dsn": "t-modem-s1224.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-s1224.kicad_sch",
+ "name": "t-modem-s1224",
+ "uuid": "00000000-0000-0000-0000-000000000000"
+ }
+ ],
+ "used_designators": "",
+ "variants": []
+ },
+ "sheets": [
+ [
+ "e2b1c8a0-0000-4000-8000-000000000001",
+ ""
+ ]
+ ],
+ "text_variables": {
+ "PROJECT": "T-Modem-s1224",
+ "VERSION": "1.0-prototype"
+ },
+ "tuning_profiles": {
+ "meta": {
+ "version": 0
+ },
+ "tuning_profiles_impedance_geometric": []
+ }
+}
diff --git a/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_sch b/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_sch
new file mode 100644
index 0000000..b154da0
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_sch
@@ -0,0 +1,3986 @@
+(kicad_sch
+ (version 20241209)
+ (generator "eeschema")
+ (generator_version "10.0")
+ (uuid "a5eb3280-2789-4cbf-b8c9-0e2eeea741d8")
+ (paper "A3")
+ (title_block
+ (title "T-Modem-s1224")
+ (date "2026-07-21")
+ (rev "1.0-upcoming1")
+ (company "ngteq GPLv3 AS-IS standard reference")
+ (comment 1 "s1224 softmodem · no chip/socket/XTAL stuffed · 12V+buck · USB data-only")
+ (comment 2 "Chip symbols U_MODEM/Y1/Y2 = DNP · U1.9=GP6/AF_TX · GP7/GP8 NC")
+ )
+ (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-s1224 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 no)
+ (on_board no)
+ (dnp 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 no)
+ (on_board no)
+ (dnp 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 no)
+ (on_board no)
+ (dnp 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 no)
+ (on_board no)
+ (dnp 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-s1224/t-modem-s1224.kicad_sym b/hardware/kicad/t-modem-s1224/t-modem-s1224.kicad_sym
new file mode 100644
index 0000000..df0b12a
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/t-modem-s1224.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-s1224/t-modem-s1224.rules b/hardware/kicad/t-modem-s1224/t-modem-s1224.rules
new file mode 100644
index 0000000..7c1d168
--- /dev/null
+++ b/hardware/kicad/t-modem-s1224/t-modem-s1224.rules
@@ -0,0 +1,58 @@
+
+(rules PCB t-modem-s1224.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"
+ BOOTSEL "AF_TX" "AF_RX" "PTT_OC" GND "VIN_12" "LED_PTT_N" "LED_PTT_A"
+ "USB_VBUS_NC" "USB_DM" "USB_DP" "3V3" "+5V_OR" "I2C_SDA_3V3" "I2C_SDA_5V" "I2C_SCL_3V3"
+ "I2C_SCL_5V" "LED_TXRX_A" "LED_PWR_A" "+5V_REG" "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/s1224.ini.example b/share/s1224.ini.example
new file mode 100644
index 0000000..3c57c33
--- /dev/null
+++ b/share/s1224.ini.example
@@ -0,0 +1,27 @@
+# T-Modem-s1224 operator INI example
+# Load via CDC: SET … / SAVE (or flash defaults in firmware/s1224/config/default.ini)
+# SET device_id=s1224
+# SAVE
+# 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.
+
+[display]
+starting=s1224 is starting
+ready=s1224 is ready
+fault=s1224 is fault
+sending=s1224 is sending
+signal=s1224 signal
+packet=s1224 packet
+power=s1224 power
+idle=s1224 idle
+
+[terminal]
+callsign=
+device_id=s1224
+quiet=1
+
+[sense]
+cdt_active_high=0
+packet_hold_ms=500
+packet_edge_min=4
+packet_window_ms=50
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com