Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Cajado ambulante dos assistentes

Componentes e suprimentos

Arduino 101
× 1
Regulador de tensão Pololu de $ 4
× 1
3 porta-pilhas AA com interruptor
× 1
Baterias AA
Qualquer tipo está bem. Você precisa de 3.
× 1
Adaptador M Barrel Jack
$ 1,95 Facilitam a conexão e desconexão da energia
× 1
Adaptador F Barrel Jack
$ 1,95 Facilitam a conexão e desconexão da energia
× 1
Faixa LED endereçável
O exemplo foi escrito para qualquer LED compatível com NeoPixel, faixa de 60 pixels.
× 1
Sports Tape
Qualquer tipo de fita de tecido. Isso é usado para segurar os componentes eletrônicos da equipe e dar uma boa pegada.
× 1
Bandas de borracha
Para ajudar a manter as peças no lugar na equipe até que você possa usar fita.
× 1
Uma equipe. (cabo de vassoura, cano de irrigação, bengala natural, etc.)
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Este projeto usa o Arduino 101, uma bateria e uma faixa de LED para fazer uma equipe ambulante do assistente controlada por gestos. Definiremos três "feitiços" de exibição de luz diferentes que você pode invocar movendo o bastão em um dos três gestos.





Tecnologia:


O código usa a unidade de medição inercial no Arduino 101 para ler as forças G, mas não usa o mecanismo de correspondência de padrões (para um exemplo usando o PME, verifique o projeto PME de Kitty Yeung). Em vez disso, este código conta impulsos rápidos nas direções X, Y e Z e invoca feitiços quando você executa uma certa combinação em um curto período de tempo.





Lançando feitiços:


Dois toques verticais rápidos iniciam um feitiço, então você pode mover o cajado bruscamente para frente, esquerda / direita, ou tocar uma terceira vez para selecionar um dos três feitiços, então um toque final lança o feitiço.





Feedback visual:


Para ajudá-lo a entender onde você está em seu gesto, o código de exemplo inclui feedback visual da faixa de LED. Quando você executa um toque duplo pela primeira vez, as luzes piscarão rapidamente em branco, informando que um feitiço foi iniciado. Você receberá um feedback visual para cada etapa para saber qual feitiço será selecionado.





Lançando feitiços (em detalhes):


Segure a mira com o Arduino 101 voltado para você. Primeiro, dê dois toques na mira (suavemente!) No solo ou dê dois rápidos impulsos verticais no ar. Quando você vir o flash branco, mova o cajado nitidamente para frente ou para trás para selecionar o Feitiço 1, ou incline o cajado para a esquerda ou direita para selecionar o Feitiço 2, ou mova verticalmente uma terceira vez para selecionar o Feitiço 3. Quando um feitiço é selecionado, as luzes brilhará em verde sólido (feitiço 1,) azul (feitiço 2) ou vermelho (feitiço 3.) Quando as luzes estiverem sólidas, convoque o feitiço com um toque vertical final. As luzes brilharão e piscarão na cor selecionada.

Os gestos são sensíveis ao tempo! Você tem apenas 1 segundo entre cada etapa de um gesto ou o feitiço será redefinido. Isso significa que se você errar ou selecionar o feitiço errado, pode apenas esperar um segundo e começar de novo. Convocar feitiços com precisão é um pouco complicado de dominar, mas a boa notícia é que os feitiços não serão chamados acidentalmente quando você estiver apenas andando com o cajado.





Construindo a Eletrônica:


Este é basicamente um Arduino 101, uma bateria e uma faixa de LEDs NeoPixel.

Existem várias maneiras de configurar a energia. O mais rápido seria usar uma bateria de 9v e ligar os LEDs diretamente no Arduino 101 - mas a vida da bateria seria muito curta. Você também pode usar uma bateria LiPo para maximizar a potência / peso para uma construção mais "profissional" - mas você precisaria de uma maneira segura de carregar a bateria. Para mim, um bom equilíbrio entre a vida da bateria e a simplicidade é usar 3 baterias AA e um regulador de voltagem de $ 4. Esta é a mesma configuração eletrônica do Shadow Theatre e do Kaleidoscope Infinity Mirror.

Etapa 1

Colete o chicote final de sua faixa de LED cortando cerca de 1 cm do final das luzes. Desencape as pontas do fio.

Etapa 2

Separe os pinos do conector tortos que vieram com o regulador de tensão e solde dois deles nas pontas dos fios verde e amarelo. Isso permitirá que você os conecte facilmente aos pinos do Arduino 101.

Etapa 3

Em seguida, solde o fio vermelho ao terminal VIN no regulador de tensão e solde dois conectores retos nos pinos GND e VOUT conforme mostrado.

Etapa 4

Agora conecte os adaptadores de jack barril. Primeiro retire as pontas dos fios que saem da caixa da bateria, depois monte-os nos terminais do conector macho e aperte com uma chave de fenda. VERMELHO vai para o terminal (+), PRETO vai para o terminal (-).

Em seguida, conecte o adaptador de jack de barril fêmea aos fios soltos que vêm do início da faixa de LED. AMARELO vai para o terminal (-) e VERMELHO vai para o terminal (+).

Etapa 5

Agora conecte seu chicote ao Arduino 101. O fio VERDE vai para o PINO 6, o fio AMARELO vai para o pino GND próximo ao nº 13. Com os dois pinos principais no regulador de tensão, GND vai para GND e VOUT vai para o pino "VIN" no Arduino 101. Não se engane! Conectar ao contrário leva a cheiros e queimaduras. Eu sei isso.





Carregando o código de exemplo:


Etapa 1

Com a bateria desligada, use um cabo USB para conectar seu Arduino 101 a um computador e carregue o código de exemplo anexado usando o IDE do Arduino.

Se você nunca programou um Arduino 101 antes, há ótimas instruções no site do Arduino aqui:https://www.arduino.cc/en/Guide/Arduino101

Depois que o código de exemplo for carregado com êxito, você pode desconectar o USB e testar o código ligando a bateria e tentando alguns dos gestos de feitiço com a porta USB do Arduino 101 voltada para baixo e com os pinos voltados para você. Tente mover o tabuleiro verticalmente quatro vezes para invocar o Feitiço Vermelho.

Discussão de código:

(Se você deseja apenas usar o código de exemplo no estado em que se encontra, pode pular para Construindo a equipe.)

O código de exemplo usa a capacidade de detecção de choque do Arduino 101 para contar choques, enquanto um cronômetro é executado e reconfigura a contagem de choques para zero após um curto período de tempo sem novos choques. Se você acertar a combinação certa antes que o cronômetro expire, uma função de "feitiço" é chamada.

Como um toque firme no solo registrará o choque inicial mais vários choques de "ruído" das vibrações na equipe, o primeiro código em loop está apenas tentando encontrar um impulso dominante de cada lote de choques e categorizá-lo simplesmente como vertical, esquerda / direita ou frente / trás. Eu uso uma variável chamada "gesto" para segurar cada impulso dominante:1 =impulso vertical, 2 =impulso para frente / trás, 3 =impulso para esquerda / direita.

Em seguida, para rastrear combinações, o código usa uma instrução "switch" e se move através dela conforme os gestos se acumulam. É como um livro "escolha sua própria aventura", onde cada etapa diz algo como "se o próximo impulso for para a esquerda / direita, vá para a etapa 2, se o cronômetro expirou, volte para zero."

Feitiços:

É aqui que você pode alterar facilmente o que cada feitiço faz. No momento, eles estão apenas executando o código de exemplo "theater-chase" em cores diferentes. Você pode facilmente adicionar mais, alterar as cores ou escrever sua própria função de luz aqui. As três primeiras variáveis ​​na função theaterChase são valores para vermelho, verde e azul. O último número é a velocidade (número maior =mais lento).
  ////////////////////////////////////////////// ///// spells ////////////////////// void tapspell () {/// luzes vermelhas do teatro theaterChase (strip.Color (127, 20, 0) ), 20); theaterChase (strip.Color (127, 20, 50), 55); strip.show (); } void leftspell () {theatreChase (strip.Color (0, 0, 100), 20); theaterChase (strip.Color (0, 30, 120), 75); strip.show (); } void forwardspell () {theatreChase (strip.Color (0, 127, 0), 30); theaterChase (strip.Color (0, 127, 90), 55); strip.show (); }  





Construindo a equipe:


Há muito espaço para criatividade aqui! Vou me concentrar na construção de tecnologia básica, mas me divertirei fazendo uma equipe única. Difusores de luz como tule, lenço de papel ou uma garrafa de plástico sobre os LEDs podem produzir visores de luz muito legais!

Etapa 1:Encontre um bastão / bastão de caminhada

Você pode usar um cabo de vassoura, um tubo de irrigação ou encontrar um pau natural. As lojas de artesanato de Michael também vendem bons. (Na seção de palitos, realmente.) Eu gosto de embrulhar uma seção com fita isolante para ter uma área de trabalho limpa para os eletrônicos, mas isso é opcional.



Coloque alguns elásticos na mira para facilitar a fixação das coisas.

Etapa 2:coloque o Arduino 101 na equipe com a porta USB desativada

Use um elástico para segurar o Arduino 101 no lugar.

Etapa 3:usando faixas de borracha para ajudar nas duas extremidades, envolva os LEDs



Etapa 4:embrulhe fita adesiva esportiva para proteger o Arduino 101 e a bateria

Certifique-se de deixar acesso ao botão liga / desliga na bateria. Você deseja que a bateria esteja segura para choques / torneiras, mas lembre-se de que precisará trocá-las eventualmente.



Etapa 5:difunda as luzes LED e decore






Código

  • Código de exemplo de assistente ambulante
Código de exemplo de equipe ambulante do assistente Arduino
Conte os impulsos nos eixos x, y e z, certas combinações de impulso invocam "feitiços" (visores de luz) em uma faixa de neopixel.
 / * Copyright (c) 2016 Intel Corporation. Todos os direitos reservados. Consulte o aviso de licença no final do arquivo. * // * Arduino 101 "Wizard's Walking Staff." Este código usa a biblioteca Adafruit Neopixel. Instruções de instalação da biblioteca aqui:https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-installation Certifique-se de ter o Intel Curie Core mais recente instalado. Para obter mais informações, visite https://www.arduino.cc/en/Guide/Arduino101*/#include "CurieIMU.h" #include  #define PIN 6 //// que pino são os NeoPixels conectados para? Adafruit_NeoPixel strip =Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800); /// a faixa tem 60 pixels de comprimento.int tr =0; // Algumas variáveis ​​para manter o alvo de cor e a cor atual para suavização ... int tg =0; int tb =0; int r =0; int g =0; int b =0; long int globaltimer =0; /// timers para controlar os gestos em relação ao tempo ... para coisas como "se o cronômetro não passou de 0,5 segundo, E há dois toques, então ..." long int gesturetimer =0; long int ledtimer =0; int fade =10; /// com que rapidez as luzes desaparecem. Usado para suavização da torneira =0; // couter para impulsos verticaisint lr =0; // couter para impulsos esquerdo / direitoint fb =0; // couter para impulsos para frente / para trásint gesto =0; // estado int =0; /// para nosso caso de switch ... isso manterá o controle de cada movimento em um series.void setup () {// coloque seu código de configuração aqui, para ser executado uma vez://Serial.begin(9600); globaltimer =milis (); // inicia cronometristas na hora atual gesturetimer =millis (); ledtimer =milis (); / * Inicialize o IMU * / CurieIMU.begin (); CurieIMU.attachInterrupt (eventCallback); / * Ativar detecção de choque * / CurieIMU.setDetectionThreshold (CURIE_IMU_SHOCK, 1500); // 1,5g =1500 mg CurieIMU.setDetectionDuration (CURIE_IMU_SHOCK, 50); // milissegundos de pico necessários para chamar a interrupção CurieIMU.interrupts (CURIE_IMU_SHOCK); strip.begin (); // inicializa a tira de neopixel strip.show (); // Inicialize todos os pixels para 'desligar'} void loop () {// coloque seu código principal aqui, para executar repetidamente://// filtro básico - o IMU registra vários choques de rebote e contra-ataque. Isso tenta capturar o choque dominante em cada gesto. if (millis () - globaltimer> 170) {/// isso tenta encontrar o eixo de movimento dominante para cada choque. Compara a soma dos movimentos de toque, esquerda-direita e frente-costas e escolhe o maior. if ((tap>
 lr) &&(tap>
 fb)) {Serial.println ("tap"); gesto =1; toque =0; lr =0; fb =0; //// redefine os valores depois que um movimento é classificado. } else if ((lr> fb) &&(lr> tap)) {Serial.println ("lr"); gesto =2; toque =0; lr =0; fb =0; } else if ((fb> lr) || (fb> tap)) {Serial.println ("fb"); gesto =3; toque =0; lr =0; fb =0; }} //////////////////////////////////////////////////// //////////////////////////////////////////////////////// //////////////////////////////// if (millis () - globaltimer> 1000) {///// timeoutreset globaltimer =millis () - 170; tr =0; tg =0; tb =0; estado =0; // gesto =0; } if (millis () - gesturetimer> 1000) {gesturetimer =millis () - 350; tr =0; tg =0; tb =0; estado =0; // gesto =0; } ///////////////////////////////////////////////////// //////////////////////////////////////////////////////// ////////////////////////////// switch (state) {// Este rastreia o caso de gestos 0:{/// nenhum gesto gravado ainda ... escute a torneira. Se houver, vá para o caso 1. if (millis () - gesturetimer> 350) {if (gesto ==1) {state =1; gesto =0; gesturetimer =milis (); } } pausa; } caso 1:{///// um toque gravado. Se um segundo toque acontecer, jogue um flash rápido e vá para a etapa 2. if (millis () - gesturetimer> 350) {if (gesto ==1) {r =10; g =10; b =10; /// estado de flash de feedback =2; gesto =0; gesturetimer =milis (); } } pausa; } caso 2:{/////// Ponto de mudança - dois toques registrados. Os três feitiços divergem aqui com base no próximo gesto. Se for um toque, vá para o caso 3. Se for L / R, vá para o caso 4. Se for Frente / Traseiro, vá para o caso 5. if (milis () - gesturetimer> 350) {if (gesto ==1) {estado =3; gesto =0; gesturetimer =milis (); } se (gesto ==2) {estado =4; gesto =0; gesturetimer =milis (); } se (gesto ==3) {estado =5; gesto =0; gesturetimer =milis (); } } pausa; } caso 3:{//// três toques gravados ... estamos no feitiço de torneira, vire o bastão para vermelho e ouça o "toque" final para disparar o feitiço. tr =20; tg =0; tb =0; globaltimer =milis () - 250; if (millis () - gesturetimer> 350) {if (gesto ==1) {estado =0; Serial.println ("tapspell!"); tapspell (); } } pausa; } caso 4:{///// dois toques e um L ou R gravado ... estamos no feitiço esquerdo, vire o bastão para azul e ouça o "toque" final para disparar o feitiço. tr =0; tg =0; tb =20; globaltimer =milis () - 250; if (millis () - gesturetimer> 350) {; if (gesto ==1) {estado =0; Serial.println ("leftspell!"); leftspell (); } } pausa; } caso 5:{///// //// dois toques e um avanço ou retrocesso gravado ... estamos no feitiço para frente, vire o bastão para verde e ouça o "toque" final para disparar o feitiço. tr =0; tg =20; tb =0; globaltimer =milis () - 250; if (millis () - gesturetimer> 350) {if (gesto ==1) {estado =0; Serial.println ("forwardspell!"); forwardspell (); } } pausa; } padrão:{break; }} //Serial.println(tr); if (millis () - ledtimer> fade) {/// só faz esta próxima etapa periodicamente a cada (valor de fade) milissegundos. Ao contrário da função "delay ()", isso permite que outras coisas aconteçam no programa entre as atualizações. /// suavização de cor. A cor real se move em direção à cor alvo ... Se o alvo for mais do que atual, mova para cima, se menos, mova para baixo. se (tr> r + 1) {r ++; } if (tg> g + 1) {g ++; } se (tb> b + 1) {b ++; } if (tr  

Processo de manufatura

  1. Detectando campos elétricos CA
  2. Cálculos de potência
  3. Sete maneiras de tornar seu estágio de pós-processamento mais seguro
  4. Cor dos alimentos:os ingredientes essenciais para tornar os alimentos atraentes
  5. Como fazer qualquer modelo de negócios IoT funcionar - ou não ?!
  6. Faça seu próprio Google Voice HAT
  7. Como fazer uma plataforma de robô Arduino + Raspberry Pi
  8. Como fazer fibra de vidro
  9. Qualquer dia pode ser dia de fabricação!
  10. Como fazer uma animação de corte no Solidworks