Sadržaj:

Automatski punjač telefona: 6 koraka (sa slikama)
Automatski punjač telefona: 6 koraka (sa slikama)

Video: Automatski punjač telefona: 6 koraka (sa slikama)

Video: Automatski punjač telefona: 6 koraka (sa slikama)
Video: IPHONE vs XIAOMI 2024, Novembar
Anonim
Automatski punjač za telefon
Automatski punjač za telefon

"Ova instrukcija nastala je u skladu sa zahtjevima projekta Makecoursea na Univerzitetu Južne Floride (www.makecourse.com)"

Ideja iza ovog projekta bila je stvoriti uređaj koji bi mogao puniti telefon, a zatim ga isključiti iz utičnice kada telefon dosegne 100%. Time bi se zaustavili problemi prekomjernog punjenja.

Korak 1: Plastične komponente

Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente

Korišćene su neke komponente koje su 3D štampane. Ove komponente sastojale su se od osnove, držača za punjač, zupčastog zupčanika (normalnog zupčanika i linearnog komada koji mijenja rotaciju u linearno kretanje) i osnove za rad na svemu. Ove komponente bit će objašnjene u sljedećim paragrafima. Po redoslijedu pojavljivanja

Nosač punjača

Svrha ovoga je držati punjač za telefon ili mu barem dati bolju i ravnu podlogu.

Baza

Baza ima prstenje za držač telefona, kao i traku za komplet opreme.

Držač telefona

Očigledno drži telefon

Telefon Arm

Pomera i drži telefon

Komplet zupčanika i zupčanika

Koristi se za pomicanje punjača telefona naprijed -natrag

Korak 2: Razbijte komponente koje nisu 3D štampane

To su komponente koje su ili kupljene za projekt ili su već u vlasništvu. Za neke dijelove koje sam povezao s njima/slične stavke na Amazonu, ali slobodno ih nabavite bilo gdje.

Mikro servo:

Standardni servo 0-180:

HC-05 Bluetooth serijski modul:

Telefon i punjač telefona

Arduino

Breadboard

Kutija ili kanta za podlogu

Senzor dodira:

Korak 3: Elektronika

Elektronika
Elektronika

Krug za ovaj projekt može zahtijevati neke, uglavnom zbog HC-05 modula. Mnogi moduli ovog tipa su za otprilike 3,3 V do 6 V, što je u radnom rasponu Arduina. No, za serijsku komunikaciju Rx pin ponekad radi bolje sa samo 3.3V. Kao što se vidi na gornjem dijagramu, dva serva su spojena na Vin pin na Arduinu. Ovaj dodatni napon može se napajati bilo čime, koristio sam bateriju od 9 volti. Senzor dodira je priključen na 5V na Arduinu. To je bilo zbog toga što su sve komponente imale problema s radom istog napona. Senzor dodira je pričvršćen na pin 2 tako da se može koristiti kao prekid pina. Zatim se bluetooth modul povezuje sa Rx i Tx pinovima za serijsku komunikaciju. Između Rx pina na modulu i Tx na Arduinu nalazi se otpornik od 2 kilo ohma sa 1 kiloomom spojen na masu. To pomaže u regulaciji ulaznog napona.

Korak 4: Montaža

Montaža
Montaža

Montaža je prilično jednostavna.

  1. s nekim super ljepilom montirajte svoje servo upravljače na njihove položaje, jedan za zupčanike uz izrez na podnožju i jedan blizu mjesta gdje se nalazi baza telefona.
  2. Pričvrstite senzor dodira na držač telefona kako bi mogao znati kada se telefon nalazi.
  3. Zatim spojite zupčanik i ruku na odgovarajuće servo sisteme
  4. Pazite da žice ne ometaju ostale komponente dok punite elektroniku

Korak 5: Kodirajte

Bit će predstavljena tri seta koda, jedan kod za Arduino, koji je kreiran u Arduino IDE -u i dva koda koja su napravljena u Android Studiju. Android aplikacije su iste, osim što je jedna potpuna aplikacija koja prati trajanje baterije, a jedna ne. Drugi je za potrebe testiranja.

Arduino kod

Glavna poanta ovog koda je upravljanje senzorom dodira i motorima, on prima naredbu od telefona i djeluje na nju.

