Índice:

Carro RC Bluetooth com STM32F103C e L293D - Econômico: 5 etapas
Carro RC Bluetooth com STM32F103C e L293D - Econômico: 5 etapas
Anonim
Image
Image
Destrua o Battery Eater!
Destrua o Battery Eater!

Fiz um Arduino Car com Bluetooth como o mostrado aqui, da Ardumotive_com. O problema que eu estava tendo eram as baterias e seu peso, bem como suas despesas. Desde então, bancos de energia baratos para telefones celulares tornaram-se muito acessíveis. Tudo que eu precisava fazer era reduzir o peso. Como sou barato, mudei para o microcontrolador STM32F103C. O microcontrolador STM32F103C pode ser comprado por menos de US $ 2 e é muito menor do que um Arduino. Mudei um pouco da codificação para funcionar com o STM32F103C também.

Suprimentos

  • Um carro de controle remoto barato que consome baterias. Sim, igual ao que Ardumotive_com usa. Você desligará o sistema e usará um banco de energia do telefone. Se você tem recursos para construir seu próprio chassi, faça-o. Fui até a loja de brinquedos na mesma rua e comprei um carro barato por menos de $ 10. O carro consome baterias e o controle remoto consome baterias - perfeito para melhorias.
  • Um banco de poder de telefone-- Eles são super baratos, agora. Afaste-se dos bancos de energia que têm um botão liga / desliga na lateral. Você não conseguirá seguir seu carro e segurar o botão. Isso é bobagem.
  • Um Chip L293D - Este é o H-Bridge duplo que controlará os motores elétricos.
  • Um Módulo Bluetooth HC-06
  • Um interruptor-- eu usei um interruptor liga / desliga simples.
  • Algum fio - fio de telefone seria bom, mas um pouco maior trançado calibre 20 seria melhor.
  • Uma Proto Board ou um pedaço de plástico ou papelão para montar seu Blue Pill e L293D. Sou barato, então criei um sistema um pouco diferente com papelão ondulado fino - como em uma caixa de lâmpada.
  • Dois cabos de carregamento USB baratos - podem ser adquiridos na Dollar Tree. Não use seu bom cabo de programação. Um será cortado para ligar / desligar e o outro carregará a bateria.

Opcional

  • 4 LEDs - se desejar faróis e lanternas traseiras.
  • 4 Resistores de 220 Ohm - para os LEDs em um sistema de 3,3 V.
  • Um piezo ou alto-falante pequeno para uma buzina.

Ferramentas

  • Ferro de solda e solda
  • Hot Glue Gun-- Minha filha é uma Ninja Hot Glue Gun!
  • Decapantes e cortadores de arame
  • NOTA: se você usar a técnica de papelão que estou usando em vez de uma protoplaca, precisará de uma Dremel ou uma pequena broca

Etapa 1: Destrua o Battery Eater

Destrua o Battery Eater!
Destrua o Battery Eater!

É hora de se divertir destruindo o comedor de bateria! Sim, ESSA COISA! Sinta-se orgulhoso de estar fazendo sua parte para tornar o mundo mais verde-- OK, isso é um exagero, mas de qualquer maneira … Vá para o quadro.

Acima, está o mesmo aparelho que fiz a versão do Arduino. A versão do Arduino usava muita bateria, o que tornava o carro mais pesado. Então, eu levei de volta para o quadro. Eu tinha adicionado alguns para-lamas de uma garrafa de plástico e cola quente e customizado o corpo. Mais sobre o corpo depois.

Depois de ter o quadro com os motores e direção nus, descubra de que lado dos terminais do motor estão quais. Use uma bateria ou carregador de 5 V para testar o motor.

No motor de direção, quando as rodas girarem para a direita, identifique o fio positivo da bateria como "3" e o negativo como "6".

No motor de acionamento, quando as rodas girarem para a frente, identifique o fio positivo da bateria como "14" e o negativo como "11".

Etapa 2: o código no IDE do Arduino

O código no IDE do Arduino
O código no IDE do Arduino
O código no IDE do Arduino
O código no IDE do Arduino

Pode ser melhor se você prototipar os componentes eletrônicos do seu carro primeiro em uma placa de ensaio.

OK, esta é uma das partes complicadas. O "Blue Pill" não pode ser programado através da porta USB. Não encontrei uma explicação de programação mais fácil para a "Pílula Azul" do que o vídeo do Youtube de Joop Brokking. Ele explica tudo que você precisa saber, incluindo a biblioteca STMduino de Roger Clarke. Existe uma maneira de instalar um bootloader então você PODE usar o USB para programar o "Blue Pill", mas você tem que programar o bootloader através do Serial Bus de qualquer maneira.

Infelizmente, o barramento serial também é usado pelo adaptador Bluetooth. O programa deve ser instalado através dos pinos Serial Bus, PA9 e PA10, através de um FTDI primeiro, então você pode verificar todas as suas configurações com o adaptador Bluetooth.

Use um protoboard e faça o layout de tudo no protoboard exatamente como o esboço franzido acima. Desconecte as linhas Serial TX e RX do adaptador Bluetooth nos pinos PA9 e PA10 do STM32F103C. Conecte seu FTDI e programa. Certifique-se de que as linhas Serial Bus estão cruzadas, RX para Tx e Tx para RX. Um recebe e o outro dá.

Assim que o programa for carregado, você pode abrir o console serial e enviar

para ver se as luzes estão funcionando. Se as luzes estiverem funcionando, você pode enviar

novamente para desligá-los.

Coloque seu carro em um bloco para elevar os pneus e enviar

As rodas devem avançar. Se não, inverta os fios. Lembre-se de como rotulamos os fios anteriormente. Os pinos correspondentes do L293D devem ser combinados.

Para parar, envie

Vejamos as mudanças significativas no código.

Na seção comentada, começando, você deve ver o originador dos arquivos, da Ardumotive. Os próximos comentários explicam onde eu mudei um pouco para refletir o STM32F103C.

/ * * Criado por Vasilakis Michalis // 12-12-2014 ver.2

* Projeto: Controle de carro RC via Bluetooth com smartphone Android * Mais informações em https://www.ardumotive.com * * Este código foi alterado para caber no STM32F103 por Jim Garbe, [email protected] * Mais informações em https:// github.com / jgarbe / RCCAR_STM32F103C * Observe que os valores de 8 bits 0-255 foram alterados para * refletem os valores de 16 bits 0-65535 * / / ****************** ********* * No STM32, a gravação analógica ainda funciona em 255 de 8 bits, * Mas você pode obter a função completa da faixa PWM, 0-65535, declarando o Pin como PWM * E usando pwmWrite () em vez de analogWrite () **************************** /

Mais notavelmente, os pinos não são nomeados da mesma maneira entre o Arduino e o STM32F103C. Declaramos os pinos usando o próximo conjunto de linhas. Há um pino restante que é declarado bem abaixo no loop. Na linha 197, PA5 é usado para ler o nível da bateria.

//// Conexão L293

const int motorA1 = PB6; // para o pino 15 de L293 const int motorA2 = PB7; // para o pino 10 de L293 const int motorB1 = PB8; // para o pino 7 de L293 const int motorB2 = PB9; // ao Pino 2 de L293 // Leds conectados ao STM32F103C Pino A12 const int lights = PA12; // Buzzer / Alto-falante para Arduino UNO Pin A8 const int buzzer = PA8; // Bluetooth (HC-06 JY-MCU) Pino de estado no pino A11 de STM32F103C const int BTState = PA11;

Além disso, usando analogWrite (); ainda funcionará no "BluePill". Mas é melhor declarar os pinos PWM usando, pinMode (, PWM);

Então use

pwmWrite (,);

NOTA: 8 bits = 0-255, 16 bits = 0-65535

As linhas 32-44 são alterações feitas na bateria. Se for usar a verificação do nível da bateria, você deve usar um divisor de velocidade para a bateria que possui. Esta parte não se reflete no esboço de Fritzing. Existem muitas explicações sobre como criar um divisor de tensão no Youtube. Como o STM32F103C é um chip de 3,3 V, corrigi o código aqui para usar fisicamente um divisor de tensão. O Arduino pode tolerar algumas tensões mais altas por meio dos ADCs fornecidos, mas o "Blue Pill" não.

/ * O nível da bateria será verificado no pino PA5

* Mudou a próxima linha para o STM32F103C porque o ADC não consegue lidar com * nada acima de 3,3 V * Acabei de comentar * Um divisor de tensão, usando dois resistores deve ser calculado e usado * para medir a entrada do ADC mais abaixo no código * exemplo: * GND --- resistor 2K ----------------- resistor 1K ------ 5v * | * | * 3.3v * / // const float maxBattery = 3.3; // Altere o valor para o nível máximo de tensão da bateria!

Etapa 3: coloque tudo junto

Junte tudo
Junte tudo
Junte tudo
Junte tudo
Junte tudo
Junte tudo
Junte tudo
Junte tudo

Costumo usar uma protoplaca para colocar as peças e soldar entre os furos para conectar tudo. Às vezes, eu "soldo" tudo junto para obter uma aparência de solda mais Frankenstein / 3D.

Eu escolhi este método híbrido para tornar o dispositivo limpo e leve - e, claro, BARATO!

Este método também permite a rotulagem. Uma das piores partes da soldagem de deadbug é quando você olha para um chip IC de baixo para cima e esquece qual pino é o quê.

As imagens acima são autoexplicativas. Acho que a parte difícil é encontrar o papelão fino o suficiente para ondular e ficar rígido ao mesmo tempo. Você pode usar plástico também, mas marcá-lo é um pouco mais difícil. Depois de pressionar os pinos na placa e marcar as covinhas, uso uma Dremel para fazer cada furo.

Se você ainda não percebeu, eu só tenho as luzes como plugue acessório na placa. Não estou usando o indicador de bateria, nem o bip. É porque meu projeto tem um propósito diferente. Será autoexplicativo assim que você ver o resultado final com a carroceria do carro. … Mas isso traz outra ideia, há muitos pinos não usados neste projeto. Talvez um abridor de porta-malas, abridor de porta de carro, detonador de cracker,…… ou até mesmo um mini- Gerador de Perturbação de Éter Luminífero Galvani-Edison!

Quando toda a solda estiver concluída, teste antes de colar as juntas a quente para aliviar a tensão nos fios.

Eu usei o mesmo aplicativo Android do Ardumotive, ele pode ser encontrado em

Depois de testar as funções do carro, é hora de colocar a bateria e trocar. Vá para a próxima etapa.

Etapa 4: bateria e switch

OK, é aqui que você não pode seguir exatamente o meu plano.

De alguma forma, você terá que encontrar um bom lugar para colocar a bateria no carro, uma forma de carregar o banco de bateria a partir de um dongle ou uma forma de carregar diretamente o plugue da bateria. No vídeo introdutório, apenas coloquei a bateria e o microcontrolador no porta-retratos e os executei. Quando quis parar, apenas desliguei a bateria. O problema com esta configuração é a perecibilidade dos plugues em seu cabo USB e / ou banco de energia. É melhor ter um switch.

Você também terá que encontrar um bom lugar para o interruptor, onde a carroceria do carro ainda permita o acesso. Usei um interruptor de botão simples (não um interruptor momentâneo) e montei-o na parte inferior da estrutura onde o compartimento da bateria original está localizado.

Você terá que cortar o cabo USB ao meio e colocar a chave entre a bateria e a porta USB STM32F103C. Sim, você pode alimentar o STM32F103C com a porta USB. Você simplesmente não pode programá-lo através da porta USB. Usei uma Dremel novamente para fazer alguns orifícios para os pinos de solda do interruptor. Depois de soldada, usei cola quente, novamente para reforçar as conexões.

Etapa 5: coloque a carroceria do carro no quadro

OK, eu disse que redirecionei a versão original do Arduino desse carro. O produto final real, então, foi um adereço de palco para o balé "O Quebra-Nozes" executado por nossa companhia de balé local. Na cena de abertura, um rato correu pelo palco com a magia acidental de Drosselmeyer. Usei um rato IKEA e instalei-o na parte superior do quadro, Arduino e uma bateria muito maior. O suporte era pesado e não recarregável. Isto é muito melhor!

Divirta-se com seu carro. Lembre-se de que existem muitos outros pinos no STM32F103C que podem ser usados. Talvez um gambá semelhante ao de "Toy Story 4".

Recomendado: