Patent Publication Number: US-9838121-B2

Title: Apparatus configured for visible-light communications (VLC) using under-sampled frequency shift on-off keying (UFSOOK)

Description:
This application is a continuation of U.S. patent application Ser. No. 13/977,696, filed Mar. 19, 2014, which is a U.S. National Stage Filing under 35 U.S.C. 371 from International Application No. PCT/US2011/060578, filed Nov. 14, 2011 and published in English as WO 2013/074065 on May 23, 2013, each of which is incorporated herein by reference in its entirety. 
    
    
     BACKGROUND 
     The present disclosure relates generally to communication technologies. More particularly, the present disclosure relates to transmitting data by varying a frequency of amplitude-modulation of a light source to generate light and receiving the data by undersampling frequencies of modulation of the light. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  depicts an embodiment of a system including devices to transmit and to receive data communicated by varying a frequency of an amplitude-modulated light source; 
         FIG. 2  depicts an embodiment of apparatuses to transmit and to receive data communicated by varying a frequency of amplitude-modulation of a light source; 
         FIG. 3  illustrates one embodiment of a source of data and alternative embodiments of a frequency shift keying (FSK) modulator; 
         FIG. 4  illustrates a flow chart of an embodiment to transmit data by varying a frequency of an amplitude-modulated light source; and 
         FIG. 5  illustrates a flow chart of an embodiment to receive data by varying a frequency of an amplitude-modulated light source. 
     
    
    
     DETAILED DESCRIPTION OF EMBODIMENTS 
     The following is a detailed description of novel embodiments depicted in the accompanying drawings. However, the amount of detail offered is not intended to limit anticipated variations of the described embodiments; on the contrary, the claims and detailed description are to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present teachings as defined by the appended claims. The detailed descriptions below are designed to make such embodiments understandable to a person having ordinary skill in the art. 
     Embodiments relate to communicating data by varying a frequency of an amplitude modulated electromagnetic radiator, or light source. Embodiments may comprise logic such as hardware and/or code to vary a frequency of an amplitude-modulated light source such as a visible light source, an infrared light source, or an ultraviolet light source. For instance, a visible light source such as a light emitting diode (LED) may provide light for a room in a commercial or residential building. The LED may be amplitude modulated by imposing a duty cycle that turns the LED on and off. In some embodiments, the LED may be amplitude modulated to offer the ability to adjust the perceivable brightness, or intensity, of the light emitted from the LED. Embodiments may receive a data signal and adjust the frequency of the light emitted from the LED to communicate the data signal via the light. In many embodiments, the data signal may be communicated via the light source at amplitude modulating frequencies such that the resulting flicker is not perceivable to the human eye. 
     Embodiments may provide a way of communicating via light sources that can be amplitude modulated such as LED lighting and receivers or detectors that can determine data from the amplitude modulated light sources. Some embodiments may provide a method of transmitting/encoding data via modulated LED lighting and other embodiments may provide receiving/decoding data from the modulated LED lighting by means of a device with a low sampling frequency such as a relatively inexpensive camera (as might be found in a smart phone). Such embodiments overcome some issues related to the sampling rate of the camera being very low (typically 100 frames per second or less) and avoidance of modulation of LED lighting that may cause noticeable or perceivable flicker to the human eye. Some embodiments are intended for indoor navigation via photogrammetry (i.e., image processing) using self-identifying LED light anchors and can be useful for markets involving, e.g., indoor navigation capabilities like “smart shopping”. 
     Embodiments may encode bits of data via frequency shift keying of a repetitive ON/OFF keying waveform and applying the waveform or signal to a driver of the light source to adjust the frequency of modulation of the light source based upon the changes in the frequency of the waveform. The frequency range of the ON/OFF keying can be high enough to prevent flicker (e.g., greater than 100 Hz) but when sampled (more precisely subsampled at a rate below the Nyquist rate) by, e.g., a smart phone camera, the data modulation aliases to frequency components that can be image processed (over the duration of a short video or a series of images) to decode the modulation information. 
     Logic, modules, devices, and interfaces herein described may perform functions that may be implemented in hardware and/or code. Hardware and/or code may comprise software, firmware, microcode, processors, state machines, chipsets, or combinations thereof designed to accomplish the functionality. 
     Embodiments may facilitate wireless communications. Wireless embodiments may integrate low power wireless communications like Bluetooth®, wireless local area networks (WLANs), wireless metropolitan area networks (WMANs), wireless personal area networks (WPAN), cellular networks, and/or Institute of Electrical and Electronic Engineers (IEEE) standard 802.15.4, “Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low Rate Wireless Personal Area Networks (LR-WPANs)” (2006) (http://standards.ieee.org/getieee802/download/802.15.4-2006.pdf), communications in networks, messaging systems, and smart-devices to facilitate interaction between such devices. Furthermore, some wireless embodiments may incorporate a single antenna while other embodiments may employ multiple antennas. For instance, multiple-input and multiple-output (MIMO) is the use of multiple antennas at both the transmitter and receiver to improve communication performance. 
     While some of the specific embodiments described below will reference the embodiments with specific configurations, those of skill in the art will realize that embodiments of the present disclosure may advantageously be implemented with other configurations with similar issues or problems. 
     Turning now to  FIG. 1 , there is shown an embodiment of a system  100  system including devices to transmit and to receive data communicated by varying a frequency of an amplitude-modulated light source. System  100  comprises a source device  110 , a network  115 , a frequency shift keying (FSK) modulator  120 , an amplitude modulator  125 , a light source  130  to transmit light  140 , a light detector  150 , an FSK demodulator  160 , and a receiving device  170 . System  100  also includes a network  175  communicatively coupling the receiving device  170  and a services server  180  to facilitate services such as “smart shopping”. System  100  may communicate data originating from the source device  110  to the receiving device  170  wirelessly via the light source  130 . For example, the light source  130  may be a visible light source to provide light for areas within a shopping mall. The light source  130  may provide an identification number, or unique number, as a bit sequence that may facilitate a determination of the location of the receiving device  170  within the shopping mall. In many embodiments, the receiving device  170  may simultaneously receive modulated light from multiple light sources such as the light source  130  to facilitate determining the location of the receiving device  170  by, e.g., triangulation. 
     The source device  110  may couple with the FSK modulator  120  to provide data to the FSK modulator  120  to transmit via the light source  130 . The source device  110  may transmit a data signal to the FSK modulator  120  so the data may be transmitted to the receiving device  170 . In some embodiments, the source device  110  may comprise a processor-based device such as a desktop computer, a notebook, a laptop, a Netbook, a smartphone, a server, or the like that is capable of transmitting a data signal to the FSK modulator  120 . In further embodiments, the source device  110  may be integrated with the FSK modulator  120  or both the source device  110  and the FSK modulator  120  may comprise parts of another device. 
     In some embodiments, the source device  110  may comprise a bit shift circulating register to shift bits comprising an identification number (a bit sequence) that is unique for the light source  130  through a series of registers in order and to the FSK modulator  120 . In some embodiments, however, the uniqueness of the identification number may be relative to nearby light sources. In many of these embodiments, the order and content of the bits of the data may establish the timing of frequency changes to the amplitude modulation of light emitted from the light source  130 . 
     In an alternative embodiment, as indicated by the dashed lines, the source device  110  may comprise a local network interface to communicatively couple the source device  110  with the FSK modulator  120  via the network  115 . For instance, the network  115  may comprise a physical and/or wireless network such as a corporate intranet, wireless local area network (WLAN), a local area network (LAN), or other network capable of communicating data between devices. In some embodiments, the network  115  may comprise a distinct network from the network  175  in a physical or logical sense to, e.g., separate business operations from public operations. In some of these embodiments, both networks  115  and  175  may couple with a larger network such a metropolitan area network or the Internet. 
     The FSK modulator  120  may receive the data signal from the source device  110  and couple with the amplitude modulator  125  to modulate the light  140  emitted by the light source  130  in a pattern that facilitates communication of data from the data signal. The FSK modulator  120  may communicate by modulating logical ones and zeros at different frequencies. For example, the FSK modulator  120  may generate an output signal at a first frequency to communicate a logical zero and generate the output signal at a second frequency to communicate a logical one. The amplitude modulator  125  may modulate the amplitude of the light  140  at the frequencies established by the output signal of the FSK modulator  120  and drive the light source to communicate the data via the light  140  emitted from the light source  130 . 
     The FSK modulator  120  may transmit the same data repeatedly to facilitate receipt of the data by the receiving device  170 . For instance, the FSK modulator  120  may transmit the data to the receiving device  170  multiple times and consecutively to allow the receiving device  170  to sample the amplitude-modulated light multiple times for each bit at a sampling frequency that is lower than or equal to the first frequency or the second frequency. 
     In many embodiments, the FSK modulator  120  may generate output signals at specific tones such as one times (1×) the sampling frequency, one point two-five times (1.25×) the sampling frequency, one point five times (1.5×) the sampling frequency, one point seven-five times (1.75×) the sampling frequency, two times (2×) the sampling frequency, two point two-five times (2.25×) the sampling frequency, and the like. In several embodiments, the first frequency may be a harmonic frequency or overtone frequency of the sampling frequency and the second frequency may be halfway between the harmonic or overtone frequencies. For example, the first frequency may be 1× the sampling frequency and the second frequency may be 1.5× the sampling frequency. In another embodiment, the first frequency may be 1.5× the sampling frequency and the second frequency may be 2× the sampling frequency. 
     In many embodiments, the FSK modulator  120  may generate an output signal at a delimiter frequency prior to each repetition of the transmission of the data to delimit or demark the start of a data transmission and/or the end of a data transmission. For example, the FSK modulator  120  may generate the output signal at a delimiter frequency that is between the first frequency and the second frequency. In many embodiments, the delimiter frequency may be halfway between the first frequency and the second frequency such as 1.25× the sampling frequency, 1.75× the sampling frequency, 2.25× the sampling frequency, or the like. 
     For embodiments that utilize a visible light source  130 , the light  140  may be modulated at a frequency that is not visible to the human eye such as a frequency above 60 Hertz (Hz) or, in many embodiments, above 100 Hz. For instance, if the sampling frequency of the receiving device  170  is 60 Hz then the FSK modulator  120  may modulate the first frequency at 60 Hz, the delimiter frequency at 75 Hz, and the second frequency at 90 Hz. In other embodiments, the FSK modulator  120  may modulate the first frequency at a minimum of 120 Hz, the delimiter frequency at a minimum of 135 Hz, and the second frequency at a minimum of 150 Hz. 
     The FSK modulator  120  may modulate the light  140  emitted from the light source  130  via the amplitude modulator  125  by switching the power to the light source  130  to turn the light  140  on and turn the light  140  off at the frequency of the output signal. The light source  130  may comprise an electromagnetic radiator that can be amplitude modulated such as a light emitting diode. The amount of data that may be communicated via, e.g., a visible light source without producing flicker perceivable by a human eye can vary based upon the speed with which the light source  130  can be amplitude modulated as well as the speed with which the receiving device  170  can capture and process samples from the light  140 . In some embodiments, the light source  130  may comprise a visible light source. In some embodiments, the light source  130  may comprise an infrared light source. And, in some embodiments, the light source  130  may comprise an ultraviolet light source. 
     The light source  130  illustrated in  FIG. 1  may be one light source of many light sources. For instance, the light source  130  may be a light source in one light fixture of many light fixtures in a shopping mall. In some embodiments, more than one of the light fixtures may comprise light sources transmitting the same data. For example, a department store may have hundreds of light fixtures. Each light fixture or every other light fixture may comprise a light source like  130  that can be amplitude modulated and each of those light sources may transmit a unique identification number. The receiving device  170  may be a smart phone of a user looking for a particular item within the department store and the user may wish to find a particular item in the store. In the department store, the light sources may repeatedly transmit their respective identification numbers, such as 10 bit identification codes. Upon entering the department store, the receiving device  170  may begin to receive the transmissions of the identification numbers from the light sources. The receiving device  170  may process the signals to determine the frequency modulations and associate the frequency modulations with the identification numbers for a number of the light sources. The receiving device  170  may transmit the identification numbers to the services server  180  via the network  175  and, in response, the receiving device  170  may receive an indication of the location, such as a three dimensional location, of the receiving device  170  and/or the location of the particular item within the department store with respect to the location of the receiving device  170  and the user. 
     The light source  130  emits modulated light  140  with the data from the data signal at a location at which the light detector  150  can receive the light  140 . 
     The receiving device  170  may comprise a hardware device to interact with a user of the receiving device  170 . In many embodiments, the receiving device  170  may be a portable device such as a portable data assistant, a smart phone, a camera, a laptop, a notebook, a netbook, an iPad, an iPhone, or the like. The receiving device  170  comprises a light detector  150  and an FSK demodulator  160  to receive and interpret the frequency-modulated light from the light source  130  and other such light sources by undersampling the light emitted by the light sources such as light source  130 . In many embodiments, the receiving device  170  also comprises a position processor  165  to determine the position of the receiving device  170  based upon the identification numbers of the light sources identified by the FSK demodulator  160 . 
     The light detector  150  may convert the light  140  into an electrical signal, such as a pixel of an image representative of the light  140  or a current of a photo diode. For example, the light detector  150  may comprise a camera or an array of photo detectors. The light detector  150  may capture an image of light sources including light source  130  and may comprise storage logic (not shown) to store the image to a storage medium such as dynamic random access memory (DRAM), a flash memory module, a hard disk drive, a solid-state drive such as a flash drive or the like. 
     The light detector  150  may also comprise sample logic to determine samples of the waveform of the amplitude-modulated light from images captured by the light detector  150 . For instance, the sample logic may identify pixels from the image associated with light sources to identify the light sources and may determine the state of the identified light sources, i.e., whether the image indicates that a light source is emitting light (the light source is on) or the light source is not emitting light (the light source is off). In some embodiments, the sample logic may assign a value to a light source in the on state such as a value of one (1) and a value of a light source in the off state such as a negative one (−1). In such embodiments, the samples may include a value as well as a time indication. 
     The light detector  150  may capture images at a sampling frequency (Fs). The sampling frequency may be a limitation of the receiving device  170  in some embodiments and may be a setting of the receiving device  170  in other embodiments. In further embodiments, another signal or user notification may indicate the sampling frequency for which the FSK modulator  120  is configured and the receiving device  170  may adjust the sampling frequency of the light detector  150  to match that sampling frequency either automatically or with some interaction with the user. 
     The light detector  150  may sample or capture samples indicative of the frequency of the amplitude-modulated light  140  at the sampling frequency, undersampling the signal transmitted via the light  140 . This process of undersampling effectively aliases the frequency of the signal transmitted via the light  140  to a lower frequency. For embodiments in which the first frequency is an integer multiple (N*Fs) of the sampling frequency and the second frequency is an integer plus one half multiple (N+1/2)*Fs, which is a harmonic or overtone of the sampling frequency, the sample logic captures samples of the first frequency that appear to be at a frequency that is at zero Hz and samples of the second frequency that appear to be at a frequency that is half of the sampling frequency. 
     The FSK demodulator  160  couples with the light detector  150  to receive the samples, to determine the bit or bits represented by the light, and to output the bits to, e.g., the services server  180 . As a result of the undersampling, the first frequency may appear to the FSK demodulator  160  to be approximately a waveform at zero Hz with an assigned value that is either the minimum value, e.g., −1, or the maximum value, e.g., 1, throughout the waveform. The second frequency may appear to the FSK demodulator  160  to be approximately a signal with the frequency of the sampling frequency divided by two, alternating between a high and a low value. And the delimiter frequency, which may be approximately halfway between the first frequency and the second frequency, may appear to be a half the frequency of the second frequency, switching between the minimum value and the maximum value at half the speed of the second frequency and including two lows and two highs. For instance, depending upon the time at which the sampling begins, the delimiter frequency may provide one of four patterns of samples including: (1) Low-Low-High-High, (2) High-High-Low-Low, (3) Low-High-High-Low, and (4) High-Low-Low-High. 
     The FSK demodulator  160  may process the samples to determine frequency components of the waveform transmitted by the light source  130 . In some embodiments, the frequency components may be determined by performing a Fourier transform on the samples received from the light detector  150 . For example, the FSK demodulator  160  may perform a fast Fourier transform (FFT) to determine the amplitudes of the waveforms at various frequencies and may make bit decisions incoherently using only the FFT amplitudes to associate the frequency modulations of the light with bits of data. The number of points in the FFT is dependent upon the data rate. In one embodiment, the FSK demodulator  160  may perform a four point FFT. The four point FFT is used when operating at the highest data rate for sampling, which is BIT_RATE=Fs/2. For embodiments in which the highest bit rate may not be used, such as BIT_RATE=Fs/10, the number of points in the FFT would be more than four. Other embodiments may use a discrete Fourier transform (DFT) in lieu of the FFT. By associating the frequency components identified with a logical zero or a logical one, the FSK demodulator  160  may determine the identification number associated with the light source  130 . 
     Furthermore, the FSK demodulator  160  may identify the delimiter frequency to determine the point at which the data being transmitted by the light source  130  begins. In other words, the FSK demodulator  160  may identify the delimiter frequency to determine the point at which the data starts in the transmission from the light source  130 . 
     The receiving device  170  may also comprise a position processor  165 . The position processor  165  may determine the position of the receiving device  165  based upon the identification numbers determined by the FSK demodulator  160 . For example, the light source  130  may comprise one of many light sources in a warehouse. The light sources may transmit their respective identification numbers and the position processor  165  may receive the identification numbers from the receiving device  170 . The particular identification numbers identified by the receiving device  170  and, in some embodiments, the timing of receipt of the identification numbers, may provide information to the position processor  165  to identify the location of the receiving device  170  and, in some embodiments, the direction of movement of the receiving device  170 . In particular, the position processor  165  may interact with the services server  180  to obtain data about the light sources associated with the identification numbers from the database  185 . 
     In some embodiments, the position processor  165  may compare the identification numbers received from the FSK demodulator  160  against identification numbers stored in the database  185 , associate the identification numbers with the locations of the light sources such as light source  130  and determine the specific location of the receiving device  170  based upon the locations of the light sources identified by the identification numbers via database  185 . The receiving device  160  may communicate with the services server  180  to obtain services such as directing the user of the receiving device  170  to a particular object in the warehouse, a particular location of interest in the warehouse, showing a map of the warehouse with the user&#39;s current location, showing the location of another receiving device in the warehouse, or other service that relates to the users location or the location of a receiving device. 
     The receiving device  170  may obtain the services by, e.g., downloading one or more service applications  190 , downloading maps, requesting location information for particular items or other locations of interest, downloading part or all of the database  185 , or the like. In one embodiment, the location information for the light sources such as the x,y,z coordinates of the light source  130  may be downloaded or at least begin to be downloaded by the receiving device  170  upon entering a facility offering such services. In some embodiments, the receiving device  170  may provide the location of the receiving device  170  to the services server  180  to obtain services. In alternative embodiment, the receiving device  170  may provide the identification numbers for the light sources such as light source  130  to the services server  180  to obtain the location of the receiving device  170  and/or services for the user of the receiving device  170 . 
     The database  185  may comprise identification numbers and associated location information such as the x,y,z coordinates of the light sources. Based upon this information, the location processor  165  may calculate the location of the receiving device  170 . In other embodiments, the results of calculations for locations of the receiving device  170  in the warehouse may be stored in the receiving device  170  for future reference. In several embodiments, the potential locations of the receiving device  170  may be predetermined so that the database  185  contains location information for the receiving device  170  associated with groups of identification numbers. The location processor  165  may look up the location of the receiving device  170  based upon the identification numbers provided by the FSK demodulator  160 . In still other embodiments, the locations of the receiving device may be partially calculated and stored in the database  185  and in some of these embodiments, the partial calculations may be downloaded to the receiving device  170 . 
       FIG. 2  depicts an embodiment of apparatuses  200  to transmit and to receive data  205  communicated by varying a frequency of amplitude modulation of a light source  230 . For instance, lighting in a department store may communicate data to smart devices such as smart phones of customers to provide information about special sales or to offer coupons for products. 
     Apparatuses  200  comprise an FSK modulator  210 , an amplitude modulator  220 , a light source  230  to produce light  240 , a light detector  250 , and an FSK demodulator  270 . The FSK modulator  210  may modulate the frequency of amplitude modulation of the light  240  based upon the data  205 . FSK modulator  210  may comprise an oscillation device  215  to oscillate an output signal  219  at frequencies representative of one or more bits of the data  205 . For example, the oscillation device  215  may comprise three frequency outputs: a frequency  216  representative of a logical 1 bit, a delimiter frequency  217  representative of a start of frame delimiter (SFD), and a frequency  218  representative of a logical 0 bit. 
     The frequencies  216 ,  217 , and  218  may be related in that frequency  216  may be an integer multiple of the sampling frequency, N*Fs, wherein N is an integer (1, 2, 3, 4, 5, 6, . . . ) and Fs is the sampling frequency of the light detector  250 . Frequency  218  may be (N+1/2)*Fs, and frequency  217  may be (N+1/4)*Fs. Or frequency  218  may be (N−1/2)*Fs, and frequency  217  may be (N−1/4)*Fs. In other embodiments, the frequency  216  may be an integer multiple of the sampling frequency, (N+1)*Fs, frequency  218  may be (N+1/2)*Fs or (N−1/2)*Fs, and frequency  217  may be (N+3/4)*Fs or (N−3/4)*Fs. Note that the associations of the logical 1 with frequency  216  and the logical 0 with frequency  218  are for the purposes of illustration only and these logical bit associations can be reversed in some embodiments. 
     The FSK modulator  210  may generate the oscillating signal at the different frequencies by repeatedly transmitting a bit pattern of the oscillating signal at a predetermined clock rate. For instance, an oscillating signal generated by an oscillator may be sampled at a high clock rate and the samples may be stored on an integrated circuit (a “chip”). To reproduce the signal, the samples may be transmitted at the high clock rate. Oscillators and oscillation devices described hereafter may refer to oscillators, may refer to integrated circuits used to transmit samples obtained from oscillating signals, may refer to integrated circuits that otherwise simulate oscillating signals, or may refer to any other device that generates an oscillating signal or a signal that mimics an oscillating signal. 
     The FSK modulator  210  may also comprise selection logic  219  to select a frequency of the output signal  219  based upon the data  205 . In some embodiments, the data  205  may comprise a sequence of bits representative of the start of frame delimiter that will cause the selection logic  208  to select the delimiter frequency  217 . In other embodiments, the selection logic  208  may select the delimiter frequency  217  prior to transmitting the data  205  and/or after transmitting the data  205 . In the latter embodiments, bits of the data  205  may act as place holders or fill for transmission of the delimiter frequency  217  for the purposes of maintaining the timing of the transmission of the bits of data  205 . FSK modulator  210  may repeat the transmission of the data  205  continuously or for a particular number of transmissions in the form of the frequency-modulated output signal  219 . 
     In many embodiments, data  205  may comprise the same number of bits of data  205  to transmit in a packet for every per transmission so the FSK modulator  210  may transmit data  205  in the same size packets such as packets of 16 bits. In other embodiments, FSK modulator  210  may be capable of identifying bits representing the SFD so the FSK modulator  210  may be capable of transmitting packets of varying numbers of bits. 
     The input of amplitude modulator  220  couples with the output of FSK modulator  210  to receive the output signal  219 . The amplitude modulator  220  may apply the output signal  219  to the LED driver  221  to connect and disconnect the light source  230  from a power source  222 . In the present embodiment, the LED driver  221  is illustrated as a switch  224  that opens and closes at the frequency of the output signal  219 . For instance, when the switch  224  is open, the circuit between the voltage illustrated as the power source  222  and ground  225  is opened, turning off the LED  232 . When the switch  224  is closed, the circuit between the voltage illustrated as the power source  222  and ground  225  is closed, drawing a current from the power source  222  through the LED  232 , turning on the LED  232  to generate light  240 . In some embodiments, the switch  224  may comprise one or more transistors. While the present embodiment illustrates the LED  232 , embodiments may utilize any electromagnetic radiator that can be amplitude modulated. 
     The light  240  may comprise light that is modulated between two or more states such as an “off” state and an “on” state at a frequency of the output signal  219 . In several embodiments, the light comprises visible light. In other embodiments, light source  230  may generate infrared light, ultraviolet light, or visible light. In further embodiments, the light source  230  may switch between two different “on” states such as a full-power state in which the full-rated current or voltage for the light source  230  is applied to the light source  230  and a half-power state in which half the rated current or voltage is applied to the light source  230  to generate the light  240 . In still further embodiments, the light source  230  may comprise multiple sources such as multiple LEDs and less than all of the light sources may be turned off to create a “partially on” state for modulation. 
     In some embodiments, amplitude modulator  220  comprises pulse-width modulation logic  226  to adjust the duty cycle of the light  240  or, in other words, vary the percentage of time that the light source  232  is on. For instance, the duty cycle of the light  240  without the pulse-width modulation logic  226  may be at 50 percent. The 50 percent duty cycle means that the light  240  generated by the LED  232  is on 50 percent of the time and off 50 percent of the time. The effect of the 50 percent duty cycle is that the intensity of the light  240  is half of the intensity if the LED  232  were turned on 100 percent of the time, i.e., no amplitude modulation. The pulse-width modulation logic  226  may adjust the percentage of time that the light source  230  is on during the duty cycle to provide a dimming circuit for the light source  230 . For example, the pulse-width modulation logic  226  may be adjustable via a knob or switch for the light source  230  so a user may dim the light  240  or increase the brightness or intensity of the light  240  via a dimmer input  228  while the light  240  is still modulated at the frequency of the output signal  219 . 
     In some embodiments, the amplitude modulator may overdrive the LED  232  so that the light brightness is not derated by the modulation. For example, the “Off” state may be defined as when the light  240  is at 50% illumination or intensity and the “On” state may be defined as when the light  240  is at 150% illumination. Assuming a 50 percent duty cycle, the average output of LED  232  may remain at 100 percent of the illumination. 
     A receiving device may receive the light  240 , such as the receiving device  170  in  FIG. 1 , via a light detector  250  and an FSK demodulator  270 . The light detector  250  may receive the light  240  and generate an electrical signal  260  based upon the light  240  at a frequency of the amplitude modulation of the light  240 . For instance, when the amplitude modulator  220  modulates the light  240  at the frequency  218  at 100 Hz, the light detector  250  may generate an electrical signal  260  with energy primarily transmitted at 100 Hz. 
     The light detector  250  may comprise a camera  252  and sample logic  254 . The camera  252  may be capable of capturing frames of video at a sampling rate of 100 Hz and the FSK modulator  210  may be tuned for a sampling frequency (Fs) of 100 Hz. The camera  252  may capture multiple frames of video and each frame of video may be analyzed by the sample logic  254  to determine the number of light sources  230  associated with each frame, to associate the light sources of a first frame with the same light sources in a subsequent frame, and to determine whether the light sources are emitting light in each of the frames. For instance, the sample logic  254  may identify the light source  230  in a first frame. The sample logic  254  may then identify the light source  230  in three subsequent frames. The sample logic  254  may determine that the light source is on in the first frame, off in the second frame, on in the third frame, and off in the fourth frame. Upon determining samples  260 , the light detector  250  may output the samples  260  to the FSK demodulator  270  for interpretation. 
     The FSK demodulator  270  receives the samples  260  from the light detector  250  and determines bits of the data  205  transmitted to the light detector  250  from the light source  230 . The FSK demodulator  270  may comprise frequency logic  271  and data associator  280 . The frequency logic  271  may determine frequency components of the signal represented by the samples  260  and the data associator  280  may associate the frequency components with the delimiter frequency, identifying the SFD, or associate the frequency components with bits of the data  205  to output data  290  to a position processor  295 . 
     In the present embodiment, the frequency logic  271  comprises FFT logic  272 , a frequency bin  274 , a frequency bin  276 , and frequency bins  278 . The FFT logic  272  may comprise, e.g., a four point FFT logic and may transform the time domain waveform samples  260  into frequency domain representations of the samples  260  to generate the frequency components and output the magnitudes of the frequency components into the respective frequency bins  274 ,  276  and  278 . Data associator  280  may determine the bit associations with the samples based upon the magnitudes of the frequency components in the respective frequency bins  274 ,  276  and  278 . For example, the frequency bin  274  may be associated with the logical 0, the frequency bin  276  may be associated with a logical 1, and the frequency bins  278  may be associated with the delimiter frequency. 
     The data associator  280  may comprise SFD logic  282  to determine that the frequency components determined by frequency logic  271  are associated with the start frame delimiter (SFD) and begin to output data in response to bit decisions for data immediately following the receipt of the SFD. For instance, data associator  280  may receive two cycles of frequency components having the greatest magnitude in the frequency bins  278  and determine that the subsequent data will comprise data such as the identification number (or bit sequence) associated with the light source  230 . In further embodiments, the data associator  280  may determine that the data being transmitted has ended upon receipt of the SFD, facilitating transmission of variable length data packets from light source  230 . 
     The data associator  280  may comprise a data identifier  284  to determine data  290  via bit decisions based upon the magnitudes of the frequency components in the bins  274 ,  276 , and  278 . The data identifier  284  may comprise logic to associate frequency components having the most significant magnitudes in the frequency bin  274  with a logical 0 and the frequency components having the most significant magnitudes in the frequency bin  276  with a logical 1. The data identifier  284  may output data representative of these bit decisions. 
     The position processor  295  may receive the identification number of the light source  230  as well as identification numbers for one or more other light sources. Based upon the identification numbers for the light sources, the position processor  295  may determine the location of the receiving device. In some embodiments, the position processor  295  may access a database to determine the locations of the light sources. In further embodiments, the position processor  295  may access a database to retrieve other information related to the position of the receiving device based upon the identification numbers. 
     In some embodiments, the position processor  295  may be integrated with or coupled with the receiving device. In other embodiments, the database may be remote from the receiving device and access wirelessly to obtain data related to the location of the light sources and/or data related to the location of the receiving device. 
     Referring also to  FIG. 3 , there is shown an embodiment of the source device  202  such as source device  110  of  FIG. 1  and alternative embodiments (FSK modulators  300  and  370 ) of the FSK modulator  210  shown in  FIG. 2 . The source device  202  comprises one particular embodiment of the source device  110  or at least one particular example of part of the source device  110 . The source device  202  may maintain the “data” that includes an identification number of a light source in a memory  206 . In some embodiments, the memory  206  may comprise non-volatile memory such as flash memory or read only memory. In other embodiments, the memory  206  may comprise volatile memory. In many embodiments, the memory  206  comprises a unique, identification number of the light source and that identification number may be assigned at the time of manufacture of the light source. In other embodiments, the unique, identification number may be assigned upon installation or may be assigned via a data interface for a network such as network  115  of  FIG. 1 . In one embodiment, the identification number of a light source such as light source  130  may be indicative of the location of the light source so that the receiving device  170  may be able to decode or otherwise calculate the coordinates of the light source with the identification number. In another embodiment, the coordinates of the light source may be embedded in the identification number for the light source. 
     In the present embodiment, the memory  206  comprises bits representing the “SFD”, bits representing the “data” to transmit via a light source, and bits representing a “CRC” cyclic redundancy check. The CRC may allow a receiving device to verify that the “data” received by the receiving device matches, to some degree of accuracy, the “data” in memory  206 . The source device  202  copies the SFD, data, and CRC into a bit shift circulating register  207  in parallel and the register  207  shifts the bits out through to create the data signal  205 . Once all the bits are shifted out of register  207 , the source device  202  copies the SFD, data, and CRC into a bit shift circulating register  207  in parallel again to repeat the signal. For example, the SFD may comprise two bits of data that are just fillers or are bits representing the SFD. The data may comprise the identification number for the light source and the CRC may comprise a four-bit CRC such as a sum of the bits in the data. 
     In alternative embodiments, the memory  206  may comprise only the data and in some embodiments, the data only comprises the identification number associated with the light source. In other embodiments, the memory  206  comprises the data and the CRC. 
     FSK modulator  300  comprises logic  305 , oscillation device  307  with oscillators  310 - 330 , and multiplexer  350 . Other embodiments implement different circuit elements to accomplish the same output. Logic  305  may comprise a circuit to associate inputs of bits of data with distinct outputs. Logic  305  receives data  205  and identifies one or more SFD bits. The value of the SFD bits may not be important for many embodiments. The number of SFD bits may represent the increments of time to continue outputting a delimiter frequency such as a frequency from oscillator  310  to identify the SFD to the receiving device. After identifying the SFD bit, logic  305  outputs a selection signal  306  associated with the bit to MUX  350  to select oscillator  310  to output the delimiter frequency via the output signal  219 . 
     Thereafter, or at least until receiving the next SFD bit, the logic  305  may identify a bit of the data  205  and output a selection signal  306  associated with the bit to MUX  350 . For instance, the oscillator  320  may output the frequency associated with a logical 0 and the oscillator  330  may output the frequency associated with a logical 1. The frequency signals from oscillators  310 ,  320 , and  330  are coupled with the input of MUX  350 . For example, oscillator  310  may output a signal with a frequency of 75 Hz, oscillator  320  may output a signal with a frequency of 60 Hz, and oscillator  330  may output a signal with a frequency of 90 Hz. 
     MUX  350  selects the appropriate frequency signal as the output signal  219  based upon the selection signal  306  from logic  305 . Other embodiments may utilize the data  205  as the selection signal for the bits of data after transmission of the delimiting frequency. 
     FSK modulator  370  comprises logic  380  coupled with VCO  390 . In this embodiment, the voltage of the output from logic  380  determines the frequency of the output signal  219  from VCO  390 . For example, logic  380  may output a selection signal of zero volts in response to receipt of a logical zero, three volts in response to receipt of an SFD bit, and six volts in response to receipt of a logical one. Other embodiments may utilize different voltages. 
     In further embodiments, FSK modulator  370  may couple other circuit elements with the output of VCO  390  to adjust characteristics of the output to generate output signal  219 . For instance, a capacitance and/or resistance may filter the output of the VCO  390  to generate output signal  219 . In other embodiments, a couple transistors coupled with the output of the VCO  390  may convert the output into a square wave at a selected voltage. In another embodiment, the bit response frequency patterns may be generated digitally, sampled at a high rate to form “chips”, stored in memory and played back via a corresponding high rate clocking circuit. 
       FIG. 4  illustrates a flow chart  400  of an embodiment to transmit data by varying a frequency of an amplitude-modulated light source. The embodiment involves transmission of data via a light source such as is described with respect to  FIGS. 1-3 . Flow chart  400  begins with receiving, by a frequency shift keying (FSK) modulator, a data signal having bits associated with at least a first group such as logical zeros and a second group such as logical ones, wherein the first group is associated with a first frequency and the second group is associated with a second frequency (element  410 ). In many embodiments, a group of one or more logical zeros and/or logical ones may be associated with a delimiter frequency to represent the SFD. For example, the FSK modulator may receive the data signal and as the data is received via the data signal, the FSK modulator may determine variations in the frequency of amplitude modulation of the light source to transmit the data from the data signal to a receiving device via the light emanating from the light source. Note that the light source may comprise any electromagnetic radiator that can be amplitude modulated. 
     The FSK modulator may identify the SFD by generating the output signal at the delimiter frequency for a number of clock cycles (element  420 ). In some embodiments, the number of bits associated with the SFD may represent the number of clock cycles. 
     After outputting the delimiter frequency, the FSK modulator may generate an output signal at the first frequency in response to receipt of bits associated with the first group (element  430 ) and may generate the output signal at the second frequency in response to receipt of bits associated with the second group (element  440 ). For instance, the FSK modulator may receive a logical 0 and generate a first frequency representative of the logical 0. The FSK modulator may then receive a logical 1 and generate a second frequency representative of the logical 1. The FSK modulator may continue to generate the first frequency and the second frequency representative of the data received via the data signal until all the data is output or no more data (element  460 ) is received via the data signal. In other embodiments, the FSK modulator may output the delimiter frequency and then repeat the same signal by starting again at element  410 . 
     In some embodiments, after generating the first frequency representative of the logical 0, the FSK modulator may couple with a pulse width modulator to apply pulse-width modulation to the light source to impose a duty cycle based upon input such as input from a dimmer switch (element  440 ). The pulse width modulator may maintain the first frequency as the frequency of modulation of the light source while adjusting the pulse width to adjust the intensity of the light emitted from the light source. 
     After generating the first frequency representative of the logical 0, the FSK modulator may apply the frequency to a light source via an amplitude modulator to adjust the frequency of amplitude modulation to the first frequency (element  450 ). After receiving more data (element  460 ) such as data representing the SFD, the FSK modulator may change the output signal to the delimiter frequency to represent the SFD and may apply the delimiter frequency to the light source to adjust the frequency of amplitude modulation to the delimiter frequency (element  420 ). 
       FIG. 5  illustrates a flow chart  500  of an embodiment to receive data by varying a frequency of an amplitude-modulated light source. Flow chart  500  begins with capturing images of one or more light sources at a sampling frequency (element  510 ). For instance, a user may have an iPhone (the receiving device) and may walk into an office building on the way to meet with a person maintaining an office in the building. The iPhone may capture images of the light sources as the user walks into the building. At least some of the light sources may be electromagnetic radiators that are frequency modulated at frequencies that the identify data to the iPhone such as 1×, 1.25× and 1.5× of the sampling frequency of the camera on the iPhone. 
     The iPhone may identify the one or more light sources that are electromagnetic radiators in the captured images (element  520 ) and may generate samples based upon light received (element  530 ). For example, a camera of the iPhone (the light detector) may receive light and, in response, generate an output signal including samples of the waveform of the light received from each of the light sources such as a first magnitude to indicate that the light is on in an image and a second magnitude to indicate that the light is off in an image. In some embodiments, the light may be visible light while, in other embodiments, the light may be infrared light or ultraviolet light. 
     The FSK demodulator may receive the output signal from the light detector and determine, based upon the characteristics of the output signal, the data that the light represents. In many embodiments, the FSK demodulator may comprise logic to determine the apparent frequency of the modulation of the light received from each of the light sources (element  540 ) and, based upon the frequency, determine data or one or more bits of data to associate with the light (element  550 ). For instance, the light may be amplitude modulated at three different frequencies: the first frequency of N*Fs, a second frequency of (N+1/2)*Fs, and a delimiter frequency between the first frequency and the second frequency. The FSK modulator may determine the component frequencies of the amplitude modulation of the light and associate the component frequencies with a pattern of logical ones and zeros based upon the amplitude or magnitude of the component frequencies. The FSK demodulator may comprise a data associator to associate frequencies with logical ones or zeros and SFD logic to identify the start frame delimiter. In many embodiments, the data associator may utilize a table that associates frequencies of modulation of light with data. In other embodiments, the data associator may comprise logic to associate the frequencies with data. And, in some embodiments, the logic may comprise a state machine to associate the frequencies with data. 
     The FSK demodulator may output the data associated with the light (element  560 ) and then determine whether additional data is transmitted via the light (element  570 ). In some embodiments, the FSK demodulator continues to determine the identification numbers from the data transmitted by the light to update the location of the receiving device as the user moves through the building. 
     The FSK demodulator may be implemented within a processor-based device such as a smart phone or a laptop. A camera built-into or otherwise coupled with the processor-based device may operate as the light detector and the FSK demodulator may comprise logic in the form of code and/or hardware within the processor-based device. In other embodiments, the FSK demodulator may be a distinct device and may couple with the processor-based device. 
     Another embodiment is implemented as a program product for implementing systems and methods described with reference to  FIGS. 1-5 . Embodiments can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. One embodiment is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. 
     Furthermore, embodiments can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
     The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), and DVD. 
     A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
     Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem, and Ethernet adapter cards are just a few of the currently available types of network adapters. 
     The logic as described above may be part of the design for an integrated circuit chip. The chip design is created in a graphical computer programming language, and stored in a computer storage medium (such as a disk, tape, physical hard drive, or virtual hard drive such as in a storage access network). If the designer does not fabricate chips or the photolithographic masks used to fabricate chips, the designer transmits the resulting design by physical means (e.g., by providing a copy of the storage medium storing the design) or electronically (e.g., through the Internet) to such entities, directly or indirectly. The stored design is then converted into the appropriate format (e.g., GDSII) for the fabrication of photolithographic masks, which typically include multiple copies of the chip design in question that are to be formed on a wafer. The photolithographic masks are utilized to define areas of the wafer (and/or the layers thereon) to be etched or otherwise processed. 
     The resulting integrated circuit chips can be distributed by the fabricator in raw wafer form (that is, as a single wafer that has multiple unpackaged chips), as a bare die, or in a packaged form. In the latter case, the chip is mounted in a single chip package (such as a plastic carrier, with leads that are affixed to a motherboard or other higher level carrier) or in a multichip package (such as a ceramic carrier that has either or both surface interconnections or buried interconnections). In any case, the chip is then integrated with other chips, discrete circuit elements, and/or other signal processing devices as part of either (a) an intermediate product, such as a motherboard, or (b) an end product. The end product can be any product that includes integrated circuit chips, ranging from toys and other low-end applications to advanced computer products having a display, a keyboard or other input device, and a central processor. 
     It will be apparent to those skilled in the art having the benefit of this disclosure that the present disclosure contemplates transmitting data by varying a frequency of amplitude-modulation of a light source to generate light and receiving the data by undersampling frequencies of modulation of the light. It is understood that the form of the embodiments shown and described in the detailed description and the drawings are to be taken merely as examples. It is intended that the following claims be interpreted broadly to embrace all variations of the example embodiments disclosed. 
     Although the present disclosure has been described in detail for some embodiments, it should be understood that various changes, substitutions, and alterations could be made herein without departing from the spirit and scope of the disclosure as defined by the appended claims. Although specific embodiments may achieve multiple objectives, not every embodiment falling within the scope of the attached claims will achieve every objective. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods, and steps described in the specification. As one of ordinary skill in the art will readily appreciate from this disclosure, processes, machines, manufacture, compositions of matter, means, methods, or steps presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.