Pengidentifikasi Daging Berbasis Sensor RGB TCS 230

By Mr. Widodo Budiharto

Image(41).jpg Image(43).jpg

 

 

Saat ini, ramai penjual daging mengoplos  daging sapi dengan daging babi hutan atau babi, tentu hal ini merugikan konsumen.  Alat yang saya buat ini dapat mendeteksi apakah daging  yang akan kita  beli itu daging sapi atau bukan dengan informasi berupa suara menggunakan kit Text to Speech dari Parallax, alat ini tentu berguna bagi instansi terkait.

Kit yang digunakan :

1.       Kit mikrokontroler Basic Stamp 2p

2.       Kit EMIC  Text to Speech  SIP Module dari Parallax

3.       Kit Sensor RGB TCS230 dari Parallax

 

 

 

 


                                                Blok diagram Pengidentifikasi Daging

                                             30006.gif       28302.gif

                                           Gambar EMIC Text To Speech        Gambar Kit Sensor TCS 230

 

Cuplikan Meal.bs2p:

 ' {$STAMP BS2p}

' {$PBASIC 2.5}

' MEAL  IDENTIFIER

' CREATED BY: WIDODO BUDIHARTO

' L2ei.com

' Univ. Bourgogne, France

' Sept, 1th 2007

' I/O Definition

s3 CON 0

s2 CON 1

led CON 2

out CON 3

Tx              PIN     4                       ' connects to Emic SIn

Rx              PIN     5                       ' connects to Emic SOut

Busy            PIN     6                       ' 1 = busy

Rst             PIN     7                       ' low to reset Emic TTS

AOut            PIN     8                       ' audio out from Stamp

 

#SELECT $STAMP

  #CASE BS2, BS2E

    T2400       CON     396

    TmAdj       CON     $100                    ' x 1.0 (note time adjust)

    FrAdj       CON     $100                    ' x 1.0 (note freq adjust)

 

  #CASE BS2SX

    T2400       CON     1021

    TmAdj       CON     $280                    ' x 2.5

    FrAdj       CON     $066                    ' x 0.4

 

  #CASE BS2P

    T2400       CON     1021

    TmAdj       CON     $3C5                    ' x 3.77

    FrAdj       CON     $044                    ' x 0.265

 

  #CASE BS2PE

    T2400       CON     396

    TmAdj       CON     $100

    FrAdj       CON     $0AA                    ' x 0.665

#ENDSELECT

 

Baud            CON     T2400

Yes             CON     1

No              CON     0

' Color

pRED CON  11

pGREEN CON 10

pBLUE CON 9

RED VAR Word

GREEN VAR Word

BLUE VAR Word

' Emic Commands (Hex Mode)

Say             CON     $00                     ' say Engish text

Volume          CON     $01                     ' set volume, 0 - 7

Speed           CON     $02                     ' set speed, 0 - 4

Pitch           CON     $03                     ' set pitch, 0 - 6

AddAbbr         CON     $04                     ' add abbreviation

DelAbbr         CON     $05                     ' delete abbreviation

ListAbbr        CON     $06                     ' list abbreviations

Version         CON     $07                     ' get version

 

cmd             VAR     Byte                    ' menu command

response        VAR     cmd                     ' user response

vol             VAR     Nib                     ' current volume

spd             VAR     Nib                     ' current speed

ptch            VAR     Nib                     ' current pitch

eePntr          VAR     Word                    ' EEPROM pointer

char            VAR     Byte                    ' character from EE

verData         VAR     Byte(4)                 ' version data

' -----[ EEPROM Data ]----------------------------------------

Demo1           DATA    Say, "Cow Meal!", EOM

Demo2           DATA    Say, "Pig Forrest Meal", EOM

Demo3           DATA    Say, "No Match ", EOM

Setup:

  GOSUB Hard_Reset                              ' restore defaults

start:

  HIGH LED

mainLoop:

  GOSUB color

  DEBUG " R ", DEC3 red

  DEBUG " G ", DEC3 green

  DEBUG " B ", DEC3 blue

  DEBUG CR

  PAUSE 10

GOSUB set_volume

  IF red>10 AND RED <25 AND green >8 AND green <25 AND blue >5 AND blue <25   THEN

    GOSUB play_CowMeal

ELSEIF red>25 AND RED <60 AND green >25 AND green <60 AND blue >20   THEN

    GOSUB play_PigForest

ELSE

    GOSUB play_NoMatch

ENDIF

DEBUG CLS,                                    ' display options menu

        "============================", CR,

        "     MEAL IDENTIFIER     ", CR,

        "============================", CR,

        CR,

        "[1] Cow Meal", CR,

        "[2] Pig Forrest Meal", CR, ">> "

 PAUSE 500

GOTO start

END

'ROUTINES

Color:

LOW s2

LOW s3

COUNT out, pRED, RED

HIGH S3

COUNT OUt, pBLUE, BLUE

HIGH S2

COUNT out, pGREEN, GREEN

RETURN

' Reset Emic through serial connection

Soft_Reset:

  GOSUB Check_Busy                              ' wait for busy to release

  SEROUT Tx, Baud, [Reset, EOM]                 ' send soft reset

  GOSUB Wait_OK

  vol = 4                                       ' set pgm vars to defaults

  spd = 2

  ptch = 1

  RETURN

' Check status of Emic TTS module

' -- wait until Busy line released by Emic

Check_Busy:

  PAUSE 1                                       ' allow busy to activate

  DO WHILE (Busy = Yes) : LOOP                  ' wait until not busy

  RETURN

' Wait for okay message

' -- will timeout after 1 second

Wait_OK:

  SERIN Rx, Baud, 1000, TO_Error, [WAIT(OK)]

  RETURN

' Hard reset

' -- good when comm link is lost

 

Hard_Reset:                                     ' reset to default values

  LOW Rst                                       ' pull reset line low

  PAUSE 0                                       ' ~100 uS pause

  INPUT Rst                                     ' let reset float

  GOSUB Wait_OK

  vol = 4                                       ' set pgm vars to defaults

  spd = 2

  ptch = 1

  RETURN

 

 

' Send text string to Emic

' -- put first char of EE string in eePntr

 

Say_String:

  DO

    READ eePntr, char                           ' get char from EEPROM

    SEROUT Tx, Baud, [char]                     ' send it to Emic

    eePntr = eePntr + 1                         ' point to next

  LOOP UNTIL (char = EOM)                       ' stop when EOM found

  RETURN

 

 

' Print text string in DEBUG window

' -- put first char of EE string in eePntr

 

Print_String:

  DO

    READ eePntr, char                           ' get char from EEPROM

    IF (char >= 32) AND (char < 127) THEN       ' print only ASCII chars

      DEBUG char

    ENDIF

    eePntr = eePntr + 1                         ' point to next

  LOOP UNTIL (char = EOM)                       ' stop when EOM found

  RETURN

 

 

' Process time-out error

 

TO_Error:

  DEBUG CLS, "No response from Emic TTS."       ' ruh-roh, Shaggy

  END

Play_CowMeal:

  DEBUG CLS, "Saying: "

 ' GOSUB Print_String

 

eePntr =demo1

  GOSUB Print_String

  eePntr  =demo1

  GOSUB Say_String

  GOSUB Check_Busy

  PAUSE 500

  GOTO start

 

Play_PigForest:

 DEBUG CLS, "Saying: "

 ' GOSUB Print_String

 

eePntr =demo2

  GOSUB Print_String

  eePntr  =demo2

  GOSUB Say_String

  GOSUB Check_Busy

  PAUSE 500

  GOTO start

 

 Play_NoMatch:

 DEBUG CLS, "Saying: "

 ' GOSUB Print_String

eePntr =demo3

  GOSUB Print_String

  eePntr  =demo3

  GOSUB Say_String

  GOSUB Check_Busy

  PAUSE 500

  GOTO start

Set_Volume:

                         ' get single-digit input

                         ' validate

  SEROUT TX, Baud, [Volume, 7, EOM]      ' send to Emic

  GOSUB Wait_OK

  RETURN

 

  GOTO start

 

Miliki kit ini hanya 2.3 jt rupiah.

 

Referensi:

1.      www.parallax.com