Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bluetooth Nerf-torentje

Componenten en benodigdheden

Arduino Nano R3
× 1
HC-05 Bluetooth-module
× 1
LM2596 buck-converter
× 1
MG-90s servo's
× 3
type 130 gelijkstroommotoren
× 2
FR207 gelijkrichterdiode
× 1
RFP30N06LE mosfet
× 1
2.1x5.5mm jackplug
× 1
weerstanden 10kΩ
× 1
weerstanden 330Ω
× 1
weerstanden 680Ω
× 1
M2x10 zelftappende schroeven
× 30
M5*20 verzonken schroef
× 4
dupont-connectoren
× 15
1,5 mm metalen staaf
× 1
draden
× 1
krimpkous
× 1
20 mm rubberen band
× 1
9V-voeding (minimaal 2,5 ampère)
× 1

Benodigde gereedschappen en machines

schroevendraaier
draadstripper
tang
soldeerbout
multimeter
krimptang
3D-printer

Apps en online services

Microsoft Windows 10

Over dit project

Bedankt voor het controleren van mijn Bluetooth-gestuurde Nerf-turret-project. Ik denk niet dat hier veel uit te leggen valt, dit is een Nerf-turret die via Bluetooth wordt bestuurd, hetzij vanaf een Android-apparaat of een pc.

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

HOE WERKT HET?

Niets super ingewikkelds. De kantel- en panbeweging wordt afgehandeld door 2 servo's aangedreven door een Arduino Nano.

De darts worden geschoten met behulp van 2 rollers die worden rondgedraaid door 2 kleine DC-motoren. Een servo duwt de darts in de rollers wanneer het bevel om te schieten wordt verzonden. Het magazijn kan 7 darts bevatten.

Zoals hierboven vermeld, wordt het bestuurd via Bluetooth vanaf een Android-apparaat of een pc.

HOE HET TE BOUWEN?

MONTAGE:

Het statief en het magazijn zijn er in twee verschillende uitvoeringen. Een ontworpen voor MG-90s servo's en de andere voor MG996r servo's. MG996r-servo's kunnen veel stroom verbruiken. Zorg ervoor dat uw stroomvoorziening het werk aankan als u besluit ze te gebruiken.

Statief :

Tijdschrift :

BEDRADING:

SOFTWARE EN TEST !!!

ENKELE EXTRA FOTO'S WANT WAAROM NIET!!!


Code

  • Arduino-code
Arduino-codeArduino
code om te uploaden naar de arduino. De code blijft hetzelfde, of je nu kiest om de turret te besturen via de Android-app of een pc.
#include //-----Declareer servo's en variabelenServo 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; // Hoek van de servo bij restconst byte recoil_pushed =125; // Hoek die de servo moet reiken om de pijl te duwen //----- Variabelen gerelateerd aan seriële gegevensverwerkingbyte 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;//-----Variabele gerelateerd aan motor timing en firebool is_firing =false;bool can_fire =false;bool recoiling =false;unsigned long fire_start_time =0;unsigned long fire_current_time =0;const lange ontstekingstijd =150;unsigned long recoil_start_time =0;unsigned long recoil_current_time =0;const long recoil_time =2 * ontstekingstijd;const byte motor_pin =12;boolean motoren_ON =false;//8===========================Dvoid setup () {//----- motor pin-modus definiëren pinMode (motor_pin, OUTPUT); digitalWrite (motor_pin, LAAG); //-----bevestigt servo aan pinnen recoil_servo.attach (9); pan_servo.attach(10); tilt_servo.attach (11); //-----startreeks recoil_servo.write (recoil_rest); pan_servo.write(90); vertraging (1000); tilt_servo.write(105); Serieel.begin(9600); // begin seriële communicatie}//8===========================Dvoid loop(){getDataFromPC(); set_motor(); if (data_received) { move_servo(); set_terugslag(); set_motor(); } fire();}//8===========================Dvoid getDataFromPC() {// verwachte structuur van gegevens [start byte , hoeveelheid pan, hoeveelheid tilt, motor aan, ontstekingsknop ingedrukt, eindbyte] //startbyte =255 //panhoeveelheid =byte tussen 0 en 253 //tilthoeveelheid =byte tussen 0 en 253 //motor aan =0 voor uit - 1 aan // vuurknop ingedrukt =0 voor niet ingedrukt - 1 voor ingedrukt // end byte =254 if (Serial.available ()) { // Als gegevens beschikbaar zijn in seriële byte_from_app =Serial.read (); // lees het volgende teken dat beschikbaar is als (byte_from_app ==255) { // zoek naar startbyte, indien gevonden:bytesRecvd =0; // reset byte ontvangen naar 0 (om de invoerbuffer vanaf het begin te vullen) data_received =false; } else if (byte_from_app ==254) {// zoek naar end byte, indien gevonden:data_received =true; // stel data_received in op true zodat de gegevens kunnen worden gebruikt} else { // voeg ontvangen bytes toe aan buffer inputBuffer [bytesRecvd] =byte_from_app; // teken toevoegen aan invoerbuffer bytesRecvd++; // verhoog ontvangen byte (dit werkt als een index) if (bytesRecvd ==buffSize) { // alleen een beveiliging voor het geval de inputBuffer vol raakt (zou niet moeten gebeuren) bytesRecvd =buffSize - 1; // if bytesReceived> buffer size set bytesReceived kleiner dan buffer size } } }}//8===========================Dvoid move_servo( ) {byte pan_servo_position =map (inputBuffer [0], 0, 253, pan_limit_2, pan_limit_1);//convert inputbufferwaarde naar servopositiewaarde pan_servo.write (pan_servo_position); //set pan servo positie byte tilt_servo_position =map (inputBuffer [1], 0, 253, tilt_limit_2, tilt_limit_1); // converteer inputbufferwaarde naar servopositiewaarde tilt_servo.write (tilt_servo_position); //set pan servo positie}//8===========================Dvoid set_recoil() {if (inputBuffer [3] ==1) { // if fire button ingedrukt if (!is_firing &&!recoiling) { // en nog niet vuren of terugdeinzen can_fire =true; // set kan vuren naar waar (zie effect in void fire ()) } } else { // als de vuurknop niet is ingedrukt can_fire =false; //set kan op false vuren (zie effect in void fire()) }}//8===========================Dvoid set_motor () { //----- start en stop motoren met MOSFET-transisitor. if (inputBuffer [2] ==1) { // if screen touched digitalWrite (motor_pin, HIGH); // zet motor AAN motoren_AAN =waar; } else { // als het scherm niet is aangeraakt digitalWrite (motor_pin, LOW); // zet motor UIT motoren_ON =false; }}//8===========================Dvoid fire() { // als motorbyte aan staat, zet motor aan en controleer op keer dat het is ingeschakeld if (can_fire &&!is_firing &&motors_ON) { //if (can_fire &&!is_firing) {fire_start_time =millis(); recoil_start_time =millis(); is_firing =waar; } fire_current_time =millis(); recoil_current_time =millis(); if (is_firing &&shooting_current_time - fire_start_time  recoil_time) { is_firing =false; }}
python-bestanden
Het uitvoerbare bestand en de Android-app zijn hier te vinden:https://www.littlefrenchkev.com/bluetooth-nerf-turrethttps://github.com/LittleFrenchKev/Bluetooth_Nerf_turret

Schema's

Hier is het belangrijkste bedradingsschema.
De bedrading is verdeeld in kleine secties die met elkaar verbonden zijn door middel van dupont connectoren. Dit is voor het gemak van montage. Hier is de HC-05 Bluetooth-bedrading.
Dit stuk bedrading bevat een spanningsdeler waarmee de 5V die uit de Arduino komt, kan worden verlaagd tot ongeveer 3,3V voor de HC-05-ontvangerpin.

Productieproces

  1. Weerstanden
  2. Geïntegreerd circuit
  3. Autonome Nerf Sentry-toren
  4. Arduino digitale dobbelstenen
  5. Multitemperatuursensor
  6. Zet je RC-auto om naar Bluetooth RC-auto
  7. Arduino-gamecontroller
  8. MotionSense
  9. MOSMusic
  10. Onderdelen van boormachine:
  11. Onderdelen van verbrandingsmotor