آموزش های کاربردیاخبار تکنولوژیبایگانی مطالب
مقاله جدید

راه اندازی Spresence با نرم افزار Zerynth

بورد جدید سونی به نام Spresence قابلیت‌های فوق‌العاده‌ای داره و Zerynth برنامه‌نویسی اون به زبان پایتون رو ساده می‌کنه. Spresence یک بورد توسعه قدرتمند و کم مصرف هست که برای اپلیکیشن‌های IoT و چند رسانه‌ای طراحی شده. این میکروکنترلر چندهسته‌ای از 6 هسته ARM Cortex-M4F تشکیل شده و سرعت کلاک اون 156 مگاهرتز هست.

شروع کار با Spresence و نرم افزار Zerynth

این بورد دارای GNSS، ورودی/خروجی صوتی با وضوح بالا و چند خروجی mic هست که باعث می‌شن این بورد کاربردهای مختلفی داشته باشه.

سخت‌افزارهای مورد نیاز

  • بورد Spresence سونی


  • MikroE BME280 Weather


  • Adafruit ALS-PT19 Analog Light Sensor Breakout

نرم افزار ها و سرویس های آنلاین

  • Zerynth Studio


برخی از مشخصات بورد Spresence

ویژگی‌های بورد اصلی Spresence:

  • پردازنده CDX5602 سونی

  • فلش مموری 8 مگابایت

  • PCB به همراه یک فوت‌پرینت کوچک

  • کانکتور دوربین

  • ­آنتن GNSS (GPS)

  • GPIOهای مختلف (UART، SPI، I2C، I2S)

  • 2 کانال ADC

  • کاربرد LED x 4 (سبز)

  • LED روشن و خاموش (آبی)

  • پورت سریاالی USB

Zerynth میان افزاری برای IoT و انقلاب صنعتی چهارم هست. با استفاده از این میان افزار می‌شه به راحتی و به سرعت میکروکنترلرهای 32 بیتی رو به زبان پایتون برنامه‌نویسی کرد و اونا رو به فضای ابری متصل کرد. علاوه بر این، این میان افزار می‌تونه به طور همزمان یک محیط برنامه‌نویسی به زبان پایتون/C ارائه بده. برای آشنایی بیشتر با این میان افزار می‌تونین از Zerynth Studio کمک بگیرین، علاوه بر دانلود رایگان، چند پلتفرم (cross-platform) و یک IDE قدرتمند هم داره.

معرفی میکروکنترلر Spresence

در این مقاله آموزشی نحوه‌ی استفاده از Spresence به همراه Zerynth رو به شما نشون می‌دیم. در این مقاله نحوه‌ی اجرا Multiblink، نمونه‌های ADC و I2C رو به شما نشون می‌دیم.


ایجاد پروژه

برای اینکه بتونین بورد Spresence رو به همراه Zerynth Studio استفاده کنین، باید طبق مراحل زیر پیش برین:

اول از همه، باید Zerynth Studio رو دانلود و نصب کنین.

بعد از اون باید Zerynth Studio رو اجرا کنین و یک حساب کاربری ایجاد کنین ( اگه حساب دارین فقط کافیه وارد حساب‌تون بشین).

حالا بورد رو از طریق پورت اصلی USB وصل کنین. بسته به سیستمی که ازش استفاده می‌کنین ممکنه به درایورها نیاز داشته باشین. برای کسب اطلاعات بیشتر اسناد رسمی رو مطالعه کنین. اگر درایورها به درستی نصب شده باشن، Zerynth Studio دستگاه Spresence رو تشخیص می‌ده.

  • با کلیک روی کلید info و سپس Burn Bootloader، Spresense Bootloader رو burn کنین.
  • با کلیک روی کلید Z از Zerynth Studio دستگاه رو ثبت کنین.
  • یک بار دیگه روی کلید Z کلیک کنین و یک ماشین مجازی برای دستگاه ایجاد کنین.
  • یک بار دیگه روی کلید Z کلیک کنین و دستگاه رو مجازی‌سازی کنین.

محیط نرم افزار Zerynth و ایجاد پروژه


نمونه Multi-Blink

در قدم اول، نمونه Multiblink از کتابخانه Example Library پلتفرم Zerynth رو کلون می‌کنیم. برای انجام این کار، فقط کافیه Multiblink رو در این کتابخانه جست‌وجو کنین و نمونه MultiBlink رو انتخاب کنین و گزینه clone رو انتخاب کنین.

