INap Malinka, Your NRF24L01 Transmitter That Can Play Pokemon

iNap Malinka was mostly made as a decent, Raspberry Pi-based NRF24L01 transmitter. But, as it turns out, you can also play games on it! Malinka is a small DIY handheld that runs RetroPie, allowing it to play any retro game, including ports. However, because it's primarily intended for on-the-go tinkering, there's an additional USB port for any kind of peripheral, an HDMI port, and a decent audio section. Not only that, but it's the same size as your phone and only 12mm thick. Two joysticks, 3.5″ capacitive touch screen, Raspberry Pi Zero 2W power.

However, if you're only interested in gaming, you can completely disregard the radio section and use it as a small, DIY handheld! Formally, it's a mobile HMI because, in addition to the NRF24L01, you can control your devices via WiFi and Bluetooth!!

INap Malinka, Your NRF24L01 Transmitter That Can Play Pokemon

In this instructable, I will demonstrate how to put together the handheld. Remember to visit the GitHub wiki for more details!

This tutorial supposes you aren't completely new to electronics and have some prior experience with the Raspberry Pi, soldering, and printing in general.

Supplies

Supplies

You will need tools and soldering skills together to assemble the handheld. It would be awesome if you had a hot-air station, but in this tutorial, I'll show you how to put together the Malinka using only a soldering iron. Checklist of tools:

  • cutting pliers
  • tweezers
  • solder (preferably thin and containing lead (Sn60Pb40), I use 0.4mm)
  • desoldering wire
  • kapton tape
  • double sided tape
  • flux or soldering paste
  • IPA alcohol/isopropanol
  • a multimeter (even a cheap one will do)
  • a screwdriver
  • ESD cloth along with an ESD brush
  • third hand and/or PCB holder
  • and of course, a soldering iron.

Optional, but strongly advised:

  • straight pliers
  • desoldering pump
  • compressed air
  • a magnifier
  • haribo bears

Step 1: BOM

BOM

The repository contains the Bill-Of-Materials. For the assembly, you'll also need two M2.5 screws with nuts and washers. Don't forget to bring your SD card! Check the instructable files for PCB files, schematics, and a bill of materials. Remember that the most recent files will always be obtained from the github repository. Visit for your own customized selection of ICs (Integrated Circuits)

Step 2: System Installation

System Installation

The recommended method for installing the OS on the Malinka is to use the provided OS image, which can be found here. It's as simple as burning the image to an SD card with your preferred software. However, if you want to install everything on your pure RetroPie, you can do so by just installing it, this guide will show you what to do.

After you've burned your system image, we'll need to enable SSH and tell Raspberry which wifi network to connect to. After you've burned your SD card, you should see a “boot” partition where you can copy the files “ssh” (without the extension) and “WPA supplicant.conf.” Remember to update your country, SSID, and password when you open the latter file!

Log in to the Raspberry Pi using SSH with the default “pi” login and “raspberry” password. You'll need to know your Pi's IP address, which you can find on your router's page or by using an IP Scanner. On Windows, you can connect by typing ssh pi@your-pi-address followed by the password. You should see something like this:

 ssh pi@your-pi-address and then typing in the password

That means everything is in order! The final step is to run:

sudo apt-get update
sudo apt-get upgrade

to obtain the most recent software, as the source image may be quite old.

Step 3: Printing the Case

Printing the Case

Before you start printing anything, make sure your printer is calibrated, your bed is leveled, and your filament is in good condition. Because you will see the case every time you use your handheld, it should be visually pleasing!

ABS or PET-G would be good materials for printing the case. Choose a color and, if possible, get samples of other colors for buttons. There are two versions of the shell, one with an SMA (antenna) connector and one without – print the latter if you don't want to use the radio. There is no need to use supports for the shell and cover, but use supports on the build plate only' for the triggers.

You must also print the power switch, system button, and the eight gamepad buttons. You can print them flat, but I don't recommend it unless you want to sand the buttons or the case. If you don't intend to sand anything, you might want to print and glue only half of the buttons – this will allow the buttons to move smoothly.

