Custom Arduino-based schematic review

Hello! I have been playing around with the arduino for a couple years, and I want to think I have a basic understanding of electronics. Recently I have started designing a more complex project that I want to build in the future. I have made a schematic for it, but I have several questions.

This project is going to be a general purpose wifi-enabled controller for RGB led strips, relays, and maybe more things in the future.

The goal is to have a custom PCB that contains everything (except the wifi module). I have attached the schematic that I made.

The arduino part is basically a copy of the Arduino Nano schematic with the USB UART converter and the atmega 328p chip. I have also added a PWM controller to extend the pwm capacity of the mcu, and a 3x2 socket for an ESP8266 module.

As you can see on the PDF, I am still a noob when it comes to more advanced electronics and schematic design.

So these are my questions:

  1. Is it okay to build an arduino from off-the-shelf parts? Is there anything wrong with my implementation?

  2. Can I use two SPI devices at the same time as shown on the schematic? As far as I can tell there is a 'chip select' pin on the wifi module (CH_PD), but I haven't found anything similar on the pwm controller. The documentation says that the 'BLANK' pin can be used to blank all the outputs, so currently I am using that as the chip select. Is this going to work?

  3. I want to drive RGB led trips and relays with the mosfets. Is the IRLB8721PBF a good choice for that? Of course I won't output pulse-width modulated signals to relays, only 0 or MAX values to turn it on or off.

  4. Do I actually need the 10k resistors on the mosfets? I've seen many led strip diagrams that include them and some that don't. On one particular tutorial I saw 10k, but I don't know if I need it, or if it's the right value for the given mosfets.

  5. Are there any major design flaws in my schematic?

  6. If I made a PCB from this, could I burn an arduino bootloader on it with the on-board usb? I don't know if I need some custom firmware on the FT232RL. Will I be able to use the Arduino IDE to program my device?

These are the exact part numbers and values used in the schematic:

Code Part ID Type
IC1 ATmega328P-PN Microcontroller
IC2 FT232RL USB converter
J1 10118193-0001LF USB B micro connector
Y1 16.00M-HC49-S Crystal 16 MHz
C1 C0805C220J5GACAUTO Capacitor 22p
C2 C0805C220J5GACAUTO Capacitor 22p
F1 0ZCJ0050AF2E Fuse
D1 SS1P3L-M3/84A Diode
C3 C0805C104M3RACTU Capacitor 100n
C4 T491A475K016AT Capacitor 4.7u
R1 R2 R4 RC0805FR-071K Resistor 1k
D2 D4 KP-2012LSGC LED green
D3 KP-2012LSURCK LED red
C5 C0805C104M3RACTU Capacitor 100n
C6 T491A475K016AT Capacitor 4.7u
C7 C8 C9 C0805C105K8RACAUTO Capacitor 1u
R3 SMD0805-2K-1% Resistor 2k
IC3 TLC5940PWP PWM driver
Q1-12 IRLB8721PBF N-MOSFET
IC4 LD1117S50T Regulator 5V
R5-16 SMD1206-10K Resistor 10k

(all the part numbers are from tme.eu, but some of them can be found on digikey or mouser)

Keep in mind that I am still a beginner and this entire project might be completely stupid.

Sheet1.pdf (360 KB)

On MOSFETS connected to an OUTPUT pin of a microcontroller the 10K pull-up resistors on the MOSFET gates are there to hold the gate LOW while the microcontroller starts up. Pins on the microcontroller are inputs, by default, until code sets them to OUTPUT. Without the resistor, while inputs, the pins connected to the gates "float" so the MOSFET can, randomly, be on or off while the microcontroller resets. If the output pins are at a known state while the system starts up the resistors may not be necessary. Analysis will tell.