Steun onze actie WeGoSTEM

Voor onze actie WeGoSTEM zoeken we nog vrijwilligers. Doe mee via WeGoSTEM.be/meedoen

Robots aansturen met het sensorpaneel

De robot sensor paneel bevat alle sensoren die u nodig hebt om een verscheidenheid van robots te bouwen. Aan de hand van de vier grondsensoren, kunt u gemakkelijk een snelle lijn-volgende robot bouwen. Met de twee lichtsensoren zal je robot elke lichtbron te detecteren. De afstandssensoren (voor zowel korte als langere afstand) zal jouw robot in staat stellen om zelfs de moeilijkste parcours te navigeren. Daarnaast bevat de sensorpaneel ook een infrarood ontvanger, die u kunt gebruiken om de robot te sturen met de afstandsbediening van uw tv. Om te navigeren in het donker heeft het sensorpaneel ook twee lampen.


Functionaliteit

  • Vier grondsensoren (infrarood), type Vishay TCRT1000
  • Drie korte-afstand sensoren (infrarood), type Vishay TCRT5000 met een bereik van ongeveer 3 cm
  • Een lange-afstand sensor, type Sharp GP2Y0A21 met een bereik van 8 tot 80 cm
  • Twee sterke witte power leds als koplampen van de robot
  • Twee lichtsensoren, type Vishay TEPT5600
  • Een infrarood sensor, type TSOP2136
  • Een MAX7320 port expander (I2C)
  • Een MAX11604 A/D-conversie chip (I2C)

Merk op dat het sensor-paneel de I2C-bus gebruikt op pinnen 14 en 15. Bijgevolg kan je beter niets aansluiten op deze pinnen wanneer je het sensor-paneel gebruikt.

Sensor panel

Aan de slag

We beginnen met het laden van de vereiste bibliotheken.

  1. #include <Wire.h>
  2. #include <LiquidCrystal.h>
  3. #include <Dwenguino.h>
  4. #include <DwenguinoSensorPanel.h>

Hierna kunnen we een SensorPanel object declareren dat de functionaliteit van het Dwengo Sensorpaneel bepaalt.

  1. SensorPanel sensorpanel;

In de setup functie moeten we de Dwenguino initialiseren door initDwenguino() waarna we de SensorPanel functie oproepen die het SensorPanel-object initieert. Dit object moet geïnitialiseerd worden door te de init() functie op te roepen. Bovendien kunnen we de lange afstandsensor activeren door het instellen van de powerLongRange() op true te zetten. Als u deze sensor niet nodig heeft zet je deze op false zodat je robot energie zal besparen.

  1. void setup() {
  2. // put your setup code here, to run once:
  3. initDwenguino();
  4. sensorpanel = SensorPanel();
  5. sensorpanel.init();
  6. sensorpanel.powerLongRange(true); // if you want to use the long range distance sensor, you need to activate it
  7. }

Nu kunnen we het sensorpaneel gebruiken. Bijvoorbeeld, door de setHeadlights-functie op te roepen kunnen we de twee koplampen LD1 en LD2 aanschakelen (of uitschakelen). De functie setHeadlights heeft twee argumenten, waarvan het eerste de LED (LD1 of LD2) bepaalt en de tweede bepaalt de toestand (true of false).

  1. void loop() {
  2. // put your main code here, to run repeatedly:
  3. unsigned char sensor;
  4. sensorpanel.setHeadlights(LD2,true);
  5. delay(200);
  6. sensorpanel.setHeadlights(LD2,false);
  7. delay(200);

De sensoren kunnen worden gelezen met de readSensor functie. Deze functie heeft ook twee argumenten. Het eerste argument bepaalt de sensor. Dit kan een van de grondsensoren (OS1, OS2, OS3 of OS4) of één van de korte afstandssensoren (OS5, OS6 of OS7) zijn. Het tweede argument bepaalt de mode. Er zijn drie mogelijkheden: ACTIVE_MODE, AMBIENT_MODE en DIFF_MODE. De grondsensoren en afstandssensoren hebben verschillende modes omdat zij bestaan uit een IR-LED en fototransistor. Met de mode ACTIVE_MODE worden zowel de IR LED en de fototransistor geactiveerd. In AMBIENT_MODE wordt alleen de fototransistor geactiveerd, waarbij de sensor alleen omgevingslicht ontvangt. In DIFF_MODE worden twee metingen uitgevoerd: één in ACTIVE_MODE en een in AMBIENT_MODE. Beide metingen worden dan van elkaar afgetrokken. Bijgevolg zullen in DIFF_MODE zowel de afstandssensoren en de grondsensoren minder gevoelig zijn voor omgevingslicht.

  1.  
  2. dwenguinoLCD.setCursor(0, 0);
  3. sensor = sensorpanel.readSensor(OS1,DIFF_MODE);
  4. dwenguinoLCD.print("Sensor OS1: ");
  5. dwenguinoLCD.print((int)sensor);

De lange afstandssensor OS8 kan ook gelezen worden met de readSensor-functie. In dit geval is het tweede argument niet van toepassing en wordt het dus genegeerd.

  1. dwenguinoLCD.setCursor(0, 1);
  2. sensor = sensorpanel.readSensor(OS8,ACTIVE_MODE);
  3. dwenguinoLCD.print("Sensor OS8: ");
  4. dwenguinoLCD.print((int)sensor);
  5. }

Schema's en ontwerp-bestanden

CC-BY-SA Dwengo Sensorpaneel door Dwengo vzw heeft als licentie Creative Commons Attribution-ShareAlike 4.0 International License. Gelieve de voorwaarden te lezen voor gebruik

Klik en download de schema's en ontwerp-bestanden

Additional Materials