Мазмуну:

Телефондун автоматтык кубаттагычы: 6 кадам (сүрөттөр менен)
Телефондун автоматтык кубаттагычы: 6 кадам (сүрөттөр менен)

Video: Телефондун автоматтык кубаттагычы: 6 кадам (сүрөттөр менен)

Video: Телефондун автоматтык кубаттагычы: 6 кадам (сүрөттөр менен)
Video: How to use Panasonic Cordless DECT 6.0 Digital Phone KX-TG273 System Link2Cell with Bluetooth 2024, Июль
Anonim
Автоматтык телефон заряддагыч түзүлүш
Автоматтык телефон заряддагыч түзүлүш

"Бул көрсөтмө Түштүк Флорида университетинин Макекурсунун долбоорунун талабын аткаруу үчүн түзүлгөн (www.makecourse.com)"

Бул долбоордун артында идея телефонду кубаттай ала турган түзүлүштү түзүү, анан телефон 100%га жеткенде аны ажыратуу болгон. Бул ашыкча кубаттоо маселелерин токтотот.

1 -кадам: Пластикалык компоненттер

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

3D принтерде колдонулган кээ бир компоненттер бар болчу. Бул компоненттер базадан, заряддагыч үчүн кармагычтан, стойка менен тиштүү тиштүү топтомдон (кадимки тиштүү жана сызыкты кыймылга айландыруучу сызыктуу бөлүк) жана баарынын иштеши үчүн базадан турган. Бул компоненттер кийинки пункттарда түшүндүрүлөт. Пайда болуу тартиби боюнча

Заряддагыч кармагыч

Мунун максаты - телефондун заряддагычын кармап туруу, же жок дегенде аны жакшыраак жана тегиз кылуу.

Негизги

Базада телефондун кармагычы үчүн шакектер жана редукторлор үчүн трек бар.

Телефон кармагыч

Телефону кармап турганы анык

Phone Arm

Телефонду кыймылдатып кармап турат

Rack and Pinion Gear Set

Телефондун заряддагычын алдыга жана артка жылдыруу үчүн колдонулат

2 -кадам: 3D басылбаган компоненттерди талкалаңыз

Бул долбоор үчүн сатылып алынган же буга чейин таандык болгон компоненттер. Кээ бир бөлүктөрү үчүн мен аларга/Amazonдогу окшош нерселерди шилтемелегем, бирок аларды каалаган жерден сатып алуудан тартынба.

Микро Серво:

Стандарт 0-180 Servo:

HC-05 Bluetooth сериялык модулу:

Телефон жана Телефон Заряддагыч

Arduino

Breadboard

База үчүн куту же урна

Тийүү сенсору:

3 -кадам: Электроника

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

Бул долбоордун схемасы кээ бир нерселерди талап кылышы мүмкүн, негизинен HC-05 модулунан улам. Бул типтеги модулдардын көпчүлүгү болжол менен 3.3Vдан 6Vга чейин, бул Arduino иштөө диапазонунда. Бирок, сериялык байланыш үчүн Rx пин кээде болгону 3.3V менен жакшыраак иштейт. Жогорудагы диаграммада көрүнүп тургандай, эки сервос Arduinoдогу Вин пинине илинген. Бул кошумча чыңалууну каалаган нерсе менен камсыздаса болот, мен 9 вольттуу батареяны колдондум. Сенсор сенсор Arduinoдогу 5Vга туташтырылган. Бул бардык компоненттердин бирдей чыңалуудан качып кетишинен улам болгон. Тийүү сенсору 2 -пинге бекитилген, ошондуктан аны пин үзүлүшү катары колдонсо болот. Андан кийин Bluetooth модулу Rx жана Tx пиндерине сериялык байланыш үчүн туташкан. Модулдагы Rx пини менен Arduinoдогу Txтин ортосунда 2 кило ом каршылыгы бар, жерге 1 кило ом кошулат. Бул кирип жаткан чыңалууну жөнгө салууга жардам берет.

4 -кадам: Ассамблея

Ассамблея
Ассамблея

Кураштыруу абдан жөнөкөй.

  1. кээ бир супер клейлер менен сервоприводдоруңузду өз позициясына орнотуңуз, бири тетиктин тетиги үчүн, экинчиси телефондун базасы турган жерге жакын.
  2. Тийүү сенсорун телефондун кармагычына бекиңиз, ошондо ал телефон качан бар экенин биле алат.
  3. Андан кийин редукторду жана колду тиешелүү сервоприёмниктерине бекиңиз
  4. Электроникаңызды толтуруп жатканда зымдар башка компоненттерге тоскоол болбогонун текшериңиз

5 -кадам: Код

Үч код топтому бар, Arduino IDEде түзүлгөн Arduino үчүн бир код жана Android Studioдо жасалган эки код. Android колдонмолору бирдей, бирок батарейканын иштөө мөөнөтүн көзөмөлдөгөн толук колдонмо, ал эми бири жок. Экинчиси сыноо максатында.

Arduino коду

Бул коддун негизги мааниси - бул сенсор менен моторлорду иштетүү, ал телефондон буйрук алат жана ошого жараша иштейт.

#include // servo китепканасын чакырат, андыктан биз эки servosServo servo1ди башкара алабыз; Servo servo2; // ар бир servo мотору үчүн эки servo объектисин түзөт int a = 0; // int q = 0 сыноо үчүн көзөмөлдөөчү өзгөрмө; // pluggin процесси баштала электе кечигүүгө жол берген өзгөрмө char c; // телефондогу сериялык билдирүүнү камтыган боштукту орнотуу () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); (10); servo2.attach (9); // эки servo 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 абалына жылдырат; // абалды баштапкы абалга келтирет}}

жараксыз AH () {

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

Android колдонмосу

Бул жерде мен туура колдонмону гана көрсөтөм, бирок тест кодунун файлы да берилет, бир гана айырмасы runnable менен getBattery классын алып салуу болот. Жогоруда айтылган сериялык код модуль сыяктуу түзмөктөргө туташкан телефондор үчүн стандарт болуп саналат.

com.example.daniel.make пакети; android.bluetooth. Bluetooth Адаптерин импорттоо; 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 String = "HC-05"; жеке акыркы UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); жеке BluetoothAdapter түзмөгү; жеке BluetoothSocket розеткасы; @Override корголгон void onCreate (Bundle saveInstanceState) {// - бул колдонмо түзүлгөндө иштей турган көрсөтмөлөрдүн жыйындысы super.onCreate (saveInstanceState); // displya түзүү setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// бир нече жолу иштейт int level = (int) getBattery (); // эгер батареянын деңгээли болсо (учурдагы деңгээл == 100) {// 100% аракетке жетет {getBT (); // bluetooth модулуна туташат openBT (); // аны ачат sendData (); // керектүү маалыматты жөнөтөт closeBT (); // объектти жабат} кармоо (IOException ex) { }} handler.postDelayed (runnable, 5000); // a delay}}; иштетүүчү = жаңы Handler (); handler.postDelayed (runnable, 0); }

коомдук float getBattery () {

Intent = RegisterReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED));; batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // батарейканын масштабын алат, эгерде (деңгээл == -1 || масштаб == -1) {// туура эмес кадам кайткан учурда 50.0f; } float batt = (level/(float) scale)*100.0f; // тиешелүү масштабдагы кайтаруу баттына ээ болот; // деңгээлди кайтарат}

void getBT () {// мүмкүн болгон Bluetooth байланыштарын алат

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

void openBT () IOException ыргытат {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // түзмөккө mmSocket.connect () тиешелүү id менен туташат; // mmOutputStream = mmSocket.getOutputStream () туташтырат; // жөнөтүү мүмкүнчүлүгүн баштайт. маалыматтар arduino модулуна}

void sendData () t arduinoго жөнөтүүчү IOException {// классын ыргытат

mmOutputStream.write ('t'); }

void closeBT () IOException ыргытат {// arduino менен болгон бардык байланыштарды жабат

stopWorker = чын; mmOutputStream.close (); mmSocket.close (); }}

6 -кадам: Файлдар

Окуганыңыз үчүн рахмат, бул долбоордо колдонулган файлдар тиркелет

Сунушталууда: