Software and Electronics
System Overview
The interactive components of the user experience are the sarcophagus exterior, the sarcophagus interior, and the tangible walls. For a verbal description of the role and function of those interactive components, please refer to the storyboard and to the corresponding pages. On this page, I will discuss the system design and implementation. I present a system model for all subsystems, and then I describe the implementation of each subsystem along with pseudocode showing the general behavior of the subsystems and the communication between them. I also discuss how they will be integrated into the final system.
The communication between the two systems will occur either via RF (using NRF24L01) or via BLE (using Feather). The advantage of the latter case is that the microcontroller has Bluetooth low energy support by default without requiring an additional chip. The sarcophagus exterior is the first input to the complete system. Once the sarcophagus challenge is solved, the tactile input to the tangible wall becomes active. Then, once the tangible wall challenge is solved, the result is transmitted to the sarcophagus, and corresponding multimodal output is generated by the sarcophagus. The process repeats 2 more times, until the third level is solved.
Sarcophagus Exterior
The exterior features 9 translucent hieroglyphs, with an LED and diffuser behind each. There are also touch buttons disguised as scarabs. There are also 3 lamps on the lid of the sarcophagus corresponding to the 3 levels of the game – providing feedback to the user on how many levels have been solved and how many remain. Initially, the 9 hieroglyphs are all flashing, but when the 3 buttons are being touched simultaneously, only 3 randomly selected hieroglyphs remain lit for 1 minute. This subsystem also broadcasts a message to the randomly chosen A,B,C for 1 minute when the three buttons have been pressed.
if(btn0==1 && btn1==1 && btn2==1) --> RandomlyAssignABC(); LEDon(A,B,C); Broadcast(A,B,C); Delay1minute()
else() --> BlinkAllLeds(); Broadcast(Null);
if(WallChallengeSolved(1)==true) --> TurnOnLampNumber(1)
Sarcophagus Interior
The electromechanical components inside the sarcophagus are a linear actuator for opening the lid, RGB LED strips for the infinity mirror, a speaker, and a fan. A linear actuator driver, power mosfets, and a class D amplifier will be used in conjunction with a microcontroller for powering and controlling those components. The interactive experience inside the sarcophagus will begin when the interactive wall broadcasts to the sarcophagus that the 3 appropriate hieroglyphs have been touched simultaneously.
If(WallChallengeSolved(1)==true) --> playUnlockingSoundOnce()
If(WallChallengeSolved(2)==true) --> increaseMusicTempo()
If(WallChallengeSolved(3)==true) --> openSarcophagus()
Tangible Walls
There are 9 touch buttons disguised as hieroglyphs on the wall. They correspond to the 9 LEDs on the sarcophagus that are also disguised as hieroglyphs. Initially none of the wall buttons are active. When the users solve the puzzle on the sarcophagus and active 3 arbitrary hieroglyphs on the sarcophagus, the corresponding 3 hieroglyphs on the wall become active. This is achieved by having the tangible wall subsystem listening for a broadcast signal from the sarcophagus. Then, when users press the correct 3 hieroglyphs on the wall, a notification is sent back to the sarcophagus that the wall challenge has been solved.
if(BroadcastIn(A,B,C)==true) --> ActiveWallButtons(A,B,C)
if(btnA==1 && btnB==1 && btnC==1) --> BroadcastOut(“Solved”)
else --> Broadcast(Null)