Caixa de votação móvel
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 3 |
Aplicativos e serviços online
| ||||
|
Sobre este projeto
Antecedentes
Estou fascinado pela forma como cada um de nós processa informações de maneira diferente e chega a conclusões. Estou igualmente fascinado por como a pressão dos colegas e o pensamento de grupo influenciam ou mudam completamente a resposta de uma pessoa.
Então eu me perguntei, e se eu pudesse construir uma máquina que me desse a capacidade de fazer perguntas a grupos de multidões anônimas e aleatórias? Precisaria ser não intimidante (simples) e em um ambiente livre de pressão de grupo ou outras influências externas.
Este projeto é meu MVP para o desafio, eu o chamo de Mobile Vote Box. Para minha primeira experiência, fiz uma pergunta simples, mas que invocava paixão.
Coloquei a Caixa de votação móvel em lugares aleatórios em Chicago e Las Vegas. Você pode ver as respostas de todos aqui.
O Mobile Vote Box funciona com bateria e transmite cada voto por celular, tornando-o extremamente fácil de configurar e esquecer. As peças custam cerca de US $ 50, mas podem ser construídas por um preço tão baixo quanto US $ 6 se você comprou tudo por meio do AliExpress.
A conectividade celular é gratuita no Hologram.io. O Plano de Desenvolvimento deles me permite obter um cartão SIM global gratuito mais 1 MB de dados gratuitos por mês (o que equivale a cerca de 2.000 pacotes de dados de votos gratuitos por mês). Peça seu SIM de desenvolvedor grátis hoje, use o código promocional BUDS-WITH-BENSTR para frete grátis e alguns $$ de crédito.
** Divulgação completa:eu trabalho para a Hologram, então você me verá fazer um monte de tuts IoT com base na conectividade de celular. **
Seria incrível repetir a ideia e, eventualmente, chegar a um design robusto o suficiente para que pudéssemos ter algumas centenas de caixas de votação móveis em todo o mundo, fazendo ao mundo uma nova pergunta todos os dias e tornando os dados disponíveis publicamente.
Como construiremos a caixa de votação móvel
De um alto nível, trabalharemos para trás - começando da saída, trabalhando nosso caminho até a entrada.
- Primeiro, faremos um miniaplicativo IFTTT para inserir dados em uma planilha do Google.
- Em seguida, ativaremos nosso SIM, configuraremos nossa rota de dados e verificaremos com dados simulados.
- Por último, conectaremos nosso hardware e faremos o flash do dispositivo.
- Agora faça uma pergunta intrigante e coloque a caixa em um lugar público.
Compreender para onde os dados estão indo.
Cada vez que um voto é registrado, nosso dispositivo envia uma string de dados para o roteador de dados do holograma. O Data Router infla / manipula a String em um objeto JSON e a envia para um IFTTT Webhook. O IFTTT anexa cada voto a uma planilha do Google.
À primeira vista pode parecer excessivo, mas cada elemento desempenha um papel único e importante.
- Armazenamento de dados de holograma é usado porque faz um ótimo trabalho abstraindo a complexidade do envio de dados de um módulo SIMCom para a nuvem.
- Roteador de dados com holograma é usado porque faz um ótimo trabalho ao manipular meus dados String mínimos para o formato JSON que o IFTTT requer. Também me dá a liberdade de adicionar outras integrações sem precisar modificar o código do meu dispositivo.
- IFTTT é usado porque é incrível para abstrair integrações complexas com outras nuvens, em nosso caso, o Planilhas Google.
- Planilhas Google é usado apenas porque.
1. IFTTT
- Vá para IFTTT, faça login ou crie uma conta
- Crie um novo miniaplicativo
- 1 de 6:Selecione o Webhook serviço
- 2 de 6:Selecione Receber uma solicitação da web acionar, nomeie o evento " votar "e crie o gatilho.
- 3 de 6:Selecione o Google Drive serviço
- 4 de 6:Escolha a ação Adicionar linha à planilha
- 5 de 6:Preencha os campos de ação, verifique a imagem abaixo (se você ignorar isso, tudo ainda funcionará bem).
- 6 de 6:Concluir miniaplicativo!
- IMPORTANTE - Copie sua chave de webhook (última parte do URL). Encontre sua chave de webhook IFTTT exclusiva aqui:https://ifttt.com/services/maker_webhooks/settings
2. Holograma
Crie um novo dispositivo
- Vá para Hologram.io, faça login ou crie uma conta
- Ative seu SIM ou selecione um dispositivo existente
- Observação:ativar um novo SIM criará automaticamente um novo dispositivo
- Nomeie o dispositivo como quiser, talvez Vote Btn # 1
Crie uma nova rota de dados
- No painel de navegação esquerdo, selecione Rotas e adicione uma nova rota
- IN:insira o tópico " votar "
- OUT:selecione IFTTT Maker Webhook
- Chave de webhook:cole sua chave de webhook IFTTT neste campo (última etapa nas instruções de IFTTT acima)
- Evento:votação
- Dados:
{"value1":"Pizza:Chicago ou New York Style?", "value2":"<
>"}
- Criar rota
3. Teste de rota e webhook
- Vá para Dispositivos> selecione seu dispositivo> Mensagens> Simular do dispositivo
- Envie dados chicago para o tópico votar
- O console do holograma deve aparecer e mostrar uma rota bem-sucedida
- Se você for ao Google Drive e abrir a planilha, uma nova entrada deve aparecer.
- Se você tiver algum erro ou os dados não chegarem, revise os detalhes acima.
- Se você não conseguir fazer funcionar, peça ajuda em https://community.hologram.io
4. Hardware
- Obtenha a chave do dispositivo do roteador de dados no painel do holograma.
- Dispositivos> selecione o dispositivo> Configurar> Mostrar credenciais CSR
- Verifique o esquema e o código do esboço abaixo.
- Certifique-se de substituir a chave do dispositivo na variável global.
Aproveitar!
Código
- Código Arduino do Mobile Vote Box - v1
Código Arduino do Mobile Vote Box - v1 C / C ++
Você precisará adicionar manualmente a biblioteca HologramSIMCOM ao seu Arduino IDE - https://github.com/hologram-io/hologram-SIMCOM#include#define RX_PIN 2 // SIMCom RX - MCU TX # define TX_PIN 3 // SIMCom TX - MCU RX # define RESET_PIN 4 // SIMCom reset # define HOLO_KEY "#########" // substitua com sua chave SIM # define CONNECT_LED 12 # define VOTE1_BTN_PIN 6 # define VOTE1_LED_PIN 7 # define VOTE2_BTN_PIN 9 # define VOTE2_LED_PIN 10HologramSIMCOM Holograma (TX_PIN, RX_PIN, RESET_PIN, HOLO_KEY); // Instancia HologramString VOTE1_VALUE ="chicago"; String VOTE2_VALUE ="newYork"; String HOLOGRAM_TOPIC ="vote"; void setup () {Serial.begin (19200); while (! Serial); // Inicie o modem e conecte-se à rede global do Hologram Hologram.debug (); // definir modos para pinos usados pinMode (CONNECT_LED, OUTPUT); pinMode (VOTE1_BTN_PIN, INPUT); pinMode (VOTE1_LED_PIN, OUTPUT); pinMode (VOTE2_BTN_PIN, INPUT); pinMode (VOTE2_LED_PIN, OUTPUT); bool cellConnected =Hologram.begin (19200, 8888); // define baud para 19200 e inicia o servidor na porta 8888 if (cellConnected) {digitalWrite (CONNECT_LED, HIGH); }} void loop () {Hologram.debug (); if (digitalRead (VOTE1_BTN_PIN) ==HIGH) {sendVote (VOTE1_VALUE, VOTE1_LED_PIN); } if (digitalRead (VOTE2_BTN_PIN) ==HIGH) {sendVote (VOTE2_VALUE, VOTE2_LED_PIN); }} void sendVote (String VOTE_VALUE, const int VOTE_LED) {digitalWrite (VOTE_LED, HIGH); // enviar para o roteador de dados de holograma if (Hologram.send (VOTE_VALUE, HOLOGRAM_TOPIC)) {// LED piscante se a votação for bem-sucedida // este é um código ruim, considere refatorar digitalWrite (VOTE_LED, LOW); atraso (100); digitalWrite (VOTE_LED, HIGH); atraso (100); digitalWrite (VOTE_LED, LOW); atraso (100); digitalWrite (VOTE_LED, HIGH); atraso (100); digitalWrite (VOTE_LED, LOW); } else {digitalWrite (VOTE_LED, LOW); }}
Esquemas
Processo de manufatura