Sisukord:

Automaatne telefonilaadija: 6 sammu (piltidega)
Automaatne telefonilaadija: 6 sammu (piltidega)

Video: Automaatne telefonilaadija: 6 sammu (piltidega)

Video: Automaatne telefonilaadija: 6 sammu (piltidega)
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, November
Anonim
Automaatne telefonilaadija
Automaatne telefonilaadija

"See juhend on loodud Lõuna -Florida ülikooli Makecourse'i projektinõude täitmiseks (www.makecourse.com)"

Selle projekti idee oli luua seade, mis suudaks telefoni laadida, ja seejärel ühendage see vooluvõrgust lahti, kui telefon jõuab 100%-ni. See peatab ülelaadimise probleemid.

Samm: plastkomponendid

Plastkomponendid
Plastkomponendid
Plastkomponendid
Plastkomponendid
Plastkomponendid
Plastkomponendid
Plastkomponendid
Plastkomponendid

Kasutati mõningaid komponente, mis trükiti 3D -vormingus. Need komponendid koosnesid alusest, laadija hoidikust, hammasratta ja hammasrataste komplektist (tavaline käik ja lineaarne tükk, mis muudab pöörlemise lineaarseks liikumiseks) ja aluse kõigeks toimimiseks. Neid komponente selgitatakse järgmistes lõikudes. Esinemise järjekorras

Laadija hoidik

Selle eesmärk on hoida telefoni laadijat või vähemalt anda sellele parem ja tasasem alus.

Alus

Alusel on rõngad telefonihoidjale ja käigukasti komplekt.

Telefonihoidja

Ilmselgelt hoiab telefoni käes

Telefoni arm

Liigutab ja hoiab telefoni

Hammasrataste ja hammasrataste komplekt

Kasutatakse telefoni laadija edasi -tagasi liigutamiseks

2. toiming: mitte -3D -prinditud komponentide lagunemine

Need on komponendid, mis on projekti jaoks ostetud või juba omanduses. Mõne osa jaoks, mille ma nendega linkisin/sarnased üksused Amazonis, kuid võite need vabalt hankida.

Mikroservo:

Standard 0-180 servo:

HC-05 Bluetoothi jadamoodul:

Telefon ja telefoni laadija

Arduino

Leivalaud

Aluse jaoks kast või prügikast

Puuteandur:

3. samm: elektroonika

Elektroonika
Elektroonika

Selle projekti vooluahel võib mõnda siiski nõuda, peamiselt HC-05 mooduli tõttu. Paljud seda tüüpi moodulid töötavad umbes 3.3V kuni 6V, mis on Arduino tööpiirkonnas. Kuid jadakommunikatsiooni jaoks töötab Rx -pin mõnikord paremini ainult 3,3 V juures. Nagu ülaltoodud diagrammilt näha, on kaks servot ühendatud Arduino Vini tihvtiga. Seda lisapinget võib pakkuda kõik, kasutasin 9 -voldist akut. Puuteandur ühendati Arduino 5V -ga. Selle põhjuseks oli asjaolu, et kõigil komponentidel oli probleeme sama pingega. Puuteandur on kinnitatud tihvti 2 külge, nii et seda saab kasutada tihvti katkestusena. Seejärel ühendatakse Bluetooth -moodul jadaühenduseks Rx- ja Tx -kontaktidega. Mooduli Rx -tihvti ja Arduino Tx vahel on 2 -kilone oomi takisti, mille 1 -kilone oom on ühendatud maaga. See aitab reguleerida sissetulevat pinget.

4. samm: kokkupanek

Kokkupanek
Kokkupanek

Kokkupanek on üsna lihtne.

  1. mõne superliimiga kinnitage oma servod oma asendisse, üks hammasratta jaoks aluse väljalõike ääres ja teine telefoni aluse lähedal.
  2. Kinnitage puuteandur telefonihoidiku külge, et see saaks teada, millal telefon on olemas.
  3. Seejärel kinnitage hammasratas ja käepide vastavatele servodele
  4. Veenduge, et juhtmed ei segaks elektroonika täitmisel teisi komponente

Samm: kood

Esitatakse kolm koodikomplekti, üks Arduino kood, mis loodi Arduino IDE -s ja kaks koodi, mis tehti Android Stuudios. Androidi rakendused on samad, välja arvatud üks - täisrakendus, mis jälgib aku kasutusaega ja teine mitte. Teine on testimiseks.

Arduino kood

Selle koodi peamine mõte on puutetundliku anduri ja mootorite juhtimine, see saab telefonilt käsu ja toimib selle järgi.

