init pms5003 lib

This commit is contained in:
Travis Shears 2025-04-09 17:51:28 +02:00
parent 98748d3e6d
commit f2638dddce
4 changed files with 77 additions and 8 deletions

View file

@ -19,7 +19,7 @@ pico_sdk_init()
# the executable
add_executable( node1 node1.c bme280.c )
add_executable( node1 node1.c bme280.c pms5003.c )
pico_set_program_version(node1 "0.1")
pico_set_program_name(node1 "node_one")

30
node1.c
View file

@ -1,21 +1,37 @@
#include <hardware/uart.h>
#include <stdio.h>
#include <hardware/i2c.h>
#include "pico/stdlib.h"
#include "bme280.h"
#include "pms5003.h"
int main() {
stdio_init_all();
// Setup BME280
bme280_config config;
bme280_init(&config, i2c1, 14, 15);
bme280_reading current_reading;
bme280_reading current_bem280_reading;
// Setup PMS5003
pms5003_config pms_config;
pms5003_init(&pms_config, uart1, 20, 21);
pms5003_reading current_pms5003_reading;
while (true) {
sleep_ms(5000); // wait 5 sec
printf("Making reading\n");
current_reading = bme280_read(&config);
printf("Tempature: %.2f\n", current_reading.temperature);
printf("Pressure: %.2f\n", current_reading.pressure);
printf("Humidity: %.2f\n", current_reading.humidity);
// Read BME280
current_bem280_reading = bme280_read(&config);
printf("Tempature: %.2f\n", current_bem280_reading.temperature);
printf("Pressure: %.2f\n", current_bem280_reading.pressure);
printf("Humidity: %.2f\n", current_bem280_reading.humidity);
// Read PMS5003
current_pms5003_reading = pms5003_read(&pms_config);
printf("PM1: %.2f\n", current_pms5003_reading.pm1);
printf("PM2.5: %.2f\n", current_pms5003_reading.pm2_5);
printf("PM10: %.2f\n", current_pms5003_reading.pm10);
}
}

33
pms5003.c Normal file
View file

@ -0,0 +1,33 @@
#include "pms5003.h"
#include "hardware/uart.h"
#include "pico/stdlib.h"
#include <stdint.h>
#include <stdio.h>
/**
Lib for Plantower PMS5003 Particulate Matter (PM) Sensor
Detects PM1, PM2.5, PM10 particulates
Sourcces:
-
https://shop.pimoroni.com/products/pms5003-particulate-matter-sensor-with-cable
- https://github.com/pimoroni/pms5003-python/blob/main/pms5003/__init__.py
- https://github.com/vogelrh/pms5003c/tree/master
*/
void pms5003_init(pms5003_config *new_config, uart_inst_t *uart, uint8_t tx_pin,
uint8_t rx_pin) {
uart_init(uart, 9600);
gpio_set_function(tx_pin, UART_FUNCSEL_NUM(uart, tx_pin));
gpio_set_function(rx_pin, UART_FUNCSEL_NUM(uart, rx_pin));
new_config->uart = uart;
}
pms5003_reading pms5003_read(pms5003_config *config) {
pms5003_reading reading;
reading.pm1 = 0;
reading.pm2_5 = 0;
reading.pm10 = 0;
return reading;
}

20
pms5003.h Normal file
View file

@ -0,0 +1,20 @@
#ifndef PMS5003_H
#define PMS5003_H
#include "hardware/uart.h"
#include <stdint.h>
typedef struct {
float pm1;
float pm2_5;
float pm10;
} pms5003_reading;
typedef struct {
uart_inst_t *uart;
} pms5003_config;
void pms5003_init(pms5003_config *config, uart_inst_t *uart, uint8_t tx_pin,
uint8_t rx_pin);
pms5003_reading pms5003_read(pms5003_config *config);
#endif /* PMS5003_H */