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

Mainan yang Dikendalikan Android Menggunakan Raspberry Motor Shield

Komponen dan persediaan

Perangkat Android
× 1
Arduino 101
× 1
Raspberry Pi 2 Model B
× 1
Pelindung Motor Elektronik Dk
× 1
Wifi Dongle Raspberry Resmi
× 1
Bank daya 5v terpercaya
× 1

Aplikasi dan layanan online

Microsoft Windows 10 IoT Core
Arduino IDE
Microsoft Visual Studio 2015

Tentang proyek ini

Di akhir proyek kami akan mengelola kendaraan medan yang dikendalikan oleh sensor akselerasi perangkat android

Proyek ini berisi perangkat Motor shield, raspberry pi, arduino, dan motor dc.

LANGKAH 1

Pertama-tama kita harus membuat bus I2C antara raspberry pi dan arduino. Anda dapat melihat mengapa kami memilih I2C dari sini.

Anda dapat menemukan kode yang diperlukan yang berisi proses I2C dan pelindung motor seperti yang ditunjukkan di bawah ini.

#include #define MyAddress 0x40#include AF_DCMotor motorhiz(3);AF_DCMotor motoryon(4);byte DataToBeSend[1];byte ReceivedData;int counter =0;void setup(){Serial.begin(9600 ); /* Inisialisasi I2C Slave &tetapkan fungsi panggilan balik 'onReceive' pada 'I2CReceived'*/ Wire.begin(MyAddress); Wire.onReceive(I2CReceived); Wire.onRequest(I2CRequest); motorhiz.setSpeed(254); motorhiz.run(LEPAS); motoryon.setSpeed(254); motoryon.run(RELEASE);}void loop(){ /* Tingkatkan DataToBeSend setiap detik dan pastikan rentangnya antara 0 dan 99 */ //DataToBeSend[0] =(DataToBeSend[0]>=99) ? 0 :DataToBeSend[0] + 1;}/* Fungsi ini akan otomatis dipanggil ketika RPi2 mengirimkan data ke slave I2C ini */void I2CReceived(int NumberOfBytes){ //counter++; //String penghitungStr =String(penghitung); //Serial.println("Data yang Diterima :"+counterStr); /* WinIoT telah mengirim byte data; membacanya */ ReceivedData =Wire.read(); int ReceivedDataInt =(int)ReceivedData; String ReceivedDataStr =String(DataDiterima); Serial.println(ReceivedDataInt); if(ReceivedDataInt>=100) //X Datası { Serial.println("DataX :"+ReceivedDataStr); if(ReceivedDataInt> 145 &&ReceivedDataInt <154) { Serial.println("RELEASE"); motorhiz.run(LEPAS); } else if(ReceivedDataInt>=100 &&ReceivedDataInt <104) { Serial.println("RELEASE"); motorhiz.run(LEPAS); } else if(ReceivedDataInt>=155) { ReceivedDataInt =ReceivedDataInt -155; int kecepatan motor =(ReceivedDataInt * 10)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motorhiz.setSpeed(kecepatan motor); motorhiz.run(Mundur); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } else if(ReceivedDataInt>=105 ) { ReceivedDataInt =ReceivedDataInt -105; int kecepatan motor =(ReceivedDataInt * 10)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motorhiz.setSpeed(kecepatan motor); motorhiz.run(maju); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } } else // Data Yı { Serial.println("DataX :"+ReceivedDataStr); if(ReceivedDataInt> 45 &&ReceivedDataInt <54) { Serial.println("RELEASE"); motoryon.run(LEPAS); } else if(ReceivedDataInt>=0 &&ReceivedDataInt <4) { Serial.println("RELEASE"); motoryon.run(LEPAS); } else if(ReceivedDataInt>=55) { ReceivedDataInt =ReceivedDataInt -55; int kecepatan motor =(ReceivedDataInt * 12)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motoryon.setSpeed(kecepatan motor); motoryon.run(Mundur); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } else if(ReceivedDataInt>=5 ) { ReceivedDataInt =ReceivedDataInt -5; int kecepatan motor =(ReceivedDataInt * 12)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motoryon.setSpeed(kecepatan motor); motoryon.run(FOWARD); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } }}/* Fungsi ini akan otomatis dipanggil ketika RPi2 meminta data dari slave I2C ini */void I2CRequest(){//Serial.println("DataToBeSend"); /*Kirim data ke WinIoT */ //Wire.write(DataToBeSend,1);} 
Skema pin I2C untuk komunikasi antara arduino dan raspberry pi pada gambar seperti di atas. Tidak perlu menggunakan catu daya eksternal untuk arduino. Arduino akan mendapatkan daya dari pin Vout raspberry pi. 

LANGKAH 2

Kode yang diperlukan untuk raspberry pi (berfungsi sebagai server web) yang mengirimkan data ke arduino melalui I2C seperti yang ditunjukkan di bawah ini.

Kode dapat menemukan kode di akhir halaman (Bagian Kode).

LANGKAH 3

Kami mengembangkan Aplikasi Android Visual Studio Cordova yang mengirimkan data sensor akselerometer ke server web menggunakan permintaan ajax.

Kode dapat menemukan kode di akhir halaman (Bagian Kode).

SINGKAT

1-) Aplikasi Android mengirimkan data sensor (data akselerometer ponsel android) ke server web yang berjalan di raspberry pi.

2-) Web server mengirimkan data (raspberry pi mendapatkan data dari sensor accelerometer ponsel android) ke arduino menggunakan I2C.

3-) Arduino memproses data dan menjalankan motor menggunakan pelindung motor.

Kode

  • Komunikasi Wiri.h I2C dan kode android moto shield
  • Pengendali Jarak Jauh Android
  • Server Web Windows IOT
Wiri.h I2C Komunikasi dan moto shield kode androidArduino
Komunikasi I2C antara kode arduino dan raspberry pi. Ini untuk komunikasi serial untuk dua perangkat dengan sumber output input minimal.
#include #define MyAddress 0x40#include AF_DCMotor motorhiz(3);AF_DCMotor motoryon(4);byte DataToBeSend[ 1];byte ReceivedData;int counter =0;pengaturan batal(){ Serial.begin(9600); /* Inisialisasi I2C Slave &tetapkan fungsi panggilan balik 'onReceive' pada 'I2CReceived'*/ Wire.begin(MyAddress); Wire.onReceive(I2CReceived); Wire.onRequest(I2CRequest); motorhiz.setSpeed(254); motorhiz.run(LEPAS); motoryon.setSpeed(254); motoryon.run(RELEASE);}void loop(){ /* Tingkatkan DataToBeSend setiap detik dan pastikan rentangnya antara 0 dan 99 */ //DataToBeSend[0] =(DataToBeSend[0]>=99) ? 0 :DataToBeSend[0] + 1;}/* Fungsi ini akan otomatis dipanggil ketika RPi2 mengirimkan data ke slave I2C ini */void I2CReceived(int NumberOfBytes){ //counter++; //String penghitungStr =String(penghitung); //Serial.println("Data yang Diterima :"+counterStr); /* WinIoT telah mengirim byte data; membacanya */ ReceivedData =Wire.read(); int ReceivedDataInt =(int)ReceivedData; String ReceivedDataStr =String(DataDiterima); Serial.println(ReceivedDataInt); if(ReceivedDataInt>=100) //X Datası { Serial.println("DataX :"+ReceivedDataStr); if(ReceivedDataInt> 145 &&ReceivedDataInt <154) { Serial.println("RELEASE"); motorhiz.run(LEPAS); } else if(ReceivedDataInt>=100 &&ReceivedDataInt <104) { Serial.println("RELEASE"); motorhiz.run(LEPAS); } else if(ReceivedDataInt>=155) { ReceivedDataInt =ReceivedDataInt -155; int kecepatan motor =(ReceivedDataInt * 10)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motorhiz.setSpeed(kecepatan motor); motorhiz.run(Mundur); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } else if(ReceivedDataInt>=105 ) { ReceivedDataInt =ReceivedDataInt -105; int kecepatan motor =(ReceivedDataInt * 10)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motorhiz.setSpeed(kecepatan motor); motorhiz.run(maju); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } } else // Data Yı { Serial.println("DataX :"+ReceivedDataStr); if(ReceivedDataInt> 45 &&ReceivedDataInt <54) { Serial.println("RELEASE"); motoryon.run(LEPAS); } else if(ReceivedDataInt>=0 &&ReceivedDataInt <4) { Serial.println("RELEASE"); motoryon.run(LEPAS); } else if(ReceivedDataInt>=55) { ReceivedDataInt =ReceivedDataInt -55; int kecepatan motor =(ReceivedDataInt * 12)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motoryon.setSpeed(kecepatan motor); motoryon.run(Mundur); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } else if(ReceivedDataInt>=5 ) { ReceivedDataInt =ReceivedDataInt -5; int kecepatan motor =(ReceivedDataInt * 12)+50; if(Kecepatan motor> 254) { Kecepatan motor =254; } motoryon.setSpeed(kecepatan motor); motoryon.run(FOWARD); String motorSpeedStr =String(Kecepatan motor); Serial.println("MotorHiz :"+motorSpeedStr); } } }/* Fungsi ini akan otomatis dipanggil ketika RPi2 meminta data dari slave I2C ini */void I2CRequest(){ //Serial.println("DataToBeSend"); /*Kirim data ke WinIoT */ //Wire.write(DataToBeSend,1);}
Pengendali Jarak Jauh AndroidC#
Pengendali Jarak Jauh Android
Tanpa pratinjau (hanya unduhan).
Server Web Windows IOTC#
Server Web Windows IOT
Tanpa pratinjau (hanya unduhan).

Suku cadang dan penutup khusus

Diagram pin Arduino ke raspberry

Skema

untuk detailnya:https://www.hackster.io/AnuragVasanwala/home-automation-0dcefc

Proses manufaktur

  1. Sensor Gerak menggunakan Raspberry Pi
  2. Robot Menggunakan Raspberry Pi &Bridge Shield
  3. Robot Raspberry Pi dikendalikan melalui Bluetooth
  4. Buat Robot Streaming Video Terkendali Internet Anda dengan Arduino dan Raspberry Pi
  5. Robot Terkendali Gerakan Menggunakan Raspberry Pi
  6. ROBOT WIFI RASPBERRY PI DIKONTROL DARI PONSEL PINTAR ANDROID
  7. Robot Terkendali Wifi Menggunakan Raspberry Pi
  8. Sistem Robotika Deteksi Manusia Menggunakan Arduino Uno
  9. Arduino Spybot
  10. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android