نمونه Multi-Blink در نرم افزار Zerynth

همون‌جوری که می‌بینین کد خیلی ساده است. سه تا thread به صورت موازی اجرا شدن که هر کدوم از اونا با فواصل مشخص یک LED رو در حالت چشمک‌زن قرار می‌دن.

# Initialize the digital pins where the LEDs are connected as output
pinMode(LED0,OUTPUT)
pinMode(LED1,OUTPUT)
pinMode(LED2,OUTPUT)

# Define the 'blink' function to be used by the threads
def blink(pin,timeON=100,timeOFF=100): # delayON and delayOFF are optional parameters, used as default
                                       # if not specified when you call the function

    while True:
        digitalWrite(pin,HIGH)   # turn the LED ON by making the voltage HIGH
        sleep(timeON)            # wait for timeON
        digitalWrite(pin,LOW)    # turn the LED OFF by making the voltage LOW
        sleep(timeOFF)           # wait for timeOFF

# Create three threads that execute instances of the 'blink' function.
thread(blink,LED0)             # D2 is ON for 100 ms and OFF for 100 ms, the default values of delayON an delayOFF
thread(blink,LED1,200)         # D8 is ON for 200 ms and OFF for 100 ms, the default value of delayOFF
thread(blink,LED2,1000,200)     # D5 is ON for 500 ms and OFF for 200 ms

فقط کافیه پین‌های پیش‌فرض رو با پین‌های LED بورد Spresense که می‌خوایم چشمک بزنن جایگزین کنیم (که در طرح پایه هم نشون داده شده)، کد آماده استفاده است.

طرح پایه بورد Spresence

پس از اصلاح کد می‌تونیم اون رو به بورد Spresence منتقل (uplink) کنیم.

حالا LED0، LED1 و LED2 در فوصل زمانی مختلف چشمک می‌زنن.


ADC به همراه سنسور آنالوگ

در این مرحله قصد داریم از ADC در بورد Spresense استفاده کنیم. برای انجام این کار به یک سنسور آنالوگ نیاز دارین. ما از سنسور ALS-PT19 Light آدافروت (Adafruit) استفاده می‌کنیم.

ADC به همراه سنسور آنالوگ

بعد از اینکه سنسور رو به پین‌های 3.3V و GND برد وصل کردیم، خروجی اون رو به پین آنالوگ A0 برد Spresense وصل می‌کنیم.

حالا نمونه‌ی Analog to Digital Acquisition از Example Library کلون می‌کنیم، برخی از کدها رو حذف می‌کنیم چون فقط می‌خوایم برای تست سنسور، مقدار سنسور رو در سریال مانیتور پرینت کنیم.

راه اندازی Analog to Digital Acquisition در Zerynth

کد اون رو در قسمت زیر می‌تونین مشاهده کنین.

import streams  # import the streams module
import adc      # import the adc driver

# create a stream linked to the default serial port

streams.serial()

while True:
    # Basic usage of ADC for acquiring the analog signal from a pin
    value = adc.read(A0)
    print(value)
    sleep(300)

پس از ویرایش کد می‌تونیم اون رو به برد Spresense منتقل (uplink) کنیم.

بعد از باز کردن Serial Monitor در Zerynth Studio خروجی خام سنسور باید بهمون نشون داده بشه، اگر مانع برخورد نور با سنسور بشیم، مقدار اون کاهش پیدا می‌کنه و طبق انتظار عمل می‌کنه.

تست Analog to Digital Acquisition


ارتباط I2C با سنسور آب‌ و هوا

در این قسمت قراره یک سنسور دیگه رو تست کنیم، این بار قراره سنسور رو با استفاده از I2C bus که در بورد Spresense قرار داره تست کنیم.

یک بار دیگه، یک نمونه رو از Example Library کلون می‌کنیم؛ ما از سنسور BME280 محصول Bosch استفاده می‌کنیم که Mikroelektronika اون رو روی Weather Click وصل کرده. Weather Click یک برد سنسور ساده است که سه تا مقدار رو (دما، رطوبت و فشار) رو از طریق I2C ارائه می‌ده.

ارتباط I2C با سنسور آب‌ و هوا در نرم افزار Zerynth

در قدم اول باید پین‌های SDA و SCL رو وصل کنین تا ارتباط I2C با Spresense برقرار بشه. حالا پین 3.3V و GND رو برای منبع تغذیه وصل می‌کنیم. برای کسب اطلاعات بیشتر در مورد بورد به طرح پایه نگاه کنین.

تست سنسور BME280 روی بورد Weather Click

حالا نمونه get values رو از کتابخانه BME280 جست‌وجو کنین و اون رو کلون کنین.

import streams
from bosch.bme280 import bme280

streams.serial()

try:
    # Setup sensor
    print("start...")
    bme = bme280.BME280(I2C0)
    print("Ready!")
    print("--------------------------------------------------------")
except Exception as e:
    print("Error: ",e)

try:
    while True:
        temp, hum, pres = bme.get_values()
        print("Temperature:", temp, "C")
        print("Humidity:", hum, "%")
        print("Pressure:", pres, "Pa")
        print("--------------------------------------------------------")
        sleep(5000)
except Exception as e:
    print("Error2: ",e)

بعد از کلون نمونه می‌تونیم مستقیماً اون رو به بورد منتقل کنیم (نیازی به ویرایش کد نیست).

حالا اگه سریال مانیتور رو باز کنیم می‌بینیم که مقادیر صحیح دما، رطوبت و فشار یک بار دیگه نشون داده می‌شن.


کد پایتون AnalogToDigitalAcquisition.py

import streams  # import the streams module
import adc      # import the adc driver

# create a stream linked to the default serial port

streams.serial()

while True:
    # Basic usage of ADC for acquiring the analog signal from a pin
    value = adc.read(A0)
    print(value)
    sleep(300)

MultiBlink.py کد پایتون

# Initialize the digital pins where the LEDs are connected as output
pinMode(LED0,OUTPUT)
pinMode(LED1,OUTPUT)
pinMode(LED2,OUTPUT)

# Define the 'blink' function to be used by the threads
def blink(pin,timeON=100,timeOFF=100): # delayON and delayOFF are optional parameters, used as default
                                       # if not specified when you call the function

    while True:
        digitalWrite(pin,HIGH)   # turn the LED ON by making the voltage HIGH
        sleep(timeON)            # wait for timeON
        digitalWrite(pin,LOW)    # turn the LED OFF by making the voltage LOW
        sleep(timeOFF)           # wait for timeOFF

# Create three threads that execute instances of the 'blink' function.
thread(blink,LED0)             # D2 is ON for 100 ms and OFF for 100 ms, the default values of delayON an delayOFF
thread(blink,LED1,200)         # D8 is ON for 200 ms and OFF for 100 ms, the default value of delayOFF
thread(blink,LED2,1000,200)     # D5 is ON for 500 ms and OFF for 200 ms

کد پایتون get_values.py

import streams
from bosch.bme280 import bme280

streams.serial()

try:
    # Setup sensor
    print("start...")
    bme = bme280.BME280(I2C0)
    print("Ready!")
    print("--------------------------------------------------------")
except Exception as e:
    print("Error: ",e)

try:
    while True:
        temp, hum, pres = bme.get_values()
        print("Temperature:", temp, "C")
        print("Humidity:", hum, "%")
        print("Pressure:", pres, "Pa")
        print("--------------------------------------------------------")
        sleep(5000)
except Exception as e:
    print("Error2: ",e)

جمع بندی

این بورد جذاب می‌تونه جایگزین دو برد آردوینو و رزبری پای باشه چرا که آردوینو ممکنه برای برخی کاربردها کافی نباشه و رزبری پای هم بورد گرانی هست و این ماژول جدید شرکت سونی می‌تونه نیازهای ما به این دو بورد رو رفع کنه. در کنار قیمت مناسب، کارایی و همچنین مصرف انرژی بسیار پایینی داره. همین موضوع می‌تونه در انتخاب این بورد نقش مهمی داشته باشه. قابلیت های ویژه بورد توسعه SPRESENSE مانند پشتیبانی از دوربین و سامانه ناوبری جهانی GNSS و امکان موقعیت یابی با GPS آن را به یک ابزار مهم و جذاب در دنیای IoT تبدیل کرده که در آینده تلاش می کنیم پروژه های جذابتری با استفاده از این بورد برای شما آماده کنیم.

منبع

این مقاله چطور بود ؟
+1
1
+1
1
+1
0
مشاهده بیشتر

محمد حسنی

علاقمند به حوزه IoT و الکترونیک. در حال حاضر به مدت یکسال است که در تیم سخت افزار سازان نام آور به تولید محتوا مشغول هستم.

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

دکمه بازگشت به بالا