Introduction: Controlling MedeaWiz Sprite
The MedeaWiz Sprite ( http://www.medeawiz.com/ ) is a very small electronic device that plays videos. The videos for the Sprite can be located either on a USB flash/thumb drive or on an SD card. The Sprite will play one video by default in a loop. Other videos located on the flash device can be selected and played using the Sprite remote control.
The Sensor.Engine MICRO is a small programmable controller board meant to interface to sensors and control various modules. The SEM can be used as a STEM learning device. Excellent to use with a collection of 37+ sensors!
Purchased from CircuitGizmos
Sensor.Engine MICRO (SEM) Rev 4
The heart of the SEM is a 32 bit microcontroller with an integrated advanced program interpreter. The language that SEM uses is a modern version of BASIC. Unlike past versions of the language, this new BASIC is structured. It supports subroutines and doesn't need line numbers. It is the perfect language for the SEM. It is easy to learn, and yet still powerful. It has support for the input and output control that the SEM needs.
The SEM has I/O lines along the top edge of the PCB for connection to various circuits. The SEM can be used with a solderless printed circuit board for prototyping. The SEM can also be used with other electrical connection methods to interface to modules, devices, and circuits.
Step 1: Triggering Videos
The Sprite can also be triggered by a button contact (or an equivalent "dry contact" circuit) to play a specific video file. The instructions that come with the Sprite (the manual can be downloaded before purchase) show how a button can be used to trigger the Sprite to play a video file. The instructions also show how a Programmable Logic Controller (PLC) or a PIR motion sensor can be connected directly to the Sprite to trigger video playback.
This triggering allows for a button or a device with a dry-contact output to trigger a single file. More complex triggering could be accomplished by using the Sensor.Engine MICRO to evaluate a single or multiple conditions based on sensor input, or scheduled time. The SEM will connect to the Sprite via the Sprite's I/O port and use serial commands to control the Sprite.
Step 2: Triggering From the Sensor.Engine:MICRO
The Sprite I/O port provides a ground connection as well as +5V (100mA) that can be used to power the SEM. Serial control of the Sprite from the SEM is accomplished using the Tx and Rx serial lines. The connections for the I/O port are provided in the Sprite manual and shown here.
In the diagram above the rectangle named "Microprocessor" will be the Sensor.Engine MICRO. The SEM is connected to the Sprite with a small custom cable. The black wire is ground reference, the red wire provides 5V to power the SEM. (Disconnected during development as the USB connection provides 5V.)
The blue and green wires are serial communication. For this code the data received from the Sprite is not used.
Step 3: The Program
The example program is rather simple: Scroll through a set of numbers ( 0 to 10 ) and when selected, play the file associated with the number.
'Sprite Controller * 4 line program description appears in file selector
' * up to the 21st character after the single appostrophe. ' * ' * '---------------------*
OPTION EXPLICIT OPTION DEFAULT NONE OPTION AUTORUN ON
'==================================================== 'Setup Code 'The setup code runs once when you start this program '====================================================
'S.E:MICRO button interrupts and states 'Common to the SEM apps, etc. SETPIN 7, INTL, semRedBtnInt, PULLUP SETPIN 24, INTL, semYelBtnInt, PULLUP SETPIN 26, INTL, semGrnBtnInt, PULLUP DIM semRedBtn AS INTEGER 'Button States DIM semYelBtn AS INTEGER DIM semGrnBtn AS INTEGER semRedBtn = 0 semYelBtn = 0 semGrnBtn = 0
DIM FileNum AS INTEGER DIM FileNumLimit AS INTEGER FileNum = 0 FileNumLimit = 10
Text 0,0, "Sprite Controller",,3,1 TEXT 64,12, " "+STR$(FileNum)+" ",C,2,2 TEXT 0,57, "Back Frwd Select",,3
IF semRedBtn > 1 THEN semRedBtn = 0 CLS FileNum = FileNum - 1 IF FileNum < 0 THEN FileNum = FileNumLimit Text 0,0, "Sprite Controller",,3,1 TEXT 64,12, " "+STR$(FileNum)+" ",C,2,2 TEXT 0,57, "Back Frwd Select",,3 ENDIF
IF semYelBtn > 1 THEN semYelBtn = 0 CLS FileNum = FileNum + 1 IF FileNum > FileNumLimit THEN FileNum = 0 Text 0,0, "Sprite Controller",,3,1 TEXT 64,12, " "+STR$(FileNum)+" ",C,2,2 TEXT 0,57, "Back Frwd Select",,3 ENDIF
IF semGrnBtn > 1 THEN semGrnBtn = 0 OPEN "COM1:9600" as #1 PRINT #1, CHR$(FileNum); CLOSE #1 ENDIF LOOP
'===================================================== 'S.E:MICRO Button Interrupt Subroutines 'Common to the SEM apps, etc. '=====================================================
'Red/Yellow/Green button interrupt routines ' Standard SEM button routines. ' Testing semRedBtn > 1 for button press, > x for long button press
SUB semRedBtnInt semRedBtn = 1 DO : PAUSE(5) : semRedBtn = semRedBtn + 5 : LOOP WHILE PIN(7) = 0 PAUSE(20) END SUB
SUB semYelBtnInt semYelBtn = 1 DO : PAUSE(5) : semYelBtn = semYelBtn + 5 : LOOP WHILE PIN(24) = 0 PAUSE(20) END SUB
SUB semGrnBtnInt semGrnBtn = 1 DO : PAUSE(5) : semGrnBtn = semGrnBtn + 5 : LOOP WHILE PIN(26) = 0 PAUSE(20) END SUB
Step 4: Simple Operation
The large centered number on the display shows which file is being played, or was last selected.
The red button decrements the file number. The yellow button increments the file number.
The green button selects/plays the numbered file.