Texas Instruments Educational Boosterpack II - Review

Table of contents

RoadTest: Texas Instruments Educational Boosterpack II

Author: stefacc

Creation date:

Evaluation Type: Evaluation Boards

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: null

What were the biggest problems encountered?: null

Detailed Review:

The products that are presented are the MSP432 LaunchPad and the Educational Booster Pack MKII, both produced by Texas Instruments and developed for professional developers and for newcomers to the world of electronics.
We will see that both products offer highly advanced features and powerful tools, both for the development of new projects and for learning the principles of the coding and the electronic components.

 

 

LaunchPad MSP432

The MSP432 LaunchPad allows to develop ultra low-power devices (thanks to the characteristics of the MSP430/2 family), keeping high performance through the use of Cortex M4.

The board has a MSP432P401R that works at 48 MHz, with 256 KB of flash and 64kB of RAM.
We find two user buttons and a reset button, as well as a red LED and an RGB LED.
Finally it comes with 40 pins for the Booster Pack.

The characteristic that is very useful is the presence of a programmer/debugger, accessible via USB. Thanks to this we not only can program and test the code without using additional tools, but also we can measure the total energy consumption of the system.











Energia IDE

There are many IDE available for this board (CCS, IAR), but the most interesting is Energia, downloadable here.

This IDE can run on all major operating systems (Mac OS X, Windows, Linux) and is compatible with Arduino system, which makes it very accessible to all those users who already had the opportunity to learn how to use Arduino.

As you can see, at first glance Energia is very similar to the Arduino IDE.

In addition to this, Energia is released with a whole series of examples that can be loaded directly and used for educational purposes.

The main changes introduced by this IDE are two:

  1. the ability to access to the CCS Cloud, a web-based IDE developed by Texas Instruments, which allows you to download your created project from the cloud, and upload it directly on the board;
  2. the ability to simulate and develop projects in Multi Tasking mode, using Energia MT.
    This feature was developed by TI and can be used for educational purposes.


WARNING: Energia compiler doesn't work if the path of the Energia or the path of the project has some spaces.

BoosterPack MKII


At first glance, the device looks like a game console, but it's actually a very useful platform for developing new projects both professional and amateur, and is particularly useful for all beginners who want to approach to the LaunchPad family.
The BoosterPack has many sensors and actuators already integrated and ready for use, thanks to libraries and examples which are released freely with the IDE Energia.


With the launch of the new Educational BoosterPack MKII, new sensors were introduces from the previous version:

- A 16 bit colors LCD, 128x128, controlled by the HiMax HX8353E;

- A joystick and two buttons, located respectively on the left and right of the board; especially the joystick is the Itead IM130330001 2 - Axis joystick with pushbutton;

- The temperature sensor TMP006, capable of measuring the temperature of an object without coming into direct contact with the same; the range is from -40 ° to 125 ° and also in this case is used I2C protocol;

- The light sensor OPT3001, able to detect the intensity of visible light.
In particular it is able to measure an interval ranging from 0.01 Lux to 38k lux, offering the possibility to the processor to go in sleeping mode while the sensor operates the measurement.
In this way it is able to offer a low power consumption. The protocol used for communication is the I2C;

- Connectors for the servo.

Instead, they remained:

- A 3-axis accelerometer KXTC9-2050;

- A CREE RGB Multi-color LED;

- A piezo buzzer;

- A microphone.



First example project

Now, let’s try to develop a small project.

After the installation of Energia, you must select the board in your possession. To do this you must go to Tools >> Board, where you will find a list containing various devices. Select the correct one before proceeding >> LaunchPad w/ MSP43 EMT (48MHz).

First, we connect the LaunchPad boosterpack MKII through pins.

We can use the downloaded sketches to get familiar with the board; yu can find all the Examples in File >> Examples >> EducationalIBP_MKII.

The first sketch tested is the ButtonLEDs: this sketch allows you to turn on the green and blue LED, depending on which button is pressed.

The procedure is very simple: you simply set the pins, initialize the state variables and read the status of the buttons with the function digitalRead.

The explanations of each command are given in the sketch; then just load the code using the upload button in the IDE to get the result.

 

RoadTest Project

Now let’s create our application.

For our application we need a GPS module, which in this case will be the E1612UB (GPS v1 module from Grove System).

We connect the module as shown in the pictures (grey >> GND, violet >> 5V, blue >> TX, green >> RX).

All the sensors we need are already integrated into the board.

For the development of the code we consulted and studied all the examples related to the corresponding sensors.


The developed code is the following:

#include "Energia.h"

/* screen */
#include "SPI.h"
#include "Screen_HX8353E.h"
Screen_HX8353E myScreen;
double yy=0;

/* temperature sensor */
#include <Wire.h>
#include "Adafruit_TMP006.h"
#define USE_USCI_B1
Adafruit_TMP006 tmp006;
void printFloat(float value, int places) ;
struct TMP006
{
  char ObjTemp[30], DieTemp[30];
  uint16_t colour;
};
struct TMP006 TMP;

/* accelerometer */
struct ACC
{
  char x[20], y[20], z[20];
  char x_label[30], y_label[30], z_label[30];
  int xpin, ypin, zpin;
  uint16_t colour;
};
struct ACC ACC;

/* gps */
char k = 0, nmea[250], text[100];
struct GPS
{
  float lat, lng;
  char lat_str[20], lat_label[10], lng_str[20], lng_label[10], lat_dir[2], lng_dir[2];
  uint16_t colour;
};
struct GPS GPS;

/* backlight sensor */
#include "OPT3001.h"
opt3001 opt3001;
struct OPT3001
{
  unsigned long val;
  char val_label[25];
  uint16_t colour;
};
struct OPT3001 LIGHT;

void setup()
{
  TMP.colour = yellowColour;
  ACC.colour = redColour;
  ACC.xpin = 23;
  ACC.ypin = 24;
  ACC.zpin = 25;
  GPS.colour = blueColor;
  LIGHT.colour = greenColour

  analogReadResolution(10);

  Serial.begin(9600);
  Serial1.begin(9600);

  myScreen.begin();

  tmp006.begin(TMP006_CFG_8SAMPLE);

  opt3001.begin();

  sprintf(GPS.lat_label,"LAT: ");
  sprintf(GPS.lng_label,"LNG: ");

  yy=myScreen.fontSizeY()+myScreen.fontSizeY()/2;
}

void loop()
{
  if (Serial1.available())
  {
    if((char)Serial1.read()=='\n')
    {
      nmea[k++] = (char)Serial1.read();
      while(nmea[k-1]!='\n')
        nmea[k++] = (char)Serial1.read();
      nmea[k] = '\0';
      k=0;
      if(parseNMEA(nmea))
      {
        //myScreen.gText(0, myScreen.screenSizeY()-(myScreen.fontSizeY()*2+myScreen.fontSizeY()/2),GPS.lat_,colour);
        Serial.print("OK");

        myScreen.gText(0, 0, GPS.lat_label, GPS.colour);
        myScreen.gText(strlen(GPS.lat_label)*myScreen.fontSizeX(), 0, GPS.lat_str, GPS.colour);
        myScreen.gText((strlen(GPS.lat_label)+strlen(GPS.lat_str)+1)*myScreen.fontSizeX(), 0, GPS.lat_dir, GPS.colour);

        myScreen.gText(0, yy, GPS.lng_label, GPS.colour);
        myScreen.gText(strlen(GPS.lng_label)*myScreen.fontSizeX(), yy, GPS.lng_str, GPS.colour);
        myScreen.gText((strlen(GPS.lng_label)+strlen(GPS.lng_str)+1)*myScreen.fontSizeX(), yy, GPS.lng_dir, GPS.colour);

        getACC();
        myScreen.gText(0, 3*yy, "Accelerometer:", ACC.colour);

        sprintf(ACC.x_label, "X: %s", ACC.x);
        myScreen.gText(0, 4*yy, ACC.x_label, ACC.colour);

        sprintf(ACC.y_label, "Y: %s", ACC.y);
        myScreen.gText((strlen(ACC.x_label)+1)*myScreen.fontSizeX(), 4*yy, ACC.y_label, ACC.colour);

        sprintf(ACC.z_label, "Z: %s", ACC.z);
        myScreen.gText((strlen(ACC.x_label)+strlen(ACC.y_label)+2)*myScreen.fontSizeX(), 4*yy, ACC.z_label, ACC.colour);

        myScreen.gText(0, 6*yy, "Temperature:", TMP.colour);
        sprintf(TMP.ObjTemp, "Obj: %2.1f", tmp006.readObjTempC());
        myScreen.gText(0, 7*yy, TMP.ObjTemp, TMP.colour);
        sprintf(TMP.DieTemp, "Die: %2.1f", tmp006.readDieTempC());
        myScreen.gText((strlen(TMP.ObjTemp)+1)*myScreen.fontSizeX(), 7*yy, TMP.DieTemp, TMP.colour);

        LIGHT.val = opt3001.readResult();
        myScreen.gText(0, 9*yy, "Backlight:", LIGHT.colour);
        sprintf(LIGHT.val_label, "Val: %d", LIGHT.val);
        myScreen.gText(0, 10*yy, LIGHT.val_label, LIGHT.colour);
      }
    }
  }
}

char parseNMEA(char* nmea)
{
  if (strstr(nmea, "$GPRMC"))
  {
    char *ptr = nmea;
    ptr = strchr(ptr, ',')+1;
    ptr = strchr(ptr, ',')+1;
    ptr = strchr(ptr, ',')+1;
    char *ptr2 = strchr(ptr, ',');
    memcpy(GPS.lat_str,ptr,ptr2-ptr);
    GPS.lat_str[ptr2-ptr]='\0';

    ptr = strchr(ptr2, ',')+1;
    memcpy(GPS.lat_dir,ptr,1);
    GPS.lat_dir[1]='\0';

    ptr = strchr(ptr, ',')+1;
    ptr2 = strchr(ptr, ',');
    memcpy(GPS.lng_str,ptr,ptr2-ptr);
    GPS.lng_str[ptr2-ptr]='\0';

    ptr = strchr(ptr2, ',')+1;
    memcpy(GPS.lng_dir,ptr,1);
    GPS.lng_dir[1]='\0';

    return 1;
  }
  else
    return 0;
}

void getACC()
{
sprintf(ACC.x,"%d",(int)analogRead(ACC.xpin));
sprintf(ACC.y,"%d",(int)analogRead(ACC.ypin));
sprintf(ACC.z,"%d",(int)analogRead(ACC.zpin));
           }

 

The code of the project is slightly complicated and long, but the result is fantastic.

With this code, we can detect temperature, brightness and coordinates of the place where we are. In order to test the sensors, it was also included a measure from the accelerometer.

 

Note how in blue are showed the coordinates of latitude and longitude, in red the values obtained by the accelerometer along all three axes, in yellow the temperature of the internal die and the environment’s temperature, in green the value measured by the light sensor.



Conclusion

We can confirm the great versatility of this system which is able to develop complex projects and can be used for educational purposes.

The IDE offers new features and is compatible with Arduino, so it can be used even by those who already know the device. And you don’t forget the guarantee that can offer a great brand such as Texas Instrument.

Anonymous

Top Comments