I am planing on making Arduino from scratch. I found many examples on internet, but they all need another Arduino for programming. How can I make Arduino with USB interface for programming and serial data transfer? Would I need something called FTDI? Basically I want same Arduino you can buy, just build it from separate parts.
There are two critical things that make an "Arduino". There is the hardware, and there is the bootloader.
The hardware is nothing special. It's just an MCU and the required minimal support hardware. What really makes it an Arduino is the bootloader which allows it to be programmed over the serial connection (via USB usually).
Without that bootloader the only way to program the MCU is over the hardware programming interface (typically ICSP for an AVR MCU), and for that you need some form of hardware programmer.
And of course that means the only way to put the bootloader onto the chip is to use a hardware programmer.
So you have two options:
- Program the bootloader into the chip using a hardware programmer (which you can make with an Arduino), or
- Buy an ATMega328P chip with the bootloader pre-programmed.
Once you have the bootloader installed then yes, you can program the chip over UART (through USB with a USB to UART adaptor such as an FT232).