فهرست مطالب:
- مرحله 1: مواد
- مرحله 2: بازوی رباتیک را به صورت سه بعدی چاپ کنید
- مرحله 3: مونتاژ الکترونیکی
- مرحله 4: برنامه تلفن هوشمند
- مرحله 5: کد آردوینو
- مرحله ششم: همین
تصویری: بازی بازوی روباتیک - کنترل کننده تلفن هوشمند: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
سلام !
در اینجا یک بازی سرگرم کننده تابستانی است: بازوی رباتیک توسط تلفن هوشمند کنترل می شود !!
همانطور که در ویدیو مشاهده می کنید ، می توانید بازو را با چند جوی استیک در تلفن هوشمند خود کنترل کنید.
همچنین می توانید الگویی را که ربات در یک حلقه تکثیر می کند ذخیره کنید تا بعنوان مثال برخی کارهای تکراری را انجام دهد. اما این الگو مطابق میل شما قابل تغییر است !!!!
خلاق بودن !
مرحله 1: مواد
در اینجا می توانید مواد مورد نیاز خود را مشاهده کنید.
ساخت این بازوی رباتیک حدود 50 یورو برای شما هزینه خواهد داشت. نرم افزار و ابزارها قابل تعویض هستند ، اما من از آنها برای این پروژه استفاده کردم.
مرحله 2: بازوی رباتیک را به صورت سه بعدی چاپ کنید
بازوی روباتیک به صورت سه بعدی (با prusa i3 ما) چاپ شد.
با تشکر از وب سایت "HowtoMechatronics.com" ، فایلهای STL او برای ساخت بازوی سه بعدی عالی هستند.
حدود 20 ساعت طول می کشد تا تمام قطعات چاپ شوند.
مرحله 3: مونتاژ الکترونیکی
مونتاژ در 2 قسمت جدا شده است:
یک قسمت الکترونیکی ، که در آن آردوینو توسط پین های دیجیتال و سرویس بلوتوث (Rx ، Tx) به سروو متصل می شود.
بخش قدرت ، جایی که سروها با 2 شارژر تلفن (5 ولت ، حداکثر 2 آمپر) تغذیه می شوند.
مرحله 4: برنامه تلفن هوشمند
این برنامه بر روی مخترع برنامه ساخته شده است. ما از 2 جوی استیک برای کنترل 4 سروو و 2 دکمه دیگر برای کنترل گریپ نهایی استفاده می کنیم.
ما Arm و Smartphone را با استفاده از ماژول بلوتوث (HC-06) به هم متصل می کنیم.
در نهایت ، یک حالت ذخیره به کاربر اجازه می دهد تا 9 موقعیت برای بازو ذخیره کند.
سپس بازو به حالت خودکار می رود ، جایی که او موقعیت های ذخیره شده را بازتولید می کند.
مرحله 5: کد آردوینو
// 08/19 - گوشی هوشمند بازوی رباتیک کنترل می شود
#شامل #تعریف درست واقعی #تعریف نادرست // ************************************************* ************
کلمه تکرار ؛ // mot envoyé du module Arduino au smartphone
int chiffre_final = 0؛ int cmd = 3 ؛ // variable commande du servo moteur (troisième fil (نارنجی ، زرد)) int cmd1 = 5 ؛ // servo1 int cmd2 = 9؛ // servo2 int cmd3 = 10؛ // servo3 // int cmd4 = 10؛ // servo4 int cmd5 = 11؛ // pince int activ_saving = 0؛ سرو موتئور ؛ // در définit notre servomoteur Servo moteur1؛ Servo moteur2؛ Servo moteur3؛ // Servo moteur4؛ Servo moteur5؛ int step_angle_mini = 4؛ int step_angle = 3؛ int angle، angle1، angle3، angle5، angle2؛ // angle int pas؛ int r ، r1 ، r2 ، r3 ؛ int enregistrer؛ باله بولی = FALSE ؛ boolean fin1 = FALSE ؛ boolean fin2 = FALSE ؛ boolean fin3 = FALSE ؛ boolean fin4 = FALSE ؛ کلمه w ؛ // variable envoyé du smartphone au module Arduino int sauvegarde_positions1 [5]؛ int sauvegarde_positions2 [5]؛ int sauvegarde_positions3 [5]؛ int sauvegarde_positions4 [5]؛ int sauvegarde_positions5 [5]؛ int sauvegarde_positions6 [5]؛ int sauvegarde_positions7 [5]؛ int sauvegarde_positions8 [5]؛ int sauvegarde_positions9 [5]؛
// زاویه int ؛ // زاویه چرخش (0 تا 180)
//********************برپایی*************************** ******** void setup () {sauvegarde_positions1 [0] = sauvegarde_positions1 [1] = sauvegarde_positions1 [2] = sauvegarde_positions1 [3] = sauvegarde_positions1 [4] = 0؛ sauvegarde_positions2 [0] = sauvegarde_positions2 [1] = sauvegarde_positions2 [2] = sauvegarde_positions2 [3] = sauvegarde_positions2 [4] = 0؛ sauvegarde_positions3 [0] = sauvegarde_positions3 [1] = sauvegarde_positions3 [2] = sauvegarde_positions3 [3] = sauvegarde_positions3 [4] = 0؛ sauvegarde_positions4 [0] = sauvegarde_positions4 [1] = sauvegarde_positions4 [2] = sauvegarde_positions4 [3] = sauvegarde_positions4 [4] = 0؛ sauvegarde_positions5 [0] = sauvegarde_positions5 [1] = sauvegarde_positions5 [2] = sauvegarde_positions5 [3] = sauvegarde_positions5 [4] = 0؛ sauvegarde_positions6 [0] = sauvegarde_positions6 [1] = sauvegarde_positions6 [2] = sauvegarde_positions6 [3] = sauvegarde_positions6 [4] = 0؛ sauvegarde_positions7 [0] = sauvegarde_positions7 [1] = sauvegarde_positions7 [2] = sauvegarde_positions7 [3] = sauvegarde_positions7 [4] = 0 ؛ sauvegarde_positions8 [0] = sauvegarde_positions8 [1] = sauvegarde_positions8 [2] = sauvegarde_positions8 [3] = sauvegarde_positions8 [4] = 0؛ sauvegarde_positions9 [0] = sauvegarde_positions9 [1] = sauvegarde_positions9 [2] = sauvegarde_positions9 [3] = sauvegarde_positions9 [4] = 0؛ moteur.attach (cmd)؛ // on relie l'objet au pin de commande moteur1.attach (cmd1)؛ moteur2.attach (cmd2)؛ moteur3.attach (cmd3)؛ // moteur4.attach (cmd4) ؛ moteur5.attach (cmd5)؛ moteur.write (6)؛ زاویه = 6 ؛ moteur1.write (100)؛ زاویه 1 = 100 ؛ moteur2.write (90)؛ moteur3.write (90)؛ //moteur4.write(12)؛ moteur5.write (90)؛ زاویه = 6 ؛ زاویه 1 = 100 ؛ زاویه 2 = 90 ؛ زاویه 3 = 90 ؛ زاویه 5 = 90 ؛ Serial.begin (9600)؛ // permettra de communiquer au module Bluetooth} // ******************* BOUCLE ****************** ***************** حلقه خالی () {
// Serial.print ("زاویه") ؛
//Serial.print(angle)؛Serial.print ("\ t")؛ Serial.print (angle1)؛ Serial.print ("\ t")؛ Serial.print (angle2)؛ Serial.print ("\ t ")؛ Serial.print (angle3)؛ Serial.print (" / t ")؛ Serial.print (angle5)؛ Serial.print (" / n ")؛
//Serial.print("angle ")؛
int i؛ w = گیرنده ()؛ // on va recevoir une information du smartphone، la variable w switch (w) {case 1: TouchDown_Release ()؛ break؛ مورد 2: TouchDown_Grab () ؛ شکستن ؛ مورد 3: Base_Rotation () ؛ break؛ مورد 4: Base_AntiRotation () ؛ break؛ مورد 5: دور کمر () ؛ شکستن ؛ مورد 6: Waist_AntiRotation () ؛ شکستن ؛ مورد 7: Third_Arm_Rotation () ؛ break؛ مورد 8: Third_Arm_AntiRotation () ؛ break؛ مورد 9: چرخش_چهارم () ؛ شکستن ؛ مورد 10: Fourth_Arm_AntiRotation () ؛ break؛ // مورد 11: Fifth_Arm_Rotation () ؛ break؛ // مورد 12: Fifth_Arm_AntiRotation () ؛ break؛ مورد 21: Serial.print ("دکمه مورد 1") ؛ chiffre_final = 1؛ sauvegarde_positions1 [0] = زاویه ؛ sauvegarde_positions1 [1] = angle1؛ sauvegarde_positions1 [2] = angle2؛ sauvegarde_positions1 [3] = angle3_posugegarde_4 = angle5 ؛ Serial.println (sauvegarde_positions1 [1]) ؛ Serial.println (sauvegarde_positions1 [2]) ؛ Serial.println (sauvegarde_positions1 [3]) ؛ Serial.println (sauvegarde_positions1 [4]) ؛ زنگ تفريح؛ مورد 22: chiffre_final = 2 ؛ sauvegarde_positions2 [0] = زاویه ؛ sauvegarde_positions2 [1] = angle1 ؛ sauvegarde_positions2 [2] = angle2؛ sauvegarde_positions2 [3] = angle3 ؛ sauvegarde_positions2 [4] = angle5 ؛ زنگ تفريح؛ مورد 23: chiffre_final = 3؛ sauvegarde_positions3 [0] = زاویه؛ sauvegarde_positions3 [1] = angle1؛ sauvegarde_positions3 [2] = angle2؛ sauvegarde_positions3 [3] = angle3؛ sauvegarde_positions3 [4] = angle5؛ مورد 24: chiffre_final = 4 ؛ sauvegarde_positions4 [0] = زاویه ؛ sauvegarde_positions4 [1] = angle1 ؛ sauvegarde_positions4 [2] = angle2؛ sauvegarde_positions4 [3] = angle3 ؛ sauvegarde_positions4 [4] = angle5 ؛ زنگ تفريح؛ مورد 25: chiffre_final = 5 ؛ sauvegarde_positions5 [0] = زاویه ؛ sauvegarde_positions5 [1] = angle1 ؛ sauvegarde_positions5 [2] = angle2؛ sauvegarde_positions5 [3] = angle3 ؛ sauvegarde_positions5 [4] = angle5 ؛ زنگ تفريح؛ مورد 26: chiffre_final = 6 ؛ sauvegarde_positions6 [0] = زاویه ؛ sauvegarde_positions6 [1] = angle1 ؛ sauvegarde_positions6 [2] = angle2؛ sauvegarde_positions6 [3] = angle3 ؛ sauvegarde_positions6 [4] = angle5 ؛ زنگ تفريح؛ مورد 27: chiffre_final = 7 ؛ sauvegarde_positions7 [0] = زاویه ؛ sauvegarde_positions7 [1] = angle1 ؛ sauvegarde_positions7 [2] = angle2؛ sauvegarde_positions7 [3] = angle3 ؛ sauvegarde_positions7 [4] = angle5 ؛ زنگ تفريح؛ مورد 28: chiffre_final = 8 ؛ sauvegarde_positions8 [0] = زاویه ؛ sauvegarde_positions8 [1] = angle1 ؛ sauvegarde_positions8 [2] = angle2؛ sauvegarde_positions8 [3] = angle3 ؛ sauvegarde_positions8 [4] = angle5 ؛ زنگ تفريح؛ مورد 29: chiffre_final = 9 ؛ sauvegarde_positions9 [0] = زاویه ؛ sauvegarde_positions9 [1] = angle1 ؛ sauvegarde_positions9 [2] = angle2؛ sauvegarde_positions9 [3] = angle3 ؛ sauvegarde_positions9 [4] = angle5 ؛ زنگ تفريح؛
مورد 31: Serial.print ("31") ؛ activ_saving = 1 ؛ chiffre_final = 0 ؛ شکستن ؛ // شروع
مورد 33: Serial.print ("33") ؛ activ_saving = 0 ؛ break؛ // BUTTON SAVE پیش فرض: break؛ } if (w == 32) {Serial.print ("\ n بازتولید / nChiffre final:")؛ Serial.print (chiffre_final)؛ Serial.print ("\ n موقعیت Sauvegarde 1: / n")؛ برای (i = 0؛ i <5؛ i ++) {Serial.print (sauvegarde_positions1 )؛ Serial.print ("\ t")؛} Serial.print ("\ n موقعیت Sauvegarde 2: / n")؛ برای (i = 0؛ i <5؛ i ++) {Serial.print (sauvegarde_positions2 )؛ Serial.print ("\ t")؛} Serial.print ("\ n موقعیت Sauvegarde 3: / n")؛ برای (i = 0؛ i <5؛ i ++) {Serial.print (sauvegarde_positions3 )؛ Serial.print ("\ t")؛} برای (i = 1؛ i <= chiffre_final؛ i ++) {سریال چاپ ("\ n / n شروع / n حلقه:")؛ Serial.print (i)؛ Serial.print ("\ n")؛ سوئیچ (i) {مورد 1: goto_moteur (*(sauvegarde_positions1)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions1+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions1+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions1+3)) ؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions1+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 2: goto_moteur (*(sauvegarde_positions2)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions2+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions2+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions2+3)) ؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions2+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 3: goto_moteur (*(sauvegarde_positions3)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions3+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions3+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions3+3))؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions3+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 4: goto_moteur (*(sauvegarde_positions4)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions4+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions4+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions4+3))؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions4+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 5: goto_moteur (*(sauvegarde_positions5)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions5+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions5+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions5+3))؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions5+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 6: goto_moteur (*(sauvegarde_positions6)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions6+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions6+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions6+3)) ؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions6+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 7: goto_moteur (*(sauvegarde_positions7)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions7+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions7+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions7+3)) ؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions7+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 8: goto_moteur (*(sauvegarde_positions8)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions8+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions8+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions8+3)) ؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions8+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ مورد 9: goto_moteur (*(sauvegarde_positions9)) ؛ تاخیر (200) ؛ goto_moteur1 (*(sauvegarde_positions9+1)) ؛ تأخیر (200) ؛ goto_moteur2 (*(sauvegarde_positions9+2)) ؛ تاخیر (200) ؛ goto_moteur3 (*(sauvegarde_positions9+3)) ؛ تأخیر (200) ؛ goto_moteur5 (*(sauvegarde_positions9+4)) ؛ تاخیر (200) ؛ زنگ تفريح؛ } Serial.print ("\ n ********************* تکمیل مجدد ***************** / n ")؛ تأخیر (500) ؛ }} /*Serial.print ("اولین / n") ؛ Serial.print (sauvegarde_positions1 [0]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions1 [1]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions1 [2]) ؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions1 [3])؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions1 [4])؛ Serial.print ("\ n")؛ Serial.print (sauvegarde_positions2 [0]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions2 [1]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions2 [2]) ؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions2 [3])؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions2 [4])؛ Serial.print ("\ n")؛ Serial.print (sauvegarde_positions3 [0]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions3 [1]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions3 [2]) ؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions3 [3])؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions3 [4])؛ Serial.print ("\ n")؛ Serial.print (sauvegarde_positions4 [0]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions4 [1]) ؛ Serial.print ("\ t") ؛ Serial.print (sauvegarde_positions4 [2]) ؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions4 [3])؛ Serial.print ("\ t")؛ Serial.print (sauvegarde_positions4 [4])؛ Serial.print ("\ n")؛
Serial.print ("\ nfin / n")؛*/
تأخیر (100) ؛ } // *************************** عملکردها ***************** *******************
word recevoir () {// fonction permettant de recevoir l'information du smartphone
if (Serial.available ()) {w = Serial.read ()؛
Serial.flush ()؛
بازگشت w؛ }}
void goto_moteur (int angle_destination)
{while (angle_destination angle+step_angle) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n ") ؛ Serial.print ("angle_destination = / t")؛ Serial.print (angle_destination)؛ Serial.print ("\ n angle1 = / t") ؛ Serial.print (زاویه) ؛ if (angle_destination angle + step_angle) {angle = angle + step_angle؛ moteur.write (angle)؛} تاخیر (100) ؛ } moteur.write (angle_destination)؛ } void goto_moteur1 (int angle_destination) {while (angle_destination angle1+step_angle) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n ") ؛ Serial.print ("angle_destination = / t")؛ Serial.print (angle_destination) ؛ Serial.print ("\ n angle2 = / t") ؛ Serial.print (angle1) ؛ if (angle_destination angle1 +step_angle) {angle1 += step_angle؛ moteur1.write (angle1) ؛؛} تاخیر (100)؛ } moteur1.write (angle_destination)؛ } void goto_moteur2 (int angle_destination) {
while (زاویه_قبل زاویه 2+زاویه_قدم)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n") ؛ Serial.print ("angle_destination = / t")؛ Serial.print (angle_destination) ؛ Serial.print ("\ n angle3 = / t") ؛ Serial.print (angle2) ؛ if (angle_destination angle2 +step_angle) {angle2 += step_angle؛ moteur2.write (angle2) ؛} تأخیر (100) ؛ } moteur2.write (angle_destination)؛ } void goto_moteur3 (int angle_destination) {
while (زاویه_قبل زاویه 3+زاویه_قدم)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n") ؛ Serial.print ("angle_destination = / t")؛ Serial.print (angle_destination) ؛ Serial.print ("\ n angle4 = / t") ؛ Serial.print (angle3) ؛ if (angle_destination angle3 +step_angle) {angle3 += step_angle؛ moteur3.write (angle3) ؛} تاخیر (100) ؛ } moteur3.write (angle_destination)؛ } void goto_moteur5 (int angle_destination) {
در حالی که (زاویه_قبل زاویه 5+زاویه_گام)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n") ؛ Serial.print ("angle_destination = / t")؛ Serial.print (angle_destination)؛ Serial.print ("\ n angle5 = / t") ؛ Serial.print (angle5) ؛ if (angle_destination angle55 +step_angle) {angle5 += step_angle؛ moteur5.write (angle5)؛} تأخیر (100)؛ } moteur5.write (angle_destination)؛ }
void TouchDown_Release () // انتشار دکمه TouchDown
{if (angle5 <180) {angle5 = angle5+step_angle_mini؛ } moteur5.write (angle5)؛ }
void TouchDown_Grab () // گرفتن دکمه TouchDown
{if (angle5> 0) {angle5 = angle5-step_angle_mini؛ } moteur5.write (angle5)؛ } void Base_Rotation () {if (angle 0) {angle = angle-step_angle؛ } else else = 0؛ moteur.write (زاویه)؛ } void Waist_Rotation () {if (angle1 20) {angle1 = angle1-step_angle؛ } else angle1 = 20؛ moteur1.write (angle1)؛ } void Third_Arm_Rotation () {if (angle2 0) {angle2 = angle2-step_angle؛ } moteur2.write (angle2)؛ } void Fourth_Arm_Rotation () {if (angle3 = 0) {angle3 = angle3-step_angle_mini؛ } moteur3.write (angle3)؛ }
مرحله ششم: همین
ممنون از تماشا ، امیدوارم مورد توجه شما قرار گرفته باشد!
اگر این دستورالعمل را دوست داشتید ، مطمئناً می توانید برای اطلاعات بیشتر از ما دیدن کنید! =)
توصیه شده:
سگ روباتیک چاپ سه بعدی (روباتیک و چاپ سه بعدی برای مبتدیان): 5 مرحله
سگ رباتیک چاپ سه بعدی (روباتیک و چاپ سه بعدی برای مبتدیان): روباتیک و چاپ سه بعدی چیزهای جدیدی هستند ، اما ما می توانیم از آنها استفاده کنیم! اگر به ایده تکلیف مدرسه نیاز دارید یا فقط به دنبال یک پروژه سرگرم کننده هستید ، این پروژه یک پروژه مبتدی خوب است
بازوی بازوی روباتیک: 3 مرحله (همراه با تصاویر)
بازوی بازوی Robotic: این گیربکس روباتیک ساخته شده با چاپگر سه بعدی را می توان با دو سرو ارزان (MG90 یا SG90) کنترل کرد. ما از سپر مغزی (+آردوینو) برای کنترل گیره و APP کنترل jjRobots برای جابجایی همه چیز از طریق WIFI از راه دور استفاده کرده ایم اما می توانید از هر
ساخت و پرواز هواپیمای ارزان قیمت با تلفن هوشمند هوشمند: 8 مرحله
ساخت و پرواز هواپیمای ارزان قیمت با تلفن هوشمند هوشمند: آیا تا به حال رویای ساختن هواپیمای فلایر پارک با کنترل از راه دور DIY 15 $ را دارید که با تلفن همراه شما کنترل می شود (برنامه Android از طریق WiFi) و دوز روزانه 15 دقیقه ای آدرنالین را به شما می دهد (پرواز زمان حدود 15 دقیقه)؟ از این دستور
شماره گیری هوشمند - تصحیح خودکار تلفن هوشمند سنتی: 8 مرحله
شماره گیری هوشمند-تصحیح خودکار تلفن هوشمند سنتی: شماره گیری هوشمند یک تلفن هوشمند تصحیح خودکار است که برای افراد مسن با نیازهای خاص ایجاد شده است و سالمندان را قادر می سازد تا مستقیماً از تلفن های سنتی که به آن عادت دارند شماره گیری کنند. فقط از طریق داوطلب شدن در مرکز مراقبت از سالمندان محلی بود که من
لامپ هوشمند 5 دلاری آسان با رابط وب تلفن هوشمند: 4 مرحله
لامپ هوشمند 5 دلاری آسان با رابط وب تلفن هوشمند: سلام! اسم من رافائل است. این اولین دستورالعمل من است! انگیزه اصلی من از ایجاد این چراغ ، کمک به زندگی افرادی است که از جنبش محروم هستند. روزی ، ما سوئیچ روی دیوارها یا دوشاخه هایی که دسترسی به آنها سخت است نخواهیم داشت ، بلکه تلفن های هوشمند خود را برای کنترل