Jump to content

Run QMK and PC temp monitoring software on one device at the same time?

kelvinhall05

Hi guys. Looking to build a pretty special keyboard with a built-in character LCD that can show PC temps or usage, as well as have the keyboard work as...well, as a keyboard. I plan to use QMK for the keyboard, and there appear to be programs (https://create.arduino.cc/projecthub/zakrzu/arduino-pc-monitor-66c07a) that can monitor PC temps. I am wondering if there is a way I can run both of these on one device.

 

I have no idea how the software would work, but am also thinking that I might run out of pins to have a keyboard matrix (I need 18 pins for the matrix, one or two for the capslock LED) or the LCD (seems it needs four pins if I want an external controller, like in the linked guide). Is it possible to fit both programs and both devices into one Arduino Uno or something? At minimum, is it possible to have a Pro Micro (for the keyboard/QMK) and an Uno (for the LCD) both on one USB port? Thanks!

Quote me to see my reply!

SPECS:

CPU: Ryzen 7 3700X Motherboard: MSI B450-A Pro Max RAM: 32GB I forget GPU: MSI Vega 56 Storage: 256GB NVMe boot, 512GB Samsung 850 Pro, 1TB WD Blue SSD, 1TB WD Blue HDD PSU: Inwin P85 850w Case: Fractal Design Define C Cooling: Stock for CPU, be quiet! case fans, Morpheus Vega w/ be quiet! Pure Wings 2 for GPU Monitor: 3x Thinkvision P24Q on a Steelcase Eyesite triple monitor stand Mouse: Logitech MX Master 3 Keyboard: Focus FK-9000 (heavily modded) Mousepad: Aliexpress cat special Headphones:  Sennheiser HD598SE and Sony Linkbuds

 

🏳️‍🌈

Link to comment
Share on other sites

Link to post
Share on other sites

I'm not very familiar with QMK, but I know it's an open source C++ project designed to run on AVR microcontrollers so it should be pretty similar to working with Arduino. The problem is getting the data from you computer to the keyboard. I'd imagine the way you could do it is open a serial connection between the keyboard controller and your computer, then have a script get your computer stats (I'd use the Python PSUTIL library for system telemetry) and then transmit that data to the keyboard over serial (Looks like pySerial could work for that). The next step would be modifiying QMK to listen to the serial port and display the data on the OLED. This is the part I'm unfamiliar with. Maybe post around on the QMK git repo? 

ASU

Link to comment
Share on other sites

Link to post
Share on other sites

Just now, Hackentosher said:

I'm not very familiar with QMK, but I know it's an open source C++ project designed to run on AVR microcontrollers so it should be pretty similar to working with Arduino. The problem is getting the data from you computer to the keyboard. I'd imagine the way you could do it is open a serial connection between the keyboard controller and your computer, then have a script get your computer stats (I'd use the Python PSUTIL library for system telemetry) and then transmit that data to the keyboard over serial (Looks like pySerial could work for that). The next step would be modifiying QMK to listen to the serial port and display the data on the OLED. This is the part I'm unfamiliar with. Maybe post around on the QMK git repo? 

I will look around, but I already made and ordered a PCB to use two Pro Micros; one for the screen, one for the LCD.

 

Any idea if there is such a thing as a two male micro USB into one female micro USB or type-c? I'd love if I could only have one cable coming out of the back of this thing.

Quote me to see my reply!

SPECS:

CPU: Ryzen 7 3700X Motherboard: MSI B450-A Pro Max RAM: 32GB I forget GPU: MSI Vega 56 Storage: 256GB NVMe boot, 512GB Samsung 850 Pro, 1TB WD Blue SSD, 1TB WD Blue HDD PSU: Inwin P85 850w Case: Fractal Design Define C Cooling: Stock for CPU, be quiet! case fans, Morpheus Vega w/ be quiet! Pure Wings 2 for GPU Monitor: 3x Thinkvision P24Q on a Steelcase Eyesite triple monitor stand Mouse: Logitech MX Master 3 Keyboard: Focus FK-9000 (heavily modded) Mousepad: Aliexpress cat special Headphones:  Sennheiser HD598SE and Sony Linkbuds

 

