You will find more information about the Nano CH340 R3 development board in this article. Information from different websites has been used in this article. Special thanks to http://actrl.cz/ for schematics and details of this chip.This acticle is based on PC WINDOWS but here is a link for a solution for Mac users.
The Nano CH340 R3 board is similar to the genunine Arduino Nano board, described on the original Arduino website here. The board uses same type of Mini-B USB connector, same side connectors and 6-pin SPI connector, as well as the Atmel ATmega328P microcontroller in the 32-TQFP package. There are also 4 LEDs – Power LED, LED connected to digital output pin D13, and two LEDs showing status of the RxD and TxD communication lines.
To provide +5.0 V Vcc power supply, the board uses LM1117-5.0 SOT-223 linear stabilizer 5.0 V (compared to original UA78M05), with slightly higher current (800 mA vs. 500 mA of original UA78M05) and lower drop-out voltage (typ. 1.2 V vs. 2.0 V for UA78M05).
To facilitate the USB communication and to provide 3.3 V output, the board uses USB communication circuit CH340 in SOP-16 package (instead of FT232RL used on the genuine Nano R3 board), manufactured by several Chinese companies. The CH340 IC requires installation of driver software, which was covered and explained many times already, so I will not repeat this information. With installed driver, communication with Arduino (IDE) is clear and straightforward.
To switch between VIN power supply (6-12 V) and USB power supply, the board includes a Schottky diode with low forward voltage. Most of the boards I got seems to be using the Vishay Semi SD101CWS diode (Vf 0.6 – 0.8 V at 20 mA, S4 SMD marking code).
Link to schematics of the Nano CH340 R3 board in pdf. Feel to copy and share as you like, providing you will attach the copyright info “copyright actrl.cz”.
Differences to the genuine Arduino Nano R3 board
Differences to the genuine Arduino Nano R3 board
- For both ATmega328P and CH340, the board uses 3-pin SMD ceramic resonators with internal load capacitors, so no external capacitors for oscilating circuit are needed not they are used (although there are soldering pads provided next to the CH340 resonator).
- Rx and Tx LEDs are connected directly to the ATmega328P outputs PD0 and PD1, so keep that in mind in case those two pins will be used for something else than USB communication (on genuine Nano R3 board the Rx and Tx LEDs are driven by additional outputs on the FT232RL chip).
- The CH340 chip includes the 3.3 V LDO voltage regulator, which can supply up to 25 mA. There is no refence in the original CH340 datasheet or elswhere on the internet, so I measured the supplied 3V3 voltage directly.With no load, the 3V3 pin voltage was 3.28 V. With load up to 25 mA the voltage dropped to 3.18-3.22 V (on different boards); however at 30 mA load the voltage dropped to 3.10 V and further to 2.85 V at 40 mA.
Arduino Nano with chip CH340G Vs Arduino Nano original board
Let’s plug in the genuine Arduino Nano board first. Everything works just fine. The PC recognises it connected to serial port and installs drivers automatically. If we connect to PC Chinese clone we do not get the same result as PC does not recognise it. The problem is that the Chinese clone does not use the standard serial to usb chip but a chip marked CH340G. Your computer will not recognize these CH340G chips on your computer. To fix this is very easy.
1.CHECK THE POWER LED IS ON WHEN CHINESE CLONE OF ARDUINO NANO CONNECTED TO USB PORT OF YOUR PC. IF IT IS OFF YOUR CHINESE CLONE BOARD IS DEAD.
2.SOME CHINESE CLONES ARE DIFFERENT. THESE CLONES DO NOT HAVE FTDI CHIP, WHICH MAY CAUSE YOUR PC TO NOT SEE THE ARDUINO BOARD ONCE PLUGGED IN WITH THE USB.
3.CHECK THAT YOU ARE USING CORRECT CABLE – IT SHOULD BE MINI USB DATA CABLE
0. Test it first.
- Plug it to the PC with the USB cable.
- Make sure it turns on – PWR LED SHOULD BE ON, if PWR LED IS OFF your chinese clone of Arduino board is not operational.
- Try to upload the blink sketch to it using the Arduino IDE software on your PC. ( File->Examples->01. Basics->Blink )
- You will most likely get the error. This has nothing to do with the code being right/wrong. It just simply means that your PC and the board aren’t communicating correctly.
- If your clone did work with the sketch upload, then even better. Just start using it.
- If you get the error message, see information below how to fix it.
1. First case. You need to download the manufacture’s drivers for this chip and install them in your PC. Here is the link. See the description of driver installation package below:
CH340 / CH341 USB to serial WINDOWS driver installation package that supports 32/64 bit Windows 10 / 8.1 / 8/7 / VISTA / XP, SERVER 2016/2012/2008/2003, 2000 / ME / 98, through Microsoft digital signature authentication, support USB to 3-wire and 9-wire serial port, with the product release To the end user.
Applicable scope: CH340G, CH340C, CH340B, CH340E, CH340T, CH340R, CH341A, CH341T, CH341H chips
Try to plug in your Chinese clone again. It should work just fine. The board should be visible in the Arduino IDE program and ready to use. We upload the blink sketch to the board to thest it and it works ( File->Examples->01. Basics->Blink )
2. Second Case. The Chinese clone might still not work after you installed the driver package in your PC (1. First case). This is because there is NO Bootloader installed on the Atmel 328 microcontroller ship. We need a working Arduino board (Can be Arduino Uno or Arduino Nano) and the Chinese clone of Arduino Nano,which we want to fix, to solve this problem.
Step 1. We make an ISP Programmer from working Arduino Uno board
- Connect the working Arduino board to your PC and open the Arduino IDE program.
- Go to Tools->Port->Serial ports list and make sure that the correct serial port is chosen.
- Go to Tools -> Board ->Arduino/Genuino Uno (in this case Arduino Uno, this is the Arduino board that is already working and used to fix chinese clone)
- Go to File -> Examples-> 11.ArduinoISP and click ArduinoISP sketch (a new sketch screen will open with the ISP code written in it)
- Verify then Upload (your rduino Uno board will start blinking for a bit, it means it is loading, wait until done uploading).
- ArduinoISP sketch turns the Arduino into a AVRISP using the following arduino pins: Pin 10 is used to reset the target microcontroller. By default, the hardware SPI pins MISO, MOSI and SCK pins are used to communicate with the target. On all Arduinos, these pins can be found on the ICSP/SPI header. On some Arduinos (Uno,…), pins MOSI, MISO and SCK are the same pins as digital pin 11, 12 and 13, respectively. That is why many tutorials instruct you to hook up the target to these pins. If you find this wiring more practical, have a define USE_OLD_STYLE_WIRING. This will work even even when not using an Uno. On an Uno this is not needed. Alternatively you can use any other digital pin by configuring software (‘BitBanged’) SPI and having appropriate defines for PIN_MOSI, PIN_MISO and PIN_SCK. IMPORTANT: When using an Arduino that is not 5V tolerant (Due, Zero, …) as the programmer, make sure to not expose any of the programmer’s pins to 5V. A simple way to accomplish this is to power the complete system (programmer and target) at 3V3. Put an LED (with resistor) on the following pins: 9: Heartbeat – shows the programmer is running; 8: Error – Lights up if something goes wrong (use red if that makes sense); 7: Programming – In communication with the slave.
- When upload completed unplug the working Arduino Uno board from your PC. It has the ISP Programmer code inside now. Let’s us connect working Arduino Uno board and Chinese clone without bootloader together and run a few commands again.
Step 2. Connecting the Wires
We connect the wires from the working Arduino board to the Chinese clone as follows.
Step 3. Burn the Bootloader
- Keep all the wires intact and unmoved in step 2, connect the working Arduino Uno board back to the PC with the USB.
- Go to Tools -> Port -> Serial ports list and make sure that the correct serial port is chosen.
- Go to Tools -> Board-> Arduino Nano (select the Chinese clone board that is not working – in this case it’s an Arduino Nano).
- Go to Tools -> Processor ->ATmega328 (this time we choose the non working Arduino Nano (Chinese clone), which has Atmel Mega 328 processor)
- Go to Tools -> Programmer -> Arduino as ISP.
- Go to Tools -> Burn Bootloader (this is it, after the LEDs stop flashing your board is ready to use !!!).
- Do all of the above steps in ORDER !!! Do not skip any steps. Always make sure that the correct serial port and correct board are chosen before uploading a sketch to avoid errors.