The sensor operates based on light scattering and absorption. Reducing the Tx-Rx distance to 25mm will likely increase the intensity of light received by the detector. This can shift the baseline readings, making the turbidity values appear lower than they are. The dynamic range of the sensor may be affected. This can make extreme turbidity values harder to distinguish. If you want to accommodate turbidity, TDS, and pH sensors into a single PCB, you can make one like this. It will give you a complete picture of water quality.
https://www.pcbway.com/project/shareproject/PCB_DESIGN_AND_DEVELOPMENT_FOR_PH_TURBIDITY_AND_TDS_MODULES_5a8d79e8.html
Yes. You have to use two different data pins. You just need to modify the code given in the wiki page:
https://wiki.dfrobot.com/Gravity__Infrared_CO2_Sensor_For_Arduino_SKU__SEN0219
If you want to make a PCB, you will get some idea about the cost here:
https://www.allpcb.com/blog/pcb-ordering/pcb-cost-per-unit.html
You can try this code to change the address.
#include <SoftwareSerial.h>
#define TX_PIN 3 // TX pin to MAX485 DI
#define RX_PIN 2 // RX pin from MAX485 RO
#define DE_RE 4 // RS485 Direction Control
SoftwareSerial rs485Serial(RX_PIN, TX_PIN); // RX, TX
void sendCommand(byte *cmd, int length) {
digitalWrite(DE_RE, HIGH); // Enable RS485 Transmit
delay(10);
rs485Serial.write(cmd, length);
delay(10);
digitalWrite(DE_RE, LOW); // Disable RS485 Transmit (Enable Receive)
}
void setup() {
Serial.begin(9600); // Debugging Serial Monitor
rs485Serial.begin(9600); // RS485 Baud Rate
pinMode(DE_RE, OUTPUT);
digitalWrite(DE_RE, LOW); // Default to Receive Mode
// Modbus RTU Command to Change Address from 0x01 to 0x02
byte changeAddressCmd[] = {
0x01, 0x06, 0x00, 0x03, 0x00, 0x02, 0x79, 0x84
};
Serial.println("Changing RS485 Sensor Address from 0x01 to 0x02...");
sendCommand(changeAddressCmd, sizeof(changeAddressCmd));
delay(1000);
Serial.println("Address Change Sent! Now testing new address...");
}
void loop() {
byte requestDataCmd[] = {
0x02, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x39
};
sendCommand(requestDataCmd, sizeof(requestDataCmd));
delay(500); // Wait for response
while (rs485Serial.available()) {
Serial.print(rs485Serial.read(), HEX);
Serial.print(" ");
}
Serial.println();
delay(2000);
}
If you want to make a simple soil moisture sensor, you may try this:
https://www.pcbway.com/project/shareproject/Customized_LM393D_Soil_Moisture_Sensor_Board_4985ec99.html
The SCD4X.setAutoCalibMode(true); line explicitly enables automatic self-calibration (ASC). If this line is not included in your code, ASC’s status will depend on the default configuration of the sensor and the library. If your sensor operates in typical environments (e.g., office spaces, homes, or outdoor settings with periodic ventilation), ASC is highly beneficial and should remain enabled for long-term accuracy.
For cross-checking your data you can use another Co2 sensor like the MQ135.
https://www.theengineeringprojects.com/2024/03/mq135-air-quality-sensor.html
Yes. You have to use an I2C multiplexer.
The Solar Power Manager 5V (DFR-559) is designed with a low quiescent current feature when disabled. When the EN pin is pulled low to disable the board and there is no solar input voltage, the battery consumption is expected to be less than 1 mA, as stated in its specifications.
I think you need to see here https://github.com/DFRobot/DFRobot_SpeechSynthesis_V2
Use an I2C scanner script to check if the Maqueen is acknowledging the I2C addresses (0x10, 0x14, etc.).
Go to Sketch > Include Library > Add .ZIP Library.Navigate to the downloaded .zip file and select it.Ensure no errors are displayed after installation.
Open the device manager (Windows) or use ls /dev/tty* (Linux/macOS) to verify that your Beetle ESP32-C6 is recognized and assigned a COM/serial port.
The Ozone Sensor SEN0321 (from DFRobot) uses a 4-pin I2C interface for communication. To connect it to an Intel NUC via USB, you’ll need an I2C to USB adapter or bridge.
I hope they are working on this issue.
Using MCtimer2 (or any timer with interrupts) can help you measure precise timing intervals when you're working with data that needs to be sampled at a specific rate or requires high accuracy.
The beam angle itself cannot be changed, as it's determined by the sensor's optics and design.
Adjust sensitivity-related parameters like Noise Floor, Watchdog Threshold, and Spike Rejection.
I cannot see any way to change the address.
https://wiki.dfrobot.com/RS485_Soil_Sensor_Temperature_Humidity_EC_PH_SKU_SEN0604
Let's see what dfrobot has to say.
The persistent "presence detected" issue may be due to environmental IR interference or suboptimal placement of the sensor. Test in a controlled environment and adjust sensitivity or detection parameters if possible. Light has huge effect of the output of such sensors. Make sure there is enough light.
RS485 communication requires managing the direction of data flow. The USB-to-RS485 converter usually relies on hardware (automatic) or manual control of the RE/DE (Receive Enable/Driver Enable) pins to switch between transmit and receive modes. The CH340-based converter should handle this automatically.
You can see here https://learn.dfrobot.com/makelog-313293.html