Pengidentifikasi
Daging Berbasis Sensor RGB TCS 230
By Mr.
Widodo Budiharto

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

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