JPEG Color Camera Serial UART Interface (TTL level)

From LinkSprite Playgound
Revision as of 12:10, 8 August 2014 by Yajuan.dai (talk | contribs) (Package List)
Jump to: navigation, search

Introduction

LS-Y201 is LinkSprite’s new generation serial port camera module. It can captures high resolution pictures using the serial port. LS-Y201 is a modular design that outputs JPEG images through UART, and can be easily integrated into existing design.

Package List

  • 1 X [CAM_JPEG_TTLUART][201201001]
  • 1 X [IT_CAM_CAB ][AA102]


Model: [CAM_JPEG_TTLUART][201201001]

Camerattl.jpg

Cable included: [IT_CAM_CAB ][AA102]

IMG 0575.JPG

Features

Application Ideas

  • Different image capture systems
  • Environmental monitoring
  • Industry monitoring
  • Medical equipment
  • Video phone
  • Security
  • Vehicle based GPS

Cautions

The warnings and wrong operations possible cause dangerous.


Schematic

Specification

  • VGA/QVGA/160*120 resolution
  • Support capture JPEG from serial port
  • Default baud rate of serial port is 38400
  • DC 3.3V or 5V power supply
  • Size 32mm X 32mm
  • Current consumption: 80-100mA
  • The pin near C03 is AV output pin, which is an analog output pin.

Pin definition and Rating

Mechanic Dimensions

Usage

Hardware Installation

Evaluation Setup

Evasetup.jpg

Programming

Evascreenshot.jpg

  • Step 1: Click Open COM
  • Step 2: Click Single Shot.

Arduino sample code provided

<syntaxhighlight lang="c">

/* Linksprite */

  1. include <NewSoftSerial.h>

byte incomingbyte; NewSoftSerial mySerial(4,5); //Configure pin 4 and 5 as soft serial port int a=0x0000,j=0,k=0,count=0; //Read Starting address uint8_t MH,ML; boolean EndFlag=0;

void SendResetCmd(); void SendTakePhotoCmd(); void SendReadDataCmd(); void StopTakePhotoCmd();

void setup() {

 Serial.begin(19200);
 mySerial.begin(38400);

}

void loop() {

    SendResetCmd();
    delay(4000);                               //After reset, wait 2-3 second to send take picture command
     
     SendTakePhotoCmd();
    while(mySerial.available()>0)
     {
       incomingbyte=mySerial.read();
     }   
     byte a[32];
     
     while(!EndFlag)
     {  
        j=0;
        k=0;
        count=0;
        SendReadDataCmd();
        delay(25);
         while(mySerial.available()>0)
         {
              incomingbyte=mySerial.read();
              k++;
              if((k>5)&&(j<32)&&(!EndFlag))
              {
              a[j]=incomingbyte;
              if((a[j-1]==0xFF)&&(a[j]==0xD9))      //Check if the picture is over
              EndFlag=1;                           
              j++;

count++;

              }
         }
        
         for(j=0;j<count;j++)
         {   if(a[j]<0x10)
             Serial.print("0");
             Serial.print(a[j],HEX);
             Serial.print(" ");
         }                                       //Send jpeg picture over the serial port
         Serial.println();
     }      
    while(1);

}

//Send Reset command void SendResetCmd() {

     mySerial.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x26, BYTE);
     mySerial.print(0x00, BYTE);

}

//Send take picture command void SendTakePhotoCmd() {

     mySerial.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x36, BYTE);
     mySerial.print(0x01, BYTE);
     mySerial.print(0x00, BYTE);  

}

//Read data void SendReadDataCmd() {

     MH=a/0x100;
     ML=a%0x100;
     mySerial.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x32, BYTE);
     mySerial.print(0x0c, BYTE);
     mySerial.print(0x00, BYTE); 
     mySerial.print(0x0a, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(MH, BYTE);
     mySerial.print(ML, BYTE);   
     mySerial.print(0x00, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x20, BYTE);
     mySerial.print(0x00, BYTE);  
     mySerial.print(0x0a, BYTE);
     a+=0x20;                            //address increases 32,set according to buffer size

}

void StopTakePhotoCmd() {

     mySerial.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x36, BYTE);
     mySerial.print(0x01, BYTE);
     mySerial.print(0x03, BYTE);        

}

</syntaxhighlight>

FAQ

  • Q: What is the maximum size data that can be read from "Read JPEG file content" - can I read the entire JPEG file in one operation (assuming that the data size read is a multiple of 8 bytes)?
A: Because of the different background, the size of the images are not the same.But you can read the data of image size.Manual inside has this command. You can read the entire JPEG file in one operation
  • Q: The datasheet that was sent to me says that the "Maximum HS-UART Interface BPS" is 921.6kbps and I would like to understand how to reach a higher speed than 115.2kbps.
A: The highest is 115200.
  • Q: Could you please clearly explain how "Stop taking pictures" works and why it is necessary? Does it have to be executed before I can take another picture? What is it's timing information?
A: Send take picture, the camera will have been taking pictures, and middle time interval is very short(can ignore).

Send stop taking pictures reason:

Because I take one picture that the camera image data is stored in the buffer,then immediately take another picture.
But before you take another picture,you must be send the stop taking pictures.Otherwise picture won't update.

Support

If you have questions or other better design ideas, you can go to our forum to discuss or creat a ticket for your issue at linksprite support.

Resources

How to buy

Here to buy on LinkSprite Cart

See Also

Other related products and resources.


Licensing

This documentation is licensed under the Creative Commons Attribution-ShareAlike License 3.0 Source code and libraries are licensed under GPL/LGPL, see source code files for details.