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

KITtyBot

Componentes e suprimentos

SparkFun Arduino Pro Mini 328 - 5 V / 16 MHz
× 1
Servos (Tower Pro MG996R)
SG-90 ou servo 9 g com o mesmo formato
× 12
Conversor Step-Down (Buck) DC / DC Adafruit UBEC - Saída 5V @ 3A
× 1
Adafruit Mini Controle remoto
Claro que você pode usar qualquer controle remoto. Isso funcionou bem em conjunto com a biblioteca IRLib
× 1
Sensor receptor Adafruit IR (infravermelho) - TSOP38238
× 1
Resistor 1k ohm
× 1
Resistor 2,2 k ohm
× 1
Bateria LiPo de 7,4 V / 500 mAh
Uma bateria com aproximadamente esta capacidade destinada a hobby R / C é suficiente
× 1

Ferramentas e máquinas necessárias

Impressora 3D (genérica)
Ferro de soldar (genérico)
O design da placa de ensaio pode funcionar sem solda

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





Introdução


Eu queria fazer um robô ambulante de quatro patas, mais no estilo de um "mamífero" do que uma "aranha" ou "inseto" normal. A inspiração vem dos conhecidos robôs Boston Dynamics e outros robôs de pesquisa de quatro patas. Fazer um robô como esse é bastante desafiador, pois ele tomba facilmente devido ao alto centro de gravidade e aos pés sob o corpo em vez de se espalhar para os cantos.

O objetivo era construir um robô barato, usando Arduino e micro servos de baixo custo. Esta solução, claro, tem suas limitações. Não se pode esperar que seja perfeito, mas consegui construir alguns robôs agora que podem realizar o comportamento de caminhada conforme descrito neste filme. E fazer o melhor que se pode com um orçamento muito pequeno é um desafio por si só e talvez algo que caras em projetos de pesquisa fortemente financiados nunca tenham que enfrentar. :)

Foi identificado cedo que um estudo de cinemática invertida (IK) era necessário para acertar. O código possui um conjunto de equações para calcular os ângulos das articulações com base nos movimentos desejados dos pés. Eles podem ser usados ​​posteriormente em funções para algumas tarefas recorrentes, como fazer um movimento corporal (mover todos os quatro pés na direção oposta) e fazer um movimento completo do pé (levantar para cima, mover em uma direção especificada e colocá-lo no chão novamente).

O próximo desafio é fazer estudos de marcha, ou seja, definir como o robô deve andar e girar em termos de movimentos do corpo e dos pés. Meu robô usa andamentos estaticamente estáveis ​​o tempo todo. Um pé de cada vez é levantado e colocado em uma nova posição. O corpo repousa sobre os outros três pés e para não tombar o centro de gravidade deve permanecer dentro do tripé que esses pés formam. Desenvolvi quatro andamentos padrão - para frente, para trás, para a esquerda e para a direita. Isso, por sua vez, utiliza as funções de movimento do pé e do corpo para serem combinadas em uma sequência completa.

Eu também projetei uma função para movimentos servo síncronos. Em alguns casos, vários servos estão fazendo golpes diferentes durante um determinado tempo. Isso deve ser sincronizado para obter movimentos suaves.

Por último, mas não menos importante, eu uso uma bateria LiPo completamente desprotegida. Isso pode ser arriscado, o maior perigo é descarregar rápido ou muito profundamente. O primeiro perigo é evitado, desde que não seja acidentalmente curto-circuitado. Uma bateria R / C normal tem uma taxa de descarga de 25 C que, neste caso, permite 12 A. O UBEC impedirá que seja superior a 2 A em qualquer circunstância. O segundo perigo é evitado por uma função de vigilância no software. A tensão é medida em um dos pinos analógicos e se for inferior a 7,0 V o robô é colocado em repouso.

E, finalmente, devo enfatizar que as baterias devem ser carregadas com um carregador específico e manuseadas com os cuidados habituais, nunca deixe o carregamento sem supervisão. A bateria deve ser destacada do robô (use velcro para montá-la) e carregada dentro de uma bolsa à prova de fogo ou pelo menos a uma distância segura de materiais inflamáveis ​​para que o fogo possa ser contido e não se espalhe. Além disso, armazene as baterias com segurança.

