آردوینو پایتون Python

شروع پایتون با آردوینو Arduino بخش اول آموزش نصب پایتون Python

Python-for-arduino-digispark
نوشته شده توسط پریسا پوربلورچیان

زبان‌های برنامه نویسی انواع مختلفی دارند. هر کدام برای توسعه و رشد بوجود آمده‌اند. در این بین زبان برنامه نویسی پایتون Python یکی از زبان‌های محبوب و توسعه پذیر بین کاربران است. از زبان پایتون Python در بردهای امبدد هم استفاده می‌شود. برای توسعه اینترنت اشیا IoT به زبان پایتون Python هم نیاز می‌باشد. روش نصب پایتون برای استفاده در بردهای آردوینو Arduino را بررسی خواهیم کرد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسیدیجی اسپارک همراه باشید.

 


زبان پایتون Python


پایتون Python یک زبان برنامه نویسی سطح بالا با برنامه های کاربردی در بسیاری از زمینه ها می‌باشد. این برنامه ها شامل برنامه نویسی وب، اسکریپت، محاسبات علمی و هوش مصنوعی می‌باشد. زبان برنامه نویسی پایتون Python بسیار محبوب است و همچنین توسط سازمان های توسعه یافته ای مانند گوگل Google، ناسا NASA، سی آی ای CIA و دیزنی Disney استفاده می‌شود. نکته قابل توجه در زیان برنامه نویسی پایتون Python این است که در زمان اجرا توسط مترجم پردازش می‌شود و لازم نیست برنامه خود را قبل از اجرا کامپایل کنید. پایتون Python دارای سه نسخه X.1، X.2 و X.3 می‌باشد که این سه نسخه اصلی به نسخه های جزئی تر تقسیم می‌گردد مانند ۲٫۷ و ۳٫۳. طبق ادعا توسعه دهنده، کدهای نوشته شده برای پایتون نسخه ۳٫۳، تضمین شده است که در تمامی نسخه های آبنده کار کند. هر دو نسخه X.2 و X.3 در حال حاضر در حال استفاده می‌باشد. در این دوره ما از هر دو ورژن بنا بر نیاز پروژه استفاده خواهیم کرد. دقت کنید هیچ محدودیتی برای جا به جایی و انتقال از یک نسخه به نسخه دیگر وجود نخواهد داشت. نکته آخر اینکه پایتون Python دارای پیاده سازی های بسیار گسترده با زبان های برنامه نویسی دارد که ما از نسخه Cpython استفاده خواهیم کرد.

نکته: یک مترجم برنامه ای است که اسکریپت هایی را که در زبان های برنامه نویسی مثل پایتون نوشته شده اند را اجرا می‌کند.

 


برد آردوینو Arduino


آردوینو Arduino یک سخت افزار اوپن سورس است که جهت نمونه سازی و اجرای پروژه هایی بر پایه اینترنت اشیا DIY مورد استفاده قرار می‌گیرد. زبان برنامه نویسی آردوینو C و ++C می‌باشد و برای اجرای پروژه ها نیاز به کامپایل برنامه در بوت لودر قرار گرفته شده در برد خواهیم بود. آموزش کار با برد آردوینو Arduino و نصب نرم افزار IDE در لینک زیر قرار گرفته شده است. در ابتدا وارد لینک زیر شده و در صورتیکه با نرم افزار آردوینو Arduino آشنایی ندارید، مطالعه کرده و سپس نرم افزار را دانلود و نصب نمایید.

آموزش کار با برد آردوینو Arduino و نصب نرم افزار Arduino IDE

 

 


نصب پایتون Python


برای ارتباط بین برد آردوینو Arduino و پایتون Python نیاز به نصب سه نرم افزار زیر خواهیم داشت:

  1. python 2.7.8

  2. pyserial version 2.7 , 32 bit version

  3. vpython library for 32 bit windows

دانلود و نصب Download python 2.7

جهت نصب نرم افزار پایتون Python عبارت downlaod python 2.7 را گوگل یا بر روی عبارت کلیک کنید. با ورود به سایت پایتون، در قسمت دانلود Download، نسخه (windows X86 MSI Installer (2.7.0 را انتخاب و دانلود کنید.

(windows X86 MSI Installer (2.7.0

منتظر باشید تا نرم افزار دانلود شود. پس از دانلود، نرم افزار را در درایور C نصب نمایید.

آموزش نصب پایتون برای آردوینو Arduino and Python - دیجی اسپارک

 

دانلود و نصب Download Pyserial 2.7

نرم افزار Pyserial جهت ارتباط سریال بین پایتون و آردوینو نصب و فراخوانی می‌گردد. برای نصب این نرم افزار عبارت Download Pyserial 2.7 را گوگل و یا بر روی کلید واژه کلیک کنید. منتظر بمانید تا مراحل نصب کامل گردد.

دانلود پایتون Python برای آردوینو Arduino - دیجی اسپارک

 

دانلود و نصب Downlaod Vpython

Vpython یک کتابخانه بسیار جذاب برای پایتون می‌باشد که توسط آن می‌توانید انیمیشن های سه بعدی ۳D animations با برنامه نویسی پایتون Python پیاده سازی کنید. جهت نصب کتابخانه، عبارت Downlaod Windows Vpython را گوگل و یا بر روی کلید واژه کلیک کنید. منتظر بمانید تا نرم افزار دانلود گردد و سپس نصب کنید. نرم افزار های مورد نیاز برای اجرای پروژه پایتون Python با نرم افزار آردوینو Arduino نصب و آماده است. برای اجرای اولین پروژه منتظر بخش دوم آموزش پایتون با آردوینو باشید.

نصب کتابخانه vpython پایتون برای آردوینو Arduino Python - دیجی اسپارک

 

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۴ دیدگاه

  • سلام ضمن درود و خدا قوت ممنون میشم سری آموزشی رو کامل کنید
    بی صبرانه منتظر کشف این دنیای جدید با مجموعه قوی دیجی اسپارک هستیم

  • سلام با تشکر از مقاله خوبتون یه سوال داشتم من تازه میخوام تو زمینه برنامه نویسی برد اردوینو کار کنم برای برنامه نویسی این برد من الان بین ++C و Python موندم الان میتونم به جای یادگیری ++C پایتون بخونم و با زبان پایتون برنامه نویسی کنم
    اگرم نه خب پس پایتون تو این برد کاربردش چی هست و چه نیازی هست براش
    و کدوم بخش پایتون رو باید بخونم

    • با سلام
      با توجه به اینکه پروژه های اینترنت اشیا مبتنی بر زبان های برنامه نویسی مختلف است، یادگیری هر یک جداگانه پیشنهاد می‌شود.
      در خصوص IDE Arduino، زبان برنامه نویسی C++ مورد نیاز است و همچنین در صورت نیاز به تعمیم پروژه ممکن است به زبان های دیگر نیاز داشته باشید.

      • با سلام من میخواستم برنامه نویسی رو با میکروکنترلر ها شروع کنم میشه بگین به جز ++C میشه از پایتون هم استفاده کرد و از کجا باید شروع کنم مراحل کار چجوری لطفا یه توضیحی بدین

  • با سلام ممنون از پاسختون یکم راهنمایی ازتون میخوام من ترم ۴ کارشناسی برق هستم و میخوام گرایش الکترونیک برم و علاقه زیادی به برنامه نویسی و وارد شدن در حوزه برنامه نویسی میکروکنترلر ها دارم الان لازمه که من اول ++C بخونم بعد برای پیشرفت و حرفه ای شدن خودم شما چه زبان برنامه نویسی یا چه کاری رو پیشنهاد میدین که در مسیر درست قدم بردارم چون نمیخوام وقتمو با ازمون خطا از دست بدم ممنون میشم از راهنماییتون

    • با سلام
      در خصوص برنامه نویسی در سمت میکروکنترلر ها زبان های برنامه نویسی زیادی قابل اجرا و پیاده سازی است. مانند C++ و پایتون و اندروید، که این مورد بسته به پروژه های انتخابی و انتخاب میکروکنترلر مناسب متفاوت است.
      پیشنهاد میکنم در ابتدا با انواع بردها آشنا شده و تحقیق نمایید و سپس شروع به یادگیری کنید. زبان برنامه نویسی پایتون پیشنهاد خوبی بعد از یادگیری C++ می‌باشد. موارد را بررسی و در صورت سوال از همین طریق اقدام فرمایید.

      • با سلام
        اول که تشکر میکنم بابت اینکه وقت میزارین
        ببینین من راجبشون چندین مقاله خوندم ولی واقعیتش چندان متوجه نمیشم که کدومشون خوبه اما اینو میدونم که میکروکنترلر ARM STM32 بازار رو تو دست گرفته انگار که از بقیه سر تره در رابطه با این میکرو بنظرتون از چه زبانی شروع کنم برای برنامه نویسی و اینکه با توجه به رشتم که با خود این ها سرو کار دارم میتونم در اینده از این حرفه کسب درامد قابل توجهی داشته باشم در این زمینه
        من برنامه نویس php ام اصلا ربطی به برنامه نویسی میکرو ها نداره؟
        ممنون بابت پاسخ گویی تون

        • با سلام
          انتخاب میکروکنترلرها با توجه به نیاز پروژه مشخص می‌شود. در خصوص یادگیری زبان های برنامه نویسی، اگر هدف داشتن اطلاعات کافی و به روز بودن در مبحث اینترنت اشیا باشد، یادگیری زبان های کاربردی پیشنهاد می‌شود.
          در خصوص php بی ارتباط است و زبان هایی مانند C++ و پایتون بسیار کاربردی است.

  • با سلام و عرض خسته نباشید. من چند جا خوندم که می شود در برنامه arduino IDE با زبان پایتون نوشت و کامپایل کرد و متوجه می شود.آیا اشتباه است؟

    • با سلام
      جهت ارتباط آردوینو با پایتون بایستی از طریق ارتباط سریال که در همین آموزش توضیح داده شده است، پیش بروید.
      ide arduino از زبان C , C++ پشتیبانی می‌کند.

  • سلام من تمام نسخه های پای سریال رو امتحان کردم ولی باز با اردینو ارتباط برقرار نمیشه چه کنم؟؟
    ممنون میشم پاسخ بدید

  • سلام وقتی اکانت درست میکنم بعدش لایسنس میخواد اون رو باید چکار کرد ؟ البته من برای پکیج رزبری میخوام.

  • خسته نباشید من دو تا سوال داشتم ممنون میشم پاسخ بدید…
    برای اتصال برد به پایتون از پای سریال استفاده میشه ولی متاسفانه پای سریال بنده فقط به نسخه ۳ پایتون متصل میشه و نسخه ۲ رو نمیشناسه و توی ژانویه ۲۰۲۰ پایتون ۲٫۷ منسوخ شده و ممکنه که کتابخانه سریال برای پایتون ۳ هم ارائه بشه؟؟واگرنه ممکنه راهنمایی کنید که چگونه این مشکل رو برطرف کنم…

    • با سلام و سپاس
      اگه منظورتون کتابخانه pyserial هستش که این کتابخانه هم برای پایتون ۲٫۷ ارائه شده و هم برای پایتون ۳٫۴ به بعد در ضمن منظور از اینکه پایتون ۲٫۷ منسوخ شده یعنی آپدیت جدیدی برای آن ارائه نخواهد شد وگرنه پایتون به کار خودش ادامه میدهد مشکلی در اجرا ندارد.

  • سلام ممنون بابت اموزشتون
    من ویندوزم ۶۴ هست و برای پایتونPython 2.7.17 بین Windows x86-64 MSI installer و Windows x86 MSI installer کدوم رو باید دانلود کنم و برای pyserial نسخه ۶۴ نداره فقط ۳۲ نوشته!
    Download of pyserial-2.7.win32.exe (pyserial-2.7.win32.exe چیکار کنم ؟ ممنون

    • با سلام
      در خصوص سوال اول نسخه (windows X86 MSI Installer (2.7.0 نصب کنید.
      با توجه به اینکه این آموزش ۱ سال قبل نوشته شده است، لینک های سایت های خارجی ممکن است تغییراتی داشته باشد. نسخه مورد نیاز را سرچ کرده و جایگزین کنید.

  • سلام خانم مهندس
    میشه لطف کنید، کد زیر رو که مربوط میشه به پالس سنسور بصورت خلاصه ، به زبان عام و تحت الفظی برام معنی کنید می خوام بدونم توی هر خط چه اتفاقی رخ می دهد.
    سپاس
    int sensor_pin = 0;
    int led_pin = 13;
    volatile int heart_rate;
    volatile int analog_data;
    volatile int time_between_beats = 600;
    volatile boolean pulse_signal = false;
    volatile int beat[10]; //heartbeat values will be sotred in this array
    volatile int peak_value = 512;
    volatile int trough_value = 512;
    volatile int thresh = 525;
    volatile int amplitude = 100;
    volatile boolean first_heartpulse = true;
    volatile boolean second_heartpulse = false;
    volatile unsigned long samplecounter = 0; //This counter will tell us the pulse timing
    volatile unsigned long lastBeatTime = 0;
    void setup()
    {
    pinMode(led_pin,OUTPUT);
    Serial.begin(115200);
    interruptSetup();
    }
    void loop()
    {
    Serial.print(“BPM: “);
    Serial.println(heart_rate);
    delay(200); // take a break
    }
    void interruptSetup()
    {
    TCCR2A = 0x02; // This will disable the PWM on pin 3 and 11
    OCR2A = 0X7C; // This will set the top of count to 124 for the 500Hz sample rate
    TCCR2B = 0x06; // DON’T FORCE COMPARE, 256 PRESCALER
    TIMSK2 = 0x02; // This will enable interrupt on match between OCR2A and Timer
    sei(); // This will make sure that the global interrupts are enable
    }
    ISR(TIMER2_COMPA_vect)
    {
    cli();
    analog_data = analogRead(sensor_pin);
    samplecounter += 2;
    int N = samplecounter – lastBeatTime;
    if(analog_data (time_between_beats/5)*3)
    {
    if (analog_data thresh && analog_data > peak_value)
    {
    peak_value = analog_data;
    }
    if (N > 250)
    {
    if ( (analog_data > thresh) && (pulse_signal == false) && (N > (time_between_beats/5)*3) )
    {
    pulse_signal = true;
    digitalWrite(led_pin,HIGH);
    time_between_beats = samplecounter – lastBeatTime;
    lastBeatTime = samplecounter;
    if(second_heartpulse)
    {
    second_heartpulse = false;
    for(int i=0; i<=9; i++)
    {
    beat[i] = time_between_beats; //Filling the array with the heart beat values
    }
    }
    if(first_heartpulse)
    {
    first_heartpulse = false;
    second_heartpulse = true;
    sei();
    return;
    }
    word runningTotal = 0;
    for(int i=0; i<=8; i++)
    {
    beat[i] = beat[i+1];
    runningTotal += beat[i];
    }
    beat[9] = time_between_beats;
    runningTotal += beat[9];
    runningTotal /= 10;
    heart_rate = 60000/runningTotal;
    }
    }
    if (analog_data 2500)
    {
    thresh = 512;
    peak_value = 512;
    trough_value = 512;
    lastBeatTime = samplecounter;
    first_heartpulse = true;
    second_heartpulse = false;
    }
    sei();
    }

    • با سلام
      کاربر گرامی امکان تحلیل کد در کامنت ها وجود ندارد. در صورتیکه در خط هایی از برنامه ابهامی دارید، بپرسید تا راهنمایی شود.

  • سلام
    خسته نباشید
    می خواستم بدونم آیا الان قسمت دوم آموزش در سایت موجود هست؟
    باتشکر

    • با سلام
      از توجه شما ممنونم. در حال حاضر بخش دوم منتشر نشده است.

  • سلام وقت بخیر
    میخواستم بدونم برای سنسورهای بیولوژیکی مثل ضربان قلب و الکتروکاردیوگرام و… بهتره از کدام برد آردوینو استفاده کنم؟ ممنون میشم راهنمایی بفرمایید

    • با سلام
      تفاوتی در نوع برد آردوینو وجود ندارد و ماهیت همه ی آن ها یکسان است.

  • salam …in barname 2 steper mottor hast… in ro mikham az tarighe usb be hmi vasl konam… lotfan rahnamayi mifarmayid
    const int StepX = 9;
    const int DirX = 10;
    const int StepY = 6;
    const int DirY = 7;
    void setup() {
    pinMode(StepX,OUTPUT);
    pinMode(DirX,OUTPUT);
    pinMode(StepY,OUTPUT);
    pinMode(DirY,OUTPUT);
    }
    void loop() {
    digitalWrite(DirX, HIGH);
    digitalWrite(DirY, HIGH);
    for(int x = 0; x<200; x++) {
    digitalWrite(StepX,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepX,LOW);
    delayMicroseconds(500);
    }
    delay(3000);

    for(int x = 0; x<200; x++) {
    digitalWrite(StepY,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepY,LOW);
    delayMicroseconds(500);
    }
    delay(3000); //

    digitalWrite(DirX, LOW);
    digitalWrite(DirY, LOW);
    for(int x = 0; x<200; x++) {
    digitalWrite(StepX,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepX,LOW);
    delayMicroseconds(500);
    }
    delay(3000);

    for(int x = 0; x<200; x++) {
    digitalWrite(StepY,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepY,LOW);
    delayMicroseconds(500);
    }
    delay(5000);
    }

  • salam …in barname 2 steper mottor hast… in ro mikham az tarighe usb be hmi vasl konam… lotfan rahnamayi mifarmayid
    const int StepX = 9;
    const int DirX = 10;
    const int StepY = 6;
    const int DirY = 7;
    void setup() {
    pinMode(StepX,OUTPUT);
    pinMode(DirX,OUTPUT);
    pinMode(StepY,OUTPUT);
    pinMode(DirY,OUTPUT);
    }
    void loop() {
    digitalWrite(DirX, HIGH);
    digitalWrite(DirY, HIGH);
    for(int x = 0; x<200; x++) {
    digitalWrite(StepX,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepX,LOW);
    delayMicroseconds(500);
    }
    delay(3000);

    for(int x = 0; x<200; x++) {
    digitalWrite(StepY,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepY,LOW);
    delayMicroseconds(500);
    }
    delay(3000); //

    digitalWrite(DirX, LOW);
    digitalWrite(DirY, LOW);
    for(int x = 0; x<200; x++) {
    digitalWrite(StepX,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepX,LOW);
    delayMicroseconds(500);
    }
    delay(3000);

    for(int x = 0; x<200; x++) {
    digitalWrite(StepY,HIGH);
    delayMicroseconds(500);
    digitalWrite(StepY,LOW);
    delayMicroseconds(500);
    }
    delay(5000);
    }

    ..

  • سلام.
    اگر با پایتون بر روی برد کد بنویسیم ایا امکان استفاده از کتابخانه های آماده پردازش تصویر و هوش مصنوعی و غیره ی پایتون هست یا خیر؟