İçindekiler:

Otomatik Telefon Şarj Cihazı: 6 Adım (Resimlerle)
Otomatik Telefon Şarj Cihazı: 6 Adım (Resimlerle)

Video: Otomatik Telefon Şarj Cihazı: 6 Adım (Resimlerle)

Video: Otomatik Telefon Şarj Cihazı: 6 Adım (Resimlerle)
Video: Adım at para kazan hîlesi ( Arapların taktiği 😅 ) 2024, Kasım
Anonim
Otomatik Telefon Şarj Cihazı
Otomatik Telefon Şarj Cihazı

"Bu talimat, Güney Florida Üniversitesi'ndeki (www.makecourse.com) Makecourse'un proje gereksinimini yerine getirmek için oluşturuldu"

Bu projenin arkasındaki fikir, bir telefonu şarj edebilecek ve ardından telefon %100'e ulaştığında fişini çekebilecek bir cihaz oluşturmaktı. Bu, aşırı şarj sorunlarını durduracaktır.

Adım 1: Plastik Bileşenler

Plastik Bileşenler
Plastik Bileşenler
Plastik Bileşenler
Plastik Bileşenler
Plastik Bileşenler
Plastik Bileşenler
Plastik Bileşenler
Plastik Bileşenler

Kullanılan 3D baskılı bazı bileşenler vardı. Bu bileşenler bir taban, şarj cihazı için bir tutucu, bir kremayer ve pinyon dişli takımı (normal bir dişli ve dönüşü doğrusal harekete değiştiren doğrusal bir parça) ve her şeyin üzerinde çalışabileceği bir tabandan oluşuyordu. Bu bileşenler aşağıdaki paragraflarda açıklanacaktır. Görünüş sırasına göre

şarj tutucu

Bunun amacı, telefon şarj cihazını tutmak veya en azından üzerinde olması için daha iyi ve düz bir taban sağlamaktır.

Temel

Tabanda telefon tutucusu için halkaların yanı sıra dişli takımı için bir ray bulunur.

Telefon Tutucu

Telefonu tutar açıkçası

Telefon Kolu

Telefonu hareket ettirir ve tutar

Raf ve Pinyon Dişli Takımı

Telefon şarj cihazını ileri geri hareket ettirmek için kullanılır

2. Adım: 3D Yazdırılmamış Bileşenlerin Parçalanması

Bunlar, proje için satın alınan veya zaten sahip olunan bileşenlerdir. Amazon'da onlara/benzer öğelere bağladığım bazı parçalar için, ancak bunları herhangi bir yerden satın almaktan çekinmeyin.

Mikro Servo:https://www.amazon.com/J-Deal-Micro-Helicopter-Air…

Standart 0-180 Servo:https://www.amazon.com/Futaba-FUTM0031-S3003-Stand…

HC-05 Bluetooth Seri Modülü:https://www.amazon.com/HC-05-Bluetooth-Pass-throug…

Telefon ve Telefon Şarj Cihazı

Arduino

ekmek tahtası

Baz için kutu veya kutu

Dokunmatik Sensör:https://www.amazon.com/Digital-Sensor-capacitive-s…

Adım 3: Elektronik

Elektronik
Elektronik

Bu proje için devre, esas olarak HC-05 modülü nedeniyle biraz gerektirebilir. Bu tipteki modüllerin çoğu, Arduino'nun çalışma aralığında olan kabaca 3,3V ila 6V arasında oranlıdır. Ancak seri iletişim için Rx pini bazen sadece 3.3V ile daha iyi çalışır. Yukarıdaki şemada görüldüğü gibi, iki servo Arduino üzerindeki Vin pinine bağlanmıştır. Bu ekstra voltaj her şeyle sağlanabilir, ben 9 voltluk bir pil kullandım. Dokunmatik sensör Arduino'daki 5V'a takıldı. Bunun nedeni, tüm bileşenlerin aynı voltajdan kaçarken sorun yaşamasıydı. Dokunmatik sensör, pin kesme olarak kullanılabilmesi için pin 2'ye bağlanmıştır. Ardından bluetooth modülü seri haberleşme için Rx ve Tx pinlerine bağlanır. Modül üzerindeki Rx pini ile Arduino üzerindeki Tx arasında toprağa bağlanan 1 kilo ohm'luk 2 kilo ohm'luk bir direnç bulunur. Bu, giren voltajı düzenlemeye yardımcı olur.

