GithubHelp home page GithubHelp logo

hmtl / hmtl Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 1.0 976 KB

Libraries for distributed Arduino-based modules

License: MIT License

C 7.82% C++ 54.00% Python 37.88% Shell 0.30%

hmtl's Introduction

HMTL

History

This project was originally started to develop a hardware/software platform for controlling 12V LED strips and 12V powered propane flame effects for a Burning Man art car (Ku, the Heavy Metal Tiki Lounge/God), however the capabilities of this project have now expanded well past that.

Overview

This project contains protocols designed to make it easy to build networked modules which read sensors and can activate various external devices. Currently supported types include:

  • Value (Single-color LEDs, solenoids and ignitors for flame effects)
  • RGB (RGB LEDs and LED strips)
  • Pixels (WS2801 style LEDs, easily expandable to any type supported by the FastLED library)
  • MPR121 (MPR121 capacitive touch sensors)
  • RS485 (RS485 communication, such as ST485 or MAX485 chips)

The configuration for these modules are stored in EEPROM, is loaded during module startup, and make initializes these devices when read.

A general purpose protocol is used to communicate with the devices over any supported hardware layer, which currently includes RS485 for longer-distance two-wire connections and standard serial connections for communication via USB, Bluetooth modules such as Adafruit's Bluefruit EZ-Link, or serial-enabled wireless devices such as XBee radios.

Hardware

While many features of these libraries can be used with generic Arduinos or breadboarded project, several special purpose PCBs have been designed for use with this code:

  • Trigger Module
  • HMTL Controller

Example projects

Getting started

In order to compile these sketches the contents of the Libraries must be linked to from within your Arduino/libaries directory, in addition several dependent libraries must also be installed:

Several additional libraries must be installed to make use of this project:

Python tools

There are python libraries provided for communicating with the modules and several command line utilities:

  • TailArduino.py: Reads from a serial connection and prints to the console
  • HMTLConfig.py: Used to write module configurations (along with the HMTLPythonConfig firmware)
  • HMTLCommandServer.py: Server that connects to a module and forwards commands received over an IP socket
  • HMTLClient.py: Send commands to a command server
  • Scan.py: Send out polling commands via a command server to find all connected modules
  • HMTLWebClient.py: Present a web page to control modules connected to a command server

Configuration

The modules are configured via a JSON file, examples of which can be found in (see examples). To view and upload a modules configuration, load the HMTLPythonConfig sketch on the module. The HMTLConfig.py tool can then be used to view the current configuration and load new configurations onto a module.

Networking

HMTL Module Code

Wiring

4-Pin XLR

Pin Use 4-wire color
1 GND White
2 Data 1/A Black
3 Data 2/B Green
4 VCC (12V) Red

Future work

hmtl's People

Contributors

aphelps avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

aphelps

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.