# KS0172A Keyestudio (Black) Main Control Board

## 1. Introduction
Keyestudio Main Control Board with pin headers has the same basic functions as Keyestudio REV3 (Black)Main Control Board. It is a microcontroller board based on the ATMEGA328P-AU, which has the same function as ATMEGA328P(-PU), fully compatible with Keyestudio REV3 (Black)Main Control Board.
It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz crystal oscillator, a USB connection, a power jack, 2 ICSP headers, and a reset button.
It breaks out all the digital and analog pins in the form of 3PIN headers (G, V, S).
S pins correspond to all 14 digital pins, 6 analog pins. G pins for ground. V pins for VCC. You can control the voltage of VCC via a slide switch for 5V or 3.3V.
When switched to 5V, level on serial communication port is 5V, voltage of pins is 5V. When switched to 3.3V, level on serial communication port is 3.3V, voltage of pins is 3.3V.
It also breaks out two 4PIN headers for serial communication and IIC communication. So it is more easier to connect external sensors and modules.
As for keyestudio main board, its voltage-regulator chip is NSP1117. When connect external power, output 5V, drive current is 1A.
But for this keyestudio main board with headers, its voltage-regulator chip is MP2307DN. When connect external power, output 5V, drive current is 2A.
It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started.
## 2. Tech Specs
| Microcontroller | ATmega328P-AU |
| :-------------------------: | ---------------------------------------------------- |
| Operating Voltage | 5V |
| Input Voltage (recommended) | DC 7-12V |
| Digital I/O Pins | 14 (D0-D13) |
| PWM Digital I/O Pins | 6 (D3, D5, D6, D9, D10, D11) |
| Analog Input Pins | 6 (A0-A5) |
| DC Current per I/O Pin | 20 mA |
| DC Current for 3.3V Pin | 50 mA |
| Flash Memory | 32 KB (ATmega328) of which 0.5 KB used by bootloader |
| SRAM | 2 KB |
| EEPROM | 1 KB |
| Clock Speed | 16 MHz |
| LED_BUILTIN | D13 |
## 3. Dimensions

## 4. Element and Pin Interfaces
Here is an explanation chart of what every element and interface of the board does:

| No. | Explain |
| -------------------- | ------------------------------------------------------------ |
|  | **ICSP (In-Circuit Serial Programming) Header**
ICSP is the AVR, an Arduino micro-program header consisting of MOSI, MISO, SCK, RESET, VCC, and GND. It is often called the SPI (serial peripheral interface) and can be considered an "extension" of the output. In fact, slave the output devices under the SPI bus host.
When connecting to PC, program the firmware to ATMEGA328P-AU. |
|  | **Serial Communication Pin**
Connect to serial communication. 4Pins (GND, VCC (3.3V or 5V controlled by slide switch), RX, TX) |
|  | **Ground**
Ground pins |
|  | **V Pins (VCC)**
Power the external sensors and modules. Select the voltage of 3.3V or 5V via a slide switch. |
|  | **Digital I/O**
It has 14 digital input/output pins, labeled D0 to D13 (of which 6 can be used as PWM outputs). These pins can be configured as digital input pin to read the logic value (0 or 1). Or used as digital output pin to drive different modules like LED, relay, etc. The pin D3, D5, D6, D9, D10, and D11 can be used to generate PWM.
For digital port, you can connect through female headers, or through pin headers (labeled S) of 2.54mm pitch. |
|  | **AREF**
For Analog reference. Sometimes used to set an external reference voltage (0-5V) as the upper limit of analog input pins. |
|  | **SDA**
IIC communication pin |
|  | **SCL**
IIC communication pin |
|  | **ICSP (In-Circuit Serial Programming) Header**
ICSP is an AVR, an Arduino micro-program header consisting of MOSI, MISO, SCK, RESET, VCC, and GND. Connected to ATMEGA 16U2-MU. When connecting to PC, program the firmware to ATMEGA 16U2-MU. |
|  | **Microcontroller**
Each control board has its own microcontroller. You can regard it as the brain of your board.
Microcontrollers are usually from ATMEL. Before you load a new program on the Arduino IDE, you must know what IC is on your board. This information can be checked at the top of IC.
The microcontroller used in this board is ATMEGA328P-AU. |
|  | **D13 LED**
There is a built-in LED driven by digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it's off. |
|  | **TX LED**
Onboard you can find the label: TX (transmit)
When Arduino board communicates via serial port, send the message, TX led flashes. |
|  | **RX LED**
Onboard you can find the label: RX(receive )
When main board communicates via serial port, receive the message, RX led flashes. |
|  | **Power LED**
LED on means that your circuit board is correctly powered on. Otherwise LED is off. |
|  | **USB Connection**
You can power the board via USB connection. Or can upload the program to the board via USB port.
Connect the board to PC using a USB cable via USB port. |
|  | **ATMEGA 16U2-MU**
USB to serial chip, can convert the USB signal into serial port signal. |
|  | **Slide Switch**
You can slide the switch to control the voltage of pin V (VCC), 3.3V or 5V. |
|  | **Voltage Regulator**
To control the voltage provided to the main board, as well as to stabilize the DC voltage used by the processor and other components.
Convert an external input DC7-12V voltage into DC 5V, then switch DC 5V to the processor and other components, output DC 5V, drive current is 2A |
|  | **DC Power Jack**
The board can be supplied with an external power DC7-12V from the DC power jack. |
|  | **IOREF**
Used to configure the operating voltage of microcontrollers. Use it less. |
|  | **RESET Header**
Connect an external button to reset the board. The function is the same as reset button |
|  | **Pin 3V3 Output**
Provides 3.3V voltage output |
|  | **Pin 5V Output**
Provides 5V voltage output |
|  | **Vin**
You can supply an external voltage input DC7-12V through this pin to the board. |
|  | **Analog Pins**
The main board has 6 analog inputs, labeled A0 through A5.
Can also used as digital pins, A0=D14, A1=D15, A2=D16, A3=D17, A4=D18, A5=D19.
For analog port, you can connect through female headers, or through pin headers (labeled S) of 2.54mm pitch. |
|  | **IIC Communication Pin**
Connect to the IIC communication.
4Pins (GND, VCC (3.3V or 5V controlled by slide switch), SDA, SCL) |
|  | **RESET Button**
You can reset your board to start the program from the initial status. |

## 5. Specialized Functions of Some Pins
- **Serial communication:** Digital pins 0 (RX) and 1 (TX).
- **PWM Interfaces (Pulse-Width Modulation):** D3, D5, D6, D9, D10, D11
- **External Interrupts:** D2 (interrupt 0) and D3 (interrupt 1). These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value.
- **SPI communication:** D10 (SS), D11 (MOSI), D12 (MISO), D13 (SCK). These pins support SPI communication using the SPI library.
- **IIC communication:** A4 (SDA); A5(SCL)
## 6. Software Download
Open the browser and search: https://www.arduino.cc/en/software, we will take WINDOWS system as an example to show you how to download and install.

You just need to click JUSTDOWNLOAD,then click the downloaded file to install it. And when the ZIP file is downloaded,you can directly unzip and start it.

## 7. Installing Driver
Download driver : [drivers](./drivers.7z)
Next, we will introduce the driver installation of UNO R3 development board. The driver installation may have slight differences in different computer systems. So in the following let’s move on to the driver installation in the WIN 7 system.
The Arduino folder contains both the Arduino program itself and the drivers that allow the Arduino to be connected to your computer by a USB cable. Before we launch the Arduino software, you are going to install the USB drivers.

Plug one end of your USB cable into the Arduino and the other into a USB socket on your computer.
When you connect Keyestudio Main Control Board to your computer at the first time, right click the icon of your **“Computer” —>**for **“Properties”—>** **click the** **“Device manager”**, under “Other Devices”, you should see an icon for “Unknown device” with a little yellow warning triangle next to it. This is your Arduino.

Then right-click on the device and select the top menu option (Update Driver Software...) shown as the figure below.

It will then be prompted to either “Search Automatically for updated driver software” or “Browse my computer for driver software”. Shown as below. In this page, select “Browse my computer for driver software”.

After that, select the option to browse and navigate to the “drivers” folder of Arduino installation.

Click “Next” and you may get a security warning, if so, allow the software to be installed. Shown as below.

Installation completed, click “Close”.

Up to now, the driver is installed well. Then you can right click **“Computer” —>“Properties”—>“Device manager”**, you should see the device shown below.

## 8. Set Arduino IDE
Connect the main control board to your computer using the USB cable. The red power LED should go on.

Connecting the board to the computer,and select the development board and port.

**Note:** to avoid errors, the COM Port should keep the same as the Ports shown on Device Manager.

### 9. Upload the Program
Below is an example program for displaying the Hello World! Copy and paste the code to the Arduino environment IDE.
```c
int val;
int ledpin=13;
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
}
void loop()
{
val=Serial.read();
if(val=='R')
{
digitalWrite(ledpin,HIGH);
delay(500);
digitalWrite(ledpin,LOW);
delay(500);
Serial.println("Hello World!");
}
}
```
| Picture | Introduction |
| -------------------------------------- | --------------------------------------------------- |
|  | Check the code for errors |
|  | Upload the current Sketch to the Arduino |
|  | Display the serial data being sent from the Arduino |
Then set the baud rate as 9600, enter an “R” and click Send, you should see the RX led on the board blink once, and then D13 led blink once, finally "Hello World!" is showed on the monitor, the TX led blink once. Congrats!

## 10. For Extension