Adım 4: Montaj

toplantı
toplantı

Montaj oldukça basittir.

  1. bazı süper yapıştırıcı ile servolarınızı konumlarına monte edin, biri tabandaki oyuktaki dişli için ve diğeri telefonun tabanının olduğu yere yakın.
  2. Telefonun ne zaman orada olduğunu bilmesi için dokunmatik sensörü telefon tutucuya takın.
  3. Ardından dişliyi ve kolu ilgili servolara takın
  4. Elektroniklerinizi doldururken kabloların diğer bileşenlere karışmadığından emin olun.

Adım 5: Kod

Arduino IDE'de oluşturulan Arduino için bir kod ve Android Studio'da yapılan iki kod olmak üzere üç kod seti sunulacaktır. Android uygulamaları, birinin pil ömrünü izleyen tam uygulama olması ve birinin izlememesi dışında aynıdır. İkincisi test amaçlıdır.

Arduino Kodu

Bu kodun asıl amacı dokunmatik sensör ve motorları çalıştırmaktır, telefondan bir komut alır ve ona göre hareket eder.

#include // iki servoyu kontrol edebilmemiz için servo kitaplığını çağırırServo servo1; Servo servo2;//her servo motor için iki servo nesne oluşturur int a=0;//test için izleme değişkeni int q=0;//takma işlemi başlamadan önce gecikme olmasını sağlayan bir değişken char c;// telefondan gelen seri mesajı içeren değişken void setup() { AttachInterrupt(digitalPinToInterrupt(2), AH, FALLING);// servo1.attach'ta dokunmatik sensörün telefonun ne zaman dışarıda olduğunu tam olarak ne zaman gördüğünü bilmek için düşen bir kesme ekler (10); servo2.attach(9);// iki servoyu başlatır Serial.begin(9600);// bluetooth modülü servo2.write(20) ile benzer bir hızda seri iletişimi başlatır;//otomatik servoları ayarlar bir başlangıç konumu servo1.write(180); }

boşluk döngüsü () {

if (Serial.available()){// bu, Tx ve Rx seri pinleri üzerinden telefondan herhangi bir şey gelip gelmediğini kontrol eder c=Serial.read();// if (c=='den gelenleri okur) 't'){//seri cihaz o sırada okursa, telefonun tamamen şarj olduğu anlamına gelir, fişten çekme işlemi başlar servo2.write(120);//şarj gecikmesini çıkarır (5000);//emin olmak için bekler kaldırma için zaman var servo1.write(110);//telefonu dik konuma getirerek //Serial.println("burada"); AttachInterrupt(digitalPinToInterrupt(2), AH, FALLING);//kesmeyi yeniden ekler } } if (q==1){//eğer eklenti için koşul varsa, şarj gecikmesini (10000) takmakla başlayın; servo2.write(0);//servoyu q=0 konumuna taşır;//koşulu sıfırlar } }

geçersiz AH(){

//Serial.println("in"); servo1.write(180);// telefon platformunu şarj konumuna düşürür q=1;//işlemi devam ettirmek için koşulu başlatır //a=1; detachInterrupt (digitalPinToInterrupt(2));//kesmeyi ayırır, böylece kesilmemesi gerektiğinde başlamasıyla ilgili herhangi bir sorun olmaz }

Android uygulaması

Burada sadece uygun uygulamayı göstereceğim ama test kod dosyası da verilecek, tek fark runnable ve getBattery sınıfının kaldırılması olacak. Bahsedilen seri kod, modül gibi cihazlara bağlanan telefonlar için standart olandır.

paket com.example.daniel.make; android.bluetooth. BluetoothAdapter'ı içe aktarın; android.bluetooth. BluetoothDevice'i içe aktar; android.bluetooth. BluetoothSocket'i içe aktarın; android.os. Handler'ı içe aktar; android.support.v7.app. AppCompatActivity'yi içe aktarın; android.os. Bundle'ı içe aktar; android.content. Intent'i içe aktarın; android.content. IntentFilter'ı içe aktarın; android.os. BatteryManager'ı içe aktarın; java.io. IOException'ı içe aktarın; java.io. OutputStream'i içe aktarın; java.util. Set'i içe aktar; java.util. UUID'yi içe aktarın;

public class MainActivity, AppCompatActivity'yi genişletir {

// gerekli nesneleri oluşturma İşleyici işleyicisi;//Runnable runnable döngüsüne yardımcı olur;//sürekli çalışır BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothCihaz mmCihaz; OutputStream mmOutputStream; uçucu boolean stopWorker; özel OutputStream outputStream; özel son Dize DEVICE_NAME="HC-05"; özel son UUID PORT_UUID=UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); özel BluetoothAdapter cihazı; özel BluetoothSocket soketi; @Override protected void onCreate(Bundle saveInstanceState) {//uygulama oluşturulduğunda çalışan bir dizi talimat super.onCreate(savedInstanceState);//displya oluşturma setContentView(R.layout.activity_main); runnable = new Runnable() { @Override public void run() {//tekrar tekrar çalışır int level = (int) getBattery();// şu anki pil seviyesini alır if (level==100){//eğer pil seviyesi %100'e ulaşır try { getBT();//bluetooth modülüne bağlanır openBT();//onu açar sendData();//gerekli verileri gönderir closeBT();//nesneyi kapatır } catch (IOException ex) { } } handler.postDelayed(runnable, 5000);//bir gecikme } }; işleyici = yeni İşleyici(); handler.postDelayed(runnable, 0); }

genel şamandıra getBattery() {

Intent batteryIntent= registerReceiver(null, new IntentFilter(Intent. ACTION_BATTERY_CHANGED));// pile bağlanan eylemi oluşturur int level = batteryIntent.getIntExtra(BatteryManager. EXTRA_LEVEL, -1);//daha iyi seviyeyi alır int ölçeği = pilIntent.getIntExtra(BatteryManager. EXTRA_SCALE, -1);//eğer (seviye == -1 || ölçek == -1) pilin ölçeğini alır {//yanlış adım durumunda dönüş 50.0f; } float batt = (level/(float)scale)*100.0f;//uygun ölçek dönüş battını alır;//seviyeyi döndürür }

void getBT(){//olası bluetooth bağlantılarını alır

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//bağdaştırıcıyı alır if(!mBluetoothAdapter.isEnabled()) {//telefonun Intent etkinleştirmede mavi dişe sahip olduğundan emin olurBluetooth = new Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE);//olmasını ister startActivityForResult(enableBluetooth, 0); değilse açılır; } pairedDevices = mBluetoothAdapter.getBondedDevices();//bağlı bluetooth listesini alır if(pairedDevices.size() > 0) {//(BluetoothDevice device: pairedDevices) için bazı cihazlar olduğundan emin olur {// cihazlar if(device.getName().equals("HC-05")) {//uygun olup olmadığını kontrol eder mmDevice = device;//bozukluğunu kaydeder; } } } }

void openBT(), IOException {'yi atar

UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standart //SerialPortService Kimliği mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);//uygun kimlikle cihaza bağlanır mmSocket.connect();//mmOutputStream'i bağlar = mmSocket.getOutputStream();//gönderme yeteneğini başlatır arduino modülüne veri }

void sendData(), t'yi arduino'ya gönderen IOException {//sınıfını atar

mmOutputStream.write('t'); }

void closeBT(), IOException'ı atar {//arduinoya olan tüm bağlantıları kapatır

stopWorker = doğru; mmOutputStream.close(); mmSocket.close(); } }

6. Adım: Dosyalar

Okuduğunuz için teşekkürler, bu projede kullanılan dosyalar ektedir.

Önerilen: