Close
0%
0%

BlakRPI 2K

2560x1440 2K Display Keyboarded RPI handheld computer

Similar projects worth following
Our on going project is willing to deliver a small linux Raspbian/Ubuntu based mini pc with a small mechanical keyboard, a 2K HDMI high resolution display avec a lipo battery. We think this could be a nice handheld device you can keep in your pocket (big pocket). The display is a LS055R1SX03 2K color screen. Keys are metalic buttons. We should use a 12 000 mhA lipo battery. The PCB has a RPI compatible connector which makes it compatible with RPI PI 2, 3, 4 and Radxa Zero . The initial goal was to use a PI ZERO W or Radxa Zero (which has more power).

When the story begins

The all story begins with a cool BlakRPI project : a small pcb with a 320x240 color display , rubber keys and a small RPI ZERO.  We sold over 300 naked PCB and got thousands of requests for a full assembled device. 

We were occupied making our first MORPHESP240 CrowdSupply operation in 2020-2021 , so the BlakRPI upgrade was delayed. The campaign was a success with 188% returns.  

It is now time to start upgrading our BlakRPI and get a modern Linux handheld to be able to strat our second campaign.

The reviews we have received from V1 users

  • Low Rez of the first display
  • the keyboard driver component was too difficult to solder for beginners 
  • product access limited to people with soldering skills  (frustration !)

We have taken all these criticisms into account to bring you a more sympathetic solution into a V2 we will call BlakRPI 2K . 

The display will be raised to 2K (2560 x 1440 pixels - 5 inch size) resolution using a HDMI to MIPI converter. Doing this way, you can plug any computer with a HDMI plug into our board.  (This modularity will also allow to connect much more than raspberrys on the PCB. A Windows 10 USB key could be used if needed).

As for the display, we chose a common screen from aliexpress based on LS055R1SX03 . Although we chose a version with no touchscreen option, it is possible to add one later. 

Many of you complained about  the too tiny to solder I2C keyboard controller. So we desided to wipe it off and replace with a super simple ATMEGA32U4-AU chip . The AU version is suiper easy to solder and there is a bunch of arduino sketches for usb keyboard emulation (Example: QMK / Tutorial).  It you read between the lines, it will also let you use the BlakRPI board as a classic keyboard for any computer accepting a USB keyboard. We made several connectors available on the board to play with this option. 


How we made it ?

As always, we use our favorite PCB software: kicad-pcb.org 

Instead of looking for a very compact realization, we decided to favor simplicity of assembly and ease of repair. The most tricky part was to be able to insert the HDMI to MIPI board, coming with the display , and keep a device as nice as possible. We decided not to recreate the charger option and found a ready made on capable of delivering around 3A which should be enough for this project. 

The tactile switches are very common ones: 5.2x5.2x5mm à 9mm, 4PIN SMT .  We plan to design a sister PCB with AZERTY or QWERTY engraved/copper letters. This sister board will cover the main pcb in the switches area, to give a clean surface finished keyboard., only the top metal of the buttons protruding from the sister PCB plate.


The final result 

Here is the rendering of what is expected

You can follow us on twitter : @sulfuroid and @morpheans . The home of BlakRPI line of devices is available on www.blakrpi.com  

There is also a FaceBook Group : PALM size RPI based standalone computers

schem.pdf

keyboard

Adobe Portable Document Format - 103.71 kB - 10/13/2021 at 22:02

Preview
Download

JavaScript Object Notation (JSON) - 848.00 bytes - 10/13/2021 at 21:58

Download

  • QMK Compatible KB ? ATMEGA32u4

    pcadic3 days ago 0 comments

    yesterday we rebuit the keyboard (the old one had a circuit short which was hard to fix, due to a bad soldering technique). 

    We were able to flash the ATMEGA32u4 like a charm and run a sketch uploaded via ARDUINO IDE software. Good!

    Now we are preparing the QMK config files .  Installation of QMK was made under linux following this Guide.   

    We created the new kb called BLAKRPI with ./util/new_keyboard.sh bash script and followed this guide.

    Below, the schematic showing how the ATMEGA32U4 is wired

    "Cyberpunk computing"'s forum post was also of great help.   We were able to  setup the firmware.

    #include "config_common.h"
    
    /* USB Device descriptor parameter */
    #define VENDOR_ID    0xFEED
    #define PRODUCT_ID   0x0000
    #define DEVICE_VER   0x0001
    #define MANUFACTURER BlakRPI
    #define PRODUCT      BlakRPI
    
    /* key matrix size */
    #define MATRIX_ROWS 5
    #define MATRIX_COLS 12
    
    /*
     * Keyboard Matrix Assignments
     *
     * Change this to how you wired your keyboard
     * COLS: AVR pins used for columns, left to right
     * ROWS: AVR pins used for rows, top to bottom
     * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
     *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
     *
     */
    #define MATRIX_ROW_PINS { E6, F5, F0, F1, F4 }
    #define MATRIX_COL_PINS { B4, B5, B6, C6, C7, F6, F7, B0, D1, D2, D3, D4 }
    #define UNUSED_PINS
    
    /* COL2ROW, ROW2COL */
    #define DIODE_DIRECTION COL2ROW
    
    

    rules.mk is below

    # MCU name
    MCU = atmega32u4
    
    # Bootloader selection
    BOOTLOADER = caterina
    
    # Build Options
    #   change yes to no to disable
    #
    BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
    MOUSEKEY_ENABLE = yes       # Mouse keys
    EXTRAKEY_ENABLE = yes       # Audio control and System control
    CONSOLE_ENABLE = no         # Console for debug
    COMMAND_ENABLE = no         # Commands for debug and configuration
    # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
    SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
    # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
    NKRO_ENABLE = no            # USB Nkey Rollover
    BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
    RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
    AUDIO_ENABLE = no           # Audio output
    

    Then we design the layout for the 60 keys

    #define LAYOUT(
    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, 
    k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23,
    k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, 
    k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, 
    k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59
    ) {
    { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11 },
    { k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23 },
    { k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35 },
    { k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 },
    { k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59 },
    }
    
    

    And defaultlayout.c

    Source

    const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* Base */
    [_BASE] = LAYOUT(
    KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_UP, KC_DOWN,
    KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT, KC_RIGHT,
    KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, KC_F5, KC_F6,
    KC_TAB,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_ENT, KC_F7, KC_ENT,
    KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, MO(_FN), KC_RSFT, KC_DEL, KC_RCTL, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4
    ),
    [_FN] = LAYOUT(
    KC_TILDE, KC_2, KC_3, KC_4, KC_5, KC_PIPE, KC_SLASH, KC_BSLASH, KC_LBRACKET, KC_RBRACKET, KC_UP, KC_DOWN,
    KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT, KC_RIGHT,
    KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_QUOT, KC_BSPC, KC_MINUS, KC_F6,
    KC_TAB,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_SCLN, KC_DOT, KC_ENT, KC_EQUAL, KC_ENT,
    KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, KC_TRANSPARENT, KC_RSFT, KC_DEL, KC_RCTL, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4
    )
    };
    

  • Xorg/Xwindow working

    pcadic09/20/2021 at 20:34 0 comments

    hi all.

    I was able to setup the GFX interface. You will need the may2020 raspbian image to be able to get it running, then update/upgrade from it.

  • Week end built

    pcadic09/20/2021 at 09:34 3 comments

    we built the blakrpi 2k this week end.

  • config.txt issues

    pcadic09/20/2021 at 09:32 0 comments

    We found a cool link to setup the display.

    https://www.raspberrypi.org/forums/viewtopic.php?p=1374473

  • Soldering...

    pcadic09/14/2021 at 22:26 0 comments

  • Pcb have arrived

    pcadic09/14/2021 at 22:24 0 comments

    we got the pcb this morning. This is time tp soldet them ... 

View all 6 project logs

Enjoy this project?

Share

Discussions

teraz wrote 09/27/2021 at 17:32 point

In my opinion longest screen and longest keyboard are better. similar old sony pocket. https://sonyvaio-center.blogspot.com/p/sony-vaio-p-pocket-pc.html

  Are you sure? yes | no

teraz wrote 09/27/2021 at 17:31 point

how long this device work on one charging?

Please add OrangeCrab too for motherboard. Many people need fpga not only cpu.

  Are you sure? yes | no

fdufnews wrote 09/11/2021 at 13:51 point

Really interesting product that I'd like to have.

  Are you sure? yes | no

pcadic wrote 09/15/2021 at 12:17 point

:) I'm currently building it... I should post updates in the next 48 hours

  Are you sure? yes | no

fdufnews wrote 09/15/2021 at 15:36 point

I look forward

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates