Brandon RoyalMarlyn RosalesZackary Scott FleenorRami Abueshsheikh
Created July 12, 2018 © GPL3+

BeagleBone X-15 Automatic License Plate Garage Access

Work comes first here at TI so the quicker we get in the quicker we get to work.

IntermediateWork in progressOver 1 day112
BeagleBone X-15 Automatic License Plate Garage Access

Things used in this project

Hardware components

BeagleBoard-X15
BeagleBoard.org BeagleBoard-X15
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×2
2201 Adafruit Sub-Micro Servo
×1
Logitech HD WebCam
×1
MSP-EXP430G2 MSP430 LaunchPad
Texas Instruments MSP-EXP430G2 MSP430 LaunchPad
×1
Servo Module (Generic)
×1
FTDI UART TO USB CHIP
×1

Software apps and online services

Code Composer Studio
Texas Instruments Code Composer Studio
CCS Cloud
Texas Instruments CCS Cloud
Putty

Story

Read more

Schematics

BeagleBone X-15 Major Components

Major Components of the BeagleBone X-15 include:
-1 x AM5728 TI Sitara Proccesor
-2GB DDR3 RAM
-4GB 8-bit eMMC on-board flash storage
-2D/3D graphics and video accelerators (GPUs)
-2×700-MHz C66 digital signal processors (DSPs)
-2×ARM Cortex-M4 microcontrollers (MCUs)
-4×32-bit programmable real-time units (PRUs)

Code

MSP430 Ultrasonic Interface + Servo Control

C/C++
#include <energia.h>
#include <msp430g2553.h>
#include <Servo.h>

const int pingPin = P2_3;
const int pingReceive = P2_4;

const int pushButton = P1_3;
const int LED = P1_0;
const int servoPin = P1_6;

const int servo_close = 10;
const int servo_open = 90;

Servo myServo;

int duration = 0;
int button_check = 0;
int serial_input = 0;

void open_gate(void);

void setup()
{
    Serial.begin(9600);

    pinMode(pingPin, OUTPUT);
    pinMode(LED, OUTPUT);

    pinMode(pingReceive, INPUT);
    pinMode(pushButton, INPUT_PULLUP);

    myServo.attach(servoPin);
    myServo.write(servo_close);
}

void loop()
{
    button_check = !digitalRead(pushButton);

    if (Serial.available() > 0)
    {      // read the incoming byte:

        serial_input = Serial.read();

           if (serial_input == 49)
           {
               digitalWrite(LED, HIGH);
               open_gate();
               digitalWrite(LED, LOW);
           }
           
           else
           {
               if(button_check)
               {
                   Serial.println(10000);
               }
               else
               {
        // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
        // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
                   digitalWrite(pingPin, LOW);
                   delayMicroseconds(2);
                   digitalWrite(pingPin, HIGH);
                   delayMicroseconds(5);
                   digitalWrite(pingPin, LOW);

         // The same pin is used to read the signal from the PING))): a HIG               // pulse whose duration is the time (in microseconds) from the sending
         // of the ping to the reception of its echo off of an object.

                  duration = pulseIn(pingReceive, HIGH);
                  Serial.println(duration);
               }
           }

           serial_input = 0;
           Serial.flush();
           button_check = 0;
    }
}

void open_gate(void)
{
    myServo.write(servo_open);
    delay(5000);
    myServo.write(servo_close);
}

WebCam & Beagleboard Interface

Open ALPR

Open Source Automatic License Plate Recognition Library

Credits

Brandon Royal
1 project • 0 followers
Marlyn Rosales
1 project • 0 followers
Zackary Scott Fleenor
1 project • 0 followers
Rami Abueshsheikh
1 project • 0 followers

Comments