Coder Social home page Coder Social logo

timelab / adem Goto Github PK

View Code? Open in Web Editor NEW
12.0 14.0 5.0 2.76 MB

Mobile device for distributed measurements of particulate matter (fine dust)

Home Page: http://ik-adem.be/

License: GNU Lesser General Public License v3.0

C++ 68.10% C 30.90% Shell 0.11% HTML 0.60% CSS 0.02% Makefile 0.25% CMake 0.04%
arduino platformio esp8266 firmware air-quality fine-dust

adem's Introduction

Timelab ADEM project

Build Status

The Timelab ADEM project enables cyclists to measure particulate matter (PM1 and PM2.5). The air quality estimate based on these measurements is displayed on the device, temporarily stored and sent via WiFi to a central data collection service.

The aim of this project is to create a low-cost open-source DIY hardware and firmware kit that is modular and adjustable, can be locally reproduced and repaired.

This git repository hosts the hardware designs, firmware and technical documentation for the ADEM device. You can find the documentation at: https://github.com/timelab/ADEM/tree/master/docs

More information related to this project is available from the project’s wiki at: http://wiki.timelab.org/wiki/A.D.E.M

We welcome feedback and contributions.

ADEM logo

adem's People

Contributors

bertdb avatar dagwieers avatar degerrit avatar kavers1 avatar lebeno avatar sdiepend avatar stmarco avatar timelabghent avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adem's Issues

Interrupt for PPD42NS on GPIO 12 and 13 do not work

GPIO 12 and 13 begin pulled down by PPD42NS of manually does not seem to call the attached interrupt funtions. Even tried manually by shorting to ground. PPD42NS pulls down to about 1V. Is that low enough?

Create Github organization and team

The ADEM repository is currently under my personal github account. It would be nice to create a github "timelab" organization and an "ADEM" team in github. Unfortunately @timelab is already taken.

Implement captive portal in DEMO mode

Currently in DEMO mode the mobile device will have to connect to http://192.168.4.1/ manually, which is non-trivial. The device would work out-of-the-box if the user would be redirected to a captive portal showing the latest measurements automatically.

This is a must-have if we want a publicly available demo for the audience/passer-by.

build fails with error "esp8266: Unknown package"

$ make build
mkdir -p "/home/lieven/ADEM/ADEM/Build"
"/home/lieven/ADEM/ADEM/Arduino/arduino-builder" --compile \
	--fqbn=esp8266:esp8266:thing \
	--verbose --debug-level=9 --prefs=build.debug_level="-DDEBUG -DDEBUG_OUTPUT=Serial" --prefs=tools.ctags.path="/home/lieven/ADEM/ADEM/Arduino/tools-builder/ctags/5.8-arduino11" \
	--hardware="/home/lieven/ADEM/ADEM/Arduino/hardware" \
	--hardware="/home/lieven/ADEM/ADEM/arduino15/packages" \
	--tools="/home/lieven/ADEM/ADEM/Arduino/tools" \
	--tools="/home/lieven/ADEM/ADEM/arduino15/packages" \
	--libraries="adem/libraries/" \
	--build-path="/home/lieven/ADEM/ADEM/Build" \
	adem/adem.ino
esp8266: Unknown package
Makefile:73: recipe for target 'build' failed
make: *** [build] Error 1


wrong values for voltages

Voltage measurements return incorrect values like
{"Sensor":"Battery","VCC":65535,"Voltage":64.00}

Infrequent crashes

In DEMO made running overnight, I experienced one crash.

Serial communication... OK
Initializing LED... OK
Initializing scheduler... OK
Initializing barometer sensor... OK
Initializing humidity sensor... OK
Initializing particulate sensor... OK

=> Please connect to SSID: ADEM-9087009
=> And surf to: http://192.168.4.1/


Exception (29):
epc1=0x4000e1c3 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000018 depc=0x00000000

ctx: sys
sp: 3ffffc80 end: 3fffffb0 offset: 01a0

>>>stack>>>
3ffffe20:  401030a9 3ffef580 3ffeff80 00000000
3ffffe30:  40219ca9 40219be6 3fff3c7c 40103238
3ffffe40:  00000018 3ffeff80 3ffefefc 00000000
3ffffe50:  40219d40 3ff20a00 3fff3c7c 3ffed0be
3ffffe60:  3ffed0a4 3ffec3d8 3ffec3d8 3ffed0a4
3ffffe70:  3ffed0be 0000002c 00000004 401004f4
3ffffe80:  3ffed0ae 3fff403c 40216a93 3ff20a00
3ffffe90:  3fff3c7c 3fff97e4 00000015 40216965
3ffffea0:  3ffec3fc 4010760c 3fffc258 4000050c
3ffffeb0:  40000f83 00000030 00000010 ffffffff
3ffffec0:  40000f3d 00000023 00000000 3fffd9d0
3ffffed0:  00000000 00000000 00000000 fffffffe
3ffffee0:  ffffffff 3fffc6fc 00000000 3fffdab0
3ffffef0:  00000000 3fffdad0 3fff2344 00000030
3fffff00:  3ffed700 00000000 00000036 401004d8
3fffff10:  4021df01 ffffffd6 00000000 40107a98
3fffff20:  40216201 3ffed0a4 3ffef580 3fff3c7c
3fffff30:  00000000 3ffed0ae 3ffed0c8 40106e56
3fffff40:  40211660 00000000 3ffed0ae 3ffed0a4
3fffff50:  0000002e 00000000 3fff403c 3ffed098
3fffff60:  00000000 00000036 40211292 3ffef580
3fffff70:  3ffed098 3fffdcc0 3ffebbc0 3fff3f24
3fffff80:  3ffed0b4 00000040 00000000 3fff2350
3fffff90:  40210bdf 3fffdab0 00000000 4020e877
3fffffa0:  3ffebbc0 40000f49 3fffdab0 40000f49
<<<stack<<<

Use the Scheduler library

We could use the Scheduler library to create separate "threads":

  • sendBuffer()
  • GPS data reading and processing
  • analog sampling of dust sensor

i2c-gps does not build

I get the following error when building i2c-gps:

i2c-gps:934: error: expected constructor, destructor, or type conversion before ';' token
 blink_update();   
               ^
i2c-gps:938: error: expected unqualified-id before 'if'
 if (_watchdog_timer != 0)
 ^
exit status 1
expected constructor, destructor, or type conversion before ';' token

make fails with ctags: no such file or directory

$ make
...
Using library StoreAndForward in folder: /home/lieven/ADEM/ADEM/adem/libraries/StoreAndForward (legacy)
fork/exec /home/lieven/ADEM/ADEM/Arduino/tools-builder/ctags/5.8-arduino11/ctags: no such file or directory
Makefile:73: recipe for target 'build' failed
make: *** [build] Error 1

Add date/time of last sensor data in DEMO page

We should probably add a date/time to the DEMO page, and only update it when new sensor data is pulled from the device. This would make it more clear when the device is no longer showing the real-time measurements.

We could also indicate when measurements have stopped (for whatever reason).

add demo.ino as state to adem.ino

The demo mode is currently a separate project. It should better reside in a separate demo folder as required by the Arduino IDE.

We want to integrate the demo.ino code into the adem.ino project as a separate state that can be started from the setup page shown in the AP mode of the ADEM project.

add state to state machine te handle no network conneected

in the upload state we try to connect to the known networks. If not successful we keep on trying and as such will drain the battery. It is better to add a state to reflect the failure. Stay in the state untill the next measurements are ready to be uploaded

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.