TI DLP LightCrafter Display 2000 Module on BeagleBone Black

Introduction

This page will show you step-by-step how to interface a FLIR Lepton module to the BeagleBone Black/Green.

Hardware Requirements

Base Board

TI DLP LightCrafter Display 2000 for BeagleBone Black/Green:

FLIR Lepton:

Software Requirements

Install latest console image to eMMC

Today the latest version is: 2019-12-16 ( these are just monthly snapshots, so always check for the latest )

Console Image: (AM335x based BeagleBone's)
wget https://rcn-ee.com/rootfs/bb.org/testing/2019-12-16/buster-console/bone-eMMC-flasher-debian-10.2-console-armhf-2019-12-16-1gb.img.xz
 
sha256sum: 5d187b46954cfdd2bdf87270d8ac5666fe3e43266e23bb7161a6f422b90f46da

Download the *.img.xz and write to microSD card via Etcher:

Insert microSD into BeagleBone Black/Green and wait for flashing procedure to finish. (device should shutdown)

Utilize g_serial on usb mini connector

Since we will be using an LCD, we will be losing access to the J1 serial debug header on the baseboard, you can use the pre-loaded g_serial module via: (note, no boot logs will be shown)

gtkterm -p /dev/ttyACM0 -s 115200 &

Setup basic window manager

For this project we are going to use openbox & slim to provide a very basic desktop environment on the LCD.

sudo apt update
sudo apt upgrade
sudo apt install -y openbox slim xinit xserver-xorg-video-fbdev x11-xserver-utils git libpam-gnome-keyring feh i2c-tools unclutter

Setup /etc/X11/xorg.conf

#/etc/X11/xorg.conf
Section "Monitor"
        Identifier      "Builtin Default Monitor"
EndSection
Section "Device"
        Identifier      "Builtin Default fbdev Device 0"
        Driver          "fbdev"
EndSection
Section "Screen"
        Identifier      "Builtin Default fbdev Screen 0"
        Device          "Builtin Default fbdev Device 0"
        Monitor         "Builtin Default Monitor"
EndSection
Section "ServerLayout"
        Identifier      "Builtin Default Layout"
        Screen          "Builtin Default fbdev Screen 0"
EndSection

Check bootloader version

debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh | grep bootloader
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 2019.04-00002-g3d8c979660]:[location: dd MBR]

Update Kernel:

debian@beaglebone:~$ cd /opt/scripts/tools/
debian@beaglebone:/opt/scripts/tools$ sudo ./update_kernel.sh --lts-4_19

Shutdown system via:

sudo systemctl poweroff

Configure SLIM for autologin

Set Default User:

#/etc/slim.conf
# default user, leave blank or remove this line
# for avoid pre-loading the username.
#default_user        simone
default_user debian

Enable auto-login

#/etc/slim.conf
# Automatically login the default user (without entering
# the password. Set to "yes" to enable this feature
#auto_login          no
auto_login yes

Enable openbox:

echo "exec openbox-session" > /home/debian/.xsession

Lepton qt application

Build/Install Lepton application

sudo apt install -y build-essential qt4-dev-tools
  
git clone --depth=1 https://github.com/groupgets/LeptonModule

Apply this patch, to push the application to the upper left:

diff --git a/software/beagleboneblack_video/main.cpp b/software/beagleboneblack_video/main.cpp
index 264b0a2..9d3f2b5 100644
--- a/software/beagleboneblack_video/main.cpp
+++ b/software/beagleboneblack_video/main.cpp
@@ -18,12 +18,14 @@ int main( int argc, char **argv )
    QApplication a( argc, argv );
     
    QWidget *myWidget = new QWidget;
-   myWidget->setGeometry(400, 300, 340, 290);
+   //myWidget->setGeometry(400, 300, 340, 290);
+   myWidget->setWindowState(Qt::WindowFullScreen);
  
    //create an image placeholder for myLabel
    //fill the top left corner with red, just bcuz
    QImage myImage;
-   myImage = QImage(320, 240, QImage::Format_RGB888);
+   //myImage = QImage(480, 360, QImage::Format_RGB888);
+   myImage = QImage(640, 480, QImage::Format_RGB888);
    QRgb red = qRgb(255,0,0);
    for(int i=0;i<80;i++) {
        for(int j=0;j<60;j++) {
@@ -33,12 +35,13 @@ int main( int argc, char **argv )
  
    //create a label, and set it's image to the placeholder
    MyLabel myLabel(myWidget);
-   myLabel.setGeometry(10, 10, 320, 240);
+// myLabel.setGeometry(10, 10, 320, 240);
+   myLabel.setGeometry( 0,  0, 640, 480);
    myLabel.setPixmap(QPixmap::fromImage(myImage));
  
    //create a FFC button
-   QPushButton *button1 = new QPushButton("Perform FFC", myWidget);
-   button1->setGeometry(320/2-50, 290-35, 100, 30);
+// QPushButton *button1 = new QPushButton("Perform FFC", myWidget);
+// button1->setGeometry(320/2-50, 290-35, 100, 30);
  
    //create a thread to gather SPI data
    //when the thread emits updateImage, the label should update its image accordingly
@@ -46,7 +49,7 @@ int main( int argc, char **argv )
    QObject::connect(thread, SIGNAL(updateImage(QImage)), &myLabel, SLOT(setImage(QImage)));
     
    //connect ffc button to the thread's ffc action
-   QObject::connect(button1, SIGNAL(clicked()), thread, SLOT(performFFC()));
+// QObject::connect(button1, SIGNAL(clicked()), thread, SLOT(performFFC()));
    thread->start();
     
    myWidget->show();

and finally build the project

cd /home/debian/LeptonModule/software/beagleboneblack_video/leptonSDKEmb32PUB/
make
cd ..
qmake && make

AutoStart this application on bootup:

mkdir -p /home/debian/.config/openbox/
echo "feh --bg-scale /opt/scripts/images/beaglebg.jpg" > /home/debian/.config/openbox/autostart
echo "/home/debian/LeptonModule/software/beagleboneblack_video/bbb &" >> /home/debian/.config/openbox/autostart

Enable the “BB_SPIDEV0” overlay in /boot/uEnv.txt:

uboot_overlay_addr4=/lib/firmware/BB-SPIDEV0-00A0.dtbo

Comments

Any questions or comments please go to our TechForum: TechForum