INHOUDSOPGAWE:

N Outomatiese laaier: 6 stappe (met foto's)
N Outomatiese laaier: 6 stappe (met foto's)

Video: N Outomatiese laaier: 6 stappe (met foto's)

Video: N Outomatiese laaier: 6 stappe (met foto's)
Video: Cursus online boekhouden met e-Boekhouden.nl | Webinar 3 van 6 2024, Julie
Anonim
'N Outomatiese laaier
'N Outomatiese laaier

"Hierdie instruksies is geskep ter voldoening aan die projekvereiste van die Makecourse aan die Universiteit van Suid -Florida (www.makecourse.com)"

Die idee agter hierdie projek was om 'n toestel te skep wat 'n telefoon kan laai, en dit dan kan ontkoppel wanneer die telefoon 100%bereik. Dit sal probleme met te veel laai stop.

Stap 1: Plastiekkomponente

Plastiek komponente
Plastiek komponente
Plastiek komponente
Plastiek komponente
Plastiek komponente
Plastiek komponente
Plastiek komponente
Plastiek komponente

Daar was 'n paar komponente wat 3D gedruk is. Hierdie komponente bestaan uit 'n basis, 'n houer vir die laaier, 'n tandwielstel ('n normale rat en 'n lineêre stuk wat die rotasie na lineêre beweging verander) en 'n basis vir alles waarop u kan werk. Hierdie komponente sal in die volgende paragrawe verduidelik word. In volgorde van voorkoms

Laaierhouer

Die doel hiervan is om die telefoonoplaaier vas te hou, of dit ten minste 'n beter en gelyk basis te gee.

Basis

Die basis het ringe vir die telefoonhouer en 'n band vir die ratkas.

Telefoonhouer

Hou natuurlik die telefoon vas

Telefoonarm

Beweeg en hou die telefoon vas

Rack and Pinion -ratstel

Word gebruik om die telefoonlaaier heen en weer te skuif

Stap 2: Verdeel die komponente wat nie in 3D gedruk is nie

Dit is die komponente wat óf vir die projek gekoop is óf reeds besit is. Vir sommige van die onderdele het ek daaraan gekoppel/soortgelyke items op Amazon, maar kan dit gerus oral kry.

Micro Servo:

Standaard 0-180 servo:

Seriële module HC-05 Bluetooth:

Telefoon en telefoonlaaier

Arduino

Broodbord

Boks of asblik vir basis

Raaksensor:

Stap 3: Elektronika

Elektronika
Elektronika

Die kring vir hierdie projek kan egter 'n paar vereis, hoofsaaklik as gevolg van die HC-05-module. Baie van die modules van hierdie tipe is ongeveer 3,3V tot 6V, wat in die werkingsgebied van die Arduino is. Maar vir seriële kommunikasie werk die Rx -pen soms beter met slegs 3.3V. Soos in die diagram hierbo gesien, word die twee servo's aan die Vin -pen op die Arduino gekoppel. Hierdie ekstra spanning kan deur alles verskaf word; ek het 'n 9 volt battery gebruik. Die aanraaksensor is op die 5V op die Arduino ingeskakel. Dit was omdat al die komponente probleme ondervind het om met dieselfde spanning af te loop. Die raaksensor is aan pen 2 geheg, sodat dit as 'n penonderbreking gebruik kan word. Dan word die bluetooth -module gekoppel aan die Rx- en Tx -penne vir seriële kommunikasie. Tussen die Rx -pen op die module en Tx op die Arduino is 'n 2 kilo -ohm -weerstand met 'n 1 -kilo -ohm -aansluiting op die grond. Dit help om die spanning wat ingaan, te reguleer.

Stap 4: Montering

Vergadering
Vergadering

Die samestelling is redelik eenvoudig.

  1. met 'n bietjie supergom, monteer u servo's in hul posisie, een vir die rat by die uitsparing op die basis en een naby die basis van die telefoon.
  2. Koppel die raaksensor aan die telefoonhouer sodat hy kan weet wanneer die telefoon daar is.
  3. Bevestig dan die rat en arm aan hul onderskeie servo's
  4. Maak seker dat drade nie inmeng met ander komponente terwyl u u elektronika invul nie

Stap 5: Kode

Daar sal drie stelle kode aangebied word, een kode vir die Arduino, wat in die Arduino IDE geskep is en twee kodes wat in Android Studio gemaak is. Die Android -programme is dieselfde, behalwe dat een die volledige app is wat die batterylewe volg en een nie. Die tweede is vir toetsdoeleindes.

Arduino -kode

Die belangrikste punt van hierdie kode is om die aanraaksensor en motors te gebruik, dit ontvang 'n opdrag van die telefoon en reageer daarop.

#include // bel die servobiblioteek sodat ons die twee servosServo servo1 kan beheer; Servo servo2; // skep twee servo -voorwerpe vir elke servomotor int a = 0; // opsporingsveranderlike vir die toets van int q = 0; // 'n veranderlike wat toelaat dat daar 'n vertraging is voordat die inpropproses begin met c; // veranderlike wat die reeksboodskap van die opstel van die telefoon se leemte () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING) bevat; // voeg 'n vallende onderbreking aan om presies te weet wanneer die raaksensor sien wanneer die telefoon op servo1.attach is (10); servo2.attach (9); // initialiseer die twee servo's Serial.begin (9600); // begin die seriële kommunikasie teen 'n tempo soortgelyk aan dié van die bluetooth -module servo2.write (20); // stel die servo's outomaties in op 'n beginposisie servo1.write (180); }

leemte -lus () {

if (Serial.available ()) {// dit kontroleer of daar iets uit die telefoon kom oor die seriële penne Tx en Rx c = Serial.read (); // lees waaruit dit kom as (c == 't') {// as die reeksapparaat dan lees, beteken dit dat die telefoon volledig opgelaai is, begin die ontkoppelingsproses met servo2.write (120); // ontkoppel die laaiervertraging (5000); // wag om seker te maak daar is tyd vir die verwydering servo1.write (110); // beweeg die telefoon in 'n regop posisie om //Serial.println("here ") aan te dui; attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // maak die onderbreking weer vas}} as (q == 1) {// as die toestand vir die inprop is, begin dan met die aanheg van die laaiervertraging (10000); servo2.write (0); // skuif servo in posisie q = 0; // herstel toestand}}

nietig AH () {

//Serial.println("in "); servo1.write (180); // laat die telefoonplatform in die laaiposisie val q = 1; // begin die voorwaarde om die proses voort te sit // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // maak die onderbreking los, sodat daar geen probleme met die onderbreking sal wees as dit nie begin nie}

Android App

Hier sal ek slegs die regte app vertoon, maar die lêer van die toetskode sal ook gegee word; die enigste verskil is die verwydering van die hardloop- en getBattery -klas. Die reeksreëlkode is die standaard wat gebruik word vir telefone wat met toestelle soos die module verbind word.

pakket com.example.daniel.make; invoer android.bluetooth. BluetoothAdapter; invoer android.bluetooth. BluetoothDevice; invoer android.bluetooth. BluetoothSocket; invoer android.os. Handler; voer android.support.v7.app. AppCompatActivity in; voer android.os. Bundle in; invoer android.content. Intent; voer android.content. IntentFilter in; voer android.os. BatteryManager in; invoer java.io. IOException; voer java.io. OutputStream in; invoer java.util. Set; invoer java.util. UUID;

openbare klas MainActivity brei AppCompatActivity {

// die skep van nodige voorwerpe Hanteerder hanteerder; // help met die lus Loopbare loopbare; // loop voortdurend BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Bluetooth -toestel mm -toestel; OutputStream mmOutputStream; vlugtige booleaanse stopWorker; private OutputStream outputStream; privaat finale snaar DEVICE_NAME = "HC-05"; private finale UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); privaat Bluetooth -adapter; privaat Bluetooth -aansluiting; @Override protected void onCreate (Bundle savedInstanceState) {// is 'n stel instruksies wat uitgevoer word wanneer die app super.onCreate (saveInstanceState) geskep word; // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// loop herhaaldelik int level = (int) getBattery (); // kry die huidige batteryniveau as (level == 100) {// as die batteryniveau bereik 100% probeer {getBT (); // maak verbinding met die Bluetooth -module openBT (); // maak dit sendData (); // stuur die nodige data closeBT (); // sluit die voorwerp} catch (IOException ex) { }} handler.postDelayed (hardloopbaar, 5000); // 'n vertraging}}; hanteerder = nuwe Hanteerder (); handler.postDelayed (hardloopbaar, 0); }

openbare float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // skep die aksie wat aansluit by die battery int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // kry die beter vlak int skaal = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // kry die skaal van die battery as (vlak == -1 || skaal == -1) {// in geval van foutopbrengs 50.0f; } float batt = (vlak/(float) skaal)*100.0f; // kry die regte skaal retour slag; // gee die vlak terug}

void getBT () {// kry die moontlike bluetooth -verbindings

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // kry die adapter as (! mBluetoothAdapter.isEnabled ()) {// seker maak dat die telefoon 'n blou tand het op Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // vra dat dit moet wees aangeskakel as nie startActivityForResult (enableBluetooth, 0); } Stel pairedDevices = mBluetoothAdapter.getBondedDevices (); // kry die lys met gebinde bluetooth as (pairedDevices.size ()> 0) {// seker maak dat daar 'n paar toestelle is vir (BluetoothDevice -toestel: pairedDevices) {// deur die toestelle as (device.getName (). gelyk is aan ("HC-05")) {// kyk of dit die regte mmDevice = device is; // stoor dit breek; }}}}

leegte openBT () gooi IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // maak verbinding met die toestel met die regte ID mmSocket.connect (); // verbind mmOutputStream = mmSocket.getOutputStream (); // begin die vermoë om te stuur data na die arduino -module}

void sendData () gooi IOException {// klas wat die t na die arduino stuur

mmOutputStream.write ('t'); }

void closeBT () gooi IOException {// sluit al die verbindings met die arduino

stopWorker = waar; mmOutputStream.close (); mmSocket.close (); }}

Stap 6: lêers

Dankie dat u gelees het, die lêers wat in hierdie projek gebruik is, is aangeheg

Aanbeveel: