新手試試 --- Arduino MAX485擴展板

係網上搵有關E塊板既幾條link,
http://item.taobao.com/auction/i ... 0638ac6d56089c7.htm
http://www.roboticfan.com/blog/u ... 8/20081072236.shtml
http://www.roboticfan.com/blog/u ... 0081111204543.shtml

睇完先至知,原來E塊板有以下特色:
1. 多左粒MAX485,可以提供半雙工RS485串行通訊。
2. 為左使到Arduino個TTL串行接口可以多選擇性,增加左3個2Way Jumpers去接駁Pin0-2。
3. 為Pin0-2提供空接,接到MAX485,接到APC/BT接口等三個選擇。
4. i/o提供配套既+V(Vcc/5v)同Gnd更方便接駁senor同配件。
5. 又特別把6個PWM接口放埋一齊,而且一樣提供配套既5v同Gnd,方便接駁性質相同配件
6. 提供額外可切換電源Vcc接口,方便插大電流配件在Pin0-13既配套Vcc,但唔包括PWM接口既配套5v。
7. 其中5V係同Arduino既5V相通,而Vcc在PWR_SEL短路時相通,開路時隔離。
8. 又有額外與Arduino既VIN相通既电源接口。

RS485 Select
RS485Select.jpg

對接口多些了解,就方便日後應用,就可以減少出錯。
另外因為無論使用MAX485或APC/BT接口都會佔用Pin0同1影嚮upload,
所以先要拔掉Jumpers,避免upload失敗。
或者先唔插塊MAX485擴展板,等upload完至插上去個Arduino道。

有兩塊RS485擴展板,正好用來試下個RS485通訊。

測試方式係由一部Arduino連續不停地發送'A','B','C'。
其間用Led800H200L代表發送A,用Led500H500L代表發送B,用Led200H800L代表發送C。
Led將會接駁在pin12。

另一部Arduino會負責接收。
其間用Led1代表收到A,用Led2代表收到B,用Led1+Led1代表收到C。
Led1將會接駁在pin11,Led2將會接駁在pin13。

兩部Arduino將會由兩條電線分別A-A同B-B連接在一起。

RS485 Connect
RS485Connect.jpg

TOP

發送code
  1. int ledPin = 12;
  2. int EN = 2;

  3. void setup()
  4. {
  5.   pinMode(ledPin, OUTPUT);
  6.   pinMode(EN, OUTPUT);
  7.   Serial.begin(19200);
  8. }

  9. void loop()
  10. {
  11. // send data
  12.   digitalWrite(EN, HIGH);// enable send data
  13.   Serial.print('A');
  14.   digitalWrite(ledPin, HIGH);
  15.   delay(800);
  16.   digitalWrite(ledPin, LOW);
  17.   delay(200);
  18.   Serial.print('B');
  19.   digitalWrite(ledPin, HIGH);
  20.   delay(500);
  21.   digitalWrite(ledPin, LOW);
  22.   delay(500);
  23.   Serial.print('C');
  24.   digitalWrite(ledPin, HIGH);
  25.   delay(200);
  26.   digitalWrite(ledPin, LOW);
  27.   delay(800);

  28. }
複製代碼

TOP

接收code
  1. int ledPin1 = 11;
  2. int ledPin2 = 13;
  3. int EN = 2;
  4. int val;

  5. void setup()
  6. {
  7.   pinMode(ledPin1, OUTPUT);
  8.   pinMode(ledPin2, OUTPUT);
  9.   pinMode(EN, OUTPUT);
  10.   Serial.begin(19200);
  11. }

  12. void loop()
  13. {
  14.   // receive data
  15. digitalWrite(EN, LOW);//enable receive data
  16. val = Serial.read();
  17.   if (-1 != val) {
  18.     if ('A' == val) {
  19.       digitalWrite(ledPin1, HIGH);
  20.       delay(500);
  21.       digitalWrite(ledPin1, LOW);
  22.       delay(500);
  23.     }
  24.     if ('B' == val) {
  25.       digitalWrite(ledPin2, HIGH);
  26.       delay(500);
  27.       digitalWrite(ledPin2, LOW);
  28.       delay(500);
  29.     }   
  30.     if ('C' == val) {
  31.       digitalWrite(ledPin1, HIGH);
  32.       digitalWrite(ledPin2, HIGH);
  33.       delay(500);
  34.       digitalWrite(ledPin1, LOW);
  35.       digitalWrite(ledPin2, LOW);
  36.       delay(500);
  37.     }
  38.   }
  39. }
複製代碼

TOP

E兩個Code都係放在examples\Max485入面....

RS485 Location
RS485Location.gif

Compile同upload成功後,分別插番兩塊MAX485擴展板,再插番兩個USB就可以試機。
不過要小心唔好掉轉兩塊板。
插左電等一陣就會開始通訊,並開始由一部Arduino連續不停地發送ABCABCABC...到另一部Arduino。
小心觀察兩部Arduino既Led閃動時間同次序,同設計比較,就知到有冇問題喇.....

RS485 Success
RS485Success.jpg

MAX485擴展板試機成功.......

TOP

後記:暫時未有...

TOP

RS485 其理論的通訊距離是1200米

TOP

造有線遙控應該幾好用,再遅D會試下搞。

TOP