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

Torre Nerf Bluetooth

Componentes e suprimentos

Arduino Nano R3
× 1
Módulo Bluetooth HC-05
× 1
Conversor de buck LM2596
× 1
Servos MG-90s
× 3
motores tipo 130 dc
× 2
Diodo retificador FR207
× 1
RFP30N06LE mosfet
× 1
plugue jack 2.1x5.5mm
× 1
resistores 10kΩ
× 1
resistores 330Ω
× 1
resistores 680Ω
× 1
Parafusos autorroscantes M2x10
× 30
Parafuso escareado M5 * 20
× 4
conectores dupont
× 15
Haste de metal de 1,5 mm
× 1
fios
× 1
tubos termoencolhíveis
× 1
elástico de 20 mm
× 1
Fonte de alimentação de 9 V (mínimo de 2,5 amps)
× 1

Ferramentas e máquinas necessárias

chave de fenda
stripper
alicate
ferro de solda
multímetro
ferramenta de crimpagem
Impressora 3D

Aplicativos e serviços online

Microsoft Windows 10

Sobre este projeto


Obrigado por verificar meu projeto de torre Nerf controlado por Bluetooth. Não acho que haja muito o que explicar aqui, esta é uma torre Nerf controlada via Bluetooth a partir de um dispositivo Android ou PC.

.................... https://www.littlefrenchkev.com/bluetooth-nerf-turret ............... .....





COMO FUNCIONA?


Nada super complexo. O movimento de inclinação e panorâmica é controlado por 2 servos acionados por um Arduino Nano.

Os dardos são disparados usando 2 rolos girados por 2 pequenos motores DC. Um servo empurra os dardos para os rolos quando a ordem para atirar é enviada. O carregador pode conter 7 dardos.

Como mencionado acima, ele é controlado via Bluetooth a partir de um dispositivo Android ou de um PC.





COMO CONSTRUIR?


CONJUNTO :

O tripé e a revista vêm em duas versões diferentes. Um projetado para servos MG-90s e o outro para servos MG996r. Os servos MG996r podem consumir muita energia. Certifique-se de que sua fonte de alimentação estará à altura do trabalho se você decidir usá-la.

Tripé:

Revista :

FIAÇÃO :

SOFTWARE E TESTE !!!





ALGUMAS FOTOS EXTRA PORQUE NÃO !!!




Código

  • código Arduino
Código do Arduino Arduino
código para fazer upload para o arduino. O código permanece o mesmo se você optar por controlar a torre por meio do aplicativo Android ou de um PC.
 #include  // ----- Declarar servos e variáveisServo recoil_servo; Servo pan_servo; Servo tilt_servo; const byte pan_limit_1 =0; const byte pan_limit_2 =180; const byte tilt_limit_1 =65; const byte tilt_limit_2 =180; const byte recoil_rest =180; // Ângulo do servo quando em repouso byte recoil_pushed =125; // Ângulo que o servo precisa alcançar para empurrar o dardo // ----- Variáveis ​​relacionadas ao manuseio de dados seriais byte_from_app; const byte buffSize =30; byte inputBuffer [buffSize]; const byte startMarker =255; const byte endMarker =254; byte bytesRecvd =0; boolean data_received =false; // ----- Variável relacionada ao tempo do motor e firingbool is_firing =false; bool can_fire =false; bool recoiling =false; sem sinal longo firing_start_time =0; unsigned long firing_current_time =0; const long firing_time =150; unsigned long recoil_start_time =0; unsigned long recoil_current_time =0; const long recoil_time =2 * firing_time; const byte motor_pin =12; boolean motors_ON =false; // 8 ===========================Dvoid setup () {// ----- define o modo pin do motor pinMode (motor_pin, OUTPUT); digitalWrite (motor_pin, LOW); // ----- anexa o servo aos pinos recoil_servo.attach (9); pan_servo.attach (10); tilt_servo.attach (11); // ----- sequência de início recoil_servo.write (recoil_rest); pan_servo.write (90); atraso (1000); tilt_servo.write (105); Serial.begin (9600); // iniciar a comunicação serial} // 8 =============================Dvoid loop () {getDataFromPC (); set_motor (); if (dados_ecebidos) {move_servo (); set_recoil (); set_motor (); } fire ();} // 8 =============================Dvoid getDataFromPC () {// estrutura de dados esperada [byte inicial , quantidade de pan, quantidade de inclinação, motor ligado, botão de disparo pressionado, byte final] // byte inicial =255 // quantidade de pan =byte entre 0 e 253 // quantidade de inclinação =byte entre 0 e 253 // motor ligado =0 para off - 1 on // botão de disparo pressionado =0 para não pressionado - 1 para pressionado // fim do byte =254 if (Serial.available ()) {// Se os dados estiverem disponíveis em serial byte_from_app =Serial.read (); // ler o próximo caractere disponível if (byte_from_app ==255) {// procurar byte inicial, se encontrado:bytesRecvd =0; // redefine o byte recebido para 0 (para começar a preencher o inputBuffer desde o início) data_received =false; } else if (byte_from_app ==254) {// procura o byte final, se encontrado:data_received =true; // defina data_received como true para que os dados possam ser usados} else {// adiciona bytes recebidos ao buffer inputBuffer [bytesRecvd] =byte_from_app; // adiciona o caractere ao buffer de entrada bytesRecvd ++; // incrementa o byte recebido (isso age como um índice) if (bytesRecvd ==buffSize) {// apenas uma segurança no caso de o inputBuffer preencher (não deveria acontecer) bytesRecvd =buffSize - 1; // if bytesReceived> tamanho do buffer conjunto bytesReceived menor que o tamanho do buffer}}}} // 8 =============================Dvoid move_servo ( ) {byte pan_servo_position =map (inputBuffer [0], 0, 253, pan_limit_2, pan_limit_1); // converter valor inputbuffer para valor de posição servo pan_servo.write (pan_servo_position); // definir byte de posição do servo pan tilt_servo_position =map (inputBuffer [1], 0, 253, tilt_limit_2, tilt_limit_1); // converte o valor do inputbuffer para o valor da posição do servo tilt_servo.write (tilt_servo_position); // definir a posição do servo pan} // 8 =============================Dvoid set_recoil () {if (inputBuffer [3] ==1) {// se o botão de disparo for pressionado if (! Is_firing &&! Recuo) {// e ainda não disparando ou recuando can_fire =true; // set pode disparar para verdadeiro (veja o efeito em void fire ())}} else {// se o botão de disparo não for pressionado can_fire =false; // set pode disparar para falso (veja o efeito em void fire ())}} // 8 =================================Dvoid set_motor () {// ----- liga e desliga motores usando transisitor MOSFET. if (inputBuffer [2] ==1) {// se a tela tocou digitalWrite (motor_pin, HIGH); // liga o motor motors_ON =true; } else {// se a tela não for tocada digitalWrite (motor_pin, LOW); // DESLIGUE o motor motors_ON =false; }} // 8 =============================Dvoid fire () {// se o byte do motor estiver ligado, ligue o motor e verifique se há tempo que esteve ligado if (can_fire &&! is_firing &&motors_ON) {// if (can_fire &&! is_firing) {firing_start_time =millis (); recuo_início_tempo =millis (); is_firing =true; } firing_current_time =millis (); recuo_atual_tempo =millis (); if (is_firing &&firing_current_time - firing_start_time  recoil_time) {is_firing =false; }} 
arquivos python
O executável e o aplicativo Android podem ser encontrados aqui:https://www.littlefrenchkev.com/bluetooth-nerf-turrethttps://github.com/LittleFrenchKev/Bluetooth_Nerf_turret

Esquemas

Aqui está o diagrama de fiação principal.
A fiação é dividida em pequenas seções interligadas por meio de conectores duplos. Isso é para facilitar a montagem. Aqui está a fiação Bluetooth HC-05.
Este pedaço de fiação inclui um divisor de tensão para permitir que os 5 V que saem do arduino sejam reduzidos a cerca de 3,3 V para o pino do receptor HC-05.

Processo de manufatura

  1. Resistores
  2. Circuito Integrado
  3. Torre Sentinela Nerf Autônoma
  4. Dados digitais Arduino
  5. Sensor de temperatura múltipla
  6. Transforme seu carro RC em carro RC Bluetooth
  7. Controlador de jogo Arduino
  8. MOSMusic
  9. Componentes da máquina de perfuração
  10. Componentes do motor de combustão interna