Se você não estiver familiarizado com as baterias LiPo, consulte uma loja local de hobby da R / C e compre as baterias junto com um carregador adequado e, possivelmente, um saco / recipiente à prova de fogo para carregamento e armazenamento. Esses itens geralmente estão cheios de sinais de alerta. Refaça-os e use seu próprio bom senso. :)





Construindo o robô


Imprima as peças de acordo com os arquivos fornecidos. Reserve um tempo para olhar as fotos e descobrir como montar as peças antes de começar. Sou escandinavo, mas esta instrução está longe de ser uma instrução IKEA ou LEGO :)

A articulação do quadril deve ser montada primeiro. Usei fita dupla-face de boa qualidade para unir as peças. Eles também podem ser colados, mas no caso de haver necessidade de consertar uma peça quebrada que sejam impossíveis de desmontar, um servo quebrado leva à substituição da junta completa.

Coloque o suporte do servo na parte inferior de um servo, alinhado com o eixo de atuação. Em seguida, junte outro servo com seu eixo perpendicular. A imagem abaixo mostra a articulação do quadril para a frente direita e traseira esquerda. Para os outros dois cantos devem ser feitas juntas espelhadas.

Antes de prosseguir, é uma boa ideia certificar-se de que todos os 12 servos estão centralizados. A melhor forma é montar a placa de circuito impresso (ou breadboard, veja abaixo), conectar todos os servos e carregar o código. Quando o Arduino é iniciado, todos os servos irão centralizar (sinal de comando 90 graus). Será necessário ajustar as posições centrais posteriormente, uma vez que o robô esteja montado.

A próxima etapa é prender a parte chamada coxa, o "membro superior" de uma montagem de perna. Esta parte tem recessos que se encaixam nas pontas do servo que normalmente são entregues junto com o servo. Cole os chifres nas reentrâncias. Certifique-se de usar uma cola que funcione para unir o material impresso em 3D e o plástico de náilon de que o chifre é feito. A pistola de cola que usei funcionou bem, mas tive alguns sucessos mistos com a cola CA (algumas marcas funcionam, outras não).

A coxa está unida à articulação do quadril em um ângulo de 60 graus. Tente encontrar uma posição que se aproxime o máximo possível desse ângulo quando os servos estiverem centralizados. Prenda o chifre no servo spline com o parafuso fornecido (geralmente o mais curto dos três que são fornecidos com um servo). Abaixo estão duas fotos de coxa e quadril montados, chifre de servo não incluído para maior clareza (ou nunca modelado por preguiça do meu lado).

A parte inferior da perna também deve ser montada. Neste caso, um servo é preso à parte da perna usando parafusos. Existem parafusos fornecidos com o servo (geralmente dois parafusos de "madeira" mais longos).

Agora as pernas podem ser montadas no corpo. Existem duas partes que chamei de "pára-choques" que ficam na frente e atrás do robô (como os pára-choques de um carro). Eles têm recessos para chifres de servo, assim como a parte da coxa. Cole chifres neles. Em seguida, deslize o suporte do servo de uma perna superior no orifício correspondente no corpo. Quando isso é feito em ambos os lados, o conjunto pode ser preso pelo pára-choque. Permita que as pernas apontem em cerca de 12 graus (uma ponta do pé de 20 mm para fora da perna). O pára-choque é preso ao corpo usando parafusos servo restantes (mais longos).

Por fim, as pernas do robô podem ser fixadas. Eles devem ser angulados na direção oposta à da coxa, fazendo com que a ponta do pé fique logo abaixo da articulação do quadril de cada perna.

Com isso, o robô é montado. Deve ser parecido com a imagem abaixo. Observe que o design do robô mudou ligeiramente em comparação com a imagem superior e o clipe de filme. O corpo foi redesenhado para simplificar e tornar um design mais robusto. O suporte do servo e o chifre para a articulação do quadril trocaram de lugar. Portanto monte de acordo com as imagens 3D e evite ser confundido com as fotos e clipes de filmes.

Claro que os ângulos de cada junta não podem ser exatamente os ângulos necessários, o número de estrias em um servo SG-90 é 21, levando a um ângulo de 17 graus entre duas posições. Você pode, na melhor das hipóteses, montar o robô dentro de 10-20 graus, o erro restante deve ser ajustado alterando a posição neutra no código, veja mais adiante nesta instrução. Pode ser uma boa ideia conectar novamente todos os servos e ligar o Arduino e verificar as posições neutras e, se necessário, fazer alguns ajustes mecânicos (movendo uma junta, uma ranhura ou duas). A tendência é girar acidentalmente os servos ao trabalhar com eles.





Conectando os eletrônicos


Existem duas opções, ter tudo em uma placa de ensaio ou produzir um PCB com o arquivo Fritzing fornecido. Você pode ter alguns problemas com a tensão na placa de ensaio se não tomar cuidado ao conectar todas as linhas de alimentação e aterramento aos servos. Em casos extremos, um servo pode consumir 600 mA e conexões ruins levam a um comportamento errático. O PCB tem traços de cobre muito largos para as linhas de energia, então se você soldar corretamente, ele funcionará bem.

Não há interruptor de energia em meu projeto. O robô é simplesmente ligado e desligado conectando a bateria. Se você quiser adicionar um, deve ser após o conector da bateria, cortando a alimentação de 7,4 V tanto para o Arduino quanto para o UBEC.

Versão da placa de ensaio

É possível ter o Pro Mini, conectores para os servos e a maioria dos outros componentes eletrônicos em uma placa de ensaio de meio tamanho. Eu desenho os esquemas na imagem abaixo. Certifique-se de usar fios de jumper curtos, especialmente para a alimentação de 5 V e conexões de aterramento para os servos. Os servo-conectores são simplesmente conectores machos extra longos que são cortados em pedaços de três e pressionados na placa de ensaio.

O que não é mostrado na imagem é a bateria e o UBEC. Pode haver um pouco de solda para consertar isso a fim de anexar um encaixe de conector à bateria. Do conector, dois fios de jumper devem ser conectados ao "barramento de alimentação" inferior da placa de ensaio para alimentar o Pro Mini (conectado a RAW e GND). Também conecte dois resistores da alimentação de 7,4 V ao pino A0. 2.2k vai do lado positivo e 1k do solo. Isso vai dividir a tensão, que é mais de 8 V com a bateria cheia, para um valor abaixo de 5 V, que pode ser medido pelo pino analógico.

O lado de saída do UBEC possui um conector servo. É bastante conveniente adicionar um cabeçalho de dois machos no "barramento de alimentação" superior. Coloque-o em algum lugar no meio, como na imagem, para garantir que a distribuição de energia para os servos seja o mais equilibrada possível.

O receptor IR deve ser conectado a A1 e ter alimentação de 5V. Os pinos do receptor são longos o suficiente para serem encaixados em orifícios diretamente na placa de ensaio.

Há um esquema abaixo e uma imagem de como a placa de ensaio acabada pode ficar. Observe que a imagem mostra uma versão mais antiga do robô com diferentes pinagens e conexões. Ainda dá uma ideia de como conectar fios de jumper e servo-conectores.

A placa de ensaio é fixada ao corpo com sua parte traseira autoadesiva. Oriente-o de forma que o canto com os servos conectados aos pinos D3, D4 e D5 (canto superior direito no esquema) fique no canto frontal / esquerdo do robô e certifique-se de que a placa esteja centralizada no corpo (centro correto de a gravidade é vital).

Versão PCB

Eu adicionei um arquivo Fritzing abaixo. Isso pode ser usado para produzir um PCB, seja solicitando do serviço disponível na Fritzing ou exportando arquivos para a fabricação de PCB. Fiz uma série de fotos para mostrar a montagem abaixo. O PCB é feito sob medida para este robô com conectores para todos os servos, IR e medição de tensão. Mas também há conectores quebrados dos pinos restantes. Eles podem ser usados ​​para conectar outros equipamentos se você quiser expandir o robô no futuro.

Existem pequenas "almofadas" no corpo que se ajustam aos cantos do PCB. Também aqui, o canto com o conector D3 a D5 deve estar na frente / esquerda. Existem orifícios de montagem no PCB, mas eu só usei um pedaço de fita dupla-face no corpo para fixá-lo. Ele vai ficar no lugar.

Bateria

A bateria é fixada na parte inferior com velcro. Há uma superfície plana dedicada para isso no corpo. Uma bateria LiPo de 7,4V / 500mAh normalmente tem o formato de cerca de 55x30x10 mm (mais ou menos alguns mm) e se encaixa muito bem neste local.

Finalmente, o robô pode ser "retocado" amarrando os fios do servo em belos feixes de modo que não tropece neles enquanto caminha. Ele também dá ao robô uma bela aparência de ser realmente uma criatura de quatro patas andando por aí e não um monte de fios de servo. :)





Finalizando


Antes de usar os robôs, as posições centrais devem ser ajustadas. Isso é feito editando o array servodeg0 no código:
  const float servodeg0 [12] ={90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90};  

Os valores estão na ordem alfa, beta gama e frente / esquerda, traseira / esquerda, frente / direita, traseira / direita. Portanto, beta na parte frontal direita é a oitava posição na matriz ou servodeg0 [7] (a numeração da matriz começa com 0).

Também existe uma matriz chamada servodir que define a direção de rotação dos servos.
  const int servodir [12] ={+1, +1, -1, -1, -1, +1, -1, -1, -1, +1, +1, +1}; // Sentido de giro (positivo é servo anti-horário)  

Os servos que usei se movem de 0 a 180 graus no sentido anti-horário. Eu li em algum lugar que existem servos indo na outra direção. Nesse caso, o servodir da matriz deve ter seus sinais alterados o tempo todo.

Inicie o Arduino e verifique os ângulos em todos os servos. Faça medidas e veja se tudo parece reto e simétrico. Distâncias e ângulos devem estar de acordo com a figura abaixo.

É difícil estar dentro do milímetro exato em cada medição, estar dentro de um cm é razoável. Veja quais mudanças são necessárias e adicione / subtraia ao valor na matriz servodeg0. Definitivamente, isso exigirá algumas iterações antes que tudo esteja correto. Você terminará com um array servodeg0 semelhante a este (um pedaço real de código de um de meus robôs). E o mais importante, você deve, no final, ter um robô que se apóie nos quatro pés e fique ereto.
  const float servodeg0 [12] ={80, 95, 100, 100, 110, 90, 100, 115, 100, 80, 80, 100};  

Agora está tudo acabado. Aproveitar!

Talvez apenas algumas dicas no caminho.

Os servos podem precisar ser recalibrados após algum tempo. A posição central pode variar com o tempo. Basta verificar se tudo está alinhado de vez em quando.

Se você fez tudo certo e ainda tem um robô que vai tombar, verifique o centro de gravidade. A bateria pode ser movida para equilibrar isso, uma coisa boa com o uso de velcro.

E mais uma vez. Trate suas baterias LiPo com cuidado.





Outras melhorias


Ao enviar meu robô aqui, também convido as pessoas a refinarem o design, adicionando mais funções ou fazendo um layout ligeiramente diferente (maior, menor, com aparência mais legal). Deve ser possível reutilizar o código em um robô de layout ou tamanho ligeiramente diferente. O esboço abaixo mostra quais são as diferentes constantes do código. Todas as funções IK e de movimento ainda devem funcionar se um robô com medidas diferentes for feito. Também mostra que as coordenadas estão definidas, x está apontando para a frente.

E, claro, seria interessante se as pessoas adicionassem funções ao robô. Existem vários botões no controle remoto que podem ter funções (por que não dançar ou fazer alguma outra sequência de movimentos se um botão for pressionado).

Eu pessoalmente experimento com entrada analógica. Eu também trabalhei com uma marcha "girando enquanto caminhava" para ser capaz de dirigir o robô até certo ponto, ou para corrigir desvios de curso com a ajuda de um giroscópio ou bússola. E também adicionei um sensor ultrassônico e comportamento autônomo (evitando obstáculos). Meu projeto atual é combinar o controle analógico com o autônomo e ter tudo controlado a partir de um smartphone. Isso me forçou a aprender sobre muitas coisas novas (Blynk, ESP6822, comunicação serial entre dispositivos, etc.) e espero que eu possa lançar uma versão refinada do robô (ou talvez alguém com melhores habilidades me vencesse) :)

Código

  • O código para KITtyBot2
