Mundarija:

Avtomatik telefon zaryadlovchi: 6 qadam (rasmlar bilan)
Avtomatik telefon zaryadlovchi: 6 qadam (rasmlar bilan)

Video: Avtomatik telefon zaryadlovchi: 6 qadam (rasmlar bilan)

Video: Avtomatik telefon zaryadlovchi: 6 qadam (rasmlar bilan)
Video: Redmi telefonini judayam tez zaryadlash siri 2024, Iyul
Anonim
Avtomatik telefon zaryadlovchi
Avtomatik telefon zaryadlovchi

"Bu ko'rsatma Janubiy Florida universitetining Makecourse loyihasi talablarini bajarish uchun yaratilgan (www.makecourse.com)"

Loyihaning asosiy maqsadi telefonni zaryad qila oladigan qurilma yaratish va telefon 100%ga yetganda uni tarmoqdan uzish edi. Bu ortiqcha zaryad masalalarini to'xtatadi.

1 -qadam: Plastik komponentlar

Plastik komponentlar
Plastik komponentlar
Plastik komponentlar
Plastik komponentlar
Plastik komponentlar
Plastik komponentlar
Plastik komponentlar
Plastik komponentlar

3D bosma ishlatilgan ba'zi komponentlar ishlatilgan. Bu komponentlar taglik, zaryadlovchi ushlagichi, rack va pinion tishli to'plami (oddiy vites va aylanishni chiziqli harakatga o'zgartiradigan chiziqli bo'lak) va hamma narsa ishlashi uchun tayanchdan iborat edi. Bu komponentlar keyingi paragraflarda tushuntiriladi. Ko'rinish tartibida

Zaryadlovchi ushlagichi

Buning maqsadi - telefon zaryadlovchisini ushlab turish yoki hech bo'lmaganda unga yaxshiroq va tekisroq tayanch berish.

Baza

Baza telefon ushlagichi uchun uzuklar bilan bir qatorda vites qutisi uchun trekka ega.

Telefon ushlagichi

Telefonni ushlab turgani aniq

Telefon qo'li

Telefonni qimirlatadi va ushlab turadi

Rack va Pinion tishli to'plami

Telefon zaryadlovchisini oldinga va orqaga siljitish uchun ishlatiladi

2 -qadam: 3D bosilmaydigan komponentlarni ajratish

Bular loyiha uchun sotib olingan yoki allaqachon egalik qilingan komponentlar. Men ular bilan bog'langan ba'zi qismlar uchun/Amazonda shunga o'xshash narsalar, lekin ularni istalgan joydan sotib olish mumkin.

Mikro Servo:

Standart 0-180 Servo:

HC-05 Bluetooth seriyali moduli:

Telefon va telefon zaryadlovchi

Arduino

Non paneli

Baza uchun quti yoki quti

Sensorli sensor:

3 -qadam: elektronika

Elektronika
Elektronika

Ushbu loyihaning sxemasi, asosan, HC-05 moduli tufayli, biroz talab qilishi mumkin. Ushbu turdagi ko'plab modullar Arduino operatsion diapazonida bo'lgan taxminan 3,3V dan 6V gacha. Ammo ketma -ket aloqa uchun Rx pin ba'zan faqat 3.3V bilan yaxshi ishlaydi. Yuqoridagi diagrammada ko'rinib turganidek, ikkita servo Arduino -dagi Vin piniga ulangan. Bu qo'shimcha kuchlanishni hamma narsa berishi mumkin, men 9 voltli batareyani ishlatganman. Sensor sensori Arduino 5V ga ulangan. Buning sababi shundaki, barcha komponentlar bir xil kuchlanishda ishlamayapti. Sensor sensori 2 -pinga biriktirilgan, shuning uchun uni pinni uzish sifatida ishlatish mumkin. Keyin bluetooth moduli ketma -ket aloqa uchun Rx va Tx pinlariga ulanadi. Moduldagi Rx pin va Arduino -dagi Tx o'rtasida 2 kilo ohmli qarshilik, 1 kilo ohm erga ulanadi. Bu kiruvchi kuchlanishni tartibga solishga yordam beradi.

4 -qadam: yig'ish

O'rnatish
O'rnatish

O'rnatish juda oddiy.

  1. bir nechta super elim bilan servolarni o'z joylariga o'rnatib qo'ying, bittasi poydevoridagi tishli quti uchun va telefon tagligi yaqinida.
  2. Sensorni telefon ushlagichiga ulang, shunda u telefon qachon ekanligini bilib oladi.
  3. Keyin vites va qo'lni tegishli servolarga ulang
  4. Elektronni to'ldirayotganda simlar boshqa komponentlarga to'sqinlik qilmasligiga ishonch hosil qiling

5 -qadam: kod

Uchta kod to'plami taqdim etiladi, bittasi Arduino IDE -da yaratilgan Arduino uchun bitta kod va Android Studio -da ishlab chiqarilgan ikkita kod. Android ilovalari bir xil, faqat bitta dastur batareyaning ishlash muddatini kuzatadi, boshqasi esa yo'q. Ikkinchisi sinov uchun.

Arduino kodi

Ushbu kodning asosiy maqsadi sensorli dvigatellarni ishlatishdir, u telefondan buyruq oladi va unga amal qiladi.

#include // servo kutubxonasini chaqiradi, shunda biz ikkita servoServo servo1ni boshqarishimiz mumkin; Servo servo2; // har bir servo dvigatel uchun ikkita servo moslamani yaratadi int a = 0; // int q = 0 ni tekshirish uchun kuzatuvchi o'zgaruvchi; // o'zgaruvchini pluggin jarayonining boshlanishidan oldin kechiktirishga imkon beradi char c; // telefondan ketma -ket xabarni o'z ichiga olgan o'zgaruvchini bekor qilish sozlamalari () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); (10); servo2.attach (9); // ikkita servo Serial.begin (9600) ni ishga tushiradi; // ketma -ket aloqani servo2.write (20) bluetooth moduliga o'xshash tezlikda boshlaydi; // avtomatik ravishda servolarni o'rnatadi boshlang'ich pozitsiyasi servo1.write (180); }

void loop () {

if (Serial.available ()) {// bu telefondan Tx va Rx c = Serial.read () ketma -ket pinlari orqali telefondan biror narsa kirib kelishini tekshiradi; // if (c == 't') {// agar ketma -ket qurilma o'qilsa, bu telefon to'liq zaryadlanganligini bildiradi, tarmoqdan uzish jarayoni servo2.write (120); // zaryadlovchining kechikishini (5000) ajratadi; // ishonch hosil qilishni kutadi o'chirish uchun vaqt bor servo1.write (110); // signal berish uchun telefonni tik holatiga o'tkazadi // Serial.println("bu erda "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // uzilishni qayta}} qo'shadi}} if (q == 1) {// agar plagin sharti aniq bo'lsa, zaryadlovchining kechikishini (10000) biriktirishdan boshlang; servo2.write (0); // servoni q = 0 holatiga o'tkazadi; // shartni tiklaydi}}

bo'sh AH () {

//Serial.println("in "); servo1.write (180); // telefon platformasini q = 1 zaryadlash holatiga tushiradi; // jarayonni davom ettirish uchun shartni ishga tushiradi // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // uzilishni ajratadi, shuning uchun kerak bo'lmaganda uzilish bilan bog'liq muammolar bo'lmaydi}

Android ilovasi

Bu erda men faqat tegishli ilovani ko'rsataman, lekin test kodi fayli ham beriladi, faqat farq ishlaydigan va getBattery sinfini olib tashlashda bo'ladi. Modul kabi qurilmalarga ulangan telefonlar uchun standart kod ko'rsatilgan.

com.example.daniel.make to'plami; android.bluetooth. Bluetooth Adapterni import qilish; android.bluetooth. BluetoothDevice -ni import qilish; android.bluetooth. BluetoothSocket -ni import qilish; android.os. Handler -ni import qilish; android.support.v7.app. AppCompatActivity -ni import qilish; android.os. Bundle -ni import qilish; android.content. Intent -ni import qilish; android.content. IntentFilter -ni import qilish; android.os. BatteryManager -ni import qilish; java.io. IOException ni import qilish; java.io. OutputStream -ni import qilish; java.util. Set -ni import qilish; java.util. UUID -ni import qilish;

MainActivity umumiy klassi AppCompatActivity -ni kengaytiradi {

// kerakli moslamalarni yaratish Handler handler; // Runnable runnable loopiga yordam beradi; // uzluksiz ishlaydi BluetoothAdapter mBluetoothAdapter; Bluetooth soket mmSocket; Bluetooth qurilmasi mmDevice; Chiqish oqimi mmOutputStream; o'zgaruvchan boolean stopWorker; xususiy OutputStream outputStream; shaxsiy yakuniy String DEVICE_NAME = "HC-05"; shaxsiy yakuniy UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); shaxsiy BluetoothAdapter qurilmasi; shaxsiy Bluetooth soket rozetkasi; @Override himoyalangan void onCreate (Bundle saveInstanceState) {// - bu dastur yaratilganda bajariladigan ko'rsatmalar to'plami super.onCreate (saveInstanceState); // displya yaratish setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// qayta -qayta ishlaydi int level = (int) getBattery (); // agar batareya darajasi bo'lsa 100% urinib ko'ring {getBT (); // bluetooth moduliga ulanadi openBT (); // uni ochadi sendData (); // kerakli ma'lumotlarni yuboradi closeBT (); // ob'ektni yopadi} catch (IOException ex) { }} handler.postDelayed (ishga tushirish mumkin, 5000); // kechikish}}; ishlovchi = yangi Handler (); handler.postDelayed (runnable, 0); }

ommaviy float getBattery () {

Intent = registerReceiver (null, yangi IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // akkumulyatorga ulanadigan harakatni yaratadi batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); } float batt = (level/(float) shkalasi)*100.0f; // tegishli o'lchovli qaytish jangini oladi; // darajani qaytaradi}

void getBT () {// mumkin bo'lgan bluetooth ulanishlarini oladi

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // adapterni oladi, agar (! mBluetoothAdapter.isEnabled ()) {// telefonda Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); startActivityForResult bo'lmasa, yoqilgan (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // bog'langan bluetooth ro'yxatini oladi, agar (pairedDevices.size ()> 0) {// (BluetoothDevice device: pairedDevices) {// uchun ba'zi qurilmalar mavjudligini tekshiradi qurilmalar if (device.getName (). teng ("HC-05")) {// uning mos mmDevice = device; // tekshirilishini saqlaydi; }}}}

void openBT () IOException ni tashlaydi {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standart // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // qurilmaga mmSocket.connect () tegishli identifikatori bilan ulanadi; // mmOutputStream = mmSocket.getOutputStream () ni ulaydi; // yuborish qobiliyatini boshlaydi. ma'lumotlar arduino moduliga}

void sendData () t -ni arduino -ga yuboradigan IOException {// sinfini chiqaradi

mmOutputStream.write ('t'); }

void closeBT () IOException ni tashlaydi {// arduino bilan barcha ulanishlarni yopadi

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

6 -qadam: fayllar

O'qiganingiz uchun tashakkur, ushbu loyihada ishlatilgan fayllar ilova qilingan

Tavsiya: