How to use the Starter Kit: Technical resources



  1. Type B USB connector, consistent with Arduino UNO R3, for ruggedness and long service life. USB interface driver chip: CH340G, compatible with win7, win8, linux, MAC OS. Use Arduino UNO bootloader

  2. Onboard 500mA resettable fuse to protect power supply from the USB port and the DC jack at the same time.

  3. 4 digit display: 4 digit tube (0.36 inches) which can display the clock point, it needs D10/D11 pins to control and display the integer, clock, stopwatch, score, etc.

  4. Peizoelectric buzzer

  5. DS1307 clock: based on DS1307 high-precision real-time clock module, I2C interface, the address is 0x68.

  6. LM75 temperature sensor: I2C interface temperature sensor, not only can measure the temperature, it can also set the temperature protection temperature, the address is 0x48.

  7. Infrared receiver: use D2 pin, It can receive the modulated infrared signal of 38KHz that is sent by the IR transmitter module and demodulate it into logic level, and it can complete the infrared remote control with the codec program.

  8. Reset switch

  9. 4-CH touch sensor: capacitive touch switch, only when you touch the corresponding position with your fingers, the module corresponding pin (D3 / D4 / D5 / D6) will output high level, otherwise it outputs low.

  10. Onboard DIP switch, you can disconnect the connection between the peripheral module on the board and the Atmega328P.

  11. Microcontroller: Atmel ATmega328P, working voltage: 5V, working current: 500mA (Max), IO logic voltage: 5V, 100% compatible with Arduino UNO R3 program, expansion shields, IDE.

  12. Rotation angle sensor: 10K ohm adjustable potentiometer knob angle sensor, use A0 pin, can be used for MP3 volume adjustment, 4-digit display brightness adjustment.

  13. Onboard Arduino Shield interface, can plug in compatible expansion shields.

  14. Serial MP3: MP3 music player module is based on high-quality MP3 music chip, use D7 / D8 pins to be software serial port, you can send commands to switch songs, change the volume and play mode and other operations.

    The board kit contains TF card, speaker, CR1220 battery, infrared remote control, and these are the necessary accessories for MP3, DS1307, infrared receiver.

Rich UNO R3 documentation

Download Arduino IDE software library for Rich Uno R3 board: - guide to setting up the Rich UNO R3: 

Arduino Learning review of Rich UNO R3 board:

Serial MP3 player manual

Rich UNO R3 circuit diagram

Video tutorials

Lesson 4: Touch and debounce.

Lesson 5: Temperature measurement and display

Lesson 6: Flashing number display

Lesson 7: Knob angle

Lesson 8: Knob to control brightness

Lesson 9: Clock input

Lesson 10: Clock display

Lesson 11: Test for infrared keyboard

Lesson 12: Infrared remote control and display

Lesson 13: Play an mp3 song

Lesson 14: Play a song with its file name

Lesson 15: Knob control of volume

Lesson 16: Touch control of mp3 playback

Lesson 17: Infrared remote control of mp3 playback

Lesson 18: Voice playback

Lesson 19: Speak value of Pi

Lesson 20: Speak temperature value

Lesson 21: Speak clock time

Lesson 22: Speak time and temperature

…with additional tutorials to be found at:
(these use the Arduino IDE and Open-Smart software library).

Kit of components


Water sensor: easy to use moisture sensor module. Under normal circumstances, if the module does not touch the water line, water droplets or conductive objects, the signal pin of the module is held high by a 1M ohm pull-up resistor. When the module is exposed to water or rain droplets then that becomes low.
Specifications: Operating voltage: DC3.3-5.5V. Operating current: less than 20mA. Dimension: 4.1 x 2.2cm

NTC Thermistor sensor line + adapter module: can be used to measure temperature directly in water. Widely used in temperature monitoring for indoor, outdoor, greenhouse, etc. You can plug the sensor onto the adapter module directly.
Specifications: Working voltage: 2.2~12V DC. Working current: 0.5mA (max). Measuring range: -30~120℃. Accuracy: ±2% (4℃~50℃), ±3% (-15℃~80℃). B value: 3950K. R25: 10Kohm. Sampling resistor parameters: 10k ohm, 0.1%, 10ppm. Sensor connector: XH2.54-2P. Lead length: 1m. Adapter output connector: standard electronic brick interface, 2.54mm-3P header

Ultrasonic sensor: distance measuring module for non-contact measurement. It has high measurement accuracy and its blind area is close (up to 2cm).
Specifications: Arduino library ready: HCSR04Ultrasonic. Working voltage: 3-5.5VDC. Static current: less than 2 mA. IO logic voltage: 3.3V / 5V. Induction angle: not more than 15 degrees. Detection range: 2-400 cm. Accuracy: 3mm. Adopt IO trigger through supplying at least 10us sequence of high level signal. The module automatically send eight 40khz square wave and automatically detect whether receive the returning pulse signal.

Touch sensor: The module is based on a touch detection IC (TTP223-BA6), and the touch IC is in trigger mode (Toggle Mode). On power-up , the module sends a low or high output level (set by the board toggle switch ), the mode for low power mode ; touch of a finger when the corresponding position , the module will output the opposite level ( ie, the original output High , after touching a low output ; originally output low , after touching a high output ) , the mode is switched to fast mode ; when for 12 seconds without touching , the mode and switch to low-power mode. The module can be installed in such as plastic, glass surface non-metallic materials, in addition to the thin paper ( non-metallic ) covering the surface of the module , as long as the correct location of the touch , you can make hidden in the walls, desktops and other places buttons, switches. This module allows you to dispense conventional mechanical push buttons, switches troubles. Control Interface: A total of three pins (GND, VCC, SIG), GND to ground, VCC is the power supply, SIG digital signal output pin, the power-output high; Power light: Green LED, a power that is properly lit; Touch area: Similar to a fingerprint icon inside the area, you can touch the trigger finger. Selector switch: When the handle appropriated L side, it is set to the power output low; Similarly, when appropriated H side, the power output high. 
Specifications: Low power consumption. Power supply for 2 ~ 5.5V. Positive and negative can be used as a touch surface , DC can be an alternative to traditional self-locking switch.

Voltage sensor: The voltage detection module is based on the principle of the resistor divider. The measured voltage can be reduced, so that the ADC pin of ar duino board can detect the voltage value after reduction, and the measured voltage can be calculated. Sampling resistor which is precision resistors, precision of 0.5% and a temperature coefficient of 50PPM, in order to effectively ensure the detection accuracy.
Specifications: Measurement Accuracy<= 1%. Measurement range up to 25 VDC.

Slide potentiometer: module with 3P-2.54MM interface incorporates a linear variable resistor with a maximum resistance of 10K ohm. When you move the slider from one side to the other, its output voltage will range from 0 V to the VCC you apply.Especially suitable for volume control, lighting regulator and other DIY projects.
Specifications: Working voltage: 3~12V DC. Working Current: 0.24mA. Slide stroke: 30mm.

Rocker switch: module is based on two feet 2 files rocker switch control module, the output of a switch, the switch that outputs a high level when you press the ON side, that output low when pressing the OFF side. Suitable for 3.3V and 5V.

Vibration motor: This is a mini vibration motor suitable as a non-audible indicator. When the input is HIGH, the motor will vibrate just like your cell phone on silent mode.
Specifications: Rated Voltage: 5.0VDC. Working Voltage: 3.0 - 5.3VDC. Rated Rotate Speed: Min. 9000RPM. Rated Current: Max. 60mA. Starting Current: Max. 90mA. Starting Voltage: DC 3.7V. Insulation Resistance: 10Mohm

PIR motion sensor: HC-SR501 human infrared sensor module is based on infrared technology, automatic control products. High sensitivity, high reliability, low power consumption, ultra-low voltage operation mode. Widely used in various auto-sensing electrical equipment, especially battery-powered automatic control products. Infrared sensor with control circuit board, the sensitivity and holding time can be adjusted
Specifications: Working Voltage Range: DC 4.5V- 20V. Current drain:<60uA. Voltage Output: High/Low level signal:3.3V TTL output. Detection distance: 3--7M(can be adjusted). Detection range: <140°. Delay time: 5-200S(can be adjusted, default 5s +-3%). Blockade time: 2.5 S (default). Trigger: L: Non-repeatable trigger H: Repeat Trigger (default). Work temperature:-20-+80°C.

Light sensor: The Light sensor module uses the GL5528 photoresistor to detect the light intensity of the environment. The resistance of the sensor decreases when the light intensity of the environment increases. The chip LM358 is used as a voltage follower to enable you get a accurate data.
Specifications: Low power consumption.

Infrared emitter: module is based on the infrared emission infrared emission control module 940, the infrared signal emitted by the transmitter tube 940nm wavelength, the signal can be acquired by an infrared receiver module is a few meters away and demodulation, encoding and decoding process can be achieved with the remote control function.
Specifications: Level control interface, power supply for 5V or 3.3V

Dupont line 1*40P: hook-up wires.

MicroSD card adapter: The module is a Micro  SD card reader module, and the SPI interface via the file system driver,  microcontroller system to complete the Micro SD card read and write files. Users can directly use the Arduino IDE comes with an SD card to complete  the library card initialization and read-write. Supports Micro SD Card, Micro SDHC card (high-speed card). The level conversion circuit board that can interface level is 5V or 3.3V. Communication interface is a standard SPI interface. Control Interface: A total of six pins (GND, VCC, MISO, MOSI, SCK, CS), GND to ground, VCC is the power supply, MISO, MOSI, SCK is the SPI bus, CS is the chip select signal pin; 3.3V regulator circuit: LDO regulator output 3.3V as level converter chip, Micro SD card supply; Level conversion circuit: Micro SD card into the direction of signals into 3.3V, MicroSD card toward the direction of the control interface MISO signal is also converted to 3.3V, general AVR microcontroller system can read the signal.
Specificatons: 4.5V - 5.5V, 3.3V voltage regulator circuit board. Positioning holes: 4 M2 screws positioning hole diameter of 2.2mm. Size:45 x 28mm. Net weight:6g.

4 digit display: The module is based on a decimal point display module, it displays four digital tube (0.36 inches), and driver IC is TM1637, only two signal lines can make MCU control four Digit 8-segment LED. Can be used to display decimal, letters and so on.
Specifications: 4 digit red alpha-numeric display with decimal point; Working voltage: 3.3~5.5V DC; Working current: 80mA (MAX);

Passive buzzer: This is 5V passive buzzer module, and it is a piezoelectric speaker. The user can set the PWM output frequency and duration to produce different tones, beats according to the song numbered musical notation.
Specifications: Operating voltage: 3.3 - 5.2VDC. Operating Current: 25mA (max).

IO expansion shield: The Sensor Shield ( IO expansion board ) is compatible with Ar duino UNO / Leonardo / Mega2560. It is a connection bridge between the electronic building block modules and the Arduino board. It extends SPI interface, UART interface, I2C interface, PWM interface and analog interface of Arduino board, so DIY enthusiasts, ar duino interactive designers can quickly attach the modules to the Arduino board and accelerate project development. Compatible with Arduino UNO R3, Leonardo R3, Mega2560 R3. On-board reset circuit, power and reset indicator.

LED bar module: This is an LED display module with 8 LEDs on-board, and low level can light the corresponding LED. Especially suitable for MCU IO test and experiments, multi-channel wireless control indicators.
Specifications: Operating voltage: 3 - 5.5VDC. Operating Current: 24mA (max). Active level: High level. Number of LEDs: 8. Display colours: yellow-green (D0 / D1), blue (D2 / D3), yellow (D4 / D5), red (D6 / D7)

Eagle eye LED module: The module is a high efficiency green piranha LED module. Give a high signal to light up the Piranha LED.
Specifications: Power supply 3.3 ~ 5.5V DC. High drive currents needed.

I2C 1602 LCD module: The module is a 2 line 16 character LCD module with I2C interface and it is a basic character LCD screen for lots of applications.It is compatible with Ar duino UNO R3 / Mega2560 and it can be used to display real time clock, temperature and humidity.
Specifications: I2C Address: 0x27. Resolution: 80 * 16. Display Size: 2.6 inch. Power: 4.5~5.5V. Current: 80mA. Interface level: 5V.

Prototyping shield

Used in conjunction with the Arduino board, the ProtoShield prototype expansion board can be used to assemble custom circuits for prototyping It allows direct mounting of soldered components on the board, or connection through a mini breadboard. 

The breadboard is mounted via double-sided adhesive connections.

ProtoShield prototype expansion board with two buttons and two LED circuit can be used directly, all of the pins and the power leads are Arduino-compatible.

Features: 2 general LEDs & 2 switches on Arduino prototype shield,
With Self-adhesive tape on the back of mini breadboard, it is easy-to-mount on the Arduino Prototype Shield

Components were sourced from Open-Smart:


Programmable touchscreen display


The uLCD-32PTU-AR is an Arduino Display Module Pack, which includes a uLCD-32PTU 3.2" LCD Display with Resistive Touch, a 4D Arduino Adaptor Shield and 5 way interface cable.

The uLCD-32PTU-AR customises the uLCD Display specifically for interfacing with the Arduino, to provide a quick and easy interface without any wiring hassles. The Arduino Display Module Pack enables an Arduino user to quickly connect the 4D Arduino Adaptor Shield to their Arduino, connect the 5 way cable between the Adaptor and the Display Module, and be connected in seconds to start programming their new 4D Systems Display. The uLCD-32PTU-AR has a comprehensive range of serial commands ready to be received from the Arduino, to draw primitives such as lines, rectangles, circles and text, displaying images, playing sound and logging data to uSD card. It can utilise the Arduino's UART Serial Port and a single Digital pin.

Programming the touchscreen display

4D Systems provides a free Windows-compatible software environment for programming the touchscreen displays. Workshop4 includes four development environments, for the user to choose based on application requirements or user skill level. ViSi - Genie is an advanced environment that doesn't require any 4DGL coding at all, it is all done automatically for you. The software provides a toolbar filled with graphical widgets. These can be simply dragged to lay out the prototype interface with the objects you want, set the events to drive them and the code is written for you automatically. ViSi-Genie provides the latest rapid development experience from 4D Systems.

The 4D Workshop programming environment can be downloaded from:

[Latest News: Thanks to Max Danilin and Victor Nakoryakov (lead developers for XOD) - for a new XOD library for code-free programming of 4D Systems touchscreens. Grab a copy of the library for code-free programming of custom interfaces using your Biomaker Starter Kit, and provide feedback to the developers.]



ViSi-Genie is a drag-and-drop rapid development tool for designing and building graphic user interface on 4D Labs processor-based displays.It provides an easy method for designing complex graphics user interface (GUI) applications without any coding. A simple GUI application to be ‘designed’ from scratch in literally seconds. ViSi-Genie does all the background coding, with no 4DGL programming language to learn.

Pick and choose the relevant objects to place on a virtual display. The full animation of the objects will be done under-the-hood, such as pressing a button or moving the thumb of the slider. Each object has parameters which can be set, and configurable events to animate and drive other objects or communicate with an external host. Simply place an object on the screen, position and size it to suit, set the parameters such as colour, range, text, and finally select the event you wish the object to be associated with, it is that simple. Objects are classified in three different groups:

INPUT OBJECTS, as a button or a keyboard, OUTPUT OBJECTS, as a gauge or a meter, and COMBINED OBJECTS or INPUT/OUTPUT OBJECTS, as a slider which acts as both an input and an output.

In seconds you can transform a blank display into a fully animated GUI with moving meters, animated press and release buttons, and much more. The assembled code can be directly downloaded to a 4D Systems display to check the screen display. ViSi-Genie also provides debugging tools to poll communication streams to/from the programmed display. The ViSi-Genie environment runs under Windows, but can be well implemented under Mac OS X using an emulator like Parallels.


Above: Choice of programming environments with different levels of programming proficiency required from user (left). Snapshot of graphical programming interface and WYSIWYG representation of 4D Systems display (right).

Below: (left) Examples of button/switch input widgets that can be added to a display, to create a custom user interface.


Using ViSi-Genie with an Arduino based display

Generally, the user will design a user interface in ViSi-Genie for the specific display model. The layout can be tweaked interactively in the development software. When finished, the interface code will be downloaded to the display controller via its serial port. GUI interface features can be tested by interacting with the display. ViSi-Genie also provides debugging features for serial communication. When ready, the programmed display can be connected to an Arduino board via serial ports.

4D Systems Application Note: Connecting a 4D display to an Arduino host
This application note shows how to create a ViSi Genie program and how to use the ViSi Genie library for the Arduino IDE. To achieve these objectives, a simple project is developed. This consists of a 4D Picaso module displaying six objects – a LED digits, a slider, a cool gauge, a string, a user LED, and a static text (label). To recreate the application described in this demo, the user first creates a ViSi Genie program in the 4D Workshop IDE and downloads it to a 4D display module. In this example, the Arduino host is programmed using the Arduino IDE. The Arduino and display communicate via a serial port. The Arduino programme loop must be configured to receive commands from interactive controls on the display, and to send relevant updates.

Arduino IDE software library:
4D Systems provides an Arduino IDE library that allows the use of programmed displays with Arduino boards programmed with the standard IDE.

This IDE library provides high level functions for the Arduino, to simplify communication with 4D Systems modules when using a module configured with ViSi-Genie. Inside the library are 3 example sketches, to assist with getting started using this library. Inside is also a ViSi-Genie Workshop4 project, which can be used on a range of 4D Systems displays (designed for a uLCD-32PTU). It illustrates how to use some of the commands in the library include Read Object, Write Object, Reported Messages, Write Contrast and Write String. There are well-documented examples available from 4D Systems.

4D Systems Application Notes:

ViSi-Genie Connection to an Arduino Host with RGB LED Control 

ViSi-Genie Displaying Temperature values from an Arduino Host 

ViSi-Genie Writing to Genie Objects Using an Arduino Host 

ViSi-Genie A Simple Digital Voltmeter Application using an Arduino Host  

ViSi-Genie Arduino Danger Shield  

ViSi-Genie Magic Button Counters Arduino  

ViSi-Genie Magic How to Read a File Arduino 

Visi-Genie Password Implementation with an Arduino Host 

ViSi-Genie Magic How to Append to a File Arduino  

ViSi-Genie Magic Slide to Unlock Arduino 

ViSi-Genie Magic File Size Request Arduino


Programming with XOD

One of the immediate tasks for the Biomaker community will be to adapt available Arduino code, and produce XOD nodes capable of code-free serial communication with the programmed touchscreen displays. We hope to start this with the 2018-2019 Winter Challenge. The task is made easier by limited number of user interface elements, and and conserved communication formats and addresses.

Process will be posted on this website.

Format for serial communication between the programmable display and the host device, which could be a Biomaker Arduino , computer or Raspberry Pi. Each command is followed by an identifier for the target GUI widget, parameters and checksum.

Format for serial communication between the programmable display and the host device, which could be a Biomaker Arduino , computer or Raspberry Pi. Each command is followed by an identifier for the target GUI widget, parameters and checksum.

Lists of the types of elements that can be added to the 4D Systems displays from the ViSi-Genie programming environment.

Lists of the types of elements that can be added to the 4D Systems displays from the ViSi-Genie programming environment.

Additional software and technical resources:

4D Systems ViSi Genie User Guide

4D Systems ViSi-Genie Reference Manual

Arduino IDE software library:

Demonstration: This demo creates a touchscreen calculator
Code: (
Video: (

Demonstration: This demo controls a tri-coloured LED along with displaying images from the SD card on the display in a slide show.

Application notes can be found at:

4D Maker projects

See a collection of documented projects using 4D Systems hardware at

Hardware supplier:

4D Systems Gen4 µLCD 3.2” resistive touch screen:
Current Price: around £50/$70 per kit

RS online: