Përmbajtje:

Një karikues automatik i telefonit: 6 hapa (me fotografi)
Një karikues automatik i telefonit: 6 hapa (me fotografi)

Video: Një karikues automatik i telefonit: 6 hapa (me fotografi)

Video: Një karikues automatik i telefonit: 6 hapa (me fotografi)
Video: 5 Menyra per te Karikuar Telefonin tuaj me shpejte ! 2024, Korrik
Anonim
Një karikues automatik i telefonit
Një karikues automatik i telefonit

"Ky udhëzues u krijua në përmbushje të kërkesës së projektit të Makecourse në Universitetin e Floridës së Jugut (www.makecourse.com)"

Ideja që qëndron pas këtij projekti ishte krijimi i një pajisjeje që mund të karikonte një telefon dhe më pas ta shkëpuste atë kur telefoni të arrijë 100%. Kjo do të ndalonte çështjet e ngarkimit të tepërt.

Hapi 1: Komponentët plastikë

Komponentet plastike
Komponentet plastike
Komponentet plastike
Komponentet plastike
Komponentet plastike
Komponentet plastike
Komponentet plastike
Komponentet plastike

Kishte disa përbërës që u përdorën që u printuan 3D. Këta përbërës përbëheshin nga një bazë, një mbajtëse për karikuesin, një raft dhe një pajisje ingranazhi (një ingranazh normal dhe një pjesë lineare që ndryshon rrotullimin në lëvizje lineare) dhe një bazë për të funksionuar gjithçka. Këta përbërës do të shpjegohen në paragrafët e mëposhtëm. Me rendin e paraqitjes

Mbajtës i karikuesit

Qëllimi i kësaj është të mbani karikuesin e telefonit, ose të paktën t'i jepni atij një bazë më të mirë dhe të nivelit.

Baza

Baza ka unaza për mbajtësin e telefonit, si dhe një pistë për grupin e ingranazheve.

Mbajtës i telefonit

Mban telefonin, padyshim

Krahu i Telefonit

Lëviz dhe mban telefonin

Set Rack and Pinion Gear Set

Përdoret për të lëvizur ngarkuesin e telefonit mbrapa dhe me radhë

Hapi 2: Prishja e Komponentëve Jo të Shtypur 3D

Këto janë komponentët që ose janë blerë për projektin ose tashmë janë në pronësi. Për disa nga pjesët që lidha me to/artikuj të ngjashëm në amazon, por mos ngurroni t'i blini ato kudo.

Mikro Servo:

Servo standarde 0-180:

Moduli Serial HC-05 Bluetooth:

Karikues për telefon dhe telefon

Arduino

Breadboard

Kuti ose kosh për bazën

Sensori i Prekjes:

Hapi 3: Elektronikë

Elektronikë
Elektronikë

Qarku për këtë projekt mund të kërkojë disa, kryesisht për shkak të modulit HC-05. Shumë nga modulet e këtij lloji janë me një normë prej afërsisht 3.3V deri në 6V, e cila është në gamën e funksionimit të Arduino. Por, për komunikimin serik pini Rx nganjëherë funksionon më mirë me vetëm 3.3V. Siç shihet në diagramin e mësipërm, dy servos janë të lidhur në kunjin Vin në Arduino. Ky tension shtesë mund të furnizohet nga çdo gjë, unë kam përdorur një bateri 9 volt. Sensori i prekjes ishte i lidhur me 5V në Arduino. Kjo ishte për shkak se të gjithë përbërësit kishin probleme me rrjedhjen e të njëjtit tension. Sensori i prekjes është i bashkangjitur në kunjin 2, kështu që mund të përdoret si ndërprerës i kunjave. Pastaj moduli bluetooth lidhet me kunjat Rx dhe Tx për komunikim serik. Midis kunjit Rx në modul dhe Tx në Arduino është një rezistencë 2 kilogramë me një ohm 1 kilogram që lidhet me tokën. Kjo ndihmon për të rregulluar tensionin që hyn.

Hapi 4: Asambleja

Kuvendi
Kuvendi

Asambleja është mjaft e thjeshtë.

  1. me disa super ngjitës montoni servot tuaja në pozicionet e tyre, një për ingranazhin me prerjen në bazë dhe një pranë vendit ku është baza e telefonit.
  2. Bashkangjiteni sensorin e prekjes te mbajtësi i telefonit, në mënyrë që të dijë kur telefoni është atje.
  3. Pastaj lidhni ingranazhin dhe krahun në servot e tyre përkatëse
  4. Sigurohuni që telat të mos ndërhyjnë me përbërësit e tjerë ndërsa mbushni pajisjet elektronike

Hapi 5: Kodi

Ekzistojnë tre grupe kodesh që do të paraqiten, një kod për Arduino, i krijuar në Arduino IDE dhe dy kode që janë bërë në Android Studio. Aplikacionet Android janë të njëjta përveç që një është aplikacioni i plotë që ndjek jetën e baterisë dhe tjetri jo. E dyta është për qëllime testimi.

Kodi Arduino

Pika kryesore e këtij kodi është funksionimi i sensorit të prekjes dhe motorëve, ai merr një komandë nga telefoni dhe vepron mbi të.

#include // thërret servo bibliotekën që të mund të kontrollojmë dy servosServo servo1; Servo servo2; // krijon dy servo objekte për secilin servo motor int a = 0; // variabla përcjellëse për testimin int q = 0; // një ndryshore që lejon të ketë një vonesë para fillimit të procesit pluggin char c; // variabla që përmban mesazhin serik nga telefoni void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // i bashkon një ndërprerje në rënie për të ditur saktësisht kur sensori i prekjes sheh kur telefoni është jashtë në servo1.attach (10); servo2.attach (9); // inicializon dy servos Serial.begin (9600); // fillon komunikimin serik me një ritëm të ngjashëm me atë të modulit bluetooth servo2.write (20); // auto i vendos servot në një pozicion fillestar servo1.shkruani (180); }

lak void () {

nëse (Serial.disponueshëm ()) {// kjo kontrollon nëse ka ndonjë gjë që vjen nga telefoni mbi kunjat serikë Tx dhe Rx c = Serial.read (); // lexon atë që vjen nga nëse (c == 't') {// nëse pajisja serike lexon atëherë kjo do të thotë që telefoni është plotësisht i ngarkuar, procesi i shkëputjes fillon servo2.write (120); // shkëput vonesën e karikuesit (5000); // pret për t'u siguruar ka kohë për heqjen servo1.write (110); // e lëviz telefonin në një pozicion të drejtë për të sinjalizuar //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // e bashkon ndërprerjen}} if (q == 1) {// nëse kushti për pluggin in është i tillë atëherë filloni me bashkimin e vonesës së ngarkuesit (10000); servo2.write (0); // zhvendos servo në pozicionin q = 0; // rivendos gjendjen}}

e pavlefshme AH () {

//Serial.println("in "); servo1.write (180); // e hedh platformën e telefonit në pozicionin e karikimit q = 1; // fillon gjendjen për të vazhduar procesin // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // shkëput ndërprerjen, kështu që nuk do të ketë probleme me ndërprerjen duke filluar kur nuk duhet}

Aplikacioni Android

Këtu do të shfaq vetëm aplikacionin e duhur por skedari i kodit të testit gjithashtu do të jepet, ndryshimi i vetëm do të jetë heqja e klasës runnable dhe getBattery. Kodi serik i përmendur është ai që është standard për telefonat që lidhen me pajisje si moduli.

paketë com.shembull.daniel.make; import android.bluetooth. BluetoothAdapter; import android.bluetooth. BluetoothDevice; import android.bluetooth. BluetoothSocket; import android.os. Handler; importoni android.support.v7.app. AppCompatActivity; importoni android.os. Bundle; import android.mbajtja. Intent; import android.content. IntentFilter; import android.os. BatteryManager; import java.io. IOException; import java.io. OutputStream; import java.util. Set; importo java.util. UUID;

klasa publike MainActivity zgjeron AppCompatActivity {

// krijimi i objekteve të nevojshme Handler handler; // ndihmon me loop Runnable runnable; // funksionon vazhdimisht BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Pajisja Bluetooth mmPajisja; Rrjedha dalëse mmOutputStream; ndalues i paqëndrueshëm booleanPunëtor; privat OutputStream outputStream; vargu privat përfundimtar DEVICE_NAME = "HC-05"; privat përfundimtar UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); pajisje private BluetoothAdapter; prizë private BluetoothSocket; @Override mbrojtur zbrazëti onCreate (Pako e ruajturInstanceState) {// është një grup udhëzimesh që funksionojnë kur aplikacioni krijohet super.onCreate (ruajturInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = i ri Runnable () {@Override public void run () {// shkon në mënyrë të përsëritur int level = (int) getBattery (); // merr nivelin aktual të baterisë nëse (niveli == 100) {// nëse niveli i baterisë arrin 100% try {getBT (); // lidhet me modulin bluetooth openBT (); // e hap sendData (); // dërgon të dhënat e nevojshme closeBT (); // mbyll objektin} kapjen (IOException ex) { }} handler.postDelayed (drejtohet, 5000); // një vonesë}}; mbajtës = Handler i ri (); handler.postDe vonuar (e drejtueshme, 0); }

noton publik getBattery () {

BatteryIntent = registerReceiver (null, IntentFilter i ri (Intent. ACTION_BATTERY_CHANGED)); // krijon veprimin që lidhet me nivelin e baterisë int = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // merr nivelin më të mirë int shkallë = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // merr shkallën e baterisë nëse (niveli == -1 || shkalla == -1) {// në rast të kthimit të gabuar 50.0f; } float batt = (niveli/(float) shkalla)*100.0f; // merr shkallën e duhur të kthimit batt; // kthen nivelin}

void getBT () {// merr lidhjet e mundshme bluetooth

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // merr përshtatësin nëse (! mBluetoothAdapter.isEnabled ()) {// sigurohet që telefoni të ketë dhëmb blu në Intent enableBluetooth = Synimi i ri (BluetoothAdapter. ACTION_REQUEST_ENABLE); // kërkesat i aktivizuar nëse jo startActivityForResult (aktivizo Bluetooth, 0); } Vendos pairedDevices = mBluetoothAdapter.getBondedDevices (); // merr listën e bluetooth -it të lidhur nëse (pairedDevices.size ()> 0) {// sigurohet që ka disa pajisje për (pajisja BluetoothDevice: pairedDevices) {// lakohet përmes pajisjet if (device.getName (). barabartë ("HC-05")) {// kontrollon nëse është e duhura mmDevice = pajisje; // kursen prishjen; }}}}

void openBT () hedh IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // lidhet me pajisjen me id -në e duhur mmSocket.connect (); // lidh mmOutputStream = mmSocket.getOutputStream (); // fillon aftësinë për të dërguar të dhëna në modulin arduino}

void sendData () hedh IOException {// class që dërgon t në arduino

mmOutputStream.write ('t'); }

void closeBT () hedh IOException {// mbyll të gjitha lidhjet me arduino

stopWorker = e vërtetë; mmOutputStream.close (); mmSocket.close (); }}

Hapi 6: Skedarët

Faleminderit për leximin, bashkëngjitur janë skedarët që janë përdorur në këtë projekt

Recommended: