Բովանդակություն:

Հեռախոսի ավտոմատ լիցքավորիչ `6 քայլ (նկարներով)
Հեռախոսի ավտոմատ լիցքավորիչ `6 քայլ (նկարներով)

Video: Հեռախոսի ավտոմատ լիցքավորիչ `6 քայլ (նկարներով)

Video: Հեռախոսի ավտոմատ լիցքավորիչ `6 քայլ (նկարներով)
Video: Inchpes heraxosi gaxnabary kotrel / ինչպես հեռախոսի գախնաբառը կոտրել 2024, Հուլիսի
Anonim
Հեռախոսի ավտոմատ լիցքավորիչ
Հեռախոսի ավտոմատ լիցքավորիչ

«Այս հրահանգը ստեղծվել է Հարավային Ֆլորիդայի համալսարանի Makecourse- ի նախագծի պահանջի կատարման համար (www.makecourse.com)»:

Այս նախագծի հիմքում ընկած էր ստեղծել մի սարք, որը կարող էր լիցքավորել հեռախոսը, այնուհետև այն անջատել, երբ հեռախոսը հասնի 100%-ի: Սա կդադարեցնի ավելորդ լիցքավորման խնդիրները:

Քայլ 1: Պլաստիկ բաղադրիչներ

Պլաստիկ բաղադրիչներ
Պլաստիկ բաղադրիչներ
Պլաստիկ բաղադրիչներ
Պլաստիկ բաղադրիչներ
Պլաստիկ բաղադրիչներ
Պլաստիկ բաղադրիչներ
Պլաստիկ բաղադրիչներ
Պլաստիկ բաղադրիչներ

Օգտագործվեցին որոշ բաղադրիչներ, որոնք 3D տպագրված էին: Այս բաղադրիչները ներառում էին հիմք, լիցքավորիչի համար պահարան, դարակաշարերի և պտուտակավոր հանդերձանքի հավաքածու (սովորական հանդերձում և գծային կտոր, որը պտույտը փոխում է գծային շարժման) և հիմք `ամեն ինչի համար: Այս բաղադրիչները կբացատրվեն հաջորդ պարբերություններում: Արտաքին տեսքի կարգով

Լիցքավորիչի սեփականատեր

Դրա նպատակը հեռախոսի լիցքավորիչը պահելն է կամ գոնե դրա համար ավելի լավ և հարթ հիմք տալը:

Հիմք

Հիմքում կան օղակներ հեռախոսի պահարանի համար, ինչպես նաև ուղի ՝ հանդերձանքի հավաքածուի համար:

Հեռախոսի սեփականատեր

Ակնհայտորեն պահում է հեռախոսը

Հեռախոսի արմ

Տեղափոխում և պահում է հեռախոսը

Rack and Pinion Gear Set

Օգտագործվում է հեռախոսի լիցքավորիչը այս և այն կողմ տեղափոխելու համար

Քայլ 2. Քանդեք ոչ 3D տպագիր բաղադրիչները

Սրանք այն բաղադրիչներն են, որոնք կամ գնվել են ծրագրի համար, կամ արդեն պատկանում են: Որոշ մասերի համար ես դրանք կապել եմ Amazon- ի նմանատիպ իրերի հետ, բայց ազատ զգալ դրանք ձեռք բերել ցանկացած վայրում:

Micro Servo:

Ստանդարտ 0-180 սերվո. Https: //www.amazon.com/Futaba-FUTM0031-S3003-Stand…

HC-05 Bluetooth սերիական մոդուլ ՝

Հեռախոսի և հեռախոսի լիցքավորիչ

Արդուինո

Breadboard

Տուփ կամ աղբարկղ `հիմքի համար

Հպման ցուցիչ ՝

Քայլ 3: Էլեկտրոնիկա

Էլեկտրոնիկա
Էլեկտրոնիկա

Այս նախագծի սխեման կարող է պահանջել որոշ, հիմնականում HC-05 մոդուլի պատճառով: Այս տեսակի մոդուլներից շատերը գնահատվում են մոտավորապես 3.3 Վ -ից մինչև 6 Վ, ինչը Arduino- ի գործառնական տիրույթում է: Բայց, սերիական հաղորդակցության համար, Rx քորոցը երբեմն ավելի լավ է աշխատում ընդամենը 3.3 Վ լարման դեպքում: Ինչպես երևում է վերևի դիագրամում, երկու սերվոները միացված են Arduino- ի Vin կապին: Այս լրացուցիչ լարումը կարող է մատակարարվել ամեն ինչից, ես օգտագործել եմ 9 վոլտ մարտկոց: Հպման տվիչը Arduino- ում միացված էր 5 Վ լարման: Դա տեղի է ունեցել այն պատճառով, որ բոլոր բաղադրիչներն ունեցել են միևնույն լարման հոսքի հետ կապված խնդիրներ: Հպման տվիչը կցված է 2 -րդ կապում, այնպես որ այն կարող է օգտագործվել որպես կապի ընդհատում: Հետո bluetooth մոդուլը միացված է Rx և Tx կապերին սերիական հաղորդակցության համար: Մոդուլում Rx կապի և Arduino- ի Tx- ի միջև կա 2 կիլոգրամանոց ռեզիստոր `1 կիլոգրամ օմի հետ, որը միանում է գետնին: Սա օգնում է կարգավորել ներթափանցող լարումը:

Քայլ 4: Հավաքում

Ժողով
Ժողով

Theողովը բավականին պարզ է:

  1. ինչ -որ գերծանրքաշային սոսինձով տեղադրեք ձեր սերվերին իրենց դիրքերում, մեկը `հիմքի վրա կտրված հանդերձանքի համար, իսկ մյուսը` հեռախոսի հիմքի մոտ:
  2. Կցեք հպման տվիչը հեռախոսի ամրակին, որպեսզի այն իմանա, թե երբ է հեռախոսը այնտեղ:
  3. Այնուհետև ամրացրեք հանդերձանքը և թևը համապատասխան սերվերին
  4. Համոզվեք, որ լարերը չեն խանգարում այլ բաղադրիչներին, երբ լրացնում եք ձեր էլեկտրոնիկան

Քայլ 5: Կոդ

Կներկայացվեն կոդերի երեք հավաքածու, մեկը `Arduino- ի համար, որը ստեղծվել է Arduino IDE- ում և երկու ծածկագիր, որոնք արվել են Android Studio- ում: Android- ի ծրագրերը նույնն են, բացառությամբ մեկի, որ լիարժեք ծրագիր է, որը հետևում է մարտկոցի կյանքին, իսկ մյուսը ՝ ոչ: Երկրորդը փորձարկման նպատակով է:

Arduino կոդ

Այս ծածկագրի հիմնական կետը հպման տվիչի և շարժիչների գործարկումն է, այն հեռախոսից հրաման է ստանում և գործում է դրա վրա:

#include // զանգում է servo գրադարան, որպեսզի կարողանանք վերահսկել երկու servosServo servo1; Servo servo2; // յուրաքանչյուր servo շարժիչի համար ստեղծում է երկու servo օբյեկտ int a = 0; // track q փոփոխական, որը պարունակում է հեռախոսի սերիական հաղորդագրությունը void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // կցում է ընկնելու ընդհատում ՝ ճշգրիտ իմանալու համար, թե երբ է հպման տվիչը տեսնում, երբ հեռախոսը դուրս է գալիս servo1.attach (10); servo2.attach (9); // նախաստորագրում է երկու սերվերը Serial.begin (9600); // սկսում է սերիական հաղորդակցությունը bluetooth մոդուլին նման servo2.write (20); // ավտոմատ կերպով սերվոները սահմանում է մեկնարկային դիրքը servo1.write (180); }

դատարկ շրջան () {

if (Serial.available ()) {// սա ստուգում է, թե արդյոք հեռախոսից ինչ -որ բան գալիս է Tx և Rx սերիական կապում c = Serial.read (); // կարդում է, թե ինչ է գալիս եթե (c == 't') {// եթե սերիալային սարքը կարդում է այն ժամանակ դա նշանակում է, որ հեռախոսը լիովին լիցքավորված է, անջատման գործընթացը սկսվում է servo2.write (120); // անջատում է լիցքավորման լիցքը (5000); // սպասում է համոզվելու համար ժամանակ կա հեռացնելու համար servo1.write (110); // հեռախոսը ուղիղ դիրքով տեղափոխում է ազդանշան //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // վերամիավորում է ընդհատումը}} if (q == 1) {// եթե pluggin- ի պայմանը հաստատված է, ապա սկսեք լիցքավորիչի հետաձգումը (10000) ամրացնելով; servo2.write (0); // servo- ն տեղափոխում է q = 0; // վերականգնում վիճակը}}

դատարկ 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; // օգնում է loop Runnable runnable; // անընդհատ աշխատում է BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream մմOutputStream; ցնդող բուլյան stopWorker; մասնավոր OutputStream outputStream; մասնավոր եզրափակիչ տող DEVICE_NAME = "HC-05"; մասնավոր վերջնական UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); մասնավոր BluetoothAdapter սարք; մասնավոր BluetoothSocket վարդակից; @Override պաշտպանված void onCreate (Փաթեթ պահվածInstanceState) {// հրահանգների շարք է, որոնք գործում են հավելվածի ստեղծման ժամանակ super.onCreate (SaveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = նոր Runnable () { @Oververide public void run () {// անընդմեջ աշխատում է int level = (int) getBattery (); // ստանում է մարտկոցի ընթացիկ մակարդակը, եթե (մակարդակ == 100) {// եթե մարտկոցի մակարդակը հասնում է 100% փորձի {getBT (); // միանում է bluetooth մոդուլին openBT (); // բացում է sendData (); // ուղարկում է անհրաժեշտ տվյալները closeBT (); // փակում է օբյեկտը} բռնում (IOException ex) { }} handler.postDelayed (runnable, 5000); // հետաձգում}}; handler = նոր Handler (); handler.postDelayed (runnable, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // ստեղծում է մարտկոցին միացնող գործողություն int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // ստանում է ավելի լավ մակարդակի int սանդղակ = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // ստանում է մարտկոցի սանդղակը, եթե (մակարդակ == -1 || սանդղակ == -1) {// սխալ վերադարձի դեպքում 50.0f; } float batt = (մակարդակ/(float) սանդղակ)*100.0f; // ստանում է համապատասխան սանդղակի վերադարձի մարտիկ; // վերադարձնում է մակարդակը}

void getBT () {// ստանում է հնարավոր bluetooth կապերը

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // ստանում է ադապտեր, եթե (! mBluetoothAdapter.isEnabled ()) {// համոզված է, որ հեռախոսը կապույտ ատամ ունի Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // հարցումներ միացված է, եթե ոչ startActivityForResult (enableBluetooth, 0); } Սահմանել pairedDevices = mBluetoothAdapter.getBondedDevices (); // ստանում է կապակցված bluetooth- ի ցանկը, եթե (pairedDevices.size ()> 0) {// համոզվում է, որ կան որոշ սարքեր (BluetoothDevice device: pairedDevices) {// օղակների միջոցով սարքեր եթե (device.getName (). հավասար է («HC-05»)) {// ստուգում է, թե արդյոք դա ճիշտ է mmDevice = սարքը; // պահպանում է այն խափանումները; }}}}

void openBT () նետում է IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Ստանդարտ // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // սարքին միանում է համապատասխան id mmSocket.connect (); // // միացնում է mmOutputStream = mmSocket.getOutputStream (); // սկսում է ուղարկելու ունակությունը տվյալները arduino մոդուլին}

void sendData () նետում է IOException {// դասը, որը t- ն ուղարկում է arduino- ին

mmOutputStream.write ('t'); }

void closeBT () նետում է IOException {// փակում է arduino- ի բոլոր կապերը

stopWorker = ճշմարիտ; mmOutputStream.close (); mmSocket.close (); }}

Քայլ 6: Ֆայլեր

Շնորհակալություն կարդալու համար, կցված են այս նախագծում օգտագործված ֆայլերը

Խորհուրդ ենք տալիս: