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

Robot Asisten AI dengan Arduino dan Python

Komponen dan persediaan

Arduino Nano R3
× 1
Motor servo mikro SG90
× 1
Sensor Ultrasonik - HC-SR04 (Generik)
× 1
PCBWay Kustom PCB
https://www.pcbway.com/project/shareproject/Multi_functional_Robot_PCB__Mofiza_.html
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Pendahuluan:

Kita semua akrab dengan robot asisten AI 'Jarvis' dari film "Iron Man" dan serial Marvel. Itu selalu menjadi impian programmer untuk membuat sesuatu sendiri. Hari ini saya akan menunjukkan cara sederhana untuk membuat asisten seperti itu menggunakan pemrograman Python. Selain itu, saya juga akan membuat avatar fisik dari robot itu, sehingga setiap kali kita berbicara dengan robot, ia dapat melakukan beberapa gerakan. Itu akan lebih menakjubkan dari sekedar robot perangkat lunak. Karena jika memiliki tubuh, itu keren. Jadi hari ini kita akan belajar menggunakan pemrograman Arduino dan Python untuk membuat AIrobot yang dapat mengontrol komputer Anda dan mengobrol sedikit dengan Anda. Ayo masuk guys!

Mengapa saya menamai robot itu 'Jaundice'? Karena saya melukisnya kuning, sangat kuning!

Bagian:

Elektronik -

  • Arduino Nano – 1x
  • Servo Mikro Sg90 – 3x
  • Sensor Ultra Sonic HCsr04– 1x

Tubuh –

  • Lembar PVC (sebaiknya putih, lebih baik untuk mewarnai, saya menggunakan yang biru)
  • Roda servo (untuk penyangga)

Alat:

  • Pisau pemotong
  • Gunting
  • lem panas
  • Cat semprot

Perangkat Lunak -

  • Python3
  • Arduino.ide

Prinsip:

Sebelum masuk ke gedung yang sebenarnya, ada baiknya untuk memiliki gagasan tentang apa yang akan kita lakukan.

Jadi, kode utama atau AI bagian dari kode akan berjalan di komputer, mengapa? Karena mendukung python dan memiliki kekuatan pemrosesan lebih dari Arduino kecil, juga karena bot AI akan mengontrol / mengotomatiskan beberapa tugas dari pc saya, itu harus berjalan di pc saya. Jadi, Arduinoboard-nya terhubung ke komputer saya menggunakan kabel USB.

Idenya adalah untuk menjalankan program python yang akan melakukan bagian Speech totext, memproses teks dan juga akan melakukan Text to speech. Berarti robot akan mendengarkan, memahami dan berbicara kembali. Untuk gerakan tubuh saya menyimpan beberapa gerakan (dikemas dalam fungsi) di papan Arduino. Fungsi untuk setiap gerakan dijalankan oleh kode python.

Sebagai contoh – jika robot harus mengatakan 'Hai/halo' kode python akan mengirim byte 'h', Arduino kemudian menjalankan fungsi hi(). Sesederhana itu.

Sekarang setelah Anda memiliki ide, mari kita lanjutkan ke proses selanjutnya.

Sirkuit dan elektronik

Sirkuit adalah hal yang mengganggu sebagian besar pembuat. Jika terjadi kesalahan, Anda dapat membakar beberapa bagian yang mahal. Untuk itu saya merancang sebuah papan PCB yang dapat digunakan untuk membuat berbagai proyek. Ini memiliki slot kartu micro SD, slot modul Bluetooth, 5v Sumber daya eksternal dan semuanya ditenagai oleh Arduino Nano.

Saya mendesain PCB menggunakan EasyEDA dan dicetak menggunakan layanan online PCBWay. Layanan mereka luar biasa. Saya memesan menggunakan kutipan instan PCB dan sistem mereka secara otomatis melakukan segalanya untuk saya. Dalam 3 hari saya mendapatkan papan dari China ke Bangladesh. Kualitasnya fantastis, soldermaskingnya sempurna dan garis/jejaknya, hasil akhirnya sebaik mungkin.

Bagaimanapun, saya menggunakan jejak 300 mm karena dapat menahan arus 1Amp.

Anda cukup mengunduh file PCB dari sini.

Solder dan sirkuit uji:

Pada langkah ini saya menyolder semuanya. Berhati-hatilah untuk tidak menghirup asapnya, karena dapat menyebabkan kanker.

Saya tidak menggunakan modul Bluetooth atau modul TF, jadi saya membiarkannya tidak disolder. Hal baiknya adalah, saya menggunakan 3 motor servo dan satu sensor sonar, semuanya dapat dengan mudah dialiri daya dari kabel USB yang kami sambungkan untuk memprogram Arduino. Ini bagus karena kita tidak perlu memikirkan sumber daya lain.

Namun, jika Anda masih ingin menggunakan baterai eksternal, gunakan baterai lipo 2s (7.4V), lebih dari itu dan servo akan terbakar.

Buat tubuh:

Saya menggunakan lembaran PVC untuk membuat tubuh, Anda dapat menggunakan karton juga. Pertama, saya membuat kotak untuk bagian utama, papan utama, dan motor servo. Ini seperti membuat kotak. Saya membuat kepala dengan cara yang sama, membuat dua lubang untuk sensor (sebagai mata). Saya telah menambahkan semua gambar yang Anda butuhkan. Saya membuat satu tangan seperti kunci pas dan tangan lainnya seperti sumbat. Saya sebenarnya menggunakan sumbat dan menambahkannya ke satu tangan menggunakan lem panas.

Dimensi? Sebenarnya tidak ada, karena itu robot Anda, Anda dapat membuatnya menggunakan beberapa alat yang mudah jadi buatlah sesuai keinginan Anda, buatlah dalam berbagai bentuk dan ukuran.

Berhati-hatilah untuk menambahkan semua barang elektronik sebelum menutup bodi. Saya mengecat bodinya setelah saya memasang sensor dan semua elektronik. Jangan lakukan itu, saya sudah mewarnai Arduino saya dengan warna kuning.

Jadi, lakukan pengecatan afterfinishing bodi, lalu pasang semua elektroniknya.

Pengodean1 (Python):

Unduh Python dari situs ini, pastikan untuk menambahkan python ke jalur Anda saat menginstal.

Setelah menginstal Python, Anda perlu menjalankan beberapa perintah dari command prompt/terminal untuk menginstal library untuk Speech Recognition, Audio Support, Text to Speech, BrowserAutomation, keperluan Komunikasi Serial. Jalankan perintah ini -

pip installspeechrecognitionpip install pyaudiopip install pyttsx3pip install pywhatkitpip install pyserial 

Kemudian unduh kode python dari sini atau salin dari bawah. Masuk ke langkah coding2.

 """ JAUNDICE:Robot Asisten AI dengan Arduino dan Pythonpenulis:ashraf minhajmail:[email protected] Terakhir:Nov 2020Lisensi:Hak Cipta (C) Ashraf Minhaj.Lisensi Publik Umum (GPL3+)"""impor speech_recognition sebagai sr # perpustakaan pengenalan suaraimport acak # untuk memilih kata-kata acak dari listimport pyttsx3 # offline Text to Speechimport datetime # untuk mendapatkan tanggal dan waktuimpor browser web # untuk membuka dan melakukan tugas webimport serial # untuk komunikasi serialimport pywhatkit # untuk otomatisasi web lainnya# Deklarasikan nama robot (Kata bangun)robot_name ='jaundice'# kata acak listhi_words =['hi', 'hello', 'yo baby', 'salam']bye_words =['bye', 'tata', 'hasta la vista' ]r_u_there =['apakah Anda di sana', 'Anda di sana']# initilize thingsengine =pyttsx3.init() # init text to speech engine#voices =engine.getProperty('voices') #periksa suara#engine.setProperty( 'voice', voices[1].id) # voicelistener wanita =sr.Recognizer() # menginisialisasi API pengenalan suara# terhubung dengan NiNi mot atau papan driver melalui komunikasi serial:port =serial.Serial("COM15", 9600) print("Tubuh fisik, terhubung.")kecuali:print("Tidak dapat terhubung ke tubuh fisik saya")def mendengarkan():"" " dengarkan apa yang dikatakan pengguna""" coba:dengan sr.Microphone() sebagai sumber:# dapatkan input dari mic print("Talk>>") voice =listener.listen(source) # mendengarkan dari mikrofon perintah =listener.recognize_google (suara).lower() # gunakan google API # semua kata huruf kecil- agar kita dapat memproses dengan mudah #command =command.lower() print(command) # cari kata bangun di awal if (command.split(' ')[0] ==robot_name):# jika kata bangun ditemukan.... print("[kata bangun ditemukan]") proses(perintah) # fungsi panggilan proses untuk mengambil tindakan kecuali:proses passdef(kata) :""" memproses apa yang dikatakan pengguna dan mengambil tindakan """ print(words) # periksa apakah menerima perintah apa pun # pecahkan kata di word_list =words.split(' ')[1:] # pisahkan dengan spasi dan abaikan bangun -up kata if (len(daftar_kata)==1):if (daftar_kata[0] ==nama_robot):talk("Bagaimana Bisa Saya bantu?") #.write(b'l') return if word_list[0] =='play':"""if command for play, play from youtube""" talk("Oke boss, playing" ) extension =' '.join(word_list[1:]) # cari tanpa perintah kata port.write(b'u') pywhatkit.playonyt(extension) port.write(b'l') return elif word_list[0] =='search':"""if command for google search""" port.write(b'u') talk("Oke bos, searching") port.write(b'l') extension =' '.join (word_list[1:]) pywhatkit.search(extension) mengembalikan if (word_list[0] =='get') dan (word_list[1] =='info'):"""if perintah untuk mendapatkan info""" port.write(b'u') talk("Oke, saya benar") port.write(b'u') extension =' '.join(word_list[2:]) # cari tanpa perintah kata inf =pywhatkit.info(extension) talk(inf) # read from result return elif word_list[0] =='open':"""if command for opening URLs""" port.write(b'l') talk(" Pembukaan pak") url =f"http://{''.join(word_list[1:])}" # buat URL webbrowser.open(url) return elif word_list[0] =='uppercut':port.write(b'U') elif word_list[0] =='smash':port.write(b's') elif word_list[0] =='punch':port.write(b'p') # sekarang periksa untuk kecocokan kata di word_list:jika kata di hi_words:""" jika pengguna mengatakan hai/halo, sapa dia dengan tepat""" port.write(b'h') # send command to wave hand talk(random.choice(hi_words) ) kata elif di bye_words:""" jika pengguna mengucapkan selamat tinggal dll""" talk(random.choice(bye_words))def talk(kalimat):""" berbicara / menanggapi pengguna """ engine.say(kalimat) engine.runAndWait()# menjalankan aplikasi sementara Benar:listen() # menjalankan mendengarkan satu kali 

Pengkodean2 (Arduino):

Bagian ini mudah, tidak ada yang perlu dipasang. Gunakan Arduino.ide untuk memprogram papan. Unduh dari sini jika Anda belum pernah menggunakan Arduino sebelumnya.

Seperti yang telah saya sebutkan sebelumnya, program Arduino menunggu data serial, jika menerima data apa pun ia memeriksa data byte. Jika data dicocokkan dengan perintah yang telah ditentukan maka ia akan mengeksekusi pernyataan. Jika 'u' dikirim, itu membuat kedua tangan terangkat, seperti itu.