🏳️‍🌈

Link to comment
Share on other sites

Link to post
Share on other sites

Just now, kelvinhall05 said:

I will look around, but I already made and ordered a PCB to use two Pro Micros; one for the screen, one for the LCD.

Rip. Is it too late to cancel your order so you can revise your design?

Just now, kelvinhall05 said:

Any idea if there is such a thing as a two male micro USB into one female micro USB or type-c? I'd love if I could only have one cable coming out of the back of this thing.

Why would you want such a thing? Also doesn't QMK have support for those little i2c OLEDs? The challenge I see would be communicating and parsing the data from serial along side keyboard inputs over one cable. This leads me to believe that you'd have to modify QMK and/or whatever host drivers you need running on your computer to get it to work. I think it's doable, but the software sounds a little over my head. 

 

Are you suggesting to get two USB connections over a single cable? I'm not sure how you could do that, perhaps put a USB hub inside the keyboard case? Actually as I think this through, I think this might be the best solution if you want to operate two microcontrollers at the same time, and would enable the simplest software solution, the hardware would just get a little messy.

ASU

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, Hackentosher said:

Are you suggesting to get two USB connections over a single cable? I'm not sure how you could do that, perhaps put a USB hub inside the keyboard case? Actually as I think this through, I think this might be the best solution if you want to operate two microcontrollers at the same time, and would enable the simplest software solution, the hardware would just get a little messy.

Agreed, USB hub is what I was thinking. Partly because with my own PCB, the only wires would be to the USB hub and four going to the LCD. That's it. Also like one going to a potentiometer but I might think of a different way to handle that.

 

Might cancel order anyway since I need to double check some of the switch placement.

Quote me to see my reply!

SPECS:

CPU: Ryzen 7 3700X Motherboard: MSI B450-A Pro Max RAM: 32GB I forget GPU: MSI Vega 56 Storage: 256GB NVMe boot, 512GB Samsung 850 Pro, 1TB WD Blue SSD, 1TB WD Blue HDD PSU: Inwin P85 850w Case: Fractal Design Define C Cooling: Stock for CPU, be quiet! case fans, Morpheus Vega w/ be quiet! Pure Wings 2 for GPU Monitor: 3x Thinkvision P24Q on a Steelcase Eyesite triple monitor stand Mouse: Logitech MX Master 3 Keyboard: Focus FK-9000 (heavily modded) Mousepad: Aliexpress cat special Headphones:  Sennheiser HD598SE and Sony Linkbuds

 

🏳️‍🌈

Link to comment
Share on other sites

Link to post
Share on other sites

On 6/4/2020 at 1:33 PM, kelvinhall05 said:

Agreed, USB hub is what I was thinking. Partly because with my own PCB, the only wires would be to the USB hub and four going to the LCD. That's it. Also like one going to a potentiometer but I might think of a different way to handle that.

 

Might cancel order anyway since I need to double check some of the switch placement.

Can you share your board design?

ASU

Link to comment
Share on other sites

Link to post
Share on other sites

17 minutes ago, Hackentosher said:

Can you share your board design?

sharppcb.zip

 

Sent it to JLC already after updating the switch placement and some other minor stuff. Oh well.

Quote me to see my reply!

SPECS:

CPU: Ryzen 7 3700X Motherboard: MSI B450-A Pro Max RAM: 32GB I forget GPU: MSI Vega 56 Storage: 256GB NVMe boot, 512GB Samsung 850 Pro, 1TB WD Blue SSD, 1TB WD Blue HDD PSU: Inwin P85 850w Case: Fractal Design Define C Cooling: Stock for CPU, be quiet! case fans, Morpheus Vega w/ be quiet! Pure Wings 2 for GPU Monitor: 3x Thinkvision P24Q on a Steelcase Eyesite triple monitor stand Mouse: Logitech MX Master 3 Keyboard: Focus FK-9000 (heavily modded) Mousepad: Aliexpress cat special Headphones:  Sennheiser HD598SE and Sony Linkbuds

 

🏳️‍🌈

Link to comment
Share on other sites

Link to post
Share on other sites

Lol rip KiCAD libraries :(

Spoiler

image.thumb.png.2fa88cd7168ddd5424af9e8121d50598.png

Okay since the schematic library isn't really working, I'll just have to look at your layout and see what I can see.

Right off the hop, iirc the center to center spacing on 1u keys is 19mm?

Spoiler

image.thumb.png.6843510dd552efc546599657f0cdf5f0.png

Okay getting back to the matter at hand, I'm not sure what your case looks like, but I can see that the USB ports of both pro micros are facing into this big valley on the board. I'm assuming the case will cover this area and this is where you'll place your LCD and USB hub? But if that's true, why are there four through holes for the LCD coming off U2 on the other edge of the board? Shouldn't the connector be on the other edge so it's closest to your LCD? I recognize that this would impede on the footprints of your switches, but I would use 4 test points on the other side of the board to solder connections to. Alternatively, you can use a surface mount 0.1" header like this. Okay last thing, I have a feeling this is a library import issue, but I am fairly certain the Cherry MX switch footprint needs a 4mm hole for the stem of the switch to poke into. Please double check your switch footprints, I'd hate for your boards to arrive only for you to realize your switches don't fit. I've made errors like this and it sucks :( 

Spoiler

image.thumb.png.67f39f1789559ef55efad652993e0170.png

 

Other than that, it's an interesting design, can you attach an image of what the layout would look like?

ASU

Link to comment
Share on other sites

Link to post
Share on other sites

18 minutes ago, Hackentosher said:

Lol rip KiCAD libraries :(

  Reveal hidden contents

image.thumb.png.2fa88cd7168ddd5424af9e8121d50598.png

Okay since the schematic library isn't really working, I'll just have to look at your layout and see what I can see.

Right off the hop, iirc the center to center spacing on 1u keys is 19mm?

  Reveal hidden contents

image.thumb.png.6843510dd552efc546599657f0cdf5f0.png

Okay getting back to the matter at hand, I'm not sure what your case looks like, but I can see that the USB ports of both pro micros are facing into this big valley on the board. I'm assuming the case will cover this area and this is where you'll place your LCD and USB hub? But if that's true, why are there four through holes for the LCD coming off U2 on the other edge of the board? Shouldn't the connector be on the other edge so it's closest to your LCD? I recognize that this would impede on the footprints of your switches, but I would use 4 test points on the other side of the board to solder connections to. Alternatively, you can use a surface mount 0.1" header like this. Okay last thing, I have a feeling this is a library import issue, but I am fairly certain the Cherry MX switch footprint needs a 4mm hole for the stem of the switch to poke into. Please double check your switch footprints, I'd hate for your boards to arrive only for you to realize your switches don't fit. I've made errors like this and it sucks :( 

  Reveal hidden contents

image.thumb.png.67f39f1789559ef55efad652993e0170.png

 

Other than that, it's an interesting design, can you attach an image of what the layout would look like?

Yeah rip libraries. Forgot about that part xD

 

Key spacing is 19.05mm to account for tolerances in the keycaps, key wobble, etc. I am not worried about the spacing for the alpha block, but the top 13 switches are for SKCL compact (the rest of the board using normal SKCL green switches). The footprints for those will be fine, I am just hoping I measured the spacing for SKCL compact right...I already realized I fucked up once and accidentally deleted MX9 (F6 in my layout) probably while I was messing with edge cuts and accidentally selected it. I already got in touch with JLC but have plans on how to fix it if they can't cancel.

 

I put the connectors for the LCD there for a few reasons, the big one being that I did a shitload of measuring and that was the only place they would comfortably fit, even if I used smaller pads. Also, there is a power switch on that side of the case, so I'd like to retain that functionality. Either way I am going to have some long wires, might as well have the pads where they are slightly less in the way.

 

Pictures of the case I am using after I've cut it down to size (just reusing the old Sharp PA1000H case) as well as the layout:

Spoiler

vw12d9asI-idQ0o4NXLyfRp4DC94qFFFpWUKf4Kde14YUttgWPfXaZZmnE3omH4d10nVfIH7y4cO5sp7VMwUGm4DqZohd7C9Vgi9er3rFcP8dI0tZzIr1NyT92ViJfCKfbbDk6Byrb2c88ES6rO-gkfv9Z9D9cSDw-4h4xCO75RZT3hO6BoiyXVIbHQVbw6Z1aOhYP4afnv14sLMUopbbR73lQcCkNNOS0b6geYzZZeTs2v-ftAbRiCogI0KlJk9GVaY_8-nKKsgnXLt6MHiLgkwl0IH91FLU1I3b95df38aDke6EeFAPzur6R4vV5Qpqd7FCsA8EIe6RBu-0kwIkeY8W_Ao10A-MaenjTC3DmfCIBrEA1YEQ4Z4LFMbMHoqMFzevRGwg_zNUdzT0ZlDDxq6LEuj6y4CJubXng_FwboKbC2pUMHRc5OStmXn1dfSyYkoPFuK9ypjzrXcrv0HXeCy2-ZvwxkTYSbG8LLsKxDyz3kwaENmrjEBYrIv13ws9UC9-C423fNQ6mi8KDdpcABtHZWVHqR7uK_UL1Vc_cSV9kRDpYPEHi2KdJtRemMJHc-TXBiE3D9voXI6Vt1rjWLXrQ7tux_XD99BRWdNoGUgWxhf9HfkLoILOiZaOpmbfBuxu3VTb2PqCb0JCLY0pDrz1S_WMo0b7KAaHIEErhNtkPBHX6h9qqG4OUakrOs=w1368-h1008-no?authuser=0

 

Very thicc case, tons of space inside for everything.

 

HX4ZGNwKJR9YpV11D0fR49x1Ng7jP_7yTpcqVwH5oSRqyFON1MzxR6plHStuuZsn82QFhKnvz8wL2O6f4066nlmwLBRYJMb_cewPdLE3e5xWBD9TuKrYoFlkmmG8kReDkG7bruzkEEPnASSOoMj5TaUizmzw3sVBo_oCsMx2KNqu4YGg7sNIiJt7mQMqO18RtU8kzem5kLjpQwMCkLZsOXVvJ5_-_0zIUIgNiiao8IkJ5JSKMad0yEKDUuyuB3Ln-LkiUcHmKatO1HSwJmkdSHXp3n7JD1RYbTzjiGx3b_qY0nwPxvMaTNNXkWdqd9c_xdMgV8BpaAAsTyMkR_ZeLjVhbeSbcukDP65LPyMDTdTXUMgpF4xFlCtv3UeZnCjfIEQCRdcM1sovvFj6mlLnig0DUiiY2x_Ik1fOkm76psE8DsKw7pgCmvGklq63dm3rPranSeSkCZ9eBCjGMwSd9n9cDQ6BZFUeRlxYtYWRsqiKLHnCBA7JfvblkZejZ0MCy3RFNQou3uyoPYP_MehbbC7wTCPtFfjS70xqpM_TGWy_yT6BYylCZkeSYYO4QTCieU6v5axHweHj8qrGlTKY_ekRocTxuN5mXNYZAeKXkIe2WtEsfSz-BMqnR2xhfM7B3Ic_o4zXKViQREMXLk2_-CgTU2ez8vsJ48Hc47HbaPpACRjrqyyZaBeZc1kKcYA=w1386-h1009-no?authuser=0

 

Big cutout for LCD.

 

D1vKZYr3CFhQlpjzJLbzKIifQtvbRlBUk4RFJ8mT6i7DeyAPohhQramO1DZqqWDoRAP0R5KOb3v6AStfB5jlwNu8EG3OreuB3E8N1Uh_82NaGHwzzNYxiw4NelzT-xtDBlgCWG0VkC0PHI1-CQU4pg7nCF1ul4wskk_7ZgDvXweF_mTtUtzYmb4_AmyAsfppND9OglcJCq0GPI0tzo9JpiHoXZltLAKTnTUe1f5Q43k0dRZkbbC5guoOxBdaxI0kXVwkdYY2rpt6_wD2tD0IGrE5EW4n7_yTZ9bRyHZ7aoj3rGvS-AHmp6SP_IKY1xhuteS-GoPL2ZWrNzTPJgKPjjyj9T1MQWq_V-YNdRVTsyCfqOafp8g6QHm1I_GMkxmkm9BRKniLCEXjeeJt7eYHP8X95QBhx4W2yALH5F8MPXRsZZqdyvha0_boC9lhFoegx5UqGpFMzAf2Q4utDzr4liB6STcDUZmVWrtdr_ea80B_dxbltVUaFA0kMiYs4IclbbHcsilavYsPDDws8M-gNPlJPGQYFl5y19DQmOtnyOtVABc0_-vOR0ZcRSoaWFLPtNZ8P3BDI_KSUQc_7fc88J0PcS3cb4-WOIBPSOPahjRLzNwXfG8CPmeuMjqUmVPibqrCcmZ2rUyp8BI_2zKkWG4MubNcCSOthP9Sah7oia-3oxInFbleXqEQ7mIKmTU=w1344-h1009-no?authuser=0

 

Huge cutout, and plenty of dead space under the PCB/keyboard module if I need it

 

1MNsdGPI3SfruHMjFgO4ksziORVUd_z7PnNI04eO8h6EOXI1o6H-ejdbQtRuzAo9kKaJ1mCmKqV9ecP9Oat299va05j-zt3C-Kc-1abl0o4hfi2GusK3UK3SGiYrhiOu8DTbz79Spjrn5vOSd8-F7krzOC4ofdg5v7rdEzb6u0Lh4VJPelxyw8uuDMSNItGEnMUMJTDuOKHJTYp6tNyfU4-7H2pl7JwiPjYk9x6foRRbNuRtBMq2s0WWyQCKAVJcx_U2TebXGRQ0UaxnFdsbSpYgHNzFeG8f3oSgCuo48eZP-OWWO-Q-WNauFfHGgOFre91hBQj9hnKNiFspYdGNtUphDcl7jirnLsqQJSwGiVQxPGQQuOqMPwTr5nVnsrE9PzG9IpDfc6P3qmJeOjBOzPO40byGM2gocMLt6Z-szjarcJcKuslpIfZ6-LWIxxxYRFYY-Jxlu4kVBhfo8RwH5-0dhhHNpYJrTK8VG-0PFseQY4HLzSpHK8hFMnxIP-4yKDhn7ejOC0IRTL0adkhwfz0MQuE4gE26dXG7JMNGM0-dubYvCsIEPw2ne1UBp8V0749IP4G1SqIWNJQRe2RLOPiWti3x3FxVpKCy3tYLvj60pLTm20YVRmcUngwDbGUSeaWoqsMJk54E8iNQ4IrapQqX7ZQFCHoRb7jPX3qieeVCcREu4BMyvBpT6k66rck=w1344-h1009-no?authuser=0

 

Underside (hot glue is temporary)

 

sharp-pa1000h.png.9157e62df74817b05315086479975f57.png

 

Layout with keys remapped to what I will probably have them as

 

Quote me to see my reply!

SPECS:

CPU: Ryzen 7 3700X Motherboard: MSI B450-A Pro Max RAM: 32GB I forget GPU: MSI Vega 56 Storage: 256GB NVMe boot, 512GB Samsung 850 Pro, 1TB WD Blue SSD, 1TB WD Blue HDD PSU: Inwin P85 850w Case: Fractal Design Define C Cooling: Stock for CPU, be quiet! case fans, Morpheus Vega w/ be quiet! Pure Wings 2 for GPU Monitor: 3x Thinkvision P24Q on a Steelcase Eyesite triple monitor stand Mouse: Logitech MX Master 3 Keyboard: Focus FK-9000 (heavily modded) Mousepad: Aliexpress cat special Headphones:  Sennheiser HD598SE and Sony Linkbuds

 

🏳️‍🌈

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×