micro:bit and ML8511 sensor example


The ML8511 measures the amount of ultra violet rayses contained in sunlight, and it is used for the equipment which displays the suntan by a ultra violet rays, the guidance for UV care of skin, etc

The sensor detects 280-390nm light most effectively. This is categorized as part of the UVB (burning rays) spectrum and most of the UVA (tanning rays) spectrum. It outputs a analog voltage that is linearly related to the measured UV intensity (mW/cm2). If your microcontroller can do an analog to digital signal conversion then you can detect the level of UV!

Its breakout time again



A simple connection this one using the module above

 Micro:bit  ML8511 module
 3v3  3V3
 Gnd  GND
 P3  OUT



No external libraries required for this one

int UVsensorIn = A3; //Output from the sensor
void setup()
  pinMode(UVsensorIn, INPUT);
  Serial.begin(9600); //open serial port, set the baud rate to 9600 bps
void loop()
  int uvLevel = averageAnalogRead(UVsensorIn);
  float outputVoltage = 3.3 * uvLevel/1024;
  float uvIntensity = mapfloat(outputVoltage, 0.99, 2.9, 0.0, 15.0);
  Serial.print(" UV Intensity: ");
  Serial.print(" mW/cm^2"); 
//Takes an average of readings on a given pin
//Returns the average
int averageAnalogRead(int pinToRead)
  byte numberOfReadings = 8;
  unsigned int runningValue = 0; 
  for(int x = 0 ; x < numberOfReadings ; x++)
    runningValue += analogRead(pinToRead);
  runningValue /= numberOfReadings;
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;



Open the serial monitor and you should see something which looks like this

UV Intensity: 9.36 mW/cm^2
UV Intensity: 9.31 mW/cm^2
UV Intensity: 10.78 mW/cm^2
UV Intensity: 9.41 mW/cm^2
UV Intensity: 11.38 mW/cm^2
UV Intensity: 9.46 mW/cm^2


ML8511 UVB UV Rays Sensor Breakout Test Module Detector