Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Battery-Powered Weather Station with SparkFun Pro Micro and NRF24L01

View and Edit Project In Cirkit DesignerImage of Battery-Powered Weather Station with SparkFun Pro Micro and NRF24L01

Circuit Documentation

Summary

This circuit is designed to read temperature and humidity data using a DHT11 sensor and transmit the data wirelessly using an NRF24L01 module. The system is powered by a 18650 Li-ion battery, which is charged using a TP4056 module connected to a solar cell. The main controller for the circuit is a SparkFun Pro Micro.

Component List

SparkFun Pro Micro

DHT11

NRF24L01

18650 Li-ion Battery

TP4056

Solar Cell

Wiring Details

SparkFun Pro Micro

DHT11

NRF24L01

18650 Li-ion Battery

TP4056

Solar Cell

Documented Code

SparkFun Pro Micro Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

// Pin untuk NRF24L01
#define CE_PIN   8
#define CSN_PIN  10

// Pin untuk sensor DHT11
#define DHT_PIN  7
DHT dht(DHT_PIN, DHT11);

// Setup modul NRF24L01
RF24 radio(CE_PIN, CSN_PIN);
const byte address[6] = "00001";

// Setup LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C 0x27 untuk LCD 16x2

void setup() {
  // Inisialisasi komunikasi serial
  Serial.begin(9600);
  
  // Inisialisasi sensor DHT11
  dht.begin();
  
  // Inisialisasi LCD
  lcd.init();      
  lcd.backlight();
  lcd.print("Initializing...");
  delay(1000);
  
  // Inisialisasi modul NRF24L01
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_HIGH);
  
  // Clear layar LCD
  lcd.clear();
  lcd.print("Ready to send...");
}

void loop() {
  // Membaca suhu dan kelembapan dari DHT11
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();
  
  if (isnan(temperature) || isnan(humidity)) {
    lcd.clear();
    lcd.print("Sensor Error");
    delay(2000);
    return;
  }
  
  // Menampilkan suhu dan kelembapan pada LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print("C");
  
  lcd.setCursor(0, 1);
  lcd.print("Humidity: ");
  lcd.print(humidity);
  lcd.print("%");
  
  // Mengirimkan data melalui NRF24L01
  float data[2] = {temperature, humidity};
  radio.write(&data, sizeof(data));

  // Menunggu 2 detik sebelum membaca ulang
  delay(2000);
}

DHT11 Code

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Solar Cell Code

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

This documentation provides a comprehensive overview of the circuit, including a summary, detailed component list, wiring details, and documented code for the microcontrollers.