How to use a Pro Micro as a cheap controller/converter
- scottc
- ☃
- Location: Remote locations in Europe
- Main keyboard: GH60-HASRO 62g Nixies, HHKB Pro1 HS, Novatouch
- Main mouse: Steelseries Rival 300
- Favorite switch: Nixdorf 'Soft Touch' MX Black
- DT Pro Member: -
No problem. Good luck! I find that shorting the RST pin several times often works better. Just keep lifting the wire to short it up and down for 4 or 5 seconds as you plug the board in. It's a bit finnicky, but it's reliable once you get the hang of it. Good luck!
Someone also posted a thread about using an IDE called Arduino Builder or something on Windows (thread was called 'How to make a Soarer's converter with no soldering or bs' I think) but I never got it to work.
Someone also posted a thread about using an IDE called Arduino Builder or something on Windows (thread was called 'How to make a Soarer's converter with no soldering or bs' I think) but I never got it to work.
-
- DT Pro Member: -
I used the 'watch "dmesg | tail"' and got a response like this:
[ 7353.955579] brcmsmac bcma0:0: START: tid 1 is not agg'able
[ 8270.225369] usb 3-2: new full-speed USB device number 26 using xhci_hcd
[ 8270.356352] usb 3-2: New USB device found, idVendor=2341, idProduct=8036
[ 8270.356363] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8270.356368] usb 3-2: Product: Arduino Leonardo
[ 8270.356372] usb 3-2: Manufacturer: Arduino LLC
[ 8270.357000] cdc_acm 3-2:1.0: This device cannot do calls on its own. It is no
t a modem.
[ 8270.357044] cdc_acm 3-2:1.0: ttyACM0: USB ACM device
[ 8270.359369] input: Arduino LLC Arduino Leonardo as /devices/pci0000:00/0000:0
0:14.0/usb3/3-2/3-2:1.2/0003:2341:8036.000A/input/input22
[ 8270.359763] hid-generic 0003:2341:8036.000A: input,hidraw0: USB HID v1.01 Mou
se [Arduino LLC Arduino Leonardo] on usb-0000:00:14.0-2/input2
I am sorry but i dont really understand much of this. Is this any help?
[ 7353.955579] brcmsmac bcma0:0: START: tid 1 is not agg'able
[ 8270.225369] usb 3-2: new full-speed USB device number 26 using xhci_hcd
[ 8270.356352] usb 3-2: New USB device found, idVendor=2341, idProduct=8036
[ 8270.356363] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8270.356368] usb 3-2: Product: Arduino Leonardo
[ 8270.356372] usb 3-2: Manufacturer: Arduino LLC
[ 8270.357000] cdc_acm 3-2:1.0: This device cannot do calls on its own. It is no
t a modem.
[ 8270.357044] cdc_acm 3-2:1.0: ttyACM0: USB ACM device
[ 8270.359369] input: Arduino LLC Arduino Leonardo as /devices/pci0000:00/0000:0
0:14.0/usb3/3-2/3-2:1.2/0003:2341:8036.000A/input/input22
[ 8270.359763] hid-generic 0003:2341:8036.000A: input,hidraw0: USB HID v1.01 Mou
se [Arduino LLC Arduino Leonardo] on usb-0000:00:14.0-2/input2
I am sorry but i dont really understand much of this. Is this any help?
- scottc
- ☃
- Location: Remote locations in Europe
- Main keyboard: GH60-HASRO 62g Nixies, HHKB Pro1 HS, Novatouch
- Main mouse: Steelseries Rival 300
- Favorite switch: Nixdorf 'Soft Touch' MX Black
- DT Pro Member: -
You can ignore most of it. The output implies that you're successfully shorting it (but I'm not 100% on this). You should examine the USB-related output when you insert the pro micro normally, then reinsert it while shorting pins and see if the output is different. I'm sorry I can't really help much now, but I'll be home in a week and I'll see what I can do then.
Out of interest, are you trying to flash /dev/ttyACM0? That should be correct from the output above. Maybe post your entire command in case it's a typo.
Out of interest, are you trying to flash /dev/ttyACM0? That should be correct from the output above. Maybe post your entire command in case it's a typo.
- XMIT
- [ XMIT ]
- Location: Austin, TX area
- Main keyboard: XMIT Hall Effect
- Main mouse: CST L-Trac Trackball
- Favorite switch: XMIT 60g Tactile Hall Effect
- DT Pro Member: 0093
Hmm. Sometimes the default bootloader on the Pro Micro is tricky. Try shorting RST and GND just once and flashing. If that doesn't work short them twice in succession within one second and then kick off your flashing command within eight seconds. If that fails unplug replug and try again.
I got my avrdude installation from one of the Mac SDKs that hasu recommends to install. I cannot recall the name at the moment.
Also, of course, it helps if the Pro Micro is plugged directly in to the Mac. If it fails - seriously - try another USB cable. Some are known to be flaky.
Hope this helps - please post results here...
I got my avrdude installation from one of the Mac SDKs that hasu recommends to install. I cannot recall the name at the moment.
Also, of course, it helps if the Pro Micro is plugged directly in to the Mac. If it fails - seriously - try another USB cable. Some are known to be flaky.
Hope this helps - please post results here...
- GuilleAcoustic
- Location: France
- Main keyboard: IBM Model F XT
- Main mouse: CH Products Trackball Pro
- Favorite switch: capacitive buckling spring
- DT Pro Member: -
Nice explanations. I recently bought a Pro micro to replace a Teensy++, as the later doesn't fit inside my trackball (and I'd like to avoid inline controller as much as possible). I'll keep as eye on this, just in case I encounter some issues.
-
- DT Pro Member: -
Okay, now I am clueless.
I successfully flashed my pro micro and have tried two different ways to solder my model m to it but with no luck.
Here is what I get with ' watch "dmesg | tail" '':
[186349.519329] usb 3-2: USB disconnect, device number 5
[187502.624006] usb 3-2: new full-speed USB device number 6 using xhci_hcd
[187502.754013] usb 3-2: New USB device found, idVendor=feed, idProduct=6535
[187502.754024] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=
0
[187502.754031] usb 3-2: Product: PS/2(Set3)-USB Keyboard converter(IBM 122keys)
[187502.754036] usb 3-2: Manufacturer: t.m.k.
[187502.754426] usb 3-2: ep 0x81 - rounding interval to 64 microframes, ep desc
says 80 microframes
[187502.756602] input: t.m.k. PS/2(Set3)-USB Keyboard converter(IBM 122keys) as
/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:FEED:6535.000D/input/inpu
t19
[187502.756984] hid-generic 0003:FEED:6535.000D: input,hidraw0: USB HID v1.11 Ke
yboard [t.m.k. PS/2(Set3)-USB Keyboard converter(IBM 122keys)] on usb-0000:00:14
.0-2/input0
[187502.759444] hid-generic 0003:FEED:6535.000E: hiddev0,hidraw1: USB HID v1.11
Device [t.m.k. PS/2(Set3)-USB Keyboard converter(IBM 122keys)] on usb-0000:00:14
.0-2/input1
My Model M had a RJ45 connector on it so im using a terminal to USB converter provided by this repository:
https://github.com/tmk/tmk_keyboard/tre ... rminal_usb
My current soldering setup is:
yellow -> 5 ( I believe the yellow is the CLOCK)
red -> 2 (and this one to be DATA)
Black -> VCC
White -> GND
I have also tried this:
Yellow -> 2
Red -> 3
Black -> VCC
White -> GND
Here is a link to a couple of pictures (with old soldering setup):
http://imgur.com/a/8wJkp
My current keyboard is so BAD it hurts! Please help!
I successfully flashed my pro micro and have tried two different ways to solder my model m to it but with no luck.
Here is what I get with ' watch "dmesg | tail" '':
[186349.519329] usb 3-2: USB disconnect, device number 5
[187502.624006] usb 3-2: new full-speed USB device number 6 using xhci_hcd
[187502.754013] usb 3-2: New USB device found, idVendor=feed, idProduct=6535
[187502.754024] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=
0
[187502.754031] usb 3-2: Product: PS/2(Set3)-USB Keyboard converter(IBM 122keys)
[187502.754036] usb 3-2: Manufacturer: t.m.k.
[187502.754426] usb 3-2: ep 0x81 - rounding interval to 64 microframes, ep desc
says 80 microframes
[187502.756602] input: t.m.k. PS/2(Set3)-USB Keyboard converter(IBM 122keys) as
/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:FEED:6535.000D/input/inpu
t19
[187502.756984] hid-generic 0003:FEED:6535.000D: input,hidraw0: USB HID v1.11 Ke
yboard [t.m.k. PS/2(Set3)-USB Keyboard converter(IBM 122keys)] on usb-0000:00:14
.0-2/input0
[187502.759444] hid-generic 0003:FEED:6535.000E: hiddev0,hidraw1: USB HID v1.11
Device [t.m.k. PS/2(Set3)-USB Keyboard converter(IBM 122keys)] on usb-0000:00:14
.0-2/input1
My Model M had a RJ45 connector on it so im using a terminal to USB converter provided by this repository:
https://github.com/tmk/tmk_keyboard/tre ... rminal_usb
My current soldering setup is:
yellow -> 5 ( I believe the yellow is the CLOCK)
red -> 2 (and this one to be DATA)
Black -> VCC
White -> GND
I have also tried this:
Yellow -> 2
Red -> 3
Black -> VCC
White -> GND
Here is a link to a couple of pictures (with old soldering setup):
http://imgur.com/a/8wJkp
My current keyboard is so BAD it hurts! Please help!
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
Have you made sure that your Pro Micro runs on 5V and that it provides 5V to the Model M? There is a jumper that needs to be bridged by soldering the pads together. It should be on the left or the right side of the USB socket on the top side of the board.
Otherwise, the internal voltage regulator will provide 3.3V to the AVR and the Vcc pin.
Otherwise, the internal voltage regulator will provide 3.3V to the AVR and the Vcc pin.
- Redmaus
- Gotta start somewhere
- Location: Near Dallas, Texas
- Main keyboard: Unsaver | 3276 | Kingsaver
- Main mouse: Kensington Slimblade
- Favorite switch: Capacitative Buckling Spring
- DT Pro Member: -
- Contact:
This could easily not be or be the problem you are having but did you double check and make sure you didn't read the pinout upside down? I did this with my wyse and after I corrected it the kb worked.
-
- Location: France
- Main keyboard: Model F XT
- Favorite switch: Buckling Spring
- DT Pro Member: -
Hi santeri,
I think you are making a mistake with the pin numbering on the pro micro.
I've never used the tmk converter (only the controller), but in the README, in shows that the pins to use are:
Data: PD2
Clock: PD5
If you look at the first page of this thread, you can see that the PD2 and PD5 do not correspond to the pin numbering on the board. In fact, PD2 is "Rx" and PD5 control a led.
So you'll have to change the pins used in the source code.
If right now you have Data on Pin 2, the corresponding register will be PD1. For Clock on Pin 5, it's PC6.
I've had a look in the converter, and with just changing these lines, you should be ok.
to
But I see there are other things declared to use PD1, so if it doesn't work change the DATA to another pin on the pro micro.
I think you are making a mistake with the pin numbering on the pro micro.
I've never used the tmk converter (only the controller), but in the README, in shows that the pins to use are:
Data: PD2
Clock: PD5
If you look at the first page of this thread, you can see that the PD2 and PD5 do not correspond to the pin numbering on the board. In fact, PD2 is "Rx" and PD5 control a led.
So you'll have to change the pins used in the source code.
If right now you have Data on Pin 2, the corresponding register will be PD1. For Clock on Pin 5, it's PC6.
I've had a look in the converter, and with just changing these lines, you should be ok.
Code: Select all
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 5
/* RXD for data line */
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 2
Code: Select all
#define PS2_CLOCK_PORT PORTC
#define PS2_CLOCK_PIN PINC
#define PS2_CLOCK_DDR DDRC
#define PS2_CLOCK_BIT 6
/* RXD for data line */
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 1
-
- DT Pro Member: -
Findecanor: No I have not bridged the jumper. Thanks for the information!
Redmaus: I will look into this, thanks!
keiwop:
So my current CLOCK is in the right pin? Something went right after all
I much rather would change the soldering setup. I had so much trouble with the flashing and don not want to do it again (at least not yet) if possible.
Would it work if I solder the DATA to RX and solder the jumper togehter mentioned by Findecanor?
Thanks for the huge help keiwop!
I am also wondering, where did you guys come up with all this information? I usually try to learn while I do projects like this but this time I think I have learned nothing. This is some dark magic shit to me right now. Any recommendations on good articles to read in this subject?
Redmaus: I will look into this, thanks!
keiwop:
So my current CLOCK is in the right pin? Something went right after all
I much rather would change the soldering setup. I had so much trouble with the flashing and don not want to do it again (at least not yet) if possible.
Would it work if I solder the DATA to RX and solder the jumper togehter mentioned by Findecanor?
Thanks for the huge help keiwop!
I am also wondering, where did you guys come up with all this information? I usually try to learn while I do projects like this but this time I think I have learned nothing. This is some dark magic shit to me right now. Any recommendations on good articles to read in this subject?
- HzFaq
- Location: Windsor, UK
- Main keyboard: Phantom
- Main mouse: CST L-Trac
- Favorite switch: MX Clears
- DT Pro Member: -
I found this was quite handy/informative.
http://www.ladyada.net/learn/avr/avrdude.html
I'm in the process of getting one of these set up to use as an ADB converter, I'll post a bit more when I've got the damn thing flashed .
http://www.ladyada.net/learn/avr/avrdude.html
I'm in the process of getting one of these set up to use as an ADB converter, I'll post a bit more when I've got the damn thing flashed .
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
TMK, right? I'd love a drag and drop ADB converter .hex file for Teensies. The default one in TMK mismaps a few things, enough to drive me mad, and then the very moment I edit the source the whole thing collapses.
I've no idea why. Which is the dangerous part. Every edit I make makes sense to me, but not the compiler. Uh oh!
I've no idea why. Which is the dangerous part. Every edit I make makes sense to me, but not the compiler. Uh oh!
- HzFaq
- Location: Windsor, UK
- Main keyboard: Phantom
- Main mouse: CST L-Trac
- Favorite switch: MX Clears
- DT Pro Member: -
Yeah, I've got a few boards already running TMK so getting it configured and compiled isn't the issue for me; getting the firmware onto the bloody pro-micro is the problem at the moment. I think I know what the problem is, I just haven't had time to sort it yet...
Upload your keymap file somewhere, I don't mind proofing it for you.
Upload your keymap file somewhere, I don't mind proofing it for you.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
I'll take you up on that when I'm at my computer! It's for my AEK I & IIs, for Mac use. Basically everything exactly as it was in the first place.
-
- DT Pro Member: -
Okay. There is so much tin on the pro micro that I have decided to order a new one from Hong Kong.
For next time though, what exactly should I do?
I am thinking of wiring the DATA to RX and CLOCK to PC6 with tmk setup like this:
#define PS2_CLOCK_PORT PORTC
#define PS2_CLOCK_PIN PINC
#define PS2_CLOCK_DDR DDRC
#define PS2_CLOCK_BIT 6
/* RXD for data line */
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 2
Is this correct?
And should I bridge the J1 piece together?
I am beginning to wonder if my Model M is really dead.
For next time though, what exactly should I do?
I am thinking of wiring the DATA to RX and CLOCK to PC6 with tmk setup like this:
#define PS2_CLOCK_PORT PORTC
#define PS2_CLOCK_PIN PINC
#define PS2_CLOCK_DDR DDRC
#define PS2_CLOCK_BIT 6
/* RXD for data line */
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 2
Is this correct?
And should I bridge the J1 piece together?
I am beginning to wonder if my Model M is really dead.
- jou
- Location: Switzerland
- Main keyboard: Ergodox
- Main mouse: Apple Magic Trackpad
- Favorite switch: Not sure yet
- DT Pro Member: -
Keep in mind that even with shorting reset twice correctly, the Pro Micro only stays in bootloader mode for 8 seconds. After those 8 seconds, it starts the flashed program.
technomancy's fork of TMK for Atreus has a nice little addition to the Makefile, a `make upload` target that waits until the bootloader device shows up and then start `avrdude` immediately to flash it. See https://github.com/technomancy/tmk_keyb ... kefile#L42 and https://github.com/technomancy/tmk_keyb ... #L142-L144 for the implementation of it which you can paste into your own Makefile. The device name on Linux should usually be `/dev/ttyACM0` (I mostly use Linux via SSH on machines several hundred kilometres away, so I can't confirm it). On Mac OS X, you can derive the device name from the location ID which you can find in the "System Information" app:
Start with "/dev/ttyusbmodem", drop "0x" and take all digits before the first zero and add an "1" at the end. So in my example with location ID `0x14100000`, the bootloader will respond at `/dev/tty.usbmodem1411`.
technomancy's fork of TMK for Atreus has a nice little addition to the Makefile, a `make upload` target that waits until the bootloader device shows up and then start `avrdude` immediately to flash it. See https://github.com/technomancy/tmk_keyb ... kefile#L42 and https://github.com/technomancy/tmk_keyb ... #L142-L144 for the implementation of it which you can paste into your own Makefile. The device name on Linux should usually be `/dev/ttyACM0` (I mostly use Linux via SSH on machines several hundred kilometres away, so I can't confirm it). On Mac OS X, you can derive the device name from the location ID which you can find in the "System Information" app:
Start with "/dev/ttyusbmodem", drop "0x" and take all digits before the first zero and add an "1" at the end. So in my example with location ID `0x14100000`, the bootloader will respond at `/dev/tty.usbmodem1411`.
- GuilleAcoustic
- Location: France
- Main keyboard: IBM Model F XT
- Main mouse: CH Products Trackball Pro
- Favorite switch: capacitive buckling spring
- DT Pro Member: -
I bought only 1 Pro Micro ... but I guess I'll just like the Teensy and solder header pins on it to use as a prototyping one. Best having a sample of each and use them with breadboards.
I do not feel like soldering / desoldering wires until I get it right or cover it completly with melted tin .
I do not feel like soldering / desoldering wires until I get it right or cover it completly with melted tin .
- HzFaq
- Location: Windsor, UK
- Main keyboard: Phantom
- Main mouse: CST L-Trac
- Favorite switch: MX Clears
- DT Pro Member: -
Et viola! One functional AAK using hasu's ADB converter running on a pro-micro . Very happy with this, going to get it all pretty over the weekend and try it out as a work board. I've also included my super pro wiring diagram incase someone else is planning on doing this . Also, sorry about the attachment size...
- Attachments
-
- 20150528_220115.jpg (458.83 KiB) Viewed 11202 times
-
- super_wiring_diagram.jpg (212.12 KiB) Viewed 11202 times
- scottc
- ☃
- Location: Remote locations in Europe
- Main keyboard: GH60-HASRO 62g Nixies, HHKB Pro1 HS, Novatouch
- Main mouse: Steelseries Rival 300
- Favorite switch: Nixdorf 'Soft Touch' MX Black
- DT Pro Member: -
Great work! My crappy inline converter doesn't work now so I'm going to have to keep this as a reference for my own AAK.
- HzFaq
- Location: Windsor, UK
- Main keyboard: Phantom
- Main mouse: CST L-Trac
- Favorite switch: MX Clears
- DT Pro Member: -
Oh and something that worked out nicely that I didn't even consider to check (stupidly); I followed the wiring guide in the OP and it turns out TMK uses the same pinout as soarers .
And a tip for windows users, have device manager open when you're trying to get to the bootloader to flash the firmware. If you expand the keyboard menu and the ports menu (I think thats what it's called, I'll do a screenshot later) you can see if the board made it into bootloader (or not, as is the case 95% of the time with me).
And a tip for windows users, have device manager open when you're trying to get to the bootloader to flash the firmware. If you expand the keyboard menu and the ports menu (I think thats what it's called, I'll do a screenshot later) you can see if the board made it into bootloader (or not, as is the case 95% of the time with me).
- hasu
- Location: Japan
- Main keyboard: HHKB
- Main mouse: HHKB
- Favorite switch: Topre
- DT Pro Member: -
I got 3.3V Pro Micro the other day and had a problem that bootloader starts sketch or application just in one seconds, not 8 secs after double tap reset button. I couldn't flash firmware at all.
The culprit was infamous 'ModemManager', I'm on Ubuntu. Seems like ModemManager pokes every serial devices when it appears newly, and this cause the bootloader to finish too early and start a sketch.
I lost my half a day until I found the daemon in process list
The culprit was infamous 'ModemManager', I'm on Ubuntu. Seems like ModemManager pokes every serial devices when it appears newly, and this cause the bootloader to finish too early and start a sketch.
I lost my half a day until I found the daemon in process list
- scottc
- ☃
- Location: Remote locations in Europe
- Main keyboard: GH60-HASRO 62g Nixies, HHKB Pro1 HS, Novatouch
- Main mouse: Steelseries Rival 300
- Favorite switch: Nixdorf 'Soft Touch' MX Black
- DT Pro Member: -
Oh no... that's such a pain. Well thank you for mentioning it, hopefully it will save someone else the mistake in the future.
-
- Main keyboard: diy
- Main mouse: logitech g602
- Favorite switch: cherry mx black
- DT Pro Member: -
I had a hard time programming my pro micro the other day for about an hour I couldn't get it to program then I noticed when I had it go into the bootloader it was changing the port from com4 to com5 for that 8 second program window. Once i figured that out I changed my batch script to the correct port and now it programs without a problem lol
- HzFaq
- Location: Windsor, UK
- Main keyboard: Phantom
- Main mouse: CST L-Trac
- Favorite switch: MX Clears
- DT Pro Member: -
Yeah, I had the same thing; the pro-micro was on COM1 or something but the bootloader was on COM7. It's the other reason I would recomend having device manager open when fiddling.
Oh and another thing I found helpful was to hard wire a reset button, even if it's just temporary.
Oh and another thing I found helpful was to hard wire a reset button, even if it's just temporary.
-
- Main keyboard: diy
- Main mouse: logitech g602
- Favorite switch: cherry mx black
- DT Pro Member: -
ya I plan to add a switch but since I was just testing it to see if I could get it to work as a numpad I don't have anything connected to it. What I did was just drop a 2 pin header into the reset and ground next to it and just tapped it with a wire to connect the 2 pins and I didn't really have a problem with it. The program window is small but I never missed it the few times I reprogrammed it changing my horribly messed up matrix file one mistake at a time.HzFaq wrote: ↑Yeah, I had the same thing; the pro-micro was on COM1 or something but the bootloader was on COM7. It's the other reason I would recomend having device manager open when fiddling.
Oh and another thing I found helpful was to hard wire a reset button, even if it's just temporary.
So now I have a batch script to compile the firmware and a batch script to program the pro micro it takes all the work out of doing that lol