Агуулгын хүснэгт:

Утасны автомат цэнэглэгч: 6 алхам (зурагтай)
Утасны автомат цэнэглэгч: 6 алхам (зурагтай)

Видео: Утасны автомат цэнэглэгч: 6 алхам (зурагтай)

Видео: Утасны автомат цэнэглэгч: 6 алхам (зурагтай)
Видео: #iphone утсаа алга болгосон ч санаа битгий зовоорой 👌 2024, Долдугаар сарын
Anonim
Утасны автомат цэнэглэгч
Утасны автомат цэнэглэгч

"Энэхүү зааварчилгаа нь Өмнөд Флоридагийн их сургуулийн Макекурсын төслийн шаардлагыг биелүүлэх зорилгоор бүтээгдсэн болно (www.makecourse.com)."

Энэхүү төслийн гол санаа нь утсаа цэнэглэх боломжтой төхөөрөмж бүтээж, дараа нь утас 100%хүрэхэд түүнийг салгах явдал байв. Энэ нь хэт их цэнэглэх асуудлыг зогсоох болно.

Алхам 1: Хуванцар эд анги

Хуванцар эд анги
Хуванцар эд анги
Хуванцар эд анги
Хуванцар эд анги
Хуванцар эд анги
Хуванцар эд анги
Хуванцар эд анги
Хуванцар эд анги

3D хэвлэсэн зарим бүрэлдэхүүн хэсгүүд байсан. Эдгээр бүрэлдэхүүн хэсгүүд нь суурь, цэнэглэгч эзэмшигч, өлгүүр ба бүлүүрийн арааны иж бүрдэл (ердийн араа ба эргэлтийг шугаман хөдөлгөөн болгон өөрчилдөг шугаман хэсэг), ажиллах бүх зүйлд зориулсан суурийг агуулдаг. Эдгээр бүрэлдэхүүн хэсгүүдийг дараах догол мөрүүдэд тайлбарлах болно. Үзэгдэх дарааллаар

Цэнэглэгч эзэмшигч

Үүний зорилго нь утасны цэнэглэгчийг барих, эсвэл ядаж байхад илүү сайн, түвшний суурийг өгөх явдал юм.

Суурь

Суурь нь утас эзэмшигчийн бөгж, түүнчлэн арааны багцын замтай.

Утас эзэмшигч

Утсаа барьж байгаа нь ойлгомжтой

Утасны гар

Утсаа хөдөлгөж, барьж байна

Rack and Pinion Gear Set

Утасны цэнэглэгчийг нааш цааш хөдөлгөхөд ашигладаг

Алхам 2: 3D хэвлэгдээгүй бүрэлдэхүүн хэсгүүдийг задлах

Эдгээр нь төсөлд зориулж худалдаж авсан эсвэл аль хэдийн эзэмшиж байсан бүрэлдэхүүн хэсгүүд юм. Зарим эд ангиудын хувьд би Amazon дээр түүнтэй төстэй зүйлүүдийг холбосон боловч тэдгээрийг хаанаас ч худалдаж авах боломжтой.

Микро Серво:

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

HC-05 Bluetooth цуваа модуль:

Утас ба утасны цэнэглэгч

Ардуино

Талхны самбар

Суурийн хайрцаг эсвэл хогийн сав

Мэдрэгч мэдрэгч:

Алхам 3: Электроник

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

Энэхүү төслийн хэлхээнд HC-05 модулийн улмаас зарим зүйл шаардагдаж магадгүй юм. Энэ төрлийн олон модулиуд нь ойролцоогоор 3.3V -аас 6V хүртэл хүчдэлтэй байдаг бөгөөд энэ нь Arduino -ийн ашиглалтын хүрээнд байдаг. Гэхдээ цуваа холбооны хувьд Rx зүү нь зөвхөн 3.3V -тэй илүү сайн ажилладаг. Дээрх диаграмаас харахад хоёр servo нь Arduino дээрх Vin pin -тэй холбогдсон байна. Энэ нэмэлт хүчдэлийг ямар ч зүйлээр хангах боломжтой, би 9 вольтын батерей ашигласан. Мэдрэгч мэдрэгчийг Arduino дээрх 5V сүлжээнд холбосон. Энэ нь бүх бүрэлдэхүүн хэсгүүд ижил хүчдэлээс салахад асуудалтай байсантай холбоотой юм. Мэдрэгч мэдрэгчийг 2 -р зүү дээр хавсаргасан тул зүү таслахад ашиглаж болно. Дараа нь bluetooth модулийг Rx ба Tx тээглүүрт холбож цуваа холболт хийдэг. Модуль дээрх Rx зүү ба Arduino дээрх Tx хоёрын хооронд 2 кило ом эсэргүүцэлтэй бөгөөд 1 кило ом нь газартай холбогддог. Энэ нь орж ирж буй хүчдэлийг зохицуулахад тусалдаг.