Unduh kode dari sini, salin dari bawah.

 /** JAUNDICE:Robot AI Assistant dengan Arduino dan Python *** * penulis:ashraf minhaj* mail:[email protected]* Terakhir Diedit:Nov 2020* * Lisensi:Hak Cipta (C) Ashraf Minhaj .* Lisensi Publik Umum (GPL3+)*/#includeServo head;Servo l_hand;Servo r_hand;// define sonar sensor's pinsint trig =4;int echo =5;// accept databyte val =""; void setup() { // letakkan kode setup Anda di sini, untuk dijalankan sekali:head.attach(2); l_hand.attach(3); r_hand.attach(4); Serial.begin(9600); // untuk berkomunikasi melalui port serial dengan Python}void standby(){ // semua motor ke posisi ini head.write(90); int r_pos =30; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos);}void hi(){ // semua motor ke posisi ini head.write(90); int saya =0; for(i=30; i<=170; i++){ r_hand.write(i); penundaan (5); } untuk(i=170; i>=100; i--){ r_hand.write(i); penundaan (5); } untuk(i=100; i<=170; i++){ r_hand.write(i); penundaan (5); } untuk(i=170; i>=30; i--){ r_hand.write(i); penundaan (5); } standby();}void hands_up(){ // lakukan ini pada setiap perintah (tidak banyak, cukup gerakkan tangan sedikit) //head.write(150); //tunda(300); //head.write(90); int saya =0; for(i=30; i<=170; i++){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); } penundaan (600); for(i=170; i>=30; i--){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); }}void weight_lift(){ // angkat beban menggunakan kedua tangan int i =0; for(i=30; i<=170; i++){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); } for(int count=0; count<=4; count++){ for(i=170; i>=60; i--){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); } untuk(i=60; i<=170; i++){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); } } untuk(i=170; i>=30; i--){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); }}void bersemangat(){ return;}void look_left(){ // putar hed ke kiri head.write(180);}void bingung(){ for(int count=0; count<=1; count++){ head .tulis(30); r_hand.write(170); penundaan (700); r_hand.write(30); kepala.tulis(120); l_hand.write(30); penundaan (700); l_hand.write(160); } standby();}void double_punch(){ // lakukan pukulan int i =0; for(i=30; i>=0; i--){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); } penundaan(2000); int r_pos =80; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (500); standby();}void r_upper_cut(){ // buat potongan atas kanan int i =0; for(i=30; i<=170; i++){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); } untuk(int hitung=0; hitung<=4; hitung++){ int i =0; for(i=170; i>=60; i--){ r_hand.write(i); penundaan (1); } untuk(i=60; i<=170; i++){ r_hand.write(i); penundaan (1); } } bersiap(); delay(100);}void smash(){ // menghancurkan sesuatu int i =0; for(i=30; i<=170; i++){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (5); } penundaan(2000); for(i=170; i>=0; i--){ int r_pos =i; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (1); } penundaan(300); int r_pos =180; int l_pos =peta(r_pos, 0, 180, 180, 0); l_hand.write(l_pos); r_hand.write(r_pos); penundaan (1000); standby();}void eye_detect(){ // lakukan sesuatu jika sensor mata mendeteksi gerakan kembali;}void loop() { // letakkan kode utama Anda di sini, untuk dijalankan berulang kali:standby(); while(Serial.available()> 0) //cari data serial ada atau tidak { val =Serial.read(); //baca serial value if(val =='h'){ // do hi hi(); } if(val =='p'){ // lakukan hai double_punch(); } if(val =='u'){ hands_up(); penundaan(3000); } if(val =='l'){ standby(); Lihat ke kiri(); penundaan(2000); } if(val =='U'){ // uppercut r_upper_cut(); penundaan(2000); } if(val =='s'){ smash(); penundaan(2000); } }} 

Unggah kodenya.

Menyatukan semuanya Dan Selesai:

Setelah menyelesaikan semua langkah itu saya menghubungkan Arduino saya ke pc menggunakan kabel USB dan kemudian menjalankan program python. Saat Anda menggunakannya, pastikan untuk menambahkan port Arduino yang benar dalam kode python. Jika Anda melakukan semuanya seperti yang saya sebutkan, bot akan bekerja seperti pesona.

Terima kasih!

Kode

Kode Sumber
https://github.com/ashraf-minhaj/JAUNDICE-AI-Assistant-Robot

Skema


Proses manufaktur

  1. Membuat robot dengan Raspberry Pi dan Python
  2. Buat Robot Streaming Video Terkendali Internet Anda dengan Arduino dan Raspberry Pi
  3. type() dan isinstance() dengan Python dengan Contoh
  4. Sistem Kehadiran Menggunakan Arduino dan RFID dengan Python
  5. Hambatan Menghindari Robot Dengan Motor Servo
  6. Mengontrol Robot Roomba Dengan Arduino Dan Perangkat Android
  7. Mengontrol Motor Servo dengan Arduino dan MPU6050
  8. u-blox LEA-6H 02 Modul GPS dengan Arduino dan Python
  9. Pengenalan dan Sintesis Ucapan dengan Arduino
  10. Robot Asisten Rumah Otonom