The Earth's atmosphere is a dynamic and intricate system influenced by various factors, with wind speed, wind direction, temperature, humidity, and air pressure being pivotal. A comprehensive understanding of atmospheric movement necessitates precise detection and recording of these elements. Traditionally, acquiring meteorological data involved a cumbersome process of integrating multiple sensors, requiring time-consuming wiring, programming, debugging, and assembly. This posed significant challenges for educators and students interested in meteorological research. Moreover, existing commercial weather stations are often specialized weather monitoring equipment that cannot be developed twice and lack adaptability, thus falling short in meeting the diverse needs of research. To address these issues, we present the Lark Weather Station.
Lark Weather Station is an exceptionally compact weather station that provides key weather data such as wind speed, wind direction, temperature, humidity, and atmospheric pressure. It incorporates high-quality sensors internally to ensure precise and stable data, making it suitable for meteorological research. The data output from Lark is in standard physical quantities, which can be read and processed using controllers like Arduino or directly recorded into its own 16M storage space. The Lark adopts a modular shell design, allowing for the expansion of additional sensors to collect a wider range of meteorological data, meeting diverse user needs for weather exploration.
Product Parameters
- Working Voltage: 3.3~5.5V DC
- Working Current: 40mA
- Sleep Current: 2mA
- Communication Mode: I2C/UART
- Wind Speed: 0.5~12m/s
- Wind Direction: Eight directions
- Temperature: -20~60℃ ±0.2℃
- Humidity: 0~99%RH ±2%RH
- Air Pressure: 300~1100hPa ±1Pa
- USB Disk: 16M
- Main Body Size: 160x55mm
- Main Body Weight: 270g
Structural Overview
Note: The wind vane can be quickly inserted and removed by pressing. To remove, gently press to pop it out. Do not pull forcefully.
Number | Name | Function |
---|---|---|
1 | Compass | Assists in orientation identification |
2 | Anemometer | Wind speed detection device, works with internal sensor to measure wind speed |
3 | Anemometer Cover | Protects the anemometer cups when stored; should be removed when using the compass |
4 | Louvere Box | Ensures air circulation, used for temperature, humidity, and air pressure detection |
5 | Wind Vane | Wind direction detection device, works with wind direction shaft and internal sensor to measure wind direction |
6 | Wind Direction Shaft | Rotates driven by the wind vane, used for wind direction detection |
7 | Gravity Interface | Supports I2C/UART communication, can interact with development boards like Arduino |
8 | Type-C Interface | Used for configuration or data export |
9 | Adjustable Tripod | Supports the weather station |
10 | Expansion Port | Connects to the battery and data transmission module in the expansion bin |
11 | 1/4 Inch Thread Hole | Used to secure the weather station, can be connected to a tripod |
12 | Firmware Upgrade | Upgrades the system firmware |
Quick Start
Before You Start
- 5V Mobile Power Supply/5V Adapter *1
- Computer *1
STEP1: Assemble
- Align the wind vane with the slot on the wind direction shaft and gently press to complete the installation. To remove, gently press to pop it out, and do not pull forcefully.
- Connect the tripod to the 1/4-inch thread hole at the bottom of the weather station.
STEP2: Data Collection
- Connect a 5V mobile power source or 5V adapter to the Type-C interface of the weather station to power it.
- Please calibrate the orientation of the weather station each time it is started to ensure accuracy. Adjust the angle of the weather station so that the Type-C interface faces the direction pointed by the compass S, i.e., align the Type-C port towards the south. Once the weather station starts up normally, the yellow light will turn off. At this time, you need to rotate the wind vane once to complete the wind direction calibration.
- After calibration, wait for 10 seconds. The weather station will automatically start data collection and record, defaulting to collect and store data every 30 seconds. The Venetian blind will flash green when record data.
Note: At this time, do not power the weather station directly from a computer. If you connect the computer to the weather station, the weather station will only provide data export functionality and will not be able to store data.
STEP3: Data Export
- After data collection is complete, first disconnect the weather station from the 5V power source. Connect the computer to the Type-C interface of the weather station, and a USB drive will pop up on the computer.
- Open the USB drive, locate the latest CSV file, and open it to view the recorded data.
Function Description
Wind Direction Measurement
Please calibrate the orientation of the weather station each time it is started to ensure accuracy. Adjust the angle of the weather station so that the Type-C interface faces the direction pointed by the S on the compass, i.e., align the Type-C port towards the south. Once the weather station starts normally, the yellow light will turn off, at which point you should rotate the wind vane once to complete the calibration.
You can use the compass on the cover to assist in calibration. When using the compass, remove the cover and keep it at least 10 cm away from the weather station. Be aware of possible magnetic interference from nearby electronic devices like computers and mobile phones.
Parameter Configuration
Connect the weather station to the computer via Type-C, and a 16M USB drive will pop up on the computer. Open the config file in the USB drive.
Name | Function | Options | Default |
---|---|---|---|
Communication | Set communication mode | I2C/UART | I2C |
Sample_rate | Set data sampling rate | 1-60S or 1-60M | 30S |
Record | Set whether to enable data record | ON/OFF | ON |
Delay_record | Set delay start time for record,Unit: S | 10~60 | 10 |
Light_Switch | Set whether RGB light is always on | ON/OFF | OFF |
Low_Power | Set whether to enable low power mode | ON/OFF | OFF |
UART baud rate fixed at 115200.
Delay_record only delays the first data record after each startup, and this time is used for the purpose of placing the Lark in the appropriate position.
Changes to the configuration require a reboot to take effect.
When you modify the config file and restart Lark, if the yellow light turns off and the red light turns on, it means that incorrect configuration information was written to the config file. In this case, you need to do the following: format Lark's USB drive, then power it off. Power it back on and wait for the yellow light to turn off, then power it off and on again. At this point, you will see a brand new config file on Lark's USB drive.
Data record and Export
- Connect the weather station to the computer using a Type-C data cable, and open the config file in the popped-up USB drive.
- In the config file, set the "Record" configuration to "Record:ON". If not modified, it should already be in "Record:ON" by default.
- Disconnect the weather station from the computer and then connect it to an external power supply.
- After the weather station starts, it will begin storing data after reaching the time set in "Delay_Record". The interval of data record is determined by the time set in "Sample_Rate".
Note: When connected to the computer, the weather station only provides data export function and cannot store data.
Firmware Upgrade
- To avoid data loss during firmware update, back up previously stored CSV files before the update: connect the module to the computer using a Type-C data cable, copy the previous data CSV files from the popped-up USB drive to the computer system, then disconnect the Type-C from the module.
- Use an M2 screwdriver, SIM card pin, or other pointed tool to insert into the firmware upgrade slot at the bottom of the weather station and press the button inside.
- While pressing the button, connect the weather station to the computer via the Type-C port. A USB drive named “RPI-RP2” will pop up on the computer, and you can then release the button.
- Drag the latest ".uf2" firmware file into the "RPI-RP2" USB drive to complete the firmware upgrade.
Low Power Mode Description
- When the "Low_Power" configuration is set to "Low_Power:ON", low power mode will be enabled.
- In low power mode, I2C/UART functionality will be disabled, and data cannot be obtained through controllers like Arduino.
- In low power mode, ensure that the record function is turned on.
- In low power mode, the system will wake up periodically to collect data at intervals set in "Sample_Rate". If the record function is enabled, the collected data will be stored. Note, in low power mode,that the minimum value for "Sample_Rate" is 60 seconds, if a shorter interval is set, the system will automatically enforce a 60-second interval.
- In low power mode, after the weather station is powered on, it will perform a data collection operation and then enter sleep mode. If the record function is enabled, the collected data will be stored before entering sleep.
- In low power mode, when the wind vane is blown by the wind and generates motion, the system will wake up for a data collection. If the record function is enabled, the collected data will be stored, and then the system will re-enter sleep mode.
RGB Indicator Light Status Explanation
- Yellow Light: The system is initializing, approximately 1 second.
- Red Light: System anomaly, reasons include abnormal configuration in the config file, internal sensor failure.
Explanation: Regardless of whether the Light_Switch is set to ON or OFF, the yellow light will illuminate for 1 second after startup. If there is a system anomaly, the red light will illuminate. When Light_Switch is set to OFF, the indicator light will usually be off after a normal startup and will briefly light up when data is stored. When Light_Switch is set to ON, the indicator light will usually be on continuously and will turn off briefly when data is stored.
- Green Light: Current communication mode is I2C.
- Blue Light: Current communication mode is UART.
- Green Light Flashing: Data is being stored, and the current communication mode is I2C.
- Blue Light Flashing: Data is being stored, and the current communication mode is UART.
- When Light_Switch is set to OFF, the indicator light is usually off and will flash when data is stored.
When you modify the config file and restart Lark, if the yellow light turns off and the red light turns on, it means that incorrect configuration information was written to the config file. In this case, you need to do the following: format Lark's USB drive, then power it off. Power it back on and wait for the yellow light to turn off, then power it off and on again. At this point, you will see a brand new config file on Lark's USB drive.
System Time Setting
The Lark can set the time through the config file in the USB drive. Add a new line in the config file and enter “Time:2023/7/24/17:56:15”, then save. After restarting the Lark, it will automatically read and update the system time based on the time set in the config.
- Explanation: When setting the time using the config file, it is recommended to set the time 10 seconds ahead of the actual time to allow for system initialization and operation time. During system initialization, it will automatically check for the Time tag and corresponding data in the config file. If found, the system time will be updated, and the Time tag and data in the config file will be cleared to prevent resetting the time during the next startup.
- Note: There is a blank line at the end of the config file. If this blank line is deleted, it will cause abnormalities. When manually adding “Time:2023/7/24/17:56:15”, ensure there is a blank line at the end.
The system time can also be set through code, as detailed in the UNO Tutorial and UNIHIKER Tutorial sections.
Power Supply & Reserved Communication Port Explanation
Number | Name | Function | Number | Name | Function |
---|---|---|---|---|---|
1 | V_GNSS | Independent power supply port for positioning module | 5 | V_DTU | Independent power supply port for communication module |
2 | VBAT2 | Charging port, connect to battery positive | 6 | GND | System ground |
3 | GND | Battery negative terminal | 7 | SCL | I2C clock |
4 | VBAT1 | Battery positive terminal | 8 | SDA | I2C data |
A battery installation space is reserved in the expansion bay. If you install the battery yourself without using the expansion bay, pay attention to the direction of the positive and negative terminals. Incorrect connection can cause damage.
When connecting a rechargeable battery yourself, both VBAT1 and VBAT2 should be connected to the battery positive terminal. VBAT1 is for powering the Lark, and VBAT2 is for charging the battery.
UNO Tutorial - I2C
Hardware and Software Preparation
- Hardware
- DFRuino UNO R3 x1
- Gravity I/O Sensor Expansion Board x1
- Lark Weather Station x1
- Software
- Arduino IDE Download Arduino IDE
- Download and install the Lark Weather Station Library. How to install the library?
Wiring Diagram
Code Programming
#include "DFRobot_LarkWeatherStation.h"
#define DEVICE_ADDR 0x42
DFRobot_LarkWeatherStation_I2C atm(DEVICE_ADDR,&Wire);
void setup(void){
Serial.begin(115200);
mySerial.begin(9600);
delay(1000);
while(atm.begin()!= 0){
Serial.println("init error");
delay(1000);
}
Serial.println("init success");
//atm.setTime(2023,3,1,17,20,0);
}
void loop(void){
Serial.println(atm.getTimeStamp());
Serial.print(atm.getValue("Speed").toFloat());
Serial.println(atm.getUnit("Speed"));
Serial.println(atm.getValue("Dir"));
Serial.print(atm.getValue("Temp").toFloat());
Serial.println(atm.getUnit("Temp"));
Serial.print(atm.getValue("Humi").toFloat());
Serial.println(atm.getUnit("Humi"));
Serial.print(atm.getValue("Pressure").toFloat());
Serial.println(atm.getUnit("Pressure"));
// Serial.print(atm.getValue("Battery"));//Available when connected to a lithium battery
// Serial.println(atm.getUnit("Battery")); //Available when connected to a lithium battery
// Serial.print(atm.getValue("Lat"));//Available when connected to a GNSS module
// Serial.print(atm.getValue("Lon"));//Available when connected to a GNSS module
Serial.println("----------------------------");
// Serial.println(atm.getInformation(true));
delay(1000);
}
Mind+
Load the Mind+ user library: https://gitee.com/liliang9693/ext-yunque
UNO Tutorial - UART
Hardware and Software Preparation
- Hardware
- DFRuino UNO R3 x1
- Gravity I/O Sensor Expansion Board x1
- Lark Weather Station x1
- Software
- Arduino IDE Download Arduino IDE
- Download and install the Lark Weather Station Library. How to install the library?
Wiring Diagram
Lakr Config
Connect the Lark to the computer, open the USB drive that pops up on the computer, and open Config.txt. Change the first line from I2C to UART, Both uppercase and lowercase UART are acceptable.
Code Programming
#include "DFRobot_LarkWeatherStation.h"
#include <SoftwareSerial.h>
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_LarkWeatherStation_UART atm(&mySerial);
void setup(void){
Serial.begin(115200);
mySerial.begin(115200);
delay(1000);
while(atm.begin()!= 0){
Serial.println("init error");
delay(1000);
}
Serial.println("init success");
//atm.setTime(2023,3,1,17,20,0);
}
void loop(void){
Serial.println(atm.getTimeStamp());
Serial.print(atm.getValue("Speed").toFloat());
Serial.println(atm.getUnit("Speed"));
Serial.println(atm.getValue("Dir"));
Serial.print(atm.getValue("Temp").toFloat());
Serial.println(atm.getUnit("Temp"));
Serial.print(atm.getValue("Humi").toFloat());
Serial.println(atm.getUnit("Humi"));
Serial.print(atm.getValue("Pressure").toFloat());
Serial.println(atm.getUnit("Pressure"));
// Serial.print(atm.getValue("Battery"));//Available when connected to a lithium battery
// Serial.println(atm.getUnit("Battery")); //Available when connected to a lithium battery
// Serial.print(atm.getValue("Lat"));//Available when connected to a GNSS module
// Serial.print(atm.getValue("Lon"));//Available when connected to a GNSS module
Serial.println("----------------------------");
// Serial.println(atm.getInformation(true));
delay(1000);
}
UNIHIKER Tutorial
Mind+
- Load the Mind+ user library: https://gitee.com/liliang9693/ext-yunque
- Switch Mind+ to Python mode, select "Official Library - Unihiker" and "pinpong library - pinpong initialization" in the extensions.
- When calling the "Lark Initialization" block, the Unihiker will synchronize the system time of the Unihiker with the Lark.
- If an error occurs while running, please update the pinpong library to version 0.4.9 or above.
Python Programming
- Download the Lark Weather Station Library For UNIHIKER
from DFRobot_Atmospherlum import *
from pinpong.board import Board
import time
Board().begin()
yunque_i2c = DFRobot_Atmospherlum_I2C(0x42)
while (yunque_i2c.begin() != 0):
print("yunque_i2c initialize failed!!")
time.sleep(1)
print("Sensor initialize success!!")
yunque_i2c.set_local_time()
time.sleep(1)
while True:
print((yunque_i2c.get_time_stamp()))
print((str((yunque_i2c.get_value("Speed"))) + str((yunque_i2c.get_unit("Speed")))))
print((yunque_i2c.get_value("Dir")))
print((str((yunque_i2c.get_value("Temp"))) + str((yunque_i2c.get_unit("Temp")))))
print((str((yunque_i2c.get_value("Humi"))) + str((yunque_i2c.get_unit("Humi")))))
print((str((yunque_i2c.get_value("Pressure"))) + str((yunque_i2c.get_unit("Pressure")))))
time.sleep(1)
Makecode Tutorial
Wiring Diagram
Graphical Programming
- Open the MakeCode online programming page
- Create a new project and load the Lark Weather Station extension library: https://github.com/DFRobot/pxt-DFRobot_lark.git
- Select the physical quantity data you want to obtain from the dropdown menu
Execution Result
Sensor Expansion
The Lark Weather Station comes with two built-in Gravity I2C expansion interfaces, allowing for the connection of additional sensors to gather a wider range of meteorological data. This provides users with more flexible options to choose sensors according to their needs and integrate them easily into the system.
Operating Procedure
- Remove the two screws in the middle of the bottom of the weather station.
- Pull out the connection line from the bottom.
- Unscrew the three screws under the Venetian blind by about 5mm and remove the entire Venetian blind.
- Connect the sensors you want to expand to the expansion interfaces.
- When reassembling, make sure the side of the wind direction shaft with the magnet faces towards the base.
Expandable Sensor List
SKU | Sensor | Physical Quantity | Name Tag | Typical Data | Device Address | Version |
---|---|---|---|---|---|---|
SEN0228 | Digital Ambient Light Sensor | Ambient Light | Light | Light: 125.47 lx | 0x10 | V1.0.0 |
SEN0322 | Oxygen Sensor | Oxygen Concentration | O2 | O2: 20.01 %vol | 0x72 A0A1:10 |
V1.0.0 |
SEN0321 | Ozone Sensor | Ozone Concentration | O3 | O3: 1544 ppb | 0x70 0x71 0x73 |
V1.0.0 |
SEN0514 | Air Quality Sensor | Air Quality TVOC ECO2 |
AQI TVOC ECO2 |
AQI: 1 TVOC: 88 ppb ECO2: 529 ppm |
0x52 0x53 |
V1.0.0 |
SEN0529 | Three-Axis Magnetometer | Direction X-axis Magnetism Y-axis Magnetism Z-axis Magnetism |
Angle_N Mag_X Mag_Y Mag_Z |
Angle_N: 157.38 ° Mag_X: 20 uT Mag_Y: -48 uT Mag_Z: -14 uT |
0x13 A0A1:11 |
V1.0.0 |
SEN0364 | Visible Light Spectrometer | Spectrum | 405-425nm 435-455nm ... |
405-425nm: 11 435-455nm: 61 ... |
0x39 | V1.0.0 |
SEN0460 | PM2.5 Air Quality Sensor | PM1.0 PM2.5 PM10 |
PM1.0 PM2.5 PM10 |
PM1.0: 43 ug/m³ PM2.5: 77 ug/m³ PM10: 93 ug/m³ |
0x19 | V1.0.0 |
SEN0206 | Infrared Temperature Sensor | Temperature | Temp | Temp: 22.41 ℃ | 0x5A | V1.0.0 |
SEN0536 | Carbon Dioxide Sensor | Carbon Dioxide Concentration | CO2 | CO2: 401.37 ppm | 0x62 | V1.0.0 |
TEL0157 | Satellite Positioning | Latitude Longitude Altitude |
Lat Lon Altitude |
Lat: dd.dddddd Lon: dd.dddddd Altitude: 522.9 m |
0x20 | V1.0.0 |
Data Acquisition
Here, we demonstrate acquiring oxygen concentration data using SEN0322 as an example. Simply write the physical quantity's name tag into the getValue and getUnit functions.
#include "DFRobot_LarkWeatherStation.h"
#define DEVICE_ADDR 0x42
DFRobot_LarkWeatherStation_I2C atm(DEVICE_ADDR,&Wire);
void setup(void){
Serial.begin(115200);
//Serial1.begin(115200);
delay(1000);
while(atm.begin()!= 0){
Serial.println("init error");
delay(1000);
}
Serial.println("init success");
//atm.setTime(2023,3,1,17,20,0);
}
void loop(void){
Serial.println(atm.getTimeStamp());
Serial.print(atm.getValue("Speed"));
Serial.println(atm.getUnit("Speed"));
Serial.print(atm.getValue("O2"));
Serial.println(atm.getUnit("O2"));
Serial.println("----------------------------");
delay(1000);
}
FAQ
For any questions, advice or cool ideas to share, please visit the DFRobot Forum.
More Documents
Arduino&Raspberry Pi Library: https://github.com/DFRobot/DFRobot_LarkWeatherStation
UNIHIKER Library: https://gitee.com/liliang9693/ext-yunque/tree/master/python/libraries
Makecode Library: https://github.com/DFRobot/pxt-DFRobot_lark.git
Get Lark Weather Station from DFRobot Store or DFRobot Distributor.