#include // poziva servo biblioteku kako bismo mogli kontrolirati dva servaServo servo1; Servo servo2; // stvara dva servo objekta za svaki servo motor int a = 0; // varijabla za praćenje za testiranje int q = 0; // varijabla koja dopušta da dođe do kašnjenja prije početka procesa uključivanja char c; // varijabla koja sadrži serijsku poruku iz telefona void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // pridružuje padajući prekid da bi tačno znao kada senzor dodira vidi kada je telefon van servo1.attach (10); servo2.attach (9); // inicijalizira dva serva Serial.begin (9600); // započinje serijsku komunikaciju brzinom sličnom onoj kod bluetooth modula servo2.write (20); // auto postavlja servo na početni položaj servo1.write (180); }

void loop () {{100} {101}

if (Serial.available ()) {// ovo provjerava da li nešto dolazi s telefona preko serijskih pinova Tx i Rx c = Serial.read (); // čita ono što dolazi iz if (c == 't') {// ako serijski uređaj čita na to znači da je telefon potpuno napunjen, proces isključivanja počinje servo2.write (120); // isključuje kašnjenje punjača (5000); // čeka da se uvjeri ima vremena za uklanjanje servo1.write (110); // premješta telefon u uspravan položaj da signalizira //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // ponovo postavlja prekid}} if (q == 1) {// ako je uslov za dodatak uključen, tada započnite sa kašnjenjem punjača (10000); servo2.write (0); // pomiče servo u položaj q = 0; // resetira stanje}}

void AH () {

//Serial.println("in "); servo1.write (180); // postavlja telefonsku platformu u položaj za punjenje q = 1; // pokreće uvjet za nastavak procesa // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // odvaja prekid, tako da neće biti problema sa pokretanjem prekida kada ne bi trebao}

Android aplikacija

Ovdje ću prikazati samo odgovarajuću aplikaciju, ali bit će navedena i datoteka testnog koda, jedina razlika bit će uklanjanje klase runnable i getBattery. Spomenuti serijski kod je standardni za telefone koji se povezuju na uređaje poput modula.

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

javna klasa MainActivity proširuje AppCompatActivity {

// kreiranje potrebnih objekata Handler handler; // pomaže u petlji Runnable runnable; // neprekidno radi BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; volatile boolean stopWorker; privatni OutputStream outputStream; privatni završni niz DEVICE_NAME = "HC-05"; privatni završni UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); privatni BluetoothAdapter uređaj; privatna BluetoothSocket utičnica; @Override protected void onCreate (Bundle savedInstanceState) {// je skup instrukcija koje se izvršavaju prilikom kreiranja aplikacije super.onCreate (savedInstanceState); // displya kreiranje setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// radi više puta int level = (int) getBattery (); // dobija trenutni nivo baterije ako (level == 100) {// ako je nivo napunjenosti baterije dostiže 100% try {getBT (); // povezuje se na bluetooth modul openBT (); // otvara sendData (); // šalje potrebne podatke closeBT (); // zatvara objekt} catch (IOException ex) { }} handler.postDelayed (runnable, 5000); // kašnjenje}}; handler = novi Handler (); handler.postDelayed (runnable, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // kreira radnju koja se povezuje sa nivoom baterije int = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // dobiva bolji nivo int scale = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // dobiva skalu baterije ako (level == -1 || scale == -1) {// u slučaju pogrešnog povratka 50.0f; } float batt = (level/(float) scale)*100.0f; // dobija odgovarajuću skalu return batt; // vraća nivo}

void getBT () {// dobiva moguće bluetooth veze

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // dobiva adapter ako (! mBluetoothAdapter.isEnabled ()) {// osigurava da telefon ima plavi zub na Intent enableBluetooth = nova namjera (BluetoothAdapter. ACTION_REQUEST_ENABLE); // zahtijeva da to bude uključeno ako nije startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // dobiva listu povezanih bluetootha ako (pairedDevices.size ()> 0) {// provjeri postoje li neki uređaji za (BluetoothDevice device: pairedDevices) {// petlja kroz uređaji if (device.getName (). equals ("HC-05")) {// provjerava da li je ispravan mmDevice = device; // sprema prekid; }}}}

void openBT () baca IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standardno // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // povezuje se s uređajem s odgovarajućim id mmSocket.connect (); // povezuje mmOutputStream = mmSocket.getOutputStream (); // pokreće mogućnost slanja podaci u arduino modul}

void sendData () baca IOException {// klasu koja šalje t na arduino

mmOutputStream.write ('t'); }

void closeBT () baca IOException {// zatvara sve veze na arduino

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

Korak 6: Datoteke

Hvala vam na čitanju, u prilogu se nalaze datoteke koje su korištene u ovom projektu

Preporučuje se: