WineShade: Хипстър Stack-Powered гласуване Gizmo за O'Reilly на Strata конференция - 💡 Fix My Ideas

WineShade: Хипстър Stack-Powered гласуване Gizmo за O'Reilly на Strata конференция

WineShade: Хипстър Stack-Powered гласуване Gizmo за O'Reilly на Strata конференция


Автор: Ethan Holmes, 2019

Бях помолен да направя нещо за конференцията O'Reilly Strata, която се проведе в Санта Клара в края на февруари 2012 г. Имахме нужда от някои устройства, за да прихванем гласовете на присъстващите, които участваха в Data Crush: Където вино и данни Среща:

Това ново събитие в Strata ще бъде домакин на дегустации на вино за участниците, чиито данни за обратна връзка ще бъдат компилирани и анализирани, за да се екстраполират тенденциите в поведението и факторите, влияещи върху техните отговори.

На събитието имахме няколко станции с различни видове вино. Това беше основният тест за вкуса, където марките бяха скрити и архитектът на експеримента (Коко) използваше различни методи, за да повлияе на отговорите. След като участниците изпиха виното, те бяха инструктирани да отидат до избирателната станция на WineShade и да натиснат бутона, чийто етикет съответства на виното, което те пиха. Докато експериментът продължи, гласовете ще се изчисляват на централен сървър.

Реших, че най-добрият начин да направя тази система е да заредим куп нови технологии в проекта: MakerBot, XBee, Arduino, Node.js. Вярвам, че това е Аласдар Алан, който е нарекъл това на хипстъка. Вярвам, че това е Алекс Хауърд, който го нарече WineShade. Но между виното и парите на спойката паметта ми е заподозряна!

MakerBot Ако ще направя нещо физическо, знам, че моят MakerBot Thing-O-Matic може да улесни живота ми. Отначало си помислих, че ще използвам MakerBot, за да разпечатам нещо, което да държи бутони и индикатори на място, но реших да отида с малко ядро ​​от пяна за това. Бях решил да използвам абажури като шаси за всяка станция и имах нужда от нещо, за да го затворя. Затова направих една малка кула, която да се издигне над всяка една. В крайна сметка отидох с нещо по-малко от това, което виждате тук.

Arduino Mega Знаех, че ще имам нужда от много I / O, тъй като всяка станция ще има три баграграфа и три бутона (въпреки че използвахме само по две). Не исках да влагам твърде много компоненти в това, тъй като трябваше да ги създам, затова реших да задвижвам барграфите директно от щифтовете на Arduino. За да минимизираме броя на транзисторите, реших да се възползвам от постоянството на зрението и да мултиплексирам барграфа. Написах малка библиотека за LED графиките на Adafruit, за да направя това, и я публикувах в GitHub. Използвам само един цвят, но библиотеката лесно може да бъде разширена, за да се справи с цветовете на двете графики.

Digi's XBee Тези избирателни станции ще бъдат разпръснати навсякъде и се нуждаят от начин да говорят с централен сървър. Имам много опит с модулите на Digi XBee и винаги съм искал да използвам XBee интернет шлюз (XIG) в проект. XIG живее на Digi ConnectPort X и действа като портал между XBee мрежата и уеб сървърите (XIG може да говори и с облака IDigi). Посегнах се на Роб Фалуди, автор на Изграждане на безжични сензорни мрежи, и той уреди да ми вземе заем ConnectPort X2 Industrial и четири XBee Pro модула. Благодаря, Роб (и Диги)! Много ми хареса XIG, че купих ConnectPort X2 Commercial (по-малко RAM от Industrial, но работи добре за мен).

Node.js Ако искам да говоря с XBees в мрежата, по-добре да имат сървър, с който да говорят. Обикновено посещавам PHP или Perl за такива неща, но реших, че съм чул достатъчно за Node.js (приемането на Beagle Bone ме накара наистина да се интересувам от него), за да погледна по-добре. Тя работи чудесно. Щеше да ми отнеме повече време, за да напиша това в PHP (или някой от моите обикновени езици), отколкото за мен да науча Node.js и да го приложим. Веднъж разбрах асинхронната лудост, можех да добавя каквато и да е функция, която ми се струваше в рамките на няколко минути (ОК, така че някои функции се нуждаеха от повече минути от други).

Най-трудната част от изграждането на всяка единица беше свързването на Arduino Mega с всички щифтове на бутоните и LED дисплеите. Реших да вземам един маншон от Adafruit perma-proto, да запоявам няколко дълги мъжки игли и да ги оформя така, че да се включат в двойния ред заглавия на Arduino Mega. Беше някакъв импровизиран защитен щит на Arduino Mega, но той работи. Завъртях всяка нишка на лентовия кабел в отвора за хляб и нагоре, преди да го запомня, което ми даде доста облекчение.

Разработвам документация под формата на хранилище GitHub, което включва кода на Arduino. Това е доста проста система: когато се зареди Arduino, тя изпраща URL адрес над серийния порт, към който е свързан XBee (ще искате да промените сървър низ в ардуиновия източник) и XIG предава това на сървъра и изпраща отговора обратно на Arduino през XBee мрежата. Сървърът е сървър на Node.js, който обработва заявките от Arduino: натиснете бутон и се регистрира глас. При всяко зареждане (и след всяко натискане на бутон), Arduino получава текущото гласуване от сървъра на Node. По този начин Arduino не трябва да съхранява никакво състояние! Има и примитивен потребителски интерфейс (/ dash на сървъра), който ви позволява да преглеждате гласовете и да ги манипулирате или да ги рестартирате, ако е необходимо. Най- index.js Файлът изброява всички манипулатори и съответният код на ръководителя е в requestHandlers.js.

Flick set: WineShade за Strata GitHub репо: bjepson / WineShade



Може Да Се Интересувате

Нов тип 3D принтер в Maker Faire Trondheim

Нов тип 3D принтер в Maker Faire Trondheim


Вземете инструментите си и започнете!

Вземете инструментите си и започнете!


Играчки, трикове и тийзъри - неща, които не можете да направите

Играчки, трикове и тийзъри - неща, които не можете да направите


Роботизирана ръка от части за рециклирани велосипеди

Роботизирана ръка от части за рециклирани велосипеди