O código para KITtyBot2 Arduino
Carregar para o Arduino Mini
 / * Uma versão controlada por IR do KITtyBot 2. Ele usa o Arduino Pro Mini e a placa PCB projetada por mim (esboço de Fritzing Kittybotmini.fzz). É baseado nos robôs anteriores KITtyBot e KITtyBot mini usando um remoto IR para controlar o robô. Ele usa um remoto NEC (Adafruit) e as bibliotecas IRLib2, consulte https://github.com/cyborg5/IRLib2. Baixe as bibliotecas IRLib2 do repositório e instale-as de acordo com as instruções. As dimensões gerais são semelhantes às do KITtyBot original, mas há um deslocamento entre os eixos gama e alfa de 12 mm (os servos montados um em cima do outro). Eu mudei conitantemente os passos para caminhar e virar, mas até agora sinto que isso aconteceu dado o comportamento mais estável. Criado por Staffan Ek 2017 * / # include  #include  #include  // Primeiro inclua a base de decodificação # include  // Inclua apenas o protocolo que você é usando # define MY_PROTOCOL NEC // Define o controle IR (NEC) long Previous; IRrecv My_Receiver (A1); // Recebe no pino A0IRdecodeNEC My_Decoder; const int servonum =12; // A quantidade de servosServo servo [servonum]; // Criar objeto servo-objeto float servodeg0 [12] ={90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90}; // Posições neutras para os servos ajustados de 90 graus nominais ( é necessária uma calibração para ajustar esses valores) float servodegnew [servonum]; // A posição desejada do servo em grausfloat servodegold [servonum]; // A posição servo antiga (ou atual) // Atualize os valores abaixo para o miniconst KITtyBot int servodir [12] ={+1, +1, -1, -1, -1, +1, -1, -1, -1, +1, +1, +1}; // Sentido de giro (positivo é servo anti-horário) const float pi =3.1416; const float alfa0 =pi / 6; // A posição neutra de alfa (30 graus) const float beta0 =pi / 3; // A posição neutra de beta (60 graus) const float jointlength =50; // O comprimento de uma parte da perna (ambos têm o mesmo comprimento) const float width =120; // A largura (distância entre os pés na direção y, com toeout0 adicionado) const float leng =120; // O comprimento (distância entre os pés na direção x) const float distag =12; // Distância entre os eixos alfa e gamaconst float toeout0 =20; // A distância externa dos pés do centro do servo gama (a distância em que o pé está apontado para fora) const float leglength0 =2 * jointlength * cos (alfa0); const float gamma0 =asin (toeout0 / (leglength0 + distag)); // A posição neutra de gama (devido ao toe out 20 mm e distag 12 mm) const float bodyradius =sqrt (pow ((largura / 2), 2) + pow ((leng / 2), 2)); // O comprimento da diagonal (distância do centro ao canto do pé) const float phi0 =atan (largura / comprimento); // O ângulo do raio do corpo em relação ao eixo x (apontando para a frente) em relação ao float height0 =sqrt (pow (leglength0 + distag, 2) - pow (toeout0, 2)); // A altura normal do robô (se quaisquer ângulos ou distâncias forem alterados, isso deve ser atualizado) float leglength [4] ={sqrt (pow (altura0, 2) + pow (toeout0, 2)), sqrt (pow (altura0, 2) + pow (toeout0, 2)), sqrt (pow (altura0, 2) + pow (toeout0, 2)), sqrt (pow (altura0, 2) + pow (toeout0, 2))}; // Valores iniciais passo de tempo longo de comprimento da perna sem sinal =500; // Tempo gasto por cada sequência (ao usar servomove ()) int steplength =40; // O comprimento de um passo na direção x durante a caminhada (fluência para frente e para trás) float phi =20; // curva durante o giro (em graus, não em radianos!) // Variável para movimentofloat footpos [12]; // Posições do pé, ordem LeftFrontxyz, LeftRearxyz, RightFrontxyz, RightRearxyzfloat stepturn [12] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Movimento do pé em caso de giro // As posições dos pés são calibradas com suas respectivas posições iniciaisconst float jointangle0 [12] ={alfa0, beta0, 0, alfa0, beta0, 0, alfa0, beta0, 0, alfa0, beta0, 0}; ângulo de junção flutuante [12]; // Usando um vetor para ângulos, ordene LeftFrontAlfaBetaGamma etcconst int voltagepin =A0; // O pino atribuído para medição de tensão lowvolt =0; // Uma variável que para o robô se a tensão goew <7,0 Vint mode =0; // O modo de caminhada ordenado atual; frente, reverso, esquerda, direita e evitar configuração () {Serial.begin (9600); Serial.println ("KITtyBot mini"); // Essas linhas são apenas para verificar a configuração. Pode ser excluído. Serial.print ("Gamma0:"); Serial.println (gama0); Serial.print ("Leglength0:"); Serial.println (leglength0); Serial.print ("Bodyradius:"); Serial.println (bodyradius); Serial.print ("Phi0:"); Serial.println (phi0); Serial.print ("Height0:"); Serial.println (altura0); servo [0] .attach (3); servo [1] .attach (4); servo [2] .attach (5); servo [3] .attach (6); servo [4] .attach (7); servo [5] .attach (8); servo [6] .attach (2); servo [7] .attach (A3); servo [8] .attach (12); servo [9] .attach (11); servo [10] .attach (10); servo [11] .attach (9); for (int i =0; i  2 * jointlength) lresult =2 * jointlength; // If leglength is higher than possible some following functions become unstable return lresult;}float legright(float dx, float dz, float gamma) { float lresult =sqrt(pow(leglength0 - (dz / cos(gamma0 - gamma)), 2) + pow(dx, 2)); if (lresult> 2 * jointlength) lresult =2 * jointlength; // If leglength is higher than possible some following functions become unstable return lresult;}// Beta, the "knee joint"float beta(float leg) { float bresult =2 * acos(leg / (2 * jointlength)); return bresult;}// Alfa, The other hip servofloat alfafront(float dx, float beta, float leg) { float aresult =(beta / 2) - asin(dx / leg); return aresult;}float alfarear(float dx, float beta, float leg) { float aresult =(beta / 2) + asin(dx / leg); return aresult;}// Giving foot positions based on a turning angle f (in degrees). Stepturn is the used to make footpos valuesvoid turnpos(float f) { stepturn[0] =bodyradius * cos(phi0 + (f * pi / 180)) - leng / 2; stepturn[1] =bodyradius * sin(phi0 + (f * pi / 180)) - width / 2; stepturn[3] =bodyradius * cos(pi - phi0 + (f * pi / 180)) + leng / 2; stepturn[4] =bodyradius * sin(pi - phi0 + (f * pi / 180)) - width / 2; stepturn[6] =bodyradius * cos(2 * pi - phi0 + (f * pi / 180)) - leng / 2; stepturn[7] =bodyradius * sin(2 * pi - phi0 + (f * pi / 180)) + width / 2; stepturn[9] =bodyradius * cos(pi + phi0 + (f * pi / 180)) + leng / 2; stepturn[10] =bodyradius * sin(pi + phi0 + (f * pi / 180)) + width / 2;}// Calculates servo positions (in degrees) based on joint angles in the fucntion abovevoid servopos() { for (int i =0; i <12; i++) { servodegnew[i] =servodeg0[i] + servodir[i] * (jointangle[i] - jointangle0[i]) * 180 / pi; }}// The servo algorithm for controlled and syncronized movements. All servos should reach their end position at the end of a timestepvoid servomove() { int servotimeold[servonum]; // Local variable for time of last servo position int servotimenew[servonum]; // Local variable for the current time when the servo i positioned int SERVOPULSE[servonum]; // Local variable to write to the servo driver float servodeg[servonum]; // Local variable for the current servo position float servodegspeed[servonum]; // Local variable for the desired servo speed degress per millisecond unsigned long starttime =millis(); // Time stamp the start of the algorithm unsigned long timenow =starttime; // Resetting time now for (int i =0; i  

Peças personalizadas e gabinetes

The body of the robot. Carries the PCB and battery.At each end of body, like bumper on a car. You should have two of these.Supports the hip joint. Print four of theseThe upper limb of leg. Print four.The lower limb (or foot). Print four.All parts put together. Not for printing.

Esquemas

This is a Fritzing file to allow PCB production. Use it to order from Fritzing themselves or export to a suitable format an manufacture elsewhere. kittybotmini_XKZYltyQVJ.fzz

Processo de manufatura

  1. Windows 10 IoT Core no Raspberry Pi 2 - Dados do sensor Adafruit
  2. Relógio de parede simples usando Adafruit 1/4 60 Ring Neopixel
  3. UnifiedWater v1
  4. Vingador montado:Capacete do Homem de Ferro e Reator Arc
  5. Caixa de votação móvel
  6. Intel Arduino 101 BLE Blynk Tank
  7. Arduino101 / tinyTILE BLE:Óculos de sol que combinam
  8. Whac-A-Mole (Edição de botão)
  9. Jukebox moderna
  10. Arduino Apple Watch