Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Arduino - Menggambar melalui Web Menggunakan Step Motor Controller

Komponen dan persediaan

Arduino UNO
× 1
PHPoC WiFi Shield 2 untuk Arduino
× 1
Pengendali Motor Stepper PHPoC
× 2
Makeblock XY Plotter
× 1

Tentang proyek ini

Demonstrasi

Jika Anda baru mengenal Arduino, Anda dapat memulai dengan :

  • Tutorial Arduino untuk pemula.
  • Semua tentang motor untuk Arduino

Cara Kerjanya

Ketika jari menyentuh area gambar di halaman web, koordinat titik sentuh XY dikirim ke Arduino. Setelah menskalakan koordinat, Arduino akan menggerakkan motor dua langkah untuk menemukan pena ke koordinat itu. Selama periode bergerak, Arduino terus mengirimkan lintasan pena ke aplikasi web, aplikasi web menggambar lintasan di kanvas.

Kode Sumber

Kode sumber mencakup dua bagian:kode Arduino dan kode Antarmuka Pengguna Web.

Kode Arduino

Ini adalah kode arduino, yang berjalan dalam infinite loop ke:

  • Menerima perintah dari halaman web dan melakukan tugas sesuai perintah.
  • CMD_MOVE:pindahkan pena ke posisi tertentu dengan mengontrol motor dua langkah
  • CMD_PEN_UP:angkat pena dengan mengubah sudut motor servo
  • CMD_PEN_DOWN:turunkan pena dengan mengubah sudut motor servo
  • Terus baca posisi pena saat ini dan kirim ke halaman web

Antarmuka Pengguna Web

Lihat kode di bagian Kode

  • Menyediakan antarmuka pengguna
  • Menangani event pengguna dan mengirim perintah dengan koordinat ke Arduino
  • Menerima lintasan dari Arduino dan menggambarnya di halaman web

remote_draw.php adalah file yang berisi Antarmuka Pengguna Web. Itu perlu disimpan di PHPoC [WiFi] Shield. Untuk mengunggah file ke PHPoC [WiFi] Shield, lakukan langkah-langkah berikut:

  • Copy kode di bawah ini dan simpan ke dalam file remote_draw.php.
  • Instal PHPoC Debugger
  • Hubungkan PHPoC ke PHPoC [WiFi] Shield melalui kabel micro-USB sesuai dengan instruksi ini. Perhatikan bahwa Arduino harus diberi daya.
  • Unggah file remote_draw.php ke PHPoC [WiFi] Shield sesuai dengan instruksi ini

Cara

  • Informasi jaringan konfigurasi untuk pelindung PHPoC atau pelindung WiFi PHPoC
  • Instal Perpustakaan PHPoC
  • Instal Perpustakaan Ekspansi PHPoC
  • Kompilasi dan unggah kode ke Arduino
  • Unggah antarmuka pengguna web ke pelindung PHPoC [WiFi]
  • Buka Serial Monitor dan salin alamat IP PHPoC Shield
  • Akses Antarmuka Pengguna Web melalui Browser Web:http://ip_address_of_shield /remote_draw.php
  • Menggambar melalui Web

Untuk membeli komponen elektronik, Anda dapat memesannya dari utsource.net

Kit Pemula Arduino Terbaik untuk Pemula

Lihat Kit Arduino Terbaik untuk Pemula


Referensi Fungsi

  • Serial.begin()
  • Serial.println()
  • tunda()
  • milis() ​​​​​​
  • untuk loop
  • perulangan sementara
  • jika lain
  • loop()
  • penyiapan()
  • String.toInt()
  • String.substring()
  • String.indexOf()
  • String.remove()
  • String.equals()

Kode

  • Kode Arduino
  • Antarmuka Pengguna Web
Kode ArduinoArduino
#include #include #include #define MAX_X 55550 // unit adalah langkah#define MAX_Y 68780 // unit adalah langkah#define TOUCH_OFFSET 5000 // unit adalah langkah#menentukan PEN_STATE_UP 0#menentukan PEN_STATE_DOWN 1#menentukan CMD_PEN_UP 0#menentukan CMD_PEN_DOWN 1#menentukan CMD_MOVE 2#menentukan STEP_MODE 32#menentukan SPEED_X_COEF ((panjang)40 * LANGKAH_MOVE)#menentukan SPEED_XED ((panjang)1500 * STEP_MODE)#menentukan SPEED_Y_MAX ((panjang)1500 * STEP_MODE)#menentukan ACCEL_X_MAX ((panjang)6000 * STEP_MODE)#menentukan ACCEL_Y_MAX ((panjang)6000 * STEP_MODE)#menentukan STEP_STATE_STOP 1#STATE_STOP 0_#STATE_STOP define RESOLUTION 500#define MIN_UPDATE_INTERVAL 100 // dalam milidetikPhpocServer server(80);ExpansionStepper stepX(14);ExpansionStepper stepY(13);Servo servo;long preX =0;long preY =0;byte penState =PEN_STATE_UP;bool isUnlockedX =false;bool isUnlockedY =false;int forwardDirX =-1; /* arah plotter XY ketika motor X bergerak maju, tergantung pada instalasi, Ini harus diuji untuk menentukan nilai*/int forwardDirY =+1; /* arah plotter XY saat motor Y bergerak ke atas, tergantung pada instalasi, Ini harus diuji untuk menentukan nilai*/unsigned long lastUpdateMillis;void penUp() { servo.write(110); penState =PEN_STATE_UP;}void penDown() { servo.write(180); penState =PEN_STATE_DOWN;}void xyWait() { while(stepX.getState()> 1 || stepY.getState()> 1);}void xyInit() { penUp(); stepX.setMode(STEP_MODE); stepX.setVrefStop(4); stepX.setVrefDrive(15); stepX.setResonance(120, 250); stepX.setSpeed(20000); stepX.setAccel(50.000); stepY.setMode(STEP_MODE); stepY.setVrefStop(4); stepY.setVrefDrive(15); stepY.setResonance(120, 250); stepY.setSpeed ​​(20000); stepY.setAccel(50.000); // pindahkan pena ke (0, 0) stepX.stepGotoSW(0, -forwardDirX); stepY.stepGotoSW(0, -forwardDirY); xyTunggu(); stepX.setPosition(0); stepY.setPosition(0); // batalkan komentar blok ini untuk menjalankan pertama dan ubah nilai pada baris 6, 7 dari file ini dan baris 33 dari index.php sesuai dengan nilai di konsol IDE /* // periksa langkah maksimal stepX.stepGotoSW(1, forwardDirX); stepY.stepGotoSW(1, forwardDirY); xyTunggu(); // ubah nilai ini pada baris 45 dari index.php Serial.print(F("MAX_X:")); Serial.println(stepX.getPosition() * forwardDirX); Serial.print(F("MAX_Y:")); Serial.println(stepY.getPosition() * forwardDirY); */ xyGoto(TOUCH_OFFSET, TOUCH_OFFSET); xyTunggu(); stepX.setEioMode(0, EIO_MODE_LOCK); stepX.setEioMode(1, EIO_MODE_LOCK); stepY.setEioMode(0, EIO_MODE_LOCK); stepY.setEioMode(1, EIO_MODE_LOCK);}void xyGoto(panjang x, panjang y) { if(x  (MAX_X - TOUCH_OFFSET)) x =MAX_X - TOUCH_OFFSET; if(y  (MAX_Y - TOUCH_OFFSET)) y =MAX_Y - TOUCH_OFFSET; x *=forwardDirX; y *=forwardDirY; int32_t deltaX =x - stepX.getPosition(); int32_t deltaY =y - stepY.getPosition(); deltaX =perut(deltaX); deltaY =perut(deltaY); kecepatan panjangX =SPEED_X_COEF * abs(deltaX); kecepatan panjangY =SPEED_Y_COEF * abs(deltaY); if(speedX> speedY) { if(speedX> SPEED_X_MAX) speedX =SPEED_X_MAX; rasio ganda =deltaY / (ganda)deltaX; speedY =(panjang) (rasio * kecepatanX); } else { if(speedY> SPEED_Y_MAX) speedY =SPEED_Y_MAX; rasio ganda =deltaX / (ganda)deltaY; speedX =(panjang) (rasio * speedY); } accelX panjang; akselerasi panjang; if(kecepatanX  MIN_UPDATE_INTERVAL) isUpdate =true; curX panjang =stepX.getPosition(); curY panjang =stepY.getPosition(); deltaX panjang =curX - preX; deltaY panjang =curY - mangsa; jarak jauh =sqrt(pow(deltaX, 2) + pow(deltaY, 2)); if(dist> RESOLUTION) isUpdate =true; if(isUpdate ==false || dist ==0) mengembalikan false; lastUpdateMillis =curMillis; preX =skrX; preY =curY; sendPositionToWeb(); // kirim posisi saat ini untuk ditampilkan di web}void sendPositionToWeb() { char wbuf[20]; panjang x =stepX.getPosition() * forwardDirX; panjang y =stepY.getPosition() * forwardDirY; String data =String(F("[")) + x + String(F(",")) + y + String(F(",")) + penState + String(F("]\n")); data.toCharArray(wbuf, data.length() + 1); server.write(wbuf, data.length());}void setup() { Serial.begin(9600); while(!Serial); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket("xy_plotter"); Serial.print("Alamat server WebSocket :"); Serial.println(Phpoc.localIP()); Ekspansi.begin(460800); servo.attach(8); /** CATATAN:Untuk menjalankan pertama:* - batalkan komentar pada blok terakhir di xyInit() * - jalankan kode Arduino * - ubah nilai pada baris 6, 7 dari file ini dan baris 33 dari index.php sesuai dengan nilai di IDE menghibur. **/ xyInit(); lastUpdateMillis =milis();}void loop() { // tunggu klien baru:PhpocClient client =server.available(); if(klien) { String data =klien.readLine(); if(data) { //Serial.println(data); byte separatorPos1 =data.indexOf(':'); byte separatorPos2 =data.lastIndexOf(':'); byte cmd =data.substring(0, separatorPos1).toInt(); panjang x =data.substring(separatorPos1 + 1, separatorPos2).toInt(); panjang y =data.substring(pemisahPos2 + 1).toInt(); switch(cmd) { kasus CMD_PEN_DOWN:xyGoto(x, y); //xyTunggu(); while(stepX.getState()> 1 || stepY.getState()> 1) xyCheckUpdateToWeb(); penDown(); merusak; kasus CMD_PEN_UP://xyWait(); while(stepX.getState()> 1 || stepY.getState()> 1) xyCheckUpdateToWeb(); penaUp(); merusak; kasus CMD_MOVE:xyGoto(x, y); merusak; } } } xyCheckUpdateToWeb();}
Antarmuka Pengguna WebPHP
Arduino - PHPoC Shield - XY Plotter

WebSocket :null


Proses manufaktur

  1. Decoder DTMF Hanya Menggunakan Arduino
  2. Pengontrol DMX yang Dioperasikan Web
  3. Sistem Robotika Deteksi Manusia Menggunakan Arduino Uno
  4. Pengontrol Game Arduino
  5. Sistem Alarm Arduino:SERENA
  6. Mainan yang Dikendalikan Android Menggunakan Raspberry Motor Shield
  7. Robot Pengikut Baris
  8. Kontrol Arduino Rover menggunakan Firmata dan Pengontrol Xbox One
  9. Arduino - Kirim Suhu ke Web melalui Serial
  10. Arduino - Buka Kunci Pola Web