Mudança na política de participação

O blog agora não aceita mais registros espontâneos. Registros só com autorização minha (Jefferson).

Todos os registros de usuários que tinham ZERO comentários foram apagados.

Ainda é possível fazer comentários e ler todo o conteúdo de forma completamente anônima, como sempre foi. Porém em breve apenas usuários registrados (clientes e amigos) terão acesso ao conteúdo completo.

Aviso: Lamento, mas eu só dou suporte particular a clientes e amigos.  Tem uma dúvida sobre algum item que não está esclarecida nos textos? Pergunte e se eu souber responderei com um comentário ou acrescentando ao texto, mas não darei suporte particular para algo que você comprou em outro lugar.

Quer adquirir algo que está apresentado aqui? Deixe um comentário com seu email em qualquer post e eu responderei.

Módulo sensor de chuva / umidade com saídas digital e analógica

O sensor consiste de uma placa de 5x4cm com um desenho em forma de labirinto que forma o “sensor” ou “sonda” e um módulo eletrônico baseado no integrado comparador LM393 que é ajustado para a quantidade de água sobre o sensor que você deseja detectar.

Não é preciso usar microcontrolador (o Arduino) para usar este sensor. Ele pode ser conectado diretamente a um módulo de relê, um buzzer, etc., desde que não exceda a capacidade de corrente do LM393.

O módulo tem duas saídas:

  • Digital: Normalmente igual a VCC, mas quando o sensor é acionado, cai para 0V;
  • Analógica: Tem uma tenão de 0 a VCC proporcional à resistência da sonda. Com esta saída você pode detectar quantas gotas caíram na sonda (não exatamente) ou diferenciar entre uma gota e total imersão.

Note que a saída digital usa lógica inversa. Para acionar diretamente um buzzer, por exemplo, este tem que ser ligado entre o positivo e a saída digital. Este módulo é diretamente compatível com meus módulos de relês. A saída analógica também opera inversamente e sua tensão vai caindo à medida que aumenta a umidade.

O módulo tem dois LEDs:

  • Azul: indica que o módulo está alimentado;
  • Vermelho: indica que a saída digital está acionada.

Você não é obrigado a usar o sensor fornecido. Você pode construir o seu próprio, até com dois pedaços de fio com as pontas desencapadas. Quando as duas pontas tocarem o líquido, o LM393 detectará. A princípio essas pontas precisam estar bem próximas.

Como testar

Alimente o módulo e gire o potenciômetro no sentido horário até que o LED vermelho acenda. Volte um pouco até que apague. Encoste o dedo molhado no sensor e o LED vermelho acenderá.

Se quiser menos sensível, basta colocar sobre o sensor a quantidade de água que você quer que ele ignore e mover o potenciômetro até que o LED apague.

Aplicação prática

Com o temporal que se abateu em Recife em 17/05/2013, um problema de drenagem no nosso quintal fez com que a água subisse pelos ralos dos banheiros e acordamos com a casa já alagando.  Com a chegada desse produto, instalei um kit com buzzer e bateria de li-ion no chão do banheiro e outro no ralo do quintal para dar um alarme sonoro caso isso aconteça novamente. Pode nos dar tempo de reagir, com um aspirador de pó e água (essas coisas realmente funcionam) antes da casa estar alagada.  É claro que a solução mesmo é resolver o problema de drenagem, mas isso envolve escavar todo o quintal, que é todo cimentado, e não sabemos quando poderá ser feito.

Kit de motor cc com caixa de redução + roda para smartcar

  • Modelo biaxial: você pode montar a roda em qualquer dos dois lados e pode montar um disco de medição no outro.
  • Velocidade: aproximadamente 205 rpm com roda montada mas sem carga (medido com 5V – velocidade varia com a tensão);
  • Tensão: de 3 a 6V;

smartcar_wheel_kit_IMG_1543_automalabs.com.br

smartcar_wheel_kit_IMG_1546_automalabs.com.br

smartcar_wheel_kit_IMG_1539_automalabs.com.br

smartcar_wheel_kit_IMG_1541_automalabs.com.br

O diagrama abaixo mostra o modelo monoaxial. A única diferença é a ausência do eixo do outro lado.

Sensores diferenciais de pressão Freescale / NXP

 

Nota: Os modelos com que trabalho são todos diferenciais, com sufixo “DP” (Differential Pressure). Por exemplo: MPX5010DP, MPX5050DP, MPX5100DP e MPX5700DP. Isso quer dizer que o sensor mede o valor da diferença de pressão entre as duas entradas. Deixando a entrada de vácuo aberta, o valor da pressão medida é a diferença para a pressão atmosférica.  Algumas aplicações exigem sensores absolutos (que tem o sufixo “AP” nessa série). Esta nota técnica da Honeywell diz que geralmente só são necessários em altímetros ou barômetros. E este texto da SensorOne sugere que você precisa usar sensores absolutos se quiser ter uma medida precisa em sistemas “fechados”, que não sofrem influência da pressão atmosférica, como a pressão interna de um cilindro de ar para detectar vazamentos. Mas se você quiser medir a pressão de saída do ar, do mesmo cilindro, ou se precisão não for de suma importância, usar sensores diferenciais já seria adequado.

Explicando de outra forma: se você quer medir pressão em recipientes que não estejam hermeticamente fechados (e por isso sofrem influência da pressão atmosférica), como tanques e reservatórios, o sensor diferencial é o mais adequado. Se você usar um sensor absoluto para medir a pressão em uma cisterna, vai ver a pressão mudar o tempo todo porque a pressão atmosférica muda o tempo todo ao nosso redor.  Como o diferencial usa como referência a pressão atmosférica, a mesma leitura fica estável.

Você pode identificar os sensores AP facilmente por terem apenas uma entrada. Eu não trabalho com a linha absoluta.

Modelos com que trabalho (links direto para datasheets no site do fabricante):

  • MPX5010DP: 0 a 10 kPa (0 a 1,45 psi – 0 a 0,1 bar – 0 a 1m de coluna de agua) – EM FALTA
  • MPX5050DP: 0 a 50 kPa (0 a 7,25 psi – 0 a 0,5 bar – 0 a 5m de coluna de agua)
  • MPX5100DP: 0 a 100 kPa (0 a 14,5 psi – 0 a 1 bar – 0 a 10m de coluna de agua)
  • MPX5500DP: 0 a 500 kPa (0 a 72.5 psi – 0 a 5 bar – 0 a 50m de coluna de agua) – EM FALTA
  • MPX5700DP: 0 a 700 kPa (0 a 101.5 psi – 0 a 7 bar – 0 a 70m de coluna de agua)

Esses sensores medem a pressão de qualquer fluido (água, óleo, ar, etc). A principal aplicação é a medição de nível em caixas d’agua, cisternas, máquinas de lavar, etc.

Nota de Aplicação, explicando como se faz o monitoramento de água, usando como exemplo uma máquina de lavar: AN1950. Observe que esta nota se refere a outra série de sensores de pressão, mas ignorando os valores de tensão a informação também se aplica a esta série.

Esta outra nota de aplicação explica como evitar ruído na saída do sensor: AN1646

O que muda entre os modelos é a resolução do sensor, pois o sensor de 5m não perceberá variações que o de 1m perceberia. Para dar uma idéia grosseira, onde o MPX5010 perceber uma variação de 1 litro, o MPX5050 só perceberá de 5 em 5 litros.

Não deixe a quantidade de pinos intimidar você. Apenas três são usados nesse modelo: VCC, GND e OUT. E para evitar confusão é assim que eu despacho o sensor:

A saída é analógica, de 0V a Vcc, proporcional à pressão aplicada. No Arduino, basta alimentar, conectar à entrada A0 (mas pode ser qualquer uma das entradas analógicas) e rodar o exemplo 03.Analog->AnalogInOutSerial do Arduino. Para traduzir o valor lido em litros é preciso que você calcule como a faixa de leitura do sensor (0-1024) mapeia para o volume do seu reservatório. Se você souber calcular volume e usar uma regra de três, já sabe quase tudo o que é necessário.

Também é possível medir vácuo, usando a outra entrada do sensor (mas é complicado e não recomendo). Inclusive é possível medir velocidade de fluxo do fluido, usando-se as duas entradas.

Este sensor é caro e delicado por isso merece atenção

Muito cuidado ao aplicar pressão no sensor. Com a seringa e o tubo que forneço, teoricamente você não vai conseguir aplicar mais pressão que a suportada pelo sensor. Mas basta reduzir o tamanho do tubo ou trocar a seringa por uma maior para pôr o sensor em risco. Sempre faça os testes de olho nos valores lidos, para evitar sobrecarga. O sensor parece ter uma certa proteção contra isso, mas eu não arriscaria algo desse valor só para ver até onde ele vai.

Lembre-se de que o ar é compressível e os líquidos não são. Se você encher a seringa de líquido o sensor vai reagir com um movimento muito menor.

Devido à sensibilidade do sensor, apertar o tubo com os dedos provocará uma variação grande na leitura. O mero movimento do tubo pode ser registrado no modelo MPX5010DP.

Segundo o datasheet, as entradas são protegidas com um gel, o que permite que eventualmente haja entrada de líquido no sensor sem dano imediato. Porém o “meio” recomendado pela Freescale para contato com o sensor é ar seco, por isso você deve deixar uma coluna de ar (quanto menor, melhor) entre o fluido que você quer medir e o sensor. Mesmo água pura pode danificar o sensor se houver contato prolongado. Estude a AN3728 (Media Compatibility for IPS PRT Pressure Sensors) para maiores informações.

Dos seis terminais, que são padrão nesse encapsulamento, apenas três são usados. Eu tomei a liberdade de isolar os terminais inúteis para reduzir as chances de engano na hora de ligar.

Os terminais de pressão e vácuo são idênticos e você não deve aplicar pressão no terminal de vácuo e vice-versa. Para evitar que você se confunda, eu etiquetei claramente o terminal de pressão.

Este sensor parece ter proteção contra inversão de polaridade. Se você ligar ao contrário, a alimentação fica em curto, o que de qualquer forma não é aconselhável. Tomei o cuidado de identificar os três terminais com cores.

Teste/exemplo

Ligue a saída do sensor no pino A0 do Arduino e rode o sketch Examples->Analog->AnalogInOutSerial. Observe a leitura pelo Monitor Serial.

O primeiro valor para um MPX5010DP deve começar por volta de 33 (não exatamente, mas sempre será um valor baixo). Esse é o valor na pressão ambiente. Esse valor deveria ser zero se o sensor fosse perfeito, mas não é. Procure no datasheet do modelo escolhido o valor Voff para ter uma idéia de qual o valor mínimo na saída do sensor.  Você pode mudar a faixa de valores reportados usando o comando “map”, conforme o exemplo.

Conecte uma seringa na entrada de pressão do sensor. Se você estiver usando um modelo sensível como o MPX5010 o simples fato de conectar a seringa já causará uma mudança no valor medido. Pressione o êmbolo e os valores devem subir proporcionalmente.

Eu não posso dar um exemplo com saída em litros, porque isso depende do volume do seu reservatório. 1cm de água em um copo ou numa piscina olímpica dão exatamente a mesma pressão e o mesmo valor de saída do sensor. Você precisa fazer os cálculos para determinar quantos litros correspondem a cada mm de coluna d’água no seu reservatório e depois mapear isso para os valores de saída do sensor.

Exemplo com calibração simplificada

O sensor não precisa ser calibrado, mas o equipamento que vai usá-lo precisa. De modo grosseiro o equipamento pode ser calibrado da seguinte forma:

  • Deixe as entradas desconectadas, para que o o sensor só sinta a pressão atmosférica. Leia o valor que a saída produz e registre esse valor como a constante “valorZero”;
  • Conecte o sensor ao sistema a medir e simule a máxima pressão. Se for uma caixa de água, encha-a. Leia o valor que a saída produz e registre esse valor como a constante “alturaMaxima”.

Digamos que você tenha instalado o sensor rente ao fundo do reservatório e que cheio esse reservatório tenha 800mm de água. Para saber quantos mm de água tem o reservatório num dado instante você pode usar a função map como a seguir:

mmDeAgua = map(saidaDoSensor, valorZero, alturaMaxima, 0, 800);

Essa função vai mapear todos os valores medidos entre os valores da calibração pra os valores “reais”.

Lembre-se: este é um exemplo simplificado. Sua aplicação pode exigir calibração e mapeamentos mais complexos.

Informação acrescentada por um visitante:

Para medir a vazão e/ou velocidade, consulte este texto.  A vazão (e, obviamente, a velocidade) podem ser expressadas a partir da raiz quadrada da pressão diferencial, uma vez que os outros parâmetros são fixos e deverão ser determinados experimentalmente…

Datasheet Freescale MPX5010
456.7 KiB
3575 Downloads
Detalhes...
Datasheet Freescale MPX5050
386.9 KiB
2678 Downloads
Detalhes...

Display TFT de 3.2″ com touchscreen

Módulo TFT
Shield adaptador
Conjunto montado

Aparência do módulo ligado, rodando o demo. Na foto abaixo eu mostro um modelo azul, mas o modelo ofertado neste anúncio é vermelho.

O kit vermelho está no fim. Novos compradores deverão receber o kit azul. Funcionalmente é a mesma coisa.

Shield_Adaptador_TFT_IMG_1182_640_automalabs.com.br

É importante ter em mente que o display, a touchscreen e o leitor de cartões são independentes. Você pode testar cada um separadamente.

 

Bibliotecas necessárias:

UTFT

UTouch

Com estas bibliotecas instaladas, seus exemplos funcionam com este kit sem maiores modificações, exceto talvez a calibração do touchscreen. Mas atente para o fato de que os demos vem ajustados para o Arduino UNO e se você estiver usando um Mega precisará comentar uma linha e “descomentar” outra. Cada sketch de demo mostra qual é.

 

Coordenadas da touchscreen invertidas
Se rodando o exemplo Button Test, ao apertar um botão for acionado outro na outra extremidade, é porque o digitalizador apresenta coordenada X invertida

Troque (no sketch exemplo):

x=myTouch.getX();

por:

x=320-myTouch.getX();

Se a calibração da touchscreen não funcionar, leia as instruções (desatualizadas) a seguir, pois eu explico como resolver isso.

O que se segue está desatualizado e vou manter aqui porque pode ser útil caso você precise adaptar um programa antigo

Bibliotecas necessárias:

UTFT
http://www.henningkarlsen.com/electronics/library.php?id=51

ITDB02_Touch
http://www.henningkarlsen.com/electronics/library.php?id=55

Nota: ITDB02_Touch mudou recentemente para outra biblioteca. Talvez você tenha que fazer adaptações. Por isso estou mandando em anexo as versões que eu uso.


Para testar o display
(sem o touchscreen)

Abra o exemplo UTFT->Arduino->UTFT_Demo_320x240

Substitua essas quatro linhas (inclui comentários):
// Uncomment the next line for Arduino 2009/Uno
UTFT myGLCD(ITDB32S,19,18,17,16);   // Remember to change the model parameter to suit your display module!
// Uncomment the next line for Arduino Mega
//UTFT myGLCD(ITDB32S,38,39,40,41);   // Remember to change the model parameter to suit your display module!
por:
UTFT myGLCD(ITDB32S,38,39,40,41);
Execute o teste
Touchscreen
O sketch exemplo de calibração da biblioteca não funciona.
Eu já testei com várias telas e nunca funcionou. É preciso editar ITDB02_Touch.cpp para fazer a calibração.Você precisa editar o arquivo:
libraries\ITDB02_Touch\ITDB02_Touch.cpp
Substitua os quatro primeiros parâmetros por isto:
#define PixSizeX    -16
#define PixOffsX    206
#define PixSizeY    11
#define PixOffsY    380
Feche o IDE se estiver aberto e abra de novo, para validar a modificação.
Abra o exemplo ITDB02_Touch->ITDB02_Touch_ButtonTest
Substitua#include <ITDB02_Graph.h>

por

#include <UTFT.h>

Substitua:

// Uncomment the next two lines for the ITDB02 Shield
ITDB02        myGLCD(19,18,17,16);
ITDB02_Touch  myTouch(15,10,14,9,8);

// Uncomment the next two lines for the ITDB02 Mega Shield
//ITDB02        myGLCD(38,39,40,41);   // Remember to add ASPECT_16x9 if you are using an ITDB02-3.2WC!
//ITDB02_Touch  myTouch(6,5,4,3,2);

por:
UTFT myGLCD(ITDB32S,38,39,40,41);  // Remember to add ASPECT_16x9 if you are using an ITDB02-3.2WC!
ITDB02_Touch  myTouch(6,5,4,3,2);

Compile e teste.

Bibliotecas e arquivos de suporte:

Módulo RFID 125KHz com saída UART – RDM6300

Com este módulo você poderá ler tags RFID de 125khz no arduino, ou em qualquer computador, desde que use também um adaptador serial TTL-USB.

Não deixe a quantidade de pinos intimidar você. A conexão mínima só requer três fios:

  • +5V
  • GND
  • TX (para o Arduino, PC, etc)

Nota: O módulo tem um pino RX, mas seu propósito não é esclarecido.

Diagrama de conexão, com o módulo visto por baixo:

O módulo tem um microcontrolador próprio, que se encarrega de todo o trabalho de decodificação RFID, já entregando na saída o número da tag (chaveiro, cartão, etc).

A saída é serial UART TTL padrão (9600bps, 8,N,1). Para usar com qualquer Arduino, nenhum hardware extra é necessário, porque basta ligar o TX do módulo ao RX do Arduino. Caso você use um Arduino que só tem uma porta serial como o Duemilanove e o Uno, pode usar a biblioteca NewsoftSerial para criar uma porta “virtual” em qualquer outro pino e assim liberar a porta serial padrão para outras tarefas.

Para usar com um computador, é preciso usar um conversor USB-serial TTL ou RS232 – TTL.

Alcance da antena: no máximo 3cm.

Proteção contra inversão de polaridade por diodo em série.

O número da tag é transmitido em um formato codificado que é explicado no datasheet em anexo, que é o único oferecido pelo fabricante. Eu o acho um bocado confuso, por isso escrevi um programa em Delphi, também em anexo, que ajudará você a entender como o número transmitido se relaciona com o real, escrito na tag. Porém em boa parte das aplicações o número escrito na tag é irrelevante, pois o que importa é que o usuário apresente uma tag que está registrada no sistema. O número impresso só se torna importante quando você quer testar a tag ou correlacionar o uso das tags com um usuário específico.

Exemplo da tela do programa:

Para testar com um arduino você pode usar o ótimo exemplo de Mario Boehmer, que reproduzo abaixo ligeiramente traduzido (ligue o TX ao pino D6 do arduino):

Atenção: Requer a biblioteca NewsoftSerial e para funcionar no Arduino 1.x requer modificações (testei no 0.22).


//http://marioboehmer.blogspot.com.br/2011/01/rfid-with-arduino.html

#include "NewSoftSerial.h"
#define stx 2
#define etx 3

NewSoftSerial mySerial(6, 7);
int counter;
byte data[14];
byte hexBlock1,hexBlock2,hexBlock3,hexBlock4,hexBlock5;
byte hexCalculatedChecksum,hexChecksum;

void setup() {
Serial.begin(9600);
mySerial.begin(9600);
}

void loop() {
if (mySerial.available() > 0) {
data[counter] = mySerial.read();
counter++;
if(counter > 13) {
//we read the whole message, so reset counter
counter = 0;
//check if start of text and end of text is correct
if(data[0] == stx && data[13] == etx) {
Serial.println("Caracteres STX e ETX corretamente recebidos");
Serial.print("ID: ");
//show ID
for(int x = 1; x < 11; x++) {
Serial.print(data[x], BYTE);
}
Serial.println("");
Serial.print("Checksum: ");
//show checksum
Serial.print(data[11], BYTE);
Serial.println(data[12], BYTE);

//Hex ID blocks. Two transmitted Bytes form one Hex ID block.
//Hex ID blocks:      6   2  |  E   3  |  0   8  |  6   C  |  E   D
//Transmitted Bytes: 36H 32H | 45H 33H | 30H 38H | 36H 43H | 45H 44H
hexBlock1 = AsciiCharToNum(data[1])*16 + AsciiCharToNum(data[2]);
hexBlock2 = AsciiCharToNum(data[3])*16 + AsciiCharToNum(data[4]);
hexBlock3 = AsciiCharToNum(data[5])*16 + AsciiCharToNum(data[6]);
hexBlock4 = AsciiCharToNum(data[7])*16 + AsciiCharToNum(data[8]);
hexBlock5 = AsciiCharToNum(data[9])*16 + AsciiCharToNum(data[10]);

//Transmitted checksum.
hexChecksum = AsciiCharToNum(data[11])*16 + AsciiCharToNum(data[12]);

//XOR algorithm to calculate checksum of ID blocks.
hexCalculatedChecksum = hexBlock1 ^ hexBlock2 ^ hexBlock3 ^ hexBlock4 ^ hexBlock5;
if ( hexCalculatedChecksum == hexChecksum )
{
Serial.println("Checksum calculado confere com checksum transmitido.");
}
else {
Serial.println("Checksum calculado NAO confere com checksum transmitido. Dados corrompidos!");
}
}
}
}
}

uint8_t AsciiCharToNum(byte data) {
//First substract 48 to convert the char representation
//of a number to an actual number.
data -= '0';
//If it is greater than 9, we have a Hex character A-F.
//Substract 7 to get the numeral representation.
if (data > 9)
data -= 7;
return data;
}

Arduino Pro Mini

A finalidade do Arduino Pro Mini é facilitar a instalação de um projeto baseado em arduino em espaços limitados. A placa é minúscula, medindo apenas 3,3 x 2,3 cm.

Eu só trabalho com o modelo de 5V e 16Mhz, que é funcionalmente idêntico ao Duemilanove e ao Arduino Nano. Só não vem com o conversor TTL-USB incorporado.

Existe uma versão de 3.3V que parece ideal para aqueles projetos onde a maioria dos periféricos operam nessa tensão. Porém existe uma desvantagem: o Pro Mini de 3.3V opera a apenas 8Mhz. Metade da velocidade da versão regular.

Adaptador RS232 – Serial TTL baseado em MAX232

Esse adaptador é usado quando você precisa conectar um dispositivo serial TTL (como o arduino) a um dispositivo serial RS232, como o PC, balanças, impressoras, etc.

O jumper que você vê entre TXD e RXD permite o teste rápido do adaptador (loopback). Para usar, remova o jumper e use os cabinhos para ligar TXD, RXD e GND ao dispositivo TTL. A alimentação de 5V desse adaptador tanto pode vir de uma porta USB, usando o cabo fornecido, quanto ser conectada ao header “GND +5V” no topo da imagem.

O conector é DB9 fêmea.

Adaptador USB – Serial TTL CP2102 tipo Breakout (todos os sinais acessíveis)

Se você precisa montar um arduino na protoboard este é o modelo ideal de adaptador para fazer a programação, porque permite o upload automático sem a necessidade de apertar o botão reset num determinado momento. Basta ligar o sinal DTR do adaptador ao reset por meio de um capacitor de 100nF (posso fornecer todo o material necessário para a montagem do arduino na protoboard).

Atenção: Este módulo usa um ponto de vista invertido (ou é erro mesmo) na determinação de quem é RX e TX. Para conectar ao arduino ou a módulos bluetooth, ligue RXD a RX e TXD a TX.

Pode programar tanto designs com bootloader duemilanove quanto designs com bootloader UNO.

Também pode ser usado para programar o Arduino Pro Mini conectando o DTR ao pino “GRN” (green) da placa. Nesse caso você não precisa do capacitor porque, pelo menos no modelo de Pro Mini que eu forneço, já existe um capacitor entre GRN e RST.

O serial number do chip pode ser facilmente modificado via software de forma que dois ou mais módulos sempre assumam a mesma porta serial no PC (se o número for o mesmo) ou assumam portas diferentes (serial diferente).

Funciona também com a Gboard.

Veja também:

Kits SMARTCAR (carro robô)

Nota 1: todas as plataformas são de acrílico transparente. As fotos mostram as plataformas ainda protegidas por película adesiva de papel madeira.

Nota 2: os kits de quatro rodas são melhores quando seu percurso é mais ou menos reto e com obstáculos (algo que requer “tração 4×4”) ou você precisa carregar mais peso ou requer mais espaço. Se você precisa de algo mais manobrável é melhor pegar um kit com duas rodas. Por exemplo, para dobrar uma esquina com duas rodas basta parar uma delas e o carro girará tendo ela como eixo. O rodízio traseiro ajuda muito. Isso é bem mais complicado e menos elegante de fazer em um kit com quatro rodas, porque nenhuma delas se inclina. Lembrando também que os kits com quatro rodas consomem o dobro da energia, pois você não pode simplesmente deixar um motor desligado se não precisar dele (a caixa de redução impede a roda de girar livremente).

1 plataforma e 2 motores – Kit1

1 plataforma e 2 motores – Kit2

2 plataformas e 2 motores

2 plataformas e 4 motores

Comparação de tamanhos dos chassis

Também disponho de motores e rodas avulsos.