Алхам 4: угсрах

Чуулган
Чуулган

Угсралт нь маш энгийн.

  1. зарим супер цавуугаар таны servo -ийг байрлалд нь байрлуулна, нэг нь суурийн араагаар, нөгөө нь утасны суурийн ойролцоо байрладаг.
  2. Мэдрэгч мэдрэгчийг утасны эзэмшигчид залга, ингэснээр утас хэзээ байгааг мэдэх боломжтой болно.
  3. Дараа нь араа ба гарыг тус тусын сервод холбоно уу
  4. Цахилгаан хэрэгслээ бөглөхдөө утаснууд бусад бүрэлдэхүүн хэсгүүдэд саад болохгүй гэдгийг анхаараарай

Алхам 5: Код

Ардуиногийн IDE дээр бүтээгдсэн Arduino кодын нэг код, 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) -тай ижил хурдтайгаар цуваа холболтыг эхлүүлнэ; // servo -ийг автоматаар тохируулна эхлэх байрлал 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 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)); // тасалдлыг салгадаг бөгөөд ингэснээр таслагдах ёсгүй үед эхлэхэд ямар ч асуудал гарахгүй}

Андройд апп

Энд би зөвхөн тохирох програмыг харуулах болно, гэхдээ туршилтын кодын файлыг өгөх болно, зөвхөн ялгаа нь runable болон getBattery ангиллыг устгах болно. Дээр дурдсан цуваа код нь модуль гэх мэт төхөөрөмжид холбогдох утаснуудын хувьд стандарт код юм.

com.example.daniel.make багц; android.bluetooth. Bluetooth Adapter импортлох; 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; Bluetooth залгуур mmSocket; Bluetooth төхөөрөмж mmDevice; ГаралтынStream ммOutputStream; дэгдэмхий boolean stopWorker; хувийн OutputStream outputStream; хувийн эцсийн String DEVICE_NAME = "HC-05"; хувийн эцсийн UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); хувийн Bluetooth адаптер төхөөрөмж; хувийн Bluetooth сокет залгуур; @Override protected void onCreate (Bundle saveInstanceState) {// нь програмыг үүсгэх үед ажиллуулах зааварчилгааны багц юм super.onCreate (saveInstanceState); runnable = new Runnable () {@Override public void run () {// удаа дараа ажиллуулдаг int level = (int) getBattery (); // хэрэв зайны түвшин бол 100% оролдоход хүрнэ үү {getBT (); // bluetooth модульд холбогддог openBT (); // түүнийг нээх sendData (); // шаардлагатай өгөгдлийг илгээдэг closeBT (); // объектыг хаадаг} барих (IOException ex) { }} handler.postDelayed (runnable, 5000); // a delay}}; зохицуулагч = шинэ зохицуулагч (); handler.postDelayed (runnable, 0); }

нийтийн float getBattery () {

Intent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // нь зайнд холбогдсон үйлдлийг үүсгэдэг batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -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 (); // нь (pairedDevices.size ()> 0) {// холбосон bluetooth -ийн жагсаалтыг авна. төхөөрөмжүүд бол (device.getName (). тэнцүү ("HC-05")) {// тохирох эсэхийг нь шалгадаг mmDevice = төхөөрөмж; // эвдрэлийг хадгалдаг; }}}}

void openBT () нь IOException хаядаг {

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

void sendData () нь tdu -г arduino руу илгээдэг IOException {// классыг хаядаг

mmOutputStream.write ('t'); }

void closeBT () нь IOException хаядаг {// arduino -тай холбогдох бүх холболтыг хаадаг

stopWorker = үнэн; mmOutputStream.close (); mmSocket.close (); }}

Алхам 6: Файлууд

Уншсанд баярлалаа, энэ төсөлд ашигласан файлуудыг хавсаргав

Зөвлөмж болгож буй: