get pms5003 working
", readings_index); "); "); "); "); ", "); ", "); "); "); "); "); "); "); "); "); "); "); ", link_status); ", link_status); "); ", readings[reading_i].pm1, readings[reading_i].pm2_5, readings[reading_i].pm10); ", reading_i);
This commit is contained in:
parent
9dd4ee4163
commit
0e513dc79a
2 changed files with 34 additions and 24 deletions
40
node1.c
40
node1.c
|
|
@ -101,6 +101,7 @@ int main() {
|
|||
|
||||
if (absolute_time_diff_us(last_sensor_reading, now) >=
|
||||
SENSOR_READING_INTERVAL_US) {
|
||||
printf("Sensor reading: %d\n", readings_index);
|
||||
last_sensor_reading = now;
|
||||
printf("Making BME280 Reading\n");
|
||||
current_bem280_reading = bme280_read(&bem_config);
|
||||
|
|
@ -117,18 +118,21 @@ int main() {
|
|||
pms5003_warmup(&pms_config);
|
||||
}
|
||||
|
||||
// if (readings_index == 4) {
|
||||
// printf("Starting reads on PMSS5003\n");
|
||||
// pms5003_start_reading(&pms_config);
|
||||
// }
|
||||
if (readings_index == 4) {
|
||||
printf("Starting reads on PMSS5003\n");
|
||||
pms5003_start_reading(&pms_config);
|
||||
}
|
||||
|
||||
// if (readings_index == 6) {
|
||||
// printf("Finished reading PMSS5003\n");
|
||||
// current_pms5003_reading = pms5003_finish_reading(&pms_config);
|
||||
// snprintf(msg_to_send, sizeof(msg_to_send), "M02,%.2f,%.2f,%2f\n",
|
||||
// current_pms5003_reading.pm1, current_pms5003_reading.pm2_5,
|
||||
// current_pms5003_reading.pm10);
|
||||
// }
|
||||
if (readings_index == 6) {
|
||||
printf("Finished reading PMSS5003\n");
|
||||
current_pms5003_reading = pms5003_finish_reading(&pms_config);
|
||||
snprintf(msg_to_send, sizeof(msg_to_send), "M02,%.2f,%.2f,%2f\n",
|
||||
current_pms5003_reading.pm1, current_pms5003_reading.pm2_5,
|
||||
current_pms5003_reading.pm10);
|
||||
printf(
|
||||
"Sending particle matter readings to backend server...\n");
|
||||
send_msg(msg_to_send);
|
||||
}
|
||||
|
||||
readings_index++;
|
||||
if (readings_index >= 10) {
|
||||
|
|
@ -142,27 +146,27 @@ int main() {
|
|||
// Check connection status
|
||||
int link_status = cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_STA);
|
||||
|
||||
printf("[WiFi Status Check]\n");
|
||||
printf(" Link Status: ");
|
||||
// printf("[WiFi Status Check]\n");
|
||||
// printf(" Link Status: ");
|
||||
switch (link_status) {
|
||||
case CYW43_LINK_DOWN:
|
||||
printf("DOWN\n");
|
||||
// printf("DOWN\n");
|
||||
gpio_put(WIFI_STATUS_LED_PIN, false);
|
||||
break;
|
||||
case CYW43_LINK_JOIN:
|
||||
printf("JOINING\n");
|
||||
// printf("JOINING\n");
|
||||
gpio_put(WIFI_STATUS_LED_PIN, false);
|
||||
break;
|
||||
case CYW43_LINK_NOIP:
|
||||
printf("NO IP\n");
|
||||
// printf("NO IP\n");
|
||||
gpio_put(WIFI_STATUS_LED_PIN, false);
|
||||
break;
|
||||
case CYW43_LINK_UP:
|
||||
printf("UP\n");
|
||||
// printf("UP\n");
|
||||
gpio_put(WIFI_STATUS_LED_PIN, true);
|
||||
break;
|
||||
default:
|
||||
printf("UNKNOWN (%d)\n", link_status);
|
||||
// printf("UNKNOWN (%d)\n", link_status);
|
||||
gpio_put(WIFI_STATUS_LED_PIN, false);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
18
pms5003.c
18
pms5003.c
|
|
@ -5,6 +5,7 @@
|
|||
#include <hardware/regs/intctrl.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <hardware/watchdog.h>
|
||||
|
||||
/**
|
||||
Lib for Plantower PMS5003 Particulate Matter (PM) Sensor
|
||||
|
|
@ -50,6 +51,7 @@ static pms5003_reading extract_pm_values_from_rx_buf() {
|
|||
|
||||
static void on_uart_rx() {
|
||||
// TODO: make the uart1 dynamic
|
||||
watchdog_update();
|
||||
while (read && reading_i < MAX_READINGS && uart_is_readable(uart1)) {
|
||||
uint8_t ch = uart_getc(uart1);
|
||||
// start of a message
|
||||
|
|
@ -57,6 +59,13 @@ static void on_uart_rx() {
|
|||
printf("pms5003 reading received\n");
|
||||
rx_i = 0;
|
||||
}
|
||||
|
||||
// Bounds check before accessing array
|
||||
if (rx_i >= 32) {
|
||||
rx_i = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
rx_buf[rx_i] = ch;
|
||||
rx_i++;
|
||||
// end of message
|
||||
|
|
@ -65,11 +74,6 @@ static void on_uart_rx() {
|
|||
printf("pm1: %f, pm2.5: %f, pm10: %f\n", readings[reading_i].pm1, readings[reading_i].pm2_5, readings[reading_i].pm10);
|
||||
reading_i++;
|
||||
}
|
||||
|
||||
// guard
|
||||
if (rx_i > 32) {
|
||||
rx_i = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -82,7 +86,7 @@ void pms5003_init(pms5003_config *new_config, uart_inst_t *uart, uint8_t tx_pin,
|
|||
uart_set_format(uart, 8, 1, UART_PARITY_NONE);
|
||||
irq_set_exclusive_handler(UART1_IRQ, on_uart_rx);
|
||||
irq_set_enabled(UART1_IRQ, true);
|
||||
uart_set_irq_enables(uart, true, false);
|
||||
uart_set_irq_enables(uart, false, false);
|
||||
|
||||
// high level or suspending is normal working status, while low level is
|
||||
// sleeping mode.
|
||||
|
|
@ -126,11 +130,13 @@ void pms5003_warmup(pms5003_config *config) { gpio_put(config->enable_pin, 1); }
|
|||
void pms5003_start_reading(pms5003_config *config) {
|
||||
reading_i = 0;
|
||||
read = true;
|
||||
uart_set_irq_enables(config->uart, true, false);
|
||||
}
|
||||
|
||||
pms5003_reading pms5003_finish_reading(pms5003_config *config) {
|
||||
printf("readings_i: %d\n", reading_i);
|
||||
read = false;
|
||||
uart_set_irq_enables(config->uart, false, false);
|
||||
gpio_put(config->enable_pin, 0);
|
||||
pms5003_reading average_reading = compute_avarage_reading();
|
||||
reading_i = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue