diff --git a/fab.dcm b/fab.dcm
index 3de1cb64dba0b26278a7ca27eb18374ffebb277f..b38fbc5a59723cb471c4ec0ff1eb7f29412f669b 100644
--- a/fab.dcm
+++ b/fab.dcm
@@ -247,6 +247,12 @@ K resistor variable trimmer
 F https://www.ttelectronics.com/TTElectronics/media/ProductFiles/Trimmers/Datasheets/23.pdf
 $ENDCMP
 #
+$CMP Radio_ESP-WROOM-02D
+D Wi-Fi Module, ESP8266EX SoC, 32-bit, 802.11b/g/n, WPA/WPA2, 2.7-3.6V, SMD
+K RF Radio ESP Espressif
+F https://www.espressif.com/sites/default/files/documentation/esp-wroom-02u_esp-wroom-02d_datasheet_en.pdf
+$ENDCMP
+#
 $CMP Radio_Microchip_RN4871
 D Bluetooth Bluetooth v5.0 Transceiver Module 2.4GHz Integrated, Chip Surface Mount
 K Bluetooth Low Energy 4.2 Module
diff --git a/fab.lib b/fab.lib
index cd79b7d88772dcc915dd686412f2a26de4ac80f7..f33240056d2fa6982bdcb94f0900f8dea8905130 100644
--- a/fab.lib
+++ b/fab.lib
@@ -2900,6 +2900,40 @@ X 3 3 0 -150 50 U 50 50 1 1 P
 ENDDRAW
 ENDDEF
 #
+# Radio_ESP-WROOM-02D
+#
+DEF Radio_ESP-WROOM-02D U 0 20 Y Y 1 F N
+F0 "U" -300 550 50 H V C CNN
+F1 "Radio_ESP-WROOM-02D" 400 550 50 H V C CNN
+F2 "fab:ESP-WROOM-02D" 600 -550 50 H I C CNN
+F3 "" 50 1500 50 H I C CNN
+$FPLIST
+ ESP?WROOM?02*
+$ENDFPLIST
+DRAW
+S 400 500 -400 -500 0 1 10 f
+X VDD 1 0 600 100 D 50 50 1 1 W
+X IO4 10 500 200 100 L 50 50 1 1 B
+X RXD 11 -500 -100 100 R 50 50 1 1 B
+X TXD 12 -500 -200 100 R 50 50 1 1 B
+X GND 13 0 -600 100 U 50 50 1 1 P N
+X IO5 14 500 100 100 L 50 50 1 1 B
+X RST 15 -500 300 100 R 50 50 1 1 I
+X TOUT 16 -500 100 100 R 50 50 1 1 I
+X IO16 17 500 -400 100 L 50 50 1 1 B
+X GND 18 0 -600 100 U 50 50 1 1 P N
+X GND 19 0 -600 100 U 50 50 1 1 P N
+X EN 2 -500 400 100 R 50 50 1 1 I
+X IO14 3 500 -200 100 L 50 50 1 1 B
+X IO12 4 500 0 100 L 50 50 1 1 B
+X IO13 5 500 -100 100 L 50 50 1 1 B
+X IO15 6 500 -300 100 L 50 50 1 1 B
+X IO2 7 500 300 100 L 50 50 1 1 B
+X IO0 8 500 400 100 L 50 50 1 1 B
+X GND 9 0 -600 100 U 50 50 1 1 W
+ENDDRAW
+ENDDEF
+#
 # Radio_Microchip_RN4871
 #
 DEF Radio_Microchip_RN4871 U 0 40 Y Y 1 F N
diff --git a/fab.pretty/ESP-WROOM-02D.kicad_mod b/fab.pretty/ESP-WROOM-02D.kicad_mod
new file mode 100644
index 0000000000000000000000000000000000000000..5b415e3a2fbe489f0fc7391ff5d99fd1c5ce8a24
--- /dev/null
+++ b/fab.pretty/ESP-WROOM-02D.kicad_mod
@@ -0,0 +1,118 @@
+(module ESP-WROOM-02D (layer F.Cu) (tedit 5FF86293)
+  (descr http://espressif.com/sites/default/files/documentation/0c-esp-wroom-02_datasheet_en.pdf)
+  (tags "ESP WROOM-02 espressif esp8266ex")
+  (attr smd)
+  (fp_text reference REF** (at -10.17 5.13 90) (layer F.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_text value ESP-WROOM-02D (at 0 8.33) (layer F.Fab)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_line (start -14 -6.8) (end -14 -18.1) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 9 6.9) (end 9 -13.1) (layer F.Fab) (width 0.1))
+  (fp_line (start -9 6.9) (end 9 6.9) (layer F.Fab) (width 0.1))
+  (fp_line (start -9 -13.1) (end -9 -7.5) (layer F.Fab) (width 0.1))
+  (fp_line (start -9 -13.1) (end 9 -13.1) (layer F.Fab) (width 0.1))
+  (fp_line (start -9.41 7.15) (end -9.41 -6.55) (layer F.CrtYd) (width 0.05))
+  (fp_line (start -9.41 7.15) (end 9.41 7.15) (layer F.CrtYd) (width 0.05))
+  (fp_line (start 9.41 -6.55) (end 9.41 7.15) (layer F.CrtYd) (width 0.05))
+  (fp_line (start -14.25 -18.35) (end 14.25 -18.35) (layer F.CrtYd) (width 0.05))
+  (fp_line (start -9 -6.5) (end -9 6.9) (layer F.Fab) (width 0.1))
+  (fp_line (start -9 -7.5) (end -8.5 -7) (layer F.Fab) (width 0.1))
+  (fp_line (start -8.5 -7) (end -9 -6.5) (layer F.Fab) (width 0.1))
+  (fp_line (start -9 -6.8) (end -9 -13.1) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -6.8) (end -14 -6.8) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 9 -13.1) (end 9 -6.78) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -9 -13.1) (end 9 -13.1) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -6.8) (end 14 -18.1) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -18.1) (end -14 -18.1) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -14.25 -18.35) (end -14.25 -6.55) (layer F.CrtYd) (width 0.05))
+  (fp_line (start 14.25 -18.35) (end 14.25 -6.55) (layer F.CrtYd) (width 0.05))
+  (fp_line (start -14.25 -6.55) (end -9.41 -6.55) (layer F.CrtYd) (width 0.05))
+  (fp_line (start 9.41 -6.55) (end 14.25 -6.55) (layer F.CrtYd) (width 0.05))
+  (fp_line (start -12 -18.1) (end -14 -16.485) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -10 -18.1) (end -14 -14.87) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -8 -18.1) (end -14 -13.255) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -6 -18.1) (end -14 -11.64) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -4 -18.1) (end -14 -10.025) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -2 -18.1) (end -14 -8.41) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 0 -18.1) (end -14 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 2 -18.1) (end -12 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 4 -18.1) (end -10 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start -8 -6.795) (end 6 -18.1) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 8 -18.1) (end -6 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 10 -18.1) (end -4 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 12 -18.1) (end -2 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -18.1) (end 0 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -16.485) (end 2 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -14.87) (end 4 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -13.255) (end 6 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -11.64) (end 8 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -10.025) (end 10 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 14 -8.41) (end 12 -6.795) (layer Dwgs.User) (width 0.1))
+  (fp_line (start 9.2 -10.7) (end 13.8 -10.7) (layer Cmts.User) (width 0.1))
+  (fp_line (start 13.8 -10.7) (end 13.6 -10.9) (layer Cmts.User) (width 0.1))
+  (fp_line (start 13.8 -10.7) (end 13.6 -10.5) (layer Cmts.User) (width 0.1))
+  (fp_line (start 9.2 -10.7) (end 9.4 -10.9) (layer Cmts.User) (width 0.1))
+  (fp_line (start 9.2 -10.7) (end 9.4 -10.5) (layer Cmts.User) (width 0.1))
+  (fp_line (start -13.8 -10.7) (end -13.6 -10.9) (layer Cmts.User) (width 0.1))
+  (fp_line (start -13.8 -10.7) (end -13.6 -10.5) (layer Cmts.User) (width 0.1))
+  (fp_line (start -9.2 -10.7) (end -9.4 -10.5) (layer Cmts.User) (width 0.1))
+  (fp_line (start -13.8 -10.7) (end -9.2 -10.7) (layer Cmts.User) (width 0.1))
+  (fp_line (start -9.2 -10.7) (end -9.4 -10.9) (layer Cmts.User) (width 0.1))
+  (fp_line (start 8.3 -13.3) (end 8.1 -13.5) (layer Cmts.User) (width 0.1))
+  (fp_line (start 8.3 -13.3) (end 8.5 -13.5) (layer Cmts.User) (width 0.1))
+  (fp_line (start 8.3 -17.9) (end 8.5 -17.7) (layer Cmts.User) (width 0.1))
+  (fp_line (start 8.3 -13.3) (end 8.3 -17.9) (layer Cmts.User) (width 0.1))
+  (fp_line (start 8.3 -17.9) (end 8.1 -17.7) (layer Cmts.User) (width 0.1))
+  (fp_line (start -9.12 6.8) (end -9.12 7.02) (layer F.SilkS) (width 0.1))
+  (fp_line (start -9.12 7.02) (end -8.1 7.02) (layer F.SilkS) (width 0.1))
+  (fp_line (start 9.12 6.7) (end 9.12 7) (layer F.SilkS) (width 0.1))
+  (fp_line (start 8 7.02) (end 9.12 7.02) (layer F.SilkS) (width 0.1))
+  (fp_line (start -9.12 -13.22) (end 9.12 -13.22) (layer F.SilkS) (width 0.1))
+  (fp_line (start 9.12 -13.22) (end 9.12 -6.7) (layer F.SilkS) (width 0.1))
+  (fp_line (start -9.12 -13.22) (end -9.12 -6.9) (layer F.SilkS) (width 0.1))
+  (fp_line (start -9.12 -6.9) (end -11 -6.9) (layer F.SilkS) (width 0.1))
+  (fp_text user "5 mm" (at 7.8 -15.9 90) (layer Cmts.User)
+    (effects (font (size 0.5 0.5) (thickness 0.1)))
+  )
+  (fp_text user "5 mm" (at -11.2 -11.2) (layer Cmts.User)
+    (effects (font (size 0.5 0.5) (thickness 0.1)))
+  )
+  (fp_text user "5 mm" (at 11.8 -11.2) (layer Cmts.User)
+    (effects (font (size 0.5 0.5) (thickness 0.1)))
+  )
+  (fp_text user Antenna (at 0 -10) (layer Cmts.User)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_text user "KEEP-OUT ZONE" (at 0 -16) (layer Cmts.User)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_text user %R (at 0 0) (layer F.Fab)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (pad 18 smd rect (at 8.75 -6) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 17 smd rect (at 8.75 -4.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 16 smd rect (at 8.75 -3) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 15 smd rect (at 8.75 -1.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 14 smd rect (at 8.75 0) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 13 smd rect (at 8.75 1.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 12 smd rect (at 8.75 3) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 11 smd rect (at 8.75 4.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 10 smd rect (at 8.75 6) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 9 smd rect (at -8.75 6) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 8 smd rect (at -8.75 4.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 7 smd rect (at -8.75 3) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 6 smd rect (at -8.75 1.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 5 smd rect (at -8.75 0) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 4 smd rect (at -8.75 -1.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 3 smd rect (at -8.75 -3) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 2 smd rect (at -8.75 -4.5) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 1 smd rect (at -8.75 -6) (size 1.5 0.9) (layers F.Cu F.Paste F.Mask))
+  (pad 19 smd rect (at 1.12 0.58) (size 4.3 4.3) (layers F.Cu F.Paste F.Mask))
+  (model ${KISYS3DMOD}/RF_Module.3dshapes/ESP-WROOM-02.wrl
+    (at (xyz 0 0 0))
+    (scale (xyz 1 1 1))
+    (rotate (xyz 0 0 0))
+  )
+)