diff --git a/code/esp8266/otastaImg/DNSServer.cpp b/code/esp8266/paracity_gallery_v041/DNSServer.cpp
similarity index 100%
rename from code/esp8266/otastaImg/DNSServer.cpp
rename to code/esp8266/paracity_gallery_v041/DNSServer.cpp
diff --git a/code/esp8266/otastaImg/DNSServer.h b/code/esp8266/paracity_gallery_v041/DNSServer.h
similarity index 100%
rename from code/esp8266/otastaImg/DNSServer.h
rename to code/esp8266/paracity_gallery_v041/DNSServer.h
diff --git a/code/esp8266/otastaImg/data/index.html b/code/esp8266/paracity_gallery_v041/data/index.html
similarity index 100%
rename from code/esp8266/otastaImg/data/index.html
rename to code/esp8266/paracity_gallery_v041/data/index.html
diff --git a/code/esp8266/otastaImg/data/pic.jpg b/code/esp8266/paracity_gallery_v041/data/pic.jpg
similarity index 100%
rename from code/esp8266/otastaImg/data/pic.jpg
rename to code/esp8266/paracity_gallery_v041/data/pic.jpg
diff --git a/code/esp8266/otastaImg/otastaImg.ino b/code/esp8266/paracity_gallery_v041/paracity_gallery_v041.ino
similarity index 100%
rename from code/esp8266/otastaImg/otastaImg.ino
rename to code/esp8266/paracity_gallery_v041/paracity_gallery_v041.ino
diff --git a/electronics/esp-wireless-charging-pcb/.DS_Store b/electronics/esp-wireless-charging-pcb/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/electronics/esp-wireless-charging-pcb/.DS_Store differ
diff --git a/works/Dennis de Bel & Anton Jehle/.DS_Store b/works/Dennis de Bel & Anton Jehle/.DS_Store
index 5008ddf..7c5c85f 100644
Binary files a/works/Dennis de Bel & Anton Jehle/.DS_Store and b/works/Dennis de Bel & Anton Jehle/.DS_Store differ
diff --git a/works/Dennis de Bel & Anton Jehle/adaptor-lasercut-template-snap.svg b/works/Dennis de Bel & Anton Jehle/adaptor-lasercut-template-snap.svg
new file mode 100644
index 0000000..087733b
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/adaptor-lasercut-template-snap.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
diff --git a/works/Dennis de Bel & Anton Jehle/adaptor-lasercut-template-snap.svg.zip b/works/Dennis de Bel & Anton Jehle/adaptor-lasercut-template-snap.svg.zip
deleted file mode 100644
index 76adc2f..0000000
Binary files a/works/Dennis de Bel & Anton Jehle/adaptor-lasercut-template-snap.svg.zip and /dev/null differ
diff --git a/works/Dennis de Bel & Anton Jehle/index.html b/works/Dennis de Bel & Anton Jehle/index.html
index 92b5179..5a66cc2 100644
--- a/works/Dennis de Bel & Anton Jehle/index.html
+++ b/works/Dennis de Bel & Anton Jehle/index.html
@@ -2,7 +2,7 @@
-
+
- ######
- # # ## ##### ## #### # ##### # #
- # # # # # # # # # # # # # #
- ###### # # # # # # # # # #
- # ###### ##### ###### # # # #
- # # # # # # # # # # # #
- # # # # # # # #### # # #
-
- #####
- # # ## # # ###### ##### # #
- # # # # # # # # # #
- # #### # # # # ##### # # #
- # # ###### # # # ##### #
- # # # # # # # # # #
- ##### # # ###### ###### ###### # # #
-
-
- ### # #
- # # # # # # ##
- # # # # # # # #
- # # # # # # #
- # # ### # # ####### #
- # # ### # # # #
- ## ### ### # #####
-
+
+,-.----.
+\ / \ ___
+| : \ ,--, ,--.'|_
+| | .\ : __ ,-. ,--.'| | | :,'
+. : |: | ,' ,'/ /| | |, : : ' :
+| | \ : ,--.--. ' | |' | ,--.--. ,---. `--'_ .;__,' / .--,
+| : . // \ | | ,'/ \ / \ ,' ,'| | | | /_ ./|
+; | |`-'.--. .-. |' : / .--. .-. | / / ' ' | | :__,'| : , ' , ' :
+| | ; \__\/: . .| | ' \__\/: . .. ' / | | : ' : |__/___/ \: |
+: ' | ," .--.; |; : | ," .--.; |' ; :__ ' : |__ | | '.'|. \ ' |
+: : : / / ,. || , ; / / ,. |' | '.'|| | '.'|; : ; \ ; :
+| | : ; : .' \---' ; : .' \ : :; : ;| , / \ \ ;
+`---'.| | , .-./ | , .-./\ \ / | , / ---`-' : \ \
+ `---` `--`---' `--`---' `----' ---`-' \ ' ;
+ ,----.. ,--, ,--, `--`
+ / / \ ,--.'| ,--.'|
+| : : | | : | | : __ ,-.
+. | ;. / : : ' : : ' ,' ,'/ /|
+. ; /--` ,--.--. | ' | | ' | ,---. ' | |' | .--,
+; | ; __ / \ ' | | ' | | / \ | | ,' /_ ./|
+| : |.' .'.--. .-. || | : | | : / / |' : /, ' , ' :
+. | '_.' : \__\/: . .' : |__' : |__ . ' / || | '/___/ \: |
+' ; : \ | ," .--.; || | '.'| | '.'|' ; /|; : | . \ ' |
+' | '/ .'/ / ,. |; : ; : ;' | / || , ; \ ; :
+| : / ; : .' \ , /| , / | : | ---' \ \ ;
+ \ \ .' | , .-./---`-' ---`-' \ \ / : \ \
+ `---` `--`---' ,--, `----' \ ' ;
+ ,----.. ,--.'| ,---, `--`
+ / / \ ,--, | : ,`--.' |
+ / . : ,---.'| : ' / / :
+ .---. . / ;. \; : | | ;: |.' '
+ /. ./| . ; / ` ;| | : _' |`----': |
+ .-' . ' | ; | ; \ ; |: : |.' | ' ' ;
+/___/ \: | | : | ; | '| ' ' ; : | | |
+. \ ' . . | ' ' ' :\ \ .'. | ' : ;
+ \ \ ' ' ; \; / | `---`: | ' | | '
+ \ \ ___\ \ ', / ' ; | ' : |
+ \ \ / .\; : / | : ; ; |.'
+ '---"\ ; |\ \ .' ' ,/ '---'
+ `--" `---` '--'
+
+
+
+
+ .
+ .
+ . ;.
+ .;
+ ;;.
+ ;.;;
+ ;;;;.
+ ;;;;;
+ ;;;;;
+ ;;;;;
+ ;;;;;
+ ;;;;;
+ ..;;;;;..
+ ':::::'
+ ':`
+
+
+
Download
-
\ No newline at end of file
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/.DS_Store b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/.DS_Store
new file mode 100644
index 0000000..599b91d
Binary files /dev/null and b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/.DS_Store differ
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/3d_print_chargingpad_for_molding_cover/3d-printable-vacuumform-mold.stl b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/3d_print_chargingpad_for_molding_cover/3d-printable-vacuumform-mold.stl
new file mode 100644
index 0000000..0b25170
Binary files /dev/null and b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/3d_print_chargingpad_for_molding_cover/3d-printable-vacuumform-mold.stl differ
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/README.md b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/README.md
new file mode 100644
index 0000000..ad9d27c
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/README.md
@@ -0,0 +1,12 @@
+# paracity gallery: electronics
+
+
+
+![picture](https://git.vvvvvvaria.org/then/opencoil-paracity/raw/branch/master/electronics/esp-wireless-charging-pcb/pcb-ass.jpg)
+
+### Bill of Materials
+
+* PCB: Send the gerbers from this repo to your fab of choice.
+* ESP12F: Widely available.
+* AM1117 3.3v Regulator: Widely available.
+* QI compatible wireless charging coil delivering 5v and > [500 mA](https://docs.ai-thinker.com/_media/esp8266/docs/esp-12f_product_specification_en.pdf): For example [this](https://aliexpress.com/item/4001154059743.html), search keywords: "pcba receiver module qi".
\ No newline at end of file
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Cu.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Cu.gbr
new file mode 100644
index 0000000..4eaacc0
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Cu.gbr
@@ -0,0 +1,30 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Copper,L2,Bot*%
+%TF.FilePolarity,Positive*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+%TA.AperFunction,ComponentPad*%
+%ADD10R,1.700000X1.700000*%
+%TD*%
+%TA.AperFunction,ComponentPad*%
+%ADD11O,1.700000X1.700000*%
+%TD*%
+G04 APERTURE END LIST*
+D10*
+%TO.P,J1,1*%
+%TO.N,Net-(J1-Pad1)*%
+X181610000Y-64770000D03*
+D11*
+%TO.P,J1,2*%
+%TO.N,Net-(J1-Pad2)*%
+X181610000Y-62230000D03*
+%TD*%
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Mask.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Mask.gbr
new file mode 100644
index 0000000..3f045ed
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Mask.gbr
@@ -0,0 +1,23 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Soldermask,Bot*%
+%TF.FilePolarity,Negative*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+%ADD10R,1.800000X1.800000*%
+%ADD11O,1.800000X1.800000*%
+G04 APERTURE END LIST*
+D10*
+%TO.C,J1*%
+X181610000Y-64770000D03*
+D11*
+X181610000Y-62230000D03*
+%TD*%
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Paste.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Paste.gbr
new file mode 100644
index 0000000..7dcef25
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_Paste.gbr
@@ -0,0 +1,15 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Paste,Bot*%
+%TF.FilePolarity,Positive*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+G04 APERTURE END LIST*
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_SilkS.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_SilkS.gbr
new file mode 100644
index 0000000..68a493c
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-B_SilkS.gbr
@@ -0,0 +1,15 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Legend,Bot*%
+%TF.FilePolarity,Positive*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+G04 APERTURE END LIST*
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-Edge_Cuts.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-Edge_Cuts.gbr
new file mode 100644
index 0000000..8318d5f
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-Edge_Cuts.gbr
@@ -0,0 +1,140 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Profile,NP*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+%TA.AperFunction,Profile*%
+%ADD10C,0.100000*%
+%TD*%
+G04 APERTURE END LIST*
+D10*
+%TO.C,Ref\u002A\u002A*%
+X186783000Y-83404300D02*
+X186783000Y-83404300D01*
+X186783000Y-59032000D02*
+X186783000Y-83404300D01*
+X178967000Y-59032000D02*
+X186783000Y-59032000D01*
+X178966000Y-71566500D02*
+X178967000Y-59032000D01*
+X182640000Y-71566500D02*
+X178966000Y-71566500D01*
+X182640000Y-82882100D02*
+X182640000Y-71566500D01*
+X182626000Y-83041200D02*
+X182640000Y-82882100D01*
+X182583000Y-83191900D02*
+X182626000Y-83041200D01*
+X182519000Y-83333800D02*
+X182583000Y-83191900D01*
+X182433000Y-83466900D02*
+X182519000Y-83333800D01*
+X182222000Y-83705200D02*
+X182433000Y-83466900D01*
+X181977000Y-83904800D02*
+X182222000Y-83705200D01*
+X181734000Y-84063600D02*
+X181977000Y-83904800D01*
+X181522000Y-84179600D02*
+X181734000Y-84063600D01*
+X181315000Y-84274700D02*
+X181522000Y-84179600D01*
+X114818300Y-84388700D02*
+X181315000Y-84274700D01*
+X114521000Y-84373100D02*
+X114818300Y-84388700D01*
+X114249900Y-84328900D02*
+X114521000Y-84373100D01*
+X114004100Y-84260200D02*
+X114249900Y-84328900D01*
+X113782600Y-84171200D02*
+X114004100Y-84260200D01*
+X113584300Y-84065800D02*
+X113782600Y-84171200D01*
+X113408400Y-83948200D02*
+X113584300Y-84065800D01*
+X113254000Y-83822300D02*
+X113408400Y-83948200D01*
+X113119800Y-83692400D02*
+X113254000Y-83822300D01*
+X112908800Y-83436700D02*
+X113119800Y-83692400D01*
+X112767700Y-83213700D02*
+X112908800Y-83436700D01*
+X112664100Y-82996100D02*
+X112767700Y-83213700D01*
+X112626300Y-74846500D02*
+X112664100Y-82996100D01*
+X112580400Y-64822400D02*
+X112626300Y-74846500D01*
+X112386100Y-46760000D02*
+X112580400Y-64822400D01*
+X93653500Y-46760000D02*
+X112386100Y-46760000D01*
+X93653500Y-72435500D02*
+X93653500Y-46760000D01*
+X93653500Y-72785100D02*
+X93653500Y-72435500D01*
+X93653500Y-85900300D02*
+X93653500Y-72785100D01*
+X93671500Y-86246900D02*
+X93653500Y-85900300D01*
+X93722200Y-86549000D02*
+X93671500Y-86246900D01*
+X93801200Y-86809600D02*
+X93722200Y-86549000D01*
+X93903500Y-87031800D02*
+X93801200Y-86809600D01*
+X94024700Y-87218600D02*
+X93903500Y-87031800D01*
+X94159900Y-87373100D02*
+X94024700Y-87218600D01*
+X94304500Y-87498400D02*
+X94159900Y-87373100D01*
+X94453800Y-87597500D02*
+X94304500Y-87498400D01*
+X94603100Y-87673500D02*
+X94453800Y-87597500D01*
+X94747700Y-87729500D02*
+X94603100Y-87673500D01*
+X95004100Y-87793500D02*
+X94747700Y-87729500D01*
+X95185400Y-87813900D02*
+X95004100Y-87793500D01*
+X95254200Y-87815200D02*
+X95185400Y-87813900D01*
+X184850000Y-87408500D02*
+X95254200Y-87815200D01*
+X185135000Y-87391600D02*
+X184850000Y-87408500D01*
+X185393000Y-87343700D02*
+X185135000Y-87391600D01*
+X185624000Y-87269300D02*
+X185393000Y-87343700D01*
+X185828000Y-87172800D02*
+X185624000Y-87269300D01*
+X186009000Y-87058500D02*
+X185828000Y-87172800D01*
+X186166000Y-86931200D02*
+X186009000Y-87058500D01*
+X186301000Y-86794800D02*
+X186166000Y-86931200D01*
+X186418000Y-86654000D02*
+X186301000Y-86794800D01*
+X186594000Y-86377100D02*
+X186418000Y-86654000D01*
+X186706000Y-86135400D02*
+X186594000Y-86377100D01*
+X186783000Y-85899600D02*
+X186706000Y-86135400D01*
+X186783000Y-83404300D02*
+X186783000Y-85899600D01*
+%TD*%
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Cu.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Cu.gbr
new file mode 100644
index 0000000..f5577e8
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Cu.gbr
@@ -0,0 +1,196 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Copper,L1,Top*%
+%TF.FilePolarity,Positive*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+%TA.AperFunction,ComponentPad*%
+%ADD10R,1.700000X1.700000*%
+%TD*%
+%TA.AperFunction,ComponentPad*%
+%ADD11O,1.700000X1.700000*%
+%TD*%
+%TA.AperFunction,SMDPad,CuDef*%
+%ADD12R,2.500000X1.000000*%
+%TD*%
+%TA.AperFunction,SMDPad,CuDef*%
+%ADD13R,1.000000X1.800000*%
+%TD*%
+%TA.AperFunction,SMDPad,CuDef*%
+%ADD14R,2.000000X3.800000*%
+%TD*%
+%TA.AperFunction,SMDPad,CuDef*%
+%ADD15R,2.000000X1.500000*%
+%TD*%
+%TA.AperFunction,Conductor*%
+%ADD16C,0.250000*%
+%TD*%
+G04 APERTURE END LIST*
+D10*
+%TO.P,J1,1*%
+%TO.N,Net-(J1-Pad1)*%
+X181610000Y-64770000D03*
+D11*
+%TO.P,J1,2*%
+%TO.N,Net-(J1-Pad2)*%
+X181610000Y-62230000D03*
+%TD*%
+D12*
+%TO.P,U1,1*%
+%TO.N,Net-(U1-Pad1)*%
+X95270000Y-56190000D03*
+%TO.P,U1,2*%
+%TO.N,Net-(U1-Pad2)*%
+X95270000Y-58190000D03*
+%TO.P,U1,3*%
+%TO.N,Net-(U1-Pad3)*%
+X95270000Y-60190000D03*
+%TO.P,U1,4*%
+%TO.N,Net-(U1-Pad4)*%
+X95270000Y-62190000D03*
+%TO.P,U1,5*%
+%TO.N,Net-(U1-Pad5)*%
+X95270000Y-64190000D03*
+%TO.P,U1,6*%
+%TO.N,Net-(U1-Pad6)*%
+X95270000Y-66190000D03*
+%TO.P,U1,7*%
+%TO.N,Net-(U1-Pad7)*%
+X95270000Y-68190000D03*
+%TO.P,U1,8*%
+%TO.N,Net-(U1-Pad3)*%
+X95270000Y-70190000D03*
+D13*
+%TO.P,U1,9*%
+%TO.N,Net-(U1-Pad9)*%
+X97870000Y-71690000D03*
+%TO.P,U1,10*%
+%TO.N,Net-(U1-Pad10)*%
+X99870000Y-71690000D03*
+%TO.P,U1,11*%
+%TO.N,Net-(U1-Pad11)*%
+X101870000Y-71690000D03*
+%TO.P,U1,12*%
+%TO.N,Net-(U1-Pad12)*%
+X103870000Y-71690000D03*
+%TO.P,U1,13*%
+%TO.N,Net-(U1-Pad13)*%
+X105870000Y-71690000D03*
+%TO.P,U1,14*%
+%TO.N,Net-(U1-Pad14)*%
+X107870000Y-71690000D03*
+D12*
+%TO.P,U1,15*%
+%TO.N,Net-(J1-Pad2)*%
+X110470000Y-70190000D03*
+%TO.P,U1,16*%
+X110470000Y-68190000D03*
+%TO.P,U1,17*%
+%TO.N,Net-(U1-Pad17)*%
+X110470000Y-66190000D03*
+%TO.P,U1,18*%
+%TO.N,Net-(U1-Pad18)*%
+X110470000Y-64190000D03*
+%TO.P,U1,19*%
+%TO.N,Net-(U1-Pad19)*%
+X110470000Y-62190000D03*
+%TO.P,U1,20*%
+%TO.N,Net-(U1-Pad20)*%
+X110470000Y-60190000D03*
+%TO.P,U1,21*%
+%TO.N,Net-(U1-Pad21)*%
+X110470000Y-58190000D03*
+%TO.P,U1,22*%
+%TO.N,Net-(U1-Pad22)*%
+X110470000Y-56190000D03*
+%TD*%
+D14*
+%TO.P,U2,2*%
+%TO.N,Net-(U1-Pad3)*%
+X106020000Y-80010000D03*
+D15*
+X99720000Y-80010000D03*
+%TO.P,U2,3*%
+%TO.N,Net-(J1-Pad1)*%
+X99720000Y-82310000D03*
+%TO.P,U2,1*%
+%TO.N,Net-(J1-Pad2)*%
+X99720000Y-77710000D03*
+%TD*%
+D16*
+%TO.N,Net-(J1-Pad1)*%
+X180434999Y-63594999D02*
+X181610000Y-64770000D01*
+X180340000Y-59690000D02*
+X180434999Y-63594999D01*
+X181610000Y-59690000D02*
+X180340000Y-59690000D01*
+X186407990Y-84102010D02*
+X186407990Y-63851580D01*
+X183611409Y-61054999D02*
+X181610000Y-59690000D01*
+X186407990Y-63851580D02*
+X183611409Y-61054999D01*
+X184150000Y-86360000D02*
+X186407990Y-84102010D01*
+X102870000Y-86360000D02*
+X184150000Y-86360000D01*
+X99720000Y-83210000D02*
+X102870000Y-86360000D01*
+X99720000Y-82310000D02*
+X99720000Y-83210000D01*
+%TO.N,Net-(J1-Pad2)*%
+X109220000Y-72390000D02*
+X110470000Y-71140000D01*
+X110470000Y-71140000D02*
+X110470000Y-70190000D01*
+X110470000Y-68190000D02*
+X110470000Y-70190000D01*
+X99720000Y-77710000D02*
+X99720000Y-75540000D01*
+X99720000Y-75540000D02*
+X101600000Y-73660000D01*
+X101600000Y-73660000D02*
+X109220000Y-73660000D01*
+X109220000Y-73660000D02*
+X109220000Y-72390000D01*
+X109220000Y-83820000D02*
+X109220000Y-73660000D01*
+X110490000Y-85090000D02*
+X109220000Y-83820000D01*
+X182880000Y-85090000D02*
+X110490000Y-85090000D01*
+X184150000Y-83820000D02*
+X182880000Y-85090000D01*
+X184150000Y-63500000D02*
+X184150000Y-83820000D01*
+X182880000Y-62230000D02*
+X184150000Y-63500000D01*
+X181610000Y-62230000D02*
+X182880000Y-62230000D01*
+%TO.N,Net-(U1-Pad3)*%
+X96770000Y-60190000D02*
+X99060000Y-62480000D01*
+X95270000Y-60190000D02*
+X96770000Y-60190000D01*
+X99060000Y-67900000D02*
+X96770000Y-70190000D01*
+X96770000Y-70190000D02*
+X95270000Y-70190000D01*
+X99060000Y-62480000D02*
+X99060000Y-67900000D01*
+X99720000Y-80010000D02*
+X97790000Y-80010000D01*
+X95270000Y-77490000D02*
+X95270000Y-70190000D01*
+X97790000Y-80010000D02*
+X95270000Y-77490000D01*
+%TD*%
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Mask.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Mask.gbr
new file mode 100644
index 0000000..229a77c
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Mask.gbr
@@ -0,0 +1,62 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Soldermask,Top*%
+%TF.FilePolarity,Negative*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+%ADD10R,1.800000X1.800000*%
+%ADD11O,1.800000X1.800000*%
+%ADD12R,2.600000X1.100000*%
+%ADD13R,1.100000X1.900000*%
+%ADD14R,2.100000X3.900000*%
+%ADD15R,2.100000X1.600000*%
+G04 APERTURE END LIST*
+D10*
+%TO.C,J1*%
+X181610000Y-64770000D03*
+D11*
+X181610000Y-62230000D03*
+%TD*%
+D12*
+%TO.C,U1*%
+X95270000Y-56190000D03*
+X95270000Y-58190000D03*
+X95270000Y-60190000D03*
+X95270000Y-62190000D03*
+X95270000Y-64190000D03*
+X95270000Y-66190000D03*
+X95270000Y-68190000D03*
+X95270000Y-70190000D03*
+D13*
+X97870000Y-71690000D03*
+X99870000Y-71690000D03*
+X101870000Y-71690000D03*
+X103870000Y-71690000D03*
+X105870000Y-71690000D03*
+X107870000Y-71690000D03*
+D12*
+X110470000Y-70190000D03*
+X110470000Y-68190000D03*
+X110470000Y-66190000D03*
+X110470000Y-64190000D03*
+X110470000Y-62190000D03*
+X110470000Y-60190000D03*
+X110470000Y-58190000D03*
+X110470000Y-56190000D03*
+%TD*%
+D14*
+%TO.C,U2*%
+X106020000Y-80010000D03*
+D15*
+X99720000Y-80010000D03*
+X99720000Y-82310000D03*
+X99720000Y-77710000D03*
+%TD*%
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Paste.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Paste.gbr
new file mode 100644
index 0000000..a9d6982
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_Paste.gbr
@@ -0,0 +1,54 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Paste,Top*%
+%TF.FilePolarity,Positive*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+%ADD10R,2.500000X1.000000*%
+%ADD11R,1.000000X1.800000*%
+%ADD12R,2.000000X3.800000*%
+%ADD13R,2.000000X1.500000*%
+G04 APERTURE END LIST*
+D10*
+%TO.C,U1*%
+X95270000Y-56190000D03*
+X95270000Y-58190000D03*
+X95270000Y-60190000D03*
+X95270000Y-62190000D03*
+X95270000Y-64190000D03*
+X95270000Y-66190000D03*
+X95270000Y-68190000D03*
+X95270000Y-70190000D03*
+D11*
+X97870000Y-71690000D03*
+X99870000Y-71690000D03*
+X101870000Y-71690000D03*
+X103870000Y-71690000D03*
+X105870000Y-71690000D03*
+X107870000Y-71690000D03*
+D10*
+X110470000Y-70190000D03*
+X110470000Y-68190000D03*
+X110470000Y-66190000D03*
+X110470000Y-64190000D03*
+X110470000Y-62190000D03*
+X110470000Y-60190000D03*
+X110470000Y-58190000D03*
+X110470000Y-56190000D03*
+%TD*%
+D12*
+%TO.C,U2*%
+X106020000Y-80010000D03*
+D13*
+X99720000Y-80010000D03*
+X99720000Y-82310000D03*
+X99720000Y-77710000D03*
+%TD*%
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_SilkS.gbr b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_SilkS.gbr
new file mode 100644
index 0000000..2036057
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-F_SilkS.gbr
@@ -0,0 +1,113 @@
+%TF.GenerationSoftware,KiCad,Pcbnew,5.1.6+dfsg1-1*%
+%TF.CreationDate,2020-09-16T13:14:45+02:00*%
+%TF.ProjectId,esp-wireless-charging,6573702d-7769-4726-956c-6573732d6368,rev?*%
+%TF.SameCoordinates,Original*%
+%TF.FileFunction,Legend,Top*%
+%TF.FilePolarity,Positive*%
+%FSLAX46Y46*%
+G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
+G04 Created by KiCad (PCBNEW 5.1.6+dfsg1-1) date 2020-09-16 13:14:45*
+%MOMM*%
+%LPD*%
+G01*
+G04 APERTURE LIST*
+%ADD10C,0.120000*%
+%ADD11C,0.150000*%
+G04 APERTURE END LIST*
+D10*
+%TO.C,J1*%
+X182940000Y-60900000D02*
+X180280000Y-60900000D01*
+X182940000Y-63500000D02*
+X182940000Y-60900000D01*
+X180280000Y-63500000D02*
+X180280000Y-60900000D01*
+X182940000Y-63500000D02*
+X180280000Y-63500000D01*
+X182940000Y-64770000D02*
+X182940000Y-66100000D01*
+X182940000Y-66100000D02*
+X181610000Y-66100000D01*
+%TO.C,U1*%
+X94750000Y-47570000D02*
+X110990000Y-47570000D01*
+X110990000Y-47570000D02*
+X110990000Y-55190000D01*
+X110990000Y-71190000D02*
+X110990000Y-71810000D01*
+X110990000Y-71810000D02*
+X108870000Y-71810000D01*
+X96870000Y-71810000D02*
+X94750000Y-71810000D01*
+X94750000Y-71810000D02*
+X94750000Y-71190000D01*
+X94750000Y-55190000D02*
+X94750000Y-47570000D01*
+X94750000Y-55190000D02*
+X94140000Y-55190000D01*
+%TO.C,U2*%
+X104780000Y-83420000D02*
+X104780000Y-82160000D01*
+X104780000Y-76600000D02*
+X104780000Y-77860000D01*
+X101020000Y-83420000D02*
+X104780000Y-83420000D01*
+X98770000Y-76600000D02*
+X104780000Y-76600000D01*
+%TO.C,J1*%
+D11*
+X181276666Y-66552380D02*
+X181276666Y-67266666D01*
+X181229047Y-67409523D01*
+X181133809Y-67504761D01*
+X180990952Y-67552380D01*
+X180895714Y-67552380D01*
+X182276666Y-67552380D02*
+X181705238Y-67552380D01*
+X181990952Y-67552380D02*
+X181990952Y-66552380D01*
+X181895714Y-66695238D01*
+X181800476Y-66790476D01*
+X181705238Y-66838095D01*
+%TO.C,U1*%
+X91548095Y-53882380D02*
+X91548095Y-54691904D01*
+X91595714Y-54787142D01*
+X91643333Y-54834761D01*
+X91738571Y-54882380D01*
+X91929047Y-54882380D01*
+X92024285Y-54834761D01*
+X92071904Y-54787142D01*
+X92119523Y-54691904D01*
+X92119523Y-53882380D01*
+X93119523Y-54882380D02*
+X92548095Y-54882380D01*
+X92833809Y-54882380D02*
+X92833809Y-53882380D01*
+X92738571Y-54025238D01*
+X92643333Y-54120476D01*
+X92548095Y-54168095D01*
+%TO.C,U2*%
+X102108095Y-74962380D02*
+X102108095Y-75771904D01*
+X102155714Y-75867142D01*
+X102203333Y-75914761D01*
+X102298571Y-75962380D01*
+X102489047Y-75962380D01*
+X102584285Y-75914761D01*
+X102631904Y-75867142D01*
+X102679523Y-75771904D01*
+X102679523Y-74962380D01*
+X103108095Y-75057619D02*
+X103155714Y-75010000D01*
+X103250952Y-74962380D01*
+X103489047Y-74962380D01*
+X103584285Y-75010000D01*
+X103631904Y-75057619D01*
+X103679523Y-75152857D01*
+X103679523Y-75248095D01*
+X103631904Y-75390952D01*
+X103060476Y-75962380D01*
+X103679523Y-75962380D01*
+%TD*%
+M02*
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-job.gbrjob b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-job.gbrjob
new file mode 100644
index 0000000..3c51f89
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging-job.gbrjob
@@ -0,0 +1,126 @@
+{
+ "Header":
+ {
+ "GenerationSoftware":
+ {
+ "Vendor": "KiCad",
+ "Application": "Pcbnew",
+ "Version": "5.1.6+dfsg1-1"
+ },
+ "CreationDate": "2020-09-16T13:14:45+02:00"
+ },
+ "GeneralSpecs":
+ {
+ "ProjectId":
+ {
+ "Name": "esp-wireless-charging",
+ "GUID": "6573702d-7769-4726-956c-6573732d6368",
+ "Revision": "rev?"
+ },
+ "Size":
+ {
+ "X": 93.230,
+ "Y": 41.155
+ },
+ "LayerNumber": 2,
+ "BoardThickness": 1.600
+ },
+ "DesignRules":
+ [
+ {
+ "Layers": "Outer",
+ "PadToPad": 0.200,
+ "PadToTrack": 0.200,
+ "TrackToTrack": 0.200,
+ "MinLineWidth": 0.250
+ }
+ ],
+ "FilesAttributes":
+ [
+ {
+ "Path": "esp-wireless-charging-F_Cu.gbr",
+ "FileFunction": "Copper,L1,Top",
+ "FilePolarity": "Positive"
+ },
+ {
+ "Path": "esp-wireless-charging-B_Cu.gbr",
+ "FileFunction": "Copper,L2,Bot",
+ "FilePolarity": "Positive"
+ },
+ {
+ "Path": "esp-wireless-charging-F_Paste.gbr",
+ "FileFunction": "SolderPaste,Top",
+ "FilePolarity": "Positive"
+ },
+ {
+ "Path": "esp-wireless-charging-B_Paste.gbr",
+ "FileFunction": "SolderPaste,Bot",
+ "FilePolarity": "Positive"
+ },
+ {
+ "Path": "esp-wireless-charging-F_SilkS.gbr",
+ "FileFunction": "Legend,Top",
+ "FilePolarity": "Positive"
+ },
+ {
+ "Path": "esp-wireless-charging-B_SilkS.gbr",
+ "FileFunction": "Legend,Bot",
+ "FilePolarity": "Positive"
+ },
+ {
+ "Path": "esp-wireless-charging-F_Mask.gbr",
+ "FileFunction": "SolderMask,Top",
+ "FilePolarity": "Negative"
+ },
+ {
+ "Path": "esp-wireless-charging-B_Mask.gbr",
+ "FileFunction": "SolderMask,Bot",
+ "FilePolarity": "Negative"
+ },
+ {
+ "Path": "esp-wireless-charging-Edge_Cuts.gbr",
+ "FileFunction": "Profile",
+ "FilePolarity": "Positive"
+ }
+ ],
+ "MaterialStackup":
+ [
+ {
+ "Type": "Legend",
+ "Notes": "Layer F.SilkS"
+ },
+ {
+ "Type": "SolderPaste",
+ "Notes": "Layer F.Paste"
+ },
+ {
+ "Type": "SolderMask",
+ "Notes": "Layer F.Mask"
+ },
+ {
+ "Type": "Copper",
+ "Notes": "Layer F.Cu"
+ },
+ {
+ "Type": "Dielectric",
+ "Material": "FR4",
+ "Notes": "Layers L1/L2"
+ },
+ {
+ "Type": "Copper",
+ "Notes": "Layer B.Cu"
+ },
+ {
+ "Type": "SolderMask",
+ "Notes": "Layer B.Mask"
+ },
+ {
+ "Type": "SolderPaste",
+ "Notes": "Layer B.Paste"
+ },
+ {
+ "Type": "Legend",
+ "Notes": "Layer B.SilkS"
+ }
+ ]
+}
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging.drl b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging.drl
new file mode 100644
index 0000000..f13ff22
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/files_for_custom_pcb/esp-wireless-charging.drl
@@ -0,0 +1,16 @@
+M48
+; DRILL file {KiCad 5.1.6+dfsg1-1} date Wed Sep 16 13:15:03 2020
+; FORMAT={-:-/ absolute / inch / decimal}
+; #@! TF.CreationDate,2020-09-16T13:15:03+02:00
+; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.6+dfsg1-1
+FMAT,2
+INCH
+T1C0.0394
+%
+G90
+G05
+T1
+X7.15Y-2.45
+X7.15Y-2.55
+T0
+M30
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/.DS_Store b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/.DS_Store
new file mode 100644
index 0000000..ae742c9
Binary files /dev/null and b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/.DS_Store differ
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/README.md b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/README.md
new file mode 100644
index 0000000..b19f878
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/README.md
@@ -0,0 +1,45 @@
+# opencoil-paracity: code
+
+### Prerequisites
+
+This guide assumes you have a 4MB ESP12F microcontroller and use Arduino IDE.
+
+* Board Manager: You will need to add the support for this board to your IDE (Arduino in this case), see: https://github.com/esp8266/Arduino
+* SPIFFS: You will need to add SPIFFS file upload support to Arduino if you want to upload files to the ESP12F, see: https://github.com/esp8266/arduino-esp8266fs-plugin
+
+
+
+### Uploading Code
+For ESP12F use the following settings in Arduino IDE
+
+* Board: Generic ESP8266 Module
+* Builtin Led: 2
+* Upload Speed: 921600
+* CPU Frequency: 80 MHz
+* Crystal Frequency: 26MHz
+* Flash Size: 4MB (FS:3MB OTA: ~512KB)
+* Flash Mode: DOUT
+* Flash Frequency: 40MHz
+* Reset Method: dtr (aka nodemcu)
+* Debug port: Disabled
+* Debug Level: none
+* LwIP Variant: v2 Lower Memory
+* VTables: Flash
+* Exceptions: Legacy (new can return nullptr)
+* Erase Flash: depends on if you want to change SSID, Files, or only Sketch
+* Espressif FW: nonos-sdk 2.2.1+100 (190703)
+* SSL Support: All SSL ciphers (most compatible)
+* Port: depend if u are uploading Over The Air, or using a cable
+* Programmer: AVRISP mkII
+
+
+These settings give you about 2.471 KB of SPIFFS storage space for files and ~512KB sketch size
+
+
+### Over The Air (OTA) Uploading
+
+* Connect to the hotspot created by the ESP12F.
+* Launch Arduino, choose "esp at 192.168.4.1" as the port.
+* If you don't see the port listed in Arduino (Tools > Port), restart Arduino IDE.
+
+You can upload your sketch and files wirelessly, there is one caveat: SPIFFS file uploads don't work with password protected uploads (line 42). Workaround: flash your sketch with line 42 commented out. Upload your files to SPIFFS, then uncomment the line and Upload the code.
\ No newline at end of file
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/.DS_Store b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/.DS_Store
new file mode 100644
index 0000000..df48c03
Binary files /dev/null and b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/.DS_Store differ
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/DNSServer.cpp b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/DNSServer.cpp
new file mode 100644
index 0000000..6552bec
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/DNSServer.cpp
@@ -0,0 +1,166 @@
+#include "./DNSServer.h"
+#include
+#include
+
+#define DEBUG
+#define DEBUG_OUTPUT Serial
+
+DNSServer::DNSServer()
+{
+ _ttl = htonl(60);
+ _errorReplyCode = DNSReplyCode::NonExistentDomain;
+}
+
+bool DNSServer::start(const uint16_t &port, const String &domainName,
+ const IPAddress &resolvedIP)
+{
+ _port = port;
+ _domainName = domainName;
+ _resolvedIP[0] = resolvedIP[0];
+ _resolvedIP[1] = resolvedIP[1];
+ _resolvedIP[2] = resolvedIP[2];
+ _resolvedIP[3] = resolvedIP[3];
+ downcaseAndRemoveWwwPrefix(_domainName);
+ return _udp.begin(_port) == 1;
+}
+
+void DNSServer::setErrorReplyCode(const DNSReplyCode &replyCode)
+{
+ _errorReplyCode = replyCode;
+}
+
+void DNSServer::setTTL(const uint32_t &ttl)
+{
+ _ttl = htonl(ttl);
+}
+
+void DNSServer::stop()
+{
+ _udp.stop();
+}
+
+void DNSServer::downcaseAndRemoveWwwPrefix(String &domainName)
+{
+ domainName.toLowerCase();
+ domainName.replace("www.", "");
+ domainName.replace("https://", "");
+}
+
+void DNSServer::processNextRequest()
+{
+ _currentPacketSize = _udp.parsePacket();
+ if (_currentPacketSize)
+ {
+ _buffer = (unsigned char*)malloc(_currentPacketSize * sizeof(char));
+ _udp.read(_buffer, _currentPacketSize);
+ _dnsHeader = (DNSHeader*) _buffer;
+
+ if (_dnsHeader->QR == DNS_QR_QUERY &&
+ _dnsHeader->OPCode == DNS_OPCODE_QUERY &&
+ requestIncludesOnlyOneQuestion() &&
+ (_domainName == "*" || getDomainNameWithoutWwwPrefix() == _domainName)
+ )
+
+ {
+ replyWithIP();
+ }
+ else if (_dnsHeader->QR == DNS_QR_QUERY)
+ {
+ replyWithCustomCode();
+ }
+
+ free(_buffer);
+ }
+}
+
+bool DNSServer::requestIncludesOnlyOneQuestion()
+{
+ return ntohs(_dnsHeader->QDCount) == 1 &&
+ _dnsHeader->ANCount == 0 &&
+ _dnsHeader->NSCount == 0 &&
+ _dnsHeader->ARCount == 0;
+}
+
+String DNSServer::getDomainNameWithoutWwwPrefix()
+{
+ String parsedDomainName = "";
+ unsigned char *start = _buffer + 12;
+ if (*start == 0)
+ {
+ return parsedDomainName;
+ }
+ int pos = 0;
+ while(true)
+ {
+ unsigned char labelLength = *(start + pos);
+ for(int i = 0; i < labelLength; i++)
+ {
+ pos++;
+ parsedDomainName += (char)*(start + pos);
+ }
+ pos++;
+ if (*(start + pos) == 0)
+ {
+ downcaseAndRemoveWwwPrefix(parsedDomainName);
+ return parsedDomainName;
+ }
+ else
+ {
+ parsedDomainName += ".";
+ }
+ }
+}
+
+void DNSServer::replyWithIP()
+{
+ _dnsHeader->QR = DNS_QR_RESPONSE;
+ _dnsHeader->ANCount = _dnsHeader->QDCount;
+ _dnsHeader->QDCount = _dnsHeader->QDCount;
+ //_dnsHeader->RA = 1;
+
+ _udp.beginPacket(_udp.remoteIP(), _udp.remotePort());
+ _udp.write(_buffer, _currentPacketSize);
+
+ _udp.write((uint8_t)192); // answer name is a pointer
+ _udp.write((uint8_t)12); // pointer to offset at 0x00c
+
+ _udp.write((uint8_t)0); // 0x0001 answer is type A query (host address)
+ _udp.write((uint8_t)1);
+
+ _udp.write((uint8_t)0); //0x0001 answer is class IN (internet address)
+ _udp.write((uint8_t)1);
+
+ _udp.write((unsigned char*)&_ttl, 4);
+
+ // Length of RData is 4 bytes (because, in this case, RData is IPv4)
+ _udp.write((uint8_t)0);
+ _udp.write((uint8_t)4);
+ _udp.write(_resolvedIP, sizeof(_resolvedIP));
+ _udp.endPacket();
+
+
+
+ #ifdef DEBUG
+ DEBUG_OUTPUT.print("DNS responds: ");
+ DEBUG_OUTPUT.print(_resolvedIP[0]);
+ DEBUG_OUTPUT.print(".");
+ DEBUG_OUTPUT.print(_resolvedIP[1]);
+ DEBUG_OUTPUT.print(".");
+ DEBUG_OUTPUT.print(_resolvedIP[2]);
+ DEBUG_OUTPUT.print(".");
+ DEBUG_OUTPUT.print(_resolvedIP[3]);
+ DEBUG_OUTPUT.print(" for ");
+ DEBUG_OUTPUT.println(getDomainNameWithoutWwwPrefix());
+ #endif
+}
+
+void DNSServer::replyWithCustomCode()
+{
+ _dnsHeader->QR = DNS_QR_RESPONSE;
+ _dnsHeader->RCode = (unsigned char)_errorReplyCode;
+ _dnsHeader->QDCount = 0;
+
+ _udp.beginPacket(_udp.remoteIP(), _udp.remotePort());
+ _udp.write(_buffer, sizeof(DNSHeader));
+ _udp.endPacket();
+}
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/DNSServer.h b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/DNSServer.h
new file mode 100755
index 0000000..2bade4b
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/DNSServer.h
@@ -0,0 +1,72 @@
+#ifndef DNSServer_h
+#define DNSServer_h
+#include
+
+#define DNS_QR_QUERY 0
+#define DNS_QR_RESPONSE 1
+#define DNS_OPCODE_QUERY 0
+
+enum class DNSReplyCode
+{
+ NoError = 0,
+ FormError = 1,
+ ServerFailure = 2,
+ NonExistentDomain = 3,
+ NotImplemented = 4,
+ Refused = 5,
+ YXDomain = 6,
+ YXRRSet = 7,
+ NXRRSet = 8
+};
+
+struct DNSHeader
+{
+ uint16_t ID; // identification number
+ unsigned char RD : 1; // recursion desired
+ unsigned char TC : 1; // truncated message
+ unsigned char AA : 1; // authoritive answer
+ unsigned char OPCode : 4; // message_type
+ unsigned char QR : 1; // query/response flag
+ unsigned char RCode : 4; // response code
+ unsigned char Z : 3; // its z! reserved
+ unsigned char RA : 1; // recursion available
+ uint16_t QDCount; // number of question entries
+ uint16_t ANCount; // number of answer entries
+ uint16_t NSCount; // number of authority entries
+ uint16_t ARCount; // number of resource entries
+};
+
+class DNSServer
+{
+ public:
+ DNSServer();
+ void processNextRequest();
+ void setErrorReplyCode(const DNSReplyCode &replyCode);
+ void setTTL(const uint32_t &ttl);
+
+ // Returns true if successful, false if there are no sockets available
+ bool start(const uint16_t &port,
+ const String &domainName,
+ const IPAddress &resolvedIP);
+ // stops the DNS server
+ void stop();
+
+ private:
+ WiFiUDP _udp;
+ uint16_t _port;
+ String _domainName;
+ unsigned char _resolvedIP[4];
+ int _currentPacketSize;
+ unsigned char* _buffer;
+ DNSHeader* _dnsHeader;
+ uint32_t _ttl;
+ DNSReplyCode _errorReplyCode;
+
+ void downcaseAndRemoveWwwPrefix(String &domainName);
+ String getDomainNameWithoutWwwPrefix();
+ bool requestIncludesOnlyOneQuestion();
+ void replyWithIP();
+ void replyWithCustomCode();
+};
+#endif
+
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/data/index.html b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/data/index.html
new file mode 100644
index 0000000..c061527
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/data/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+hi
+
+
+
\ No newline at end of file
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/data/pic.jpg b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/data/pic.jpg
new file mode 100644
index 0000000..f42774e
Binary files /dev/null and b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/data/pic.jpg differ
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/paracity_gallery_v041.ino b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/paracity_gallery_v041.ino
new file mode 100644
index 0000000..b786dc5
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/flash_this_code_on_esp/paracity_gallery_v041/paracity_gallery_v041.ino
@@ -0,0 +1,98 @@
+ // Captive portal with (arduino) OTA + SPIFFS
+
+ #include
+ #include
+ #include
+ #include
+ #include // Over-the-Air updates
+ #include
+ #include "./DNSServer.h" // Dns server
+ #include // SPIFFS
+
+ DNSServer dnsServer;
+ const byte DNS_PORT = 53;
+
+ ESP8266WebServer server(80);
+
+ #ifndef STASSID
+ #define STASSID "\xF0\x9F\x9B\xB4 UNFLASHED"
+ //#define STASPSK "mypassword"
+ #endif
+
+ IPAddress apIP(192, 168, 4, 1);
+ const char* ssid = STASSID;
+ //const char* password = STAPSK;
+
+ void setup() {
+ Serial.begin(115200);
+ Serial.println("Booting");
+
+ WiFi.mode(WIFI_AP);
+ WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
+ WiFi.softAP(ssid);
+ dnsServer.start(DNS_PORT, "*", apIP); // redirect dns request to AP ip
+
+ MDNS.begin("esp8266", WiFi.softAPIP());
+ Serial.println("Ready");
+ Serial.print("IP address: ");
+ Serial.println(WiFi.softAPIP());
+
+ //Over-the-Air updates
+ ArduinoOTA.setHostname("ESP8266");
+ //ArduinoOTA.setPassword("change-me"); //disabled to allow data uploads
+ ArduinoOTA.begin();
+ SPIFFS.begin();
+
+ //redirect all traffic to index.html
+ server.onNotFound([]() {
+ if(!handleFileRead(server.uri())){
+ const char *metaRefreshStr = "redirecting...
";
+ server.send(200, "text/html", metaRefreshStr);
+ }
+ });
+
+ server.begin();
+
+ }
+
+ void loop() {
+ dnsServer.processNextRequest();
+ ArduinoOTA.handle();
+ server.handleClient();
+ delay(50);
+ }
+
+
+String getContentType(String filename){
+ if(server.hasArg("download")) return "application/octet-stream";
+ else if(filename.endsWith(".htm")) return "text/html";
+ else if(filename.endsWith(".html")) return "text/html";
+ else if(filename.endsWith(".css")) return "text/css";
+ else if(filename.endsWith(".js")) return "application/javascript";
+ else if(filename.endsWith(".png")) return "image/png";
+ else if(filename.endsWith(".gif")) return "image/gif";
+ else if(filename.endsWith(".jpg")) return "image/jpeg";
+ else if(filename.endsWith(".ico")) return "image/x-icon";
+ else if(filename.endsWith(".xml")) return "text/xml";
+ else if(filename.endsWith(".mp4")) return "video/mp4";
+ else if(filename.endsWith(".pdf")) return "application/x-pdf";
+ else if(filename.endsWith(".zip")) return "application/x-zip";
+ else if(filename.endsWith(".gz")) return "application/x-gzip";
+ return "text/plain";
+}
+
+//Given a file path, look for it in the SPIFFS file storage. Returns true if found, returns false if not found.
+bool handleFileRead(String path){
+ if(path.endsWith("/")) path += "index.html";
+ String contentType = getContentType(path);
+ String pathWithGz = path + ".gz";
+ if(SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)){
+ if(SPIFFS.exists(pathWithGz))
+ path += ".gz";
+ File file = SPIFFS.open(path, "r");
+ size_t sent = server.streamFile(file, contentType);
+ file.close();
+ return true;
+ }
+ return false;
+}
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/mold_inlay_for_board/spacer-345x495.svg b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/mold_inlay_for_board/spacer-345x495.svg
new file mode 100644
index 0000000..f5a9e17
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/mold_inlay_for_board/spacer-345x495.svg
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/stencil_for_chargelogo/spray-stencil-295x420.svg b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/stencil_for_chargelogo/spray-stencil-295x420.svg
new file mode 100644
index 0000000..53be971
--- /dev/null
+++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/stencil_for_chargelogo/spray-stencil-295x420.svg
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+