Wed, 13 Mar 2024 11:03:13 +0100
Update URLs for pcb & firmware to sourcehut
151 | 1 | ======================================= |
2 | Numworks N0110 calculator full repair | |
3 | ======================================= | |
149
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
4 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
5 | :Author: David Douard |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
6 | :Category: Electronics |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
7 | :Tags: Numworks, N0110, repair, calculator |
151 | 8 | :slug: numworks-lcd |
149
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
9 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
10 | |
151 | 11 | My daughter's `Numworks <https://www.numworks.com>`_ N0110 graphing calculator |
149
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
12 | got fried when plugged in a cheap USB PSU. Black screen, heating up killing the |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
13 | battery in a matter of a few tens of minutes. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
14 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
15 | The design being originally Open Source (hardware and firmware), it makes sense |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
16 | to try to fix it instead of just buying a new one (it is not a cheap |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
17 | calculator). |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
18 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
19 | The schematic is pretty simple: built around a `STM32F730V8T6 <https://www.st.com/en/microcontrollers-microprocessors/stm32f730v8.html>`_, there are |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
20 | only a few components surrounding the MCU: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
21 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
22 | - an LCD (280x320, 2,8", ST7789V driver) driven using the 16 bits 8080 |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
23 | interface, taking advantage of ST's `FSMC <https://www.st.com/resource/en/product_training/STM32F7_Memory_FSMC.pdf>`_ controller, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
24 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
25 | - a 64MB flash (`AT25SF641 <https://www.renesas.com/us/en/products/memory-logic/non-volatile-memory/spi-nor-flash/at25sf641-64mbit-27v-minimum-spi-serial-flash-memory-dual-io-support>`_) to store apps and user data, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
26 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
27 | - LiPo charger (`RT9526AGE <https://www.richtek.com/Products/Battery%20Management/Single%20Cell%20Li-Ion%20Battery%20Charger/RT9526A?sc_lang=en&specid=RT9526A>`_), |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
28 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
29 | - `RT9078 <https://www.richtek.com/Products/Linear%20Regulator/Single%20Output%20Linear%20Regulator/RT9078?sc_lang=en&specid=RT9078>`_ 2.8V voltage regulator to poser the MCU from the LiPo battery, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
30 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
31 | - LCD backlight DC-DC converter (`RT9365GQW <https://www.richtek.com/Products/LED%20Driver/White%20LED%20Driver/RT9365?sc_lang=en>`_) |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
32 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
33 | - 3 LEDs plus a number of passives, keypad, reset button, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
34 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
35 | - LiPo battery, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
36 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
37 | - USB port surge protection diodes (`USBLC6-2SC6 <https://www.st.com/en/protections-and-emi-filters/usblc6-2.html>`_) |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
38 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
39 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
40 | The list of fried devices was pretty much every active component: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
41 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
42 | - MCU, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
43 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
44 | - LCD, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
45 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
46 | - 2.8v regulator, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
47 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
48 | - USB protection diodes. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
49 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
50 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
51 | Due to the global chip shortage, I had to gamble on Aliexpress to find a |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
52 | STM32F730. I bought one from `there <https://fr.aliexpress.com/item/1005004924466026.html>`_. Against all odds, the delivered chip |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
53 | looks genuine and is working properly. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
54 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
55 | So I replaced the MCU and the 2.8v regulator. At this point, I wasn't sure |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
56 | about the status of the LCD. I did not know the USB protection diodes was dead, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
57 | so uploading a firmware was quite a challenge; USB based DFU was not working |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
58 | (obvioulsy), but it was not obvious to understand why; I wasn't sure if a blank |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
59 | STM32 should enumerate ok as USB device, or if bootstrping a firmware was |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
60 | required before. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
61 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
62 | I also did not want to upload Numworks' latest official firmware nor using |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
63 | their WebDFU tools since they changes their licensing policy and moved to a |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
64 | closed source model, official firmwares since version 16.3 now lock the |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
65 | bootloader to prevent custom or open source firmware from being installed. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
66 | A complete explanation of this (in French) is `provided here <https://tiplanet.org/forum/viewtopic.php?f=97&t=25561>`_ |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
67 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
68 | So I started looking at the alternative firmware projects for the Numworks: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
69 | `Omega <https://getomega.dev/install/latest>`_, `Phi |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
70 | <https://phi.getomega.dev/>`_, `Khi |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
71 | <https://www-fourier.univ-grenoble-alpes.fr/~parisse/nws.html>`_ and `Upsilon |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
72 | <https://lolocomotive.github.io/Upsilon-website/install>`_ (!) Plus starting |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
73 | from a blank STM32 instead of an upgrade from an existing installation added a |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
74 | bit of confusion. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
75 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
76 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
77 | After some time I got convinced I had successfully uploaded a firmware, but |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
78 | noting showed up on the LCD: diagnostic of a dead LCD as well... |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
79 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
80 | The tricky part is that the LCD used in the calculator is pretty common on |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
81 | principle: standard size, usual LCD controller. The very one used in the |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
82 | calculator seems specificly made for the Numworks: specific ribbon cable and |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
83 | specific pinout. Could not find a compatible device on usual sources. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
84 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
85 | To validate I did indeed have a successfully replaced the MCU and uploaded a |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
86 | working firmware, I did a nasty rastnest experiment with a ST7789V LCD module I |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
87 | had around. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
88 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
89 | The result was pretty ugly |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
90 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
91 | .. image:: {static}/images/numworks/rastnest.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
92 | :alt: The test setup to connect a ST7789V based LCD module to the Numworks, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
93 | using a breadboard to interconnect the 2 interfaces. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
94 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
95 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
96 | but I had *some* results: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
97 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
98 | .. image:: {static}/images/numworks/partial.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
99 | :alt: The LCD module shows half a screen with some content mixed with garbage. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
100 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
101 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
102 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
103 | First I was thinking the issue could be related to the speed of the |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
104 | communications between the MCU and the LCD: the signal path was far from |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
105 | optimal, with a ribbon cable, a breakout board, a bus of 10cm jump wires, a |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
106 | breadboard, another bunch of 10cl jump wires, yet another bunch of jump wires, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
107 | another breakboard, and at last, the ribbon cable of the LCD module... So I |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
108 | spent some time hacking the Omega source code to reduce the transmission speed; |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
109 | but that did not help. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
110 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
111 | To figure out what was wrong I ended up using my DSLogic logic analyzer. The |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
112 | culprit was a pair of swapped jumpers (strangely there was only one pair of |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
113 | messed connections). Since it was a pair of data lines above D7, it was |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
114 | partially working. So the messed half display. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
115 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
116 | With the 2 wires back in order, result was much better... |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
117 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
118 | .. image:: {static}/images/numworks/success.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
119 | :alt: The LCD module shows the Numworks main screen... but flipped |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
120 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
121 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
122 | For some reason, this display showed the image reversed. Anyway, I was |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
123 | confident enough to spend a bit more money buying a replacemement LCD module. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
124 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
125 | Choosing a suitable replacement was not an easy task: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
126 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
127 | - It needs to use the ST7789V controller. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
128 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
129 | - It needs to be the proper size; seems easy, it's a standard 2.8" module... |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
130 | well no, most of these modules are 66.95x47.80mm while the module in the |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
131 | calculator is 66x50mm. Also the thickness must be about 2.1 or 2.2mm max. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
132 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
133 | - It needs to have the proper ST7789V signals available, 16bits 8080 mode; |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
134 | especially the Tearing Effect (TE) signal is used by the firmware to optimize |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
135 | display refresh timing. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
136 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
137 | - It needs to be an "12 o'clock" IPS LCD module (not a TN one) so the viewing |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
138 | angle is adapted when used in the calculator. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
139 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
140 | I found a few references on AliExpress (almost) matching all these contraints |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
141 | and bought `this one <https://fr.aliexpress.com/item/1005004628969756.html>`_. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
142 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
143 | Which worked nicely: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
144 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
145 | .. image:: {static}/images/numworks/test_ips_module.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
146 | :alt: The IPS module works just fine, the image is correctly oriented. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
147 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
148 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
149 | Obviously, the ribbon cable pinout is not the same as the original LCD module. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
150 | So an adapter had to be made. At first I thought I could just solder a bunch of |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
151 | thin enameled wires, but this was not a very good idea; too hard to do |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
152 | properly, without damaging the ribbon cable etc. So I decided to try the new |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
153 | Flex PCB service JLCPCB (and others) now offer. Never did a Flex PCB design, |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
154 | was a nice opportunity to give it a try. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
155 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
156 | I did a simple design, with one side being connected to 30 pins FCP connector |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
157 | on the Numworks side, and the other side with a 40pins FCP connecter soldered |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
158 | onto the Flex PCB. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
159 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
160 | The design, printed on paper to check dimensions, looks like this: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
161 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
162 | .. image:: {static}/images/numworks/flex_design.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
163 | :alt: Paper print of the flex-PCB adapter. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
164 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
165 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
166 | The flex-PCB arrived a few days later: |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
167 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
168 | .. image:: {static}/images/numworks/flex_pcb.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
169 | :alt: Flex-PCB adapter side-to-side with the paper print. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
170 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
171 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
172 | Was not sure how it would support hand soldering the FCP connector, but it went |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
173 | ok. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
174 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
175 | .. image:: {static}/images/numworks/flex_pcb_connected.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
176 | :alt: Flex-PCB adapter installed in the Numworks. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
177 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
178 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
179 | It fits pretty nicely in the Numworks enclosure; the only modification I had to |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
180 | make it to trim a bit some plastic pads to fit and center le LCD module. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
181 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
182 | .. image:: {static}/images/numworks/repaired.jpg |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
183 | :alt: The Numworks fully reassembled running the Omega firmware. |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
184 | :class: image-process-large-photo |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
185 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
186 | |
5ce5f3046c0b
Add a blog entry for the Numworks N0110 repair
David Douard <david.douard@sdf3.org>
parents:
diff
changeset
|
187 | The Kicad design for the Flex-PCB is available `here <https://git.sr.ht/~douardda/numworks-lcd-adapter>`_. |