Съдържание:

Автоматично зарядно за телефон: 6 стъпки (със снимки)
Автоматично зарядно за телефон: 6 стъпки (със снимки)

Видео: Автоматично зарядно за телефон: 6 стъпки (със снимки)

Видео: Автоматично зарядно за телефон: 6 стъпки (със снимки)
Видео: 5 Яки Трика за iPhone, които НЕ ЗНАЕТЕ! 2024, Ноември
Anonim
Автоматично зарядно за телефон
Автоматично зарядно за телефон

"Тази инструкция е създадена в изпълнение на проектните изисквания на Makecourse в Университета на Южна Флорида (www.makecourse.com)"

Идеята зад този проект беше да се създаде устройство, което да зарежда телефон, и след това да го изключите, когато телефонът достигне 100%. Това би спряло проблемите с прекомерното зареждане.

Стъпка 1: Пластмасови компоненти

Пластмасови компоненти
Пластмасови компоненти
Пластмасови компоненти
Пластмасови компоненти
Пластмасови компоненти
Пластмасови компоненти
Пластмасови компоненти
Пластмасови компоненти

Използваха се някои компоненти, които бяха 3D отпечатани. Тези компоненти се състоят от основа, държач за зарядното устройство, комплект зъбни колела и зъбни колела (нормална предавка и линейно парче, което променя въртенето в линейно движение) и основа, върху която всичко може да работи. Тези компоненти ще бъдат обяснени в следващите параграфи. В реда на появяване

Поставка за зарядно устройство

Целта на това е да държи зарядното устройство на телефона или поне да му даде по -добра и равна основа.

База

Основата има пръстени за държача на телефона, както и пътечка за комплекта предавки.

Държач за телефон

Очевидно държи телефона

Ръка за телефон

Премества и държи телефона

Комплект зъбно колело и зъбно колело

Използва се за преместване на зарядното устройство на телефона напред -назад

Стъпка 2: Разбиване на непечатани 3D компоненти

Това са компонентите, които са закупени за проекта или вече са собственост. За някои от частите, които свързах с тях/подобни артикули в amazon, но не се колебайте да ги закупите навсякъде.

Микро серво:

Стандартно 0-180 серво:

HC-05 Bluetooth сериен модул:

Телефон и зарядно за телефон

Arduino

Платка

Кутия или кошче за основа

Сензор за докосване:

Стъпка 3: Електроника

Електроника
Електроника

Схемата за този проект може да изисква някои, главно поради модула HC-05. Много от модулите от този тип са със скорост около 3.3V до 6V, което е в работния диапазон на Arduino. Но за серийна комуникация Rx щифтът понякога работи по -добре само с 3.3V. Както се вижда на горната диаграма, двете сервоустройства са свързани към щифта Vin на Arduino. Това допълнително напрежение може да се захранва от всичко, използвах 9 -волтова батерия. Сензорът за докосване е включен в 5V на Arduino. Това се дължи на факта, че всички компоненти имаха проблеми с изтичането на едно и също напрежение. Сензорът за докосване е прикрепен към щифт 2, така че може да се използва като прекъсване на щифта. След това Bluetooth модулът е свързан към Rx и Tx щифтовете за серийна комуникация. Между Rx щифта на модула и Tx на Arduino е 2 килоомов резистор с 1 килоом свързан към земята. Това помага да се регулира входящото напрежение.

Стъпка 4: Монтаж

Монтаж
Монтаж

Сглобяването е съвсем просто.

  1. с някакво супер лепило монтирайте сервомоторите в техните позиции, едно за предавката до изреза на основата и едно близо до мястото, където е основата на телефона.
  2. Прикрепете сензора за докосване към държача на телефона, за да може да знае кога телефонът е там.
  3. След това прикрепете предавката и рамото към съответните им серво
  4. Уверете се, че проводниците не пречат на други компоненти, докато попълвате електрониката си

Стъпка 5: Код

Ще бъдат представени три набора код, един код за Arduino, който е създаден в IDE на Arduino и два кода, които са направени в Android Studio. Приложенията за Android са същите, с изключение на това, че едно е пълното приложение, което проследява живота на батерията, а другото не. Вторият е за целите на тестването.

Кодът на Arduino

Основната точка на този код е да управлява сензора за докосване и двигателите, той получава команда от телефона и действа по него.

#include // извиква серво библиотеката, за да можем да контролираме двата servoServo servo1; Servo servo2; // създава два серво обекта за всеки серво мотор int a = 0; // проследяваща променлива за тестване int q = 0; // променлива, която позволява да има забавяне, преди процесът на включване да започне char c; // променлива, която съдържа серийното съобщение от телефона void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); (10); servo2.attach (9); // инициализира двата серво Serial.begin (9600); // започва серийната комуникация със скорост, подобна на тази на bluetooth модула servo2.write (20); // автоматично настройва сервомоторите на servo1.write (180) начална позиция }

void loop () {

if (Serial.available ()) {// това проверява дали нещо идва от телефона през серийните пинове Tx и Rx c = Serial.read (); // чете от какво идва if (c == 't') {// ако серийното устройство чете тогава това означава, че телефонът е напълно зареден, процесът на изключване започва servo2.write (120); // изключва закъснението на зарядното устройство (5000); // изчаква да се увери има време за премахване servo1.write (110); // премества телефона в изправено положение, за да сигнализира //Serial.println(" тук "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // връзва прекъсването}} if (q == 1) {// ако условието за включване е настроено, тогава започнете с прикачване на закъснението на зарядното устройство (10000); servo2.write (0); // премества серво в позиция q = 0; // нулира условието}}

void AH () {

//Serial.println("in "); servo1.write (180); // пуска платформата на телефона в позиция за зареждане q = 1; // стартира условието, за да продължи процеса // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // отделя прекъсването, така че да няма проблеми с стартирането на прекъсването, когато не трябва}

Приложение за Android

Тук ще покажа само правилното приложение, но ще бъде даден и файлът с тестовия код, единствената разлика ще бъде премахването на класа runnable и getBattery. Споменатият сериен код е стандартният за телефони, свързващи се с устройства като модула.

пакет com.example.daniel.make; внос android.bluetooth. BluetoothAdapter; внос android.bluetooth. BluetoothDevice; внос android.bluetooth. BluetoothSocket; импортиране на android.os. Handler; импортиране на android.support.v7.app. AppCompatActivity; импортиране на android.os. Bundle; импортиране на android.content. Intent; импортиране на android.content. IntentFilter; импортиране на android.os. BatteryManager; импортиране на java.io. IOException; импортиране на java.io. OutputStream; импортиране на java.util. Set; импортиране на java.util. UUID;

публичен клас MainActivity разширява AppCompatActivity {

// създаване на необходимите обекти Handler handler; // помага с цикъла Runnable runnable; // работи непрекъснато BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; летливи булеви stopWorker; частен OutputStream outputStream; частен последен низ DEVICE_NAME = "HC-05"; частен краен UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); частно устройство BluetoothAdapter; частен гнездо BluetoothSocket; @Override protected void onCreate (Bundle savedInstanceState) {// е набор от инструкции, които се изпълняват при създаването на приложението super.onCreate (savedInstanceState); // displya създаване setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// работи многократно int ниво = (int) getBattery (); // получава текущото ниво на батерията, ако (ниво == 100) {// ако нивото на батерията достига 100% try {getBT (); // свързва се към bluetooth модула openBT (); // го отваря sendData (); // изпраща необходимите данни closeBT (); // затваря обекта} catch (IOException ex) { }} handler.postDelayed (runnable, 5000); // забавяне}}; манипулатор = нов Handler (); handler.postDelayed (runnable, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // създава действието, което се свързва с ниво на батерията int = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // получава по -добро ниво int scale = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // получава мащаба на батерията, ако (ниво == -1 || мащаб == -1) {// в случай на грешка връщане 50.0f; } float batt = (ниво/(плаваща) скала)*100.0f; // получава правилната скала връщане batt; // връща нивото}

void getBT () {// получава възможните Bluetooth връзки

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // получава адаптера, ако (! mBluetoothAdapter.isEnabled ()) {// гарантира, че телефонът има син зъб при Intent enableBluetooth = нов Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // иска да бъде включен, ако не е startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // получава списъка със свързан bluetooth, ако (pairedDevices.size ()> 0) {// се уверява, че има някои устройства за (BluetoothDevice device: pairedDevices) {// преминава през устройства if (device.getName (). equals ("HC-05")) {// проверява дали е правилното mmDevice = device; // записва прекъсването; }}}}

void openBT () изхвърля IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Стандартно // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // се свързва с устройството с правилния идентификатор mmSocket.connect (); // свързва mmOutputStream = mmSocket.getOutputStream (); // стартира способността за изпращане данни към модула arduino}

void sendData () хвърля IOException {// клас, който изпраща t на arduino

mmOutputStream.write ('t'); }

void closeBT () хвърля IOException {// затваря всички връзки към arduino

stopWorker = вярно; mmOutputStream.close (); mmSocket.close (); }}

Стъпка 6: Файлове

Благодарим ви за четенето, приложени са файловете, използвани в този проект

Препоръчано: