Free tools Windows power users keep installed
One-click scans. No signup required.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
A DFRobot Lark Weather Station, Arduino MKR WiFi 1010, and Qubitro can form a compact weather-monitoring prototype: Lark measures conditions, the Arduino reads it over I²C and sends readings over Wi-Fi using MQTT, and Qubitro presents the incoming data in a cloud dashboard. For a construction team, that can help make site conditions visible remotely—but this is a maker project, not a certified instrument or a turnkey, weatherproof site-monitoring system.
The original community build was published by Pradeep on Hackster.io on May 5, 2024. Its code and platform workflow are useful starting points, but library compatibility, Qubitro setup, security settings, and portal labels should be checked against current documentation before deployment. See the original project and code.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
Weather Meter Kit | $79.95 | Buy on Amazon |
| 2 |
|
ESP8266 Weather Station Kit for Switching and Displaying Data for Any City in The World | $19.43 | Buy on Amazon |
| 3 |
|
ELEGOO ESP-32 Super Starter Kit with Tutorial Compatible with Arduino IDE | $36.99 | Buy on Amazon |
What the station does
The data path is:
DFRobot Lark Weather Station
│ I²C
▼
Arduino MKR WiFi 1010
│ Wi-Fi / MQTT
▼
Qubitro MQTT data source
├── Stored telemetry
├── Dashboard
└── Rules or alerts
Lark is the sensor subsystem. The Arduino acts as the I²C host, Wi-Fi client, and MQTT publisher. Qubitro receives the messages and can make them available for charts, current-value widgets, and configured rules. The project’s example reads temperature, humidity, wind speed, wind direction, pressure, and altitude through Lark library calls. Whether a particular measurement is available, and precisely how it is defined, depends on the sensor configuration and library/API in use.
“Real-time” here means periodic reporting, not continuous measurement or zero-latency monitoring. The published sketch waits about 30 seconds between sends, so readings and dashboard updates are periodic and may be delayed further by Wi-Fi, broker, or dashboard refresh behavior. That cadence can suit general site awareness, but it is not a substitute for fast wind-event capture or an instrumented safety system.
#1 Best Overall
- Kit represents the three core components of weather measurement: wind speed, wind direction and rainfall.
- It uses sealed magnetic reed switches and magnets so you'll need to source a voltage to take any measurements.
- All of the sensors in the weather meter kit are passive components. This means you will need a voltage source in order to measure anything with them.
- Sensors include Wind vane, Cup anemometer, Tipping bucket rain gauge. RJ11 terminated cables.
- Stand: Two-part mounting mast, Rain gauge mounting arm, Wind meter mounting bar, 2x Mounting clamps and 4x Zip ties.
Parts and preparation
- DFRobot Lark Weather Station
- Arduino MKR WiFi 1010
- USB cable and a computer for programming
- Short, suitable jumper wires for power, ground, SDA, and SCL
- Arduino IDE, the SAMD board support package, the Lark library, WiFiNINA, and the MQTT client library used by the project
- A compatible Wi-Fi network, a Qubitro account, and device credentials
- For site use: a suitable enclosure, cable glands and strain relief, and a stable power arrangement
The original author described the project as intermediate and estimated a three-hour build; that is an author estimate, not a guaranteed installation time. The source does not pin exact library or board-package versions. Install the libraries and board support, compile, and validate each layer rather than assuming the 2024 example will build unchanged with every current release. The project names the Arduino IDE; check current vendor documentation for supported software and board setup.
Before applying power, confirm the Lark connector pinout and electrical compatibility with the MKR board. Do not infer voltage or pin order from wire colors. Confirm Wi-Fi coverage at the intended mounting position; a connection that works on a bench may fail behind site structures or inside an enclosure.
Wire and test the sensor first
The demonstrated implementation uses I²C and defines the Lark device address as 0x42. Connect SDA to the board’s SDA pin, SCL to SCL, and connect a common ground. Supply the sensor only at the voltage specified for the actual hardware. Keep the sensor-to-controller wiring short, and verify that no other device on the bus conflicts with the address.
Start with a local-reading sketch before adding Wi-Fi or MQTT. The project’s example uses the Lark library API and a serial monitor at 115200 baud:
#include "DFRobot_LarkWeatherStation.h"
#define DEVICE_ADDR 0x42
DFRobot_LarkWeatherStation_I2C atm(DEVICE_ADDR, &Wire);
void setup() {
Serial.begin(115200);
delay(1000);
while (atm.begin() != 0) {
Serial.println("init error");
delay(1000);
}
Serial.println("init success");
}
void loop() {
Serial.println(atm.getTimeStamp());
Serial.print(atm.getValue("Speed"));
Serial.println(atm.getUnit("Speed"));
Serial.println(atm.getValue("Dir"));
Serial.print(atm.getValue("Temp"));
Serial.println(atm.getUnit("Temp"));
Serial.print(atm.getValue("Humi"));
Serial.println(atm.getUnit("Humi"));
Serial.print(atm.getValue("Pressure"));
Serial.println(atm.getUnit("Pressure"));
Serial.println("----------------------------");
delay(1000);
}
These field names and calls come from the project’s Lark library example; do not assume they are universal across every firmware or library revision. Select the MKR WiFi 1010 as the board, choose its serial port, upload the sketch, then open Serial Monitor at 115200 baud. You should see init success followed by values and units. The example retries initialization indefinitely if it fails, so repeated init error points to a sensor-side issue rather than cloud connectivity.
- Check board selection, port, library installation, and compilation.
- Power down and verify VCC, GND, SDA, and SCL against the actual pinout.
- Run an I²C scanner and check whether the expected address,
0x42, appears. - Shorten the cable and retry the local sketch before proceeding.
Configure the cloud connection
The 2024 project workflow creates a Qubitro project, adds an MQTT data source, obtains device credentials, and places those values in the Arduino sketch. Qubitro’s project, data source, device identity, and credential together define where a station’s messages are accepted and how they are associated with that device. Portal labels and connection requirements can change, so use the current Qubitro documentation to confirm the setup and broker parameters for your account before copying values into code.
The published example includes WiFiNINA and QubitroMqttClient.h, names broker.qubitro.com, and shows port 1883. Treat those as details of that sample—not proof that the same endpoint, port, or security configuration is appropriate today. Port 1883 is commonly used for unencrypted MQTT; verify the provider’s currently recommended encrypted transport and use it where supported by the board and client library. Never assume that a cloud destination alone makes a connection secure.
Keep Wi-Fi credentials, device IDs, and tokens out of public repositories, screenshots, and shared project files. Use a device-specific credential where available, restrict who can access it, and rotate it after testing or exposure. For a more reproducible build, keep secrets in a local configuration file excluded from source control, and record the library versions used.
Rank #2
- The weather station uses the ESP8266-12E to obtain data from the Internet: time of a city, weather data and forecast information for the next 3 days, scrolling on the SSD1306 OLED Display;
- The device can switch to display data from any city in the world - maybe your relatives or friends live there.
- The device uses sensors DHT11, BMP180, BH1750FVI to collect temperature, humidity, Atmosphetic Pressure and light data.
- The weather station reads data indoor via sensor every 5 seconds and uploads it to the Internet every 60 seconds.
- You can see real-time data charts from your phone or computer.Of course you can modify the code to implement different functions.
Publish useful, understandable telemetry
The original project maps readings to generic JSON properties such as Sensor 1 through Sensor 5. That works as a basic demonstration, but makes dashboards harder to interpret and maintain. Prefer descriptive keys and document the units and meanings alongside the device:
{
"temperature": 23.4,
"humidity": 56.1,
"wind_speed": 4.2,
"wind_direction": 180,
"altitude": 100,
"pressure": 1008.4
}
Use the actual units returned by the library; the example’s values above are illustrative, not measurements or validated output. A matching Arduino payload can be assembled from the Lark calls, for example:
String payload =
"{"temperature":" + String(atm.getValue("Temp"), 2) +
","humidity":" + String(atm.getValue("Humi"), 2) +
","wind_speed":" + String(atm.getValue("Speed"), 2) +
","wind_direction":" + String(atm.getValue("Dir"), 2) +
","altitude":" + String(atm.getValue("Altitude"), 2) +
","pressure":" + String(atm.getValue("Pressure"), 2) +
"}";
This illustrates field naming and serialization only; validate the API calls, units, JSON, MQTT destination/topic, and publish method against the installed Lark and Qubitro libraries. Altitude needs particular care: establish whether it is reported by the device or calculated, its reference, and whether it is meaningful for your use. Do not treat an altitude value as a weather reading without understanding its source.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
In the project code, cloud initialization appears in setup() and again in the main loop. For an unattended station, connection setup should normally happen at startup and in a deliberate reconnect path—not on every sampling cycle. Use a controlled retry interval with backoff; reconnect MQTT only after Wi-Fi is available. Avoid blocking forever on a failed network. Report connection state over serial or an LED, and track the last successful publish.
Build a dashboard that helps people act
After confirming messages arrive at the data source, create widgets bound to the exact field names in the payload. The project suggests displays for temperature, humidity, wind speed, altitude, and pressure. A practical site dashboard should distinguish:
- Current reading: the latest value with an explicit unit.
- Trend: a time-series chart over a useful period, with the sample interval visible.
- Freshness: the last received timestamp and an offline or stale-data state.
- Context: station location, mounting details, firmware/library version, and relevant sensor metadata.
Do not let a missing reading appear as a real zero. Make the dashboard show missing or stale data distinctly. A public dashboard is a privacy decision: inspect what location and operational information it reveals before sharing it. Current dashboard sharing, retention, and rule capabilities depend on the account and provider configuration; confirm those details in current Qubitro documentation.
Alerts without notification storms
Rules can be useful for conditions such as high wind or low temperature, but a single threshold crossing can be caused by noise or a transient reading. Where the platform supports it, require a threshold to persist for a defined duration, add hysteresis so the alert does not repeatedly switch on and off around the boundary, and set a sensible repeat or recovery policy. Alert on stale telemetry as well as weather values: a silent station can be more dangerous than an uneventful reading. Do not rely on this prototype for life-safety, crane, lifting, or work-stoppage decisions without suitable certified instruments and procedures.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Making it suitable for a construction site
The project demonstrates sensing and cloud visualization, not outdoor qualification or measurement accuracy. Before placing it on a site:
Rank #3
- Powerful ESP-32 Board: Unlock the world of Internet of Things (IoT) and advanced electronics with the heart of this kit: the ESP-32 board. It features a powerful dual-core processor, integrated Wi-Fi and Bluetooth 4.2, making it perfect for building connected, smart devices that communicate with your phone or the cloud. It's fully compatible with the Arduino IDE for easy programming.
- Super Starter Kit: This kit contains over 35 different modules and electronic components, including sensors, displays, motors, and input devices. From LEDs and buttons to an OLED screen, servo motor, and keypad, you have everything needed to explore a vast range of projects in one box.
- Step by Step Online Tutorial: Jump right in with our detailed, beginner-friendly tutorial. Access 30+ projects with complete code, clear circuit diagrams, and step-by-step instructions. Learn the fundamentals of electronics, coding, and how to utilize the ESP-32's unique capabilities without any prior experience.
- Hands-on Learning for All Skill Levels: Perfect for students, makers, engineers, and hobbyists. Start with basic circuits and coding, then progress to intermediate and advanced IoT applications. Build practical projects like weather stations, smart home controllers, remote-controlled devices, and interactive gadgets. The skills you learn are the foundation for real-world innovation.
- Quality & Great Support: Elegoo is committed to quality. We provide a clear, detailed tutorial guide, refined code, and a well-organized component kit. All modules are carefully selected for reliability and ease of use. Our dedicated technical support team and active online community are ready to help you succeed in your learning journey.
- Use an enclosure and cable entries appropriate to rain, dust, impact, and the installation location; plan drainage and condensation control.
- Protect temperature and humidity measurements from direct sun and heat from the enclosure or controller.
- Mount wind sensing away from obstructions and document height and nearby structures, which can distort readings.
- Secure cables against strain, water ingress, abrasion, and insects. Avoid long outdoor I²C runs: I²C is best suited to short board-level links. Consider locating the controller near the sensor, using a suitable bus extender, or using another supported transport such as UART where appropriate.
- Provide a stable power source and plan for outages. An improvised outdoor USB supply is not a durable power design.
- Compare readings with a trusted reference and document calibration or known offsets before using values operationally.
No independent accuracy, calibration, enclosure-rating, or field-reliability results are established by the project. Treat the station as a prototype and make decisions accordingly.
Troubleshooting by layer
No Lark readings or repeated initialization errors
Check power and ground first, then SDA/SCL pin selection, cable length, the I²C address, and library compatibility. Run an I²C scanner and confirm 0x42 is visible. Test the local serial sketch before involving Wi-Fi.
Wi-Fi never connects
Verify SSID and password, signal strength at the installation point, and network compatibility with the board and WiFiNINA setup. A captive portal or enterprise authentication may prevent a small device from joining. Test a basic WiFiNINA example near the access point, inspect status codes, and use bounded retries rather than an infinite tight loop.
Recommended Free Tools
MQTT connects poorly or no cloud records appear
Recheck the current broker settings, device ID/token, data source, and required topic or message destination in Qubitro’s current documentation. Confirm Wi-Fi is actually connected before trying MQTT. Log errors without printing secrets, validate the JSON independently, and check that the dashboard is connected to the same source and exact field names. A 2024 tutorial workflow may not match current portal requirements.
Dashboard values are blank, mislabeled, or stale
Compare incoming JSON keys with widget bindings, confirm numeric fields are encoded as numbers rather than quoted strings, and display the last received time. Distinguish missing data from zero. If the network or cloud service is unavailable, consider local buffering, a sequence number, device-side timestamps, and a reconnect queue so gaps can be identified rather than mistaken for stable weather.
When this design fits—and when it does not
This combination is a useful educational build when the goal is to learn sensor integration, Wi-Fi, MQTT, and hosted dashboards, or to prototype remote visibility using an integrated sensor. It is less suitable when the priority is certified meteorological accuracy, long-range connectivity without Wi-Fi, low-power autonomy, offline-first operation, large fleet management, or security and reliability guarantees without additional engineering.
Alternatives change the trade-offs rather than making the original code interchangeable. An ESP32 may suit a lower-cost Wi-Fi prototype, but requires different board support, pin choices, and compatibility checks. A Raspberry Pi gateway can support local storage and richer software, at the cost of higher power and operating-system maintenance. A self-hosted MQTT and dashboard stack reduces dependence on a hosted service but adds administration. A commercial weather station may provide a more installation-ready product and support, while offering less freedom to customize raw telemetry. Check DFRobot, the Arduino Store, and Qubitro for current product and service details; prices, availability, plan limits, and retention are not established here.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesQuick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.


Leave a Reply