BK108X

BK108X Arduino Library

View on GitHub

PU2CLR BK108X Arduino Library

The BK1088E is a single-chip solution for receiving AM, FM, and shortwave radio. Using inexpensive components (Arduino Pro Mini, some push buttons buttons, and a standard OLED or TFT display), the hobbyists can build serviceable little receiver based on BK1088E with a impressive performance.

This project is about an Arduino Library to control the BK1086 and BK1088 devices. It was based on “BK1086/88E BROADCAST AM/FM/SW/LW RADIO RECEIVER; Rev.1.3” documentation from BEKEN Corporation.

This library can be freely distributed using the MIT Free Software model.

Copyright (c) 2020 Ricardo Lima Caratti. Contact: pu2clr@gmail.com.

Contents

  1. Preface
  2. BK1086/88E features
  3. Library Installation
  4. API Documentation
  5. Functional Block Diagram
  6. BK1086/88E TSSOP20 pinout
  7. Schematic
  8. Source code - Arduino Sketch examples
  9. Videos
  10. References

Preface

At the end of 2019 I started some Arduino library development projects to control DSP receivers. The first implementation was the Arduino library for the SI4844 and then for the ICx Si473X family, all manufactured by Silicon Labs. Given the acceptance and enthusiasm of various radio listeners, experimenters and hobbyists, around the use of the implementations of these libraries, I decided to expand the number of Arduino libraries for the Arduino IDE platform and also developed the libraries for the AKC695X, KT0915, SI470X and RDA5807. When I started reading about the BK1086/88 Datasheet I notice it is also very apropriated for radio listener and hobbyists. Unlike the other devices previously mentioned, I found very few documentation about it at first. So, it encouraged me to build as much information as possible about this BEKEN family of devices. I requested some information about the BK1086/88E from BEKEN Corporation and I was promptly answered. I would like to thank the BEKEN Corporation fot its attention.

This library is based on the BEKEN manual “BK1086/88 - BROADCAST AM/FM/SW/LW RADIO RECEIVER REV1.3” provided by BEKEN Corporation and experiments made by me during the development process.

If you are a hobbyist, a radio enthusiast and enjoy Arduino, this project is for you.


Presentation videos



BK1088E FM, AM (LW, MW and SW) DSP receiver working with Arduino

See also

More Arduino Projects developed by author

MIT License

Copyright (c) 2019 Ricardo Lima Caratti

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE ARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Thanks

Mr. Peng Roy, from BEKEN Corporation, for providing me with the technical information on the BK1086/88.

Your support is important

If you have suggestions to improve this project, please let me know.

BK1086/88 features

Main features

  1. Worldwide 64~108 MHz FM band support;
  2. Worldwide 520~1710kHz AM band support;
  3. LW band support(153-279kHz,BK1088E only)
  4. SW band support(2.3-21.85MHz, BK1088E only);
  5. Automatic gain control(AGC);
  6. Automatic frequency control(AFC);
  7. Digital FM stereo decoder;
  8. Automatic FM stereo/mono blend;
  9. Automatic noise suppression;
  10. 50us/75us de-emphasis;
  11. RDS/RBDS decoder;
  12. 2.4 ~ 5.5 V supply voltage;
  13. Wide range reference clock support;
  14. 32.768KHz crystal oscillator.

Useful informarion

Library Installation

You can install this library on your Arduino environment using different methods.

Installing via Arduino IDE

This library is available on Arduino IDE platform. This video will show you how to install the Arduino Library for the BK1086 / 88 DSP device on your local computer.

Installing via the repository

With this approach, you will have the most current version of the library. However, it may not be the most stable version. This is because the current version is always in development. Prefer releases. Do you need some old version (release) of this library? If yes, check here.

To install the current version, you have to download this library in zip format. After, unzip the BK108X-master.zip file in your Arduino Library folder.

Functional Block Diagram

BK1086/88E Functional Description

Source: “BK1086/88E BROADCAST AM/FM/SW/LW RADIO RECEIVER; Rev.1.3; page 3”

BK1086/88E TSSOP20 pinout

BK1086/88E PINOUT

Source: “BK1086/88E BROADCAST AM/FM/SW/LW RADIO RECEIVER; Rev.1.3; page 23”

Pin Number Name Description
1 GND Ground. Connect to ground plane on PCB
2 GND Ground. Connect to ground plane on PCB
3 FMI FM RF input
4 RFGND RF ground
5 AMI MW/SW/LW RF input
6 GND Ground. Connect to ground plane on PCB
7 SCLK Clock for Serial communications
8 SDIO Serial data input/output
9 RCLK 32.768kHz - 38.4MHz external reference clock input/32.768KHz Oscillator input
10 VDD Power supply for digital and I/O
11 ROUT Right audio output
12 LOUT Left audio output
13 VA Power supply for analog
14 GPIO3 General purpose output 3
15 GPIO2 General purpose output 2
16 EXTLNA External LNA control
17 RIN2 Line in input (Right channel2)
18 LIN2 Line in input (Left channel2)
19 RIN1 Line in input (Right channel1)
20 LIN1 Line in input (Left channel1)

Schematic

BEKEN Typical Application Schematic

The image below was extracted from “BK1086/88E BROADCAST AM/FM/SW/LW RADIO RECEIVER; Rev.1.3; page 25”. It is a basic circuit suggested by BEKEN.

BEKEN Typical Application Schematic

BK1088E(SSOP20) and Arduino Schematic

The schematic below is based on the BEKEN typical application schematic added to the Arduino controller. The front-end circuit has been modified to use regular antenna instead headphone antenna setup.

The main porpuse of this circuit is to test the BK108X Arduino Library. However, you may be surprised at the performance of this simple circuit due to the high features of the BK1086/88 device. Also, it is importante to say that this receiver does not intend to be a real radio for exigent listener. However, it is possible to start with it and then, if you wish, you can include some devices to the circuit to improve, for example, its sensibility, output sound quality beyond other desired features.

Basic Schematic

The example folder can guide you to check your circuit via Arduino sketches

Troubleshoot

  1. Place C1 (1.8pF) and the 32768KHz crystal as close as possible from the BK1088 pin 9;
  2. Place C4 (100nF) as close as possible from the BK1088 pin 13;
  3. Try to keep the length of the I2C bus as short as possible;
  4. If you check the circuit by running the poc01_circuit_test.ino and get the Chip Id value -1 (0xFF):
    • Check whether the DC voltage on pin 10 and 13 are correct;
    • Be sure I2C connections are right;
    • Be sure whether the I2C bus speed used by your MCU master (Arduino) is correct;
    • If you are using a BK1088, the Chip Id value should be 4224 (0x1080)
  5. The frequency shown on display or Arduino IDE Serial Monitor is different from the real frequency.
    • You might have problem with reference clock. If you are using the 32.768KHz crystal, check whether it is working;
    • If you are using an external clock input, check the signal with an oscilloscope (check the RCLK);
    • By default, this library used 32.768KHz as reference clock;
    • If you need to use external reference clock or a crystal with different clock, please, read the [API documentation} (https://pu2clr.github.io/BK108X/extras/docs/html/index.html)

Photos

Prototype: Photo 1 Prototype: Photo 1

Prototype: Photo 2 Prototype: Photo 2

Videos

  1. BK1088E FM, AM (LW, MW and SW) DSP receiver working with Arduino
  2. DSP BK1088E AM/MW and FM test with PU2CLR BK108X Arduino Library
  3. DSP BK1088E SW test with PU2CLR BK108X Arduino Library

References