Jeffrey Cross
Jeffrey Cross

WineShade: Hipster Stack-Powered -äänestys Gizmo O'Reillyn Strata-konferenssille

Minua pyydettiin tekemään jotain O'Reilly Strata -konferenssille, joka pidettiin Santa Clarassa helmikuun 2012 lopussa. Tarvitsimme joitakin laitteita, joilla voitiin äänestää osallistujilta, jotka osallistuivat Coco Krummen Data Crushiin: missä viini ja tiedot Tavata:

Tämä uusi Stratan tapahtuma järjestää viininmaistajaisia ​​niille osallistujille, joiden palautetiedot kootaan ja analysoidaan käyttäytymissuuntausten ja niiden vastauksiin vaikuttavien tekijöiden ekstrapoloimiseksi.

Tilaisuudessa meillä oli useita asemia, joissa oli erilaisia ​​viinejä. Perusmaistutkimus, jossa tuotemerkit oli piilotettu, ja kokeilun arkkitehti (Coco) käyttivät erilaisia ​​menetelmiä vastauksien vaikuttamiseen. Sen jälkeen kun osallistujat joivat viiniä, heille annettiin käskys siirtyä WineShade-äänestysasemalle ja painaa painiketta, jonka etiketti vastasi viiniä, jonka he vain juovat. Kun kokeilu eteni, äänet vastaisivat keskuspalvelimella.

Päätin, että paras tapa tehdä tämä järjestelmä oli lapioida joukko uutta tekniikkaa hankkeeseen: MakerBot, XBee, Arduino, Node.js. Uskon, että se oli Alasdair Allan, joka kopioi tämän hipsteripinoksi. Uskon, että Alex Howard kutsui sen WineShadeksi. Mutta viini- ja juotoshöyryjen välillä muisti on epäilty!

MakerBot Jos aion tehdä jotain fyysistä, tiesin, että MakerBot Thing-O-Matic voisi helpottaa elämääni. Aluksi ajattelin, että käytän MakerBotia tulostamaan jotain pitämällä painikkeita ja indikaattoreita paikallaan, mutta päätin mennä tähän vaahtomuovisydämen kanssa. Olin päättänyt käyttää lampunvarjostimia kullekin asemalle, ja tarvitsin jotain sen katkaisemiseksi. Joten tein pienen tornin, joka pääsi jokaisen päälle. Menin lopulta jotain pienemmällä kuin mitä näette.

Arduino Mega tiesin, että tarvitsen paljon I / O: ta, koska jokaisella asemalla olisi kolme raitaa ja kolme painiketta (vaikka käytimme vain kahta). En halunnut sisällyttää tähän liian monta osaa, koska minun pitäisi rakentaa ne, joten päätin ajaa kaupankäyntiä suoraan Arduino-nastoista. Transistorien määrän minimoimiseksi päätin hyödyntää visioinnin jatkuvuutta ja multipleksoida kaavion. Kirjoitin pienen kirjaston Adafruit-LED-palkkikuvioita varten ja lähetin sen GitHubiin. Käytän vain yhtä väriä, mutta kirjastoa voidaan helposti laajentaa käsittelemään molempia palkkikuvion värejä.

Digi's XBee Nämä äänestysasemat jakautuvat koko paikkaan ja tarvitsivat keinon keskustella keskuspalvelimen kanssa. Minulla on ollut paljon kokemusta Digi XBee -moduuleista, ja olen aina halunnut käyttää XBee Internet Gateway -ohjelmaa (XIG) projektissa. XIG asuu Digi ConnectPort X: ssä ja toimii yhdyskäytävänä XBee-verkon ja verkkopalvelinten välillä (XIG voi puhua myös IDigi-pilviin). Kävin Rob Faludiin, Wireless Wireless Sensor Networksin kirjailijaan, ja hän järjesti lainaa minulle ConnectPort X2 Industrialin ja neljä XBee Pro -moduulia. Kiitos, Rob (ja Digi)! Pidin XIG: stä niin paljon, että ostin ConnectPort X2 Commercialin (vähemmän muistia kuin Industrial, mutta se toimii hyvin minulle).

Node.js Jos aion XBeesin puhua verkkoon, heillä on parempi palvelin puhua. Tavallisesti pääsen PHP: lle tai Perlille tällaista asiaa varten, mutta päätin, että olisin kuullut tarpeeksi Node.jsista (Beagle Bone -yhtiön hyväksyminen sai minut todella kiinnostumaan siitä), että parempaan tarkastelen sitä. Se toimi hyvin. Olisi pitänyt minut enää kirjoittamaan tämän PHP: ssä (tai millä tahansa tavallisella kielelläni) kuin se teki minulle oppiakseen Node.jsia ja toteuttamaan sen. Kun sain pääni asynkronisen hulluuden ympärille, voisin lisätä mitä tahansa ominaisuutta, joka osui mieleeni muutamassa minuutissa (OK, joten jotkin ominaisuudet tarvitsivat enemmän minuutteja kuin muut).

Kunkin yksikön hankalin osa oli yhdistää Arduino Mega kaikki napit ja LED-näytöt. Päätin ottaa Adafruit-perma-proto-leipäkortin, juottaa siihen pitkät urosnastat ja muotoilla ne niin, että ne liitetään Arduino Mega -laitteen kaksoisriviin. Se oli eräänlainen Arduino Mega -häntäsuoja, mutta se toimii. Kierrettiin jokainen nauhakaapelin lanka leipälevyn reikään ja ylös ennen juottamista siihen, mikä antoi minulle melko vähän venymää.

Olen saanut joitakin asiakirjoja GitHub-arkiston muodossa, joka sisältää Arduino-koodin. Se on melko yksinkertainen järjestelmä: kun Arduino käynnistyy, se lähettää URL-osoitteen sarjaporttiin, johon XBee on yhteydessä (haluat muuttaa palvelin merkkijono Arduino-lähteessä) ja XIG välittää tämän palvelimelle ja lähettää vastauksen takaisin Arduinolle XBee-verkon kautta. Palvelin on Node.js-palvelin, joka käsittelee Arduinon pyyntöjä: paina painiketta, ja ääni on rekisteröity. Jokaisella käynnistyksellä (ja jokaisen painikkeen painalluksen jälkeen) Arduino saa nykyisen äänestyksen solmupalvelimesta. Tällä tavoin Arduinon ei tarvitse tallentaa mitään tilaa lainkaan! Palvelimessa on myös primitiivinen käyttöliittymä (/ viiva), jonka avulla voit tarkastella ääntä ja käsitellä niitä tai palauttaa ne tarvittaessa. index.js tiedosto luetteloi kaikki käsittelijät ja vastaava käsittelijän koodi on requestHandlers.js.

Flick-sarja: WineShade for Strata GitHub repo: bjepson / WineShade

Osake

Jättänyt Kommenttia