Hardware?Schematics files for Bangle #1997
Replies: 16 comments
-
Posted at 2020-07-12 by @MaBecker Hmm Bangle.JS is a DT NO1 F18 Outdoor-Sport Smartwatch from the shelf. Gordon has done many reverse engineering to make Espruino work on it. Browsing through the code you will find a lot details. The board file is a good starting point. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-13 by @gfwilliams Hi! There's a page describing how everything is connected on the watch, including some shots of the PCB: https://www.espruino.com/Bangle.js+Technical However as @MaBecker says, because it's reverse engineered I don't have full schematics for it. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-14 by user115072 Thanks a lot @MaBecker I shall surely go through it once. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-14 by user115072 Thank you @gfwilliams, must say Bangle.js is one of the best thing I have found on internet. Shall surely look more deeper into technical details. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-14 by jcmb Here you can find additional pictures of the PCB (equipped with the SWD debug port). |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-14 by @allObjects EDIT 2020.0719-1559 Some information from inspection and discovery on non-destructive tear-down I did quite a while ago (on a watch with piezo speaker). Note that the chip marked with 'Mag?' in the main shot on https://www.espruino.com/Bangle.js+Technical is the port expander. The Mag(netometer sensor) is the very small chip to its left with very few connections. Zoom into some of the pics, especially the one with the mirrored back, in which I marked some traces, mainly with + for Vcc, - for Ground, C for clock and D for data for the I2S. Port expander has still some unused extensions ;-) ... The first two pic shows IC identifications. The third one I used to follow the PCB traces on front and back. In any graphics editor take a line / dashed double arrow line and move it around to identify the same location on the front and back. I used that technique to follow the traces between the ICs as they go between front and back via the vias.Attachments: |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-14 by @allObjects EDIT 2020.0719-1559 List of ICs counter clock wise starting with nrf52932 (name/id details may slightly vary between individual watches / production batches):
nrf52832 pins and purpose counter clock wise starting Left top in shot with pin 1, then Bottom, Right, Top, with GPIO (in/out) and usage (from bangle board .py file https://github.com/espruino/Espruino/blob/master/boards/BANGLEJS.py and inspecting watch / non-destructive tear-down):
uD831 IO Expander / Portexpander The way it is wired up it looks like a NPX (ex Philips) PCAL6408A: Low-voltage translating, 8-bit I²C-bus/SMBus I/O expander. neg_INT pin as well as port P1..P4 pins 3..5 and 7 seem not to be connected and configuration / initialization state is 'Power-Up default' / reset default. Address of IO Expander / Portexpander on I2S bus is 0x20- A(ddress) pin 16 input line grounded. PortsBits (and pins) of IO Expander / Portexpander purpose and mask (according to wiring, bangle board .py file https://github.com/espruino/Espruino/blob/master/boards/BANGLEJS.py and .c code file https://github.com/espruino/Espruino/blob/master/libs/banglejs/jswrap_bangle.c ):
Espruino Bangle.ioWr(<portMask>,<onOffInversedBoolean>):
|
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-15 by user115072 Thanks a lot @jcmb I shall surely go through it. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-15 by user115072 @allObjects I guess this information is completely sufficient. Thanks a lot. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-15 by @gfwilliams Wow, thank you! I'll have to see about adding that to the Bangle.js technical page - thanks for the note about magnetometer/IO expander too - that makes a lot more sense :) |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-16 by @allObjects Updated / complemented posts #7 and #8 (Edit 2020.0715-2140). @gfwilliams, Bangle board .py file https://github.com/espruino/Espruino/blob/master/boards/BANGLEJS.py includes incomplete/contradicting information in comments for the IO Extender Port assignments / usage. Working a second time thru the main board shows that he pin_led for the Heart Rate Monitor LED goes thru the K42 driver - makes more sense than my initial display based on the board file. (Btw, it would be nice to have also an .ioRd() like the .ioWr() to easily access the IO Expander. I tried to do with I2C1, but got varying values return that were inconclusive). |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-16 by @gfwilliams Thanks - just updated the comments (I think I was numbering some starting from 0 and some starting from 1!).
I don't believe the expander can be read from at all? There is actually an internal variable in Espruino containing the state of everything on the expander that I guess could be exposed, but I think its use is pretty limited. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-16 by @allObjects Will look for this variable... because most certainly it is/has to be synced when using |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-20 by @allObjects Updated / complemented posts #7 and #8 (EDIT 2020.0719-1559):
|
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-20 by @gfwilliams Wow, that's great - thanks! And I can confirm, I've tried connecting power the wrong way and it doesn't destroy anything :) |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-22 by @allObjects Detail about KN6 (NPN) and K42 (PNP) transistor arrrays: KN6 (NPN) transistor array bases for vibration motor and speaker are driven via current limiting resistors. K42 (pnp) transistor array bases for display back light and heart rate monitoring LED are directly driven by the IO expander port pins and have most likely an integrated resistor to limit base current and with that limiting the load on the IO extender output ports (pins) P5 (8) and P7 (10). Typical of driver transistor arrays is the Base-Emitter resistor to shut the transistor on floating base. It is possible that both KN6 and K42 contain such resistors. Details about pull-up resistors on buttons 1 thru 3: The three (3) resistors in upside-down of uppercase L layout 'above' the antenna / to the right and above the SJK 32.000 Xtal on the black flex cable connection side are pull-up resistors for the physical push buttons BTN1, BTN2 and BTN3. Their value is so high that touching the hot end with the probe of the multi-meter for measuring the voltage has the same effect as briefly pushing the related button. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2020-07-12 by user115072
Bangle is absolutely amazing product, Just wanted to know if i can get the hardware/Schematics reference files for the same. If yes where ?
Thanks in advance for all the replies
Beta Was this translation helpful? Give feedback.
All reactions