A visible light communication question concerning a preamble sequence
Preamble are used for byte level synchronization in the Ethernet Layer which is basically a byte oriented protocol, unlike HDLC a bit oriented protocol it works on frames/packets which are byte sized.

In all the developed protocols the synchronization of the bits,bytes and packets has remain a topic to deal with and various algo has been developed for efficient overhead generation. In bit oriented protocols Flags are used which are represented as 01111110 sequence of bits which helps to identify the start of the frame, when this sequence was identified in the payload it was replaced by the receiver.For more information see bit stuffing.

In case of byte-stuffing protocols such that Ethernet preamble is used to synchronize the bytes,same problem can arise for byte-stuffing also where data may be appear as the preamble pattern  inside the payload, to avoid this various types of algorithms are used as stated, and special ESC bytes are stuffed in between when flag or additional ESC occurs in data.

Considering your case it depends which type of compatibility your system desires, you can design variable preamble but the main idea will be to limit its occurrence, i.e using a less likely pattern which reduces the times your receiver will encounter data same as that of your preamble.

Its purely a system dependent call, you can simplify you design ,if your data is limited to alphabetical and numerical context, then any special character in extended ASCII can be used as preamble, but if it involves complex data types, and formats then ofcourses you will need to generate a preamble code wisely, also it is rather suggested to go according to the IEEE standards.