Edison與Arduino經過USB對接通訊

雖然Edison自己就裝在一塊Arduino擴展板上,但當要接的傳感器太多了的時候一個擴展板也不夠用了。所以須要再用一Arduino板擴展功能。而二者須要通訊才能達到一個總體的效果,所以這裏介紹如何用USB鏈接Arduino和Edison來達到通訊的目的。接下來進入教程正文:python

1、硬件ssh

1.系統內裝有python解釋器的Edison開發板
2.電源
3.Arduino
4.Arduino usb鏈接線oop

2、爲Arduino燒錄程序ui

打開Arduino IDE,給你的Arduino燒錄如下程序:spa

String txt;
void setup(){
    Serial.begin(9600);
}
void loop(){
    if (Serial.available()){
        txt = Serial.readString();
        Serial.print("character received:");
        Serial.println(txt);
    }
}

 這個程序的功能就是當Arduino接收到Edison經過串口發來的消息後,在這段消息前加上「character received:」再發送回給Edison。調試

3、鏈接
Edison在一個micro usb口供電的狀況下是不會啓用usb type-A口的,因此請務必用專用電源給Edison供電。而後查看Edison上鍊接的串口設備:在ssh鏈接上Edison後輸入code

ls /dev/tty*

 

再把Arduino經過USB鏈接線插到Edison的USB口。再查看一次Edison上的串口設備。這個時候會發現列表中多了一個設備,這個串口名就是你Arduino的啦。如圖:blog

 

4、爲Edison編寫代碼教程

這裏要用到python的一個名爲serial的模塊,專門用來獲取串口的數據。由於個人Edison上顯示Arduino的串口名是/dev/ttyACM0,因此serial.Serial()的第一個參數就是/dev/ttyACM0,若是你的串口名不是這個,就替換爲你設備上顯示的端口名就行了。示例使用的是python2。開發

import serial
ser = serial.Serial(‘/dev/ttyACM0’, 9600, timeout=1)
ser.open()
try:
  while 1:
    txt = raw_input()
    ser.write(txt)
    response = ser.readline()
    print response
except KeyboardInterrupt:
  ser.close()

 

5、運行和調試
啓動程序,以後輸入hello:

>>> hello
character received:hello

 

能夠看出Edison和Arduino已經開始通訊啦。

相關文章
相關標籤/搜索