MiniMegaZero24 (megaAVR-0)

10 months ago

Profile:megaAVR-0 ATmega4808 with NRF24L01+

Open source license: Public Domain

Project source: Cloned from MiniMegaZero24

  • 1.1k
  • 0
  • 1




  • Breadboard friendly
  • A little more minimal circuit than other currently available devboards/designs
  • Designed for battery operation running at 8MHz at 3.3V
  • MCP1700 or MCP1702 voltage regulators with very low quiescent current
  • Draws about 5uA current when ATmega and NRF24L01+ are sleeping and GPIO pins 2 to 25 set to INPUT_PULLUP (1608 draws slightly less than 4808)
  • Mostly 0805 footprints for easy soldering
  • Should be compatible with megaAVR-0 ATmega808, 1608, 3208 and 4808 (tested with 1608 and 4808)
  • The MCU used in this design is the same as on the AVR-IOT WG and similar to the one on the Arduino Nano Every (basically it only has less pins than the 4809)
  • NRF24L01+ SMD module (optional)
  • Use FTDI programmer (e.g. a cheap FTDI Basic 3.3V from Sparkfun) for flashing sketches and serial monitor in Arduino IDE, like on Arduino Pro Mini

WARNING: Do not connect a 5V FTDI board to the circuit when a NRF24L01+ is present in the circuit. Otherwise you may fry your NRF24L01+. Only use 3.3V boards

A cheap P-Channel MOSFET with low RDS(on) is used for reverse polarity protection, because unlike diodes it does not have voltage drop. MOSFET: AO3401A by Alpha & Omega Semiconductor Inc.

See this video about how this reverse polarity protection works:

Another OSHW board with the same MCU (but without FTDI connector) can be found here:

Flashing the MegaCoreX bootloader through UPDI

Download the bootloader hex file from here:

Download pyupdi from here:

Flash the bootloader using your FTDI board connected to the UPDI pin like this (see schematic below):

python.exe -d mega4808 -c COM3 -f Optiboot_mega0_UART0_DEF_115200_A7.hex  -v -b 115200

Set BOOTEND fuse like this:

python.exe -fs 8:0x02 -c COM3 -d mega4808

Set SYSCFG fuse like this:

python.exe -fs 5:0xc9 -c COM3 -d mega4808

Set OSCFG fuse like this (I'm not sure if this was necessary)

python.exe -fs 2:0x01 -c COM3 -d mega4808

In the above 4 lines, replace -d mega4808 with -d mega1608 if you're flashing an ATmega1608 with the bootloader.

Add this URL to your Additional board manager URLs in Arduino IDE and install the MegaCoreX boards in the Boards manager:

Set the following board options in Arduino IDE:

  • Board: ATmega4808
  • Clock: Internal 8MHz
  • BOD: BOD 2.6V
  • Pinout: 32 pin standard
  • Reset pin: Reset
  • Bootloader: Optiboot (UART0 default pins)

Uploading Sketches and using NRF24L01+

Use the FTDI connector to upload sketches and use the serial monitor, like you would use it on a Arduino Pro Mini. After flashing the bootloader the UPDI pin isn't necessary anymore.

For the NRF24L01+ use the RF24 library by TMRh20:

Initialize it like this:

RF24 radio(9, 7);

The IRQ pin of the NRF24L01+ is connected to GPIO pin 10 on the ATmega.

Sources/more information

Screen Shot 12-16-20 at 06.40 PM.pngR0039351.jpgR0039368.jpgR0039331.jpg



Sheet_1 copy

Open in editor

PCB_2020-11-24_13-48-47 copy

Open in editor


ID Name Designator Footprint Quantity
1 1u C1,C2 C0805 2
2 10uF C3 CASE-A_3216 1
3 100n C4 C0805 1
4 100n C5,C6 C0805 2
5 100n C7 C0805 1
6 500mA/16V F1 F1210 1
7 CONN_06LOCK J1 1X06_LOCK 1
8 HDR-M-2.54_1x9 J5,J6 HDR-M-2.54_1X9 2
9 HDR-M-2.54_1x2 J7,J8 HDR-M-2.54_1X2 2
10 3x6x2.5mm KEY1 KEY-3.0*6.0 1
11 470Ω L1 L0603 1
12 AO3401A Q1 SOT-23_L2.9-W1.3-P0.95-LS2.4-BR 1
13 100k R1 R0805 1
14 1k R3 R0805 1
15 MCP1700T-3302E/TT U1 SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BR 1
16 nRF24L01+ U2 NRF24L01+ SMD 1
17 ATMEGA4808-AFR U3 TQFP-32_7X7X05P 1


Project Members

Project Attachments


周一至周五 9:00~18:00
  • 0755 - 2382 4495
  • 153 6159 2675


周一至周五 9:00~18:00
  • 立创EDA微信号


  • QQ交流群


  • 立创EDA公众号