Мазмуну:
- 1 -кадам: Пластикалык компоненттер
- 2 -кадам: 3D басылбаган компоненттерди талкалаңыз
- 3 -кадам: Электроника
- 4 -кадам: Ассамблея
- 5 -кадам: Код
- 6 -кадам: Файлдар
Video: Телефондун автоматтык кубаттагычы: 6 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
"Бул көрсөтмө Түштүк Флорида университетинин Макекурсунун долбоорунун талабын аткаруу үчүн түзүлгөн (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 -кадам: Ассамблея
Кураштыруу абдан жөнөкөй.
- кээ бир супер клейлер менен сервоприводдоруңузду өз позициясына орнотуңуз, бири тетиктин тетиги үчүн, экинчиси телефондун базасы турган жерге жакын.
- Тийүү сенсорун телефондун кармагычына бекиңиз, ошондо ал телефон качан бар экенин биле алат.
- Андан кийин редукторду жана колду тиешелүү сервоприёмниктерине бекиңиз
- Электроникаңызды толтуруп жатканда зымдар башка компоненттерге тоскоол болбогонун текшериңиз
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 -кадам: Файлдар
Окуганыңыз үчүн рахмат, бул долбоордо колдонулган файлдар тиркелет
Сунушталууда:
Телефондун кинетикалык кубаттагычы: 9 кадам
Кинетикалык телефон заряддагыч: 2020 ар бир адам үчүн чынында эле жаман жыл болду, бир гана нерсе глобалдык электр энергиясын өчүрүү болуп калды. Мен сизге телефондун заряддагыч түзүлүшүн кыймыл менен кантип жасоону көрсөтөм. Бул долбоордо картон колдонулат. капкагын жаса
Күн панелиндеги телефондун кубаттагычы: 5 кадам
Solar Panel Phone Charger: Бул күн панелиндеги телефондун заряддагыч түзүлүшү - бул сиздин электрондук шаймандарыңызды заряддай турган портативдүү жана кайра заряддалуучу түзүлүш. Энергия бир гана батарейка менен эмес, кошумча шире менен камсыз кыла турган күн батареясы менен да камсыздалат
Күн панелиндеги телефондун кубаттагычы: 11 кадам
Күн панелиндеги телефон заряддагыч түзүлүш: Бул энергияны күн панелинен алынган күн энергиясы менен камсыздалган телефон кубаттагычы үчүн. Ал ошондой эле моторду жана жарык сенсорлорун колдонуу менен чогултулган күн энергиясын оптималдаштыруу мүмкүнчүлүгүнө ээ болот, бул платформаны позитивге багыттоо үчүн
Жөнөкөй уюлдук телефондун кубаттагычы бир саатта: 10 кадам
Жөнөкөй уюлдук телефондун заряддоосу бир саатта гана: Уюлдук телефондор азыркы учурда абдан маанилүү. Бул кооз аппаратсыз бир күн ойлоно аласызбы? Албетте, жок, бирок телефонуңуздун заряддагычын жоготкондо же заряддагыч түзүлүшүңүз туура эмес иштесе эмне кыласыз. Албетте, сиз жаңысын сатып аласыз. Бирок сен
Ryobi 18vdc фонариги Ipod же уюлдук телефондун кубаттагычы менен: 5 кадам
Ipod же уюлдук телефондун кубаттагычы менен Ryobi 18vdc фонариги: Бул жерде сиздин 18vdc Ryobi фонаригиңиздин колдонулушун көбөйтө турган тез бузуу. Мен IPod же уюлдук телефонумду бир чымчым менен кубаттоо үчүн 12vdc чыгарууну коштум. Бул болжол менен бир саатка созулду жана анча деле кыйын болгон жок. Бөлүктөрдүн тизмеси: 1-Ryobi 18vdc Жарыгы