Design and characterization of an ultra-low-cost 3D-printed optical sensor based on Bloch surface wave resonance