ارتباط سریال با زبان Python

اولین قدم فعال کردن UART در فایل script.bin است. تراشه A10 هشت تا UART را ساپورت می کنه و متاسفانه روی کیوبی نمیشه از همه ی اینها استفاده نمود، چون که بعضی از انها با قسمت های دیگه تداخل پیدا کرده یا پایه های اون اصلا روی پین هدر نیومده ولی با کمی بررسی UART های قابل دسترس برای کیوبی را پیدا کردم که در جدول زیر می تونید ببینید. برای مارس بررسی نکردم ولی بخاطر اینکه پایه های بیشتری روی پین هدر اومده فکر کنم شرایط بهتر باشه.

برای دیدن لیست کامل پایه های تراشه A10 به لینک زیر مراجعه کنید

http://linux-sunxi.org/A10/PIO

 برای تست من از UART4 استفاده می کنم. فایل Script.bin را مطابق خطوط زیر تغییر بدید.

 

[uart_para4]

uart_used = 1

uart_port = 4

uart_type = 2

uart_tx = port:PG10<4><1><default><default>

uart_rx = port:PG11<4><1><default><default>

منظور از عدد روبروی PG10 نیز همون Mux4 است.

فقط اگر از این دو پایه در GPIO استفاده کردید اونها را تغییر بدید.

فایل آماده Script.bin را می تونید از اینجا دانلود کنید.

http://wiki.iranmicro.ir/wp-content/uploads/2013/05/script.bin_.rar

 حالا باید ماژول python به اسمه pyserial را دانلود کنیم.

https://pypi.python.org/packages/source/p/pyserial/pyserial-2.6.tar.gz

این فایل را هم داخل uSD بریزید.

 برای تست کردن چون فقط یک مبدل سریال به USB دارم ترمینال را از طریق ssh و UART4 را از طریق مبدل به کامپیوتر وصل می کنم. برای استفاده از ssh من فایل script.bin را بگونه ای تغییر دادم که آدرس MAC برد همیشه ثابت باشه. با ثابت بودن آدرس MAC، روتر معمولا همیشه یک IP ثابت به هر MAC میده. پس می تونیم یک بار با مبدل به ترمینال وصل بشیم و IP را ببینیم و دفعات بعدی با ssh وصل بشیم.

یا اینکه اول با مبدل وصل بشیم و IP را مشاهده کرده و بدون خاموش کردن برد مبدل را به UART4 وصل کنیم و یا اینکه از دو مبدل استفاده کنیم.

خوب توی محیط اوبونتو با زدن کلید Ctrl+alt+t ترمینال را باز می کنم و با دستور زیر با ssh به کیوبی وصل میشم.

root@ubuntu:~# ssh 192.168.1.10

root@192.168.1.10’s password:

Welcome to Linaro 13.04 (GNU/Linux 3.4.43 armv7l)

 

 * Documentation:  https://wiki.linaro.org/

Last login: Fri May 17 14:50:07 2013

root@ma:~#

یک ترمینال دیگر هم باز می کنم و با دستور زیر به مبدل وصل میشم

root@ubuntu:/home/mahdi# screen /dev/ttyUSB0 19200

 

از طریق ترمینال اولی به محلی که فایل pyserial-2.6.tar.gz را ذخیره کردید بروید و با دستور زیر اون را اکسترکت کنید.

tar -zxvf pyserial-2.6.tar.gz

وارد پوشه ساخته شده بشید و با دستور زیر ماژول pyserial را نصب کنید.

python setup.py install

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

root@ma:~# python

Python 2.7.3 (default, Sep 26 2012, 22:50:53)

[GCC 4.7.2] on linux2

Type “help”, “copyright”, “credits” or “license” for more information.

>>> import serial

>>> ser = serial.Serial(‘/dev/ttyS1’, 19200, timeout=1)

>>> ser.write(“hello”)

5

>>> ser.close()

>>> 

 

وقتی دستور

 ser.write(“hello”)

را اجرا می کنید، روی ترمینال مبدل کلمه hello نمایان میشه، که نشان دهنده عملکرد درست برنامه است.

 

برای اطلاعات بیشتر می تونید به آدرس زیر مراجعه نمایید.

http://pyserial.sourceforge.net/index.html

برچسب خورده : , , , , . Bookmark the پیوند یکتا.

3 Responses to ارتباط سریال با زبان Python

  1. mostafa میگوید :

    با تشکر فراوان لطفا در مورد ttyS1 توضیح می دین که چجوری می شه ارتباط پیدا می کنه با UART4 ؟

    • mahdichi میگوید :

      با سلام.
      خودم اول با ttyS4 امتحان کردم ولی بعد با دستور dmesg | grep tty متوجه شدم فقط tty0 مربوط به cmdline و tty1 فقط پیکربندی شده.
      فکر کنم دلیلش این باشه که در فایل script.bin بقیه UART را غیر فعال کردیم.

  2. seyah میگوید :

    با تشکر فراوان.من با دلفی xe10 یک برنامه اندروید برای کوبی برد نوشتم و می خوام این برد رو به یک برد stm32f103 وصل کنم که کارهای سخت افزاریم رو این برد stm انجام بده چون کارهای سخت افزاری با اون خیلی راحت تره. ولی تو ارتباط بین این دو موندم چون نتونستم کامپوننت پورت سریال برای xe10 پیدا کنم که اندروید رو ساپورت کنه؟ آیا برم سراغ i2c یا spi یا یه پروتکل ارتباطی خودم بنویسم که در اون با صفر و یک کردن یک پین برد کوبی ارتباط رو برقرار کنم؟ لطفا راهنمایی کنید. من فقط با دلفی می تونم برنامه اندروید بنویسم.

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