Blog - Sketching with Hardware

Team 2 – Priapos

Published on: | Author: Katharina Hauser | Categories: 2016b

Priapos, a project built and developed by Michèle Heinemann and Katharina Hauser

Priapos_Poster

Priapos, the god of fertility has come to earth. He put his soul into a scarecrow to test those who dare to be tested. Three challenges shall be mastered by a chosen one who will be rewarded hence all these challenges have been completed successfully…

The hero has to prove his qualities in three different disciplines: wisdom, agility, and logic.

The wisdom challenge provides a riddle where the chosen one has to prove himself cunning. If he fails, Priapos will punish him and appear in fiery red.  Otherwise Priapos will be well disposed to the hero and offer him the second challenge. Within the agility challenge the chosen one’s concentration and alertness are tested. Priapos is showing the hero a sequence of lights by blinking with his eyes. The sequence consists of long and short blinks which should be remembered by the chosen one. After that Priapos is waiting for the hero to reproduce the sequence by lifting Priapos’s hat in the correct rhythm of the previously shown sequence. Priapos is attentive. Every false move is noticed and immediately punished. Priapos’s eyes begin to fade in fearsome red and the hero is forced to start over again. Only if the whole sequence is imitated correctly, Priapos will be pleased. Then, Priapos will allow the chosen one to confront the final challenge: Logic. Priapos starts moving his arm up and down. As if he tries to shake something off? The raven! Of course the function of a scarecrow is to frighten off birds. Thus, the hero moves forward and removes the bird sitting on Priapos’s shoulder. Success! Priapos’s eyes start shining pleasantly in a bright green colour. One of his arms is lowered and his head is turning in the direction of the arm still lifted. The victorious is shown the way to another quest and is given the opportunity to master other riddles and challenges to become the quiz master.

 

Music taken from: https://de.audiocrowd.net/kostenlose-gemafreie-musik

 

Concept of Priapos

When we were told the topic of this course would be an outdoor scavenger hunt, one of the first ideas that came to our mind was to create a scarecrow. The scarecrow should turn into a signpost after completing all challenges. We felt the urge to do something creepy and mean. So the role model for our Priapos was the scarecrow of the film “Jeepers Creepers” and that of the series “Supernatural”.  But how can we combine a terrifying scarecrow with riddles? Right at the beginning we agreed on having a hat and a raven for our scarecrow. So our first riddle became a classic saying that should lead to one of the two removable objects on Priapos.

“Sometimes I’m big, sometimes I’m small,
Play my role in books and films,
I’m liked by young and old,
From time to time I’m wearing a decorative coat.”

It wasn’t easy to find a saying that could mean both, bird and hat, so we chose to write our own saying which wasn’t so obvious and professional either (especially in English it sounds a bit clumsy ;)).

The ideas for our second and third challenges, the remembering and reproducing of the light sequence and the arm trying to shake off the bird, came up while we were building our scarecrow. Further information on these ones is given in the section “Technical Details”.

 

Realization of Priapos

We started our project on the 27th of July and had time until the second of August to finish it. In the following we describe how we have experienced these days and how we have built Priapos bit by bit.

After we had discussed our concept with Bernhard, the leader of the course, on Tuesday, we did some brainstorming which materials could be used to create an outdoor scarecrow. This evening we rifled through our cellars and attics and collected useful stuff for Wednesday like an old t-shirt and a pillow and various other useful things. We even asked some relatives to cut wood from their garden and if they had a jute bag.

On Wednesday morning our working table was already full with stuff and it became clear that this was going to be a messy week. Getting started we made our concept of Priapos. We drew some sketches and designed the appearance of our scarecrow.  Later on we already started doing some handicraft work like sewing the trousers and building the hat.

sketches_Priapos hat_and_trouser_Priapos

On Thursday we started doing some crazy LED stuff. We soldered the LEDs together, created a head on which we stuck the LEDs and yes: we broke our first Arduino. (Which of course wasn’t our fault… 😛 We were testing the electronic components on correct behaviour when a servo had problems turning properly. After a while the Arduino heated and a short circuit occurred. All lights on the Arduino went out 🙁 we were very sad to lose our Arduino Mega but the Arduino Uno we got was sufficient for our project. ;)) In the afternoon we designed the head of Priapos and covered it with a mask we’ve cut out of a jute bag and an old black pillowcase.

led_breadboard_Priapos mask_Priapos mask_Priapos_2

On Friday we started programming the second challenge, folded a raven out of paper and attached the servo motors to our scarecrow so that the head and arm would be able to move. Our scarecrow was slowly taking form. We gave it two legs and arms but there were still so many things left to do. We were starting to realize that there would be a weekend shift necessary to finish our project in time.

body_incomplete_Priapos

On the weekend we did a lot of programming stuff which came short previously and painted a poster of our Priapos. The agility challenge was extended to include the corresponding eye colours when lifting the hat and the program was optimized concerning fault tolerance. Moreover, the transitions between the challenges have been developed and tested.

On Monday we assembled Priapos body parts to a whole corpus. It took at least four hours and two sticks of hot-melt adhesive to mount the head on Priapos shoulders. Yet still we feared the head would fall off the body again. This was the beginning of a series of experiments. We made different approaches to stable the head and still leave enough tolerance to allow the head to turn freely. But after a long day, project Priapos seemed nearly completed. We tested all the electronic components separately. After that, the final Arduino program containing all functionalities was processed and the cooperation of all electronic components was assured.

Michele_with_Priapos

On Tuesday, the final working day and the day of presentation, we made up our first riddle. On self-produced paper we rhymed a saying and attached it to Priapos’s scarf. Moreover, we hid a message under the scarecrow’s hat for those who successfully solved the first challenge which contains instructions about the second challenge. Finally we made it. Project Priapos was completed!

saying_Priapos hidden_message_Priapos endproduct_Priapos

 

Technical Details

Building instructions

The following materials were used to build the scarecrow:

  • A long stick where the body can be attached to
  • Two short sticks for the legs
  • Foam material for the two arms
  • A clothes hanger for the shoulders
  • Trousers (we sewed our own one made of jute bag)
  • An old black t-shirt
  • A huge black rubbish bag for the coat
  • A metallic present box
  • Wool for the hair
  • A plastic bag filled with wadding or something comparable
  • A black pillow cushion or black cloth for covering the plastic bag of the head
  • A jute bag for creating a frightening mask
  • Some more wadding for stuffing the body and legs
  • A few pieces of foam material for the stabilization of the head

Moreover: Lots of tape, two to three sticks of hot-melt adhesive, and fixing pins for keeping the corpus together.

Additionally the following electronic components were needed:

  • Two servo motors (one for moving the arm, the other for turning the head)
  • Two pieces of an LED stripe (for the eyes, we used a RGB-WS2812)
  • An Arduino Uno
  • A breadboard
  • Copper tape
  • Lots of cables in plenty of colours 😉 have a look at our circuit to see how we used them

Since everybody knows what a scarecrow looks like, we will not go into detail in how we assembled the previously listed materials. Yet, we will explain how we installed the electronics with the body parts of our scarecrow and give an overview on how we implemented the challenges and movements of Priapos.

The Head of Priapos

The head plays a major rule throughout all the challenges. It is not only used to show the sequence of lights in the agility challenge but also to signal the player in which state of the game he currently is. This is done using different eye colours that change from red at the beginning to orange after the first challenge was finished successfully. Then the colour will change again from orange to yellow after the second challenge was completed, and from yellow to green after all challenges were mastered. At this particular time Priapos will also turn his head in the direction of the next riddle of our Sketching with Hardware course. Moreover the eyes are used to point out error situations.

For the eyes we used two pieces of RGB-WS2812 LED stripe. We soldered them together and attached them to the plastic bag. The blinking of the eyes and the changing of the eye colours was implemented using the “Adafruit NeoPixel” library. To enable interaction using the hat we needed the possibility to measure if current was circulating or not. Therefore we used steel wool we adhered to the head. It is important that the steel wool is not connected with each other, otherwise current flows permanently. We lay a cable from both steel wools through the inside of the head which would later be cable-connected. To establish a circuit the hat was pasted up with copper tape underside. If the hat is placed on the head the current flow is bridged by the copper tape of the hat which connects the two steel wools on the head.

head_with_leds_Priapos head_with_contacts_Priapos

The turning of the head was quite tricky. It was not only difficult to mount the big head on the tiny servo top but also preventing the head to fall off when the servo motor was turning. The attachment of the head was accomplished using a self-build collar made of paperboard. We stuffed lots of cloth and foam material into the collar and used hot-melt adhesive to fix it. Because all our cables were lead through the interior of the head we left a small tunnel in the collar for the cables and made sure they could move flexibly. After that we put the collar with the head upon the servo motor which was attached to the clothes hanger. Then we tested if the servo motor movement with the head was possible. It was totally awful. The head was moving much too fast and threatened to fall off with every turn. We feared that this feature was not going to work properly every time we used it. On the one head the weight of the head sometimes hindered itself from being turned the full 90 degrees and on the other hand the head might topple over to the front completely and the cables could be torn apart. Imagine you have a plate and a straw and you try to balance the plate on that straw. Now the straw is glued to the plate and the straw is put into a long stable glass. What happens if the plate is moved? Maybe this helps to understand our problem. 😉

Luckily, two creative and clever girls never give up. We found a workaround that not only prevented our scarecrow’s head from falling off but also stabled it and enabled a smooth slow turning of our head. We used foam material which was flexible and stuck it on Priapos’s collar. You can see it on the picture below. Later on we clad the “throat” with black rubbish bag.

servo_top_Priapos unmounted_head_Priapos collar_Priapos

The Arm Shaking off the Bird

This feature actually went quite well for us. We attached the servo motor to the clothes hanger with tape and fastened the arm made of foam material on the top of the servo motor. Then we tested the movement of the arm with our Arduino program. Because we implemented the downwards movement as well as the upwards movement separately, a smooth motion was accomplished. If only one way is implemented the Arduino will automatically return to the servo motor’s start position in the while loop which will lead to a jerking.

We implemented this feature for multiple reasons. The first reason was to lower the arm and let our scarecrow become a signpost. The second reason was the logic challenge: the arm that tries to shake off the bird. The bird was mounted on a peg which was pasted with copper tape on the inside of the peg. On a small part of the clothes hanger we also attached two disjoint pieces of copper tape with one cable soldered to each of them. When the peg with the bird is plugged on these parts, a circuit is established. If the bird is taken, the circuit is interrupted and the arm stops moving.

arm_servo_Priapos

The heart of Priapos

The heart of Priapos is a metallic box which was pasted up with tape to prevent the electronics from a short circuit. All cables lead like veins to the heart of Priapos. In this box all the cables are cable-connected to either the Arduino or the breadboard. The power supply is given through a power bank. From the Arduino a red cable with five volt and a black cable for ground are plugged into the breadboard’s plus and minus pole. The breadboard operates as a distributor, thus all the other cables for ground and power supply are plugged into the breadboard.

heart_of_Priapos

As illustrated in the connection scheme, there is a black cable used for every electronic component in the circuit. Yet for every digital pin another colour is used to enable the differentiation of the components. The following table gives an overview of the electronic components used, their cable colour in the circuit graphics, the kind of pin and pin number the cables are plugged into (according to the code provided below), and a short description for which purpose they are needed.

circuit_Priapos2

electronic_component_table_Priapos

 

Priapos coming alive

Our Arduino program breathes life into Priapos. Below some interesting details are given concerning the implementation of Priapos.

For the hat and the bird a pull up resistor is configured for the corresponding ports in the Arduino program. This is needed to enable voltage measurements to determine whether a circuit is closed or not. The voltage level at the Arduino pin is LOW when the contacts are bridged e.g. when the hat is placed on the head. Otherwise the voltage level is HIGH.

This fact is very important for us because we need to register whether the bird or the hat has been taken off. During the first challenge we watch out for both events: The voltage level at the hat pin or the bird pin going HIGH. If the bird was lifted, an error signal is shown using Priapos’s eyes. Otherwise, the first challenge is completed and the scarecrow’s eye colour changes to orange.

In the agility challenge the hat must be put up and down in a certain time interval. We realized the procedure with seven while loops. In each while loop it is checked whether the hat has been lifted, thus if the voltage level at the hat pin is HIGH. Then the start time is measured which is the current time in milliseconds the program is already running. The LEDs are set in the same colour as those of the corresponding blink colours in the light sequence. Then an interior while condition is waiting to be fulfilled. The outer while loop is repeated until the hat is replaced on the head, thus the hat pin is LOW again. Now the current time is taken and a time interval is calculated with “time interval = current time – start time”. Then it is checked whether the player was in the correct rhythm of the previously shown light sequence. A tolerance value is introduced to ignore slack joints and thus to make sure that the movements came from a human being. So if the time interval is greater than the tolerance value and smaller than the time given by the sequence, the LEDs are set to black and the next while loop waiting for user input is activated. Else if the time interval was greater than the duration of the lights shown in the sequence, the LEDs are set to black and the error signal is performed. The user has to start from the beginning which means the light sequence is shown again and after that it is waited for user input.

There are two different kinds of blinks: short blinks and long blinks. In the description given above we pointed out the conditions for the short blinks. The long blinks work similarly except that the time interval the hat was lifted should be greater than 1.5 seconds.

Summing up it can be said that our code is executed sequentially. After finishing a challenge the next challenge is processed. If a wrong user input occurs the error signal is shown and the challenge is restarted. Only after all challenges have been solved correctly the “riddle” can start from the beginning. Thus, there is no opportunity to solve the challenges in an arbitrary order.

We hope you enjoyed getting to know our project. If you are interested in copying it, go for it! 🙂

The project source code can be checked out on github:
https://github.com/PriaposProduction/Priapos

 

 

linked categories 2016b

|

Write a comment

Comment