Step 4: Postprocessing

Postprocessing

Preheat your soldering iron to 200°C. Insert the following:

Heat up your soldering iron up to 200°C. Put an insert on place:

Gently push it down:

Gently push it down:

Don't push too far! It should be just barely pushed in:

Don't push all the way! It should be left just almost pushed in:

Gently press a piece of metal against it, but not too hard. This may cause the print to deform, which we do not want. You can see that I pushed a little too hard here:

pushed a little too hard

Repeat the process for the other 5 inserts!

Step 5: Buttons

Buttons

If you printed the buttons in halves, all you have to do is glue them together. Apply a small amount of glue to one part:

need to glue them together

And then join the pieces together. Repeat for the remaining buttons!

Step 6: Soldering the FFC Connectors

Soldering the FFC Connectors

We've finally arrived at soldering! We'll start with the most difficult part so you don't waste time if you mess up. Preheat your soldering station to the temperature you prefer. Mount your PCB so that it is rigid and that you can solder it comfortably.  Apply a generous amount of solder flux on the pins as some IC Chips loosing can cause project malfunctioning.

Apply a generous amount of solder flux on the pins.

Insert the connector and align it so that the pins almost perfectly meet the pads. Allow yourself plenty of time. If you are confident that you did everything correctly, solder one mounting pad on the connector's side:

solder one mounting pad on the side of the connector

Solder the other side as well, and make sure nothing has moved. If you believe everything is in order, solder all of the pins. Basically, you want to build a massive solder bridge like this:

huge solder bridge

Don't worry if it appears to be a mess; everything is under control! Slide the desoldering wire across all of the pins. Remember to trim tinned fragments and add more flux as needed.

When finished, it should look quite nice. Check to see if any bridges remain, and if so, remove them.

The connector is basically soldered after this step. Now we need to clean the remaining flux – apply a lot of IPA alcohol and remove the remaining flux with a brush and some cloth. It should be removed from the connector and pins, and the inside of the connector should be brushed as well. A good approach is to spray some compressed air inside, wait a second, and then spray some alcohol inside. There can be no flux inside the connector! Remember to turn the lever while cleaning.

Remember to flip the lever during cleaning too.

When finished, the connector should look good and there should be no visible flux.

Congratulations on making it this far! Take a break and eat some Haribo. Only three smaller connectors remain!! Repeat the process for them as well, but if you're feeling confident, try soldering them with only the necessary amount of solder. If you need to see connections more clearly, use a magnifier or your phone, as I do:

magnifier or your phone if you need to see connections

Step 7: Raspberry Pi

Raspberry Pi

The hardest part is over once we've finished with the FFC connectors. The Raspberry Pi is the semi-hard part. (Please ignore the fact that my Pi is cut in the corner; you are not required to do so.)

Mount the Pi with two screws; washers are required to avoid damaging the PCB!

The Pi is surface-mount, which means that soldering it will be quite different. You need to put the tip of soldering iron into the “cup”, put some solder on it, and remove the iron. Remember to apply the flux if needed. Repeat the process for the other 39 cups. Remember to clean it of remaining flux using IPA, cloth, and brush after soldering. This is also a good moment to desolder the power USB, as we don't need it. Do it very carefully. Once you think you're done, you must check if you have soldered all the pads correctly. Use some common pins and exposed pads for that, and check along with this list (first 3.3v pin is the square one):

some common pins and exposed pads for that, and check along with this list

3.3v,       VBAT
I2C_SDA,    VBAT
I2C_SCL,    GND
RADIO_CE,   BTN_SELECT
GND,        BTN_UP
MCP_CS,     RADIO_CSN
BTN_LT,     GND
BTN_LEFT,   BTN_RIGHT
3.3v,       TFT_DC
TFT_MOSI,   GND
BTN_Y,      TFT_RESET
TFT_SCK,    TFT_CS
GND,        BTN_DOWN
BTN_RT,     BTN_A
BTN_B,      GND
BTN_X,      SOUND_L
SOUND_R,    GND
RADIO_MISO, BTN_START
TFT_LED,    RADIO_MOSI
GND,        RADIO_SCK

Step 8: ICS

ICs

Once you're done with the Pi, and all connections are checked and fixed, it's time for another haribo bear(s). Now only small SMD components are left – let's begin with smallest U3 – tin one corner pad:

tin one corner pad

Mount and align the IC properly. Spot that the dots are indicating the first pin – the dot on the IC must match the dot on the PCB!

the dot on the IC must match the dot on the PCB

Solder the other corner, and all the remaining pins. As you can see, my IC twisted a little but it's fine as long as connections are correct:

Remember to take your time, and apply a lot of flux. Repeat the process for the U7, Q1, U1 and U2:

Now we will attach the radio module. If you don't want to use radio at all, you can omit soldering it, as well as the SMA connector. Once again, tin and align using one pad:
SMA connector

Apply even more flux, and when pressing the module into the main board, solder the mounting pad. It will keep the module flat and attached well.

Solder the rest of the pins.

Step 9: Connectors

Connectors

Now it's time to solder the connectors. The process is quite repetitive, as again, we need to attach the connector using one pad.

attach the connector using one pad

Solder other pads (but for this USB-C connector, they must remain flat as LCD goes in top of them!

And all you need to do is tin other pins as well.

Make a similar thing with the SMA connector. It's meant to be mounted on the edge of thicker boards, so make sure it's flat on the radio side, and “floating” on the screen side:

similar thing with the SMA connector

Step 10: Passive Components

Passive Components

We will move our focus to an LED now. On it's underside, there's a green line indicating the cathode. That line must be facing the “LED1” label:

Solder the resistors too. Follow the schematic to check all components' places!

schematic to check all components' places!

Continue soldering the passive components, and don't forget about the D1 in the top left corner. A note here though, DO NOT solder L1-L4, or C3-C6, but instead short them as shown:

Keep those elements in case your audio ends up being poor quality.

Don't forget about D1 on the other side!

Don't forget about D1 on the other side!

The audio capacitors are surface-mount too, despite being THT. Just cut their leads as shown:

Bend them down:

And attach in place. The blue/gray strip on them indicates the cathode (minus side). The other one goes on the plus! Make EXTRA sure that you haven't swapped their leads, or else they won't work properly.

One of the last things to do is to connect the radio module with the SMA connector. There's a small IPX connector on it, so I grabbed myself a small kit with a coaxial wire and an SMA antenna. Cut it down to about 40mm in length, or whatever is suitable for your setup:

Very carefully strip the coaxial wire so the core and shield are exposed well. Make some kind of a “cross” shape as shown:

strip the coaxial wire so the core and shield

Tin it (and make sure to not make bridges!)

Tin it (and make sure to not make bridges!)

Solder it symmetrically, and once again make extra sure that the core isn't shorted to the shield. Use a multimeter to check it!

This is another checkpoint. Eat some more haribos. We can boot up the Pi already! Make sure that your board looks just like this one:

Step 11: Testing

Testing

If you feel confident about your beautiful work, insert the SD card you prepared earlier. If everything goes fine, the green LED should start blinking. If not, well… welcome to the club of having a fried pi.

Just kidding, check if you connected the battery properly, if your SD card is all good, and try to maybe flip the switch. Once you finally got your Pi working, log in via the SSH and type in sudo shutdown now. After a minute or two, flip the switch off and remove the battery. Time for the final step!

Step 12: Assembling the LCD

Assembling the LCD

Everything you see is exposed and goes under the screen, you must hide with a piece of kapton tape : audio jack, all test pads, as well as part of the USB C connector. Stick some double-sided tape too:

double-sided tape

Do a similar thing for the battery.

Now, carefully slide the large ribbon through the hole after opening the connector levers. Close the lever after you've properly aligned it with tweezers inside the connector. Do the same thing with the smaller ribbon. The PCB's backside should look like this:

But don't put up the screen just yet; we'll do that soon! Preparing the speakers is one of the last things to do. Cut one speaker's wire to match the shorter one in the picture below, and use those wires to expand the second speaker. When you're finished, twist the wires so they look like the image below. The shorter speaker is assigned to SPK L, while the longer one is assigned to SPK R.

speaker goes to SPK_L and longer one to SPK_R

And now we're done! Insert the battery and power on the Malinka. If the screen displays EmulationStation after a few seconds, there is nothing left to do but attach it with double-sided tape. If no image appears, proceed to the troubleshooting page.

Step 13: Mounting the Case

Mounting the Case

Shutdown the Pi and remove the battery. Push the controller buttons to see if they're sliding smoothly – they must.

Place the rubber pads on top of them. You can see that they are not symmetrical; one side is 1mm longer than the other – make it parallel to the PCB's longer edge (horizontal).

longer edge of the PCB (horizontal)

Don't forget about the side buttons! Make sure the switch is slid to the right.

Don't forget about side buttons too! Make sure to slide the switch to the right.

Push the PCB inside very carefully. The SMA connector should be inserted completely through the hole. The rubber pads must not be removed!

Press down on the PCB. The USB connector on the Pi should ‘jump' into place, as should the power switch.

Examine the rubber pad alignment. If they aren't in place, you can easily detect it by pressing the button and “feeling something wrong.”

feeling something wrong

Screw the joysticks into their positions. Do not use excessive force!!! The plastic mounts on them are extremely thin, and excessive torque can cause them to break. Stop when you encounter more resistance.

Pull the lever up and carefully slide the ribbon inside with tweezers. Because the joysticks have carbon paths, they will wear out after three or four insertions. You probably don't want to disconnect them once they're in place.

Time for the triggers. A trigger in place should look like that:

The backside should look like this. If the cables are slipping through the mounting holes, secure them with kapton tape.

Finally, gently push the cover back and forth to ensure that the triggers are still in place. The six screws should not protrude at all.

Step 14: User Guide

User Guide

The directions are fairly straightforward:

  • When the system button is set to “BTN C,”
  • it can be used as a hotkey!
  • The default configuration has the “select” button as the hotkey
  • to change the volume, System+L or R
  • to hibernate the device, System+A
  • to mute/unmute the sound, System+B
  • to hide/show overlay, and System+Y
  •  plug in headphones and automatically turn off the speakers.
    USB-C is only intended for charging. It is still preferable not to use a high-voltage charger.
  • RED indicates that the battery is charging, while GREEN indicates that it is fully charged.
  • User USB is only intended for USB peripherals. Attempting to charge the battery via micro-usb will permanently damage it, and the device may even explode!
  • Only if you want to use the NRF24L01 module do you need an external antenna connector. Any SMA antenna should be able to fit.
  • you can connect a monitor/tv through Micro HDMI. Remember to change the resolution!

Switching off the power while the device is running may cause data corruption! Remember to first perform a system shutdown. When the battery is nearly empty, Malinka will force a shutdown.

Step 15: What's Next?

What's Next

Malinka's main goal is to become a radio transmitter. Your application can be written in any language you want, including C, C++, Python, and even Java. Any GUI library can also be used. But, to keep things simple, here are my suggestions:

  • RF24 library, because it works on both RPi and microcontrollers flawlessly
  • LVGL, one of most popular GUI libraries for embedded devices
  • Nuklear instead of LVGL, if you want a really lightweight library

It should be noted that both the RF24 and the LVGL can be programmed in C and Python! You can create any type of application; your only limitation is your imagination.

Oh, and don't forget to include some games!

Step 16: Share!!

Share

Remember to check out GitHub for even more! If you enjoyed this project, please spread the word and show us how your console turned out! iNap Malinka is licensed under CC BY-NC-SA 4.0, which means you can freely adapt and remix my project (as long as you don't use it commercially).

Good luck and enjoy your new handheld!


About The Author

Muhammad Bilal

I am highly skilled and motivated individual with a Master's degree in Computer Science. I have extensive experience in technical writing and a deep understanding of SEO practices.

Scroll to Top