diff --git a/battery_board/battery_board/battery_board-backups/battery_board-2024-08-23_235516.zip b/battery_board/battery_board/battery_board-backups/battery_board-2024-08-23_235516.zip
deleted file mode 100644
index c1c8f51..0000000
Binary files a/battery_board/battery_board/battery_board-backups/battery_board-2024-08-23_235516.zip and /dev/null differ
diff --git a/board/.gitignore b/board/.gitignore
index 2ebfc3a..cec8260 100644
--- a/board/.gitignore
+++ b/board/.gitignore
@@ -34,3 +34,5 @@ _autosave-*
# Autorouter files (exported from Pcbnew)
fp-info-cache
+*.zip
+netlist.ipc
diff --git a/battery_board/battery_board/.gitignore b/board/battery/battery_board_old/.gitignore
similarity index 100%
rename from battery_board/battery_board/.gitignore
rename to board/battery/battery_board_old/.gitignore
diff --git a/battery_board/battery_board/battery_board.kicad_pcb b/board/battery/battery_board_old/battery_board.kicad_pcb
similarity index 100%
rename from battery_board/battery_board/battery_board.kicad_pcb
rename to board/battery/battery_board_old/battery_board.kicad_pcb
diff --git a/battery_board/battery_board/battery_board.kicad_prl b/board/battery/battery_board_old/battery_board.kicad_prl
similarity index 100%
rename from battery_board/battery_board/battery_board.kicad_prl
rename to board/battery/battery_board_old/battery_board.kicad_prl
diff --git a/battery_board/battery_board/battery_board.kicad_pro b/board/battery/battery_board_old/battery_board.kicad_pro
similarity index 100%
rename from battery_board/battery_board/battery_board.kicad_pro
rename to board/battery/battery_board_old/battery_board.kicad_pro
diff --git a/battery_board/battery_board/battery_board.kicad_sch b/board/battery/battery_board_old/battery_board.kicad_sch
similarity index 100%
rename from battery_board/battery_board/battery_board.kicad_sch
rename to board/battery/battery_board_old/battery_board.kicad_sch
diff --git a/battery_board/battery_board/bq34z100-r2.pdf b/board/battery/battery_board_old/bq34z100-r2.pdf
similarity index 100%
rename from battery_board/battery_board/bq34z100-r2.pdf
rename to board/battery/battery_board_old/bq34z100-r2.pdf
diff --git a/battery_board/battery_board/fabrication-toolkit-options.json b/board/battery/battery_board_old/fabrication-toolkit-options.json
similarity index 100%
rename from battery_board/battery_board/fabrication-toolkit-options.json
rename to board/battery/battery_board_old/fabrication-toolkit-options.json
diff --git a/battery_board/battery_board/fp-lib-table b/board/battery/battery_board_old/fp-lib-table
similarity index 100%
rename from battery_board/battery_board/fp-lib-table
rename to board/battery/battery_board_old/fp-lib-table
diff --git a/battery_board/battery_board/kicad-stuff/AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical.kicad_mod b/board/battery/battery_board_old/kicad-stuff/AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/BQ34Z100PWR-G1.kicad_sym b/board/battery/battery_board_old/kicad-stuff/BQ34Z100PWR-G1.kicad_sym
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/BQ34Z100PWR-G1.kicad_sym
rename to board/battery/battery_board_old/kicad-stuff/BQ34Z100PWR-G1.kicad_sym
diff --git a/battery_board/battery_board/kicad-stuff/BQ34Z100PWR-G1.step b/board/battery/battery_board_old/kicad-stuff/BQ34Z100PWR-G1.step
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/BQ34Z100PWR-G1.step
rename to board/battery/battery_board_old/kicad-stuff/BQ34Z100PWR-G1.step
diff --git a/battery_board/battery_board/kicad-stuff/CCC Mannheim Logo2_full.svg b/board/battery/battery_board_old/kicad-stuff/CCC Mannheim Logo2_full.svg
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/CCC Mannheim Logo2_full.svg
rename to board/battery/battery_board_old/kicad-stuff/CCC Mannheim Logo2_full.svg
diff --git a/battery_board/battery_board/kicad-stuff/DW01.dcm b/board/battery/battery_board_old/kicad-stuff/DW01.dcm
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/DW01.dcm
rename to board/battery/battery_board_old/kicad-stuff/DW01.dcm
diff --git a/battery_board/battery_board/kicad-stuff/DW01.kicad_sym b/board/battery/battery_board_old/kicad-stuff/DW01.kicad_sym
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/DW01.kicad_sym
rename to board/battery/battery_board_old/kicad-stuff/DW01.kicad_sym
diff --git a/battery_board/battery_board/kicad-stuff/DW01.lib b/board/battery/battery_board_old/kicad-stuff/DW01.lib
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/DW01.lib
rename to board/battery/battery_board_old/kicad-stuff/DW01.lib
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/CCC_Mannheim_Logo2_full.kicad_mod b/board/battery/battery_board_old/kicad-stuff/ESP32/CCC_Mannheim_Logo2_full.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/CCC_Mannheim_Logo2_full.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/ESP32/CCC_Mannheim_Logo2_full.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/DPAK457P991X255-3N.kicad_mod b/board/battery/battery_board_old/kicad-stuff/ESP32/DPAK457P991X255-3N.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/DPAK457P991X255-3N.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/ESP32/DPAK457P991X255-3N.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D--3DModel-STEP-56544.STEP b/board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D--3DModel-STEP-56544.STEP
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D--3DModel-STEP-56544.STEP
rename to board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D--3DModel-STEP-56544.STEP
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D.dcm b/board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D.dcm
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D.dcm
rename to board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D.dcm
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D.kicad_sym b/board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D.kicad_sym
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D.kicad_sym
rename to board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D.kicad_sym
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D.lib b/board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D.lib
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/ESP32-DEVKITC-32D.lib
rename to board/battery/battery_board_old/kicad-stuff/ESP32/ESP32-DEVKITC-32D.lib
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/MODULE_ESP32-DEVKITC-32D.kicad_mod b/board/battery/battery_board_old/kicad-stuff/ESP32/MODULE_ESP32-DEVKITC-32D.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/MODULE_ESP32-DEVKITC-32D.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/ESP32/MODULE_ESP32-DEVKITC-32D.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/SR04M-2PinHeader_1x04_P2.54mm_Vertical.kicad_mod b/board/battery/battery_board_old/kicad-stuff/ESP32/SR04M-2PinHeader_1x04_P2.54mm_Vertical.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/SR04M-2PinHeader_1x04_P2.54mm_Vertical.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/ESP32/SR04M-2PinHeader_1x04_P2.54mm_Vertical.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/ESP32/how-to-import.htm b/board/battery/battery_board_old/kicad-stuff/ESP32/how-to-import.htm
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ESP32/how-to-import.htm
rename to board/battery/battery_board_old/kicad-stuff/ESP32/how-to-import.htm
diff --git a/battery_board/battery_board/kicad-stuff/LP38690DT-3.3.kicad_sym b/board/battery/battery_board_old/kicad-stuff/LP38690DT-3.3.kicad_sym
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/LP38690DT-3.3.kicad_sym
rename to board/battery/battery_board_old/kicad-stuff/LP38690DT-3.3.kicad_sym
diff --git a/battery_board/battery_board/kicad-stuff/LP38690DT-3.3.lib b/board/battery/battery_board_old/kicad-stuff/LP38690DT-3.3.lib
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/LP38690DT-3.3.lib
rename to board/battery/battery_board_old/kicad-stuff/LP38690DT-3.3.lib
diff --git a/battery_board/battery_board/kicad-stuff/R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm.kicad_mod b/board/battery/battery_board_old/kicad-stuff/R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/SOP65P640X120-14N.kicad_mod b/board/battery/battery_board_old/kicad-stuff/SOP65P640X120-14N.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/SOP65P640X120-14N.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/SOP65P640X120-14N.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/SSOP10.kicad_mod b/board/battery/battery_board_old/kicad-stuff/SSOP10.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/SSOP10.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/SSOP10.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/SX1308.kicad_sym b/board/battery/battery_board_old/kicad-stuff/SX1308.kicad_sym
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/SX1308.kicad_sym
rename to board/battery/battery_board_old/kicad-stuff/SX1308.kicad_sym
diff --git a/battery_board/battery_board/kicad-stuff/SX1308.lib b/board/battery/battery_board_old/kicad-stuff/SX1308.lib
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/SX1308.lib
rename to board/battery/battery_board_old/kicad-stuff/SX1308.lib
diff --git a/battery_board/battery_board/kicad-stuff/ds2438.kicad_sym b/board/battery/battery_board_old/kicad-stuff/ds2438.kicad_sym
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ds2438.kicad_sym
rename to board/battery/battery_board_old/kicad-stuff/ds2438.kicad_sym
diff --git a/battery_board/battery_board/kicad-stuff/ds2438.lib b/board/battery/battery_board_old/kicad-stuff/ds2438.lib
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/ds2438.lib
rename to board/battery/battery_board_old/kicad-stuff/ds2438.lib
diff --git a/battery_board/battery_board/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.step b/board/battery/battery_board_old/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.step
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.step
rename to board/battery/battery_board_old/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.step
diff --git a/battery_board/battery_board/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.wrl b/board/battery/battery_board_old/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.wrl
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.wrl
rename to board/battery/battery_board_old/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.wrl
diff --git a/battery_board/battery_board/kicad-stuff/easyeda2kicad.kicad_sym b/board/battery/battery_board_old/kicad-stuff/easyeda2kicad.kicad_sym
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/easyeda2kicad.kicad_sym
rename to board/battery/battery_board_old/kicad-stuff/easyeda2kicad.kicad_sym
diff --git a/battery_board/battery_board/kicad-stuff/easyeda2kicad.pretty/MINI-USB-SMD_UX-144S-ACP5.kicad_mod b/board/battery/battery_board_old/kicad-stuff/easyeda2kicad.pretty/MINI-USB-SMD_UX-144S-ACP5.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/easyeda2kicad.pretty/MINI-USB-SMD_UX-144S-ACP5.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/easyeda2kicad.pretty/MINI-USB-SMD_UX-144S-ACP5.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/.gitignore b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/.gitignore
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/.gitignore
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/.gitignore
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/LICENSE b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/LICENSE
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/LICENSE
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/LICENSE
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/README.md b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/README.md
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/README.md
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/README.md
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/eaglize.py b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/eaglize.py
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/eaglize.py
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/eaglize.py
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/16850_cell_casket.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/16850_cell_casket.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/16850_cell_casket.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/16850_cell_casket.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_SMT.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_SMT.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_SMT.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_SMT.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_prot.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_prot.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_prot.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/4056E_LiIon_loader_prot.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/BatteryHolder_Keystone_1042_1x18650.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/BatteryHolder_Keystone_1042_1x18650.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/BatteryHolder_Keystone_1042_1x18650.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/BatteryHolder_Keystone_1042_1x18650.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MP1584_buck_module.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MP1584_buck_module.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MP1584_buck_module.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MP1584_buck_module.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module_SMT.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module_SMT.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module_SMT.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/MT3608_module_SMT.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/N95_battery_connector.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/N95_battery_connector.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/N95_battery_connector.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/N95_battery_connector.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT-23-6.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT-23-6.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT-23-6.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT-23-6.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT95P280X135-6N.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT95P280X135-6N.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT95P280X135-6N.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/SOT95P280X135-6N.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module_SMT.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module_SMT.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module_SMT.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/XL6009_module_SMT.kicad_mod
diff --git a/battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/ds2438az&plus_.kicad_mod b/board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/ds2438az&plus_.kicad_mod
similarity index 100%
rename from battery_board/battery_board/kicad-stuff/misc_footprints-master/misc_footprints.pretty/ds2438az&plus_.kicad_mod
rename to board/battery/battery_board_old/kicad-stuff/misc_footprints-master/misc_footprints.pretty/ds2438az&plus_.kicad_mod
diff --git a/battery_board/battery_board/sym-lib-table b/board/battery/battery_board_old/sym-lib-table
similarity index 100%
rename from battery_board/battery_board/sym-lib-table
rename to board/battery/battery_board_old/sym-lib-table
diff --git a/board/modules/3v3/fabrication-toolkit-options.json b/board/modules/3v3/fabrication-toolkit-options.json
new file mode 100644
index 0000000..11ead7d
--- /dev/null
+++ b/board/modules/3v3/fabrication-toolkit-options.json
@@ -0,0 +1 @@
+{"EXTRA_LAYERS": "", "ALL_ACTIVE_LAYERS": false, "EXTEND_EDGE_CUT": false, "ALTERNATIVE_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}
\ No newline at end of file
diff --git a/board/modules/LightOut/fabrication-toolkit-options.json b/board/modules/LightOut/fabrication-toolkit-options.json
new file mode 100644
index 0000000..11ead7d
--- /dev/null
+++ b/board/modules/LightOut/fabrication-toolkit-options.json
@@ -0,0 +1 @@
+{"EXTRA_LAYERS": "", "ALL_ACTIVE_LAYERS": false, "EXTEND_EDGE_CUT": false, "ALTERNATIVE_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}
\ No newline at end of file
diff --git a/board/modules/MPPT/fabrication-toolkit-options.json b/board/modules/MPPT/fabrication-toolkit-options.json
new file mode 100644
index 0000000..11ead7d
--- /dev/null
+++ b/board/modules/MPPT/fabrication-toolkit-options.json
@@ -0,0 +1 @@
+{"EXTRA_LAYERS": "", "ALL_ACTIVE_LAYERS": false, "EXTEND_EDGE_CUT": false, "ALTERNATIVE_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}
\ No newline at end of file
diff --git a/board/modules/Sensors/Sensors/fabrication-toolkit-options.json b/board/modules/Sensors/Sensors/fabrication-toolkit-options.json
new file mode 100644
index 0000000..11ead7d
--- /dev/null
+++ b/board/modules/Sensors/Sensors/fabrication-toolkit-options.json
@@ -0,0 +1 @@
+{"EXTRA_LAYERS": "", "ALL_ACTIVE_LAYERS": false, "EXTEND_EDGE_CUT": false, "ALTERNATIVE_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}
\ No newline at end of file
diff --git a/board/modules/Sensors_can/Sensors/fabrication-toolkit-options.json b/board/modules/Sensors_can/Sensors/fabrication-toolkit-options.json
new file mode 100644
index 0000000..11ead7d
--- /dev/null
+++ b/board/modules/Sensors_can/Sensors/fabrication-toolkit-options.json
@@ -0,0 +1 @@
+{"EXTRA_LAYERS": "", "ALL_ACTIVE_LAYERS": false, "EXTEND_EDGE_CUT": false, "ALTERNATIVE_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}
\ No newline at end of file
diff --git a/board/modules/Sensors_can/Sensors/fp-lib-table b/board/modules/Sensors_can/Sensors/fp-lib-table
new file mode 100644
index 0000000..ae7d80f
--- /dev/null
+++ b/board/modules/Sensors_can/Sensors/fp-lib-table
@@ -0,0 +1,4 @@
+(fp_lib_table
+ (version 7)
+ (lib (name "Sensor")(type "KiCad")(uri "/home/empire/workspace/PlantCtrl/board/modules/Sensors/Sensors/Sensor.pretty")(options "")(descr ""))
+)
diff --git a/board/modules/Sensors_can/Sensors/production/netlist.ipc b/board/modules/Sensors_can/Sensors/production/netlist.ipc
new file mode 100644
index 0000000..ce5cd46
--- /dev/null
+++ b/board/modules/Sensors_can/Sensors/production/netlist.ipc
@@ -0,0 +1,71 @@
+P CODE 00
+P UNITS CUST 0
+P arrayDim N
+317GND VIA MD0118PA00X+040551Y-024902X0236Y0000R000S3
+317GND VIA MD0118PA00X+054232Y-022933X0236Y0000R000S3
+317GND VIA MD0118PA00X+053346Y-021949X0236Y0000R000S3
+317GND VIA MD0118PA00X+040846Y-019980X0236Y0000R000S3
+317GND VIA MD0118PA00X+041043Y-025787X0236Y0000R000S3
+317GND VIA MD0118PA00X+040059Y-019980X0236Y0000R000S3
+317GND VIA MD0118PA00X+044291Y-025787X0236Y0000R000S3
+317GND VIA MD0118PA00X+046654Y-025000X0236Y0000R000S3
+317GND VIA MD0118PA00X+041240Y-021949X0236Y0000R000S3
+317GND VIA MD0118PA00X+043307Y-020768X0236Y0000R000S3
+317GND VIA MD0118PA00X+039961Y-022539X0236Y0000R000S3
+317GND VIA MD0118PA00X+049606Y-021260X0236Y0000R000S3
+317GND VIA MD0118PA00X+043898Y-024803X0236Y0000R000S3
+317GND VIA MD0118PA00X+044587Y-023917X0236Y0000R000S3
+317GND VIA MD0118PA00X+041142Y-024016X0236Y0000R000S3
+317GND VIA MD0118PA00X+052461Y-022835X0236Y0000R000S3
+317GND VIA MD0118PA00X+053642Y-024016X0236Y0000R000S3
+317GND VIA MD0118PA00X+047835Y-026378X0236Y0000R000S3
+317GND VIA MD0118PA00X+042618Y-020669X0236Y0000R000S3
+317GND VIA MD0118PA00X+049409Y-022047X0236Y0000R000S3
+317GND VIA MD0118PA00X+042520Y-022441X0236Y0000R000S3
+317GND VIA MD0118PA00X+048622Y-022835X0236Y0000R000S3
+327GND R_slop-1 A01X+053967Y-020177X0315Y0374R180S2
+327NET-(U1-RS) R_slop-2 A01X+053317Y-020177X0315Y0374R180S2
+3173_3V U6 -1 D0394PA00X+039016Y-019370X0669Y0669R000S0
+317(U6-VBAT-PAD2) U6 -2 D0394PA00X+039016Y-020370X0669Y0000R000S0
+317-(U6-SDA-PAD3) U6 -3 D0394PA00X+039016Y-021370X0669Y0000R000S0
+317-(U6-SCL-PAD4) U6 -4 D0394PA00X+039016Y-022370X0669Y0000R000S0
+317ENABLE_CAN U6 -5 D0394PA00X+039016Y-023370X0669Y0000R000S0
+317CAN+ U6 -6 D0394PA00X+039016Y-024370X0669Y0000R000S0
+317CAN- U6 -7 D0394PA00X+039016Y-025370X0669Y0000R000S0
+317GND U6 -8 D0394PA00X+039016Y-026370X0669Y0000R000S0
+317GND U6 -9 D0394PA00X+071260Y-034252X0669Y0669R000S0
+317GND U6 -10 D0394PA00X+055512Y-031299X0669Y0669R000S0
+317GND U6 -11 D0394PA00X+038780Y-034252X0669Y0669R000S0
+317GND U6 -12 D0394PA00X+055512Y-020669X0669Y0669R000S0
+317GND U6 -13 D0394PA00X+071260Y-019094X0669Y0669R000S0
+327NET-(QP_1-G) QP_1 -1 A01X+047835Y-021280X0354Y0315R000S2
+3273_3V QP_1 -2 A01X+047835Y-022028X0354Y0315R000S2
+327CAN_POWER QP_1 -3 A01X+048622Y-021654X0354Y0315R000S2
+327CAN_POWER R5 -1 A01X+047835Y-022904X0315Y0374R090S2
+327NET-(I1-A) R5 -2 A01X+047835Y-023553X0315Y0374R090S2
+327NET-(QP_1-G) R6 -1 A01X+046654Y-021329X0315Y0374R090S2
+3273_3V R6 -2 A01X+046654Y-021978X0315Y0374R090S2
+327NET-(QP_1-G) R7 -1 A01X+045669Y-021329X0315Y0374R090S2
+327NET-(Q1-D) R7 -2 A01X+045669Y-021978X0315Y0374R090S2
+317CAN_POWER J1 -1 D0374PA00X+055197Y-025394X0669Y0768R270S0
+317NET-(J1-PIN_2) J1 -2 D0374PA00X+055197Y-024409X0669Y0768R270S0
+317NET-(J1-PIN_3) J1 -3 D0374PA00X+055197Y-023425X0669Y0768R270S0
+317GND J1 -4 D0374PA00X+055197Y-022441X0669Y0768R270S0
+327NET-(Q1-G) Q1 -1 A01X+043819Y-021280X0354Y0315R000S2
+327GND Q1 -2 A01X+043819Y-022028X0354Y0315R000S2
+327NET-(Q1-D) Q1 -3 A01X+044606Y-021654X0354Y0315R000S2
+327CAN+ U1 -1 A01X+050295Y-020707X0768Y0236R000S2
+327GND U1 -2 A01X+050295Y-021207X0768Y0236R000S2
+327CAN_POWER U1 -3 A01X+050295Y-021707X0768Y0236R000S2
+327CAN- U1 -4 A01X+050295Y-022207X0768Y0236R000S2
+327(U1-VREF-PAD5) U1 -5 A01X+052244Y-022207X0768Y0236R000S2
+327NET-(J1-PIN_2) U1 -6 A01X+052244Y-021707X0768Y0236R000S2
+327NET-(J1-PIN_3) U1 -7 A01X+052244Y-021207X0768Y0236R000S2
+327NET-(U1-RS) U1 -8 A01X+052244Y-020707X0768Y0236R000S2
+327NET-(Q1-G) R8 -1 A01X+042520Y-021329X0315Y0374R090S2
+327GND R8 -2 A01X+042520Y-021978X0315Y0374R090S2
+327GND I1 -1 A01X+047835Y-025541X0384Y0551R270S2
+327NET-(I1-A) I1 -2 A01X+047835Y-024803X0384Y0551R270S2
+327NET-(Q1-G) R4 -1 A01X+040846Y-023346X0315Y0374R180S2
+327ENABLE_CAN R4 -2 A01X+040197Y-023346X0315Y0374R180S2
+999
diff --git a/board/modules/Sensors_can/ch32-sensor/.doomrc b/board/modules/Sensors_can/ch32-sensor/.doomrc
new file mode 100644
index 0000000..8acb61c
--- /dev/null
+++ b/board/modules/Sensors_can/ch32-sensor/.doomrc
@@ -0,0 +1,32 @@
+;;; .doomrc --- doom runtime config -*- mode: emacs-lisp; lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+(require 'doom) ; be silent, byte-compiler
+
+(after! dape
+ (add-to-list
+ 'dape-configs
+ `(gdb-dap-openocd
+ ensure (lambda (config)
+ (dape-ensure-command config)
+ (let* ((default-directory
+ (or (dape-config-get config 'command-cwd)
+ default-directory))
+ (command (dape-config-get config 'command))
+ (output (shell-command-to-string (format "%s --version" command)))
+ (version (save-match-data
+ (when (string-match "GNU gdb \\(?:(.*) \\)?\\([0-9.]+\\)" output)
+ (string-to-number (match-string 1 output))))))
+ (unless (>= version 14.1)
+ (user-error "Requires gdb version >= 14.1"))))
+ modes ()
+ command-cwd dape-command-cwd
+ command "gdb"
+ command-args ("--interpreter=dap")
+ :request nil
+ :program nil
+ :args []
+ :stopAtBeginningOfMainSubprogram nil))
+)
+
+;;; .doomrc ends here
diff --git a/board/modules/Sensors_can/ch32-sensor/.idea/.gitignore b/board/modules/Sensors_can/ch32-sensor/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/board/modules/Sensors_can/ch32-sensor/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/board/modules/Sensors_can/ch32-sensor/.idea/ch32-sensor.iml b/board/modules/Sensors_can/ch32-sensor/.idea/ch32-sensor.iml
new file mode 100644
index 0000000..cf84ae4
--- /dev/null
+++ b/board/modules/Sensors_can/ch32-sensor/.idea/ch32-sensor.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rust_can_sensor/.idea/vcs.xml b/rust_can_sensor/.idea/vcs.xml
index 288b36b..ed1b09d 100644
--- a/rust_can_sensor/.idea/vcs.xml
+++ b/rust_can_sensor/.idea/vcs.xml
@@ -3,5 +3,6 @@
+
\ No newline at end of file
diff --git a/rust_can_sensor/Cargo.toml b/rust_can_sensor/Cargo.toml
index 03333e6..3a58a8c 100644
--- a/rust_can_sensor/Cargo.toml
+++ b/rust_can_sensor/Cargo.toml
@@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-ch32-hal = { path = "/home/empire/workspace/ch32-hal/", features = [
+ch32-hal = { git = "https://github.com/empirephoenix/ch32-hal.git", features = [
"ch32v203c8t6",
"memory-x",
"embassy",
@@ -25,6 +25,7 @@ embassy-executor = { version = "0.7.0", features = [
embassy-usb = { version = "0.3.0" }
embassy-futures = { version = "0.1.0" }
embassy-sync = { version = "0.6.0" }
+embedded-can = "0.4.1"
# This is okay because we should automatically use whatever ch32-hal uses
qingke-rt = "*"
@@ -35,13 +36,14 @@ panic-halt = "1.0"
heapless = { version = "0.8.0", features = ["portable-atomic-critical-section"] }
embassy-time = { version = "0.4.0" }
+static_cell = "2.1.1"
[profile.dev]
#lto = true
opt-level = 1
[profile.release]
-strip = false # symbols are not flashed to the microcontroller, so don't strip them.
+strip = true # symbols are not flashed to the microcontroller, so don't strip them.
lto = true
debug = false
opt-level = "z" # Optimize for size.
diff --git a/rust_can_sensor/src/main.rs b/rust_can_sensor/src/main.rs
index da9a413..ecc4883 100644
--- a/rust_can_sensor/src/main.rs
+++ b/rust_can_sensor/src/main.rs
@@ -1,9 +1,14 @@
#![no_std]
#![no_main]
+
+use crate::hal::peripherals::CAN1;
use core::fmt::Write as _;
use ch32_hal::gpio::{Level, Output, Speed};
use ch32_hal::adc::{Adc, SampleTime, ADC_MAX};
+use ch32_hal::can;
+use ch32_hal::can::{Can, CanFifo, CanFilter, CanFrame, CanMode};
+use ch32_hal::mode::{Blocking, Mode};
use ch32_hal::peripherals::USBD;
// use ch32_hal::delay::Delay;
use embassy_executor::{Spawner, task};
@@ -14,22 +19,24 @@ use hal::usbd::{Driver};
use hal::{bind_interrupts};
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
use embassy_sync::channel::{Channel, TrySendError};
-use embassy_time::{Timer, Instant, Duration};
+use embassy_time::{Timer, Instant, Duration, Ticker};
+use embedded_can::StandardId;
use heapless::String;
use {ch32_hal as hal, panic_halt as _};
+macro_rules! mk_static {
+ ($t:ty,$val:expr) => {{
+ static STATIC_CELL: static_cell::StaticCell<$t> = static_cell::StaticCell::new();
+ #[deny(unused_attributes)]
+ let x = STATIC_CELL.uninit().write(($val));
+ x
+ }};
+}
+
bind_interrupts!(struct Irqs {
USB_LP_CAN1_RX0 => hal::usbd::InterruptHandler;
});
-// 'static storage for USB descriptors and state so we can spawn tasks
-static mut USB_CONFIG_DESCRIPTOR: [u8; 256] = [0; 256];
-static mut USB_BOS_DESCRIPTOR: [u8; 256] = [0; 256];
-static mut USB_CONTROL_BUF: [u8; 64] = [0; 64];
-static mut CDC_STATE: core::mem::MaybeUninit> = core::mem::MaybeUninit::uninit();
-static mut USB_DEVICE: core::mem::MaybeUninit>> = core::mem::MaybeUninit::uninit();
-static mut CDC_CLASS: core::mem::MaybeUninit>> = core::mem::MaybeUninit::uninit();
-
static LOG_CH: Channel, 8> = Channel::new();
#[embassy_executor::main(entry = "qingke_rt::entry")]
@@ -57,30 +64,25 @@ async fn main(spawner: Spawner) {
config.device_protocol = 0x00;
config.composite_with_iads = false;
- let usb = unsafe {
- let mut builder = Builder::new(
- driver,
- config,
- &mut USB_CONFIG_DESCRIPTOR,
- &mut USB_BOS_DESCRIPTOR,
- &mut [], // no msos descriptors
- &mut USB_CONTROL_BUF,
- );
+ let mut builder = Builder::new(
+ driver,
+ config,
+ mk_static!([u8;256], [0; 256]),
+ mk_static!([u8;256], [0; 256]),
+ &mut [], // no msos descriptors
+ mk_static!([u8;64], [0; 64]),
+ );
+ // Initialize CDC state and create CDC-ACM class
+ let class = mk_static!(CdcAcmClass<'static, Driver<'static, hal::peripherals::USBD>>,
+ CdcAcmClass::new(
+ &mut builder,
+ mk_static!(State, State::new()),
+ 64
+ )
+ );
- // Initialize CDC state and create CDC-ACM class
- CDC_STATE.write(State::new());
- let class = {
- let state_ref: &mut State<'static> = CDC_STATE.assume_init_mut();
- CdcAcmClass::new(&mut builder, state_ref, 64)
- };
- CDC_CLASS.write(class);
-
- // Build USB device
- let dev = builder.build();
- USB_DEVICE.write(dev);
-
- USB_DEVICE.assume_init_mut()
- };
+ // Build USB device
+ let usb = mk_static!(UsbDevice>, builder.build()) ;
// Create GPIO for 555 Q output (PB0)
let q_out = Output::new(p.PB0, Level::Low, Speed::Low);
@@ -91,15 +93,27 @@ async fn main(spawner: Spawner) {
let adc = Adc::new(p.ADC1, Default::default());
let ain = p.PA1;
+ let config = can::can::Config::default();
+ let can: Can<'static, CAN1 , Blocking> = Can::new_blocking(p.CAN1, p.PB8, p.PB9, CanFifo::Fifo1, CanMode::Normal, 500_000, config).expect("Valid");
+ let mut filter = CanFilter::new_id_list();
+
+ filter
+ .get(0)
+ .unwrap()
+ .set(StandardId::new(0x580 | 0x42).unwrap().into(), Default::default());
+
+ can.add_filter(CanFilter::accept_all());
+
+
// Spawn independent tasks using 'static references
unsafe {
- let class = CDC_CLASS.assume_init_mut();
spawner.spawn(usb_task(usb)).unwrap();
spawner.spawn(usb_writer(class)).unwrap();
// move Q output, LED, ADC and analog input into worker task
- spawner.spawn(worker(q_out, led, adc, ain)).unwrap();
+ spawner.spawn(worker(q_out, led, adc, ain, can)).unwrap();
}
+
// Prevent main from exiting
core::future::pending::<()>().await;
}
@@ -110,6 +124,7 @@ async fn worker(
mut led: Output<'static>,
mut adc: Adc<'static, hal::peripherals::ADC1>,
mut ain: hal::peripherals::PA1,
+ mut can: Can<'static, CAN1, Blocking>,
) {
// 555 emulation state: Q initially Low
let mut q_high = false;