I made this project in my personal time with no financial benefit or sponsorship. I will continue to improve the project. I have done my best to ensure that everything is accurate and functional, there's always a chance that mistakes may occur. I cannot be held responsible for any loss of your time or money that may result from using this open source project. Thank you for your understanding.
## About the License
It's CC-NC. So DIY for yourself and for your friend, don't make money from it.
## HOW TO BUILD
### PCB
* Go JLCPCB and make order with the gerber zip file (latest `Production\PCB\mai_io_v*.zip` and `Production\PCB\mai_button_v*.zip`), regular FR-4 board, 1.6mm thickness. You need 1x io PCB and 8x button PCBs for one Mai Pico con.
* Find a service to make custom etching ITO coated glass. The AutoCAD file is `Production\CAD\mai_pico_ito_v*.dwg`. Use 2mm thickness, 10-20ohm sheet resistance ITO coated glass.
<imgsrc="doc/ito_glass.jpg"width="70%">
* The ITO coated glass is connected to the IO PCB by "zebra cable" (1.6mm pitch: 0.8mm black part and 0.8mm clear part). A silicon heater head at 200°C is used to stick the zebra cable to the gold finger part of PCB and ITO coated glass. The formal name of this cable is "Heat Seal Connector".
* Custom ITO coated glass is relatively expensive, but ours is small, so it's not like arcade-size expensive. This is the shop I ordered the ITO glass. The minimal batch is around 5 pieces. But they provide service only in China as far as I know.
* Print out the 8x set of base, link, button and cover from `Production\3DPrint\mai_*.stl`.
* Buy 8x 2mm (diameter) * 40mm (length) steel shafts, they're used as the button hinge.
* Here's how to assemble them, hinge shaft and components on PCB are not shown in this rendered image.
<imgsrc="doc/assemble.jpg"width="80%">
* Here's how I assembled the ring. Please note that wiring for the button switches is missing in these pictures.
* All discrete components ready.
<imgsrc="doc/assemble_1.jpg"width="60%">
* Solder the button PCB first.
<imgsrc="doc/assemble_2.jpg"width="60%">
* PCBs are daisy-chained using short 4-wire cable, they're LED_GND, LED, LED_5V and BUTTON_GND. So the BUTTON signal pin is not soldered yet.
<imgsrc="doc/assemble_3.jpg"width="60%">
* You need 3M5423 UHMW film tape (or similar hard and super-smooth PTFE tape with 0.2-0.3 thickness). It is to lubricate the button surface that touches the keyswitch.
<imgsrc="doc/button_lub.jpg"width="60%">
* Assemble the 3D printed parts together with the PCBs.
<imgsrc="doc/assemble_4.jpg"width="60%">
* Use shaft to expand the support holes a little bit, and apply some keyboard switch lubricant such as Krytox 205G0 to make the shaft super smooth.
<imgsrc="doc/assemble_5.jpg"width="60%">
* Each `link` needs 8x M2*4mm screws to connect two `base`s together.
* They're easy to find. Choose cheap or even tiny-flawed ones, they work fine.
* There're 2 types of driver board, one is micro-HDMI only and the other supports type-C display (for convenient Nintendo Switch connection). They're both OK.
* For the new build, hold the BOOTSEL button while connect the USB to a PC, there will be a disk named "RPI-RP2" showed up. Drag the UF2 firmware binary file into it. That's it.
* It has a command line to do configuration. You can use this Web Serial Terminal to connect to the USB serial port of the Mai Pico. (Note: "?" is for help)
* It implements 3 COM ports, one is for command line and the other two are for LED and Touch. By issuing "whoami" to the command line, each COM port will print their identities.
* Button signal is sent to the host by HID Joystick or HID NKRO (keyboard). There're two set of NKRO keymaps, use `hid <joy|key1|key2>` to switch between them.
## CAD Source File
I'm using OnShape free subscription. It's powerful but it can't archive original designs to local, so I can only share the link here. STL/DXF/DWG files are exported from this online document.