Súprava modulov a snímačov pre robot zo súpravy mBot Explorer Kit

Pozdravujem fanúšikov robotiky a programovania, ktorí by radi rozšírili robot zo súpravy mBot Explorer Kit o súpravu modulov a snímačov firmy Makeblock. Najskôr vám predstavím samotnú súpravu a následne sa môžete tešiť na jej praktickú ukážku za pomoci dvoch mojich programov.

Súprava modulov a snímačov

Súprava modulov a snímačov firmy Makeblock je jedna z najmenších a najlacnejších súprav, pričom obsahuje:

  • modul červeného displeja Me 7-segment Display
  • modul štyroch diód Me RGB LED
  • modul joysticku Me Joystick
  • modul potenciometra Me Potentiometer
  • modul adaptéru Me RJ25 Adapter
  • snímač teploty Me Temperature Sensor
  • pasívny infračervený snímač Me PIR Motion Sensor
  • snímač svetla Me Light Sensor
  • prepojovacie káble s konektormi RJ25 (6P6C)
  • skrutky M4 a matice M4

Táto súprava neobsahuje riadiacu dosku, preto je treba pripojiť ju k inému produktu firmy Makeblock disponujúceho riadiacou doskou. V mojom prípade to je riadiaca doska mCore (bez Bluetooth modulu) robota zo súpravy mBot Explorer Kit, ktorá má štyri porty konektorov RJ25. Odskúšanie súpravy modulov a snímačov si preto vyžiada vytvorenie dvoch hardvérových zostáv s patričným softvérom, s ktorými vás oboznámim na ďalších riadkoch.

Prvá hardvérová zostava so softvérom

Prvú hardvérovú zostavu tvorili moduly a snímače rešpektujúce nasledovný ‚layout‘ portov konektorov RJ25 riadiacej dosky mCore:

  • Port 1 – displej Me 7-segment Display
  • Port 2 – diódy Me RGB LED
  • Port 3 – joystick Me Joystick
  • Port 4 – potenciometer Me Potentiometer

Jej upevnenie na robot zo súpravy mBot Explorer Kit umožnili zvyšné diely uvedenej súpravy, pričom kľúčovým bol 120-stupňový nosník.

Softvér som vytvoril v platforme Makeblock mBlock 5 (s pridaným zariadením mBot) rozšírenej o Platformu výrobcu. Testovaním som získal finálnu verziu programu:

Program Arduino C – prvý program

// generated by mBlock5 for mBot
// codes make you happy

#include <MeMCore.h>
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

MePotentiometer potentiometer_4(4);
Me7SegmentDisplay seg7_1(1);
MeRGBLed rgbled_2(2, 4);
MeBuzzer buzzer;
MeDCMotor motor_9(9);
MeDCMotor motor_10(10);
MeJoystick joystick_3(3);

void move(int direction, int speed) {
  int leftSpeed = 0;
  int rightSpeed = 0;
  if(direction == 1) {
    leftSpeed = speed;
    rightSpeed = speed;
  } else if(direction == 2) {
    leftSpeed = -speed;
    rightSpeed = -speed;
  } else if(direction == 3) {
    leftSpeed = -speed;
    rightSpeed = speed;
  } else if(direction == 4) {
    leftSpeed = speed;
    rightSpeed = -speed;
  }
  motor_9.run((9) == M1 ? -(leftSpeed) : (leftSpeed));
  motor_10.run((10) == M1 ? -(rightSpeed) : (rightSpeed));
}

void _delay(float seconds) {
  long endTime = millis() + seconds * 1000;
  while(millis() < endTime) _loop();
}

void setup() {
  rgbled_2.fillPixelsBak(0, 2, 1);
  while(1) {
      if(potentiometer_4.read() > 20){

          seg7_1.display(float(potentiometer_4.read()));

          rgbled_2.setColor(0, potentiometer_4.read() / 3.9, (255 - potentiometer_4.read() / 3.9), 0);
          rgbled_2.show();

          buzzer.tone((700 + potentiometer_4.read()), 0.5 * 1000);

      }

      seg7_1.display(float(0));

      rgbled_2.setColor(0,  0,0,0);
      rgbled_2.show();
      motor_9.run(0);
      motor_10.run(0);
      if(joystick_3.read(2) > 15){

          seg7_1.display(float(1));

          rgbled_2.setColor(3,  255,255,255);
          rgbled_2.show();

          move(1, joystick_3.read(2) / 5 / 100.0 * 255);
          _delay(0.5);

      }
      if(joystick_3.read(2) < -15){

          seg7_1.display(float(2));

          rgbled_2.setColor(1,  255,0,0);
          rgbled_2.show();

          move(2, joystick_3.read(2) / -5 / 100.0 * 255);
          _delay(0.5);

      }
      if(joystick_3.read(1) < -15){

          seg7_1.display(float(3));

          rgbled_2.setColor(4,  255,161,0);
          rgbled_2.show();

          move(3, joystick_3.read(1) / -5 / 100.0 * 255);
          _delay(0.5);

      }
      if(joystick_3.read(1) > 15){

          seg7_1.display(float(4));

          rgbled_2.setColor(2,  255,157,0);
          rgbled_2.show();

          move(4, joystick_3.read(1) / 5 / 100.0 * 255);
          _delay(0.5);

      }

      _loop();
  }

}

void _loop() {
}

void loop() {
  _loop();
}

Program mBlock 5 – prvý program

Video – prvý program

