Sisällysluettelo:

Automaattinen puhelinlaturi: 6 vaihetta (kuvien kanssa)
Automaattinen puhelinlaturi: 6 vaihetta (kuvien kanssa)

Video: Automaattinen puhelinlaturi: 6 vaihetta (kuvien kanssa)

Video: Automaattinen puhelinlaturi: 6 vaihetta (kuvien kanssa)
Video: Apple iPhone 11 / unboxing (puhelin, laturi, pikaopas, SIM-työkalu) 2024, Marraskuu
Anonim
Automaattinen puhelinlaturi
Automaattinen puhelinlaturi

"Tämä ohje on luotu täyttämään Etelä -Floridan yliopiston Makecourse -projektin vaatimus (www.makecourse.com)"

Tämän projektin idea oli luoda laite, joka voi ladata puhelimen, ja irrota se sitten, kun puhelin saavuttaa 100%. Tämä lopettaisi ylikuormitusongelmat.

Vaihe 1: Muoviosat

Muoviosat
Muoviosat
Muoviosat
Muoviosat
Muoviosat
Muoviosat
Muoviosat
Muoviosat

Käytettiin joitain 3D -tulostettuja komponentteja. Nämä komponentit koostuivat alustasta, pidikkeestä laturille, hammaspyörän hammaspyörästöstä (tavallinen vaihde ja lineaarinen kappale, joka muuttaa pyörimisen lineaariseksi liikeksi) ja kannan kaikelle toiminnalle. Nämä komponentit selitetään seuraavissa kappaleissa. Ilmestymisjärjestyksessä

Laturin pidike

Tämän tarkoituksena on pitää puhelimen laturi tai ainakin antaa sille parempi ja tasaisempi pohja.

Pohja

Jalustassa on renkaat puhelimen pidikkeelle sekä raita vaihteistolle.

Puhelimen pidike

Ilmeisesti pitää puhelinta

Puhelimen varsi

Liikuttaa ja pitää puhelinta

Hammastanko ja hammaspyörävaihteisto

Käytetään puhelimen laturin siirtämiseen edestakaisin

Vaihe 2: Muiden kuin 3D -tulostettujen osien hajottaminen

Nämä ovat komponentteja, jotka on hankittu hanketta varten tai jo omistettu. Joitakin osia, joihin linkitin niihin/vastaavia kohteita Amazonissa, mutta voit hankkia ne mistä tahansa.

Micro Servo:

Vakio 0-180 Servo:

HC-05 Bluetooth-sarjamoduuli:

Puhelin ja puhelinlaturi

Arduino

Leipälauta

Laatikko tai astia pohjalle

Kosketusanturi:

Vaihe 3: Elektroniikka

Elektroniikka
Elektroniikka

Tämän projektin piiri voi kuitenkin vaatia jonkin verran, lähinnä HC-05-moduulin vuoksi. Monet tämän tyyppisistä moduuleista ovat nopeudeltaan noin 3,3 V - 6 V, mikä on Arduinon toiminta -alueella. Mutta sarjaliikenteessä Rx -nasta toimii joskus paremmin vain 3,3 V: n jännitteellä. Kuten yllä olevasta kaaviosta näkyy, molemmat servot on kytketty Arduinon Vin -nastaan. Tämä ylijännite voidaan toimittaa mistä tahansa, käytin 9 voltin akkua. Kosketusanturi oli kytketty Arduinon 5 V: n jännitteeseen. Tämä johtui siitä, että kaikilla komponenteilla oli ongelmia samasta jännitteestä. Kosketusanturi on kiinnitetty nastaan 2, joten sitä voidaan käyttää nastan keskeytyksenä. Sitten Bluetooth -moduuli on kytketty Rx- ja Tx -nastoihin sarjaliikennettä varten. Moduulin Rx -nastan ja Arduinon Tx: n välissä on 2 kilon ohmin vastus, jonka 1 kilon ohmi on kytketty maahan. Tämä auttaa säätelemään tulevaa jännitettä.

Vaihe 4: Kokoonpano

Kokoonpano
Kokoonpano

Kokoonpano on melko yksinkertainen.

  1. joidenkin superliimojen avulla voit kiinnittää servosi paikoilleen, yksi vaihteelle alustan aukon avulla ja toinen lähellä puhelimen pohjaa.
  2. Kiinnitä kosketusanturi puhelimen pidikkeeseen, jotta se voi tietää, milloin puhelin on siellä.
  3. Kiinnitä sitten vaihde ja varsi vastaaviin servoihin
  4. Varmista, että johdot eivät häiritse muita osia, kun täytät elektroniikkaa

Vaihe 5: Koodi

Esitetään kolme koodisarjaa, yksi Arduino -koodi, joka luotiin Arduino IDE: ssä, ja kaksi koodia, jotka tehtiin Android Studiossa. Android -sovellukset ovat samat paitsi yksi on täysi sovellus, joka seuraa akun kestoa ja toinen ei. Toinen on tarkoitettu testausta varten.

Arduino -koodi

Tämän koodin pääkohta on kosketusanturin ja moottoreiden käyttö, se vastaanottaa puhelimesta komennon ja toimii sen mukaan.

#include // kutsuu servokirjastoa, jotta voimme hallita kahta servoaServo servo1; Servo servo2; // luo kaksi servo -objektia kullekin servomoottorille int a = 0; // seurantamuuttuja testausta varten int q = 0; // muuttuja, joka sallii viiveen ennen kuin laajennusprosessi alkaa char c; // muuttuja, joka sisältää sarjasanoman puhelimen void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // liittää putoavan keskeytyksen tietääkseen tarkalleen milloin kosketusanturi näkee, kun puhelin on poissa servo1.attach (10); servo2.attach (9); // alustaa kaksi servoa Serial.begin (9600); // aloittaa sarjaliikenteen nopeudella, joka on samanlainen kuin Bluetooth -moduulin servo2.write (20); // asettaa servot automaattisesti lähtöasento servo1.write (180); }

void loop () {

if (Serial.available ()) {// tämä tarkistaa, tuleeko puhelimesta mitään sarjaliitäntöjen Tx ja Rx kautta c = Serial.read (); // lukee, mitä tulee jos (c == 't') {// jos sarjalaite lukee silloin, tarkoittaa, että puhelin on ladattu täyteen, irrotusprosessi alkaa servo2.write (120); // irrottaa laturin viiveen (5000); // odottaa varmistuakseen poistoon on aikaa servo1.write (110); // siirtää puhelimen pystyasentoon ilmoittaakseen //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // kiinnittää keskeytyksen uudelleen}} if (q == 1) {// jos laajennuksen ehto on voimassa, aloita laturin viiveen liittäminen (10000); servo2.write (0); // siirtää servon asentoon q = 0; // nollaa ehdon}}

mitätön AH () {

//Serial.println("in "); servo1.write (180); // pudottaa puhelimen alustan latausasentoon q = 1; // käynnistää ehdon prosessin jatkamiseksi // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // irrottaa keskeytyksen, jotta keskeytyksestä ei aiheudu ongelmia, kun sen ei pitäisi}

Android -sovellus

Tässä näytän vain oikean sovelluksen, mutta myös testikooditiedosto annetaan, ainoa ero on juoksukelpoisen ja getBattery -luokan poistaminen. Mainittu sarjakoodi on vakio puhelimille, jotka muodostavat yhteyden laitteisiin, kuten moduuliin.

paketti com.example.daniel.make; tuoda android.bluetooth. BluetoothAdapter; tuoda android.bluetooth. BluetoothDevice; tuoda android.bluetooth. BluetoothSocket; tuoda android.os. Handler; tuo android.support.v7.app. AppCompatActivity; tuoda android.os. Bundle; tuoda android.content. Intent; tuoda android.content. IntentFilter; tuoda android.os. BatteryManager; tuoda java.io. IOException; tuo java.io. OutputStream; tuo java.util. Set; tuo java.util. UUID;

public class MainActivity laajentaa AppCompatActivity {

// tarvittavien objektien luominen Käsittelijän käsittelijä; // auttaa silmukassa Runnable runnable; // toimii jatkuvasti BluetoothAdapter mBluetoothAdapter; Bluetooth -pistorasia mmSocket; BluetoothLaite mmLaite; Lähtövirta mmOutputStream; haihtuva boolen pysäytysTyöntekijä; yksityinen OutputStream outputStream; yksityinen lopullinen merkkijono DEVICE_NAME = "HC-05"; yksityinen lopullinen UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); yksityinen BluetoothAdapter -laite; oma Bluetooth -pistorasia; @Override protected void onCreate (Bundle savedInstanceState) {// on joukko ohjeita, jotka suoritetaan, kun sovellus luodaan super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Orride public void run () {// toimii toistuvasti int level = (int) getBattery (); // saa nykyisen akun varaustason, jos (taso == 100) {// jos akun varaustaso saavuttaa 100% kokeilun {getBT (); // muodostaa yhteyden bluetooth -moduuliin openBT (); // avaa sen sendData (); // lähettää tarvittavat tiedot closeBT (); // sulkee objektin} catch (IOException ex) { }} handler.postDelayed (suoritettavissa, 5000); // a delay}}; käsittelijä = uusi käsittelijä (); handler.postDelayed (ajettavissa, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // luo toiminnon, joka muodostaa yhteyden akkuun int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // saa paremman tason int asteikon = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // saa akun asteikon, jos (taso == -1 || asteikko == -1) {// virheen sattuessa 50,0f; } float batt = (taso/(kelluva) asteikko)*100.0f; // saa oikean asteikon paluutehon; // palauttaa tason}

void getBT () {// saa mahdolliset Bluetooth -yhteydet

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // saa sovittimen, jos (! mBluetoothAdapter.isEnabled ()) {// varmistaa, että puhelin on sininen hammas Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // pyytää sen olevan päällä, jos ei käynnistä startActivityForResult (enableBluetooth, 0); } Aseta pairedDevices = mBluetoothAdapter.getBondedDevices (); // saa luettelon yhdistetystä Bluetoothista, jos (pairedDevices.size ()> 0) {// varmistaa, että laitteelle (BluetoothDevice device: pairedDevices) {/silmukoita laitteet jos (device.getName (). yhtä kuin ("HC-05")) {// tarkistaa, onko se oikea yksi mmDevice = device; // tallentaa sen tauon; }}}}

void openBT () heittää IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Vakio // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // muodostaa yhteyden laitteeseen oikealla tunnuksella mmSocket.connect (); // yhdistää mmOutputStream = mmSocket.getOutputStream (); // aloittaa lähetyskyvyn tiedot arduino -moduuliin}

void sendData () heittää IOException {// -luokan, joka lähettää t: n arduinoon

mmOutputStream.write ('t'); }

void closeBT () heittää IOException {// sulkee kaikki yhteydet arduinoon

stopWorker = totta; mmOutputStream.close (); mmSocket.close (); }}

Vaihe 6: Tiedostot

Kiitos, että luit, liitteenä ovat tässä projektissa käytetyt tiedostot

Suositeltava: