├── .gitignore
├── .gitmodules
├── README.md
├── docs
├── button.png
├── connecting.gif
├── connecting_windows.gif
├── demo_screenshot.png
├── demovideo.mp4
├── header_pic.jpg
├── ibom.html
├── ibom_preview_click.png
├── stand.dxf
├── title.BMP
├── youtube_extension_settings.png
└── zoom_controller_notifications.ahk
├── pcb
├── fp-lib-table
├── sym-lib-table
├── zoom_pad.kicad_pcb
├── zoom_pad.kicad_prl
├── zoom_pad.kicad_pro
└── zoom_pad.kicad_sch
└── software
├── .gitignore
├── .vscode
└── extensions.json
├── include
└── README
├── lib
└── README
├── platformio.ini
├── src
├── bluetooth.h
├── hardware.h
└── main.cpp
└── test
└── README
/.gitignore:
--------------------------------------------------------------------------------
1 | pcb/bom
2 | stencils
3 | ignore
4 | pcb/zoom_pad-backups
5 | software/.vscode/settings.json
6 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "pcb/libs"]
2 | path = pcb/libs
3 | url = https://github.com/alustig3/kicad-libraries.git
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 | 
3 | # Table of Contents
4 |
5 | - [What is this?](#what-is-this)
6 | - [Demo Video](#demo-video)
7 | - [How do I use it?](#how-do-i-use-it)
8 | - [Turning on](#turning-on)
9 | - [Connecting to Bluetooth](#connecting-to-bluetooth)
10 | - [Turning off](#turning-off)
11 | - [Disconnecting Bluetooth](#disconnecting-bluetooth)
12 | - [Adjust volume](#adjust-volume)
13 | - [Controlling Zoom!](#controlling-zoom)
14 | - [Switching modes](#switching-modes)
15 | - [Getting fancy](#getting-fancy)
16 | - [Desktop notifications](#desktop-notifications)
17 | - [YouTube controller](#youtube-controller)
18 | - [How do I make one?](#how-do-i-make-one)
19 | - [Stand](#stand)
20 | - [Electronics](#electronics)
21 | - [Additional hardware](#additional-hardware)
22 | - [Software](#software)
23 | - [Feedback](#feedback)
24 | # What is this?
25 | I, like many others, found myself using Zoom video conference software a lot this past year.
26 | I created this device to make interacting with Zoom faster and more pleasant.
27 |
28 | - The Zoom Controller connects with your computer over Bluetooth and emulates keyboard key presses
29 | - Works with Mac and Windows
30 | - Five buttons are setup to emulate the default keyboard shortcuts in Zoom
31 | - A knob controls the computer's media volume
32 | - Powered by two AA batteries
33 | - The circuit board mounts to a bent piece of 12 Gauge steel
34 | - Bonus features include desktop notifications and YouTube Mode (see [getting fancy](#getting-fancy))
35 |
36 | ## Demo video
37 |
42 |
43 | # How do I use it?
44 | - [Turning on](#turning-on)
45 | - [Connecting to Bluetooth](#connecting-to-bluetooth)
46 | - [Turning off](#turning-off)
47 | - [Disconnecting Bluetooth](#disconnecting-bluetooth)
48 | - [Controlling Zoom!](#controlling-zoom)
49 | - [Switching modes](#switching-modes)
50 |
51 | ## Turning on
52 | Press and hold the **VOLUME** knob to turn on.
53 | You can let go of the knob as soon as you see it light up red.
54 | The knob will "breathe" red light while it is trying to connect to Bluetooth. Once connected, the knob will turn green.
55 |
56 | The controller will automatically turn off after 20 seconds attempting and failing to connect.
57 |
58 | ## Connecting to Bluetooth
59 | If it is the first time using Zoom Controller, you will need to add it your computer's list of Bluetooth devices. Once added, the Zoom Controller will automatically connect when turned on and within range of your computer.
60 | ### Mac
61 | - Open System Preferences -> Bluetooth
62 | - [Turn on](#turning-on) Zoom Controller
63 | - When it appears in your list of Bluetooth devices, click connect. Once connected, the light will turn green, and you're good to go!
64 | - There may be a "Keyboard Setup Assistant" window that pops up asking you to press a key to identify your keyboard. You can ignore this and just close the window.
65 |
66 | 
67 |
68 | ### Windows
69 | - Search for "bluetooth" in the search bar and select "Bluetooth and other devices settings"
70 | - At the top, click "Add Bluetooth or other device"
71 | - Click "Bluetooth - Mice, keyboards, pens or other kinds of Bluetooth devices"
72 | - Turn on the Zoom Controller by pressing the **VOLUME** knob until a red light appears
73 | - Zoom controller should appear in the "Add a device" list
74 |
75 | 
76 |
77 | ## Turning off
78 | Press and hold the **LEAVE** button. The volume knob's light will turn off when the controller is powered off.
79 |
80 | There is an idle clock always counting.
81 | Every time you press a button or rotate the knob, the idle clock is reset to 0.
82 | If the idle clock reaches 60 minutes, the controller will automatically turn itself off to save battery.
83 |
84 | ## Disconnecting Bluetooth
85 | The Zoom Controller can only be connected to one device at a time. If you want to use it with a different computer it is important that you first remove it from its current computer's Bluetooth device list.
86 | ### Mac
87 | - Open to System Prefrences -> Bluetooth
88 | - Right click on the Zoom Controller and select "Remove"
89 | ### Windows
90 | - Search for "bluetooth" in the search bar and select "Bluetooth and other devices settings"
91 | - Under the "Mouse, keyboard, & pen" click "Zoom Controller" and then click "Remove device"
92 |
93 |
94 | ## Controlling Zoom!
95 |
96 | ### Adjust volume
97 | Rotate the **VOLUME** knob clockwise to increase volume, counterclockwise to decrease volume.
98 |
99 | ### Send Shortcuts on Mac
100 | The five buttons are setup to execute the following Zoom functions by emulating their default keyboard shortcuts.
101 |
102 | | Button | Zoom Function | Emulated Mac Keypress |
103 | |--------|---------------------------|-------------------------------------------------|
104 | | Mic | mute/unmute microphone | shift + command + a |
105 | | Camera | start/stop video | shift + command + v |
106 | | Share | start/stop screen sharing | shift + command + s |
107 | | View | speaker/gallery view | shift + command + w |
108 | | Leave* | leave meeting | command + w, followed by Return to confirm leave |
109 |
110 | ### Send Shortcuts on Windows
111 |
112 | | Button | Zoom Function | Emulated Windows Keypress |
113 | |---------------------|---------------------------|--------------------------------------------|
114 | | Mic | mute/unmute microphone | alt + a |
115 | | Camera | start/stop video | alt + v |
116 | | Share | start/stop screen sharing | alt + s |
117 | | View (single press) | speaker view | alt + F1 |
118 | | View (double press) | gallery view | alt + F2 |
119 | | Leave* | leave meeting | alt + q, folowed by Enter to confirm leave |
120 |
121 | **Zoom Controller will automatically turn off 8 seconds after pressing **LEAVE**, unless you keep it awake by pressing a button or rotating the knob within those 8 seconds.
122 | The knob will blink green indicating that the controller is about to turn itself off.*
123 |
124 | ## Switching modes
125 | Keyboard shortcuts sent by Zoom Controller depend on which operating system and which application is being used.
126 | Because of this, there are 4 different modes that Zoom controller can be in.
127 | There are 2 operating system modes (Mac, Windows) and 2 application modes (Zoom, YouTube*).
128 |
129 | **see [YouTube Controller](#youtube-controller)*
130 |
131 | ### Mac mode
132 | - Press down the **VOLUME** button.
133 | - While holding the **VOLUME** button, press and hold the **MIC** button for 2 seconds
134 | - The **VOLUME** button will blink **3** times indicating it is now in Mac mode. You can release both buttons.
135 |
136 | ### Windows mode
137 | - Press down the **VOLUME** button.
138 | - While holding the **VOLUME** button, press and hold the **CAMERA** button for 2 seconds
139 | - The **VOLUME** button will blink **7** times indicating it is now in Windows mode. You can release both buttons.
140 |
141 | ### Switch into Zoom mode
142 | - Press and hold the VOLUME knob
143 | - Press and release the MIC button
144 |
145 | ### Switch into YouTube mode
146 | - Press and hold the VOLUME knob
147 | - Press and release the CAMERA button
148 |
149 | # Getting fancy
150 | ## Desktop notifications
151 | You can enable Zoom Controller notifications show up on your desktop. The following notifications will appear when relevant:
152 | - "Mac Mode"
153 | - "Windows Mode"
154 | - "Zoom Mode"
155 | - "YouTube Mode"
156 | - "Controller has been idle for awhile and will soon turn itself off. Press any button or rotate knob to keep awake"
157 | ### Mac notifications setup
158 | - Download [Hammerspoon](https://www.hammerspoon.org/).
159 | - Click the Hammerspooon menu bar icon and select "Open Config".
160 | - Add the following to your `init.lua` file:
161 | ```lua
162 | hs.hotkey.bind({"cmd", "alt", "ctrl"}, "F1", function()
163 | hs.alert.show("Mac Mode")
164 | end)
165 |
166 | hs.hotkey.bind({"cmd", "alt", "ctrl"}, "F2", function()
167 | hs.alert.show("Windows Mode")
168 | end)
169 |
170 | hs.hotkey.bind({"cmd","alt","ctrl"}, "F3", function()
171 | hs.notify.new({title="Zoom Controller Idle", informativeText="Controller will turn off soon\nPress any key to keep awake"}):send()
172 | end))
173 |
174 | hs.hotkey.bind({"cmd", "alt", "ctrl"}, "F4", function()
175 | hs.alert.show("Zoom Mode")
176 | end)
177 |
178 | hs.hotkey.bind({"cmd", "alt", "ctrl"}, "F5", function()
179 | hs.alert.show("YouTube Mode")
180 | end)
181 |
182 | ```
183 | - Save your changes to the `inti.lua` file then click the Hammerspoon menu bar icon and select "Reload Config"
184 | ### Windows notifications setup
185 | - Download [AutoHotkey](https://www.autohotkey.com/)
186 | - Download this [zoom_controller_notifications.ahk](docs/zoom_controller_notifications.ahk) script file
187 | - Once the script file is downloaded, double click it to begin running the script
188 | - If you want the script to automatically run every time you turn on your computer, follow instructions [here](https://www.autohotkey.com/docs/FAQ.htm#Startup)
189 |
190 | ## YouTube controller
191 | I've found this device to be super useful for watching online videos.
192 |
193 | ### Installation
194 | - Add an extension called **Video Speed Controller** to your web browser
195 | - [Chrome extension](https://chrome.google.com/webstore/detail/video-speed-controller/nffaoalbilbmmfgbnbgppjihopabppdk)
196 | - [Firefrox extension](https://addons.mozilla.org/en-US/firefox/addon/videospeed/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search)
197 |
198 | ### Controlling YouTube
199 | #### Send Shortcuts
200 | | Button | YouTube Function | Emulated Keypress |
201 | |--------|-------------------|-------------------|
202 | | Mic | | |
203 | | Camera | rewind 10s | z |
204 | | Share | fast forward 10s | x |
205 | | View | toggle fullscreen | f |
206 | | Leave | play/pause | spacebar |
207 |
208 | #### Adjust playback speed
209 | - Increase/decrease the video playback speed by rotating the VOLUME knob clockwise/counterclockwise
210 | - Toggle between 1X speed and your adjusted playback speed by clicking the VOLUME knob
211 | #### Adjust Volume
212 | - Increase/decrease the volume by pressing and holding down MIC then rotating the VOLUME knob clockwise/counterclockwise.
213 |
214 | # How do I make one?
215 | ## Stand
216 | - File for lasercutting: [stand.dxf](https://alustig3.github.io/zoom-controller/stand.dxf)
217 | - 0.1" thick (12Ga) steel cut and bent at https://www.oshcut.com/
218 |
219 | ## Electronics
220 | ### Bill of Materials
221 | | Qty | Reference | Description | Value/MPN |
222 | |-----|--------------------|-------------------|--------------------------------------------------------------------------------------------------------------|
223 | | 1 | BT1 | Battery Holder | [2462](https://www.digikey.com/product-detail/en/keystone-electronics/2466/36-2466-ND/303815) |
224 | | 1 | C1 | 0805 Capacitor | 10nF |
225 | | 1 | D1 | Schottky Diode | [BAT54C](http://www.diodes.com/_files/datasheets/ds11005.pdf) |
226 | | 2 | H3, H4 | Threaded Standoff | [4207](https://www.adafruit.com/product/4207) |
227 | | 1 | Q1 | P-Channel MOSFET | [FDN340P](https://www.digikey.com/products/en?keywords=FDN340PCT-ND) |
228 | | 1 | Q2 | N-Channel MOSFET | [BSS123](https://www.digikey.com/products/en?keywords=BSS123LT1GOSCT-ND) |
229 | | 1 | R1 | 0805 Resistor | 100KΩ |
230 | | 1 | R2 | 0805 Resistor | 10KΩ |
231 | | 1 | R3 | 0805 Resistor | 330Ω |
232 | | 1 | R4 | 0805 Resistor | 1MΩ |
233 | | 5 | S1, S2, S3, S4, S5 | Tactile Button | [DD-15326](https://www.sparkfun.com/products/15326) |
234 | | 1 | SW1 | Rotary Encoder | [COM-15140](https://www.sparkfun.com/products/15140) |
235 | | 1 | U1 | Microcontroller | [ESP32-WROOM-32E](https://www.digikey.com/en/products/detail/espressif-systems/ESP32-WROOM-32E-4MB/11613125) |
236 |
237 |
238 |
243 |
244 | ## Additional hardware
245 | - 6mm long M3 x 0.5mm screws: https://www.mcmaster.com/92095A179/
246 | - Clear plastic knob for rotary encoder: https://www.sparkfun.com/products/10597
247 |
248 | ## Software
249 | The code was developed using [PlatformIO](https://docs.platformio.org/en/latest/boards/espressif32/esp32dev.html).
250 | An [ESP-PROG](https://www.digikey.com/en/products/detail/espressif-systems/ESP-PROG/10259352?s=N4IgTCBcDaIKYGcAOBaJAnA9gcxAXQF8g) was used to program the ESP32 microcontroller.
251 | You should be able to use the platform.ini file from this repository, you'll just need to change the upload port.
252 | The platform.ini will automatically download the requisite [ESP32-BLE-Keyboard](https://github.com/T-vK/ESP32-BLE-Keyboard) library and ESP32 and Arduino frameworks.
253 | # Feedback
254 | If people are interested, I may consider buying some parts in bulk and selling the controllers on [Tindie](https://www.tindie.com/) or [Etsy](https://www.etsy.com/) ¯\\\_(ツ)_/¯
255 |
256 | If you have questions, comments, or are interested in buying a Zoom Controller:
257 |
258 |
--------------------------------------------------------------------------------
/docs/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/button.png
--------------------------------------------------------------------------------
/docs/connecting.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/connecting.gif
--------------------------------------------------------------------------------
/docs/connecting_windows.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/connecting_windows.gif
--------------------------------------------------------------------------------
/docs/demo_screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/demo_screenshot.png
--------------------------------------------------------------------------------
/docs/demovideo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/demovideo.mp4
--------------------------------------------------------------------------------
/docs/header_pic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/header_pic.jpg
--------------------------------------------------------------------------------
/docs/ibom_preview_click.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/ibom_preview_click.png
--------------------------------------------------------------------------------
/docs/stand.dxf:
--------------------------------------------------------------------------------
1 | 0
2 | SECTION
3 | 2
4 | HEADER
5 | 9
6 | $INSUNITS
7 | 70
8 | 4
9 | 9
10 | $ACADVER
11 | 1
12 | AC1014
13 | 9
14 | $HANDSEED
15 | 5
16 | FFFF
17 | 0
18 | ENDSEC
19 | 0
20 | SECTION
21 | 2
22 | TABLES
23 | 0
24 | TABLE
25 | 2
26 | VPORT
27 | 5
28 | 8
29 | 100
30 | AcDbSymbolTable
31 | 0
32 | ENDTAB
33 | 0
34 | TABLE
35 | 2
36 | LTYPE
37 | 5
38 | 5
39 | 100
40 | AcDbSymbolTable
41 | 0
42 | LTYPE
43 | 5
44 | 14
45 | 100
46 | AcDbSymbolTableRecord
47 | 100
48 | AcDbLinetypeTableRecord
49 | 2
50 | BYBLOCK
51 | 70
52 | 0
53 | 0
54 | LTYPE
55 | 5
56 | 15
57 | 100
58 | AcDbSymbolTableRecord
59 | 100
60 | AcDbLinetypeTableRecord
61 | 2
62 | BYLAYER
63 | 70
64 | 0
65 | 0
66 | ENDTAB
67 | 0
68 | TABLE
69 | 2
70 | LAYER
71 | 5
72 | 2
73 | 100
74 | AcDbSymbolTable
75 | 70
76 | 2
77 | 0
78 | LAYER
79 | 5
80 | 50
81 | 100
82 | AcDbSymbolTableRecord
83 | 100
84 | AcDbLayerTableRecord
85 | 2
86 | 0
87 | 70
88 | 0
89 | 6
90 | CONTINUOUS
91 | 0
92 | ENDTAB
93 | 0
94 | TABLE
95 | 2
96 | STYLE
97 | 5
98 | 3
99 | 100
100 | AcDbSymbolTable
101 | 70
102 | 1
103 | 0
104 | STYLE
105 | 5
106 | 11
107 | 100
108 | AcDbSymbolTableRecord
109 | 100
110 | AcDbTextStyleTableRecord
111 | 2
112 | STANDARD
113 | 70
114 | 0
115 | 0
116 | ENDTAB
117 | 0
118 | TABLE
119 | 2
120 | VIEW
121 | 5
122 | 6
123 | 100
124 | AcDbSymbolTable
125 | 70
126 | 0
127 | 0
128 | ENDTAB
129 | 0
130 | TABLE
131 | 2
132 | UCS
133 | 5
134 | 7
135 | 100
136 | AcDbSymbolTable
137 | 70
138 | 0
139 | 0
140 | ENDTAB
141 | 0
142 | TABLE
143 | 2
144 | APPID
145 | 5
146 | 9
147 | 100
148 | AcDbSymbolTable
149 | 70
150 | 2
151 | 0
152 | APPID
153 | 5
154 | 12
155 | 100
156 | AcDbSymbolTableRecord
157 | 100
158 | AcDbRegAppTableRecord
159 | 2
160 | ACAD
161 | 70
162 | 0
163 | 0
164 | ENDTAB
165 | 0
166 | TABLE
167 | 2
168 | DIMSTYLE
169 | 5
170 | A
171 | 100
172 | AcDbSymbolTable
173 | 70
174 | 1
175 | 0
176 | ENDTAB
177 | 0
178 | TABLE
179 | 2
180 | BLOCK_RECORD
181 | 5
182 | 1
183 | 100
184 | AcDbSymbolTable
185 | 70
186 | 1
187 | 0
188 | BLOCK_RECORD
189 | 5
190 | 1F
191 | 100
192 | AcDbSymbolTableRecord
193 | 100
194 | AcDbBlockTableRecord
195 | 2
196 | *MODEL_SPACE
197 | 0
198 | BLOCK_RECORD
199 | 5
200 | 1B
201 | 100
202 | AcDbSymbolTableRecord
203 | 100
204 | AcDbBlockTableRecord
205 | 2
206 | *PAPER_SPACE
207 | 0
208 | ENDTAB
209 | 0
210 | ENDSEC
211 | 0
212 | SECTION
213 | 2
214 | BLOCKS
215 | 0
216 | BLOCK
217 | 5
218 | 20
219 | 100
220 | AcDbEntity
221 | 100
222 | AcDbBlockBegin
223 | 2
224 | *MODEL_SPACE
225 | 0
226 | ENDBLK
227 | 5
228 | 21
229 | 100
230 | AcDbEntity
231 | 100
232 | AcDbBlockEnd
233 | 0
234 | BLOCK
235 | 5
236 | 1C
237 | 100
238 | AcDbEntity
239 | 100
240 | AcDbBlockBegin
241 | 2
242 | *PAPER_SPACE
243 | 0
244 | ENDBLK
245 | 5
246 | 1D
247 | 100
248 | AcDbEntity
249 | 100
250 | AcDbBlockEnd
251 | 0
252 | ENDSEC
253 | 0
254 | SECTION
255 | 2
256 | ENTITIES
257 | 0
258 | LWPOLYLINE
259 | 5
260 | 100
261 | 100
262 | AcDbEntity
263 | 8
264 | OUTER_PROFILES
265 | 100
266 | AcDbPolyline
267 | 90
268 | 12
269 | 70
270 | 1
271 | 43
272 | 0.0
273 | 10
274 | -39.999999999999993
275 | 20
276 | 39.999999999999993
277 | 42
278 | 0.41421356237309509
279 | 10
280 | 8.8817841970012523e-15
281 | 20
282 | 4.4408920985006262e-15
283 | 10
284 | 58.089607173616891
285 | 20
286 | -8.8817841970012523e-15
287 | 42
288 | 0.31464281332966293
289 | 10
290 | 76.867077420536717
291 | 20
292 | 13.114754098360654
293 | 42
294 | -0.26097177220645096
295 | 10
296 | 84.657428236893253
297 | 20
298 | 19.794373028517594
299 | 42
300 | 0.35727521116255756
301 | 10
302 | 93.089607173616884
303 | 20
304 | 30.088746057035198
305 | 10
306 | 93.089607173616912
307 | 20
308 | 95.91125394296489
309 | 42
310 | 0.357275211162558
311 | 10
312 | 84.657428236893239
313 | 20
314 | 106.20562697148247
315 | 42
316 | -0.26097177220645057
317 | 10
318 | 76.867077420536702
319 | 20
320 | 112.88524590163944
321 | 42
322 | 0.31464281332966271
323 | 10
324 | 58.089607173616891
325 | 20
326 | 126.00000000000009
327 | 10
328 | -6.4324905987065454e-15
329 | 20
330 | 126.00000000000001
331 | 42
332 | 0.41421356237309503
333 | 10
334 | -39.999999999999993
335 | 20
336 | 86.000000000000014
337 | 0
338 | LWPOLYLINE
339 | 5
340 | 101
341 | 100
342 | AcDbEntity
343 | 8
344 | INTERIOR_PROFILES
345 | 100
346 | AcDbPolyline
347 | 90
348 | 6
349 | 70
350 | 1
351 | 43
352 | 0.0
353 | 10
354 | 69.853812070472202
355 | 20
356 | 32.5
357 | 10
358 | 77.353812070472202
359 | 20
360 | 32.5
361 | 10
362 | 77.353812070472202
363 | 20
364 | 93.5
365 | 10
366 | 43.353812070472202
367 | 20
368 | 93.5
369 | 10
370 | 43.353812070472202
371 | 20
372 | 12.5
373 | 10
374 | 69.853812070472202
375 | 20
376 | 12.5
377 | 0
378 | CIRCLE
379 | 5
380 | 102
381 | 100
382 | AcDbEntity
383 | 8
384 | INTERIOR_PROFILES
385 | 100
386 | AcDbCircle
387 | 10
388 | -52.353812070472202
389 | 20
390 | 5
391 | 30
392 | 0
393 | 40
394 | 1.5000000000000002
395 | 210
396 | 0
397 | 220
398 | 0
399 | 230
400 | -1
401 | 0
402 | CIRCLE
403 | 5
404 | 103
405 | 100
406 | AcDbEntity
407 | 8
408 | INTERIOR_PROFILES
409 | 100
410 | AcDbCircle
411 | 10
412 | -52.353812070472188
413 | 20
414 | 121.00000000000001
415 | 30
416 | 0
417 | 40
418 | 1.5000000000000036
419 | 210
420 | 0
421 | 220
422 | 0
423 | 230
424 | -1
425 | 0
426 | LINE
427 | 5
428 | 104
429 | 100
430 | AcDbEntity
431 | 8
432 | BEND
433 | 100
434 | AcDbLine
435 | 10
436 | 22.044803586808435
437 | 20
438 | 126.00000000000009
439 | 30
440 | 2.6157425250392629e-14
441 | 11
442 | 22.044803586808435
443 | 21
444 | 0
445 | 31
446 | 2.6157425250392629e-14
447 | 0
448 | LINE
449 | 5
450 | 105
451 | 100
452 | AcDbEntity
453 | 8
454 | BEND_EXTENT
455 | 100
456 | AcDbLine
457 | 10
458 | 26.353812070472191
459 | 20
460 | 126.00000000000009
461 | 30
462 | 2.9556561976835942e-14
463 | 11
464 | 26.353812070472191
465 | 21
466 | 0
467 | 31
468 | 2.9556561976835942e-14
469 | 0
470 | LINE
471 | 5
472 | 106
473 | 100
474 | AcDbEntity
475 | 8
476 | BEND_EXTENT
477 | 100
478 | AcDbLine
479 | 10
480 | 17.735795103144678
481 | 20
482 | 0
483 | 30
484 | 2.2879873237934065e-14
485 | 11
486 | 17.735795103144678
487 | 21
488 | 126.00000000000001
489 | 31
490 | 2.2879873237934065e-14
491 | 0
492 | ENDSEC
493 | 0
494 | SECTION
495 | 2
496 | OBJECTS
497 | 0
498 | DICTIONARY
499 | 5
500 | C
501 | 100
502 | AcDbDictionary
503 | 3
504 | ACAD_GROUP
505 | 350
506 | D
507 | 3
508 | ACAD_MLINESTYLE
509 | 350
510 | 17
511 | 0
512 | DICTIONARY
513 | 5
514 | D
515 | 100
516 | AcDbDictionary
517 | 0
518 | DICTIONARY
519 | 5
520 | 1A
521 | 330
522 | C
523 | 100
524 | AcDbDictionary
525 | 0
526 | DICTIONARY
527 | 5
528 | 17
529 | 100
530 | AcDbDictionary
531 | 0
532 | ENDSEC
533 | 0
534 | EOF
535 |
--------------------------------------------------------------------------------
/docs/title.BMP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/title.BMP
--------------------------------------------------------------------------------
/docs/youtube_extension_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alustig3/zoom-controller/d34ba0a9c375e16ef6d2e6de2239420b7a2ff8a9/docs/youtube_extension_settings.png
--------------------------------------------------------------------------------
/docs/zoom_controller_notifications.ahk:
--------------------------------------------------------------------------------
1 | #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
2 | ; #Warn ; Enable warnings to assist with detecting common errors.
3 | SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
4 | SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
5 | #^!F1::
6 | TrayTip, Zoom Controller, Mac Mode, 20, 17
7 | return
8 |
9 | #^!F2::
10 | TrayTip, Zoom Controller, Windows Mode, 20, 17
11 | return
12 |
13 | #^!F3::
14 | TrayTip, Zoom Controller, Controller has been idle for awhile and will soon turn itself off.`n`nPress any button or rotate knob to keep awake., 20, 17
15 | return
16 |
17 | #^!F4::
18 | TrayTip, Zoom Controller, Zoom Mode, 20, 17
19 | return
20 |
21 | #^!F5::
22 | TrayTip, Zoom Controller, YouTube Mode, 20, 17
23 | return
--------------------------------------------------------------------------------
/pcb/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name "asl_footprints")(type "KiCad")(uri "${KIPRJMOD}/libs/asl_footprints.pretty")(options "")(descr ""))
3 | )
4 |
--------------------------------------------------------------------------------
/pcb/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name "asl_symbols_new")(type "KiCad")(uri "${KIPRJMOD}/libs/asl_symbols_new.kicad_sym")(options "")(descr ""))
3 | )
4 |
--------------------------------------------------------------------------------
/pcb/zoom_pad.kicad_prl:
--------------------------------------------------------------------------------
1 | {
2 | "board": {
3 | "active_layer": 31,
4 | "active_layer_preset": "All Layers",
5 | "hidden_nets": [],
6 | "high_contrast_mode": 1,
7 | "net_color_mode": 1,
8 | "opacity": {
9 | "pads": 1.0,
10 | "tracks": 1.0,
11 | "vias": 1.0,
12 | "zones": 0.8899999856948853
13 | },
14 | "ratsnest_display_mode": 0,
15 | "selection_filter": {
16 | "dimensions": true,
17 | "footprints": true,
18 | "graphics": true,
19 | "keepouts": true,
20 | "lockedItems": true,
21 | "otherItems": true,
22 | "pads": true,
23 | "text": true,
24 | "tracks": true,
25 | "vias": true,
26 | "zones": true
27 | },
28 | "visible_items": [
29 | 0,
30 | 1,
31 | 2,
32 | 3,
33 | 4,
34 | 5,
35 | 6,
36 | 8,
37 | 9,
38 | 10,
39 | 11,
40 | 12,
41 | 13,
42 | 14,
43 | 15,
44 | 16,
45 | 17,
46 | 18,
47 | 19,
48 | 20,
49 | 21,
50 | 22,
51 | 23,
52 | 24,
53 | 27,
54 | 28,
55 | 29,
56 | 30,
57 | 31,
58 | 32,
59 | 33,
60 | 37,
61 | 38
62 | ],
63 | "visible_layers": "fffffff_ffffffff",
64 | "zone_display_mode": 1
65 | },
66 | "meta": {
67 | "filename": "zoom_pad.kicad_prl",
68 | "version": 2
69 | },
70 | "project": {
71 | "files": []
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/pcb/zoom_pad.kicad_pro:
--------------------------------------------------------------------------------
1 | {
2 | "board": {
3 | "design_settings": {
4 | "defaults": {
5 | "board_outline_line_width": 0.09999999999999999,
6 | "copper_line_width": 0.19999999999999998,
7 | "copper_text_italic": false,
8 | "copper_text_size_h": 1.5,
9 | "copper_text_size_v": 1.5,
10 | "copper_text_thickness": 0.3,
11 | "copper_text_upright": false,
12 | "courtyard_line_width": 0.049999999999999996,
13 | "dimension_precision": 4,
14 | "dimension_units": 3,
15 | "dimensions": {
16 | "arrow_length": 1270000,
17 | "extension_offset": 500000,
18 | "keep_text_aligned": true,
19 | "suppress_zeroes": false,
20 | "text_position": 0,
21 | "units_format": 1
22 | },
23 | "fab_line_width": 0.09999999999999999,
24 | "fab_text_italic": false,
25 | "fab_text_size_h": 1.0,
26 | "fab_text_size_v": 1.0,
27 | "fab_text_thickness": 0.15,
28 | "fab_text_upright": false,
29 | "other_line_width": 0.15,
30 | "other_text_italic": false,
31 | "other_text_size_h": 1.0,
32 | "other_text_size_v": 1.0,
33 | "other_text_thickness": 0.15,
34 | "other_text_upright": false,
35 | "pads": {
36 | "drill": 0.762,
37 | "height": 1.524,
38 | "width": 1.524
39 | },
40 | "silk_line_width": 0.15,
41 | "silk_text_italic": false,
42 | "silk_text_size_h": 1.0,
43 | "silk_text_size_v": 1.0,
44 | "silk_text_thickness": 0.15,
45 | "silk_text_upright": false,
46 | "zones": {
47 | "45_degree_only": false,
48 | "min_clearance": 0.508
49 | }
50 | },
51 | "diff_pair_dimensions": [
52 | {
53 | "gap": 0.0,
54 | "via_gap": 0.0,
55 | "width": 0.0
56 | }
57 | ],
58 | "drc_exclusions": [],
59 | "meta": {
60 | "version": 1
61 | },
62 | "rule_severities": {
63 | "annular_width": "error",
64 | "clearance": "error",
65 | "copper_edge_clearance": "error",
66 | "courtyards_overlap": "error",
67 | "diff_pair_gap_out_of_range": "error",
68 | "diff_pair_uncoupled_length_too_long": "error",
69 | "drill_out_of_range": "error",
70 | "duplicate_footprints": "warning",
71 | "extra_footprint": "warning",
72 | "hole_clearance": "error",
73 | "hole_near_hole": "error",
74 | "invalid_outline": "error",
75 | "item_on_disabled_layer": "error",
76 | "items_not_allowed": "error",
77 | "length_out_of_range": "error",
78 | "malformed_courtyard": "error",
79 | "microvia_drill_out_of_range": "error",
80 | "missing_courtyard": "ignore",
81 | "missing_footprint": "warning",
82 | "net_conflict": "warning",
83 | "npth_inside_courtyard": "ignore",
84 | "padstack": "error",
85 | "pth_inside_courtyard": "ignore",
86 | "shorting_items": "error",
87 | "silk_over_copper": "error",
88 | "silk_overlap": "error",
89 | "skew_out_of_range": "error",
90 | "too_many_vias": "error",
91 | "track_dangling": "warning",
92 | "track_width": "error",
93 | "tracks_crossing": "error",
94 | "unconnected_items": "error",
95 | "unresolved_variable": "error",
96 | "via_dangling": "warning",
97 | "zone_has_empty_net": "error",
98 | "zones_intersect": "error"
99 | },
100 | "rules": {
101 | "allow_blind_buried_vias": false,
102 | "allow_microvias": false,
103 | "max_error": 0.005,
104 | "min_clearance": 0.0,
105 | "min_copper_edge_clearance": 0.0,
106 | "min_hole_clearance": 0.0,
107 | "min_hole_to_hole": 0.25,
108 | "min_microvia_diameter": 0.19999999999999998,
109 | "min_microvia_drill": 0.09999999999999999,
110 | "min_silk_clearance": 0.0,
111 | "min_through_hole_diameter": 0.3,
112 | "min_track_width": 0.19999999999999998,
113 | "min_via_annular_width": 0.049999999999999996,
114 | "min_via_diameter": 0.39999999999999997,
115 | "solder_mask_clearance": 0.0,
116 | "solder_mask_min_width": 0.0,
117 | "solder_paste_clearance": 0.0,
118 | "solder_paste_margin_ratio": -0.0
119 | },
120 | "track_widths": [
121 | 0.0,
122 | 0.3048,
123 | 0.4572,
124 | 0.508
125 | ],
126 | "via_dimensions": [
127 | {
128 | "diameter": 0.0,
129 | "drill": 0.0
130 | }
131 | ],
132 | "zones_allow_external_fillets": false,
133 | "zones_use_no_outline": true
134 | },
135 | "layer_presets": []
136 | },
137 | "boards": [],
138 | "cvpcb": {
139 | "equivalence_files": []
140 | },
141 | "erc": {
142 | "erc_exclusions": [],
143 | "meta": {
144 | "version": 0
145 | },
146 | "pin_map": [
147 | [
148 | 0,
149 | 0,
150 | 0,
151 | 0,
152 | 0,
153 | 1,
154 | 0,
155 | 0,
156 | 0,
157 | 0,
158 | 2
159 | ],
160 | [
161 | 0,
162 | 2,
163 | 0,
164 | 1,
165 | 0,
166 | 1,
167 | 0,
168 | 2,
169 | 2,
170 | 2,
171 | 2
172 | ],
173 | [
174 | 0,
175 | 0,
176 | 0,
177 | 0,
178 | 0,
179 | 1,
180 | 0,
181 | 1,
182 | 0,
183 | 1,
184 | 2
185 | ],
186 | [
187 | 0,
188 | 1,
189 | 0,
190 | 0,
191 | 0,
192 | 1,
193 | 1,
194 | 2,
195 | 1,
196 | 1,
197 | 2
198 | ],
199 | [
200 | 0,
201 | 0,
202 | 0,
203 | 0,
204 | 0,
205 | 1,
206 | 0,
207 | 0,
208 | 0,
209 | 0,
210 | 2
211 | ],
212 | [
213 | 1,
214 | 1,
215 | 1,
216 | 1,
217 | 1,
218 | 1,
219 | 1,
220 | 1,
221 | 1,
222 | 1,
223 | 2
224 | ],
225 | [
226 | 0,
227 | 0,
228 | 0,
229 | 1,
230 | 0,
231 | 1,
232 | 0,
233 | 0,
234 | 0,
235 | 0,
236 | 2
237 | ],
238 | [
239 | 0,
240 | 2,
241 | 1,
242 | 2,
243 | 0,
244 | 1,
245 | 0,
246 | 2,
247 | 2,
248 | 2,
249 | 2
250 | ],
251 | [
252 | 0,
253 | 2,
254 | 0,
255 | 1,
256 | 0,
257 | 1,
258 | 0,
259 | 2,
260 | 0,
261 | 0,
262 | 2
263 | ],
264 | [
265 | 0,
266 | 2,
267 | 1,
268 | 1,
269 | 0,
270 | 1,
271 | 0,
272 | 2,
273 | 0,
274 | 0,
275 | 2
276 | ],
277 | [
278 | 2,
279 | 2,
280 | 2,
281 | 2,
282 | 2,
283 | 2,
284 | 2,
285 | 2,
286 | 2,
287 | 2,
288 | 2
289 | ]
290 | ],
291 | "rule_severities": {
292 | "bus_definition_conflict": "error",
293 | "bus_label_syntax": "error",
294 | "bus_to_bus_conflict": "error",
295 | "bus_to_net_conflict": "error",
296 | "different_unit_footprint": "error",
297 | "different_unit_net": "error",
298 | "duplicate_sheet_names": "error",
299 | "global_label_dangling": "warning",
300 | "hier_label_mismatch": "error",
301 | "label_dangling": "error",
302 | "lib_symbol_issues": "warning",
303 | "multiple_net_names": "warning",
304 | "net_not_bus_member": "warning",
305 | "no_connect_connected": "warning",
306 | "no_connect_dangling": "warning",
307 | "pin_not_connected": "error",
308 | "pin_not_driven": "error",
309 | "pin_to_pin": "warning",
310 | "power_pin_not_driven": "error",
311 | "similar_labels": "warning",
312 | "unresolved_variable": "error",
313 | "wire_dangling": "error"
314 | }
315 | },
316 | "libraries": {
317 | "pinned_footprint_libs": [],
318 | "pinned_symbol_libs": []
319 | },
320 | "meta": {
321 | "filename": "zoom_pad.kicad_pro",
322 | "version": 1
323 | },
324 | "net_settings": {
325 | "classes": [
326 | {
327 | "bus_width": 6.0,
328 | "clearance": 0.2,
329 | "diff_pair_gap": 0.25,
330 | "diff_pair_via_gap": 0.25,
331 | "diff_pair_width": 0.2,
332 | "line_style": 0,
333 | "microvia_diameter": 0.3,
334 | "microvia_drill": 0.1,
335 | "name": "Default",
336 | "pcb_color": "rgba(0, 0, 0, 0.000)",
337 | "schematic_color": "rgba(0, 0, 0, 0.000)",
338 | "track_width": 0.25,
339 | "via_diameter": 0.8,
340 | "via_drill": 0.4,
341 | "wire_width": 6.0
342 | }
343 | ],
344 | "meta": {
345 | "version": 0
346 | },
347 | "net_colors": null
348 | },
349 | "pcbnew": {
350 | "last_paths": {
351 | "gencad": "",
352 | "idf": "",
353 | "netlist": "",
354 | "specctra_dsn": "",
355 | "step": "zoom_pad.step",
356 | "vrml": ""
357 | },
358 | "page_layout_descr_file": ""
359 | },
360 | "schematic": {
361 | "drawing": {
362 | "default_bus_thickness": 12.0,
363 | "default_junction_size": 40.0,
364 | "default_line_thickness": 6.0,
365 | "default_text_size": 50.0,
366 | "default_wire_thickness": 6.0,
367 | "field_names": [],
368 | "intersheets_ref_prefix": "",
369 | "intersheets_ref_short": false,
370 | "intersheets_ref_show": false,
371 | "intersheets_ref_suffix": "",
372 | "junction_size_choice": 3,
373 | "pin_symbol_size": 25.0,
374 | "text_offset_ratio": 0.3
375 | },
376 | "legacy_lib_dir": "",
377 | "legacy_lib_list": [],
378 | "meta": {
379 | "version": 0
380 | },
381 | "net_format_name": "",
382 | "page_layout_descr_file": "",
383 | "plot_directory": "",
384 | "spice_adjust_passive_values": false,
385 | "spice_external_command": "spice \"%I\"",
386 | "subpart_first_id": 65,
387 | "subpart_id_separator": 0
388 | },
389 | "sheets": [
390 | [
391 | "606f663e-036f-46fa-bbf0-a661bbceaf4d",
392 | ""
393 | ]
394 | ],
395 | "text_variables": {}
396 | }
397 |
--------------------------------------------------------------------------------
/pcb/zoom_pad.kicad_sch:
--------------------------------------------------------------------------------
1 | (kicad_sch (version 20201015) (generator eeschema)
2 |
3 | (paper "A4")
4 |
5 | (title_block
6 | (date "2020-12-19")
7 | (rev "1.1")
8 | )
9 |
10 | (lib_symbols
11 | (symbol "Connector_Generic:Conn_02x03_Odd_Even" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes)
12 | (property "Reference" "J" (id 0) (at 1.27 5.08 0)
13 | (effects (font (size 1.27 1.27)))
14 | )
15 | (property "Value" "Conn_02x03_Odd_Even" (id 1) (at 1.27 -5.08 0)
16 | (effects (font (size 1.27 1.27)))
17 | )
18 | (property "Footprint" "" (id 2) (at 0 0 0)
19 | (effects (font (size 1.27 1.27)) hide)
20 | )
21 | (property "Datasheet" "~" (id 3) (at 0 0 0)
22 | (effects (font (size 1.27 1.27)) hide)
23 | )
24 | (property "ki_keywords" "connector" (id 4) (at 0 0 0)
25 | (effects (font (size 1.27 1.27)) hide)
26 | )
27 | (property "ki_description" "Generic connector, double row, 02x03, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0)
28 | (effects (font (size 1.27 1.27)) hide)
29 | )
30 | (property "ki_fp_filters" "Connector*:*_2x??_*" (id 6) (at 0 0 0)
31 | (effects (font (size 1.27 1.27)) hide)
32 | )
33 | (symbol "Conn_02x03_Odd_Even_1_1"
34 | (rectangle (start -1.27 -2.413) (end 0 -2.667)
35 | (stroke (width 0.1524)) (fill (type none))
36 | )
37 | (rectangle (start -1.27 2.667) (end 0 2.413)
38 | (stroke (width 0.1524)) (fill (type none))
39 | )
40 | (rectangle (start -1.27 3.81) (end 3.81 -3.81)
41 | (stroke (width 0.254)) (fill (type background))
42 | )
43 | (rectangle (start -1.27 0.127) (end 0 -0.127)
44 | (stroke (width 0.1524)) (fill (type none))
45 | )
46 | (rectangle (start 3.81 -2.413) (end 2.54 -2.667)
47 | (stroke (width 0.1524)) (fill (type none))
48 | )
49 | (rectangle (start 3.81 2.667) (end 2.54 2.413)
50 | (stroke (width 0.1524)) (fill (type none))
51 | )
52 | (rectangle (start 3.81 0.127) (end 2.54 -0.127)
53 | (stroke (width 0.1524)) (fill (type none))
54 | )
55 | (pin passive line (at -5.08 2.54 0) (length 3.81)
56 | (name "Pin_1" (effects (font (size 1.27 1.27))))
57 | (number "1" (effects (font (size 1.27 1.27))))
58 | )
59 | (pin passive line (at 7.62 2.54 180) (length 3.81)
60 | (name "Pin_2" (effects (font (size 1.27 1.27))))
61 | (number "2" (effects (font (size 1.27 1.27))))
62 | )
63 | (pin passive line (at -5.08 0 0) (length 3.81)
64 | (name "Pin_3" (effects (font (size 1.27 1.27))))
65 | (number "3" (effects (font (size 1.27 1.27))))
66 | )
67 | (pin passive line (at 7.62 0 180) (length 3.81)
68 | (name "Pin_4" (effects (font (size 1.27 1.27))))
69 | (number "4" (effects (font (size 1.27 1.27))))
70 | )
71 | (pin passive line (at -5.08 -2.54 0) (length 3.81)
72 | (name "Pin_5" (effects (font (size 1.27 1.27))))
73 | (number "5" (effects (font (size 1.27 1.27))))
74 | )
75 | (pin passive line (at 7.62 -2.54 180) (length 3.81)
76 | (name "Pin_6" (effects (font (size 1.27 1.27))))
77 | (number "6" (effects (font (size 1.27 1.27))))
78 | )
79 | )
80 | )
81 | (symbol "Device:Battery_1" (pin_numbers hide) (pin_names (offset 0) hide) (in_bom yes) (on_board yes)
82 | (property "Reference" "BT" (id 0) (at 2.54 2.54 0)
83 | (effects (font (size 1.27 1.27)) (justify left))
84 | )
85 | (property "Value" "Battery" (id 1) (at 2.54 0 0)
86 | (effects (font (size 1.27 1.27)) (justify left))
87 | )
88 | (property "Footprint" "" (id 2) (at 0 1.524 90)
89 | (effects (font (size 1.27 1.27)) hide)
90 | )
91 | (property "Datasheet" "~" (id 3) (at 0 1.524 90)
92 | (effects (font (size 1.27 1.27)) hide)
93 | )
94 | (property "ki_keywords" "batt voltage-source cell" (id 4) (at 0 0 0)
95 | (effects (font (size 1.27 1.27)) hide)
96 | )
97 | (property "ki_description" "Multiple-cell battery" (id 5) (at 0 0 0)
98 | (effects (font (size 1.27 1.27)) hide)
99 | )
100 | (symbol "Battery_1_0_1"
101 | (rectangle (start -2.032 -1.397) (end 2.032 -1.651)
102 | (stroke (width 0)) (fill (type outline))
103 | )
104 | (rectangle (start -2.032 1.778) (end 2.032 1.524)
105 | (stroke (width 0)) (fill (type outline))
106 | )
107 | (rectangle (start -1.3208 -1.9812) (end 1.27 -2.4892)
108 | (stroke (width 0)) (fill (type outline))
109 | )
110 | (rectangle (start -1.3208 1.1938) (end 1.27 0.6858)
111 | (stroke (width 0)) (fill (type outline))
112 | )
113 | (polyline
114 | (pts
115 | (xy 0 -1.524)
116 | (xy 0 -1.27)
117 | )
118 | (stroke (width 0)) (fill (type none))
119 | )
120 | (polyline
121 | (pts
122 | (xy 0 -1.016)
123 | (xy 0 -0.762)
124 | )
125 | (stroke (width 0)) (fill (type none))
126 | )
127 | (polyline
128 | (pts
129 | (xy 0 -0.508)
130 | (xy 0 -0.254)
131 | )
132 | (stroke (width 0)) (fill (type none))
133 | )
134 | (polyline
135 | (pts
136 | (xy 0 0)
137 | (xy 0 0.254)
138 | )
139 | (stroke (width 0)) (fill (type none))
140 | )
141 | (polyline
142 | (pts
143 | (xy 0 0.508)
144 | (xy 0 0.762)
145 | )
146 | (stroke (width 0)) (fill (type none))
147 | )
148 | (polyline
149 | (pts
150 | (xy 0 1.778)
151 | (xy 0 2.54)
152 | )
153 | (stroke (width 0)) (fill (type none))
154 | )
155 | (polyline
156 | (pts
157 | (xy 0.254 2.667)
158 | (xy 1.27 2.667)
159 | )
160 | (stroke (width 0.254)) (fill (type none))
161 | )
162 | (polyline
163 | (pts
164 | (xy 0.762 3.175)
165 | (xy 0.762 2.159)
166 | )
167 | (stroke (width 0.254)) (fill (type none))
168 | )
169 | )
170 | (symbol "Battery_1_1_1"
171 | (pin passive line (at 0 5.08 270) (length 2.54)
172 | (name "+" (effects (font (size 1.27 1.27))))
173 | (number "1" (effects (font (size 1.27 1.27))))
174 | )
175 | (pin passive line (at 0 -5.08 90) (length 2.54)
176 | (name "-" (effects (font (size 1.27 1.27))))
177 | (number "2" (effects (font (size 1.27 1.27))))
178 | )
179 | )
180 | )
181 | (symbol "Device:C" (pin_numbers hide) (pin_names (offset 0.254)) (in_bom yes) (on_board yes)
182 | (property "Reference" "C" (id 0) (at 0.635 2.54 0)
183 | (effects (font (size 1.27 1.27)) (justify left))
184 | )
185 | (property "Value" "C" (id 1) (at 0.635 -2.54 0)
186 | (effects (font (size 1.27 1.27)) (justify left))
187 | )
188 | (property "Footprint" "" (id 2) (at 0.9652 -3.81 0)
189 | (effects (font (size 1.27 1.27)) hide)
190 | )
191 | (property "Datasheet" "~" (id 3) (at 0 0 0)
192 | (effects (font (size 1.27 1.27)) hide)
193 | )
194 | (property "ki_keywords" "cap capacitor" (id 4) (at 0 0 0)
195 | (effects (font (size 1.27 1.27)) hide)
196 | )
197 | (property "ki_description" "Unpolarized capacitor" (id 5) (at 0 0 0)
198 | (effects (font (size 1.27 1.27)) hide)
199 | )
200 | (property "ki_fp_filters" "C_*" (id 6) (at 0 0 0)
201 | (effects (font (size 1.27 1.27)) hide)
202 | )
203 | (symbol "C_0_1"
204 | (polyline
205 | (pts
206 | (xy -2.032 -0.762)
207 | (xy 2.032 -0.762)
208 | )
209 | (stroke (width 0.508)) (fill (type none))
210 | )
211 | (polyline
212 | (pts
213 | (xy -2.032 0.762)
214 | (xy 2.032 0.762)
215 | )
216 | (stroke (width 0.508)) (fill (type none))
217 | )
218 | )
219 | (symbol "C_1_1"
220 | (pin passive line (at 0 3.81 270) (length 2.794)
221 | (name "~" (effects (font (size 1.27 1.27))))
222 | (number "1" (effects (font (size 1.27 1.27))))
223 | )
224 | (pin passive line (at 0 -3.81 90) (length 2.794)
225 | (name "~" (effects (font (size 1.27 1.27))))
226 | (number "2" (effects (font (size 1.27 1.27))))
227 | )
228 | )
229 | )
230 | (symbol "Device:R_Small_US" (pin_numbers hide) (pin_names (offset 0.254) hide) (in_bom yes) (on_board yes)
231 | (property "Reference" "R" (id 0) (at 0.762 0.508 0)
232 | (effects (font (size 1.27 1.27)) (justify left))
233 | )
234 | (property "Value" "R_Small_US" (id 1) (at 0.762 -1.016 0)
235 | (effects (font (size 1.27 1.27)) (justify left))
236 | )
237 | (property "Footprint" "" (id 2) (at 0 0 0)
238 | (effects (font (size 1.27 1.27)) hide)
239 | )
240 | (property "Datasheet" "~" (id 3) (at 0 0 0)
241 | (effects (font (size 1.27 1.27)) hide)
242 | )
243 | (property "ki_keywords" "r resistor" (id 4) (at 0 0 0)
244 | (effects (font (size 1.27 1.27)) hide)
245 | )
246 | (property "ki_description" "Resistor, small US symbol" (id 5) (at 0 0 0)
247 | (effects (font (size 1.27 1.27)) hide)
248 | )
249 | (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0)
250 | (effects (font (size 1.27 1.27)) hide)
251 | )
252 | (symbol "R_Small_US_1_1"
253 | (polyline
254 | (pts
255 | (xy 0 0)
256 | (xy 1.016 -0.381)
257 | (xy 0 -0.762)
258 | (xy -1.016 -1.143)
259 | (xy 0 -1.524)
260 | )
261 | (stroke (width 0)) (fill (type none))
262 | )
263 | (polyline
264 | (pts
265 | (xy 0 1.524)
266 | (xy 1.016 1.143)
267 | (xy 0 0.762)
268 | (xy -1.016 0.381)
269 | (xy 0 0)
270 | )
271 | (stroke (width 0)) (fill (type none))
272 | )
273 | (pin passive line (at 0 2.54 270) (length 1.016)
274 | (name "~" (effects (font (size 1.27 1.27))))
275 | (number "1" (effects (font (size 1.27 1.27))))
276 | )
277 | (pin passive line (at 0 -2.54 90) (length 1.016)
278 | (name "~" (effects (font (size 1.27 1.27))))
279 | (number "2" (effects (font (size 1.27 1.27))))
280 | )
281 | )
282 | )
283 | (symbol "Device:R_US" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes)
284 | (property "Reference" "R" (id 0) (at 2.54 0 90)
285 | (effects (font (size 1.27 1.27)))
286 | )
287 | (property "Value" "R_US" (id 1) (at -2.54 0 90)
288 | (effects (font (size 1.27 1.27)))
289 | )
290 | (property "Footprint" "" (id 2) (at 1.016 -0.254 90)
291 | (effects (font (size 1.27 1.27)) hide)
292 | )
293 | (property "Datasheet" "~" (id 3) (at 0 0 0)
294 | (effects (font (size 1.27 1.27)) hide)
295 | )
296 | (property "ki_keywords" "R res resistor" (id 4) (at 0 0 0)
297 | (effects (font (size 1.27 1.27)) hide)
298 | )
299 | (property "ki_description" "Resistor, US symbol" (id 5) (at 0 0 0)
300 | (effects (font (size 1.27 1.27)) hide)
301 | )
302 | (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0)
303 | (effects (font (size 1.27 1.27)) hide)
304 | )
305 | (symbol "R_US_0_1"
306 | (polyline
307 | (pts
308 | (xy 0 -2.286)
309 | (xy 0 -2.54)
310 | )
311 | (stroke (width 0)) (fill (type none))
312 | )
313 | (polyline
314 | (pts
315 | (xy 0 2.286)
316 | (xy 0 2.54)
317 | )
318 | (stroke (width 0)) (fill (type none))
319 | )
320 | (polyline
321 | (pts
322 | (xy 0 -0.762)
323 | (xy 1.016 -1.143)
324 | (xy 0 -1.524)
325 | (xy -1.016 -1.905)
326 | (xy 0 -2.286)
327 | )
328 | (stroke (width 0)) (fill (type none))
329 | )
330 | (polyline
331 | (pts
332 | (xy 0 0.762)
333 | (xy 1.016 0.381)
334 | (xy 0 0)
335 | (xy -1.016 -0.381)
336 | (xy 0 -0.762)
337 | )
338 | (stroke (width 0)) (fill (type none))
339 | )
340 | (polyline
341 | (pts
342 | (xy 0 2.286)
343 | (xy 1.016 1.905)
344 | (xy 0 1.524)
345 | (xy -1.016 1.143)
346 | (xy 0 0.762)
347 | )
348 | (stroke (width 0)) (fill (type none))
349 | )
350 | )
351 | (symbol "R_US_1_1"
352 | (pin passive line (at 0 3.81 270) (length 1.27)
353 | (name "~" (effects (font (size 1.27 1.27))))
354 | (number "1" (effects (font (size 1.27 1.27))))
355 | )
356 | (pin passive line (at 0 -3.81 90) (length 1.27)
357 | (name "~" (effects (font (size 1.27 1.27))))
358 | (number "2" (effects (font (size 1.27 1.27))))
359 | )
360 | )
361 | )
362 | (symbol "Diode:BAT54C" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
363 | (property "Reference" "D" (id 0) (at 0.635 -3.81 0)
364 | (effects (font (size 1.27 1.27)) (justify left))
365 | )
366 | (property "Value" "BAT54C" (id 1) (at -6.35 3.175 0)
367 | (effects (font (size 1.27 1.27)) (justify left))
368 | )
369 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (id 2) (at 1.905 3.175 0)
370 | (effects (font (size 1.27 1.27)) (justify left) hide)
371 | )
372 | (property "Datasheet" "http://www.diodes.com/_files/datasheets/ds11005.pdf" (id 3) (at -2.032 0 0)
373 | (effects (font (size 1.27 1.27)) hide)
374 | )
375 | (property "ki_keywords" "schottky diode common cathode" (id 4) (at 0 0 0)
376 | (effects (font (size 1.27 1.27)) hide)
377 | )
378 | (property "ki_description" "dual schottky barrier diode, common cathode" (id 5) (at 0 0 0)
379 | (effects (font (size 1.27 1.27)) hide)
380 | )
381 | (property "ki_fp_filters" "SOT?23*" (id 6) (at 0 0 0)
382 | (effects (font (size 1.27 1.27)) hide)
383 | )
384 | (symbol "BAT54C_0_1"
385 | (circle (center 0 0) (radius 0.254) (stroke (width 0)) (fill (type outline)))
386 | (polyline
387 | (pts
388 | (xy -1.905 0)
389 | (xy 1.905 0)
390 | )
391 | (stroke (width 0)) (fill (type none))
392 | )
393 | (polyline
394 | (pts
395 | (xy -1.905 1.27)
396 | (xy -1.905 1.016)
397 | )
398 | (stroke (width 0)) (fill (type none))
399 | )
400 | (polyline
401 | (pts
402 | (xy -1.27 -1.27)
403 | (xy -0.635 -1.27)
404 | )
405 | (stroke (width 0)) (fill (type none))
406 | )
407 | (polyline
408 | (pts
409 | (xy -1.27 0)
410 | (xy -3.81 0)
411 | )
412 | (stroke (width 0)) (fill (type none))
413 | )
414 | (polyline
415 | (pts
416 | (xy -1.27 1.27)
417 | (xy -1.905 1.27)
418 | )
419 | (stroke (width 0)) (fill (type none))
420 | )
421 | (polyline
422 | (pts
423 | (xy -1.27 1.27)
424 | (xy -1.27 -1.27)
425 | )
426 | (stroke (width 0)) (fill (type none))
427 | )
428 | (polyline
429 | (pts
430 | (xy -0.635 -1.27)
431 | (xy -0.635 -1.016)
432 | )
433 | (stroke (width 0)) (fill (type none))
434 | )
435 | (polyline
436 | (pts
437 | (xy 0.635 -1.27)
438 | (xy 0.635 -1.016)
439 | )
440 | (stroke (width 0)) (fill (type none))
441 | )
442 | (polyline
443 | (pts
444 | (xy 1.27 -1.27)
445 | (xy 0.635 -1.27)
446 | )
447 | (stroke (width 0)) (fill (type none))
448 | )
449 | (polyline
450 | (pts
451 | (xy 1.27 1.27)
452 | (xy 1.27 -1.27)
453 | )
454 | (stroke (width 0)) (fill (type none))
455 | )
456 | (polyline
457 | (pts
458 | (xy 1.27 1.27)
459 | (xy 1.905 1.27)
460 | )
461 | (stroke (width 0)) (fill (type none))
462 | )
463 | (polyline
464 | (pts
465 | (xy 1.905 1.27)
466 | (xy 1.905 1.016)
467 | )
468 | (stroke (width 0)) (fill (type none))
469 | )
470 | (polyline
471 | (pts
472 | (xy 3.81 0)
473 | (xy 1.27 0)
474 | )
475 | (stroke (width 0)) (fill (type none))
476 | )
477 | (polyline
478 | (pts
479 | (xy -3.175 -1.27)
480 | (xy -3.175 1.27)
481 | (xy -1.27 0)
482 | (xy -3.175 -1.27)
483 | )
484 | (stroke (width 0)) (fill (type none))
485 | )
486 | (polyline
487 | (pts
488 | (xy 3.175 -1.27)
489 | (xy 3.175 1.27)
490 | (xy 1.27 0)
491 | (xy 3.175 -1.27)
492 | )
493 | (stroke (width 0)) (fill (type none))
494 | )
495 | )
496 | (symbol "BAT54C_1_1"
497 | (pin passive line (at -7.62 0 0) (length 3.81)
498 | (name "~" (effects (font (size 1.27 1.27))))
499 | (number "1" (effects (font (size 1.27 1.27))))
500 | )
501 | (pin passive line (at 7.62 0 180) (length 3.81)
502 | (name "~" (effects (font (size 1.27 1.27))))
503 | (number "2" (effects (font (size 1.27 1.27))))
504 | )
505 | (pin passive line (at 0 -5.08 90) (length 5.08)
506 | (name "~" (effects (font (size 1.27 1.27))))
507 | (number "3" (effects (font (size 1.27 1.27))))
508 | )
509 | )
510 | )
511 | (symbol "RF_Module:ESP32-WROOM-32D" (in_bom yes) (on_board yes)
512 | (property "Reference" "U" (id 0) (at -12.7 34.29 0)
513 | (effects (font (size 1.27 1.27)) (justify left))
514 | )
515 | (property "Value" "ESP32-WROOM-32D" (id 1) (at 1.27 34.29 0)
516 | (effects (font (size 1.27 1.27)) (justify left))
517 | )
518 | (property "Footprint" "RF_Module:ESP32-WROOM-32" (id 2) (at 0 -38.1 0)
519 | (effects (font (size 1.27 1.27)) hide)
520 | )
521 | (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf" (id 3) (at -7.62 1.27 0)
522 | (effects (font (size 1.27 1.27)) hide)
523 | )
524 | (property "ki_keywords" "RF Radio BT ESP ESP32 Espressif onboard PCB antenna" (id 4) (at 0 0 0)
525 | (effects (font (size 1.27 1.27)) hide)
526 | )
527 | (property "ki_description" "RF Module, ESP32-D0WD SoC, Wi-Fi 802.11b/g/n, Bluetooth, BLE, 32-bit, 2.7-3.6V, onboard antenna, SMD" (id 5) (at 0 0 0)
528 | (effects (font (size 1.27 1.27)) hide)
529 | )
530 | (property "ki_fp_filters" "ESP32?WROOM?32*" (id 6) (at 0 0 0)
531 | (effects (font (size 1.27 1.27)) hide)
532 | )
533 | (symbol "ESP32-WROOM-32D_0_1"
534 | (rectangle (start -12.7 33.02) (end 12.7 -33.02)
535 | (stroke (width 0.254)) (fill (type background))
536 | )
537 | )
538 | (symbol "ESP32-WROOM-32D_1_1"
539 | (pin power_in line (at 0 -35.56 90) (length 2.54)
540 | (name "GND" (effects (font (size 1.27 1.27))))
541 | (number "1" (effects (font (size 1.27 1.27))))
542 | )
543 | (pin bidirectional line (at 15.24 -12.7 180) (length 2.54)
544 | (name "IO25" (effects (font (size 1.27 1.27))))
545 | (number "10" (effects (font (size 1.27 1.27))))
546 | )
547 | (pin bidirectional line (at 15.24 -15.24 180) (length 2.54)
548 | (name "IO26" (effects (font (size 1.27 1.27))))
549 | (number "11" (effects (font (size 1.27 1.27))))
550 | )
551 | (pin bidirectional line (at 15.24 -17.78 180) (length 2.54)
552 | (name "IO27" (effects (font (size 1.27 1.27))))
553 | (number "12" (effects (font (size 1.27 1.27))))
554 | )
555 | (pin bidirectional line (at 15.24 10.16 180) (length 2.54)
556 | (name "IO14" (effects (font (size 1.27 1.27))))
557 | (number "13" (effects (font (size 1.27 1.27))))
558 | )
559 | (pin bidirectional line (at 15.24 15.24 180) (length 2.54)
560 | (name "IO12" (effects (font (size 1.27 1.27))))
561 | (number "14" (effects (font (size 1.27 1.27))))
562 | )
563 | (pin passive line (at 0 -35.56 90) (length 2.54) hide
564 | (name "GND" (effects (font (size 1.27 1.27))))
565 | (number "15" (effects (font (size 1.27 1.27))))
566 | )
567 | (pin bidirectional line (at 15.24 12.7 180) (length 2.54)
568 | (name "IO13" (effects (font (size 1.27 1.27))))
569 | (number "16" (effects (font (size 1.27 1.27))))
570 | )
571 | (pin bidirectional line (at -15.24 -5.08 0) (length 2.54)
572 | (name "SHD/SD2" (effects (font (size 1.27 1.27))))
573 | (number "17" (effects (font (size 1.27 1.27))))
574 | )
575 | (pin bidirectional line (at -15.24 -7.62 0) (length 2.54)
576 | (name "SWP/SD3" (effects (font (size 1.27 1.27))))
577 | (number "18" (effects (font (size 1.27 1.27))))
578 | )
579 | (pin bidirectional line (at -15.24 -12.7 0) (length 2.54)
580 | (name "SCS/CMD" (effects (font (size 1.27 1.27))))
581 | (number "19" (effects (font (size 1.27 1.27))))
582 | )
583 | (pin power_in line (at 0 35.56 270) (length 2.54)
584 | (name "VDD" (effects (font (size 1.27 1.27))))
585 | (number "2" (effects (font (size 1.27 1.27))))
586 | )
587 | (pin bidirectional line (at -15.24 -10.16 0) (length 2.54)
588 | (name "SCK/CLK" (effects (font (size 1.27 1.27))))
589 | (number "20" (effects (font (size 1.27 1.27))))
590 | )
591 | (pin bidirectional line (at -15.24 0 0) (length 2.54)
592 | (name "SDO/SD0" (effects (font (size 1.27 1.27))))
593 | (number "21" (effects (font (size 1.27 1.27))))
594 | )
595 | (pin bidirectional line (at -15.24 -2.54 0) (length 2.54)
596 | (name "SDI/SD1" (effects (font (size 1.27 1.27))))
597 | (number "22" (effects (font (size 1.27 1.27))))
598 | )
599 | (pin bidirectional line (at 15.24 7.62 180) (length 2.54)
600 | (name "IO15" (effects (font (size 1.27 1.27))))
601 | (number "23" (effects (font (size 1.27 1.27))))
602 | )
603 | (pin bidirectional line (at 15.24 25.4 180) (length 2.54)
604 | (name "IO2" (effects (font (size 1.27 1.27))))
605 | (number "24" (effects (font (size 1.27 1.27))))
606 | )
607 | (pin bidirectional line (at 15.24 30.48 180) (length 2.54)
608 | (name "IO0" (effects (font (size 1.27 1.27))))
609 | (number "25" (effects (font (size 1.27 1.27))))
610 | )
611 | (pin bidirectional line (at 15.24 20.32 180) (length 2.54)
612 | (name "IO4" (effects (font (size 1.27 1.27))))
613 | (number "26" (effects (font (size 1.27 1.27))))
614 | )
615 | (pin bidirectional line (at 15.24 5.08 180) (length 2.54)
616 | (name "IO16" (effects (font (size 1.27 1.27))))
617 | (number "27" (effects (font (size 1.27 1.27))))
618 | )
619 | (pin bidirectional line (at 15.24 2.54 180) (length 2.54)
620 | (name "IO17" (effects (font (size 1.27 1.27))))
621 | (number "28" (effects (font (size 1.27 1.27))))
622 | )
623 | (pin bidirectional line (at 15.24 17.78 180) (length 2.54)
624 | (name "IO5" (effects (font (size 1.27 1.27))))
625 | (number "29" (effects (font (size 1.27 1.27))))
626 | )
627 | (pin input line (at -15.24 30.48 0) (length 2.54)
628 | (name "EN" (effects (font (size 1.27 1.27))))
629 | (number "3" (effects (font (size 1.27 1.27))))
630 | )
631 | (pin bidirectional line (at 15.24 0 180) (length 2.54)
632 | (name "IO18" (effects (font (size 1.27 1.27))))
633 | (number "30" (effects (font (size 1.27 1.27))))
634 | )
635 | (pin bidirectional line (at 15.24 -2.54 180) (length 2.54)
636 | (name "IO19" (effects (font (size 1.27 1.27))))
637 | (number "31" (effects (font (size 1.27 1.27))))
638 | )
639 | (pin unconnected line (at -12.7 -27.94 0) (length 2.54) hide
640 | (name "NC" (effects (font (size 1.27 1.27))))
641 | (number "32" (effects (font (size 1.27 1.27))))
642 | )
643 | (pin bidirectional line (at 15.24 -5.08 180) (length 2.54)
644 | (name "IO21" (effects (font (size 1.27 1.27))))
645 | (number "33" (effects (font (size 1.27 1.27))))
646 | )
647 | (pin bidirectional line (at 15.24 22.86 180) (length 2.54)
648 | (name "RXD0/IO3" (effects (font (size 1.27 1.27))))
649 | (number "34" (effects (font (size 1.27 1.27))))
650 | )
651 | (pin bidirectional line (at 15.24 27.94 180) (length 2.54)
652 | (name "TXD0/IO1" (effects (font (size 1.27 1.27))))
653 | (number "35" (effects (font (size 1.27 1.27))))
654 | )
655 | (pin bidirectional line (at 15.24 -7.62 180) (length 2.54)
656 | (name "IO22" (effects (font (size 1.27 1.27))))
657 | (number "36" (effects (font (size 1.27 1.27))))
658 | )
659 | (pin bidirectional line (at 15.24 -10.16 180) (length 2.54)
660 | (name "IO23" (effects (font (size 1.27 1.27))))
661 | (number "37" (effects (font (size 1.27 1.27))))
662 | )
663 | (pin passive line (at 0 -35.56 90) (length 2.54) hide
664 | (name "GND" (effects (font (size 1.27 1.27))))
665 | (number "38" (effects (font (size 1.27 1.27))))
666 | )
667 | (pin passive line (at 0 -35.56 90) (length 2.54) hide
668 | (name "GND" (effects (font (size 1.27 1.27))))
669 | (number "39" (effects (font (size 1.27 1.27))))
670 | )
671 | (pin input line (at -15.24 25.4 0) (length 2.54)
672 | (name "SENSOR_VP" (effects (font (size 1.27 1.27))))
673 | (number "4" (effects (font (size 1.27 1.27))))
674 | )
675 | (pin input line (at -15.24 22.86 0) (length 2.54)
676 | (name "SENSOR_VN" (effects (font (size 1.27 1.27))))
677 | (number "5" (effects (font (size 1.27 1.27))))
678 | )
679 | (pin input line (at 15.24 -25.4 180) (length 2.54)
680 | (name "IO34" (effects (font (size 1.27 1.27))))
681 | (number "6" (effects (font (size 1.27 1.27))))
682 | )
683 | (pin input line (at 15.24 -27.94 180) (length 2.54)
684 | (name "IO35" (effects (font (size 1.27 1.27))))
685 | (number "7" (effects (font (size 1.27 1.27))))
686 | )
687 | (pin bidirectional line (at 15.24 -20.32 180) (length 2.54)
688 | (name "IO32" (effects (font (size 1.27 1.27))))
689 | (number "8" (effects (font (size 1.27 1.27))))
690 | )
691 | (pin bidirectional line (at 15.24 -22.86 180) (length 2.54)
692 | (name "IO33" (effects (font (size 1.27 1.27))))
693 | (number "9" (effects (font (size 1.27 1.27))))
694 | )
695 | )
696 | )
697 | (symbol "Transistor_FET:BSS123" (pin_names hide) (in_bom yes) (on_board yes)
698 | (property "Reference" "Q" (id 0) (at 5.08 1.905 0)
699 | (effects (font (size 1.27 1.27)) (justify left))
700 | )
701 | (property "Value" "BSS123" (id 1) (at 5.08 0 0)
702 | (effects (font (size 1.27 1.27)) (justify left))
703 | )
704 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (id 2) (at 5.08 -1.905 0)
705 | (effects (font (size 1.27 1.27) italic) (justify left) hide)
706 | )
707 | (property "Datasheet" "http://www.diodes.com/assets/Datasheets/ds30366.pdf" (id 3) (at 0 0 0)
708 | (effects (font (size 1.27 1.27)) (justify left) hide)
709 | )
710 | (property "ki_keywords" "N-Channel MOSFET" (id 4) (at 0 0 0)
711 | (effects (font (size 1.27 1.27)) hide)
712 | )
713 | (property "ki_description" "0.17A Id, 100V Vds, N-Channel MOSFET, SOT-23" (id 5) (at 0 0 0)
714 | (effects (font (size 1.27 1.27)) hide)
715 | )
716 | (property "ki_fp_filters" "SOT?23*" (id 6) (at 0 0 0)
717 | (effects (font (size 1.27 1.27)) hide)
718 | )
719 | (symbol "BSS123_0_1"
720 | (circle (center 1.651 0) (radius 2.794) (stroke (width 0.254)) (fill (type none)))
721 | (circle (center 2.54 -1.778) (radius 0.254) (stroke (width 0)) (fill (type outline)))
722 | (circle (center 2.54 1.778) (radius 0.254) (stroke (width 0)) (fill (type outline)))
723 | (polyline
724 | (pts
725 | (xy 0.254 0)
726 | (xy -2.54 0)
727 | )
728 | (stroke (width 0)) (fill (type none))
729 | )
730 | (polyline
731 | (pts
732 | (xy 0.254 1.905)
733 | (xy 0.254 -1.905)
734 | )
735 | (stroke (width 0.254)) (fill (type none))
736 | )
737 | (polyline
738 | (pts
739 | (xy 0.762 -1.27)
740 | (xy 0.762 -2.286)
741 | )
742 | (stroke (width 0.254)) (fill (type none))
743 | )
744 | (polyline
745 | (pts
746 | (xy 0.762 0.508)
747 | (xy 0.762 -0.508)
748 | )
749 | (stroke (width 0.254)) (fill (type none))
750 | )
751 | (polyline
752 | (pts
753 | (xy 0.762 2.286)
754 | (xy 0.762 1.27)
755 | )
756 | (stroke (width 0.254)) (fill (type none))
757 | )
758 | (polyline
759 | (pts
760 | (xy 2.54 2.54)
761 | (xy 2.54 1.778)
762 | )
763 | (stroke (width 0)) (fill (type none))
764 | )
765 | (polyline
766 | (pts
767 | (xy 2.54 -2.54)
768 | (xy 2.54 0)
769 | (xy 0.762 0)
770 | )
771 | (stroke (width 0)) (fill (type none))
772 | )
773 | (polyline
774 | (pts
775 | (xy 0.762 -1.778)
776 | (xy 3.302 -1.778)
777 | (xy 3.302 1.778)
778 | (xy 0.762 1.778)
779 | )
780 | (stroke (width 0)) (fill (type none))
781 | )
782 | (polyline
783 | (pts
784 | (xy 1.016 0)
785 | (xy 2.032 0.381)
786 | (xy 2.032 -0.381)
787 | (xy 1.016 0)
788 | )
789 | (stroke (width 0)) (fill (type outline))
790 | )
791 | (polyline
792 | (pts
793 | (xy 2.794 0.508)
794 | (xy 2.921 0.381)
795 | (xy 3.683 0.381)
796 | (xy 3.81 0.254)
797 | )
798 | (stroke (width 0)) (fill (type none))
799 | )
800 | (polyline
801 | (pts
802 | (xy 3.302 0.381)
803 | (xy 2.921 -0.254)
804 | (xy 3.683 -0.254)
805 | (xy 3.302 0.381)
806 | )
807 | (stroke (width 0)) (fill (type none))
808 | )
809 | )
810 | (symbol "BSS123_1_1"
811 | (pin input line (at -5.08 0 0) (length 2.54)
812 | (name "G" (effects (font (size 1.27 1.27))))
813 | (number "1" (effects (font (size 1.27 1.27))))
814 | )
815 | (pin passive line (at 2.54 -5.08 90) (length 2.54)
816 | (name "S" (effects (font (size 1.27 1.27))))
817 | (number "2" (effects (font (size 1.27 1.27))))
818 | )
819 | (pin passive line (at 2.54 5.08 270) (length 2.54)
820 | (name "D" (effects (font (size 1.27 1.27))))
821 | (number "3" (effects (font (size 1.27 1.27))))
822 | )
823 | )
824 | )
825 | (symbol "asl_symbols:FDN340P" (pin_names hide) (in_bom yes) (on_board yes)
826 | (property "Reference" "Q" (id 0) (at 5.08 1.905 0)
827 | (effects (font (size 1.27 1.27)) (justify left))
828 | )
829 | (property "Value" "FDN340P" (id 1) (at 5.08 0 0)
830 | (effects (font (size 1.27 1.27)) (justify left))
831 | )
832 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (id 2) (at 5.08 -1.905 0)
833 | (effects (font (size 1.27 1.27) italic) (justify left) hide)
834 | )
835 | (property "Datasheet" "https://www.digikey.com/products/en?keywords=FDN340PCT-ND" (id 3) (at 0 0 0)
836 | (effects (font (size 1.27 1.27)) (justify left) hide)
837 | )
838 | (property "ki_keywords" "P-Channel MOSFET" (id 4) (at 0 0 0)
839 | (effects (font (size 1.27 1.27)) hide)
840 | )
841 | (property "ki_description" "P-Channel MOSFET, SOT-23" (id 5) (at 0 0 0)
842 | (effects (font (size 1.27 1.27)) hide)
843 | )
844 | (property "ki_fp_filters" "SOT?23*" (id 6) (at 0 0 0)
845 | (effects (font (size 1.27 1.27)) hide)
846 | )
847 | (symbol "FDN340P_0_1"
848 | (circle (center 1.651 0) (radius 2.794) (stroke (width 0.254)) (fill (type none)))
849 | (circle (center 2.54 -1.778) (radius 0.254) (stroke (width 0)) (fill (type outline)))
850 | (circle (center 2.54 1.778) (radius 0.254) (stroke (width 0)) (fill (type outline)))
851 | (polyline
852 | (pts
853 | (xy 0.254 0)
854 | (xy -2.54 0)
855 | )
856 | (stroke (width 0)) (fill (type none))
857 | )
858 | (polyline
859 | (pts
860 | (xy 0.254 1.905)
861 | (xy 0.254 -1.905)
862 | )
863 | (stroke (width 0.254)) (fill (type none))
864 | )
865 | (polyline
866 | (pts
867 | (xy 0.762 -1.27)
868 | (xy 0.762 -2.286)
869 | )
870 | (stroke (width 0.254)) (fill (type none))
871 | )
872 | (polyline
873 | (pts
874 | (xy 0.762 0.508)
875 | (xy 0.762 -0.508)
876 | )
877 | (stroke (width 0.254)) (fill (type none))
878 | )
879 | (polyline
880 | (pts
881 | (xy 0.762 2.286)
882 | (xy 0.762 1.27)
883 | )
884 | (stroke (width 0.254)) (fill (type none))
885 | )
886 | (polyline
887 | (pts
888 | (xy 2.54 2.54)
889 | (xy 2.54 1.778)
890 | )
891 | (stroke (width 0)) (fill (type none))
892 | )
893 | (polyline
894 | (pts
895 | (xy 2.54 -2.54)
896 | (xy 2.54 0)
897 | (xy 0.762 0)
898 | )
899 | (stroke (width 0)) (fill (type none))
900 | )
901 | (polyline
902 | (pts
903 | (xy 0.762 1.778)
904 | (xy 3.302 1.778)
905 | (xy 3.302 -1.778)
906 | (xy 0.762 -1.778)
907 | )
908 | (stroke (width 0)) (fill (type none))
909 | )
910 | (polyline
911 | (pts
912 | (xy 2.286 0)
913 | (xy 1.27 0.381)
914 | (xy 1.27 -0.381)
915 | (xy 2.286 0)
916 | )
917 | (stroke (width 0)) (fill (type outline))
918 | )
919 | (polyline
920 | (pts
921 | (xy 2.794 -0.508)
922 | (xy 2.921 -0.381)
923 | (xy 3.683 -0.381)
924 | (xy 3.81 -0.254)
925 | )
926 | (stroke (width 0)) (fill (type none))
927 | )
928 | (polyline
929 | (pts
930 | (xy 3.302 -0.381)
931 | (xy 2.921 0.254)
932 | (xy 3.683 0.254)
933 | (xy 3.302 -0.381)
934 | )
935 | (stroke (width 0)) (fill (type none))
936 | )
937 | )
938 | (symbol "FDN340P_1_1"
939 | (pin input line (at -5.08 0 0) (length 2.54)
940 | (name "G" (effects (font (size 1.27 1.27))))
941 | (number "1" (effects (font (size 1.27 1.27))))
942 | )
943 | (pin passive line (at 2.54 -5.08 90) (length 2.54)
944 | (name "S" (effects (font (size 1.27 1.27))))
945 | (number "2" (effects (font (size 1.27 1.27))))
946 | )
947 | (pin passive line (at 2.54 5.08 270) (length 2.54)
948 | (name "D" (effects (font (size 1.27 1.27))))
949 | (number "3" (effects (font (size 1.27 1.27))))
950 | )
951 | )
952 | )
953 | (symbol "asl_symbols_new:B3F-4000" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes)
954 | (property "Reference" "S" (id 0) (at -3.81 5.08 0)
955 | (effects (font (size 1.27 1.27)))
956 | )
957 | (property "Value" "B3F-4000" (id 1) (at 1.27 -5.08 0)
958 | (effects (font (size 1.27 1.27)))
959 | )
960 | (property "Footprint" "" (id 2) (at -3.81 -2.54 0)
961 | (effects (font (size 1.27 1.27)) hide)
962 | )
963 | (property "Datasheet" "https://www.digikey.com/products/en?keywords=B3F-4000" (id 3) (at -3.81 -2.54 0)
964 | (effects (font (size 1.27 1.27)) hide)
965 | )
966 | (property "ki_keywords" "SPST-NO tactile switch omron B3F-4000 12mm" (id 4) (at 0 0 0)
967 | (effects (font (size 1.27 1.27)) hide)
968 | )
969 | (property "ki_description" "12mm SPST-NO tactile switch" (id 5) (at 0 0 0)
970 | (effects (font (size 1.27 1.27)) hide)
971 | )
972 | (property "ki_fp_filters" "*tactile*" (id 6) (at 0 0 0)
973 | (effects (font (size 1.27 1.27)) hide)
974 | )
975 | (symbol "B3F-4000_0_1"
976 | (rectangle (start -5.08 3.81) (end 5.08 -3.81)
977 | (stroke (width 0)) (fill (type background))
978 | )
979 | (polyline
980 | (pts
981 | (xy -5.08 -1.27)
982 | (xy -5.08 1.27)
983 | )
984 | (stroke (width 0)) (fill (type none))
985 | )
986 | (polyline
987 | (pts
988 | (xy 0 0)
989 | (xy 5.08 0)
990 | )
991 | (stroke (width 0)) (fill (type none))
992 | )
993 | (polyline
994 | (pts
995 | (xy 5.08 -1.27)
996 | (xy 5.08 1.27)
997 | )
998 | (stroke (width 0)) (fill (type none))
999 | )
1000 | (polyline
1001 | (pts
1002 | (xy -5.08 0)
1003 | (xy -2.54 0)
1004 | (xy 0 2.54)
1005 | )
1006 | (stroke (width 0)) (fill (type none))
1007 | )
1008 | )
1009 | (symbol "B3F-4000_1_1"
1010 | (pin bidirectional line (at -7.62 1.27 0) (length 2.54)
1011 | (name "in1" (effects (font (size 1.27 1.27))))
1012 | (number "1" (effects (font (size 1.27 1.27))))
1013 | )
1014 | (pin bidirectional line (at -7.62 -1.27 0) (length 2.54)
1015 | (name "in2" (effects (font (size 1.27 1.27))))
1016 | (number "2" (effects (font (size 1.27 1.27))))
1017 | )
1018 | (pin bidirectional line (at 7.62 1.27 180) (length 2.54)
1019 | (name "out1" (effects (font (size 1.27 1.27))))
1020 | (number "3" (effects (font (size 1.27 1.27))))
1021 | )
1022 | (pin bidirectional line (at 7.62 -1.27 180) (length 2.54)
1023 | (name "out2" (effects (font (size 1.27 1.27))))
1024 | (number "4" (effects (font (size 1.27 1.27))))
1025 | )
1026 | )
1027 | )
1028 | (symbol "asl_symbols_new:RG_encoder_switch" (pin_names (offset 0.254) hide) (in_bom yes) (on_board yes)
1029 | (property "Reference" "SW" (id 0) (at 0 6.604 0)
1030 | (effects (font (size 1.27 1.27)))
1031 | )
1032 | (property "Value" "RG_encoder_switch" (id 1) (at 0 -6.604 0)
1033 | (effects (font (size 1.27 1.27)))
1034 | )
1035 | (property "Footprint" "asl_footprints:RG_Encoder" (id 2) (at -3.81 4.064 0)
1036 | (effects (font (size 1.27 1.27)) hide)
1037 | )
1038 | (property "Datasheet" "https://www.sparkfun.com/products/15140" (id 3) (at 0 6.604 0)
1039 | (effects (font (size 1.27 1.27)) hide)
1040 | )
1041 | (property "ki_keywords" "rotary switch encoder switch push button" (id 4) (at 0 0 0)
1042 | (effects (font (size 1.27 1.27)) hide)
1043 | )
1044 | (property "ki_description" "Rotary encoder with switch. Red and green LED knob" (id 5) (at 0 0 0)
1045 | (effects (font (size 1.27 1.27)) hide)
1046 | )
1047 | (property "ki_fp_filters" "RotaryEncoder*Switch*" (id 6) (at 0 0 0)
1048 | (effects (font (size 1.27 1.27)) hide)
1049 | )
1050 | (symbol "RG_encoder_switch_0_1"
1051 | (arc (start -0.381 -2.794) (end -0.381 2.667) (radius (at -0.381 -0.0508) (length 2.7432) (angles -89.9 89.9))
1052 | (stroke (width 0.254)) (fill (type none))
1053 | )
1054 | (circle (center -3.81 0) (radius 0.254) (stroke (width 0)) (fill (type outline)))
1055 | (circle (center -0.381 0) (radius 1.905) (stroke (width 0.254)) (fill (type none)))
1056 | (rectangle (start -5.08 5.08) (end 5.08 -5.08)
1057 | (stroke (width 0.254)) (fill (type background))
1058 | )
1059 | (polyline
1060 | (pts
1061 | (xy -0.635 -1.778)
1062 | (xy -0.635 1.778)
1063 | )
1064 | (stroke (width 0.254)) (fill (type none))
1065 | )
1066 | (polyline
1067 | (pts
1068 | (xy -0.381 -1.778)
1069 | (xy -0.381 1.778)
1070 | )
1071 | (stroke (width 0.254)) (fill (type none))
1072 | )
1073 | (polyline
1074 | (pts
1075 | (xy -0.127 1.778)
1076 | (xy -0.127 -1.778)
1077 | )
1078 | (stroke (width 0.254)) (fill (type none))
1079 | )
1080 | (polyline
1081 | (pts
1082 | (xy -5.08 -2.54)
1083 | (xy -3.81 -2.54)
1084 | (xy -3.81 -2.032)
1085 | )
1086 | (stroke (width 0)) (fill (type none))
1087 | )
1088 | (polyline
1089 | (pts
1090 | (xy -5.08 2.54)
1091 | (xy -3.81 2.54)
1092 | (xy -3.81 2.032)
1093 | )
1094 | (stroke (width 0)) (fill (type none))
1095 | )
1096 | (polyline
1097 | (pts
1098 | (xy 0.254 -3.048)
1099 | (xy -0.508 -2.794)
1100 | (xy 0.127 -2.413)
1101 | )
1102 | (stroke (width 0.254)) (fill (type none))
1103 | )
1104 | (polyline
1105 | (pts
1106 | (xy 0.254 2.921)
1107 | (xy -0.508 2.667)
1108 | (xy 0.127 2.286)
1109 | )
1110 | (stroke (width 0.254)) (fill (type none))
1111 | )
1112 | (polyline
1113 | (pts
1114 | (xy -5.08 0)
1115 | (xy -3.81 0)
1116 | (xy -3.81 -1.016)
1117 | (xy -3.302 -2.032)
1118 | )
1119 | (stroke (width 0)) (fill (type none))
1120 | )
1121 | (polyline
1122 | (pts
1123 | (xy -4.318 0)
1124 | (xy -3.81 0)
1125 | (xy -3.81 1.016)
1126 | (xy -3.302 2.032)
1127 | )
1128 | (stroke (width 0)) (fill (type none))
1129 | )
1130 | )
1131 | (symbol "RG_encoder_switch_1_1"
1132 | (pin passive line (at -7.62 2.54 0) (length 2.54)
1133 | (name "A" (effects (font (size 1.27 1.27))))
1134 | (number "A" (effects (font (size 1.27 1.27))))
1135 | )
1136 | (pin passive line (at -7.62 -2.54 0) (length 2.54)
1137 | (name "B" (effects (font (size 1.27 1.27))))
1138 | (number "B" (effects (font (size 1.27 1.27))))
1139 | )
1140 | (pin passive line (at -7.62 0 0) (length 2.54)
1141 | (name "C" (effects (font (size 1.27 1.27))))
1142 | (number "C" (effects (font (size 1.27 1.27))))
1143 | )
1144 | (pin passive line (at 7.62 -4.445 180) (length 2.54)
1145 | (name "S1" (effects (font (size 1.27 1.27))))
1146 | (number "S1" (effects (font (size 1.27 1.27))))
1147 | )
1148 | (pin passive line (at 7.62 -1.905 180) (length 2.54)
1149 | (name "S2" (effects (font (size 1.27 1.27))))
1150 | (number "S2" (effects (font (size 1.27 1.27))))
1151 | )
1152 | (pin input line (at 7.62 3.175 180) (length 2.54)
1153 | (name "S4" (effects (font (size 1.27 1.27))))
1154 | (number "S4" (effects (font (size 1.27 1.27))))
1155 | )
1156 | (pin input line (at 7.62 0.635 180) (length 2.54)
1157 | (name "S3" (effects (font (size 1.27 1.27))))
1158 | (number "S3" (effects (font (size 1.27 1.27))))
1159 | )
1160 | )
1161 | )
1162 | (symbol "asl_symbols_new:Threaded_Standoff" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
1163 | (property "Reference" "H" (id 0) (at 0 5.08 0)
1164 | (effects (font (size 1.27 1.27)))
1165 | )
1166 | (property "Value" "Threaded_Standoff" (id 1) (at 0 3.175 0)
1167 | (effects (font (size 1.27 1.27)))
1168 | )
1169 | (property "Footprint" "asl_footprints:standoff_nut" (id 2) (at 0 0 0)
1170 | (effects (font (size 1.27 1.27)) hide)
1171 | )
1172 | (property "Datasheet" "https://www.adafruit.com/product/4207" (id 3) (at 0 0 0)
1173 | (effects (font (size 1.27 1.27)) hide)
1174 | )
1175 | (property "ki_keywords" "mounting hole, m3" (id 4) (at 0 0 0)
1176 | (effects (font (size 1.27 1.27)) hide)
1177 | )
1178 | (property "ki_description" "Mounting Hole without connection" (id 5) (at 0 0 0)
1179 | (effects (font (size 1.27 1.27)) hide)
1180 | )
1181 | (property "ki_fp_filters" "MountingHole*" (id 6) (at 0 0 0)
1182 | (effects (font (size 1.27 1.27)) hide)
1183 | )
1184 | (symbol "Threaded_Standoff_0_1"
1185 | (circle (center 0 0) (radius 1.27) (stroke (width 1.27)) (fill (type none)))
1186 | )
1187 | )
1188 | (symbol "power:GND" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes)
1189 | (property "Reference" "#PWR" (id 0) (at 0 -6.35 0)
1190 | (effects (font (size 1.27 1.27)) hide)
1191 | )
1192 | (property "Value" "GND" (id 1) (at 0 -3.81 0)
1193 | (effects (font (size 1.27 1.27)))
1194 | )
1195 | (property "Footprint" "" (id 2) (at 0 0 0)
1196 | (effects (font (size 1.27 1.27)) hide)
1197 | )
1198 | (property "Datasheet" "" (id 3) (at 0 0 0)
1199 | (effects (font (size 1.27 1.27)) hide)
1200 | )
1201 | (property "ki_keywords" "power-flag" (id 4) (at 0 0 0)
1202 | (effects (font (size 1.27 1.27)) hide)
1203 | )
1204 | (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (id 5) (at 0 0 0)
1205 | (effects (font (size 1.27 1.27)) hide)
1206 | )
1207 | (symbol "GND_0_1"
1208 | (polyline
1209 | (pts
1210 | (xy 0 0)
1211 | (xy 0 -1.27)
1212 | (xy 1.27 -1.27)
1213 | (xy 0 -2.54)
1214 | (xy -1.27 -1.27)
1215 | (xy 0 -1.27)
1216 | )
1217 | (stroke (width 0)) (fill (type none))
1218 | )
1219 | )
1220 | (symbol "GND_1_1"
1221 | (pin power_in line (at 0 0 270) (length 0) hide
1222 | (name "GND" (effects (font (size 1.27 1.27))))
1223 | (number "1" (effects (font (size 1.27 1.27))))
1224 | )
1225 | )
1226 | )
1227 | )
1228 |
1229 | (junction (at 33.655 38.1) (diameter 1.016) (color 0 0 0 0))
1230 | (junction (at 33.655 52.07) (diameter 1.016) (color 0 0 0 0))
1231 | (junction (at 33.655 66.04) (diameter 1.016) (color 0 0 0 0))
1232 | (junction (at 33.655 80.01) (diameter 1.016) (color 0 0 0 0))
1233 | (junction (at 33.655 93.345) (diameter 1.016) (color 0 0 0 0))
1234 | (junction (at 62.23 136.525) (diameter 1.016) (color 0 0 0 0))
1235 | (junction (at 66.04 144.145) (diameter 1.016) (color 0 0 0 0))
1236 | (junction (at 66.04 165.735) (diameter 1.016) (color 0 0 0 0))
1237 | (junction (at 69.85 136.525) (diameter 1.016) (color 0 0 0 0))
1238 | (junction (at 69.85 144.145) (diameter 1.016) (color 0 0 0 0))
1239 | (junction (at 76.2 151.765) (diameter 1.016) (color 0 0 0 0))
1240 | (junction (at 81.28 151.765) (diameter 1.016) (color 0 0 0 0))
1241 | (junction (at 82.55 144.145) (diameter 1.016) (color 0 0 0 0))
1242 | (junction (at 109.855 120.015) (diameter 1.016) (color 0 0 0 0))
1243 |
1244 | (no_connect (at 94.615 57.785))
1245 | (no_connect (at 94.615 62.865))
1246 | (no_connect (at 125.095 95.885))
1247 | (no_connect (at 48.895 93.345))
1248 | (no_connect (at 94.615 65.405))
1249 | (no_connect (at 94.615 70.485))
1250 | (no_connect (at 94.615 103.505))
1251 | (no_connect (at 125.095 88.265))
1252 | (no_connect (at 48.895 80.01))
1253 | (no_connect (at 48.895 66.04))
1254 | (no_connect (at 94.615 108.585))
1255 | (no_connect (at 94.615 67.945))
1256 | (no_connect (at 125.095 93.345))
1257 | (no_connect (at 125.095 90.805))
1258 | (no_connect (at 94.615 106.045))
1259 | (no_connect (at 125.095 85.725))
1260 | (no_connect (at 125.095 57.785))
1261 | (no_connect (at 48.895 52.07))
1262 | (no_connect (at 94.615 111.125))
1263 | (no_connect (at 94.615 73.025))
1264 | (no_connect (at 48.895 38.1))
1265 | (no_connect (at 125.095 60.325))
1266 | (no_connect (at 125.095 83.185))
1267 |
1268 | (wire (pts (xy 33.655 40.64) (xy 33.655 38.1))
1269 | (stroke (width 0) (type solid) (color 0 0 0 0))
1270 | )
1271 | (wire (pts (xy 33.655 54.61) (xy 33.655 52.07))
1272 | (stroke (width 0) (type solid) (color 0 0 0 0))
1273 | )
1274 | (wire (pts (xy 33.655 68.58) (xy 33.655 66.04))
1275 | (stroke (width 0) (type solid) (color 0 0 0 0))
1276 | )
1277 | (wire (pts (xy 33.655 82.55) (xy 33.655 80.01))
1278 | (stroke (width 0) (type solid) (color 0 0 0 0))
1279 | )
1280 | (wire (pts (xy 33.655 93.345) (xy 33.655 95.885))
1281 | (stroke (width 0) (type solid) (color 0 0 0 0))
1282 | )
1283 | (wire (pts (xy 48.895 77.47) (xy 48.895 68.58))
1284 | (stroke (width 0) (type solid) (color 0 0 0 0))
1285 | )
1286 | (wire (pts (xy 48.895 77.47) (xy 60.325 77.47))
1287 | (stroke (width 0) (type solid) (color 0 0 0 0))
1288 | )
1289 | (wire (pts (xy 48.895 82.55) (xy 52.07 82.55))
1290 | (stroke (width 0) (type solid) (color 0 0 0 0))
1291 | )
1292 | (wire (pts (xy 48.895 136.525) (xy 48.895 146.05))
1293 | (stroke (width 0) (type solid) (color 0 0 0 0))
1294 | )
1295 | (wire (pts (xy 48.895 136.525) (xy 62.23 136.525))
1296 | (stroke (width 0) (type solid) (color 0 0 0 0))
1297 | )
1298 | (wire (pts (xy 48.895 156.21) (xy 48.895 165.735))
1299 | (stroke (width 0) (type solid) (color 0 0 0 0))
1300 | )
1301 | (wire (pts (xy 48.895 165.735) (xy 66.04 165.735))
1302 | (stroke (width 0) (type solid) (color 0 0 0 0))
1303 | )
1304 | (wire (pts (xy 51.435 88.265) (xy 51.435 95.885))
1305 | (stroke (width 0) (type solid) (color 0 0 0 0))
1306 | )
1307 | (wire (pts (xy 51.435 88.265) (xy 94.615 88.265))
1308 | (stroke (width 0) (type solid) (color 0 0 0 0))
1309 | )
1310 | (wire (pts (xy 51.435 95.885) (xy 48.895 95.885))
1311 | (stroke (width 0) (type solid) (color 0 0 0 0))
1312 | )
1313 | (wire (pts (xy 52.07 82.55) (xy 52.07 85.725))
1314 | (stroke (width 0) (type solid) (color 0 0 0 0))
1315 | )
1316 | (wire (pts (xy 52.07 85.725) (xy 94.615 85.725))
1317 | (stroke (width 0) (type solid) (color 0 0 0 0))
1318 | )
1319 | (wire (pts (xy 53.34 54.61) (xy 48.895 54.61))
1320 | (stroke (width 0) (type solid) (color 0 0 0 0))
1321 | )
1322 | (wire (pts (xy 53.34 54.61) (xy 53.34 74.295))
1323 | (stroke (width 0) (type solid) (color 0 0 0 0))
1324 | )
1325 | (wire (pts (xy 53.34 102.87) (xy 57.15 102.87))
1326 | (stroke (width 0) (type solid) (color 0 0 0 0))
1327 | )
1328 | (wire (pts (xy 53.34 105.41) (xy 57.15 105.41))
1329 | (stroke (width 0) (type solid) (color 0 0 0 0))
1330 | )
1331 | (wire (pts (xy 53.34 107.95) (xy 57.15 107.95))
1332 | (stroke (width 0) (type solid) (color 0 0 0 0))
1333 | )
1334 | (wire (pts (xy 53.34 110.49) (xy 57.15 110.49))
1335 | (stroke (width 0) (type solid) (color 0 0 0 0))
1336 | )
1337 | (wire (pts (xy 57.785 40.64) (xy 48.895 40.64))
1338 | (stroke (width 0) (type solid) (color 0 0 0 0))
1339 | )
1340 | (wire (pts (xy 57.785 40.64) (xy 57.785 72.39))
1341 | (stroke (width 0) (type solid) (color 0 0 0 0))
1342 | )
1343 | (wire (pts (xy 60.325 77.47) (xy 60.325 83.185))
1344 | (stroke (width 0) (type solid) (color 0 0 0 0))
1345 | )
1346 | (wire (pts (xy 60.325 83.185) (xy 94.615 83.185))
1347 | (stroke (width 0) (type solid) (color 0 0 0 0))
1348 | )
1349 | (wire (pts (xy 62.23 74.295) (xy 53.34 74.295))
1350 | (stroke (width 0) (type solid) (color 0 0 0 0))
1351 | )
1352 | (wire (pts (xy 62.23 80.645) (xy 62.23 74.295))
1353 | (stroke (width 0) (type solid) (color 0 0 0 0))
1354 | )
1355 | (wire (pts (xy 62.23 136.525) (xy 69.85 136.525))
1356 | (stroke (width 0) (type solid) (color 0 0 0 0))
1357 | )
1358 | (wire (pts (xy 62.23 137.795) (xy 62.23 136.525))
1359 | (stroke (width 0) (type solid) (color 0 0 0 0))
1360 | )
1361 | (wire (pts (xy 62.23 144.145) (xy 62.23 142.875))
1362 | (stroke (width 0) (type solid) (color 0 0 0 0))
1363 | )
1364 | (wire (pts (xy 62.23 144.145) (xy 66.04 144.145))
1365 | (stroke (width 0) (type solid) (color 0 0 0 0))
1366 | )
1367 | (wire (pts (xy 64.135 72.39) (xy 57.785 72.39))
1368 | (stroke (width 0) (type solid) (color 0 0 0 0))
1369 | )
1370 | (wire (pts (xy 64.135 78.105) (xy 64.135 72.39))
1371 | (stroke (width 0) (type solid) (color 0 0 0 0))
1372 | )
1373 | (wire (pts (xy 66.04 144.145) (xy 69.85 144.145))
1374 | (stroke (width 0) (type solid) (color 0 0 0 0))
1375 | )
1376 | (wire (pts (xy 66.04 146.685) (xy 66.04 144.145))
1377 | (stroke (width 0) (type solid) (color 0 0 0 0))
1378 | )
1379 | (wire (pts (xy 66.04 156.845) (xy 66.04 165.735))
1380 | (stroke (width 0) (type solid) (color 0 0 0 0))
1381 | )
1382 | (wire (pts (xy 69.85 136.525) (xy 77.47 136.525))
1383 | (stroke (width 0) (type solid) (color 0 0 0 0))
1384 | )
1385 | (wire (pts (xy 72.39 90.805) (xy 72.39 103.505))
1386 | (stroke (width 0) (type solid) (color 0 0 0 0))
1387 | )
1388 | (wire (pts (xy 72.39 90.805) (xy 94.615 90.805))
1389 | (stroke (width 0) (type solid) (color 0 0 0 0))
1390 | )
1391 | (wire (pts (xy 72.39 106.045) (xy 85.09 106.045))
1392 | (stroke (width 0) (type solid) (color 0 0 0 0))
1393 | )
1394 | (wire (pts (xy 76.2 151.765) (xy 73.66 151.765))
1395 | (stroke (width 0) (type solid) (color 0 0 0 0))
1396 | )
1397 | (wire (pts (xy 76.2 151.765) (xy 76.2 155.575))
1398 | (stroke (width 0) (type solid) (color 0 0 0 0))
1399 | )
1400 | (wire (pts (xy 76.2 151.765) (xy 81.28 151.765))
1401 | (stroke (width 0) (type solid) (color 0 0 0 0))
1402 | )
1403 | (wire (pts (xy 76.2 160.655) (xy 76.2 165.735))
1404 | (stroke (width 0) (type solid) (color 0 0 0 0))
1405 | )
1406 | (wire (pts (xy 76.2 165.735) (xy 66.04 165.735))
1407 | (stroke (width 0) (type solid) (color 0 0 0 0))
1408 | )
1409 | (wire (pts (xy 76.835 93.345) (xy 94.615 93.345))
1410 | (stroke (width 0) (type solid) (color 0 0 0 0))
1411 | )
1412 | (wire (pts (xy 76.835 108.585) (xy 72.39 108.585))
1413 | (stroke (width 0) (type solid) (color 0 0 0 0))
1414 | )
1415 | (wire (pts (xy 76.835 108.585) (xy 76.835 93.345))
1416 | (stroke (width 0) (type solid) (color 0 0 0 0))
1417 | )
1418 | (wire (pts (xy 77.47 64.135) (xy 77.47 75.565))
1419 | (stroke (width 0) (type solid) (color 0 0 0 0))
1420 | )
1421 | (wire (pts (xy 77.47 75.565) (xy 94.615 75.565))
1422 | (stroke (width 0) (type solid) (color 0 0 0 0))
1423 | )
1424 | (wire (pts (xy 81.28 151.765) (xy 87.63 151.765))
1425 | (stroke (width 0) (type solid) (color 0 0 0 0))
1426 | )
1427 | (wire (pts (xy 81.28 154.305) (xy 81.28 151.765))
1428 | (stroke (width 0) (type solid) (color 0 0 0 0))
1429 | )
1430 | (wire (pts (xy 81.28 159.385) (xy 81.28 160.655))
1431 | (stroke (width 0) (type solid) (color 0 0 0 0))
1432 | )
1433 | (wire (pts (xy 81.28 160.655) (xy 88.9 160.655))
1434 | (stroke (width 0) (type solid) (color 0 0 0 0))
1435 | )
1436 | (wire (pts (xy 82.55 144.145) (xy 69.85 144.145))
1437 | (stroke (width 0) (type solid) (color 0 0 0 0))
1438 | )
1439 | (wire (pts (xy 82.55 144.145) (xy 102.87 144.145))
1440 | (stroke (width 0) (type solid) (color 0 0 0 0))
1441 | )
1442 | (wire (pts (xy 85.09 106.045) (xy 85.09 120.015))
1443 | (stroke (width 0) (type solid) (color 0 0 0 0))
1444 | )
1445 | (wire (pts (xy 85.09 120.015) (xy 109.855 120.015))
1446 | (stroke (width 0) (type solid) (color 0 0 0 0))
1447 | )
1448 | (wire (pts (xy 87.63 136.525) (xy 93.345 136.525))
1449 | (stroke (width 0) (type solid) (color 0 0 0 0))
1450 | )
1451 | (wire (pts (xy 91.44 95.885) (xy 94.615 95.885))
1452 | (stroke (width 0) (type solid) (color 0 0 0 0))
1453 | )
1454 | (wire (pts (xy 91.44 98.425) (xy 94.615 98.425))
1455 | (stroke (width 0) (type solid) (color 0 0 0 0))
1456 | )
1457 | (wire (pts (xy 91.44 100.965) (xy 94.615 100.965))
1458 | (stroke (width 0) (type solid) (color 0 0 0 0))
1459 | )
1460 | (wire (pts (xy 92.075 165.735) (xy 95.25 165.735))
1461 | (stroke (width 0) (type solid) (color 0 0 0 0))
1462 | )
1463 | (wire (pts (xy 92.71 52.705) (xy 94.615 52.705))
1464 | (stroke (width 0) (type solid) (color 0 0 0 0))
1465 | )
1466 | (wire (pts (xy 92.71 55.245) (xy 94.615 55.245))
1467 | (stroke (width 0) (type solid) (color 0 0 0 0))
1468 | )
1469 | (wire (pts (xy 92.71 60.325) (xy 94.615 60.325))
1470 | (stroke (width 0) (type solid) (color 0 0 0 0))
1471 | )
1472 | (wire (pts (xy 94.615 78.105) (xy 64.135 78.105))
1473 | (stroke (width 0) (type solid) (color 0 0 0 0))
1474 | )
1475 | (wire (pts (xy 94.615 80.645) (xy 62.23 80.645))
1476 | (stroke (width 0) (type solid) (color 0 0 0 0))
1477 | )
1478 | (wire (pts (xy 95.25 156.845) (xy 95.25 165.735))
1479 | (stroke (width 0) (type solid) (color 0 0 0 0))
1480 | )
1481 | (wire (pts (xy 102.87 144.145) (xy 102.87 151.765))
1482 | (stroke (width 0) (type solid) (color 0 0 0 0))
1483 | )
1484 | (wire (pts (xy 109.855 45.085) (xy 109.855 47.625))
1485 | (stroke (width 0) (type solid) (color 0 0 0 0))
1486 | )
1487 | (wire (pts (xy 109.855 118.745) (xy 109.855 120.015))
1488 | (stroke (width 0) (type solid) (color 0 0 0 0))
1489 | )
1490 | (wire (pts (xy 109.855 120.015) (xy 109.855 121.285))
1491 | (stroke (width 0) (type solid) (color 0 0 0 0))
1492 | )
1493 | (wire (pts (xy 125.095 52.705) (xy 127.635 52.705))
1494 | (stroke (width 0) (type solid) (color 0 0 0 0))
1495 | )
1496 | (wire (pts (xy 127.635 45.085) (xy 109.855 45.085))
1497 | (stroke (width 0) (type solid) (color 0 0 0 0))
1498 | )
1499 | (wire (pts (xy 138.43 60.96) (xy 142.24 60.96))
1500 | (stroke (width 0) (type solid) (color 0 0 0 0))
1501 | )
1502 | (wire (pts (xy 138.43 63.5) (xy 142.24 63.5))
1503 | (stroke (width 0) (type solid) (color 0 0 0 0))
1504 | )
1505 | (wire (pts (xy 138.43 66.04) (xy 142.24 66.04))
1506 | (stroke (width 0) (type solid) (color 0 0 0 0))
1507 | )
1508 | (wire (pts (xy 154.94 60.96) (xy 158.75 60.96))
1509 | (stroke (width 0) (type solid) (color 0 0 0 0))
1510 | )
1511 | (wire (pts (xy 154.94 63.5) (xy 158.75 63.5))
1512 | (stroke (width 0) (type solid) (color 0 0 0 0))
1513 | )
1514 | (wire (pts (xy 154.94 66.04) (xy 158.75 66.04))
1515 | (stroke (width 0) (type solid) (color 0 0 0 0))
1516 | )
1517 |
1518 | (label "VBATT" (at 48.895 136.525 0)
1519 | (effects (font (size 1.27 1.27)) (justify left bottom))
1520 | )
1521 | (label "SW" (at 53.34 102.87 180)
1522 | (effects (font (size 1.27 1.27)) (justify right bottom))
1523 | )
1524 | (label "RED_LED" (at 53.34 105.41 180)
1525 | (effects (font (size 1.27 1.27)) (justify right bottom))
1526 | )
1527 | (label "GREEN_LED" (at 53.34 107.95 180)
1528 | (effects (font (size 1.27 1.27)) (justify right bottom))
1529 | )
1530 | (label "BTN" (at 88.9 160.655 0)
1531 | (effects (font (size 1.27 1.27)) (justify left bottom))
1532 | )
1533 | (label "BTN" (at 91.44 95.885 180)
1534 | (effects (font (size 1.27 1.27)) (justify right bottom))
1535 | )
1536 | (label "RED_LED" (at 91.44 98.425 180)
1537 | (effects (font (size 1.27 1.27)) (justify right bottom))
1538 | )
1539 | (label "GREEN_LED" (at 91.44 100.965 180)
1540 | (effects (font (size 1.27 1.27)) (justify right bottom))
1541 | )
1542 | (label "SW" (at 92.075 165.735 0)
1543 | (effects (font (size 1.27 1.27)) (justify left bottom))
1544 | )
1545 | (label "IO0" (at 92.71 52.705 180)
1546 | (effects (font (size 1.27 1.27)) (justify right bottom))
1547 | )
1548 | (label "TXDO" (at 92.71 55.245 180)
1549 | (effects (font (size 1.27 1.27)) (justify right bottom))
1550 | )
1551 | (label "RXDO" (at 92.71 60.325 180)
1552 | (effects (font (size 1.27 1.27)) (justify right bottom))
1553 | )
1554 | (label "VIN" (at 93.345 136.525 0)
1555 | (effects (font (size 1.27 1.27)) (justify left bottom))
1556 | )
1557 | (label "VIN" (at 109.855 45.085 0)
1558 | (effects (font (size 1.27 1.27)) (justify left bottom))
1559 | )
1560 | (label "EN" (at 127.635 52.705 180)
1561 | (effects (font (size 1.27 1.27)) (justify right bottom))
1562 | )
1563 | (label "EN" (at 138.43 60.96 180)
1564 | (effects (font (size 1.27 1.27)) (justify right bottom))
1565 | )
1566 | (label "TXDO" (at 138.43 63.5 180)
1567 | (effects (font (size 1.27 1.27)) (justify right bottom))
1568 | )
1569 | (label "RXDO" (at 138.43 66.04 180)
1570 | (effects (font (size 1.27 1.27)) (justify right bottom))
1571 | )
1572 | (label "VIN" (at 158.75 60.96 0)
1573 | (effects (font (size 1.27 1.27)) (justify left bottom))
1574 | )
1575 | (label "GND" (at 158.75 63.5 0)
1576 | (effects (font (size 1.27 1.27)) (justify left bottom))
1577 | )
1578 | (label "IO0" (at 158.75 66.04 0)
1579 | (effects (font (size 1.27 1.27)) (justify left bottom))
1580 | )
1581 |
1582 | (symbol (lib_id "power:GND") (at 33.655 38.1 0) (mirror x) (unit 1)
1583 | (in_bom yes) (on_board yes)
1584 | (uuid "04a67598-c5b6-47da-a73e-3a3e5030719a")
1585 | (property "Reference" "#PWR0102" (id 0) (at 33.655 31.75 0)
1586 | (effects (font (size 1.27 1.27)) hide)
1587 | )
1588 | (property "Value" "GND" (id 1) (at 33.7693 33.7756 0))
1589 | (property "Footprint" "" (id 2) (at 33.655 38.1 0)
1590 | (effects (font (size 1.27 1.27)) hide)
1591 | )
1592 | (property "Datasheet" "" (id 3) (at 33.655 38.1 0)
1593 | (effects (font (size 1.27 1.27)) hide)
1594 | )
1595 | )
1596 |
1597 | (symbol (lib_id "power:GND") (at 33.655 52.07 0) (mirror x) (unit 1)
1598 | (in_bom yes) (on_board yes)
1599 | (uuid "11151542-eabf-4be3-96d6-91c655be8fe7")
1600 | (property "Reference" "#PWR0106" (id 0) (at 33.655 45.72 0)
1601 | (effects (font (size 1.27 1.27)) hide)
1602 | )
1603 | (property "Value" "GND" (id 1) (at 33.7693 47.7456 0))
1604 | (property "Footprint" "" (id 2) (at 33.655 52.07 0)
1605 | (effects (font (size 1.27 1.27)) hide)
1606 | )
1607 | (property "Datasheet" "" (id 3) (at 33.655 52.07 0)
1608 | (effects (font (size 1.27 1.27)) hide)
1609 | )
1610 | )
1611 |
1612 | (symbol (lib_id "power:GND") (at 33.655 66.04 0) (mirror x) (unit 1)
1613 | (in_bom yes) (on_board yes)
1614 | (uuid "be15bfd8-fa29-4b02-a976-06033a9594ec")
1615 | (property "Reference" "#PWR0104" (id 0) (at 33.655 59.69 0)
1616 | (effects (font (size 1.27 1.27)) hide)
1617 | )
1618 | (property "Value" "GND" (id 1) (at 33.7693 61.7156 0))
1619 | (property "Footprint" "" (id 2) (at 33.655 66.04 0)
1620 | (effects (font (size 1.27 1.27)) hide)
1621 | )
1622 | (property "Datasheet" "" (id 3) (at 33.655 66.04 0)
1623 | (effects (font (size 1.27 1.27)) hide)
1624 | )
1625 | )
1626 |
1627 | (symbol (lib_id "power:GND") (at 33.655 80.01 0) (mirror x) (unit 1)
1628 | (in_bom yes) (on_board yes)
1629 | (uuid "021be944-363e-41f2-88ae-8a574d14035a")
1630 | (property "Reference" "#PWR0105" (id 0) (at 33.655 73.66 0)
1631 | (effects (font (size 1.27 1.27)) hide)
1632 | )
1633 | (property "Value" "GND" (id 1) (at 33.7693 75.6856 0))
1634 | (property "Footprint" "" (id 2) (at 33.655 80.01 0)
1635 | (effects (font (size 1.27 1.27)) hide)
1636 | )
1637 | (property "Datasheet" "" (id 3) (at 33.655 80.01 0)
1638 | (effects (font (size 1.27 1.27)) hide)
1639 | )
1640 | )
1641 |
1642 | (symbol (lib_id "power:GND") (at 33.655 93.345 0) (mirror x) (unit 1)
1643 | (in_bom yes) (on_board yes)
1644 | (uuid "7f2773dc-c46a-4cdd-a40b-08dbd3b403a1")
1645 | (property "Reference" "#PWR0107" (id 0) (at 33.655 86.995 0)
1646 | (effects (font (size 1.27 1.27)) hide)
1647 | )
1648 | (property "Value" "GND" (id 1) (at 33.7693 89.0206 0))
1649 | (property "Footprint" "" (id 2) (at 33.655 93.345 0)
1650 | (effects (font (size 1.27 1.27)) hide)
1651 | )
1652 | (property "Datasheet" "" (id 3) (at 33.655 93.345 0)
1653 | (effects (font (size 1.27 1.27)) hide)
1654 | )
1655 | )
1656 |
1657 | (symbol (lib_id "power:GND") (at 53.34 110.49 0) (mirror y) (unit 1)
1658 | (in_bom yes) (on_board yes)
1659 | (uuid "f27138d9-c1c4-4b60-af70-25cd188ef851")
1660 | (property "Reference" "#PWR03" (id 0) (at 53.34 116.84 0)
1661 | (effects (font (size 1.27 1.27)) hide)
1662 | )
1663 | (property "Value" "GND" (id 1) (at 53.2257 114.8144 0))
1664 | (property "Footprint" "" (id 2) (at 53.34 110.49 0)
1665 | (effects (font (size 1.27 1.27)) hide)
1666 | )
1667 | (property "Datasheet" "" (id 3) (at 53.34 110.49 0)
1668 | (effects (font (size 1.27 1.27)) hide)
1669 | )
1670 | )
1671 |
1672 | (symbol (lib_id "power:GND") (at 66.04 165.735 0) (mirror y) (unit 1)
1673 | (in_bom yes) (on_board yes)
1674 | (uuid "98c93dd4-b0d8-46df-b1d2-81941832add6")
1675 | (property "Reference" "#PWR04" (id 0) (at 66.04 172.085 0)
1676 | (effects (font (size 1.27 1.27)) hide)
1677 | )
1678 | (property "Value" "GND" (id 1) (at 65.913 170.1292 0))
1679 | (property "Footprint" "" (id 2) (at 66.04 165.735 0)
1680 | (effects (font (size 1.27 1.27)) hide)
1681 | )
1682 | (property "Datasheet" "" (id 3) (at 66.04 165.735 0)
1683 | (effects (font (size 1.27 1.27)) hide)
1684 | )
1685 | )
1686 |
1687 | (symbol (lib_id "power:GND") (at 77.47 64.135 180) (unit 1)
1688 | (in_bom yes) (on_board yes)
1689 | (uuid "f034667b-4054-4078-8f83-a4c4a0b304c9")
1690 | (property "Reference" "#PWR01" (id 0) (at 77.47 57.785 0)
1691 | (effects (font (size 1.27 1.27)) hide)
1692 | )
1693 | (property "Value" "GND" (id 1) (at 77.3557 59.8106 0))
1694 | (property "Footprint" "" (id 2) (at 77.47 64.135 0)
1695 | (effects (font (size 1.27 1.27)) hide)
1696 | )
1697 | (property "Datasheet" "" (id 3) (at 77.47 64.135 0)
1698 | (effects (font (size 1.27 1.27)) hide)
1699 | )
1700 | )
1701 |
1702 | (symbol (lib_id "power:GND") (at 109.855 121.285 0) (mirror y) (unit 1)
1703 | (in_bom yes) (on_board yes)
1704 | (uuid "f79f7256-167e-4143-a350-4120bebbeb6d")
1705 | (property "Reference" "#PWR0101" (id 0) (at 109.855 127.635 0)
1706 | (effects (font (size 1.27 1.27)) hide)
1707 | )
1708 | (property "Value" "GND" (id 1) (at 109.728 125.6792 0))
1709 | (property "Footprint" "" (id 2) (at 109.855 121.285 0)
1710 | (effects (font (size 1.27 1.27)) hide)
1711 | )
1712 | (property "Datasheet" "" (id 3) (at 109.855 121.285 0)
1713 | (effects (font (size 1.27 1.27)) hide)
1714 | )
1715 | )
1716 |
1717 | (symbol (lib_id "Device:R_Small_US") (at 62.23 140.335 0) (mirror x) (unit 1)
1718 | (in_bom yes) (on_board yes)
1719 | (uuid "1c5d45a8-b529-414b-82bb-378ea10698d3")
1720 | (property "Reference" "R1" (id 0) (at 58.42 139.065 0))
1721 | (property "Value" "100KΩ" (id 1) (at 57.15 141.605 0))
1722 | (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 62.23 140.335 0)
1723 | (effects (font (size 1.27 1.27)) hide)
1724 | )
1725 | (property "Datasheet" "~" (id 3) (at 62.23 140.335 0)
1726 | (effects (font (size 1.27 1.27)) hide)
1727 | )
1728 | )
1729 |
1730 | (symbol (lib_id "Device:R_Small_US") (at 76.2 158.115 0) (mirror x) (unit 1)
1731 | (in_bom yes) (on_board yes)
1732 | (uuid "26f5ad76-ecf5-4624-b7c6-8517afeb1dfe")
1733 | (property "Reference" "R4" (id 0) (at 72.39 156.845 0))
1734 | (property "Value" "1MΩ" (id 1) (at 72.39 159.385 0))
1735 | (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 76.2 158.115 0)
1736 | (effects (font (size 1.27 1.27)) hide)
1737 | )
1738 | (property "Datasheet" "~" (id 3) (at 76.2 158.115 0)
1739 | (effects (font (size 1.27 1.27)) hide)
1740 | )
1741 | )
1742 |
1743 | (symbol (lib_id "Device:R_Small_US") (at 81.28 156.845 180) (unit 1)
1744 | (in_bom yes) (on_board yes)
1745 | (uuid "cf171abc-e219-4519-be37-3734e11e5d45")
1746 | (property "Reference" "R3" (id 0) (at 85.09 158.115 0))
1747 | (property "Value" "330Ω" (id 1) (at 86.36 155.575 0))
1748 | (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 81.28 156.845 0)
1749 | (effects (font (size 1.27 1.27)) hide)
1750 | )
1751 | (property "Datasheet" "~" (id 3) (at 81.28 156.845 0)
1752 | (effects (font (size 1.27 1.27)) hide)
1753 | )
1754 | )
1755 |
1756 | (symbol (lib_id "asl_symbols_new:Threaded_Standoff") (at 146.05 96.52 0) (unit 1)
1757 | (in_bom yes) (on_board yes)
1758 | (uuid "ee47bf5f-b88a-4226-901d-96cfa8cf97a4")
1759 | (property "Reference" "H3" (id 0) (at 148.5901 95.3706 0)
1760 | (effects (font (size 1.27 1.27)) (justify left))
1761 | )
1762 | (property "Value" "4207" (id 1) (at 148.5901 97.6693 0)
1763 | (effects (font (size 1.27 1.27)) (justify left))
1764 | )
1765 | (property "Footprint" "asl_footprints:standoff_nut" (id 2) (at 146.05 96.52 0)
1766 | (effects (font (size 1.27 1.27)) hide)
1767 | )
1768 | (property "Datasheet" "https://www.adafruit.com/product/4207" (id 3) (at 146.05 96.52 0)
1769 | (effects (font (size 1.27 1.27)) hide)
1770 | )
1771 | (property "Description" "Threaded Standoff" (id 4) (at 146.05 96.52 0)
1772 | (effects (font (size 1.27 1.27)) hide)
1773 | )
1774 | )
1775 |
1776 | (symbol (lib_id "asl_symbols_new:Threaded_Standoff") (at 146.05 107.315 0) (unit 1)
1777 | (in_bom yes) (on_board yes)
1778 | (uuid "fa171690-08cb-419b-b572-12640e3141ee")
1779 | (property "Reference" "H4" (id 0) (at 148.5901 106.1656 0)
1780 | (effects (font (size 1.27 1.27)) (justify left))
1781 | )
1782 | (property "Value" "4207" (id 1) (at 148.5901 108.4643 0)
1783 | (effects (font (size 1.27 1.27)) (justify left))
1784 | )
1785 | (property "Footprint" "asl_footprints:standoff_nut" (id 2) (at 146.05 107.315 0)
1786 | (effects (font (size 1.27 1.27)) hide)
1787 | )
1788 | (property "Datasheet" "https://www.adafruit.com/product/4207" (id 3) (at 146.05 107.315 0)
1789 | (effects (font (size 1.27 1.27)) hide)
1790 | )
1791 | (property "Description" "Threaded Standoff" (id 4) (at 146.05 107.315 0)
1792 | (effects (font (size 1.27 1.27)) hide)
1793 | )
1794 | )
1795 |
1796 | (symbol (lib_id "Device:R_US") (at 127.635 48.895 0) (mirror x) (unit 1)
1797 | (in_bom yes) (on_board yes)
1798 | (uuid "7496cacb-0c47-4d2b-abf5-032d02301362")
1799 | (property "Reference" "R2" (id 0) (at 125.4761 47.5044 90)
1800 | (effects (font (size 1.27 1.27)) (justify left))
1801 | )
1802 | (property "Value" "10KΩ" (id 1) (at 129.9211 46.4757 90)
1803 | (effects (font (size 1.27 1.27)) (justify left))
1804 | )
1805 | (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 128.651 48.641 90)
1806 | (effects (font (size 1.27 1.27)) hide)
1807 | )
1808 | (property "Datasheet" "~" (id 3) (at 127.635 48.895 0)
1809 | (effects (font (size 1.27 1.27)) hide)
1810 | )
1811 | )
1812 |
1813 | (symbol (lib_id "Device:C") (at 69.85 140.335 0) (unit 1)
1814 | (in_bom yes) (on_board yes)
1815 | (uuid "8fb9af12-6d60-4537-b5c6-177f4b7e2091")
1816 | (property "Reference" "C1" (id 0) (at 72.771 139.1666 0)
1817 | (effects (font (size 1.27 1.27)) (justify left))
1818 | )
1819 | (property "Value" "10nF" (id 1) (at 72.771 141.478 0)
1820 | (effects (font (size 1.27 1.27)) (justify left))
1821 | )
1822 | (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (id 2) (at 70.8152 144.145 0)
1823 | (effects (font (size 1.27 1.27)) hide)
1824 | )
1825 | (property "Datasheet" "~" (id 3) (at 69.85 140.335 0)
1826 | (effects (font (size 1.27 1.27)) hide)
1827 | )
1828 | )
1829 |
1830 | (symbol (lib_name "Device:Battery_1") (lib_id "Device:Battery") (at 48.895 151.13 0) (mirror y) (unit 1)
1831 | (in_bom yes) (on_board yes)
1832 | (uuid "68cd8ed1-77aa-431c-80c1-b004e4bb121f")
1833 | (property "Reference" "BT1" (id 0) (at 46.1518 149.9616 0)
1834 | (effects (font (size 1.27 1.27)) (justify left))
1835 | )
1836 | (property "Value" "2462" (id 1) (at 46.1518 152.273 0)
1837 | (effects (font (size 1.27 1.27)) (justify left))
1838 | )
1839 | (property "Footprint" "Battery:BatteryHolder_Keystone_2462_2xAA" (id 2) (at 48.895 149.606 90)
1840 | (effects (font (size 1.27 1.27)) hide)
1841 | )
1842 | (property "Datasheet" "https://www.digikey.com/product-detail/en/keystone-electronics/2466/36-2466-ND/303815" (id 3) (at 48.895 149.606 90)
1843 | (effects (font (size 1.27 1.27)) hide)
1844 | )
1845 | (property "Description" "Battery Holder" (id 4) (at 48.895 151.13 0)
1846 | (effects (font (size 1.27 1.27)) hide)
1847 | )
1848 | )
1849 |
1850 | (symbol (lib_id "Connector_Generic:Conn_02x03_Odd_Even") (at 147.32 63.5 0) (unit 1)
1851 | (in_bom yes) (on_board yes)
1852 | (uuid "bcecf37d-ba9f-43d6-87d3-a9b99bca187d")
1853 | (property "Reference" "J1" (id 0) (at 148.59 55.4798 0))
1854 | (property "Value" "Conn_02x03_Odd_Even" (id 1) (at 148.59 57.7785 0))
1855 | (property "Footprint" "Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical" (id 2) (at 147.32 63.5 0)
1856 | (effects (font (size 1.27 1.27)) hide)
1857 | )
1858 | (property "Datasheet" "~" (id 3) (at 147.32 63.5 0)
1859 | (effects (font (size 1.27 1.27)) hide)
1860 | )
1861 | )
1862 |
1863 | (symbol (lib_id "Transistor_FET:BSS123") (at 68.58 151.765 0) (mirror y) (unit 1)
1864 | (in_bom yes) (on_board yes)
1865 | (uuid "078afe2e-8c2f-4b09-8885-bfa6f4554b4b")
1866 | (property "Reference" "Q2" (id 0) (at 63.3984 150.5966 0)
1867 | (effects (font (size 1.27 1.27)) (justify left))
1868 | )
1869 | (property "Value" "BSS123" (id 1) (at 63.3984 152.908 0)
1870 | (effects (font (size 1.27 1.27)) (justify left))
1871 | )
1872 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (id 2) (at 63.5 153.67 0)
1873 | (effects (font (size 1.27 1.27) italic) (justify left) hide)
1874 | )
1875 | (property "Datasheet" "https://www.digikey.com/products/en?keywords=BSS123LT1GOSCT-ND" (id 3) (at 68.58 151.765 0)
1876 | (effects (font (size 1.27 1.27)) (justify left) hide)
1877 | )
1878 | (property "Description" "N-Channel MOSFET" (id 4) (at 68.58 151.765 0)
1879 | (effects (font (size 1.27 1.27)) hide)
1880 | )
1881 | (property "LCSC" "C431506" (id 4) (at 68.58 151.765 0)
1882 | (effects (font (size 1.27 1.27)) hide)
1883 | )
1884 | )
1885 |
1886 | (symbol (lib_id "asl_symbols:FDN340P") (at 82.55 139.065 270) (mirror x) (unit 1)
1887 | (in_bom yes) (on_board yes)
1888 | (uuid "76db99d0-2b3f-45d8-b464-3f77e436c74f")
1889 | (property "Reference" "Q1" (id 0) (at 78.74 130.175 90)
1890 | (effects (font (size 1.27 1.27)) (justify left))
1891 | )
1892 | (property "Value" "FDN340P" (id 1) (at 78.74 132.715 90)
1893 | (effects (font (size 1.27 1.27)) (justify left))
1894 | )
1895 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (id 2) (at 80.645 133.985 0)
1896 | (effects (font (size 1.27 1.27) italic) (justify left) hide)
1897 | )
1898 | (property "Datasheet" "https://www.digikey.com/products/en?keywords=FDN340PCT-ND" (id 3) (at 82.55 139.065 0)
1899 | (effects (font (size 1.27 1.27)) (justify left) hide)
1900 | )
1901 | (property "Description" "P-Channel MOSFET" (id 4) (at 82.55 139.065 0)
1902 | (effects (font (size 1.27 1.27)) hide)
1903 | )
1904 | (property "LCSC" "C75469" (id 4) (at 82.55 139.065 0)
1905 | (effects (font (size 1.27 1.27)) hide)
1906 | )
1907 | )
1908 |
1909 | (symbol (lib_id "Diode:BAT54C") (at 95.25 151.765 0) (unit 1)
1910 | (in_bom yes) (on_board yes)
1911 | (uuid "c89dd6d4-f977-4e12-b465-f69e8ebcdbee")
1912 | (property "Reference" "D1" (id 0) (at 95.25 146.05 0))
1913 | (property "Value" "BAT54C" (id 1) (at 95.25 148.3614 0))
1914 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (id 2) (at 97.155 148.59 0)
1915 | (effects (font (size 1.27 1.27)) (justify left) hide)
1916 | )
1917 | (property "Datasheet" "http://www.diodes.com/_files/datasheets/ds11005.pdf" (id 3) (at 93.218 151.765 0)
1918 | (effects (font (size 1.27 1.27)) hide)
1919 | )
1920 | (property "Description" "Schottky Diode" (id 4) (at 95.25 151.765 0)
1921 | (effects (font (size 1.27 1.27)) hide)
1922 | )
1923 | (property "LCSC" "C397610" (id 4) (at 95.25 151.765 0)
1924 | (effects (font (size 1.27 1.27)) hide)
1925 | )
1926 | )
1927 |
1928 | (symbol (lib_id "asl_symbols_new:B3F-4000") (at 41.275 39.37 180) (unit 1)
1929 | (in_bom yes) (on_board yes)
1930 | (uuid "94ded66d-42eb-47ac-a3ea-7ba9b5a627e4")
1931 | (property "Reference" "S4" (id 0) (at 41.275 47.2632 0))
1932 | (property "Value" "COM-10302" (id 1) (at 41.275 44.9645 0))
1933 | (property "Footprint" "asl_footprints:sparkfun_tactile_color" (id 2) (at 45.085 36.83 0)
1934 | (effects (font (size 1.27 1.27)) hide)
1935 | )
1936 | (property "Datasheet" "https://www.sparkfun.com/products/10302" (id 3) (at 45.085 36.83 0)
1937 | (effects (font (size 1.27 1.27)) hide)
1938 | )
1939 | (property "Description" "Tactile Button" (id 4) (at 41.275 39.37 0)
1940 | (effects (font (size 1.27 1.27)) hide)
1941 | )
1942 | )
1943 |
1944 | (symbol (lib_id "asl_symbols_new:B3F-4000") (at 41.275 53.34 180) (unit 1)
1945 | (in_bom yes) (on_board yes)
1946 | (uuid "304797eb-6516-4818-88ed-63b2cefe3b41")
1947 | (property "Reference" "S3" (id 0) (at 41.275 61.2332 0))
1948 | (property "Value" "COM-10302" (id 1) (at 41.275 58.9345 0))
1949 | (property "Footprint" "asl_footprints:sparkfun_tactile_color" (id 2) (at 45.085 50.8 0)
1950 | (effects (font (size 1.27 1.27)) hide)
1951 | )
1952 | (property "Datasheet" "https://www.sparkfun.com/products/10302" (id 3) (at 45.085 50.8 0)
1953 | (effects (font (size 1.27 1.27)) hide)
1954 | )
1955 | (property "Description" "Tactile Button" (id 4) (at 41.275 53.34 0)
1956 | (effects (font (size 1.27 1.27)) hide)
1957 | )
1958 | )
1959 |
1960 | (symbol (lib_id "asl_symbols_new:B3F-4000") (at 41.275 67.31 180) (unit 1)
1961 | (in_bom yes) (on_board yes)
1962 | (uuid "78972a3c-c27a-4787-9d9d-e5a63b0f0072")
1963 | (property "Reference" "S2" (id 0) (at 41.275 75.2032 0))
1964 | (property "Value" "COM-10302" (id 1) (at 41.275 72.9045 0))
1965 | (property "Footprint" "asl_footprints:sparkfun_tactile_color" (id 2) (at 45.085 64.77 0)
1966 | (effects (font (size 1.27 1.27)) hide)
1967 | )
1968 | (property "Datasheet" "https://www.sparkfun.com/products/10302" (id 3) (at 45.085 64.77 0)
1969 | (effects (font (size 1.27 1.27)) hide)
1970 | )
1971 | (property "Description" "Tactile Button" (id 4) (at 41.275 67.31 0)
1972 | (effects (font (size 1.27 1.27)) hide)
1973 | )
1974 | )
1975 |
1976 | (symbol (lib_id "asl_symbols_new:B3F-4000") (at 41.275 81.28 180) (unit 1)
1977 | (in_bom yes) (on_board yes)
1978 | (uuid "09b1a856-1020-4d31-b492-845178d8ed2b")
1979 | (property "Reference" "S1" (id 0) (at 41.275 89.1732 0))
1980 | (property "Value" "COM-10302" (id 1) (at 41.275 86.8745 0))
1981 | (property "Footprint" "asl_footprints:sparkfun_tactile_color" (id 2) (at 45.085 78.74 0)
1982 | (effects (font (size 1.27 1.27)) hide)
1983 | )
1984 | (property "Datasheet" "https://www.sparkfun.com/products/10302" (id 3) (at 45.085 78.74 0)
1985 | (effects (font (size 1.27 1.27)) hide)
1986 | )
1987 | (property "Description" "Tactile Button" (id 4) (at 41.275 81.28 0)
1988 | (effects (font (size 1.27 1.27)) hide)
1989 | )
1990 | )
1991 |
1992 | (symbol (lib_id "asl_symbols_new:B3F-4000") (at 41.275 94.615 180) (unit 1)
1993 | (in_bom yes) (on_board yes)
1994 | (uuid "ca65b9ab-91fc-4bf4-a6ca-7f5f7ae8782e")
1995 | (property "Reference" "S5" (id 0) (at 41.275 102.5082 0))
1996 | (property "Value" "COM-10302" (id 1) (at 41.275 100.2095 0))
1997 | (property "Footprint" "asl_footprints:sparkfun_tactile_color" (id 2) (at 45.085 92.075 0)
1998 | (effects (font (size 1.27 1.27)) hide)
1999 | )
2000 | (property "Datasheet" "https://www.sparkfun.com/products/10302" (id 3) (at 45.085 92.075 0)
2001 | (effects (font (size 1.27 1.27)) hide)
2002 | )
2003 | (property "Description" "Tactile Button" (id 4) (at 41.275 94.615 0)
2004 | (effects (font (size 1.27 1.27)) hide)
2005 | )
2006 | )
2007 |
2008 | (symbol (lib_id "asl_symbols_new:RG_encoder_switch") (at 64.77 106.045 0) (mirror y) (unit 1)
2009 | (in_bom yes) (on_board yes)
2010 | (uuid "7b0eabb6-1c0c-4d4d-ab9a-eedb18f20ce8")
2011 | (property "Reference" "SW1" (id 0) (at 64.77 96.7548 0))
2012 | (property "Value" "COM-15140" (id 1) (at 64.77 99.0535 0))
2013 | (property "Footprint" "asl_footprints:RG_Encoder" (id 2) (at 68.58 101.981 0)
2014 | (effects (font (size 1.27 1.27)) hide)
2015 | )
2016 | (property "Datasheet" "https://www.sparkfun.com/products/15140" (id 3) (at 64.77 99.441 0)
2017 | (effects (font (size 1.27 1.27)) hide)
2018 | )
2019 | (property "Description" "Rotary Encoder" (id 4) (at 64.77 106.045 0)
2020 | (effects (font (size 1.27 1.27)) hide)
2021 | )
2022 | )
2023 |
2024 | (symbol (lib_id "RF_Module:ESP32-WROOM-32D") (at 109.855 83.185 0) (mirror y) (unit 1)
2025 | (in_bom yes) (on_board yes)
2026 | (uuid "98d3b15f-2a24-4a20-844a-7780cd63a896")
2027 | (property "Reference" "U1" (id 0) (at 97.79 45.7008 0))
2028 | (property "Value" "ESP32-WROOM-32E" (id 1) (at 96.52 48.6345 0))
2029 | (property "Footprint" "RF_Module:ESP32-WROOM-32" (id 2) (at 109.855 121.285 0)
2030 | (effects (font (size 1.27 1.27)) hide)
2031 | )
2032 | (property "Datasheet" "https://www.digikey.com/en/products/detail/espressif-systems/ESP32-WROOM-32E-4MB/11613125" (id 3) (at 117.475 81.915 0)
2033 | (effects (font (size 1.27 1.27)) hide)
2034 | )
2035 | (property "LCSC" "C701341" (id 4) (at 109.855 83.185 0)
2036 | (effects (font (size 1.27 1.27)) hide)
2037 | )
2038 | (property "Description" "Microcontroller" (id 4) (at 109.855 83.185 0)
2039 | (effects (font (size 1.27 1.27)) hide)
2040 | )
2041 | )
2042 |
2043 | (sheet_instances
2044 | (path "/" (page "1"))
2045 | )
2046 |
2047 | (symbol_instances
2048 | (path "/f034667b-4054-4078-8f83-a4c4a0b304c9"
2049 | (reference "#PWR01") (unit 1) (value "GND") (footprint "")
2050 | )
2051 | (path "/f27138d9-c1c4-4b60-af70-25cd188ef851"
2052 | (reference "#PWR03") (unit 1) (value "GND") (footprint "")
2053 | )
2054 | (path "/98c93dd4-b0d8-46df-b1d2-81941832add6"
2055 | (reference "#PWR04") (unit 1) (value "GND") (footprint "")
2056 | )
2057 | (path "/f79f7256-167e-4143-a350-4120bebbeb6d"
2058 | (reference "#PWR0101") (unit 1) (value "GND") (footprint "")
2059 | )
2060 | (path "/04a67598-c5b6-47da-a73e-3a3e5030719a"
2061 | (reference "#PWR0102") (unit 1) (value "GND") (footprint "")
2062 | )
2063 | (path "/be15bfd8-fa29-4b02-a976-06033a9594ec"
2064 | (reference "#PWR0104") (unit 1) (value "GND") (footprint "")
2065 | )
2066 | (path "/021be944-363e-41f2-88ae-8a574d14035a"
2067 | (reference "#PWR0105") (unit 1) (value "GND") (footprint "")
2068 | )
2069 | (path "/11151542-eabf-4be3-96d6-91c655be8fe7"
2070 | (reference "#PWR0106") (unit 1) (value "GND") (footprint "")
2071 | )
2072 | (path "/7f2773dc-c46a-4cdd-a40b-08dbd3b403a1"
2073 | (reference "#PWR0107") (unit 1) (value "GND") (footprint "")
2074 | )
2075 | (path "/68cd8ed1-77aa-431c-80c1-b004e4bb121f"
2076 | (reference "BT1") (unit 1) (value "2462") (footprint "Battery:BatteryHolder_Keystone_2462_2xAA")
2077 | )
2078 | (path "/8fb9af12-6d60-4537-b5c6-177f4b7e2091"
2079 | (reference "C1") (unit 1) (value "10nF") (footprint "Capacitor_SMD:C_0805_2012Metric")
2080 | )
2081 | (path "/c89dd6d4-f977-4e12-b465-f69e8ebcdbee"
2082 | (reference "D1") (unit 1) (value "BAT54C") (footprint "Package_TO_SOT_SMD:SOT-23")
2083 | )
2084 | (path "/ee47bf5f-b88a-4226-901d-96cfa8cf97a4"
2085 | (reference "H3") (unit 1) (value "4207") (footprint "asl_footprints:standoff_nut")
2086 | )
2087 | (path "/fa171690-08cb-419b-b572-12640e3141ee"
2088 | (reference "H4") (unit 1) (value "4207") (footprint "asl_footprints:standoff_nut")
2089 | )
2090 | (path "/bcecf37d-ba9f-43d6-87d3-a9b99bca187d"
2091 | (reference "J1") (unit 1) (value "Conn_02x03_Odd_Even") (footprint "Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical")
2092 | )
2093 | (path "/76db99d0-2b3f-45d8-b464-3f77e436c74f"
2094 | (reference "Q1") (unit 1) (value "FDN340P") (footprint "Package_TO_SOT_SMD:SOT-23")
2095 | )
2096 | (path "/078afe2e-8c2f-4b09-8885-bfa6f4554b4b"
2097 | (reference "Q2") (unit 1) (value "BSS123") (footprint "Package_TO_SOT_SMD:SOT-23")
2098 | )
2099 | (path "/1c5d45a8-b529-414b-82bb-378ea10698d3"
2100 | (reference "R1") (unit 1) (value "100KΩ") (footprint "Resistor_SMD:R_0805_2012Metric")
2101 | )
2102 | (path "/7496cacb-0c47-4d2b-abf5-032d02301362"
2103 | (reference "R2") (unit 1) (value "10KΩ") (footprint "Resistor_SMD:R_0805_2012Metric")
2104 | )
2105 | (path "/cf171abc-e219-4519-be37-3734e11e5d45"
2106 | (reference "R3") (unit 1) (value "330Ω") (footprint "Resistor_SMD:R_0805_2012Metric")
2107 | )
2108 | (path "/26f5ad76-ecf5-4624-b7c6-8517afeb1dfe"
2109 | (reference "R4") (unit 1) (value "1MΩ") (footprint "Resistor_SMD:R_0805_2012Metric")
2110 | )
2111 | (path "/09b1a856-1020-4d31-b492-845178d8ed2b"
2112 | (reference "S1") (unit 1) (value "COM-10302") (footprint "asl_footprints:sparkfun_tactile_color")
2113 | )
2114 | (path "/78972a3c-c27a-4787-9d9d-e5a63b0f0072"
2115 | (reference "S2") (unit 1) (value "COM-10302") (footprint "asl_footprints:sparkfun_tactile_color")
2116 | )
2117 | (path "/304797eb-6516-4818-88ed-63b2cefe3b41"
2118 | (reference "S3") (unit 1) (value "COM-10302") (footprint "asl_footprints:sparkfun_tactile_color")
2119 | )
2120 | (path "/94ded66d-42eb-47ac-a3ea-7ba9b5a627e4"
2121 | (reference "S4") (unit 1) (value "COM-10302") (footprint "asl_footprints:sparkfun_tactile_color")
2122 | )
2123 | (path "/ca65b9ab-91fc-4bf4-a6ca-7f5f7ae8782e"
2124 | (reference "S5") (unit 1) (value "COM-10302") (footprint "asl_footprints:sparkfun_tactile_color")
2125 | )
2126 | (path "/7b0eabb6-1c0c-4d4d-ab9a-eedb18f20ce8"
2127 | (reference "SW1") (unit 1) (value "COM-15140") (footprint "asl_footprints:RG_Encoder")
2128 | )
2129 | (path "/98d3b15f-2a24-4a20-844a-7780cd63a896"
2130 | (reference "U1") (unit 1) (value "ESP32-WROOM-32E") (footprint "RF_Module:ESP32-WROOM-32")
2131 | )
2132 | )
2133 | )
2134 |
--------------------------------------------------------------------------------
/software/.gitignore:
--------------------------------------------------------------------------------
1 | .pio
2 | .vscode/.browse.c_cpp.db*
3 | .vscode/c_cpp_properties.json
4 | .vscode/launch.json
5 | .vscode/ipch
6 |
--------------------------------------------------------------------------------
/software/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // See http://go.microsoft.com/fwlink/?LinkId=827846
3 | // for the documentation about the extensions.json format
4 | "recommendations": [
5 | "platformio.platformio-ide"
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/software/include/README:
--------------------------------------------------------------------------------
1 |
2 | This directory is intended for project header files.
3 |
4 | A header file is a file containing C declarations and macro definitions
5 | to be shared between several project source files. You request the use of a
6 | header file in your project source file (C, C++, etc) located in `src` folder
7 | by including it, with the C preprocessing directive `#include'.
8 |
9 | ```src/main.c
10 |
11 | #include "header.h"
12 |
13 | int main (void)
14 | {
15 | ...
16 | }
17 | ```
18 |
19 | Including a header file produces the same results as copying the header file
20 | into each source file that needs it. Such copying would be time-consuming
21 | and error-prone. With a header file, the related declarations appear
22 | in only one place. If they need to be changed, they can be changed in one
23 | place, and programs that include the header file will automatically use the
24 | new version when next recompiled. The header file eliminates the labor of
25 | finding and changing all the copies as well as the risk that a failure to
26 | find one copy will result in inconsistencies within a program.
27 |
28 | In C, the usual convention is to give header files names that end with `.h'.
29 | It is most portable to use only letters, digits, dashes, and underscores in
30 | header file names, and at most one dot.
31 |
32 | Read more about using header files in official GCC documentation:
33 |
34 | * Include Syntax
35 | * Include Operation
36 | * Once-Only Headers
37 | * Computed Includes
38 |
39 | https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
40 |
--------------------------------------------------------------------------------
/software/lib/README:
--------------------------------------------------------------------------------
1 |
2 | This directory is intended for project specific (private) libraries.
3 | PlatformIO will compile them to static libraries and link into executable file.
4 |
5 | The source code of each library should be placed in a an own separate directory
6 | ("lib/your_library_name/[here are source files]").
7 |
8 | For example, see a structure of the following two libraries `Foo` and `Bar`:
9 |
10 | |--lib
11 | | |
12 | | |--Bar
13 | | | |--docs
14 | | | |--examples
15 | | | |--src
16 | | | |- Bar.c
17 | | | |- Bar.h
18 | | | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
19 | | |
20 | | |--Foo
21 | | | |- Foo.c
22 | | | |- Foo.h
23 | | |
24 | | |- README --> THIS FILE
25 | |
26 | |- platformio.ini
27 | |--src
28 | |- main.c
29 |
30 | and a contents of `src/main.c`:
31 | ```
32 | #include
33 | #include
34 |
35 | int main (void)
36 | {
37 | ...
38 | }
39 |
40 | ```
41 |
42 | PlatformIO Library Dependency Finder will find automatically dependent
43 | libraries scanning project source files.
44 |
45 | More information about PlatformIO Library Dependency Finder
46 | - https://docs.platformio.org/page/librarymanager/ldf.html
47 |
--------------------------------------------------------------------------------
/software/platformio.ini:
--------------------------------------------------------------------------------
1 | ; PlatformIO Project Configuration File
2 | ;
3 | ; Build options: build flags, source filter
4 | ; Upload options: custom upload port, speed and extra flags
5 | ; Library options: dependencies, extra library storages
6 | ; Advanced options: extra scripting
7 | ;
8 | ; Please visit documentation for the other options and examples
9 | ; https://docs.platformio.org/page/projectconf.html
10 |
11 | [env:esp32dev]
12 | platform = espressif32
13 | board = esp32dev
14 | framework = arduino
15 | monitor_speed = 115200
16 | upload_speed = 921600
17 | board_build.f_cpu = 80000000L ;reduces power consumption
18 | ; board_build.flash_mode = qio
19 | ; build_flags = -DCORE_DEBUG_LEVEL=0
20 |
21 |
22 | upload_protocol = esptool
23 | upload_port = /dev/cu.usbserial-14411201
24 | ; upload_port = /dev/cu.usbserial-14401
25 |
26 | ; monitor_port = /dev/cu.usbserial-14411201
27 | lib_deps =
28 | t-vk/ESP32 BLE Keyboard @ ^0.2.2
--------------------------------------------------------------------------------
/software/src/bluetooth.h:
--------------------------------------------------------------------------------
1 | //bluetooth
2 | void connecting();
3 | void print_version();
4 | void notify(int fkey);
5 | void shortcut(char ltr);
6 | void change_view(view new_view = gallery);
7 | void leave();
8 | void shutdown();
9 |
10 | void connecting(){
11 | last_active = millis();
12 | ledcWrite(greenPWM,0);
13 | bool inhaling = true;
14 | byte red_brightness = knob_brightness;
15 | while(!bleKeyboard.isConnected()){
16 | delay(2);
17 | if (!digitalRead(btn_5)){
18 | check_for_hold(btn_5, shutdown_hold, shutdown);
19 | }
20 | if (inhaling){
21 | if (red_brightness<255){
22 | red_brightness++;
23 | ledcWrite(redPWM,red_brightness);
24 | }
25 | else{
26 | inhaling = false;
27 | }
28 | }
29 | else{
30 | if (red_brightness>0){
31 | red_brightness--;
32 | ledcWrite(redPWM,red_brightness);
33 | }
34 | else{
35 | inhaling = true;
36 | }
37 | }
38 | if (millis() - last_active > connection_timer){
39 | shutdown();
40 | }
41 | }
42 | delay(500);
43 | ledcWrite(redPWM,0);
44 | ledcWrite(greenPWM,knob_brightness);
45 | }
46 |
47 | void print_version(){
48 | bleKeyboard.print("version:");
49 | bleKeyboard.println(VERSION);
50 | bleKeyboard.print("os:");
51 | bleKeyboard.println(active_os);
52 | bleKeyboard.print("mode:");
53 | bleKeyboard.println(active_mode);
54 | }
55 |
56 | void notify(int fkey){
57 | bleKeyboard.press(KEY_LEFT_CTRL);
58 | bleKeyboard.press(KEY_LEFT_GUI);
59 | bleKeyboard.press(KEY_LEFT_ALT);
60 | bleKeyboard.press(fkey);
61 | bleKeyboard.releaseAll();
62 | }
63 |
64 | void shortcut(char ltr){
65 | if (active_os == mac){
66 | bleKeyboard.press(KEY_LEFT_SHIFT);
67 | bleKeyboard.press(KEY_LEFT_GUI);
68 | }
69 | else{
70 | bleKeyboard.press(KEY_LEFT_ALT);
71 | }
72 | bleKeyboard.press(ltr);
73 | bleKeyboard.releaseAll();
74 | pulse();
75 | delay(50);
76 | }
77 |
78 | void change_view(view new_view){
79 | if (active_os == mac){
80 | shortcut('w');
81 | }
82 | else{
83 | bleKeyboard.press(KEY_LEFT_ALT);
84 | if (new_view == gallery){
85 | bleKeyboard.press(KEY_F2);
86 | }
87 | else if (new_view == speaker){
88 | bleKeyboard.press(KEY_F1);
89 | }
90 | bleKeyboard.releaseAll();
91 | }
92 | }
93 |
94 | void leave(){
95 | if (active_os == mac){
96 | bleKeyboard.press(KEY_LEFT_GUI);
97 | bleKeyboard.press('w');
98 | }
99 | else{
100 | bleKeyboard.press(KEY_LEFT_ALT);
101 | bleKeyboard.press('q');
102 | }
103 |
104 | bleKeyboard.releaseAll();
105 | delay(250);
106 | bleKeyboard.write(KEY_RETURN);
107 | last_chance(8000);
108 | }
109 |
110 | void shutdown(){
111 | EEPROM.write(MODE_BYTE,active_mode);
112 | EEPROM.write(OS_BYTE,active_os);
113 | EEPROM.commit();
114 | ledcWrite(greenPWM,0);
115 | ledcWrite(redPWM,0);
116 | pinMode(latch_BTN,OUTPUT);
117 | digitalWrite(latch_BTN,LOW);
118 | }
--------------------------------------------------------------------------------
/software/src/hardware.h:
--------------------------------------------------------------------------------
1 | // pin defines
2 | const byte latch_BTN = 25;
3 | const byte encoderPin1 = 22;
4 | const byte encoderPin2 = 23;
5 | const byte btn_1 = 19;
6 | const byte btn_2 = 18;
7 | const byte btn_3 = 17;
8 | const byte btn_4 = 16;
9 | const byte btn_5 = 21;
10 | const byte red_LED = 26;
11 | const byte green_LED = 27;
12 |
13 | //knob
14 | volatile int lastEncoded = 0;
15 | int tempNow = 0,tempOld = 0;
16 | const byte knob_sensitivity = 2;
17 | const byte resolution = 8;
18 | const byte redPWM = 0;
19 | const byte greenPWM = 1;
20 | const int freq = 500; // 5000 Khz produced a hum at 50% duty cycle, so brought this down
21 | const byte knob_brightness = 100;
22 |
23 |
24 | //hardware
25 | void updateEncoder();
26 | bool check_for_activity();
27 | bool double_click( int btn_pin);
28 | bool check_for_hold(int btn_pin, int hold_duration, void (*passed_fxn)());
29 | bool check_for_hold(int btn_pin, int hold_duration, void (*passed_fxn)(os),os newos);
30 | void blink_yellow(int num_blinks);
31 | void pulse();
32 |
33 |
34 | void updateEncoder(){
35 | int MSB = digitalRead(encoderPin1); //MSB = most significant bit
36 | int LSB = digitalRead(encoderPin2); //LSB = least significant bit
37 | int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
38 | int sum = (lastEncoded << 2) | encoded; //adding it to the previous encoded value
39 | if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) tempNow++;
40 | if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) tempNow--;
41 | lastEncoded = encoded; //store this value for next time
42 | }
43 |
44 | bool check_for_activity(){
45 | if (tempNow-tempOld>knob_sensitivity){
46 | return true;
47 | }
48 | if (tempNow-tempOld<-knob_sensitivity){
49 | return true;
50 | }
51 | if (!digitalRead(latch_BTN)){//
52 | return true;
53 | }
54 | if (!digitalRead(btn_1)){//
55 | return true;
56 | }
57 | if (!digitalRead(btn_2)){//
58 | return true;
59 | }
60 | if (!digitalRead(btn_3)){//
61 | return true;
62 | }
63 | if (!digitalRead(btn_4)){//
64 | return true;
65 | }
66 | return false;
67 | }
68 |
69 | bool double_click(int btn_pin){
70 | while(!digitalRead(btn_pin)){
71 | delay(2); //in first press
72 | }
73 | int second_press_timer = 0;
74 | bool double_clicked = false;
75 | while(second_press_timer < 120){
76 | delay(1);
77 | second_press_timer++;
78 | if (!digitalRead(btn_pin)){
79 | Serial.println("Double click!");
80 | double_clicked = true;
81 | break;
82 | }
83 | }
84 | Serial.println(second_press_timer);
85 | return double_clicked;
86 | }
87 |
88 | bool check_for_hold(int btn_pin, int hold_duration, void (*passed_fxn)()){
89 | int hold_count = 0;
90 | bool hold_threshold_met = false;
91 | while(!digitalRead(btn_pin)){
92 | delay(1);
93 | hold_count++;
94 | if (hold_count>hold_duration){
95 | passed_fxn();
96 | while(!digitalRead(btn_pin)){
97 | delay(1);
98 | }
99 | hold_threshold_met = true;
100 | }
101 | }
102 | return hold_threshold_met;
103 | }
104 |
105 | bool check_for_hold(int btn_pin, int hold_duration, void (*passed_fxn)(os),os newos){
106 | int hold_count = 0;
107 | bool hold_threshold_met = false;
108 | while(!digitalRead(btn_pin)){
109 | delay(1);
110 | hold_count++;
111 | if (hold_count>hold_duration){
112 | passed_fxn(newos);
113 | while(!digitalRead(btn_pin)){
114 | delay(1);
115 | }
116 | hold_threshold_met = true;
117 | }
118 | }
119 | return hold_threshold_met;
120 | }
121 |
122 | void blink_yellow(int num_blinks){
123 | for (int i=0; iknob_brightness; i--){
133 | ledcWrite(greenPWM,i);
134 | delay(1);
135 | }
136 | }
--------------------------------------------------------------------------------
/software/src/main.cpp:
--------------------------------------------------------------------------------
1 | # define VERSION 2021042300
2 |
3 | #include
4 | #include
5 | #include
6 | #include "soc/soc.h"
7 | #include "soc/rtc_cntl_reg.h"
8 |
9 | #define OS_BYTE 0
10 | #define MODE_BYTE 1
11 |
12 | BleKeyboard bleKeyboard("Zoom Controller","Lustig Labs");
13 |
14 | //timing
15 | unsigned long last_active;
16 | unsigned long idle_limit;
17 | const int connection_timer = 30*1000; // shutdown and stop trying to connect after 25 seconds
18 | const int warning_countdown = 5*1000; // send warning 5 seconds before idle shutdown
19 | const int zoom_idle = 30 * 60*1000; //30 minutes
20 | const int youtube_idle = 5 * 60*1000; //5 minutes
21 | const byte debounce = 200;
22 | const int os_hold = 2000;
23 | const int shutdown_hold = 500;
24 |
25 | enum os {mac,windows};
26 | enum os active_os;
27 | enum mode {zoom, youtube};
28 | enum mode active_mode;
29 | enum view {speaker,gallery};
30 |
31 | void change_mode(mode newmode);
32 | void change_os(os new_os);
33 | void last_chance(int last_chance_timer);
34 | void reset_inactive_clock();
35 |
36 | #include "hardware.h"
37 | #include "bluetooth.h"
38 |
39 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
40 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
41 | void setup() {
42 | pinMode(latch_BTN, INPUT_PULLUP);
43 |
44 | WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
45 |
46 | EEPROM.begin(2);
47 | active_mode = static_cast(EEPROM.read(MODE_BYTE));
48 | if (active_mode != zoom && active_mode != youtube){
49 | active_mode = zoom;
50 | }
51 | active_os = static_cast(EEPROM.read(OS_BYTE));
52 | if (active_os != mac && active_os != windows){
53 | active_os = mac;
54 | }
55 |
56 | ledcSetup(redPWM, freq, resolution);
57 | ledcWrite(redPWM,knob_brightness);
58 | ledcSetup(greenPWM, freq, resolution);
59 | ledcAttachPin(red_LED, redPWM);
60 | ledcAttachPin(green_LED, greenPWM);
61 | pinMode(btn_1,INPUT_PULLUP);
62 | pinMode(btn_2,INPUT_PULLUP);
63 | pinMode(btn_3,INPUT_PULLUP);
64 | pinMode(btn_4,INPUT_PULLUP);
65 | pinMode(btn_5,INPUT_PULLUP);
66 |
67 | bleKeyboard.begin();
68 | connecting();
69 |
70 | //encoder setup
71 | pinMode(encoderPin1, INPUT_PULLUP);
72 | pinMode(encoderPin2, INPUT_PULLUP);
73 | attachInterrupt(digitalPinToInterrupt(encoderPin1), updateEncoder, CHANGE);
74 | attachInterrupt(digitalPinToInterrupt(encoderPin2), updateEncoder, CHANGE);
75 |
76 | Serial.begin(115200);
77 |
78 | check_for_hold(latch_BTN,5000,print_version);
79 | while(!digitalRead(latch_BTN)){
80 | delay(1);
81 | }
82 | delay(debounce);
83 | reset_inactive_clock();
84 | change_mode(active_mode);
85 | }
86 |
87 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
88 | void loop() {
89 | while(!bleKeyboard.isConnected()){
90 | connecting();
91 | }
92 | /***************** ZOOM MODE ********************************/
93 | if( active_mode == zoom){
94 | if (tempNow-tempOld>knob_sensitivity){
95 | bleKeyboard.write(KEY_MEDIA_VOLUME_UP);
96 | tempNow = tempOld;
97 | reset_inactive_clock();
98 | }
99 | else if (tempNow-tempOld<-knob_sensitivity){
100 | bleKeyboard.write(KEY_MEDIA_VOLUME_DOWN);
101 | tempNow = tempOld;
102 | reset_inactive_clock();
103 | }
104 | else if (!digitalRead(latch_BTN)){
105 | while(!digitalRead(latch_BTN)){
106 | if(!digitalRead(btn_1)){
107 | bool was_held = check_for_hold(btn_1, os_hold, change_os,mac);
108 | if(!was_held){
109 | change_mode(zoom);
110 | }
111 | }
112 | else if(!digitalRead(btn_2)){
113 | bool was_held = check_for_hold(btn_2, os_hold, change_os,windows);
114 | if(!was_held){
115 | change_mode(youtube);
116 | }
117 | }
118 | }
119 | reset_inactive_clock();
120 | }
121 | else if (!digitalRead(btn_1)){
122 | shortcut('a'); //toggle mic
123 | reset_inactive_clock();
124 | }
125 | else if (!digitalRead(btn_2)){
126 | reset_inactive_clock();
127 | shortcut('v');//toggle video
128 | }
129 | else if (!digitalRead(btn_3)){
130 | shortcut('s'); //share screen
131 | reset_inactive_clock();
132 | }
133 | else if (!digitalRead(btn_4)){
134 | reset_inactive_clock();
135 | if(double_click(btn_4)){
136 | change_view(gallery);
137 | }
138 | else{
139 | change_view(speaker);
140 | }
141 | delay(debounce);
142 | }
143 | else if (!digitalRead(btn_5)){
144 | reset_inactive_clock();
145 | check_for_hold(btn_5, shutdown_hold, shutdown);
146 | leave();
147 | }
148 | }
149 | /***************** YOUTUBE MODE ********************************/
150 | else if (active_mode == youtube){
151 | if (tempNow-tempOld>knob_sensitivity){//CW
152 | bleKeyboard.write('d');
153 | tempNow = tempOld;
154 | reset_inactive_clock();
155 | }
156 | else if (tempNow-tempOld<-knob_sensitivity){//CCW
157 | bleKeyboard.write('s');
158 | tempNow = tempOld;
159 | reset_inactive_clock();
160 | }
161 | else if (!digitalRead(latch_BTN)){
162 | bool alternate_cmd = false;
163 | while(!digitalRead(latch_BTN)){
164 | if(!digitalRead(btn_1)){
165 | bool was_held = check_for_hold(btn_1, os_hold, change_os,mac);
166 | if(!was_held){
167 | change_mode(zoom);
168 | }
169 | alternate_cmd = true;
170 | }
171 | else if(!digitalRead(btn_2)){
172 | bool was_held = check_for_hold(btn_2, os_hold, change_os,windows);
173 | if(!was_held){
174 | change_mode(youtube);
175 | }
176 | alternate_cmd = true;
177 | }
178 | }
179 | if (!alternate_cmd){ //just clicked, did not click and rotate
180 | bleKeyboard.write('r');
181 | delay(debounce);
182 | }
183 | reset_inactive_clock();
184 | }
185 | else if (!digitalRead(btn_1)){
186 | while(!digitalRead(btn_1)){
187 | if (tempNow-tempOld>knob_sensitivity){//CW
188 | tempNow = tempOld;
189 | bleKeyboard.write(KEY_MEDIA_VOLUME_UP);
190 | }
191 | else if (tempNow-tempOld<-knob_sensitivity){//CCW
192 | tempNow = tempOld;
193 | bleKeyboard.write(KEY_MEDIA_VOLUME_DOWN);
194 | }
195 | }
196 | reset_inactive_clock();
197 | }
198 | else if (!digitalRead(btn_2)){
199 | bleKeyboard.write('z'); //seek backward
200 | pulse();
201 | delay(debounce);
202 | reset_inactive_clock();
203 | }
204 | else if (!digitalRead(btn_3)){
205 | bleKeyboard.write('x'); //seek forward
206 | pulse();
207 | delay(debounce);
208 | reset_inactive_clock();
209 | }
210 | else if (!digitalRead(btn_4)){
211 | bleKeyboard.write('f'); //toggle fullscreen
212 | pulse();
213 | delay(debounce);
214 | reset_inactive_clock();
215 | }
216 |
217 | else if (!digitalRead(btn_5)){
218 | check_for_hold(btn_5, shutdown_hold, shutdown);
219 | bleKeyboard.write(' '); //play/pause video
220 | pulse();
221 | delay(debounce);
222 | reset_inactive_clock();
223 | }
224 | }
225 |
226 | if (millis() - last_active > (idle_limit - warning_countdown)){
227 | notify(KEY_F3);//send warning
228 | last_chance(warning_countdown);
229 | reset_inactive_clock();
230 | }
231 | }
232 |
233 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////
234 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////
235 | void reset_inactive_clock(){
236 | last_active = millis();
237 | }
238 |
239 | void change_mode(mode newmode){
240 | switch (newmode){
241 | case zoom:
242 | notify(KEY_F4);
243 | idle_limit = zoom_idle;
244 | break;
245 | case youtube:
246 | notify(KEY_F5);
247 | idle_limit = youtube_idle;
248 | break;
249 | }
250 | pulse();
251 | active_mode = newmode;
252 | }
253 |
254 | void change_os(os new_os){
255 | if (new_os == windows){
256 | active_os = windows;
257 | notify(KEY_F2);
258 | blink_yellow(7);
259 | }
260 | else if (new_os == mac){
261 | active_os = mac;
262 | notify(KEY_F1);
263 | blink_yellow(3);
264 | }
265 | }
266 |
267 | void last_chance(int last_chance_timer){
268 | unsigned long start_last_chance = millis();
269 | int blink_delay = 150;
270 | bool stay_awake = false;
271 | while( millis() - start_last_chance < last_chance_timer){
272 | for( int i = 0 ; i