#include // kutsub servoteegi, et saaksime juhtida kahte servotServo servo1; Servo servo2; // loob iga servomootori jaoks kaks servoobjekti int a = 0; // jälgimismuutuja testimiseks int q = 0; // muutuja, mis võimaldab viivitust enne pistikuprotsessi algust char c; // muutuja, mis sisaldab telefoni void setupi seeriasõnumit () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // lisab langeva katkestuse, et täpselt teada, millal puuteandur näeb, kui telefon on väljas servo1.attach (10); servo2.attach (9); // initsialiseerib kaks servot Serial.begin (9600); // alustab jadaühendust kiirusega, mis on sarnane Bluetooth -mooduli servo2.write (20) kiirusega; // määrab servod automaatselt lähteasend servo1.write (180); }

void loop () {

if (Serial.available ()) {// see kontrollib, kas telefonist tuleb jadaühenduste Tx ja Rx kaudu midagi sisse c = Serial.read (); // loeb, mis saabub, kui (c == t eemaldamiseks on aega servo1.write (110); // viib telefoni püstiasendisse, et märku anda //Serial.println(" siin "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // ühendab katkestuse uuesti}} if (q == 1) {// kui pistikühenduse tingimus on kindel, alustage laadija viivituse lisamisega (10000); servo2.write (0); // liigutab servo asendisse q = 0; // lähtestab tingimuse}}

tühine AH () {

//Serial.println("in "); servo1.write (180); // langetab telefoni platvormi laadimisasendisse q = 1; // käivitab tingimuse protsessi jätkamiseks // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // eemaldab katkestuse, nii et katkestusega ei tekiks probleeme, kui see ei peaks}

Androidi rakendus

Siin näitan ainult õiget rakendust, kuid antakse ka testikoodi fail, ainus erinevus on jooksva ja getBattery klassi eemaldamine. Mainitud seerianumber on standardne telefonidele, mis ühenduvad selliste seadmetega nagu moodul.

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

avalik klass MainActivity laiendab AppCompatActivity {

// vajalike objektide loomine Käitleja käitleja; // aitab silmusel Runnable runnable; // töötab pidevalt BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Bluetoothseade mmDevice; OutputStream mmOutputStream; lenduv boolean stopTöötaja; privaatne OutputStream outputStream; privaatne lõppstring DEVICE_NAME = "HC-05"; privaatne lõplik UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); privaatne BluetoothAdapter -seade; privaatne Bluetooth -pistikupesa; @Override protected void onCreate (Bundle savedInstanceState) {// on juhiste kogum, mis käivitatakse rakenduse loomisel super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// töötab korduvalt int level = (int) getBattery (); // saab praeguse aku taseme, kui (tase == 100) {// kui aku on tühi jõuab 100% proovi {getBT (); // ühendub bluetooth mooduliga openBT (); // avab selle sendData (); // saadab vajalikud andmed closeBT (); // sulgeb objekti} catch (IOException ex) { }} handler.postDelayed (käivitatav, 5000); // viivitus}}; käitleja = uus käitleja (); handler.postDelayed (käivitatav, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, uus IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // loob toimingu, mis ühendub akuga int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // saab parema taseme int skaala = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // saab aku skaala, kui (tase == -1 || skaala == -1) {// eksimuste korral 50,0f; } float batt = (level/(float) skaala)*100.0f; // saab õige skaala tagastamise batt; // tagastab taseme}

void getBT () {// saab võimalikud bluetooth -ühendused

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // saab adapteri, kui (! mBluetoothAdapter.isEnabled ()) {// hoolitseb selle eest, et telefonil oleks sinine hammas kavatsusel enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // nõuab, et see oleks sisse lülitatud, kui mitte startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // saab ühendatud Bluetoothi loendi, kui (pairedDevices.size ()> 0) {// tagab, et (BluetoothDevice seade: pairedDevices) jaoks on mõned seadmed {// silmused läbi seadmed if (device.getName (). võrdub ("HC-05")) {// kontrollib, kas see on õige üks mmDevice = device; // salvestab selle pausi; }}}}

void openBT () viskab IOExceptioni {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // ühendub seadmega õige ID -ga mmSocket.connect (); // ühendab mmOutputStream = mmSocket.getOutputStream (); // käivitab võime saata andmed arduino moodulisse}

void sendData () viskab IOException {// klassi, mis saadab t arduinole

mmOutputStream.write ('t'); }

void closeBT () viskab IOException {// sulgeb kõik arduino ühendused

stopWorker = tõsi; mmOutputStream.close (); mmSocket.close (); }}

6. samm: failid

Täname lugemise eest. Lisatud on failid, mida selles projektis kasutati

Soovitan: