{"id":16233505,"url":"https://github.com/karser/karserdsm501","last_synced_at":"2026-05-15T21:34:12.759Z","repository":{"id":148328680,"uuid":"340707451","full_name":"karser/KarserDSM501","owner":"karser","description":"Arduino library for DSM501 dust sensor","archived":false,"fork":false,"pushed_at":"2021-02-20T17:29:08.000Z","size":1,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-08T07:40:29.793Z","etag":null,"topics":["air-pollution","air-quality","arduino","arduino-library","arduino-nano","dsm501a","dust-sensor"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-02-20T17:04:53.000Z","updated_at":"2022-08-24T19:28:34.000Z","dependencies_parsed_at":"2023-05-19T19:30:28.024Z","dependency_job_id":null,"html_url":"https://github.com/karser/KarserDSM501","commit_stats":{"total_commits":1,"total_committers":1,"mean_commits":1.0,"dds":0.0,"last_synced_commit":"7eaa5133b4a4bf81737c5f6ac8eae811f44e66eb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/karser/KarserDSM501","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karser%2FKarserDSM501","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karser%2FKarserDSM501/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karser%2FKarserDSM501/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karser%2FKarserDSM501/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karser","download_url":"https://codeload.github.com/karser/KarserDSM501/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karser%2FKarserDSM501/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267552097,"owners_count":24106000,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["air-pollution","air-quality","arduino","arduino-library","arduino-nano","dsm501a","dust-sensor"],"created_at":"2024-10-10T13:12:53.897Z","updated_at":"2026-05-15T21:34:12.712Z","avatar_url":"https://github.com/karser.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arduino library for DSM501 dust sensor\n\n\n### Example\n```\n#define DUST_SENSOR_PIN_PM10  3  //Must be the pins that\n#define DUST_SENSOR_PIN_PM25  2  //support interrupts\n\n#define INTERVAL_COUNTDOWN 1000\n#define INTERVAL_READ 30000\n\n#include \u003cKarserDSM501.h\u003e\n// ISRs forward declaration\nvoid pm10_handleInterrupt();\nvoid pm25_handleInterrupt();\n// init pm10 and pm25 instances\nKarserDSM501 pm10(DUST_SENSOR_PIN_PM10, pm10_handleInterrupt);\nKarserDSM501 pm25(DUST_SENSOR_PIN_PM25, pm25_handleInterrupt);\n// handle ISRs\nvoid pm10_handleInterrupt() { pm10.handleInterrupt(); }\nvoid pm25_handleInterrupt() { pm25.handleInterrupt(); }\n\n\nunsigned long timer = 0;\n\nvoid setup() {\n  Serial.begin(9600);\n}\n\nvoid loop() {\n  if (!pm10.isReady() \u0026\u0026 (millis() \u003e= timer + INTERVAL_COUNTDOWN)) {\n    Serial.println(\"DSM501 warm up: \" + String(pm10.getReadyCountdown()));\n    timer += INTERVAL_COUNTDOWN;\n  } else if (millis() \u003e= timer + INTERVAL_READ) {\n    timer += INTERVAL_READ;\n    Serial.println(\"pm10: \"+String(pm10.readPM())+\" pm2.5: \"+String(pm25.readPM()));    \n  }\n}\n```\n\nHere is the console output\n```\n18:53:40.791 -\u003e DSM501 warm up: 59\n...\n18:54:36.845 -\u003e DSM501 warm up: 3\n18:54:37.841 -\u003e DSM501 warm up: 2\n18:54:38.837 -\u003e DSM501 warm up: 1\n18:54:39.832 -\u003e DSM501 warm up: 0\n18:55:09.855 -\u003e pm10: 21.39 pm2.5: 6.65\n18:55:39.872 -\u003e pm10: 20.31 pm2.5: 5.57\n18:56:09.897 -\u003e pm10: 28.64 pm2.5: 7.07\n18:56:39.920 -\u003e pm10: 17.89 pm2.5: 6.92\n18:57:09.940 -\u003e pm10: 25.84 pm2.5: 7.86\n18:57:39.937 -\u003e pm10: 23.35 pm2.5: 6.83\n18:58:09.959 -\u003e pm10: 29.80 pm2.5: 6.84\n18:58:39.980 -\u003e pm10: 18.68 pm2.5: 6.98\n18:59:10.003 -\u003e pm10: 27.84 pm2.5: 7.54\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarser%2Fkarserdsm501","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarser%2Fkarserdsm501","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarser%2Fkarserdsm501/lists"}