Prvý program vychádza z manipulácie s potenciometrom a joystickom. Pri pootočení potenciometra sa na displeji zobrazí jeho aktuálna hodnota, od ktorej sa odvíja zobrazenie farieb diód a prehranie výšky tónu. Pri naklonení ovládacej páky joysticku v jednom zo štyroch smerov sa aj spomínaný robot bude pohybovať patričným smerom pri súčasnom zobrazení čísla na displeji a rozsvietení diódy.

Druhá hardvérová zostava so softvérom

Druhá hardvérová zostava disponovala ďalšími modulmi a snímačmi zohľadňujúcimi nižšie opísaný ‚layout‘ portov konektorov RJ25 riadiacej dosky mCore:

  • Port 1 – displej Me 7-segment Display
  • Port 2 – diódy Me RGB LED
  • Port 3 – snímač teploty Me Temperature Sensor pripojený prostredníctvom adaptéru Me RJ25 Adapter
  • Port 4 – pasívny infračervený snímač Me PIR Motion Sensor

Na tvorbu softvéru som opäť použil platformu Makeblock mBlock 5, do ktorej som pridal zariadenie mBot (s rozšírením Platforma výrobcu). Otestovaná finálna verzia programu uzrela svetlo sveta po pár minútach:

Program Arduino C – druhý program

// generated by mBlock5 for mBot
// codes make you happy

#include <MeMCore.h>
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

Me7SegmentDisplay seg7_1(1);
MeBuzzer buzzer;
MeTemperature temperature_3_1(3, 1);
MePIRMotionSensor pir_4(4);
MeRGBLed rgbled_2(2, 4);
MeDCMotor motor_9(9);
MeDCMotor motor_10(10);

void move(int direction, int speed) {
  int leftSpeed = 0;
  int rightSpeed = 0;
  if(direction == 1) {
    leftSpeed = speed;
    rightSpeed = speed;
  } else if(direction == 2) {
    leftSpeed = -speed;
    rightSpeed = -speed;
  } else if(direction == 3) {
    leftSpeed = -speed;
    rightSpeed = speed;
  } else if(direction == 4) {
    leftSpeed = speed;
    rightSpeed = -speed;
  }
  motor_9.run((9) == M1 ? -(leftSpeed) : (leftSpeed));
  motor_10.run((10) == M1 ? -(rightSpeed) : (rightSpeed));
}

void _delay(float seconds) {
  long endTime = millis() + seconds * 1000;
  while(millis() < endTime) _loop();
}

void setup() {
  pinMode(A7, INPUT);
  rgbled_2.fillPixelsBak(0, 2, 1);
  while(1) {

      seg7_1.display(float(8888));
      while(!((0 ^ (analogRead(A7) > 10 ? 0 : 1))))
      {
        _loop();
      }
      _delay(1);

      buzzer.tone(247, 0.5 * 1000);
      _delay(0.02);

      seg7_1.display(float(temperature_3_1.temperature()));
      _delay(1);

      buzzer.tone(294, 0.5 * 1000);
      _delay(0.02);

      seg7_1.display(float(pir_4.isHumanDetected()));
      _delay(1);

      seg7_1.display(float(8888));

      buzzer.tone(349, 0.5 * 1000);
      _delay(0.02);

      rgbled_2.setColor(0,  255,0,0);
      rgbled_2.show();
      _delay(1);
      rgbled_2.setColor(0, 0, 0, 0);
      rgbled_2.show();

      rgbled_2.setColor(0,  42,255,0);
      rgbled_2.show();
      _delay(1);
      rgbled_2.setColor(0, 0, 0, 0);
      rgbled_2.show();

      rgbled_2.setColor(0,  63,0,255);
      rgbled_2.show();
      _delay(1);
      rgbled_2.setColor(0, 0, 0, 0);
      rgbled_2.show();

      rgbled_2.setColor(0,  255,255,255);
      rgbled_2.show();
      _delay(1);
      rgbled_2.setColor(0, 0, 0, 0);
      rgbled_2.show();

      buzzer.tone(440, 0.5 * 1000);
      _delay(0.02);

      move(1, 40 / 100.0 * 255);
      _delay(0.5);
      move(1, 0);

      move(2, 40 / 100.0 * 255);
      _delay(0.5);
      move(2, 0);

      move(3, 40 / 100.0 * 255);
      _delay(0.5);
      move(3, 0);

      move(4, 40 / 100.0 * 255);
      _delay(0.5);
      move(4, 0);

      buzzer.tone(523, 0.5 * 1000);
      _delay(0.02);

      _loop();
  }

}

void _loop() {
}

void loop() {
  _loop();
}

Program mBlock 5 – druhý program

Video – druhý program

Na spustenie druhého programu postačí stlačenie tlačidla riadiacej dosky mCore. Následne sa zobrazí na displeji aktuálna teplota, hodnota nameraná pasívnym infračerveným snímačom, rôzne farby diód a predvedie sa pohyb zmieneného robota.

Záver

V závere môjho článku vám ďakujem za jeho prečítanie. Súprava modulov a snímačov firmy Makeblock je ďalším zmysluplným produktom tejto firmy rozvíjajúcim predstavivosť a fantáziu.

Spomínaná súprava pozostáva z pozoruhodných dielov tvoriacich s robotom zo súpravy mBot Explorer Kit praktickú kombináciu, ktorej sa budem venovať aj v budúcom článku.

E-shop

Makeblock Sada elektronických modulů a senzorů

Projektová sada pro Vaše roboty.




Makeblock Explorer Kit – mBot Bluetooth, modrý, verze 2

Modrý mBot Bluetooth vylepšený o LED matrix displej!


Doporučené příslušenství

Leave a Reply