{"id":19157018,"url":"https://github.com/bertrandmartel/bluetooth-remote-control","last_synced_at":"2025-05-07T07:47:08.810Z","repository":{"id":94807899,"uuid":"65823005","full_name":"bertrandmartel/bluetooth-remote-control","owner":"bertrandmartel","description":"Bluetooth Low Energy remote control based on NRF 51 DK board with an additional display capability","archived":false,"fork":false,"pushed_at":"2017-01-12T11:57:23.000Z","size":39621,"stargazers_count":29,"open_issues_count":2,"forks_count":10,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-19T20:17:44.170Z","etag":null,"topics":["android","android-tv","bluetooth-le","dk51","hid","nrf51822","remote-control"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bertrandmartel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-16T13:33:40.000Z","updated_at":"2024-08-23T10:36:02.000Z","dependencies_parsed_at":"2023-03-13T16:57:06.208Z","dependency_job_id":null,"html_url":"https://github.com/bertrandmartel/bluetooth-remote-control","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandmartel%2Fbluetooth-remote-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandmartel%2Fbluetooth-remote-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandmartel%2Fbluetooth-remote-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bertrandmartel%2Fbluetooth-remote-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bertrandmartel","download_url":"https://codeload.github.com/bertrandmartel/bluetooth-remote-control/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252838955,"owners_count":21812083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-tv","bluetooth-le","dk51","hid","nrf51822","remote-control"],"created_at":"2024-11-09T08:36:59.684Z","updated_at":"2025-05-07T07:47:08.797Z","avatar_url":"https://github.com/bertrandmartel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bluetooth Remote Control\n\nhttps://bertrandmartel.github.io/bluetooth-remote-control\n\n[![Build Status](https://travis-ci.org/bertrandmartel/bluetooth-remote-control.svg?branch=master)](https://travis-ci.org/bertrandmartel/bluetooth-remote-control)\n[![License](http://img.shields.io/:license-mit-blue.svg)](LICENSE.md)\n\n[![Download Bluetooth Remote Control from Google Play](http://www.android.com/images/brand/android_app_on_play_large.png)](https://play.google.com/store/apps/details?id=com.github.akinaru.bleremote)\n\nBluetooth Low Energy remote control based on DK51 board from Nordic Semiconductor with ST7735 1.8 Oled LCD from Adafruit\n\n## Features\n\n* HID Service BLE over GATT for full compatibility with Android TV :\n * keyboard control :\n    * up / down / left / right\n    * escape (back)\n * consumer control :\n    * AC Search\n    * AC Home\n    * Play/Pause (Android custom keycode) \n\n* Custom Display Service used to receive a compressed bitmap over GATT :\n * compressed bitmap is stored temporarily on device flash \u0026 removed afterward\n * bitmap format is 128*160 fastlz compressed with block of 4096 octet\n * regular characteristic write is used (not long write)\n\n* Android application can be used to test :\n * hid keys notification\n * command led states on DK51 board\n * send a bitmap to be displayed on adafruit OLED module\n\n* works fine on Android / Android TV \n\n* works on Apple TV but some keycode differ (consumer control)\n\n* this project doesn't implement any Audio Service for Voice Search \n\n## Mode 1 : Android testing application\n\n![mode1](img/mode2.gif)\n\n## Mode 2 : BLE HID Service mode\n\n![mode2](img/mode1.gif)\n\nYou can't combined Mode 1 \u0026 Mode 2 simultaneously.\n\n## Project structure\n\n* \u003cb\u003e/firmware\u003c/b\u003e - microcontroller code written for NRF DK51 board\n* \u003cb\u003e/android\u003c/b\u003e - android application to control device\n\n## Hardware setup\n\n* NRF51 DK board \n  * nrf51822 chipset based on an ARM Cortex M0 processor (128kB flash memory / 16kB RAM)\n\n![board](img/DK.jpg)\n\n* Adafruit 1.8\" Color TFT Shield with Joystick\n\n![lcd](img/adafruit_oled.jpg)\n\n## Hardware installation\n\n![hw](img/hw.jpg)\n\n`RST` is linked to `VDD`\n\n## Build\n\n### Get source code\n\n```\ngit clone git@github.com:bertrandmartel/bluetooth-remote-control.git\ncd bluetooth-remote-control\ngit submodule update --init --recursive\n```\n\n### Configuration\n\n* armgcc toolchain\n* sofdevice s130\n* nRF5 SDK 11.0.0\n\n### Setup / Installation\n\n* follow SDK/Toolchain Installation steps section of \u003ca href=\"https://gist.github.com/bertrandmartel/a38315c5fe79ec5c8c6a9ed90b8df260#installation-steps\"\u003ethis tutorial\u003c/a\u003e\n\n* specify NRF51 SDK directory with :\n\n```\nexport NRF51_SDK_DIR=/path/to/sdk\n```\n\n### Build \u0026 flash firmware\n\n```\ncd firmware\nmake\nmake flash_softdevice\nmake flash\n```\n\n### Build Android App\n\n```\ncd android\n./gradlew build\n```\n\n## External library\n\n### Firmware\n\n* NRF 51 SDK 11.0.0 : https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF5-SDK\n* fastlz compression library : https://github.com/ariya/FastLZ\n* Integration of Adafruit OLED ST7735 1.8 display on NRF51 DK board : https://github.com/bertrandmartel/adafruit-oled-st7735-dk51\n\n### Android application\n\n* Android crop image library : https://github.com/lvillani/android-cropimage\n* Simple vertical and horizontal color picker : https://github.com/DASAR/ShiftColorPicker\n* fastlz compression library : https://github.com/ariya/FastLZ\n* appcompat-v7, design \u0026 recyclerview-v7\n\n### External links\n\n* USB HID keycode : http://www.freebsddiary.org/APC/usb_hid_usages.php\n* Android HID keycode/keyevent mapping : https://source.android.com/devices/input/keyboard-devices.html\n\n## License\n\nThe MIT License (MIT) Copyright (c) 2016 Bertrand Martel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbertrandmartel%2Fbluetooth-remote-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbertrandmartel%2Fbluetooth-remote-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbertrandmartel%2Fbluetooth-remote-control/lists"}