Skip to the content
PCBKitNew board
2 layers16 × 35 mmSer4010, the printed circuit board in 3D

UART controllable SI4010 based tunable OOK/FSK RF transmitter

Size
16 × 35 mm
Copper layers
2
Thickness
1.6 mm
Parts
39
Nets
30
Pads
117
Tracks, vias
176, 118
Pours
3
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
24 Sep 2014
Updated
27 Feb 2019

Overview

Ser4010 is an open-source printed circuit board by dimhoff, from the dimhoff/ser4010 repository on GitHub, published under the BSD-3-Clause licence. It is a 2-layer board of 16 × 35 mm with 39 parts on 30 nets, routed with 176 tracks and 118 vias.

It is built around the CP2102N-A01-GQFN20R and SP0503BAHTG. Its parts include 14 capacitors, 8 connectors, 6 resistors, 5 inductors and 2 ICs. It belongs with the interfaces and adapters and radio and wireless boards of this library.

Main components

2

README

README.md

SER4010 - UART controllable Si4010 based tunable OOK/FSK RF transmitter

The SER4010 module is a tunable Sub-GHz RF OOK/FSK transmitter based on the Silicon Labs Si4010 chip. It is controlled from a PC through standard UART based serial connection. The encoding of the frames is fully done in software on the PC, while the actual modulation and sending is offloaded to the module. This allows for great flexibility in the transmitted signals, while having accurate signal timing. While having the full programming capacity of a normal PC platform.

The Si4010 chip can operate in a frequency range of 27 to 960 MHz. Although the actual frequency band it can effectively operate on depends on the antenna/matching network. Within its operating band the transmitter can be tuned to allow matching the receivers frequency, causing better reception/range.

Hardware connections

The SER4010 firmware is controlled using a 3.3 Volt serial(RS-232 like) connection.

The pins are mapped as follows:

  • VCC = 3.3 Volt Supply
  • GPIO7 = TX data (connect to RX on remote side)
  • GPIO6 = RX data (connect to TX on remote side)
  • GND = ground

The following communication parameters are used:

  • bit rate = 9600 Baud
  • Data bits = 8
  • Parity bits = None
  • Stop bits = 1

Suggested is to use a 3.3 volt compatible USB-to-serial adapter, like a FT232 or CP2102. The module can also be directly connected to a RaspberryPi, or similar.

SER4010 USB PCB

The hardware/ directory contains a PCB design for a USB connected SER4010 device. This hardware is still under development and is untested testing.

Compiling the SER4010 Firmware

Note: This is only useful if you plan to develop on the firmware. Else use the precompiled firmware from GitHub releases section.

For compiling the SER4010 firmware the Silicon Labs IDE and Si4010 Example Programs are required. These are both free downloads from the Silabs website. Note that the Silicon Labs IDE only runs on MS Windows.

First copy some files from the Si4010 Example Programs archive into the SER4010 source:

  • Si4010_example_programs/fstep_demo/src/fstep_startup.a51 --> ser4010/firmware/ser4010/src/custom_startup.a51
  • Si4010_example_programs/common --> ser4010/firmware/common

Next start the Silicon Labs IDE and open the ser4010/firmware/ser4010/bin/ser4010.wsp workspace. It should now be possible to compile the project. This will generate the ser4010.hex firmware file in the ser4010/firmware/ser4010/out/ directory.

Compiling the Software

Run the following to compile the libser4010 library and tools:

text
# cd build
# cmake ../
# make

The software uses /dev/ttyUSB0 by default as serial port. If your module is connected to a different serial port you can change the default serial device to use by using the following cmake command instead of the above one:

text
# cmake ../ -DDEFAULT_SERIAL_DEV=<your serial port>

For example for the Raspberry PI use '/dev/ttyAMA0' when the module is connected to the internal serial port.

Loading the Firmware

TODO: Extend chapter...

You have to load the SER4010 firmware into the Si4010 module. Either by programming it once into the non-volatile NVM memory. Or by loading it after every reboot into the modules RAM.

See the si4010prog tool

Serial port configuration

Make sure the serial port to which the module is connected does not have a serial console or any other software using it. Else the communication will get scrambled.

Note that the Raspberry PI 1/2 have a bootloader that always outputs a string to the internal serial port at boot. This causes a communication-out-of-sync error the first time you run any of the ser4010 tools. Just try again.

To use the internal serial port of the Raspberry PI 3 you must disable the Bleutooth. This can be done using the pi3-disable-bt Device tree overlay.

Using the Software

All SER4010 tools provide a '-d' option to specify which serial port to use. This option is only needed if you didn't specify the correct serial port at compile time, see Compiling the Software, or when using multiple modules. Valid arguments for the '-d' option are for example /dev/ttyS0, /dev/ttyUSB0 or /dev/ttyAMA0.

To test if the communication with the module works you can use the ser4010_test_comm utility from the tools/ directory. An example of a working module output:

text
# build/tools/ser4010_test_comm
Communication OK

The tool will either output 'Communication OK' or an error. In case of error verify you properly connected the device (switched TX/RX?). And verify you are using the correct serial port and no other software is using the serial port.

ser4010_dump

The ser4010_dump tool can be used to dump the current module configuration. This is mainly for debugging. You don't have to manual change any of these configuration parameters since all other SER4010 tools will automatically chose the correct parameters for there application.

Example output:

text
# build/tools/ser4010_dump
Device Info:
------------
Device Type: 0x0100
Device Revision: 3

ODS settings:
------------
bModulationType: OOK (0)
bClkDiv: 5
bEdgeRate: 0
bGroupWidth: 6
wBitRate: 1100
bLcWarmInt: 8
bDivWarmInt: 5
bPaWarmInt: 4

PA settings:
------------
fAlpha: 0.000000
fBeta: 0.000000
bLevel: 60
bMaxDrv: 0
wNominalCap: 256

ser4010_somfy

TODO:

ser4010_kaku

TODO:

Parts

39
QtyValueFootprintReferences
20.1uFCapacitors_SMD:C_0603C12, C14
216nHsilabs_0402:C_0402L3, L4
24.7uFCapacitors_SMD:C_0603C11, C13
26.8pFsilabs_0402:C_0402C2, C4
11.8pFsilabs_0402:C_0402C6
1100Resistors_SMD:R_0603R4
118nHsilabs_0402:C_0402L1
11kResistors_SMD:R_0603R1
11nFCapacitors_SMD:C_0402C8
12.2uFCapacitors_SMD:C_0603C7
12.7pFsilabs_0402:C_0402C5
122.1kResistors_SMD:R_0603R2
1220nHsilabs_0402:C_0402L5
1270pFCapacitors_SMD:C_0402C9
1270pFsilabs_0402:C_0402C1
13V3Measurement_Point_Round-SMD-Pad_Small-Labeled:Measurement_Point_Round-SMD-Pad_Small-LabeledJ3
14.3pFsilabs_0402:C_0402C3
147.5kResistors_SMD:R_0603R3
1470Resistors_SMD:R_0603R6
156nHsilabs_0402:C_0402L2
15pFCapacitors_SMD:C_0402C10
1C2CKMeasurement_Point_Round-SMD-Pad_Small-Labeled:Measurement_Point_Round-SMD-Pad_Small-LabeledJ5
1C2DMeasurement_Point_Round-SMD-Pad_Small-Labeled:Measurement_Point_Round-SMD-Pad_Small-LabeledJ6
1CP2102N-A01-GQFN20Housings_DFN_QFN:SiliconLabs_QFN-20-1EP_3x3mm_Pitch0.5mmU2
1Conn_CoaxialAdafruit-SMA_EDGELAUNCH:Adafruit-SMA_EDGELAUNCHJ1
1DNFResistors_SMD:R_0603R5
1GNDMeasurement_Point_Round-SMD-Pad_Small-Labeled:Measurement_Point_Round-SMD-Pad_Small-LabeledJ7
1LEDDiodes_SMD:D_0805D2
1LFXTAL055915IQD_CFPX-180:Crystal_SMD_IQD_CFPX-180_4pin_3.2x2.5mmY1
1SP0503BAHTTO_SOT_Packages_SMD:SOT-143D1
1Si4010-GTHousings_SSOP:MSOP-10_3x3mm_Pitch0.5mmU1
1USB_OTGAmphenal_FCI_10118193-0001LF_USB_Micro-B:Amphenal_FCI_10118193-0001LF_USB_Micro-BJ2
1VBUSMeasurement_Point_Round-SMD-Pad_Small-Labeled:Measurement_Point_Round-SMD-Pad_Small-LabeledJ8
1VPPMeasurement_Point_Round-SMD-Pad_Small-Labeled:Measurement_Point_Round-SMD-Pad_Small-LabeledJ4

The 38 most common of 39 parts.

Questions

How big is the Ser4010 PCB?

It measures 16 × 35 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ser4010 use?

39 parts, built around the CP2102N-A01-GQFN20R and SP0503BAHTG. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ser4010 KiCad files?

From the dimhoff/ser4010 repository on GitHub, at the commit this page was made from: the board is hardware/schematic/ser4010.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ser4010 design in my own project?

Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers27 × 8.8 mmCereal, the printed circuit board in 3D

    Cereal

    dotcypress/cereal

    Compact, CP2102N based, USB-C to UART bridge

    17 parts5Apache-2.0
  • 4 layers209 × 100 mmCarControllerV3, the printed circuit board in 3D

    CarControllerV3

    Stefanhg/CarControllerV3

    Kewet/Buddy CarController unofficial V3

    233 parts1
  • 2 layers87.1 × 58.5 mmPanel, the printed circuit board in 3D

    Panel

    ConfusedHello/STorM32-NT

    A fork of the STorM32 NT controller board for my own purposes.

    217 parts
  • 4 layers89.6 × 54.5 mmESP 32 IOT 4 Layer, the printed circuit board in 3D

    ESP 32 IOT 4 Layer

    jaival-bhatia/ESP32-C3-4-Layer-IoT-Development-Board

    A custom-designed 4-layer ESP32-C3 IoT development board featuring USB Type-C, Li-ion battery management, environmental sensing, OLED display, and expandable peripheral interfaces.

    85 partsMIT
  • 2 layers15.2 × 20.3 mmCP2102N 20, the printed circuit board in 3D

    CP2102N 20

    vul-os/sirboard

    Open hardware: 107 KiCad PCB designs — SMD-to-THT breakout adapters, ATTiny/ATMega/ESP development boards, and a 39-part sensor line on a common JST-SH connector.

    20 parts56Apache-2.0
  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 4 layers85 × 56 mmPslab mini, the printed circuit board in 3D

    Pslab mini

    fossasia/pslab-mini-hardware

    PSLab Mini Hardware https://pslab.io

    182 parts1.2kApache-2.0
  • 4 layers55 × 14.7 mmMinCab, the printed circuit board in 3D

    MinCab

    merocle/mincab

    small carrier board for Raspberry Pi CM4

    41 parts180CC-BY-SA-4.0