Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Versión funcional para el kit didáctico basado en el firmware viejo #40

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 61 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,62 @@
## Sensor portable para medir la calidad del aire
* Foro: https://comunidad.unloquer.org/
* Ejemplo de la trama de datos: https://raw.githubusercontent.com/daquina-io/VizCalidadAire/master/data/points.csv
* wiki: http://wiki.unloquer.org/personas/brolin/proyectos/agentes_calidad_aire
* Licensed under the TAPR Open Hardware License (www.tapr.org/OHL)
Cuando se desea profundizar en el problema de la calidad del aire en Medellín nos encontramos con varios obstáculos debido a la complejidad del problema y la limitada capacidad de los ciudadanos para recolectar y examinar las mediciones.
El Kit AQA se esfuerza por acercar al ciudadano a la posibilidad de medir y analizar el aire que respira. De hecho, en las actividades propuestas se aprende a ensamblar un dispositivo para la medición del materialparticulado, y se considera unas herramientas para el estudio de las mediciones.
Es en los detalles del ensamblaje y el uso de las herramientas de análisis donde se puede pensar con las manos y entrar en relación directa con el problema de la calidad del aire.

## Instalación

descargar repositorio

git clone -b AQA_Estimulo https://github.com/unloquer/AQA.git

https://comunidad.unloquer.org/t/como-programar-el-aqa/33




## Enlaces
* [Ejemplo de la trama de datos](https://raw.githubusercontent.com/daquina-io/VizCalidadAire/master/data/points.csv) https://raw.githubusercontent.com/daquina-io/VizCalidadAire/master/data/points.csv
* [Foro](https://comunidad.unloquer.org/) comunidad unloquer https://comunidad.unloquer.org/
* [wiki](http://wiki.unloquer.org/personas/brolin/proyectos/agentes_calidad_aire) wiki unloquer http://wiki.unloquer.org/personas/brolin/proyectos/agentes_calidad_aire
* [mapa de mediciones](http://daquina.io/aqaviz/) daquia.io http://daquina.io/aqaviz/
* [Licensed under the TAPR Open Hardware License](www.tapr.org/OHL): www.tapr.org/OHL

## Como leer los colores
el color gradiente de los leds funciona mientras mas intenso el color mas contaminacion y menos inteso el color menos contaminacion

el color gradiente de los leds funciona mientras mas intenso el color mas contaminacion y menos inteso el color menos contaminacion

color > 13 resultado genrlamente verde

13 < color < 35 resultado generamente amarillo

35 < color < 55 resultado generalmente naranja

55 < color < 75 resultado generalmente rojo

75 < color < 255 resultado generalmente morado

color < 255 marron

## para donde van los datos

* [mapa de mediciones](http://daquina.io/aqaviz/) daquia.io http://daquina.io/aqaviz/
* [los dash board](http://aqa.unloquer.org:8888/sources/2/chronograf/data-explorer) chronograf http://aqa.unloquer.org:8888/sources/2/chronograf/data-explorer

## de donde vienen los datos de de difentes sensores como

* dht11
* plantower
* gps

## pines
![diagrama de pines](http://wiki.unloquer.org/lib/exe/fetch.php?media=:personas:brolin:proyectos:montajeaqa.jpg)

## como lo instalo

[enlace a como instalarlo en comunidad unloquer](https://comunidad.unloquer.org/t/cargar-el-firmware-desde-linea-de-comando/118)

## contacto

* irc --> #un/loquer
* twitter --> [twitter de unloquer](https://twitter.com/unloquer?lang=es) enlace a https://twitter.com/unloquer?lang=es
2 changes: 1 addition & 1 deletion firmware/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[env:esp12e]
;platform = espressif8266
platform = https://github.com/platformio/platform-espressif8266.git#feature/stage
board = esp12e
board = d1_mini
framework = arduino
lib_deps = Adafruit Unified Sensor, Time, EspSoftwareSerial, DHT sensor library, FastLED, DoubleResetDetector, WiFiManager
;build_flags = -Wl,-Teagle.flash.4m1m.ld
Expand Down
4 changes: 2 additions & 2 deletions firmware/src/app.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
#endif


const String SENSOR_ID = "volker0023"; // change this with your sensor ID
//esta es la id de tu sensor cambiala
const String SENSOR_ID = "aqakit3"; // change this with your sensor ID


const String STR_COMMA = ",";
const String STR_SLASH = "/";
Expand Down
9 changes: 8 additions & 1 deletion firmware/src/dht11.cpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
#include "app.h"

#define DHTPIN D1 // what pin we're connected to

// inclimos la librera central que es don donde se
#define DHTPIN 12 /*// what pin we're connected to
/*// what pin we're connected to
// declara toda las funciones y librerias
// al pin al que esta conectado en gpio a el gpio12
// depende de la tarjeta el pin
// wemos https://cdn-images-1.medium.com/max/1288/1*YKc8KpAfMrlhrOLmNjdRwQ.png
// nodemcu https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwjw4MmQ1IzeAhVp0FkKHb3-B8IQjRx6BAgBEAU&url=https%3A%2F%2Fwww.teachmemicro.com%2Fnodemcu-pinout%2F&psig=AOvVaw2QNGWpnHxLAe3VN1ieW49R&ust=1539837576645757
//es recomedable dejarlo en ese pin*/

#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22
//#define DHTTYPE DHT21 // DHT 21
Expand All @@ -31,6 +35,9 @@ DHT11Data getDHT11Data() {
DHT11Data data;
data.temperature = isnan(dht.readTemperature()) ? -1 : dht.readTemperature();
data.humidity = isnan(dht.readHumidity()) ? -1 : dht.readHumidity();;

DMSG_STR("dht t: "+(String)data.temperature+" "+(String)data.humidity);

data.ready = 1;
return data;
}/*creea una funcion con el tipo de dato DHT11Data la funcion es nomrada getDHT11Data sin ningun
Expand Down
6 changes: 5 additions & 1 deletion firmware/src/gps.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "app.h"

TinyGPSPlus gpsParser;
SoftwareSerial gpsSerial(13, 7);
SoftwareSerial gpsSerial(D7, 7);

void setupGPS() {
static const int gpsRXPin = 13, gpsTXPin = 7;
Expand All @@ -26,6 +26,10 @@ void readGPS(unsigned long ms) {
GPSData parseGPSData() {
GPSData data;

String date = gpsParser.date.month() + STR_SLASH + gpsParser.date.day() +
STR_SLASH + gpsParser.date.year();
DMSG_STR("date: "+date);

if (gpsParser.location.isValid()) {
data.ready = 1;

Expand Down
67 changes: 15 additions & 52 deletions firmware/src/led.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
#ifdef NUEVATARJETA

// Pines 16 y 14 no sirven para la librería fastled
#define NUM_LEDS 3
#define LED_PIN 4
#define NUM_LEDS 64
#define LED_PIN D2
#define LED_TYPE WS2812B
CRGB leds[NUM_LEDS];
#define COLOR_ORDER GRB
Expand All @@ -35,6 +35,7 @@ void setupLeds() {
// https://github.com/FastLED/FastLED/issues/659
// https://github.com/FastLED/FastLED/wiki/FastLED-Temporal-Dithering
FastLED.setDither(0);
FastLED.setBrightness(32);
}

void ledParticulateQuality(PlantowerData data) {
Expand All @@ -53,31 +54,12 @@ void ledParticulateQuality(PlantowerData data) {

//FastLED.setBrightness(millis() % 255);

leds[0] = leds[1] = leds[2] = alert;
FastLED.delay(10);
FastLED.show();
FastLED.delay(300);
leds[0] = leds[1] = leds[2]= CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(300);
leds[0] = leds[1] = leds[2]= alert;
FastLED.delay(10);
FastLED.show();
FastLED.delay(300);
leds[0] = leds[1] = leds[2]= CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(300);
leds[0] = leds[1] = leds[2]= alert;
FastLED.delay(10);
FastLED.show();
FastLED.delay(300);
leds[0] = leds[1] = leds[2]= CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(300);

for(int i=0; i < 4; i++) {
for(int j=0; j < NUM_LEDS; j++) leds[j] = i%2 == 0 ? alert : CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(300);
}
}

void ledParticulateQualityStreamming(PlantowerData data) {
Expand All @@ -96,29 +78,10 @@ void ledParticulateQualityStreamming(PlantowerData data) {

FastLED.setBrightness(millis() % 255);

leds[0] = leds[1] = leds[2]= alert;
FastLED.delay(10);
FastLED.show();
FastLED.delay(100);
leds[0] = leds[1] = leds[2]= CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(100);
leds[0] = leds[1] = leds[2]= alert;
FastLED.delay(10);
FastLED.show();
FastLED.delay(100);
leds[0] = leds[1] = leds[2]= CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(100);
leds[0] = leds[1] = leds[2]= alert;
FastLED.delay(10);
FastLED.show();
FastLED.delay(100);
leds[0] = leds[1] = leds[2]= CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(100);

for(int i=0; i < 4; i++) {
for(int j=0; j < NUM_LEDS; j++) leds[j] = i%2 == 0 ? alert : CRGB::Black;
FastLED.delay(10);
FastLED.show();
FastLED.delay(100);
}
}
2 changes: 1 addition & 1 deletion firmware/src/plantower.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ int PM01Value = 0; //define PM1.0 value of the air detector module
int PM2_5Value = 0; //define PM2.5 value of the air detector module
int PM10Value = 0; //define PM10 value of the air detector module

SoftwareSerial pmsSerial(5, 6);
SoftwareSerial pmsSerial(D6, 6);

char checkValue(unsigned char *thebuf, char leng) {
char receiveflag = 0;
Expand Down
40 changes: 40 additions & 0 deletions hardware/chasis/chasis_tarjeta_roja/aqacarcasa.scad
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
//no funciono la primera vez que se imprimo por tiempo por que quedo medio impreso
difference(){
union(){
difference(){
union (){
large= 76;//las medidas de largo del sensor
largo = large+8;//cambio las variables de nombre para que las leea el codigo=84
deep=45;
profundo = deep+5;//50
paredes=2;
alto=20;
tornilloyuno = 44.5;
cube([largo,profundo,paredes]);//base
//translate([0,0,2])//acrilico
//color("blue",0.7)//acrilico
//cube([large,4.7,0.2]);//acrilico
cube([largo,paredes,alto]);//lado frente
translate([0,profundo,0])//lado trasero
cube([largo,paredes,alto]);//lado trasero
cube([paredes,profundo,alto]);//lado 1 para micro usb
translate([largo,0,0])//lado 1 para mini usb
cube([paredes,profundo+2,alto]);//lado 1 para mini usb
}translate([-1,5,1])
cube([90,40,7]);}}
union(){
translate([67,39,-1])//grande
cylinder(r=4 ,h=3, $fn=100);}//grande
translate([77,44.5,-1])//pequño y2 x2
cylinder(r=2 ,h=3, $fn=100);
translate([9,44.5,-1])
//pequño y2 x1
cylinder(r=2 ,h=3, $fn=100);
//pequño y1 x2
translate([77,5,-1])
cylinder(r=2 ,h=3, $fn=100);
translate([30,-1,12])
cube ([15,4,7]);
translate([4,-1,16])
cube ([15,5,3]);
}
Loading