Difference between revisions of "Bullroarers"

From Robert-Depot
Jump to: navigation, search
(Sending)
(Sending)
Line 22: Line 22:
  
 
==Sending==
 
==Sending==
Each node can send 4 messages:  
+
Each node can send 4 messages to the host computer. These messages are tagged with the number of the node they are coming from. Examples below come from node 1:  
 
*''/br/1/range'', integer (0-1024)
 
*''/br/1/range'', integer (0-1024)
 
**Current analog sensor reading from ultrasonic rangefinder between 0-1024. 0 would be a minimum in close to the sensor, 1024 would be a max distance away from the sensor.
 
**Current analog sensor reading from ultrasonic rangefinder between 0-1024. 0 would be a minimum in close to the sensor, 1024 would be a max distance away from the sensor.

Revision as of 08:58, 10 September 2014

<<< back to Wiki Home

Overview

This page documents technical details of the control system for the Ann Hamilton's bullroarer piece at the Henry Art Gallery. Prepared October 2014.

Hardware

  • Arduino nano
  • relay module
  • ethernet module
  • ultrasonic rangefinder

Networking Scheme

The 21 bullroarer nodes are hooked up in a simple closed network with a single host computer. Each node has a unique IP address, as does the host. I am using the UIPEthernet library for networking.

  • Node Addresses: 192.168.3.1 - 192.168.3.21
  • Host Address: 192.168.3.100

OSC Messaging

The bullroarer nodes use Open Sound Control to communicate with the host computer. You can find an introduction to Open Sound Control here. The OSC messages are addressed differently to each node. They start with a base address of /br/ followed by the node's number, 1-21. For the examples below I am using the base address for node 1, /br/1/

The bullroarer firmware uses the OSCuino library for Arduino and Embedded Processors to do OSC messaging.

Sending

Each node can send 4 messages to the host computer. These messages are tagged with the number of the node they are coming from. Examples below come from node 1:

  • /br/1/range, integer (0-1024)
    • Current analog sensor reading from ultrasonic rangefinder between 0-1024. 0 would be a minimum in close to the sensor, 1024 would be a max distance away from the sensor.
    • Sent every 200 ms (so 5 Hz refresh rate).
  • /br/1/limit, integer (0 or 1)
    • State of limit switch.
    • Sent when button is pressed or released. Switches are active low, so the value is 0 (LOW) when the button is pressed, 1 (HIGH) when the button is released.
  • /br/1/relay, integer (0 or 1)
    • State of motor control relay.
    • Sent when relay state changes. Relays are active low, so a value of 0 (LOW) means the relay is on, 1 (HIGH) means the relay is off.
  • /br/1/config, integer, integer, integer.
    • Sent when requested.
    • First value is auto mode, (0 for "off", 1 for "on").
    • Second value is max range (0 - 1024). This is a threshold value for the lower limit of bullroarer travel. When in auto mode, a sensor reading larger than this value will trigger the relay to turn the motor back on and raise the bullroarer.
    • Third value is cycle timeout, (0 - max long int). Sets the amount of time the bullroarer waits at bottom before starting motor, the "rest time". Only works when in auto mode.

Receiving

They can receive 6 messages:

  • /br/1/relay, integer (0 or 1)
    • Turns relay on or off.
    • Relays are active low, so a value of 0 (LOW) means the relay is on, 1 (HIGH) means the relay is off.

Configuration messages. The following three messages change run-time behavior of a node in automatic mode:

  • /br/1/auto, integer (0 or 1)
    • Sets automatic mode. 0 for "off", 1 for "on".
  • /br/1/max, integer (0 - 1024)
    • Sets the threshold value for the lower limit of bullroarer travel. When in auto mode, a sensor reading larger than this value will trigger the relay to turn the motor back on and raise the bullroarer.
  • /br/1/timeout, long integer, 0- max long int.
    • Sets the amount of time the bullroarer waits at bottom before starting motor, the "rest time". Only works when in auto mode.
  • /br/1/write, integer (0 or 1)
    • Writes the current runtime configuration (auto, max, and timeout) to the bullroarer's EEPROM. This will save the current settings for next startup. Otherwise they are lost.
  • /br/1/config, integer (0 or 1)
    • Sends the current runtime configuration for the bullroarer to the host computer.