Project tutorial
Beach UV meter

Beach UV meter © MIT

It is possible that ultraviolet rays emitted by the sun deactivate the virus in a few seconds. The Beach UV meter measures UV and tweets.

  • 6 respects

Components and supplies

Necessary tools and machines

09507 01
Soldering iron (generic)
Solder Wire, Lead Free
3D Printer (generic)
Hy gluegun
Hot glue gun (generic)
70y8518 40
Drill / Driver, Cordless

Apps and online services

About this project


Finally, and despite the COVID-19, summer has arrived… at least in Italy!

Now we all want to go to the beach to relax after a hard winter of work and this year even more due to the forced lockdown at home. The problem is that COVID-19 has not disappeared. So how could we do to have a little extra security?

According to a study conducted by an Italian team of researchers, ultraviolet rays would manage to inactivate the viral load of Covid-19.

The discovery was made by doctors from the University of Milan who work in the Luigi Sacco Hospital - the Lombard center of reference for the epidemic (, together with astrophysicists from the National Institute of Astrophysics (INAF) ( and researchers from the National Cancer Institute (

These researchers claim that the ultraviolet rays emitted by the sun that pass through our atmosphere would deactivate the virus in a few seconds.

Leading the team is Mario Clerici, full professor of Immunology at the University of Milan and Scientific Director of the Don Gnocchi Foundation. (

In the interview with Mario Clerici in the related article ( ) it is possible to read:

«The experiment was carried out by placing droplets of liquid containing Sars-Cov-2 under some lamps that transmitted type C UV rays, those that do not penetrate the atmosphere. The liquid used in this experiment simulate what can be emitted by speaking or sneezing. Mario Clerici explained: “We have evaluated a low dose of virus (what can be in a room where there is a positive), a hundred times higher dose (which can be found in a person with severe form of Covid-19 ) and a thousand times higher quantity, impossible to find in a human being or in any real situation. In all three cases, the viral load was inactivated in a few seconds to 99.9% by a small amount of UvC rays”.

“2 millijoules per square centimeter are enough”, specified the professor, who then added that the virus used in the experiments, provided by the Spallanzani Institute in Rome (, are highly pathogenic, taken from biological samples from patients.

After the first successful attempt, the same procedure was repeated using the UvA and UvB rays which, instead, arrive on Earth. The results are very similar, but have not yet been made available to the scientific community because they are still being finalized.

Mario Clerici explains: “Starting from these data, we then asked ourselves if there was a correlation between solar radiation and Covid-19 epidemiology. The lower the amount of UvA and UvB, the greater the number of infections. This could explain why in Italy, now that it is summer, we have few cases and few symptoms, while some countries in the other hemisphere – such as those of South America, where it is winter – are facing the peak”. A separate case is represented by Bangladesh, India and Pakistan. In these three countries, despite the hot climate, the epidemic is expanding. But there would be an answer that would explain this ostensible inconsistency: monsoon clouds block the sun's rays and, therefore, do not stop the coronavirus.

On the risk of a second wave, Mario Clerici explains: “I think so, but reduced because the virus will be weakened. The virus we see today is the same as in February and March, it has not undergone mutations in its genome, if not minimal. So it’s always bad. The difference is that the sun’s rays inactivate it, making it much more difficult to transmit from one subject to another and even replication within an organism”.

"Sars-CoV-2, like all viruses, will adapt to humans" - added Clerici - "but today, in Italy, the slowdown of the epidemic is mainly due to environmental reasons" (the full article in Italian on

“On the beach you can therefore rest assured”, the professor asserts: “The droplets that can be emitted by a possible positive subject are hit by the sun’s rays and the viral load is deactivated in a few seconds”».

My solution

I was looking for a way to give a qualitative indication of the permanence of the virus on the surfaces on the beaches. I took the ARD2-2062 UV index sensor and placed a UVC lamp on it a few centimeters away. I measured a value of about 100mV. So, the ARD2-2062 sensor also measures the UV-C.

I have used an Arduino MKR 1010 to read the ARD2-2062 sensor and through the Blynk APP it sends data on my Twitter account.

Arduino MKR 1010

"The Arduino MKR WiFi 1010 is the easiest point of entry to basic IoT and pico-network application design. Whether you are looking at building a sensor network connected to your office or home router, or if you want to create a BLE device sending data to a cellphone, the MKR WiFi 1010 is your one-stop-solution for many of the basic IoT application scenarios.

The board's main processor is a low power Arm® Cortex®-M0 32-bit SAMD21, like in the other boards within the Arduino MKR family. The WiFi and Bluetooth® connectivity is performed with a module from u-blox, the NINA-W10, a low power chipset operating in the 2.4GHz range. On top of those, secure communication is ensured through the Microchip® ECC508 crypto chip. Besides that, you can find a battery charger, and a directionable RGB LED on-board."...

UV Detection Sensor

ARD2-2062 is a sensor module used for detecting the intensity of incident ultraviolet (UV) radiation. This module is based on the sensor UVM-30A, which has a wide spectral range of 200nm–370nm. The module outputs electrical signal which varies with the UV intensity.


  • Operating voltage: 3.0 ÷ 5.0VDC;
  • Current: 0.06mA (Typical) / 0.1mA (Max);
  • Response wavelength: 200 ÷ 370nm;
  • Operating temperature: -20 ÷ +85°C;
  • Accuracy: ±1UV Index.

ARD2-2062 sensormodule pinout

  • - → GND (Ground), connect it to the negative pole;
  • out → Analog output;
  • + → VCC, power supply.

UVM-30A Output diagram

In the following figure it is possible to see the dependence of the output voltage from the UV Index.

Connection of ARD2-2062 sensor module to Arduino MKR 1010 board

  • The VCC pin of ARD2-2062 sensor module is connected to the +3V3 pin of Arduino MKR 1010;
  • The GND pin of ARD2-2062 sensor module is connected to the GND pin of Arduino MKR 1010;
  • The OUT pin of ARD2-2062 sensor module is connected to the A1 pin of Arduino MKR 1010;
  • On the positive pole of the battery I have inserted a switch to turn on/off the Arduino MKR 1010.


Blynk is a hardware-agnostic IoT platform with white-label mobile apps, private clouds, device management, data analytics, and machine learning: Blynk makes complex IoT technology simple.

Getting started (full instructions here)

  • Download Blynk app;
  • Install Blynk (by Volodymyr Shymanskyy version 0.6.1) Library on Arduino IDE;
  • Connect hardware (device Authentication Token).

Create New Project

In the following photos you can see the sequence of operations to be done on the APP:

To insert widgets, press the plus button.

Value Display widget:

Twitter widget:

Click on the play symbol to start APP


The Arduino MKR 1010 board is equipped with a JST S2B-PH-SM4-TB (LF) (SN) connector to which you can connect a Li-Po battery, Single Cell, 3.7V, 1024mAh Minimum, equipped with a JST PHR-2 connector. The USB port is also used for charging the Li-Po battery.

In the previous figure you can see the orange LED that indicates the battery charge status:

  • ON indicates charge in progress;
  • OFF indicates charge complete or charge disabled;
  • When any fault conditions occur LED blinks at 1 Hz.

For my project I have used a Li-Po battery, Single Cell, 3.7V, 1400mAh.

Case and Assembling

I have designed and printed in 3D a gold PLA case in order to fix Arduino MKR 1010, the UV sensor, the battery, and the switch. The case consists of three parts: the lower part, where the battery is fixed; the middle part where the Arduino MKR 1010 is fixed; and the upper part where the UV sensor and the switch are fixed. In the middle part there is an opening for the microUSB cable. On the upper part there is a hole from which the UV sensor comes out.

Here attached you will find the three files that you need to print in 3D the three parts of the case.

In the following figures, the assembly phases.

That's all!

If you have any questions or suggestions don't hesitate to leave a comment below. Thank you!


Beach UV meter - CodeArduino
Code for reading sensor and publish on Twitter with arduino MKR 1010.
* Beach UV meter
* Mario Soranno
#define BLYNK_PRINT Serial

#include <SPI.h>
#include <WiFiNINA.h>
#include <BlynkSimpleWiFiNINA.h>

int sensorPin = A1;     // select the input pin for the potentiometer
int sensorValue = 0;    // variable to store the value coming from the sensor
String UVIndex = "";     // variable to store the value of UV Index

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "********************************";

// Your WiFi credentials.
//char ssid[] = "*******";
//char pass[] = "**************";

BlynkTimer timer;

void tweetUptime()
  sensorValue = analogRead(sensorPin);

    UVIndex = "0 - Risk Low";
  else if (sensorValue>225 && sensorValue<=325)
    UVIndex = "1 - Risk Low";
  else if (sensorValue>325 && sensorValue<=410)
    UVIndex = "2 - Risk Low";
  else if (sensorValue>410 && sensorValue<=500)
    UVIndex = "3 - Risk Moderate";
  else if (sensorValue>500 && sensorValue<=605)
    UVIndex = "4 - Risk Moderate";
  else if (sensorValue>605 && sensorValue<=695)
    UVIndex = "5 - Risk Moderate";
  else if (sensorValue>695 && sensorValue<=795)
    UVIndex = "6 - Risk High";
  else if (sensorValue>795 && sensorValue<=880)
    UVIndex = "7 - Risk High";
  else if (sensorValue>880 && sensorValue<=975)
    UVIndex = "8 - Risk Very High";
  else if (sensorValue>975 && sensorValue<=1080)
    UVIndex = "9 - Risk Very High";
  else if (sensorValue>1080 && sensorValue<=1170)
    UVIndex = "10 - Risk Very High";
  else if (sensorValue>1170)
    UVIndex = "11 - Risk Extreme";
  Serial.print("sensor = ");
  Blynk.tweet(String("Value of UV Sensor: ") + sensorValue + String("mV\n\n UV Index: " + UVIndex + " (risk of sunburn, skin cancer and other injury)"));

void setup()
  Serial.begin(9600); // Debug console

  Blynk.begin(auth, ssid, pass);

  // Tweet immediately on startup
  Blynk.tweet("Beach UV meter - startup!\n");

  // Setup a function to be called every 10 minutes
  timer.setInterval(10L * 60000L, tweetUptime);

void loop()
{;;  // Initiates BlynkTimer

Custom parts and enclosures

Beach UV meter - lower part of case
Beach UV meter - lower part of case

Beach UV meter - middle part of case
Beach UV meter - middle part of case

Beach UV meter - upper part of case
Beach UV meter - upper part of case


Electrical schematic
Electrical schematic of Beach UV meter.
Schematic crggbf3yxh


Similar projects you might like

Arduino UV Meter with 1530 Levels

Project tutorial by SetNFix

  • 1 comment
  • 8 respects

COVID-19 and PM10 Levels!

Project tutorial by Mario Soranno

  • 18 respects

UV METER (Music Visualizer) #1 With Arduino

Project tutorial by Team kj electronics

  • 1 comment
  • 13 respects

DIY UV Meter With Arduino and a Nokia 5110 Display

Project tutorial by Nick Koumaris

  • 1 comment
  • 14 respects

Alzheimer's Assistant

Project tutorial by Abdullah Muhammad Sadiq

  • 153 respects

Automatic Hand Sanitizer

Project tutorial by Nikolaos Babetas

  • 39 respects
Add projectSign up / Login