Add flowsensor prototype, add canbus to backplane
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -462,8 +462,8 @@ | ||||
|       "no_connect_dangling": "warning", | ||||
|       "pin_not_connected": "error", | ||||
|       "pin_not_driven": "error", | ||||
|       "pin_to_pin": "error", | ||||
|       "power_pin_not_driven": "error", | ||||
|       "pin_to_pin": "ignore", | ||||
|       "power_pin_not_driven": "ignore", | ||||
|       "same_local_global_label": "warning", | ||||
|       "similar_label_and_power": "warning", | ||||
|       "similar_labels": "warning", | ||||
|   | ||||
| @@ -4083,7 +4083,7 @@ | ||||
| 			(symbol "Sensor_1_1" | ||||
| 				(rectangle | ||||
| 					(start -5.08 -1.27) | ||||
| 					(end 5.08 -29.21) | ||||
| 					(end 5.08 -34.29) | ||||
| 					(stroke | ||||
| 						(width 0) | ||||
| 						(type solid) | ||||
| @@ -4110,7 +4110,7 @@ | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 				(pin no_connect line | ||||
| 				(pin power_in line | ||||
| 					(at 7.62 -5.08 180) | ||||
| 					(length 2.54) | ||||
| 					(name "VBAT" | ||||
| @@ -4182,10 +4182,10 @@ | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 				(pin output line | ||||
| 				(pin input line | ||||
| 					(at 7.62 -15.24 180) | ||||
| 					(length 2.54) | ||||
| 					(name "GND" | ||||
| 					(name "CAN_H" | ||||
| 						(effects | ||||
| 							(font | ||||
| 								(size 1.27 1.27) | ||||
| @@ -4200,10 +4200,10 @@ | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 				(pin output line | ||||
| 				(pin input line | ||||
| 					(at 7.62 -17.78 180) | ||||
| 					(length 2.54) | ||||
| 					(name "GND" | ||||
| 					(name "CAN_L" | ||||
| 						(effects | ||||
| 							(font | ||||
| 								(size 1.27 1.27) | ||||
| @@ -4290,6 +4290,42 @@ | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 				(pin output line | ||||
| 					(at 7.62 -30.48 180) | ||||
| 					(length 2.54) | ||||
| 					(name "GND" | ||||
| 						(effects | ||||
| 							(font | ||||
| 								(size 1.27 1.27) | ||||
| 							) | ||||
| 						) | ||||
| 					) | ||||
| 					(number "12" | ||||
| 						(effects | ||||
| 							(font | ||||
| 								(size 1.27 1.27) | ||||
| 							) | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 				(pin output line | ||||
| 					(at 7.62 -33.02 180) | ||||
| 					(length 2.54) | ||||
| 					(name "GND" | ||||
| 						(effects | ||||
| 							(font | ||||
| 								(size 1.27 1.27) | ||||
| 							) | ||||
| 						) | ||||
| 					) | ||||
| 					(number "13" | ||||
| 						(effects | ||||
| 							(font | ||||
| 								(size 1.27 1.27) | ||||
| 							) | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 			) | ||||
| 			(embedded_fonts no) | ||||
| 		) | ||||
| @@ -5116,16 +5152,6 @@ | ||||
| 		) | ||||
| 		(uuid f1cb09e6-74b4-43c4-8247-c9f441069dc5) | ||||
| 	) | ||||
| 	(text "free" | ||||
| 		(exclude_from_sim no) | ||||
| 		(at 180.848 72.39 0) | ||||
| 		(effects | ||||
| 			(font | ||||
| 				(size 1.27 1.27) | ||||
| 			) | ||||
| 		) | ||||
| 		(uuid "1556efd1-3aac-45ee-8113-03336077a83d") | ||||
| 	) | ||||
| 	(text "GPIO21 pulses high during flashing!\nGPIO19 is used for communication during flashing" | ||||
| 		(exclude_from_sim no) | ||||
| 		(at 202.692 102.362 0) | ||||
| @@ -5427,14 +5453,6 @@ | ||||
| 		(at 31.75 200.66) | ||||
| 		(uuid "133b7027-41a1-4e09-a1e6-24d8bb033b2a") | ||||
| 	) | ||||
| 	(no_connect | ||||
| 		(at 184.15 72.39) | ||||
| 		(uuid "5a1ba32e-b2ae-4014-aefc-1b75b4dc3c15") | ||||
| 	) | ||||
| 	(no_connect | ||||
| 		(at 184.15 67.31) | ||||
| 		(uuid "6d645bf1-339f-4b38-a26a-bdd168ca591e") | ||||
| 	) | ||||
| 	(no_connect | ||||
| 		(at 41.91 134.62) | ||||
| 		(uuid "6e3bf7f5-ac34-42e8-8ef5-a375f9ec4670") | ||||
| @@ -6873,7 +6891,7 @@ | ||||
| 	) | ||||
| 	(global_label "GND" | ||||
| 		(shape input) | ||||
| 		(at 125.73 176.53 0) | ||||
| 		(at 125.73 181.61 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| @@ -6883,7 +6901,7 @@ | ||||
| 		) | ||||
| 		(uuid "2b9f7359-b644-478f-ba13-5ea4a3466855") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 131.9315 176.53 0) | ||||
| 			(at 131.9315 181.61 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| @@ -7005,7 +7023,7 @@ | ||||
| 	) | ||||
| 	(global_label "GND" | ||||
| 		(shape input) | ||||
| 		(at 125.73 171.45 0) | ||||
| 		(at 125.73 176.53 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| @@ -7015,7 +7033,7 @@ | ||||
| 		) | ||||
| 		(uuid "36226fb3-6951-4568-90f3-daa99e609121") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 131.9315 171.45 0) | ||||
| 			(at 131.9315 176.53 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| @@ -7027,7 +7045,7 @@ | ||||
| 	) | ||||
| 	(global_label "GND" | ||||
| 		(shape input) | ||||
| 		(at 125.73 168.91 0) | ||||
| 		(at 125.73 173.99 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| @@ -7037,7 +7055,7 @@ | ||||
| 		) | ||||
| 		(uuid "36c40c19-19ac-4e9a-9c4c-07e2994aa2a1") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 131.9315 168.91 0) | ||||
| 			(at 131.9315 173.99 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| @@ -7357,7 +7375,7 @@ | ||||
| 	) | ||||
| 	(global_label "GND" | ||||
| 		(shape input) | ||||
| 		(at 125.73 166.37 0) | ||||
| 		(at 125.73 171.45 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| @@ -7367,7 +7385,7 @@ | ||||
| 		) | ||||
| 		(uuid "51e33a9c-f244-46d5-81be-410c3572200f") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 131.9315 166.37 0) | ||||
| 			(at 131.9315 171.45 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| @@ -7401,7 +7419,7 @@ | ||||
| 	) | ||||
| 	(global_label "GND" | ||||
| 		(shape input) | ||||
| 		(at 125.73 173.99 0) | ||||
| 		(at 125.73 179.07 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| @@ -7411,7 +7429,7 @@ | ||||
| 		) | ||||
| 		(uuid "56e799dc-2d2c-42c8-a5ef-7cbac761326d") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 131.9315 173.99 0) | ||||
| 			(at 131.9315 179.07 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| @@ -7707,6 +7725,28 @@ | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "CAN+" | ||||
| 		(shape input) | ||||
| 		(at 184.15 67.31 180) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| 				(size 1.27 1.27) | ||||
| 			) | ||||
| 			(justify right) | ||||
| 		) | ||||
| 		(uuid "6fca578f-ecf1-47ce-aa6b-29168a772f3c") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 176.5575 67.31 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| 				) | ||||
| 				(justify right) | ||||
| 				(hide yes) | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "ENABLE_TANK" | ||||
| 		(shape input) | ||||
| 		(at 274.32 114.3 180) | ||||
| @@ -8037,6 +8077,28 @@ | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "CAN+" | ||||
| 		(shape input) | ||||
| 		(at 125.73 166.37 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| 				(size 1.27 1.27) | ||||
| 			) | ||||
| 			(justify left) | ||||
| 		) | ||||
| 		(uuid "93024873-4376-41c4-a4ae-37490a45e129") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 133.3225 166.37 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| 				) | ||||
| 				(justify left) | ||||
| 				(hide yes) | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "GND" | ||||
| 		(shape input) | ||||
| 		(at 36.83 139.7 270) | ||||
| @@ -9313,9 +9375,31 @@ | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "CAN-" | ||||
| 		(shape input) | ||||
| 		(at 184.15 72.39 180) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| 				(size 1.27 1.27) | ||||
| 			) | ||||
| 			(justify right) | ||||
| 		) | ||||
| 		(uuid "f23eaf80-52f2-4322-aa76-67df8580ba2b") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 176.5575 72.39 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| 				) | ||||
| 				(justify right) | ||||
| 				(hide yes) | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "GND" | ||||
| 		(shape input) | ||||
| 		(at 125.73 179.07 0) | ||||
| 		(at 125.73 184.15 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| @@ -9325,7 +9409,7 @@ | ||||
| 		) | ||||
| 		(uuid "f33ceed4-257c-4060-8932-54eca2a9ad88") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 131.9315 179.07 0) | ||||
| 			(at 131.9315 184.15 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| @@ -9467,6 +9551,28 @@ | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "CAN-" | ||||
| 		(shape input) | ||||
| 		(at 125.73 168.91 0) | ||||
| 		(fields_autoplaced yes) | ||||
| 		(effects | ||||
| 			(font | ||||
| 				(size 1.27 1.27) | ||||
| 			) | ||||
| 			(justify left) | ||||
| 		) | ||||
| 		(uuid "f9ee87c2-9190-47ad-bd27-1fb56a8f0ec3") | ||||
| 		(property "Intersheetrefs" "${INTERSHEET_REFS}" | ||||
| 			(at 133.3225 168.91 0) | ||||
| 			(effects | ||||
| 				(font | ||||
| 					(size 1.27 1.27) | ||||
| 				) | ||||
| 				(justify left) | ||||
| 				(hide yes) | ||||
| 			) | ||||
| 		) | ||||
| 	) | ||||
| 	(global_label "ESP_TX" | ||||
| 		(shape input) | ||||
| 		(at 59.69 138.43 0) | ||||
| @@ -14171,6 +14277,12 @@ | ||||
| 		(pin "7" | ||||
| 			(uuid "3c606352-9f5a-4f2e-be79-76a5053cc312") | ||||
| 		) | ||||
| 		(pin "13" | ||||
| 			(uuid "61b8597b-c106-4d1b-b452-b64557e910c2") | ||||
| 		) | ||||
| 		(pin "12" | ||||
| 			(uuid "6432028b-d2db-43e4-9097-728a1d5b28eb") | ||||
| 		) | ||||
| 		(instances | ||||
| 			(project "" | ||||
| 				(path "/c26e8d55-0b6e-4c4e-b7c8-b1fed973201c" | ||||
|   | ||||
| @@ -428,7 +428,7 @@ | ||||
| 		(symbol "Sensor_1_1" | ||||
| 			(rectangle | ||||
| 				(start -5.08 -1.27) | ||||
| 				(end 5.08 -29.21) | ||||
| 				(end 5.08 -34.29) | ||||
| 				(stroke | ||||
| 					(width 0) | ||||
| 					(type solid) | ||||
| @@ -455,7 +455,7 @@ | ||||
| 					) | ||||
| 				) | ||||
| 			) | ||||
| 			(pin no_connect line | ||||
| 			(pin power_in line | ||||
| 				(at 7.62 -5.08 180) | ||||
| 				(length 2.54) | ||||
| 				(name "VBAT" | ||||
| @@ -527,10 +527,10 @@ | ||||
| 					) | ||||
| 				) | ||||
| 			) | ||||
| 			(pin output line | ||||
| 			(pin input line | ||||
| 				(at 7.62 -15.24 180) | ||||
| 				(length 2.54) | ||||
| 				(name "GND" | ||||
| 				(name "CAN_H" | ||||
| 					(effects | ||||
| 						(font | ||||
| 							(size 1.27 1.27) | ||||
| @@ -545,10 +545,10 @@ | ||||
| 					) | ||||
| 				) | ||||
| 			) | ||||
| 			(pin output line | ||||
| 			(pin input line | ||||
| 				(at 7.62 -17.78 180) | ||||
| 				(length 2.54) | ||||
| 				(name "GND" | ||||
| 				(name "CAN_L" | ||||
| 					(effects | ||||
| 						(font | ||||
| 							(size 1.27 1.27) | ||||
| @@ -635,6 +635,42 @@ | ||||
| 					) | ||||
| 				) | ||||
| 			) | ||||
| 			(pin output line | ||||
| 				(at 7.62 -30.48 180) | ||||
| 				(length 2.54) | ||||
| 				(name "GND" | ||||
| 					(effects | ||||
| 						(font | ||||
| 							(size 1.27 1.27) | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 				(number "12" | ||||
| 					(effects | ||||
| 						(font | ||||
| 							(size 1.27 1.27) | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 			) | ||||
| 			(pin output line | ||||
| 				(at 7.62 -33.02 180) | ||||
| 				(length 2.54) | ||||
| 				(name "GND" | ||||
| 					(effects | ||||
| 						(font | ||||
| 							(size 1.27 1.27) | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 				(number "13" | ||||
| 					(effects | ||||
| 						(font | ||||
| 							(size 1.27 1.27) | ||||
| 						) | ||||
| 					) | ||||
| 				) | ||||
| 			) | ||||
| 		) | ||||
| 		(embedded_fonts no) | ||||
| 	) | ||||
|   | ||||
| @@ -164,21 +164,21 @@ | ||||
| 		(remove_unused_layers no) | ||||
| 		(uuid "eee06414-e977-45a8-a5e0-618644284d45") | ||||
| 	) | ||||
| 	(pad "7" thru_hole rect | ||||
| 		(at -0.5 -12) | ||||
| 		(size 0.85 0.85) | ||||
| 		(drill 0.5) | ||||
| 	(pad "7" thru_hole circle | ||||
| 		(at -42.4 -0.06) | ||||
| 		(size 1.7 1.7) | ||||
| 		(drill 1) | ||||
| 		(layers "*.Cu" "*.Mask") | ||||
| 		(remove_unused_layers no) | ||||
| 		(uuid "536f0038-06c5-45e5-b1c8-898a364f6ec4") | ||||
| 		(uuid "a794ee5a-cb4c-4bc2-9f30-7f38ae9862fc") | ||||
| 	) | ||||
| 	(pad "8" thru_hole rect | ||||
| 		(at 39.5 -16) | ||||
| 		(size 0.85 0.85) | ||||
| 		(drill 0.5) | ||||
| 	(pad "8" thru_hole circle | ||||
| 		(at -42.4 2.48) | ||||
| 		(size 1.7 1.7) | ||||
| 		(drill 1) | ||||
| 		(layers "*.Cu" "*.Mask") | ||||
| 		(remove_unused_layers no) | ||||
| 		(uuid "3e0cdbaa-8219-48c4-bb0a-fd4f0e78a390") | ||||
| 		(uuid "f9ed5486-c56c-4c91-b707-d09fae18d351") | ||||
| 	) | ||||
| 	(pad "9" thru_hole rect | ||||
| 		(at 39.5 22.5) | ||||
| @@ -204,5 +204,21 @@ | ||||
| 		(remove_unused_layers no) | ||||
| 		(uuid "f423be21-13b8-46de-8e19-e48325411a29") | ||||
| 	) | ||||
| 	(pad "12" thru_hole rect | ||||
| 		(at -0.5 -12) | ||||
| 		(size 0.85 0.85) | ||||
| 		(drill 0.5) | ||||
| 		(layers "*.Cu" "*.Mask") | ||||
| 		(remove_unused_layers no) | ||||
| 		(uuid "536f0038-06c5-45e5-b1c8-898a364f6ec4") | ||||
| 	) | ||||
| 	(pad "13" thru_hole rect | ||||
| 		(at 39.5 -16) | ||||
| 		(size 0.85 0.85) | ||||
| 		(drill 0.5) | ||||
| 		(layers "*.Cu" "*.Mask") | ||||
| 		(remove_unused_layers no) | ||||
| 		(uuid "3e0cdbaa-8219-48c4-bb0a-fd4f0e78a390") | ||||
| 	) | ||||
| 	(embedded_fonts no) | ||||
| ) | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							| @@ -1,17 +1,45 @@ | ||||
| P  CODE 00 | ||||
| P  UNITS CUST 0 | ||||
| P  arrayDim   N | ||||
| 317CONFIG2          VIA        MD0157PA00X+060394Y-009724X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+058465Y-005591X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+060433Y-005591X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+050827Y-007402X0315Y0000R000S3 | ||||
| 317SDA              VIA        MD0157PA00X+050134Y-014937X0315Y0000R000S3 | ||||
| 317SCL              VIA        MD0157PA00X+051535Y-013898X0315Y0000R000S3 | ||||
| 317CHARGE           VIA        MD0157PA00X+071575Y-006732X0315Y0000R000S3 | ||||
| 317CAN-             VIA        MD0157PA00X+070354Y-006220X0315Y0000R000S3 | ||||
| 317CAN+             VIA        MD0157PA00X+064606Y-009213X0315Y0000R000S3 | ||||
| 317FLOW             VIA        MD0157PA00X+048543Y-021063X0315Y0000R000S3 | ||||
| 317TEMP             VIA        MD0157PA00X+048898Y-023268X0315Y0000R000S3 | ||||
| 317EN               VIA        MD0157PA00X+062697Y-009154X0315Y0000R000S3 | ||||
| 317EN               VIA        MD0157PA00X+062500Y-010827X0315Y0000R000S3 | ||||
| 317VBAT             VIA        MD0157PA00X+043130Y-036024X0315Y0000R000S3 | ||||
| 317VBAT             VIA        MD0157PA00X+043130Y-035039X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+064646Y-014567X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+075906Y-014331X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+074094Y-014331X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+067874Y-014567X0315Y0000R000S3 | ||||
| 317TEMP             VIA        MD0157PA00X+072343Y-012303X0315Y0000R000S3 | ||||
| 317TANK_SENSOR      VIA        MD0157PA00X+063091Y-007776X0315Y0000R000S3 | ||||
| 317TANK_SENSOR      VIA        MD0157PA00X+047244Y-017421X0315Y0000R000S3 | ||||
| 317CHARGE           VIA        MD0157PA00X+071575Y-006732X0315Y0000R000S3 | ||||
| 317SDA              VIA        MD0157PA00X+072441Y-010630X0315Y0000R000S3 | ||||
| 317SDA              VIA        MD0157PA00X+050134Y-014937X0315Y0000R000S3 | ||||
| 317SCL              VIA        MD0157PA00X+072441Y-011417X0315Y0000R000S3 | ||||
| 317SCL              VIA        MD0157PA00X+051535Y-013898X0315Y0000R000S3 | ||||
| 317NET-(CD1-A)      VIA        MD0157PA00X+058661Y-009843X0315Y0000R000S3 | ||||
| 317NET-(CD1-A)      VIA        MD0157PA00X+045866Y-005906X0315Y0000R000S3 | ||||
| 317CD_PROBE         VIA        MD0157PA00X+072638Y-009744X0315Y0000R000S3 | ||||
| 317ISDAY            VIA        MD0157PA00X+066929Y-011024X0315Y0000R000S3 | ||||
| 317LED_ENABLE       VIA        MD0157PA00X+064764Y-010728X0315Y0000R000S3 | ||||
| 317WORKING          VIA        MD0157PA00X+058661Y-011417X0315Y0000R000S3 | ||||
| 317WORKING          VIA        MD0157PA00X+069843Y-008858X0315Y0000R000S3 | ||||
| 317ENABLE_TANK      VIA        MD0157PA00X+062894Y-011516X0315Y0000R000S3 | ||||
| 317ENABLE_TANK      VIA        MD0157PA00X+050525Y-015584X0315Y0000R000S3 | ||||
| 317USB_D-           VIA        MD0157PA00X+045276Y-010305X0315Y0000R000S3 | ||||
| 317USB_D-           VIA        MD0157PA00X+063377Y-011752X0315Y0000R000S3 | ||||
| 317FLOW             VIA        MD0157PA00X+063484Y-007382X0315Y0000R000S3 | ||||
| 317USB_D+           VIA        MD0157PA00X+045276Y-010719X0315Y0000R000S3 | ||||
| 317USB_D+           VIA        MD0157PA00X+063377Y-012165X0315Y0000R000S3 | ||||
| 317BOOT_SEL         VIA        MD0157PA00X+064764Y-009744X0315Y0000R000S3 | ||||
| 317BOOT_SEL         VIA        MD0157PA00X+070374Y-012205X0315Y0000R000S3 | ||||
| 317WARN_LED         VIA        MD0157PA00X+069803Y-008465X0315Y0000R000S3 | ||||
| 317WARN_LED         VIA        MD0157PA00X+044390Y-005807X0315Y0000R000S3 | ||||
| 317CONFIG2          VIA        MD0157PA00X+060394Y-009724X0315Y0000R000S3 | ||||
| 317GND              VIA        MD1181PA00X+077500Y-007000X1575Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+062402Y-010433X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+054449Y-012323X0315Y0000R000S3 | ||||
| @@ -24,6 +52,7 @@ P  arrayDim   N | ||||
| 317GND              VIA        MD0157PA00X+058150Y-012323X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+054843Y-012323X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+043228Y-012480X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+050827Y-007402X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+047244Y-009646X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+060374Y-011594X0315Y0000R000S3 | ||||
| 317GND              VIA        MD1181PA00X+041500Y-042900X1575Y0000R000S3 | ||||
| @@ -58,6 +87,7 @@ P  arrayDim   N | ||||
| 317GND              VIA        MD0157PA00X+048228Y-011260X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+045669Y-007087X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+063386Y-011220X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+060433Y-005591X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+060472Y-012323X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+045699Y-017156X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+048661Y-009646X0315Y0000R000S3 | ||||
| @@ -91,8 +121,8 @@ P  arrayDim   N | ||||
| 317GND              VIA        MD0157PA00X+047953Y-009646X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+052205Y-009646X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+053780Y-010315X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+058465Y-005591X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+046181Y-009646X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+047283Y-023622X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+051496Y-009646X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+053583Y-011378X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+049016Y-034154X0315Y0000R000S3 | ||||
| @@ -110,7 +140,6 @@ P  arrayDim   N | ||||
| 317GND              VIA        MD0157PA00X+060059Y-012323X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+042283Y-013386X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+044764Y-009646X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+047205Y-025709X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+055709Y-011614X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+060827Y-012323X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+054134Y-011969X0315Y0000R000S3 | ||||
| @@ -128,126 +157,24 @@ P  arrayDim   N | ||||
| 317GND              VIA        MD0157PA00X+048583Y-011260X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+057185Y-011614X0315Y0000R000S3 | ||||
| 317GND              VIA        MD0157PA00X+042953Y-012756X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+064646Y-014567X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+075906Y-014331X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+074094Y-014331X0315Y0000R000S3 | ||||
| 3173_3V             VIA        MD0157PA00X+067874Y-014567X0315Y0000R000S3 | ||||
| 317TEMP             VIA        MD0157PA00X+072343Y-012303X0315Y0000R000S3 | ||||
| 317TEMP             VIA        MD0157PA00X+049099Y-026344X0315Y0000R000S3 | ||||
| 317TANK_SENSOR      VIA        MD0157PA00X+063091Y-007776X0315Y0000R000S3 | ||||
| 317TANK_SENSOR      VIA        MD0157PA00X+047244Y-017421X0315Y0000R000S3 | ||||
| 317SDA              VIA        MD0157PA00X+072441Y-010630X0315Y0000R000S3 | ||||
| 317SCL              VIA        MD0157PA00X+072441Y-011417X0315Y0000R000S3 | ||||
| 317NET-(CD1-A)      VIA        MD0157PA00X+058661Y-009843X0315Y0000R000S3 | ||||
| 317NET-(CD1-A)      VIA        MD0157PA00X+045866Y-005906X0315Y0000R000S3 | ||||
| 317CD_PROBE         VIA        MD0157PA00X+072638Y-009744X0315Y0000R000S3 | ||||
| 317ISDAY            VIA        MD0157PA00X+066929Y-011024X0315Y0000R000S3 | ||||
| 317LED_ENABLE       VIA        MD0157PA00X+064764Y-010728X0315Y0000R000S3 | ||||
| 317WORKING          VIA        MD0157PA00X+058661Y-011417X0315Y0000R000S3 | ||||
| 317WORKING          VIA        MD0157PA00X+069843Y-008858X0315Y0000R000S3 | ||||
| 317ENABLE_TANK      VIA        MD0157PA00X+062894Y-011516X0315Y0000R000S3 | ||||
| 317ENABLE_TANK      VIA        MD0157PA00X+050525Y-015584X0315Y0000R000S3 | ||||
| 317USB_D-           VIA        MD0157PA00X+045276Y-010305X0315Y0000R000S3 | ||||
| 317USB_D-           VIA        MD0157PA00X+063377Y-011752X0315Y0000R000S3 | ||||
| 317FLOW             VIA        MD0157PA00X+048543Y-023228X0315Y0000R000S3 | ||||
| 317FLOW             VIA        MD0157PA00X+063484Y-007382X0315Y0000R000S3 | ||||
| 317USB_D+           VIA        MD0157PA00X+045276Y-010719X0315Y0000R000S3 | ||||
| 317USB_D+           VIA        MD0157PA00X+063377Y-012165X0315Y0000R000S3 | ||||
| 317BOOT_SEL         VIA        MD0157PA00X+064764Y-009744X0315Y0000R000S3 | ||||
| 317BOOT_SEL         VIA        MD0157PA00X+070374Y-012205X0315Y0000R000S3 | ||||
| 317WARN_LED         VIA        MD0157PA00X+069803Y-008465X0315Y0000R000S3 | ||||
| 317WARN_LED         VIA        MD0157PA00X+044390Y-005807X0315Y0000R000S3 | ||||
| 317WARN_LED         J8    -1    D0394PA00X+055787Y-006386X0669Y0669R000S0 | ||||
| 317GND              J8    -2    D0394PA00X+055787Y-007386X0669Y0000R000S0 | ||||
| 317CONFIG2          J8    -3    D0394PA00X+055787Y-008386X0669Y0000R000S0 | ||||
| 317ESP_TX           J3    -1    D0394PA00X+073051Y-006457X0669Y0669R270S0 | ||||
| 317ESP_RX           J3    -2    D0394PA00X+074051Y-006457X0669Y0000R270S0 | ||||
| 327GND              U2    -1          A01X+064094Y-005709X0591Y0354R000S2 | ||||
| 3273_3V             U2    -2          A01X+064094Y-006209X0591Y0354R000S2 | ||||
| 327EN               U2    -3          A01X+064094Y-006709X0591Y0354R000S2 | ||||
| 327FLOW             U2    -4          A01X+064094Y-007209X0591Y0354R000S2 | ||||
| 327TANK_SENSOR      U2    -5          A01X+064094Y-007709X0591Y0354R000S2 | ||||
| 327EXTRA_1          U2    -6          A01X+064094Y-008209X0591Y0354R000S2 | ||||
| 327ISDAY            U2    -7          A01X+064094Y-008709X0591Y0354R000S2 | ||||
| 327-(U2-IO0-PAD8)   U2    -8          A01X+064094Y-009209X0591Y0354R000S2 | ||||
| 327BOOT_SEL         U2    -9          A01X+064094Y-009709X0591Y0354R000S2 | ||||
| 327(U2-IO8-PAD10)   U2    -10         A01X+064094Y-010209X0591Y0354R000S2 | ||||
| 327LED_ENABLE       U2    -11         A01X+064094Y-010709X0591Y0354R000S2 | ||||
| 327ENABLE_TANK      U2    -12         A01X+064094Y-011209X0591Y0354R000S2 | ||||
| 327USB_D-           U2    -13         A01X+064094Y-011709X0591Y0354R000S2 | ||||
| 327USB_D+           U2    -14         A01X+064094Y-012209X0591Y0354R000S2 | ||||
| 327BOOT_SEL         U2    -15         A01X+070984Y-012209X0591Y0354R000S2 | ||||
| 327TEMP             U2    -16         A01X+070984Y-011709X0591Y0354R000S2 | ||||
| 327SCL              U2    -17         A01X+070984Y-011209X0591Y0354R000S2 | ||||
| 327SDA              U2    -18         A01X+070984Y-010709X0591Y0354R000S2 | ||||
| 327WORKING          U2    -19         A01X+070984Y-010209X0591Y0354R000S2 | ||||
| 327CD_PROBE         U2    -20         A01X+070984Y-009709X0591Y0354R000S2 | ||||
| 327WARN_LED         U2    -21         A01X+070984Y-009209X0591Y0354R000S2 | ||||
| 327-(U2-NC-PAD22)   U2    -22         A01X+070984Y-008709X0591Y0354R000S2 | ||||
| 327EXTRA_2          U2    -23         A01X+070984Y-008209X0591Y0354R000S2 | ||||
| 327ESP_RX           U2    -24         A01X+070984Y-007709X0591Y0354R000S2 | ||||
| 327ESP_TX           U2    -25         A01X+070984Y-007209X0591Y0354R000S2 | ||||
| 327CHARGE           U2    -26         A01X+070984Y-006709X0591Y0354R000S2 | ||||
| 327(U2-IO2-PAD27)   U2    -27         A01X+070984Y-006209X0591Y0354R000S2 | ||||
| 327GND              U2    -28         A01X+070984Y-005709X0591Y0354R000S2 | ||||
| 327GND              U2    -29_5       A01X+066947Y-007961X0315Y0315R000S2 | ||||
| 327GND              U2    -29_1       A01X+066455Y-007469X0315Y0315R000S2 | ||||
| 327GND              U2    -29_2       A01X+066947Y-007469X0315Y0315R000S2 | ||||
| 327GND              U2    -29_3       A01X+067439Y-007469X0315Y0315R000S2 | ||||
| 327GND              U2    -29_4       A01X+066455Y-007961X0315Y0315R000S2 | ||||
| 327GND              U2    -29_6       A01X+067439Y-007961X0315Y0315R000S2 | ||||
| 327GND              U2    -29_7       A01X+066455Y-008453X0315Y0315R000S2 | ||||
| 327GND              U2    -29_8       A01X+066947Y-008453X0315Y0315R000S2 | ||||
| 327GND              U2    -29_9       A01X+067439Y-008453X0315Y0315R000S2 | ||||
| 317GND              U2    -30_1 D0098PA00X+066701Y-007469X0138Y0000R000S3 | ||||
| 317GND              U2    -30_2 D0098PA00X+067193Y-007469X0138Y0000R000S3 | ||||
| 317GND              U2    -30_3 D0098PA00X+066455Y-007715X0138Y0000R000S3 | ||||
| 317GND              U2    -30_4 D0098PA00X+066947Y-007715X0138Y0000R000S3 | ||||
| 317GND              U2    -30_5 D0098PA00X+067439Y-007715X0138Y0000R000S3 | ||||
| 317GND              U2    -30_6 D0098PA00X+066701Y-007961X0138Y0000R000S3 | ||||
| 317GND              U2    -30_7 D0098PA00X+067193Y-007961X0138Y0000R000S3 | ||||
| 317GND              U2    -30_8 D0098PA00X+066455Y-008207X0138Y0000R000S3 | ||||
| 317GND              U2    -30_9 D0098PA00X+066947Y-008207X0138Y0000R000S3 | ||||
| 317GND              U2    -30_1 D0098PA00X+067439Y-008207X0138Y0000R000S3 | ||||
| 317GND              U2    -30_1 D0098PA00X+066701Y-008453X0138Y0000R000S3 | ||||
| 317GND              U2    -30_1 D0098PA00X+067193Y-008453X0138Y0000R000S3 | ||||
| 317VBAT             U7    -1    D0433PA00X+042795Y-037835X0750Y0787R180S0 | ||||
| 317GND              U7    -2    D0433PA00X+041795Y-037835X0750Y0787R180S0 | ||||
| 3173_3V             U7    -3    D0433PA00X+040795Y-037835X0750Y0787R180S0 | ||||
| 327USB_D+           U1    -1          A01X+044124Y-010945X0522Y0236R180S2 | ||||
| 327GND              U1    -2          A01X+044124Y-010571X0522Y0236R180S2 | ||||
| 327USB_D-           U1    -3          A01X+044124Y-010197X0522Y0236R180S2 | ||||
| 327SLASH}O2-PAD4)   U1    -4          A01X+043228Y-010197X0522Y0236R180S2 | ||||
| 327USB_BUS          U1    -5          A01X+043228Y-010571X0522Y0236R180S2 | ||||
| 327SLASH}O1-PAD6)   U1    -6          A01X+043228Y-010945X0522Y0236R180S2 | ||||
| 3273_3V             R19   -2          A01X+048898Y-022037X0315Y0374R270S2 | ||||
| 327TEMP             R19   -1          A01X+048898Y-022687X0315Y0374R270S2 | ||||
| 3173_3V             U5    -1    D0394PA00X+046339Y-019764X0669Y0669R000S0 | ||||
| 317VBAT             U5    -2    D0394PA00X+046339Y-020764X0669Y0000R000S0 | ||||
| 317SDA              U5    -3    D0394PA00X+046339Y-021764X0669Y0000R000S0 | ||||
| 317SCL              U5    -4    D0394PA00X+046339Y-022764X0669Y0000R000S0 | ||||
| 317CD_PROBE         U5    -5    D0394PA00X+046339Y-023764X0669Y0000R000S0 | ||||
| 317CAN+             U5    -6    D0394PA00X+046339Y-024764X0669Y0000R000S0 | ||||
| 317CAN-             U5    -7    D0394PA00X+046339Y-025764X0669Y0000R000S0 | ||||
| 317GND              U5    -8    D0394PA00X+046339Y-026764X0669Y0000R000S0 | ||||
| 317GND              U5    -9    D0197PA00X+078583Y-034646X0335Y0335R000S0 | ||||
| 317GND              U5    -10   D0197PA00X+062835Y-031693X0335Y0335R000S0 | ||||
| 317GND              U5    -11   D0197PA00X+046102Y-034646X0335Y0335R000S0 | ||||
| 317GND              U5    -12   D0197PA00X+062835Y-021063X0335Y0335R000S0 | ||||
| 317GND              U5    -13   D0197PA00X+078583Y-019488X0335Y0335R000S0 | ||||
| 327GND              D11   -1          A01X+046506Y-030000X0581Y0236R180S2 | ||||
| 327VBAT             D11   -2          A01X+046506Y-029252X0581Y0236R180S2 | ||||
| 327NET-(D10-K)      D11   -3          A01X+045768Y-029626X0581Y0236R180S2 | ||||
| 327GND              D5    -1          A01X+048027Y-023602X0581Y0236R180S2 | ||||
| 3273_3V             D5    -2          A01X+048027Y-022854X0581Y0236R180S2 | ||||
| 327FLOW             D5    -3          A01X+047288Y-023228X0581Y0236R180S2 | ||||
| 327GND              D6    -1          A01X+046043Y-016811X0581Y0236R180S2 | ||||
| 3273_3V             D6    -2          A01X+046043Y-016063X0581Y0236R180S2 | ||||
| 327TANK_SENSOR      D6    -3          A01X+045305Y-016437X0581Y0236R180S2 | ||||
| 327GND              D7    -1          A01X+048027Y-025669X0581Y0236R180S2 | ||||
| 3273_3V             D7    -2          A01X+048027Y-024921X0581Y0236R180S2 | ||||
| 327TEMP             D7    -3          A01X+047288Y-025295X0581Y0236R180S2 | ||||
| 327GND              D3    -1          A01X+051102Y-007992X0581Y0236R000S2 | ||||
| 3273_3V             D3    -2          A01X+051102Y-008740X0581Y0236R000S2 | ||||
| 327SCL              D3    -3          A01X+051841Y-008366X0581Y0236R000S2 | ||||
| 327GND              D9    -1          A01X+046486Y-033760X0581Y0236R180S2 | ||||
| 327VBAT             D9    -2          A01X+046486Y-033012X0581Y0236R180S2 | ||||
| 327NET-(D8-K)       D9    -3          A01X+045748Y-033386X0581Y0236R180S2 | ||||
| 327GND              D1    -1          A01X+046033Y-007933X0581Y0236R000S2 | ||||
| 3273_3V             D1    -2          A01X+046033Y-008681X0581Y0236R000S2 | ||||
| 327SDA              D1    -3          A01X+046772Y-008307X0581Y0236R000S2 | ||||
| 327GND              D4    -1          A01X+045305Y-017520X0581Y0236R000S2 | ||||
| 3273_3V             D4    -2          A01X+045305Y-018268X0581Y0236R000S2 | ||||
| 327NET-(J4-PIN_1)   D4    -3          A01X+046043Y-017894X0581Y0236R000S2 | ||||
| 3173_3V             C9    -1    D0315PA00X+046165Y-012441X0630Y0630R000S0 | ||||
| 3173_3V             C9    -1    D0315PA00X+046429Y-013071X0630Y0630R000S0 | ||||
| 317GND              C9    -2    D0315PA00X+047413Y-013071X0630Y0000R000S0 | ||||
| 317GND              C9    -2    D0315PA00X+047677Y-013701X0630Y0000R000S0 | ||||
| 317VBAT             U3    -1    D0394PA00X+078189Y-017373X0669Y0669R000S0 | ||||
| 317ISDAY            U3    -2    D0394PA00X+078189Y-016373X0669Y0669R000S0 | ||||
| 317CHARGE           U3    -3    D0394PA00X+078189Y-015373X0669Y0669R000S0 | ||||
| @@ -259,8 +186,8 @@ P  arrayDim   N | ||||
| 317GND              U3    -9    D0394PA00X+050827Y-017869X0669Y0669R000S0 | ||||
| 317GND              U3    -10   D0394PA00X+059685Y-010782X0669Y0669R000S0 | ||||
| 317GND              U3    -11   D0394PA00X+059685Y-017869X0669Y0669R000S0 | ||||
| 327CONFIG2          Reset1-2          A01X+060394Y-009094X0591Y0591R090S2 | ||||
| 327GND              Reset1-1          A01X+060394Y-006024X0591Y0591R090S2 | ||||
| 327CONFIG2          Reset1-2          A01X+060394Y-009094X0591Y0591R090S2 | ||||
| 317GND              U6    -1    D0394PA00X+078465Y-036024X0669Y0669R090S0 | ||||
| 317GND              U6    -2    D0394PA00X+071378Y-044016X0669Y0669R000S0 | ||||
| 317GND              U6    -3    D0394PA00X+047756Y-044016X0669Y0669R000S0 | ||||
| @@ -293,8 +220,14 @@ P  arrayDim   N | ||||
| 327GND              R16   -2          A01X+048091Y-016043X0315Y0374R180S2 | ||||
| 327NET-(Q2-G)       R22   -1          A01X+047805Y-034843X0315Y0374R000S2 | ||||
| 327GND              R22   -2          A01X+048455Y-034843X0315Y0374R000S2 | ||||
| 327FLOW             D5    -3          A01X+047288Y-020295X0581Y0236R180S2 | ||||
| 3273_3V             D5    -2          A01X+048027Y-019921X0581Y0236R180S2 | ||||
| 327GND              D5    -1          A01X+048027Y-020669X0581Y0236R180S2 | ||||
| 327NET-(D2-K)       D2    -1          A01X+043701Y-006570X0384Y0551R270S2 | ||||
| 327WARN_LED         D2    -2          A01X+043701Y-005832X0384Y0551R270S2 | ||||
| 327GND              D6    -1          A01X+046043Y-016811X0581Y0236R180S2 | ||||
| 3273_3V             D6    -2          A01X+046043Y-016063X0581Y0236R180S2 | ||||
| 327TANK_SENSOR      D6    -3          A01X+045305Y-016437X0581Y0236R180S2 | ||||
| 327NET-(CD1-A)      R9    -1          A01X+058661Y-010305X0315Y0374R090S2 | ||||
| 327WORKING          R9    -2          A01X+058661Y-010955X0315Y0374R090S2 | ||||
| 317GND              J6    -1    D0394PA00X+046906Y-006220X0669Y0669R270S0 | ||||
| @@ -307,6 +240,15 @@ P  arrayDim   N | ||||
| 327NET-(D8-A)       D8    -2          A01X+040945Y-032505X0384Y0551R270S2 | ||||
| 327NET-(J2-PIN_2)   R2    -1          A01X+042943Y-014764X0315Y0374R000S2 | ||||
| 327GND              R2    -2          A01X+043593Y-014764X0315Y0374R000S2 | ||||
| 327USB_D+           U1    -1          A01X+044124Y-010945X0522Y0236R180S2 | ||||
| 327GND              U1    -2          A01X+044124Y-010571X0522Y0236R180S2 | ||||
| 327USB_D-           U1    -3          A01X+044124Y-010197X0522Y0236R180S2 | ||||
| 327SLASH}O2-PAD4)   U1    -4          A01X+043228Y-010197X0522Y0236R180S2 | ||||
| 327USB_BUS          U1    -5          A01X+043228Y-010571X0522Y0236R180S2 | ||||
| 327SLASH}O1-PAD6)   U1    -6          A01X+043228Y-010945X0522Y0236R180S2 | ||||
| 327TEMP             D7    -3          A01X+047288Y-022362X0581Y0236R180S2 | ||||
| 3273_3V             D7    -2          A01X+048027Y-021988X0581Y0236R180S2 | ||||
| 327GND              D7    -1          A01X+048027Y-022736X0581Y0236R180S2 | ||||
| 327VBAT             C8    -1          A01X+042534Y-036024X0463Y0571R180S2 | ||||
| 327GND              C8    -2          A01X+041718Y-036024X0463Y0571R180S2 | ||||
| 327NET-(R3-PAD1)    R3    -1          A01X+057677Y-012933X0315Y0374R090S2 | ||||
| @@ -315,10 +257,18 @@ P  arrayDim   N | ||||
| 327ENABLE_TANK      R14   -2          A01X+050089Y-016043X0315Y0374R000S2 | ||||
| 327GND              C1    -1          A01X+056299Y-011112X0423Y0374R270S2 | ||||
| 327T-(BOOT1-PAD2)   C1    -2          A01X+056299Y-010433X0423Y0374R270S2 | ||||
| 327TEMP             R19   -1          A01X+049099Y-025295X0315Y0374R000S2 | ||||
| 3273_3V             R19   -2          A01X+049749Y-025295X0315Y0374R000S2 | ||||
| 327GND              D3    -1          A01X+051102Y-007992X0581Y0236R000S2 | ||||
| 3273_3V             D3    -2          A01X+051102Y-008740X0581Y0236R000S2 | ||||
| 327SCL              D3    -3          A01X+051841Y-008366X0581Y0236R000S2 | ||||
| 3173_3V             C9    -1    D0315PA00X+046165Y-012441X0630Y0630R000S0 | ||||
| 3173_3V             C9    -1    D0315PA00X+046429Y-013071X0630Y0630R000S0 | ||||
| 317GND              C9    -2    D0315PA00X+047413Y-013071X0630Y0000R000S0 | ||||
| 317GND              C9    -2    D0315PA00X+047677Y-013701X0630Y0000R000S0 | ||||
| 3273_3V             C6    -1          A01X+062205Y-007392X0463Y0571R270S2 | ||||
| 327GND              C6    -2          A01X+062205Y-006575X0463Y0571R270S2 | ||||
| 317WARN_LED         J8    -1    D0394PA00X+055787Y-006386X0669Y0669R000S0 | ||||
| 317GND              J8    -2    D0394PA00X+055787Y-007386X0669Y0000R000S0 | ||||
| 317CONFIG2          J8    -3    D0394PA00X+055787Y-008386X0669Y0000R000S0 | ||||
| 327NET-(Q3-G)       R21   -1          A01X+047805Y-031102X0315Y0374R000S2 | ||||
| 327GND              R21   -2          A01X+048455Y-031102X0315Y0374R000S2 | ||||
| 317LED_ENABLE       U4    -1    D0394PA00X+074063Y-009173X0669Y0000R090S0 | ||||
| @@ -330,6 +280,9 @@ P  arrayDim   N | ||||
| 327NET-(Q3-G)       Q3    -1          A01X+047756Y-030413X0354Y0315R270S2 | ||||
| 327GND              Q3    -2          A01X+048504Y-030413X0354Y0315R270S2 | ||||
| 327NET-(D10-K)      Q3    -3          A01X+048130Y-029626X0354Y0315R270S2 | ||||
| 327GND              D9    -1          A01X+046486Y-033760X0581Y0236R180S2 | ||||
| 327VBAT             D9    -2          A01X+046486Y-033012X0581Y0236R180S2 | ||||
| 327NET-(D8-K)       D9    -3          A01X+045748Y-033386X0581Y0236R180S2 | ||||
| 327VBAT             R17   -1          A01X+046033Y-032185X0315Y0374R000S2 | ||||
| 327NET-(D8-A)       R17   -2          A01X+046683Y-032185X0315Y0374R000S2 | ||||
| 327GND              C5    -1          A01X+062992Y-010379X0423Y0374R270S2 | ||||
| @@ -340,8 +293,60 @@ P  arrayDim   N | ||||
| 327GND              R1    -2          A01X+044488Y-007667X0315Y0374R270S2 | ||||
| 327EXTRA_1          R20   -1          A01X+048455Y-031890X0315Y0374R180S2 | ||||
| 327NET-(Q3-G)       R20   -2          A01X+047805Y-031890X0315Y0374R180S2 | ||||
| 327GND              U2    -1          A01X+064094Y-005709X0591Y0354R000S2 | ||||
| 3273_3V             U2    -2          A01X+064094Y-006209X0591Y0354R000S2 | ||||
| 327EN               U2    -3          A01X+064094Y-006709X0591Y0354R000S2 | ||||
| 327FLOW             U2    -4          A01X+064094Y-007209X0591Y0354R000S2 | ||||
| 327TANK_SENSOR      U2    -5          A01X+064094Y-007709X0591Y0354R000S2 | ||||
| 327EXTRA_1          U2    -6          A01X+064094Y-008209X0591Y0354R000S2 | ||||
| 327ISDAY            U2    -7          A01X+064094Y-008709X0591Y0354R000S2 | ||||
| 327CAN+             U2    -8          A01X+064094Y-009209X0591Y0354R000S2 | ||||
| 327BOOT_SEL         U2    -9          A01X+064094Y-009709X0591Y0354R000S2 | ||||
| 327(U2-IO8-PAD10)   U2    -10         A01X+064094Y-010209X0591Y0354R000S2 | ||||
| 327LED_ENABLE       U2    -11         A01X+064094Y-010709X0591Y0354R000S2 | ||||
| 327ENABLE_TANK      U2    -12         A01X+064094Y-011209X0591Y0354R000S2 | ||||
| 327USB_D-           U2    -13         A01X+064094Y-011709X0591Y0354R000S2 | ||||
| 327USB_D+           U2    -14         A01X+064094Y-012209X0591Y0354R000S2 | ||||
| 327BOOT_SEL         U2    -15         A01X+070984Y-012209X0591Y0354R000S2 | ||||
| 327TEMP             U2    -16         A01X+070984Y-011709X0591Y0354R000S2 | ||||
| 327SCL              U2    -17         A01X+070984Y-011209X0591Y0354R000S2 | ||||
| 327SDA              U2    -18         A01X+070984Y-010709X0591Y0354R000S2 | ||||
| 327WORKING          U2    -19         A01X+070984Y-010209X0591Y0354R000S2 | ||||
| 327CD_PROBE         U2    -20         A01X+070984Y-009709X0591Y0354R000S2 | ||||
| 327WARN_LED         U2    -21         A01X+070984Y-009209X0591Y0354R000S2 | ||||
| 327-(U2-NC-PAD22)   U2    -22         A01X+070984Y-008709X0591Y0354R000S2 | ||||
| 327EXTRA_2          U2    -23         A01X+070984Y-008209X0591Y0354R000S2 | ||||
| 327ESP_RX           U2    -24         A01X+070984Y-007709X0591Y0354R000S2 | ||||
| 327ESP_TX           U2    -25         A01X+070984Y-007209X0591Y0354R000S2 | ||||
| 327CHARGE           U2    -26         A01X+070984Y-006709X0591Y0354R000S2 | ||||
| 327CAN-             U2    -27         A01X+070984Y-006209X0591Y0354R000S2 | ||||
| 327GND              U2    -28         A01X+070984Y-005709X0591Y0354R000S2 | ||||
| 327GND              U2    -29_1       A01X+066455Y-007469X0315Y0315R000S2 | ||||
| 327GND              U2    -29_2       A01X+066947Y-007469X0315Y0315R000S2 | ||||
| 327GND              U2    -29_3       A01X+067439Y-007469X0315Y0315R000S2 | ||||
| 327GND              U2    -29_4       A01X+066455Y-007961X0315Y0315R000S2 | ||||
| 327GND              U2    -29_5       A01X+066947Y-007961X0315Y0315R000S2 | ||||
| 327GND              U2    -29_6       A01X+067439Y-007961X0315Y0315R000S2 | ||||
| 327GND              U2    -29_7       A01X+066455Y-008453X0315Y0315R000S2 | ||||
| 327GND              U2    -29_8       A01X+066947Y-008453X0315Y0315R000S2 | ||||
| 327GND              U2    -29_9       A01X+067439Y-008453X0315Y0315R000S2 | ||||
| 317GND              U2    -30_1 D0098PA00X+066701Y-007469X0138Y0000R000S3 | ||||
| 317GND              U2    -30_2 D0098PA00X+067193Y-007469X0138Y0000R000S3 | ||||
| 317GND              U2    -30_3 D0098PA00X+066455Y-007715X0138Y0000R000S3 | ||||
| 317GND              U2    -30_4 D0098PA00X+066947Y-007715X0138Y0000R000S3 | ||||
| 317GND              U2    -30_5 D0098PA00X+067439Y-007715X0138Y0000R000S3 | ||||
| 317GND              U2    -30_6 D0098PA00X+066701Y-007961X0138Y0000R000S3 | ||||
| 317GND              U2    -30_7 D0098PA00X+067193Y-007961X0138Y0000R000S3 | ||||
| 317GND              U2    -30_8 D0098PA00X+066455Y-008207X0138Y0000R000S3 | ||||
| 317GND              U2    -30_9 D0098PA00X+066947Y-008207X0138Y0000R000S3 | ||||
| 317GND              U2    -30_1 D0098PA00X+067439Y-008207X0138Y0000R000S3 | ||||
| 317GND              U2    -30_1 D0098PA00X+066701Y-008453X0138Y0000R000S3 | ||||
| 317GND              U2    -30_1 D0098PA00X+067193Y-008453X0138Y0000R000S3 | ||||
| 317NET-(D10-K)      Extra_-1    D0394PA00X+042283Y-029616X0669Y0787R270S0 | ||||
| 317VBAT             Extra_-2    D0394PA00X+042283Y-028632X0669Y0787R270S0 | ||||
| 327GND              D1    -1          A01X+046033Y-007933X0581Y0236R000S2 | ||||
| 3273_3V             D1    -2          A01X+046033Y-008681X0581Y0236R000S2 | ||||
| 327SDA              D1    -3          A01X+046772Y-008307X0581Y0236R000S2 | ||||
| 3273_3V             R10   -1          A01X+073553Y-011417X0315Y0374R180S2 | ||||
| 327SCL              R10   -2          A01X+072904Y-011417X0315Y0374R180S2 | ||||
| 327EXTRA_2          R23   -1          A01X+048455Y-035728X0315Y0374R180S2 | ||||
| @@ -356,10 +361,15 @@ P  arrayDim   N | ||||
| 317TANK_SENSOR      J4    -2    D0295PA00X+042323Y-016850X0472Y0689R270S0 | ||||
| 327NET-(CD2-K)      CD2   -1          A01X+040945Y-017594X0384Y0551R270S2 | ||||
| 3273_3V             CD2   -2          A01X+040945Y-016855X0384Y0551R270S2 | ||||
| 317ESP_TX           J3    -1    D0394PA00X+073051Y-006457X0669Y0669R270S0 | ||||
| 317ESP_RX           J3    -2    D0394PA00X+074051Y-006457X0669Y0000R270S0 | ||||
| 327BOOT_SEL         R5    -1          A01X+057677Y-010305X0315Y0374R090S2 | ||||
| 327T-(BOOT1-PAD2)   R5    -2          A01X+057677Y-010955X0315Y0374R090S2 | ||||
| 327NET-(J4-PIN_1)   R13   -1          A01X+047047Y-018346X0315Y0374R090S2 | ||||
| 327NET-(CD2-K)      R13   -2          A01X+047047Y-018996X0315Y0374R090S2 | ||||
| 327GND              D4    -1          A01X+045305Y-017520X0581Y0236R000S2 | ||||
| 3273_3V             D4    -2          A01X+045305Y-018268X0581Y0236R000S2 | ||||
| 327NET-(J4-PIN_1)   D4    -3          A01X+046043Y-017894X0581Y0236R000S2 | ||||
| 327GND              CD1   -1          A01X+045177Y-006570X0384Y0551R270S2 | ||||
| 327NET-(CD1-A)      CD1   -2          A01X+045177Y-005832X0384Y0551R270S2 | ||||
| 327GND              C4    -1          A01X+060630Y-011166X0423Y0374R270S2 | ||||
| @@ -370,8 +380,8 @@ P  arrayDim   N | ||||
| 317USB_D-           J2    -4    D0295PA00X+041260Y-012165X0472Y0689R090S0 | ||||
| 317USB_D+           J2    -5    D0295PA00X+041260Y-012953X0472Y0689R090S0 | ||||
| 317GND              J2    -6    D0295PA00X+041260Y-013740X0472Y0689R090S0 | ||||
| 3273_3V             R15   -1          A01X+049680Y-023228X0315Y0374R180S2 | ||||
| 327FLOW             R15   -2          A01X+049031Y-023228X0315Y0374R180S2 | ||||
| 3273_3V             R15   -1          A01X+048858Y-019990X0315Y0374R090S2 | ||||
| 327FLOW             R15   -2          A01X+048858Y-020640X0315Y0374R090S2 | ||||
| 327NET-(Q1-G)       Q1    -1          A01X+048770Y-016831X0354Y0315R090S2 | ||||
| 327GND              Q1    -2          A01X+048022Y-016831X0354Y0315R090S2 | ||||
| 327NET-(J4-PIN_1)   Q1    -3          A01X+048396Y-017618X0354Y0315R090S2 | ||||
| @@ -380,20 +390,12 @@ P  arrayDim   N | ||||
| 327NET-(Q2-G)       Q2    -1          A01X+047776Y-034142X0354Y0315R270S2 | ||||
| 327GND              Q2    -2          A01X+048524Y-034142X0354Y0315R270S2 | ||||
| 327NET-(D8-K)       Q2    -3          A01X+048150Y-033354X0354Y0315R270S2 | ||||
| 317VBAT             U7    -1    D0433PA00X+042795Y-037835X0750Y0787R180S0 | ||||
| 317GND              U7    -2    D0433PA00X+041795Y-037835X0750Y0787R180S0 | ||||
| 3173_3V             U7    -3    D0433PA00X+040795Y-037835X0750Y0787R180S0 | ||||
| 317GND              J1    -1    D0394PA00X+047913Y-008346X0669Y0669R270S0 | ||||
| 317SDA              J1    -2    D0394PA00X+048913Y-008346X0669Y0000R270S0 | ||||
| 317SCL              J1    -3    D0394PA00X+049913Y-008346X0669Y0000R270S0 | ||||
| 327BOOT_SEL         R6    -1          A01X+057677Y-011683X0315Y0374R090S2 | ||||
| 327NET-(R3-PAD1)    R6    -2          A01X+057677Y-012333X0315Y0374R090S2 | ||||
| 3173_3V             U5    -1    D0394PA00X+046339Y-019764X0669Y0669R000S0 | ||||
| 317(U5-VBAT-PAD2)   U5    -2    D0394PA00X+046339Y-020764X0669Y0000R000S0 | ||||
| 317SDA              U5    -3    D0394PA00X+046339Y-021764X0669Y0000R000S0 | ||||
| 317SCL              U5    -4    D0394PA00X+046339Y-022764X0669Y0000R000S0 | ||||
| 317CD_PROBE         U5    -5    D0394PA00X+046339Y-023764X0669Y0000R000S0 | ||||
| 317GND              U5    -6    D0394PA00X+046339Y-024764X0669Y0000R000S0 | ||||
| 317GND              U5    -7    D0394PA00X+062835Y-021063X0669Y0669R000S0 | ||||
| 317GND              U5    -8    D0394PA00X+078583Y-019488X0669Y0669R000S0 | ||||
| 317GND              U5    -9    D0394PA00X+078583Y-034646X0669Y0669R000S0 | ||||
| 317GND              U5    -10   D0394PA00X+062835Y-031693X0669Y0669R000S0 | ||||
| 317GND              U5    -11   D0394PA00X+046102Y-034646X0669Y0669R000S0 | ||||
| 999 | ||||
|   | ||||
| @@ -58,6 +58,7 @@ pub struct TankConfig { | ||||
|     pub tank_warn_percent: u8, | ||||
|     pub tank_empty_percent: u8, | ||||
|     pub tank_full_percent: u8, | ||||
|     pub ml_per_pulse: f32 | ||||
| } | ||||
| impl Default for TankConfig { | ||||
|     fn default() -> Self { | ||||
| @@ -68,6 +69,7 @@ impl Default for TankConfig { | ||||
|             tank_warn_percent: 40, | ||||
|             tank_empty_percent: 5, | ||||
|             tank_full_percent: 95, | ||||
|             ml_per_pulse: 0.0, | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -110,6 +112,7 @@ pub struct PlantConfig { | ||||
|     pub mode: PlantWateringMode, | ||||
|     pub target_moisture: f32, | ||||
|     pub pump_time_s: u16, | ||||
|     pub pump_limit_ml: u16, | ||||
|     pub pump_cooldown_min: u16, | ||||
|     pub pump_hour_start: u8, | ||||
|     pub pump_hour_end: u8, | ||||
| @@ -129,6 +132,7 @@ impl Default for PlantConfig { | ||||
|             mode: PlantWateringMode::OFF, | ||||
|             target_moisture: 40., | ||||
|             pump_time_s: 30, | ||||
|             pump_limit_ml: 5000, | ||||
|             pump_cooldown_min: 60, | ||||
|             pump_hour_start: 9, | ||||
|             pump_hour_end: 20, | ||||
|   | ||||
| @@ -47,6 +47,7 @@ use once_cell::sync::Lazy; | ||||
| use std::result::Result::Ok as OkStd; | ||||
| use std::sync::Mutex; | ||||
| use std::time::Duration; | ||||
| use esp_idf_hal::pcnt::PCNT1; | ||||
|  | ||||
| //Only support for 8 right now! | ||||
| pub const PLANT_COUNT: usize = 8; | ||||
| @@ -154,6 +155,7 @@ pub struct FreePeripherals { | ||||
|     pub gpio29: Gpio29, | ||||
|     pub gpio30: Gpio30, | ||||
|     pub pcnt0: PCNT0, | ||||
|     pub pcnt1: PCNT1, | ||||
|     pub adc1: ADC1, | ||||
| } | ||||
|  | ||||
| @@ -186,6 +188,7 @@ impl PlantHal { | ||||
|         let free_pins = FreePeripherals { | ||||
|             adc1: peripherals.adc1, | ||||
|             pcnt0: peripherals.pcnt0, | ||||
|             pcnt1: peripherals.pcnt1, | ||||
|             gpio0: peripherals.pins.gpio0, | ||||
|             gpio1: peripherals.pins.gpio1, | ||||
|             gpio2: peripherals.pins.gpio2, | ||||
|   | ||||
| @@ -124,12 +124,16 @@ pub(crate) fn create_v3( | ||||
|     let one_wire_pin = peripherals.gpio18.downgrade(); | ||||
|     let tank_power_pin = peripherals.gpio11.downgrade(); | ||||
|  | ||||
|     let flow_sensor_pin = peripherals.gpio4.downgrade(); | ||||
|  | ||||
|     let tank_sensor = TankSensor::create( | ||||
|         one_wire_pin, | ||||
|         peripherals.adc1, | ||||
|         peripherals.gpio5, | ||||
|         tank_power_pin, | ||||
|     ); | ||||
|         flow_sensor_pin, | ||||
|         peripherals.pcnt1 | ||||
|     )?; | ||||
|  | ||||
|     let mut signal_counter = PcntDriver::new( | ||||
|         peripherals.pcnt0, | ||||
|   | ||||
| @@ -152,13 +152,16 @@ pub(crate) fn create_v4( | ||||
|  | ||||
|     let one_wire_pin = peripherals.gpio18.downgrade(); | ||||
|     let tank_power_pin = peripherals.gpio11.downgrade(); | ||||
|     let flow_sensor_pin = peripherals.gpio4.downgrade(); | ||||
|  | ||||
|     let tank_sensor = TankSensor::create( | ||||
|         one_wire_pin, | ||||
|         peripherals.adc1, | ||||
|         peripherals.gpio5, | ||||
|         tank_power_pin, | ||||
|     ); | ||||
|         flow_sensor_pin, | ||||
|         peripherals.pcnt1 | ||||
|     )?; | ||||
|  | ||||
|     let mut signal_counter = PcntDriver::new( | ||||
|         peripherals.pcnt0, | ||||
|   | ||||
| @@ -5,7 +5,8 @@ use esp_idf_hal::adc::oneshot::config::AdcChannelConfig; | ||||
| use esp_idf_hal::adc::oneshot::{AdcChannelDriver, AdcDriver}; | ||||
| use esp_idf_hal::adc::{attenuation, Resolution, ADC1}; | ||||
| use esp_idf_hal::delay::Delay; | ||||
| use esp_idf_hal::gpio::{AnyIOPin, Gpio5, InputOutput, PinDriver, Pull}; | ||||
| use esp_idf_hal::gpio::{AnyIOPin, AnyInputPin, Gpio5, InputOutput, PinDriver, Pull}; | ||||
| use esp_idf_hal::pcnt::{PcntChannel, PcntChannelConfig, PcntControlMode, PcntCountMode, PcntDriver, PinIndex, PCNT1}; | ||||
| use esp_idf_sys::EspError; | ||||
| use one_wire_bus::OneWire; | ||||
|  | ||||
| @@ -13,6 +14,7 @@ pub struct TankSensor<'a> { | ||||
|     one_wire_bus: OneWire<PinDriver<'a, AnyIOPin, InputOutput>>, | ||||
|     tank_channel: AdcChannelDriver<'a, Gpio5, AdcDriver<'a, ADC1>>, | ||||
|     tank_power: PinDriver<'a, AnyIOPin, InputOutput>, | ||||
|     flow_counter: PcntDriver<'a>, | ||||
|     delay: Delay, | ||||
| } | ||||
|  | ||||
| @@ -22,7 +24,9 @@ impl<'a> TankSensor<'a> { | ||||
|         adc1: ADC1, | ||||
|         gpio5: Gpio5, | ||||
|         tank_power_pin: AnyIOPin, | ||||
|     ) -> TankSensor<'a> { | ||||
|         flow_sensor_pin: AnyIOPin, | ||||
|         pcnt1: PCNT1 | ||||
|     ) -> anyhow::Result<TankSensor<'a>> { | ||||
|         let mut one_wire_pin = | ||||
|             PinDriver::input_output_od(one_wire_pin).expect("Failed to configure pin"); | ||||
|         one_wire_pin | ||||
| @@ -47,12 +51,54 @@ impl<'a> TankSensor<'a> { | ||||
|         let one_wire_bus = | ||||
|             OneWire::new(one_wire_pin).expect("OneWire bus did not pull up after release"); | ||||
|  | ||||
|         TankSensor { | ||||
|         let mut flow_counter = PcntDriver::new( | ||||
|             pcnt1, | ||||
|             Some(flow_sensor_pin), | ||||
|             Option::<AnyInputPin>::None, | ||||
|             Option::<AnyInputPin>::None, | ||||
|             Option::<AnyInputPin>::None, | ||||
|         )?; | ||||
|  | ||||
|         flow_counter.channel_config( | ||||
|             PcntChannel::Channel1, | ||||
|             PinIndex::Pin0, | ||||
|             PinIndex::Pin1, | ||||
|             &PcntChannelConfig { | ||||
|                 lctrl_mode: PcntControlMode::Keep, | ||||
|                 hctrl_mode: PcntControlMode::Keep, | ||||
|                 pos_mode: PcntCountMode::Increment, | ||||
|                 neg_mode: PcntCountMode::Hold, | ||||
|                 counter_h_lim: i16::MAX, | ||||
|                 counter_l_lim: 0, | ||||
|             }, | ||||
|         )?; | ||||
|  | ||||
|  | ||||
|         Ok(TankSensor { | ||||
|             one_wire_bus, | ||||
|             tank_channel, | ||||
|             tank_power, | ||||
|             flow_counter, | ||||
|             delay: Default::default(), | ||||
|         } | ||||
|         }) | ||||
|     } | ||||
|  | ||||
|     pub fn reset_flow_meter(&mut self) { | ||||
|         self.flow_counter.counter_pause().unwrap(); | ||||
|         self.flow_counter.counter_clear().unwrap(); | ||||
|     } | ||||
|  | ||||
|     pub fn start_flow_meter(&mut self) { | ||||
|         self.flow_counter.counter_resume().unwrap(); | ||||
|     } | ||||
|  | ||||
|     pub fn get_flow_meter_value(&mut self) -> i16 { | ||||
|         self.flow_counter.get_counter_value().unwrap() | ||||
|     } | ||||
|  | ||||
|     pub fn stop_flow_meter(&mut self) -> i16 { | ||||
|         self.flow_counter.counter_pause().unwrap(); | ||||
|         self.get_flow_meter_value() | ||||
|     } | ||||
|  | ||||
|     pub fn water_temperature_c(&mut self) -> anyhow::Result<f32> { | ||||
|   | ||||
| @@ -88,6 +88,9 @@ pub struct PumpResult { | ||||
|     max_current_ma: u16, | ||||
|     min_current_ma: u16, | ||||
|     error: bool, | ||||
|     flow_value_ml: f32, | ||||
|     flow_value_count: i16, | ||||
|     pump_time_s: u16, | ||||
| } | ||||
|  | ||||
| #[derive(Serialize, Deserialize, Debug, PartialEq)] | ||||
| @@ -583,12 +586,26 @@ pub fn do_secure_pump( | ||||
|     dry_run: bool, | ||||
| ) -> anyhow::Result<PumpResult> { | ||||
|     let mut current_collector = vec![0_u16; plant_config.pump_time_s.into()]; | ||||
|     let mut flow_collector = vec![0_i16; plant_config.pump_time_s.into()]; | ||||
|     let mut error = false; | ||||
|     let mut first_error = true; | ||||
|     let mut pump_time_s = 0; | ||||
|     if !dry_run { | ||||
|         board.board_hal.get_tank_sensor().unwrap().reset_flow_meter(); | ||||
|         board.board_hal.get_tank_sensor().unwrap().start_flow_meter(); | ||||
|         board.board_hal.pump(plant_id, true)?; | ||||
|         Delay::new_default().delay_ms(2); | ||||
|         Delay::new_default().delay_ms(10); | ||||
|         for step in 0..plant_config.pump_time_s as usize { | ||||
|             let flow_value = board.board_hal.get_tank_sensor().unwrap().get_flow_meter_value(); | ||||
|             flow_collector[step] = flow_value; | ||||
|             let flow_value_ml = flow_value as f32 * board.board_hal.get_config().tank.ml_per_pulse; | ||||
|  | ||||
|             println!("Flow value is {} ml, limit is {} ml raw sensor {}", flow_value_ml, plant_config.pump_limit_ml, flow_value); | ||||
|             if flow_value_ml > plant_config.pump_limit_ml as f32 { | ||||
|                 println!("Flow value is reached, stopping"); | ||||
|                 break; | ||||
|             } | ||||
|  | ||||
|             let current = board.board_hal.pump_current(plant_id); | ||||
|             match current { | ||||
|                 Ok(current) => { | ||||
| @@ -651,13 +668,21 @@ pub fn do_secure_pump( | ||||
|                 } | ||||
|             } | ||||
|             Delay::new_default().delay_ms(1000); | ||||
|             pump_time_s += 1; | ||||
|         } | ||||
|     } | ||||
|     board.board_hal.get_tank_sensor().unwrap().stop_flow_meter(); | ||||
|     let final_flow_value = board.board_hal.get_tank_sensor().unwrap().get_flow_meter_value(); | ||||
|     let flow_value_ml = final_flow_value as f32 * board.board_hal.get_config().tank.ml_per_pulse; | ||||
|     println!("Final flow value is {} with {} ml", final_flow_value, flow_value_ml); | ||||
|     current_collector.sort(); | ||||
|     Ok(PumpResult { | ||||
|         median_current_ma: current_collector[current_collector.len() / 2], | ||||
|         max_current_ma: current_collector[current_collector.len() - 1], | ||||
|         min_current_ma: current_collector[0], | ||||
|         flow_value_ml, | ||||
|         flow_value_count: final_flow_value, | ||||
|         pump_time_s, | ||||
|         error, | ||||
|     }) | ||||
| } | ||||
|   | ||||
| @@ -71,6 +71,7 @@ export interface TankConfig { | ||||
|     tank_warn_percent: number, | ||||
|     tank_empty_percent: number, | ||||
|     tank_full_percent: number, | ||||
|     ml_per_pulse: number | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -122,6 +123,9 @@ export interface PumpTestResult { | ||||
|     median_current_ma: number, | ||||
|     max_current_ma: number, | ||||
|     min_current_ma: number, | ||||
|     flow_value_ml: number, | ||||
|     flow_value_count: number, | ||||
|     pump_time_s: number, | ||||
|     error: boolean, | ||||
| } | ||||
|  | ||||
| @@ -182,4 +186,4 @@ export interface TankInfo { | ||||
|     /// water temperature | ||||
|     water_temp: number | null, | ||||
|     temp_sensor_error: string | null | ||||
| } | ||||
| } | ||||
| @@ -20,16 +20,16 @@ | ||||
|         margin: 0; | ||||
|     } | ||||
|  | ||||
|     .plantTargetEnabledOnly_${plantId}{ | ||||
|     .plantTargetEnabledOnly_ ${plantId} { | ||||
|     } | ||||
|  | ||||
|     .plantPumpEnabledOnly_${plantId}{ | ||||
|     .plantPumpEnabledOnly_ ${plantId} { | ||||
|     } | ||||
|  | ||||
|     .plantSensorEnabledOnly_${plantId}{ | ||||
|     .plantSensorEnabledOnly_ ${plantId} { | ||||
|     } | ||||
|  | ||||
|     .plantHidden_${plantId} { | ||||
|     .plantHidden_ ${plantId} { | ||||
|         display: none; | ||||
|     } | ||||
| </style> | ||||
| @@ -129,8 +129,28 @@ | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_moisture_b">not measured</span> | ||||
|     </div> | ||||
|     <div class="flexcontainer plantPumpEnabledOnly_${plantId}"> | ||||
|         <div class="plantsensorkey">Test Current</div> | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_pump_current_result">not_tested</span> | ||||
|         <div class="plantsensorkey">Max Current</div> | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_pump_test_current_max">not_tested</span> | ||||
|     </div> | ||||
|     <div class="flexcontainer plantPumpEnabledOnly_${plantId}"> | ||||
|         <div class="plantsensorkey">Min Current</div> | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_pump_test_current_min">not_tested</span> | ||||
|     </div> | ||||
|     <div class="flexcontainer plantPumpEnabledOnly_${plantId}"> | ||||
|         <div class="plantsensorkey">Average</div> | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_pump_test_current_average">not_tested</span> | ||||
|     </div> | ||||
|     <div class="flexcontainer plantPumpEnabledOnly_${plantId}"> | ||||
|         <div class="plantsensorkey">Pump Time</div> | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_pump_test_pump_time">not_tested</span> | ||||
|     </div> | ||||
|     <div class="flexcontainer plantPumpEnabledOnly_${plantId}"> | ||||
|         <div class="plantsensorkey">Flow ml</div> | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_pump_test_flow_ml">not_tested</span> | ||||
|     </div> | ||||
|     <div class="flexcontainer plantPumpEnabledOnly_${plantId}"> | ||||
|         <div class="plantsensorkey">Flow raw</div> | ||||
|         <span class="plantsensorvalue" id="plant_${plantId}_pump_test_flow_raw">not_tested</span> | ||||
|     </div> | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -68,12 +68,18 @@ export class PlantView { | ||||
|     private readonly mode: HTMLSelectElement; | ||||
|     private readonly moistureA: HTMLElement; | ||||
|     private readonly moistureB: HTMLElement; | ||||
|     private readonly pump_current_result: HTMLElement | ||||
|     private readonly maxConsecutivePumpCount: HTMLInputElement; | ||||
|     private readonly minPumpCurrentMa: HTMLInputElement; | ||||
|     private readonly maxPumpCurrentMa: HTMLInputElement; | ||||
|     private readonly ignoreCurrentError: HTMLInputElement; | ||||
|  | ||||
|     private readonly pump_test_current_max: HTMLElement; | ||||
|     private readonly pump_test_current_min: HTMLElement; | ||||
|     private readonly pump_test_current_average: HTMLElement; | ||||
|     private readonly pump_test_pump_time: HTMLElement; | ||||
|     private readonly pump_test_flow_ml: HTMLElement; | ||||
|     private readonly pump_test_flow_raw: HTMLElement; | ||||
|  | ||||
|  | ||||
|     constructor(plantId: number, parent: HTMLDivElement, controller: Controller) { | ||||
|         this.plantId = plantId; | ||||
| @@ -89,8 +95,13 @@ export class PlantView { | ||||
|  | ||||
|         this.moistureA = document.getElementById("plant_" + plantId + "_moisture_a")! as HTMLElement; | ||||
|         this.moistureB = document.getElementById("plant_" + plantId + "_moisture_b")! as HTMLElement; | ||||
|         this.pump_current_result = document.getElementById("plant_" + plantId + "_pump_current_result")! as HTMLElement; | ||||
|  | ||||
|         this.pump_test_current_max = document.getElementById("plant_" + plantId + "_pump_test_current_max")! as HTMLElement; | ||||
|         this.pump_test_current_min = document.getElementById("plant_" + plantId + "_pump_test_current_min")! as HTMLElement; | ||||
|         this.pump_test_current_average = document.getElementById("plant_" + plantId + "_pump_test_current_average")! as HTMLElement; | ||||
|         this.pump_test_pump_time = document.getElementById("plant_" + plantId + "_pump_test_pump_time")! as HTMLElement; | ||||
|         this.pump_test_flow_ml = document.getElementById("plant_" + plantId + "_pump_test_flow_ml")! as HTMLElement; | ||||
|         this.pump_test_flow_raw = document.getElementById("plant_" + plantId + "_pump_test_flow_raw")! as HTMLElement; | ||||
|  | ||||
|         this.testButton = document.getElementById("plant_" + plantId + "_test")! as HTMLButtonElement; | ||||
|         this.testButton.onclick = function () { | ||||
| @@ -226,7 +237,14 @@ export class PlantView { | ||||
|     } | ||||
|  | ||||
|     setTestResult(result: PumpTestResult) { | ||||
|         this.pump_current_result.innerText = "Did abort " + result.error + " median current " + result.median_current_ma + " max current " + result.max_current_ma + " min current " + result.min_current_ma | ||||
|         this.pump_test_current_max.innerText = result.max_current_ma.toString() | ||||
|         this.pump_test_current_min.innerText = result.min_current_ma.toString() | ||||
|         this.pump_test_current_average.innerText = result.median_current_ma.toString() | ||||
|  | ||||
|         this.pump_test_flow_raw.innerText = result.flow_value_count.toString() | ||||
|         this.pump_test_flow_ml.innerText = result.flow_value_ml.toString() | ||||
|  | ||||
|         this.pump_test_pump_time.innerText = result.pump_time_s.toString() | ||||
|     } | ||||
|  | ||||
|     setMeasurementResult(a: string, b: string) { | ||||
|   | ||||
| @@ -48,6 +48,10 @@ | ||||
|   <div class="tankkey">Full at %</div> | ||||
|   <input class="tankvalue" type="number" min="0" max="100" id="tank_full_percent"> | ||||
| </div> | ||||
| <div class="flexcontainer"> | ||||
|   <div class="tankkey">Flow Sensor ml per pulse</div> | ||||
|   <input class="tankvalue" type="number" min="0" max="1000" step="0.01" id="ml_per_pulse"> | ||||
| </div> | ||||
| <button id="tank_update">Update Tank</button> | ||||
|  | ||||
|  | ||||
| @@ -82,4 +86,4 @@ | ||||
| <div class="flexcontainer"> | ||||
|   <div class="tankkey">Warn Level</div> | ||||
|   <label class="tankvalue"  id="tank_measure_warnlevel"></label> | ||||
| </div> | ||||
| </div> | ||||
| @@ -8,6 +8,7 @@ export class TankConfigView { | ||||
|     private readonly tank_warn_percent: HTMLInputElement; | ||||
|     private readonly tank_sensor_enabled: HTMLInputElement; | ||||
|     private readonly tank_allow_pumping_if_sensor_error: HTMLInputElement; | ||||
|     private readonly ml_per_pulse: HTMLInputElement; | ||||
|     private readonly tank_measure_error: HTMLLabelElement; | ||||
|     private readonly tank_measure_ml: HTMLLabelElement; | ||||
|     private readonly tank_measure_percent: HTMLLabelElement; | ||||
| @@ -54,6 +55,8 @@ export class TankConfigView { | ||||
|       this.tank_sensor_enabled.onchange = controller.configChanged | ||||
|       this.tank_allow_pumping_if_sensor_error = document.getElementById("tank_allow_pumping_if_sensor_error") as HTMLInputElement; | ||||
|       this.tank_allow_pumping_if_sensor_error.onchange = controller.configChanged | ||||
|       this.ml_per_pulse = document.getElementById("ml_per_pulse") as HTMLInputElement; | ||||
|       this.ml_per_pulse.onchange = controller.configChanged | ||||
|  | ||||
|       let tank_update = document.getElementById("tank_update") as HTMLInputElement; | ||||
|       tank_update.onclick = () => { | ||||
| @@ -141,6 +144,7 @@ export class TankConfigView { | ||||
|       this.tank_full_percent.value = String(tank.tank_full_percent) | ||||
|       this.tank_sensor_enabled.checked = tank.tank_sensor_enabled | ||||
|       this.tank_useable_ml.value = String(tank.tank_useable_ml) | ||||
|       this.ml_per_pulse.value = String(tank.ml_per_pulse) | ||||
|     } | ||||
|     getConfig(): TankConfig { | ||||
|       return { | ||||
| @@ -149,7 +153,8 @@ export class TankConfigView { | ||||
|         tank_full_percent: this.tank_full_percent.valueAsNumber, | ||||
|         tank_sensor_enabled: this.tank_sensor_enabled.checked, | ||||
|         tank_useable_ml: this.tank_useable_ml.valueAsNumber, | ||||
|         tank_warn_percent: this.tank_warn_percent.valueAsNumber | ||||
|         tank_warn_percent: this.tank_warn_percent.valueAsNumber, | ||||
|         ml_per_pulse: this.ml_per_pulse.valueAsNumber | ||||
|       } | ||||
|     } | ||||
|   } | ||||
		Reference in New Issue
	
	Block a user