Maand van de slimme stad Nijmegen

logo_nijmegenOp 16 en 18 november 2016 mochten wij een tweetal workshops organiseren voor de Gemeente Nijmegen. Het onderwerp: De maand van de slimme stad! Een initiatief van Paul Geurts, werkzaam bij de gemeente als Informatie Architect.

Dankzij de populariteit van technologieën zoals LoRaWAN en ontwikkelboards als Arduino en Raspberry, is het draagvlak om deze technieken in de praktijk toe te passen en er mee bezig te zijn in zeer korte tijd véél groter geworden. Om goed koers te kunnen bepalen, is het belangrijk allereerst correct geïnformeerd te worden over waar we momenteel staan, welke mogelijkheden binnen handbereik zijn en welke stappen dus het beste als eerste gezet kunnen worden.

Het technologie landschap is aan het veranderen. Na de industriële en de digitale revoluties zijn we beland in een wereld waarin de verbinding tussen de digitale en fysieke wereld steeds belangrijker aan het worden is. In deze semantische leef- en werkomgeving staat alles in verbinding met elkaar. De infrastructuur van het internet, de (opensource) hard- en software en de (draadloze, opensource) communicatieprotocollen zijn de fundamenten om IoT zo toegankelijk te maken als water uit de kraan.

De presentatie werd verzorgd door Rogier van Onna (Elonisas) en Gérard Dijkslag (Promteg). Ook Marc van Blijderveen (Technica Electronica) was hierbij aanwezig. Tijdens de workshop legden we niet alleen uit welke technieken inmiddels voorhanden zijn, we gaven ook praktijkvoorbeelden hoe je zelf aan de slag kunt gaan met de hard- en software.

Bekijk hier de diverse (Arduino) oefeningen die we hebben samengesteld. Spoedig zullen er ook voorbeelden bij komen om aan de slag te gaan met de Sodaq One (http://support.sodaq.com/sodaq-one/).

LoRa luchtballon

Onlangs voer een luchtballon van Hilversum richting Venlo de grens over. Ook onze gateway heeft de signalen van de ballon al vanaf Zeist op kunnen vangen, ondanks dat de antenne wat ongelukkig was geplaatst. Ook uit een eigen test met diverse Sodaq One boards blijkt dat de dekking al aardig goed op orde is!

lora-ontvangst

Elonisas kerlink LoRa IoT station is actief!

The Things Network Nijmegen - LoRaSinds eind juli is onze kerlink LoRa IoT station actief! We hebben de gateway gelijk aangemeld bij The Things Network Nijmegen. Hiermee leveren een bijdrage aan de dekking van het LoRa netwerk in de binnenstad van Nijmegen.

The_Thing_Network_Nijmegen_Dekking LoRa

Na onze deelname aan de Smartparcs Hackathon bij Droom in Elst, zijn we ons meer gaan verdiepen in de mogelijkheden en toepassingen van IoT. Dit heeft uiteindelijk geresulteerd in de aanschaf van onze eigen LoRa gateway. Ook Elonisas ziet toekomst in deze nieuwe technieken voor haar klanten.

Naast de investering in LoRa (het communicatie netwerk), zijn we ons ook gaan verdiepen in de verschillende sensoren die beschikbaar zijn. De data van de sensoren kunnen wij uiteindelijk inzichtelijk maken via een webinterface. Deze kunnen wij naar wens van de klant inrichten, en is ook voor mobiel toegankelijk. Ook verzenden van de data naar diverse andere systemen valt onder de mogelijkheden.

Nieuwsgierig geworden? Neem dan zeker contact met ons op. Wij praten u graag bij over de mogelijkheden.

Elonisas IOT brengt Piet Pelle op zijn Gazelle weer tot leven

Sinds kort fietst Piet Pelle weer zoals vanouds rond op zijn Gazelle bij het Nationaal Fietsmuseum Velorama. Daar heeft Elonisas IOT i.s.m. Technica met trots aan mee mogen werken. Rond 1924 kwam het fietsmerk Gazelle met een film op de markt om jonge kinderen op de fiets te krijgen. Deze film werd getoond op een soort beeldkoffer, in die tijd enorm bijzonder aangezien de TV nog uitgevonden moest worden! “Mensen stonden in de rij om de film te kunnen aanschouwen”, aldus Gert-Jan Moed, eigenaar van het fietsmuseum.

Beeldkoffer-Piet-Pelle

De oorspronkelijke beeldkoffer werkte uiteraard niet meer. Daar heeft Elonisas IOT iets op gevonden! Men kan in het fietsmuseum opnieuw beleven hoe het destijds geweest moest zijn om de film te bekijken. Je hoeft er gelukkig niet meer voor in de rij te staan! “We hebben er al positieve reacties over ontvangen”, geeft Gert-Jan aan.

Elonisas IOT en Velorama zijn erg blij met het eindresultaat. We hopen dan ook nog veel meer soortgelijke projecten op te mogen pakken.

De beeldkoffer is te bewonderen in het Nationaal Fietsmuseum Velorama, Waalkade 107 te Nijmegen. Bekijk ook de website www.velorama.nl.

Arduino Oefening 5 – PIR Sensor

In deze oefening gaan we beweging detecteren met behulp van een PIR sensor. Een PIR sensor detecteert beweging met behulp van infra rood straling. De PIR sensor bevat twee infra rood sensoren waartussen het verschil wordt gemeten om te bepalen of iets beweegt. Wanneer er beweging wordt gedetecteerd geeft de middelste pin een signaal af.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • LED met ingebouwde weerstand of een 220 ohm weerstand
  • PIR sensor

Aansluitschema

arduino-with-pir-motion-sensor-schematics

Code

Code om de PIR sensor te testen is te vinden op:
http://playground.arduino.cc/Code/PIRsense

Let op! Het PIR signaal (gele kabel) moet om de code te laten werken aangesloten worden op pin 3.

In het code voorbeeld is voornamelijk de volgende code belangrijk voor de detectie en het inschakelen van de LED:

if(digitalRead(pirPin) == HIGH){
  digitalWrite(ledPin, HIGH);
}

pir-sensor

De waarde pirPin bevat het signaal van de PIR sensor.

De de grootte van het verschil tussen de twee sensoren voordat beweging wordt gedetecteerd kan ingesteld worden door middel van de twee (in dit geval oranje) potmeters die op het printplaatje zijn bevestigd. De potmeters kunnen met behulp van een schroevendraaier worden ingesteld.

Arduino Oefening 4 – Poort manipulatie

In deze oefening werken we met poort manipulatie om de aangesloten LED’s in of uit te schakelen.

Middels poort manipulatie geven we in één enkele byte aan het poort register door welke poorten binnen een bepaald segment van de Arduino Board ingeschakeld (1) of uitgeschakeld (0) moeten worden (PORTB) en of het om IN of OUTPUT gaat (DDRB). Meer weten? Lees er hier meer over.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • Rode LED met ingebouwde weerstand of een 220 ohm weerstand
  • Groene LED met ingebouwde weerstand of een 220 ohm weerstand
  • Gele LED met ingebouwde weerstand of een 220 ohm weerstand
  • Pushbutton
  • 10K ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en LED’s in diverse kleuren met ingebouwde weerstand. Ook de pushbutton en de 10k ohm weerstand zijn inbegrepen.

Aansluitschema

Oefening-4

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 8-3-2016
 Port Manipulation Voorbeeld
*/

const long interval = 10000;

int buttonPin = 2;
bool buttonWaarde;
bool disco;

void setup() {
  DDRB = B11111111;
  pinMode(buttonPin, INPUT);
}

void loop() {

  buttonWaarde = digitalRead(buttonPin);

  if(buttonWaarde==HIGH) {
    disco = !disco;
    delay(1000);
  }

  if(disco) {
    switch(millis() % interval) {
      case 0: { PORTB = B00011100; break; }
      case 1000: { PORTB = B00011100; break; }
      case 2000: case 5000: { PORTB = B00010000; break; }
      case 3000: case 6000: { PORTB = B00011000; break; }
      case 4000: case 7000: { PORTB = B00011100; break; }
      case 8000: { PORTB = B00000000; break; }
      case 9000: { PORTB = B00001110; break; }
      case 10000: { PORTB = B00000000; break; }
    }
  } else {
    PORTB = B00000000;
  }
 
}

Met segment B worden de poorten 8 tot 13 aangestuurd. We vermijden de delay-functie en gebruiken in plaats daarvan de millis-functie om te bepalen welke byte weggeschreven moet worden naar PORTB.

Arduino Oefening 3 – NTC

In deze oefening lezen we de waarde van een warmte gevoelige weerstand uit (NTC) en tonen deze via de seriële monitor wanneer er op de pushbutton (knopje) gedrukt wordt.

Een NTC-weerstand, ook wel Thermistor genoemd, reageert op temperatuur. Wanneer de temperatuur stijgt, neemt de weerstand van de NTC af. Lees er hier meer over.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • Pushbutton
  • 10k Warmte gevoelige weerstand (NTC)
  • 2x 10K ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand. Ook de pushbutton, 10k ohm NTC en de 10k ohm weerstanden behoren tot de inhoud.

Aansluitschema

Oefening-3

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 28-02-2016
 NTC Temperatuur gevoelige weerstand (voorbeeld code)
*/

#define NTCPIN A0 // NTC sensor pin

float waarde;

int buttonPin = 2;
bool buttonWaarde;

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}

void loop() {
 
  waarde = analogRead(NTCPIN);
  buttonWaarde = digitalRead(buttonPin);

  if(buttonWaarde==HIGH) {
    Serial.print("NTC waarde: ");
    Serial.println(waarde);
  }
 
  delay(1000);
 
}

De parameter ‘waarde’ bevat de waarde van de NTC (ongeveer tussen de 300 en 800). Wanneer op de knop wordt gedrukt (buttonWaarde), wordt de waarde weggeschreven naar de seriële monitor (Serial.print).

Arduino Oefening 2 – PWM poort

In deze oefening bepalen we de lichtsterkte van een LED d.m.v puls breedte modulatie (PWM – Pulse Width Modulation) met behulp van een potmeter. Nieuwsgierig hoe dit precies werkt? Lees er hier meer over.

Een potmeter is een draaibare weerstand. Door te draaien wordt de weerstand bepaalt. Sommige potmeters hebben een zogenaamde center click zodat je weet waar het midden zit.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • LED met ingebouwde weerstand of een 220 ohm weerstand
  • 10k ohm Potmeter

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand. Ook de 10k ohm potmeter incl. draadknop zijn inbegrepen.

Aansluitschema

Oefening-2

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 28-02-2016
 Potmeter (voorbeeld code)
*/

#define POTMETER A0
int ledPin = 3;
int waarde;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  waarde = analogRead(POTMETER) / 4;
  analogWrite(ledPin, waarde);
  //Serial.print("Waarde: ");
  //Serial.println(waarde);
  //delay(500);
}

De waarde van de potmeter (maximaal 1024) delen we door 4 en vervolgens bepalen we daar de waarde van de PWM poort mee (maximaal 255).

Arduino Oefening 1 – LDR

In de volgende oefening sluiten we een licht gevoelige weerstand (LDR) aan om, wanneer het donker wordt, een LED te laten branden!

Een LDR (light-dependent resistor) is een elektrisch component waarvan de weerstand wordt bepaalt door de hoeveelheid licht die wordt opgenomen door het zonnepaneel-achtige oppervlak van het component. Nieuwsgierig hoe een LDR nou precies werkt? Lees er hier meer over.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • LED met ingebouwde weerstand of een 220 ohm weerstand
  • Licht gevoelige weerstand (LDR)
  • 10k ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand. Ook de LDR en 10k ohm weerstand behoren tot de inhoud.

Aansluitschema

Oefening-1

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 28-02-2016
 LDR Lichtgevoelige sensor (voorbeeld code)
*/

#define LDRPIN A0 // LDR sensor pin

float waarde;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
 
  waarde = analogRead(LDRPIN);
 
  //Serial.print("LDR waarde: ");
  //Serial.println(waarde);

  digitalWrite(13,(waarde < 550 ? HIGH : LOW));

  delay(1);
 
}

De LDR wordt uitgelezen via een analoge poort (A0 in dit geval). De parameter ‘waarde’ bevat de waarde die de LDR terug geeft (ongeveer tussen de 300 en 800). Is deze waarde lager dan 550, dan wordt de LED ingeschakeld.

De 10k ohm weerstand die op GND (ground) aangesloten is, voert de overtollige spanning af. Dit is noodzakelijk zodat de waarde, die via de analoge poort wordt doorgegeven, klopt.

 

Aan de slag met de Arduino Board

We vertellen graag wat meer over de Arduino Board. De eerste board werd in 2005 gelanceerd. Het doel van deze board was om het voor beginners en professionals op een eenvoudige en laagdrempelige manier mogelijk te maken apparaten te creëren die interactie hadden met hun omgeving middels sensoren en actuatoren. Doormiddel van op de Arduino Board geprogrammeerde instructies worden de sensoren uitgelezen en de actuatoren in werking gesteld.

Getting Started

De eerste stap om aan de slag te kunnen met de Arduino Board is het installeren van de Arduino Software. Deze is hier te downloaden.

De tweede stap is het aansluiten van de Arduiono Board op de USB poort van je computer. Vervolgens kan in de software aangegeven worden welk type Arduino aangesloten is.

We beginnen met de meest eenvoudige oefening. Het aansluiten van een LED die we vervolgens laten knipperen. Het is een van de voorbeelden die meegeleverd worden met de Arduino Software. Uitgebreide uitleg over deze oefening en meer basis oefeningen zijn hier te vinden.

Benodigdheden

  • Arduino Board
  • LED met ingebouwde weerstand of een 220 ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand.

Aansluitschema

Sluit de LED aan op GND (ground) met het korte pootje en op poort 13 met het lange pootje. Let op! Controleer of je de juiste LED gebruikt (met ingebouwde weerstand). Mocht dat niet het geval zijn, gebruik dan een 220 ohm weerstand tussen poort 13 op de Arduino Board en het langste pootje van de LED.

GettingStarted

Code

De boel aangesloten? Upload dan de volgende code naar de Arduino Board. De LED begint nu te knipperen.

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the Uno and
  Leonardo, it is attached to digital pin 13. If you're unsure what
  pin the on-board LED is connected to on your Arduino model, check
  the documentation at http://www.arduino.cc

  This example code is in the public domain.

  modified 8 May 2014
  by Scott Fitzgerald
 */


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

Werkt het? Probeer dan eens de delay te veranderen naar bijv. 500 (een halve seconden) of 2000 (2 seconden). De LED gaat nu sneller of minder snel knipperen.