zaterdag 22 augustus 2015

Eindelijk weet ik waar ik ben

Het is laat of vroeg hoe je het wilt noemen, maar mijn gps werkt, waarom het eerst niet wilde nog geen idee, dat is iets voor als ik geslapen heb.
Deze code was voldoende;

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 7);

void setup() {
  while (!Serial); // wait for leo to be ready

  Serial.begin(57600); // this baud rate doesn't actually matter!
  mySerial.begin(9600);
  delay(2000);
 }

void loop() {
  if (Serial.available()) {
   char c = Serial.read();
   Serial.write(c);
   mySerial.write(c);
  }
  if (mySerial.available()) {
    char c = mySerial.read();
    Serial.write(c);
  }
}

De output is nu;

$GPRMC,222033.00,A,5205.10922,N,00501.79961,E,0.449,,210815,,,A*7A
$GPVTG,,T,,M,0.449,N,0.831,K,A*20
$GPGGA,222033.00,5205.10922,N,00501.79961,E,1,09,0.99,4.6,M,46.0,M,,*59
$GPGSA,A,3,09,06,02,07,23,16,03,30,26,,,,1.74,0.99,1.43*0E
$GPGSV,3,1,11,02,42,289,23,03,11,117,26,05,14,295,16,06,52,229,37*78
$GPGSV,3,2,11,07,42,164,35,09,78,070,22,16,15,062,23,23,38,069,24*78
$GPGSV,3,3,11,26,12,034,21,29,06,343,09,30,16,185,25*45
$GPGLL,5205.10922,N,00501.79961,E,222033.00,A,A*65

De rook zit nog steeds in de ic's, hardware serial en usb bijten elkaar, morgen bij daglicht weer verder. 


SD kaart aangesloten op Leonardo

Leonardo met GPS en SD kaart module werkend
Langzaam wordt de warboel groter
Weer een klein stukje verder, de sd kaart kan worden gelezen was nog een heel gepuzzel maar op een Leonardo moet je de MOSI, MISO en SCK van de icsp connector halen. Via http://tronixlabs.com/news/tutorial-using-sd-card-breakout-boards-with-arduino/ achter de juiste aansluitingen gekomen alleen gebruikt mijn code D4 voor CS. Nog weer wat verder gezocht voor het en dan blijkt dat ook D10 hoog moet zijn om de SD kaart te laten werken http://embedjournal.com/arduino-sd-card-initialization-failed/.


Tutorial - Using SD card Breakout Boards with Arduino by Tronixlabs Australia
Your connections will be as follows:
Arduino ICSP to breakout board
  • 2 - 5V or Vcc
  • GND - GND
  • 3 - SCK
  • 1 - MISO
  • 4 - MOSI
  • D10 - CS

Het resultaat een keurige index van de inhoud en nog wat meta gegevens;

Initializing SD card...Wiring is correct and a card is present.

Card type: SDHC

Volume type is FAT32

Volume size (bytes): 3695284224
Volume size (Kbytes): 3608676
Volume size (Mbytes): 3524

Files found on the card (name, date and size in bytes):
_~1.TRA       2015-03-15 13:22:38 4096
DATALOG.TXT   2000-01-01 01:00:00 143
TRASHE~1/     2015-03-15 13:22:38
  501/          2015-03-20 23:05:08
    DATALOG.TXT   2015-03-20 23:04:48 2
    _DATAL~1.TXT  2015-03-20 23:04:48 4096
    DATALO~1.TXT  2000-01-01 01:00:00 48139
  _501~1        2015-03-20 23:05:08 4096
SPOTLI~1/     2015-03-15 13:22:40
  STORE-V2/     2015-03-15 13:22:40
    84963B~1/     2015-03-15 13:22:40
      JOURNA~1.REP/ 2015-03-15 13:22:40
      PSID.DB       2015-03-23 19:59:40 8192
      TMP~1.SNO     2015-03-15 13:22:40 0
      0~3.IND       2015-03-15 13:32:44 68416
      LION~1.CRE    2015-03-15 13:22:40 0
      INDEXS~1      2015-03-23 19:58:42 28
      0~1.IND       2015-03-15 13:32:44 2056
      0~2.IND       2015-03-15 13:32:44 708
      0~4.IND       2015-03-23 19:58:50 4096
      0~1.SHA       2015-03-23 19:58:42 4096
      0~5.IND       2015-03-15 13:32:44 32
      0~6.IND       2015-03-23 19:58:40 4
      0~1.DIR       2015-03-23 19:58:40 65536
      0DIREC~1.SHA  2015-03-15 13:32:44 1088
      0~2.SHA       2015-03-20 22:42:30 4
      0~7.IND       2015-03-15 13:32:44 12
      0~8.IND       2015-03-15 13:32:44 346
      0~9.IND       2015-03-15 13:32:44 150
      LIVE1~3.IND   2015-03-23 19:58:42 64
      LIVE1~4.IND   2015-03-23 19:58:42 4096
      LIVE1~1.SHA   2015-03-23 19:58:42 4096
      LIVE1~5.IND   2015-03-23 19:58:40 32768
      LIVE1~6.IND   2015-03-23 19:58:40 3277
      LIVE1~1.DIR   2015-03-23 19:58:42 65536
      LIVE1D~1.SHA  2015-03-23 19:58:42 1088
      LIVE1~2.SHA   2015-03-23 19:58:42 1
      LIVE1~7.IND   2015-03-23 19:58:42 4
      LIVE1~8.IND   2015-03-23 19:58:42 4
      LIVE2~1.IND   2015-03-23 19:58:42 8224
      STORE.DB      2015-03-23 19:58:42 118784
      STORE~1.DB    2015-03-23 19:59:40 118784
      REVERS~1      2015-03-23 19:58:50 65536
      SHUTDO~1      2015-03-23 19:59:40 4
      JOURNA~1.LIV/ 2015-03-15 13:22:42
        JOURNAL.17    2015-03-23 19:59:40 41
        RETIRE.16     2015-03-23 13:15:54 0
      JOURNA~1      2015-03-15 13:22:42 0
      JOURNA~1.SCA/ 2015-03-15 13:22:42
        RETIRE.23     2015-03-23 19:58:40 0
      REVERS~1.SHA  2015-03-15 13:22:42 3136
      LIVE2~2.IND   2015-03-23 19:58:42 1024
      LIVE2~3.IND   2015-03-23 19:58:42 65536
      LIVE2~1.SHA   2015-03-23 19:58:42 65536
      LIVE2~4.IND   2015-03-23 19:59:40 4096
      LIVE2~6.IND   2015-03-23 19:59:40 3277
      LIVE2~1.DIR   2015-03-23 19:59:40 65536
      LIVE2~5.SHA   2015-03-23 19:58:42 1
      LIVE2~4.SHA   2015-03-23 19:58:42 4096
      LIVE1~1.IND   2015-03-23 19:58:42 2056
      LIVE2~3.SHA   2015-03-23 19:58:42 8
      LIVE2~5.IND   2015-03-23 19:59:40 32768
      LIVE2D~1.SHA  2015-03-23 19:58:42 1088
      LIVE2~7.IND   2015-03-23 19:59:40 1905
      LIVE2~8.IND   2015-03-23 19:58:42 4096
      LIVE2~9.IND   2015-03-23 19:58:42 4096
      LIVE2~10.IND  2015-03-23 19:58:42 8192
      JOURNA~1.17   2015-03-23 19:59:20 420
      STORE~1.UPD   2015-03-23 19:59:40 12
      REVERS~1.UPD  2015-03-23 19:59:40 1
      PERMST~1      2015-03-23 19:59:40 69
      LION~1.MOD    2015-03-15 13:23:16 0
      LIVE2~11.IND  2015-03-23 19:58:42 8192
      LIVE2~6.SHA   2015-03-23 19:58:42 0
      LIVE2~7.SHA   2015-03-23 19:58:42 0
      LIVE0~1.IND   2015-03-23 19:58:42 2056
      LIVE0~2.IND   2015-03-23 19:58:42 708
      LIVE1~2.IND   2015-03-23 19:58:42 8
      LIVE2~2.SHA   2015-03-23 19:58:42 2056
      LIVE0~3.IND   2015-03-23 19:58:42 68800
      LIVE0~4.IND   2015-03-23 19:59:40 4096
      LIVE0~1.SHA   2015-03-23 19:58:42 4096
      LIVE0~5.IND   2015-03-23 19:58:42 56
      LIVE0~6.IND   2015-03-23 19:59:40 6
      LIVE0~1.DIR   2015-03-23 19:59:40 65536
      LIVE0D~1.SHA  2015-03-23 19:58:42 1088
      LIVE0~2.SHA   2015-03-23 19:58:42 6
      LIVE0~7.IND   2015-03-23 19:58:42 12
      LIVE0~8.IND   2015-03-23 19:58:42 481
      LIVE0~9.IND   2015-03-23 19:58:42 150
  STORE-V1/     2015-03-15 13:22:40
    VOLUME~1.PLI  2015-03-15 13:22:40 348
  VOLUME~1.PLI  2015-03-15 13:22:42 3184
INDEX.HTM     2015-03-15 13:26:16 62
LOG.XML       2015-03-15 13:31:22 423
TEMPOR~1/     2015-03-20 23:04:48
  FOLDERS.501/  2015-03-20 23:04:48
    TEMPOR~1/     2015-03-20 23:04:48
  _FOLDE~1.501  2015-03-20 23:04:48 4096
_~1.TEM       2015-03-20 23:04:48 4096

dinsdag 18 augustus 2015

GPS slim uitlezen

Er zijn veel manieren om gps gegevens uit te lezen en te verwerken met mooie library's maar dat kost veel geheugen en cpu. Ik wil alleen weten hoe laat het is en waar ik ben en dat kan heel efficiënt.

De details over deze oplossing staan hier;
Source code: http://www.iforce2d.net/UBX_GPS.zip
Helpful page: http://wiki.paparazziuav.org/wiki/Sen...

Als je het filmpje niet hebt gezien komt het er op neer dat de gps module geen lange nmea strings meer stuurt maar veel kortere en minder binaire boodschappen. Deze binaire boodschappen zijn ook nog eens heel snel te verwerken.

maandag 17 augustus 2015

Smoke test #1

GPS en SD card aangesloten op Leonardo
Voeding, cs, rx, tx, clk, mosi en miso verbindingen gemaakt
Alle lampjes die moeten knipperen knipperen en de 'magic smoke' zit nog steeds netjes in de ic's. Het ledje van de seconde puls op gps module knippert inmiddels ook, dus alles lijkt ok.
Tijd om een ontwikkel omgeving klaar te maken. Ik ga Fritzing proberen, de schema's zie ik regelmatig online en laten we eerlijk zijn de warboel hiernaast kun je met alleen deze foto nooit nabouwen.
Inmiddels is Fritzing geïnstalleerd maar mijn componenten zitten er nog niet in. Het is me al wel gelukt om de Leonardo op het breadboard te 'plaatsen' en er een vcc en gnd draad aan vast te maken maar de gps module en de sdcard staan nog niet in de bibliotheek en dus moet ik deze eerst aanmaken en dat is toch nog wel even een dingetje.

Leonardo op breadboard
Leonardo op breadboard stap 1 in Fritzing
 Dit ziet er al een stuk beter uit dan de foto, als het straks droog is ga ik hardlopen en anders nieuwe onderdelen proberen te maken. Maar nu eten koken.

vrijdag 14 augustus 2015

Het Plan

City Sonde Science, Fiets mee en meet NO2 badge
Mijn badge
Voor mijn werk ben ik regelmatig op het RIVM en het KNMI, op het KNMI heb ik als vrijwilliger mee gedaan met een citizen science project voor het meten van NO2. Als vrijwilliger kregen we allemaal een fietsmandje mee met de sensor en een datalogger, dan naar huis fietsen en van thuis weer naar het KNMI fietsen.
Wat er in het mandje zat was niet zo heel ingewikkeld en duur op de NO2 sensor na, een Arduino, een GPS, een SD kaart en een batterij.
Door de eenvoud van de datalogger (Arduino+SD kaart) ben ik gaan denken over een eigen meting en zo op fijnstof uit gekomen.


Fijnstof

fijnstof naast een mensenhaar
Mensenhaar met fijnstof
Op school leer je dat de lucht om ons heen bestaat uit 80% stikstof 20% zuurstof en dat klopt aardig, maar in ons land voegen we daar het een en ander aan toe, door de verbranding van benzine, diesel, gas en hout ontstaat er ook fijnstof. Fijnstof kun je vervolgens indelen naar samenstelling, herkomst en grote.
Vooral die grote en samenstelling is belangrijk, fijnstof dat bestaat uit zeezout (door aerosolen uit de Noordzee) is minder schadelijk dan de lucht uit een tweetakt scooter. De grote bepaalt waar het fijnstof in ons lichaam terecht komt. De grote delen 10 micro meter (PM10) komen niet verder dan onze neus en luchtpijp, daarna krijg je de deeltjes van 2,5 micro meter (PM2,5) deze komen ver in onze longen en de ultra fijne deeltjes 0,1 micro meter (PM0,1)komen zelfs in ons bloed.

Het instrument

Hiernaast staan de onderdelen van het te bouwen meetinstrument om een idee van de grote te krijgen staat er 1 losse penlight batterij op. Er gaan 2 optische sensoren mee op de fiets zodat deze vergeleken kunnen worden. De eerste staat in het midden het is een deels blikken doosje van Sharp type GP2Y1010AU0F de andere sensor staat uiterst rechts en is ook deels van blik het merk is Samyoung DSM501A
Rechts achter staat de energie bron een batterijhouder met 8 oplaadbare batterijen, in het midden achter staat de microcontroller een Leonardo. Naast de Leonardo staat de GPS module (ublox neo-6m-0-001) niet het nieuwste van het nieuwste maar meer dan goed genoeg voor een positie binnen 2,5 meter en het moment van de dag op micro seconde nauwkeurig.
Naast de gps staat het geheugen het idee is om iedere seconde, tijd, positie, relatieve vochtigheid, temperatuur, fijnstof en batterij spanning op te slaan op een SD kaartje, dit kaartje is weer in een SD module gestoken zodat de Leonardo er naar toe kan schrijven. Als laatste module staat helemaal links achter een thermokoppel versterker deze is merkloos maar voorzien van een MAX6675K

Alle losse modulen moeten nog worden samengevoegd in een doosje om het te beschermen tegen de elementen en mijn manier van fietsen, 2 ventilatoren om meer lucht door de fijnstof sensoren te zuigen en niet te vergeten software. De eerste volgende blog gaat over het uitlezen van de gps module en het schrijven naar de SD kaart.

Doel

Uiteindelijk moet het gaan resulteren in kleurtjes op een kaart zodat er een beeld ontstaat van het fijnstof tijdens mijn woon werk verkeer van de Meern via Utrecht naar De Bilt of Bilthoven. 

Disclaimer

Ik ben geen wetenschapper hooguit een nerd dus verwacht geen mooie integralen bladzijden met formules, herleidbare en gekalibreerde metingen er komen ook geen beleidstukken van mijn hand en ook geen meningen over wel of geen milieuzone in Utrecht.