2015年10月10日 星期六

自製mBot可以使用的RJ-25轉接器

MakeBlock的mCore以及orion的板子,都是使用RJ25的接頭與該公司的許多感應器連接,如果需要與市面上所買的到的其他的感應器連接,必須使用RJ25的轉接器才可以。
Me RJ25 Adaper
但是,一個RJ25大概也要台幣一佰多元,如果你有很多的一般的感應器要接的話,就得要買好幾個這個轉接器,這也是不小的一筆開支,如果能自己DIY的話,既能省不少錢,也可以少掉轉接器所佔用的空間,所以就來做一個吧!

首先我們先來看看mBot的板子的結構,在網路上我沒找到mBot板子的圖,但是有Me orion的圖,它們的port的結構是一樣的,我們來看看:
從上圖可以看得出來,mBot的每個port,第1及第2個針腳是對應到arduino的針腳,第3個針腳是5V供電,第4個針腳是接地,至於第5及第6個針腳SDA及SCL,在RJ25轉接器則用不到,所以可以忽略它。我們要準備的6芯電話線,依序白、黑、黃、綠,其功能便是RJ25轉接器的SLOT2、SLOT1、5V及接地。至於黃線及藍線,則用不到。

需要用到的材料:
1.電話線一小段(六芯)
2.RJ25的水晶接頭一個
3.相同顏色的電線二條,三對,共六條(褐、紅、黑各二條,顏色也可以自己改成你喜歡的)
4.電線金屬端子六個(請參考底下的圖)
6.母塑膠端子頭3P,共二個。
7.熱縮膜。


製作步驟:
一、剪一小段6芯的電話線,以及一個RJ25水晶頭,將一小段的電話線外皮剝開,利用壓線鉗將水晶接頭與線壓好。
二、將另一端電話線的外皮剝開一小段,露出裡面的六條線,將黃線及藍線剪斷不用,剩下的白、黑、紅、綠,將塑膠外皮剪開一小段,露出裡面的銅線。

三、另外剪六小段的電線,如下圖,一種顏色的兩條,共六條線,三種顏色,在這裡是用褐色、紅色及黑色,購買下圖左邊的金屬端子,利用端子鉗將六條線的一端全接上金屬端子。

四、接下來依照,褐色、紅色、黑色的順序,將金屬端子塞進照片中的3P的母塑膠端子頭卡緊。

五、將另一端的電線外皮剝掉一小段,露出裡面的銅線。

六、先把六條線先套上一小截的熱縮膜,將電話線與二組電線用烙鐵焊在一起,並加熱熱縮膜,把外露的銅線及焊點套住,以免銅線互相接觸。

七、線路的焊接放大圖,電話線白線焊上一條褐線(哪一條褐線都可以),電話線黑線焊上一條褐線(哪一條褐線都可以),電話線紅線焊上二條紅線,電話線綠線焊上二條黑線,在焊之前記得先套上熱縮膜,等焊好再套就來不及了,焊好後將熱縮膜蓋住焊點及銅線,用打火機稍微加熱,讓熱縮膜收縮完整套緊焊點。圖中三條線接在一起的熱縮膜要買直徑稍微大一點的才套得上。

八、做好的線就可以接上感應器了。黑色接 GND,紅色接VCC,褐色則是接SIGNAL。

九、接上mBot就長這樣子了。請記得,和電話線白色接上的褐線就是SLOT2,和電話線黑色接上的褐線就是SLOT1。你也可以自己做上標籤或記號方便你分辨SLOT1及SLOT2。

自製的RJ25連接線,便宜又大碗,想做幾條就做幾條,線長也可以自己控制,價格一條大概不到10元吧,而且DIY的樂趣,無價。


來看看實際的影片吧:



2015年10月8日 星期四

用手機藍芽程式遠端控制mBot開關家電用品

上星期做了一個用mBot控制家電開關的作品(http://lioujj.blogspot.tw/2015/09/arduino.html),今日試著用手機藍芽和mBot連線,進行遠端控制家電產品的開啟和關閉,影片如下:



這裡使用mBot及makeblock出廠的藍芽模組來實作控制功能,如下圖

因為mBot相容於Arduino Uno,所以用一般的arduino配上平常的藍芽模組也是可用的,只要把藍芽模組的RX、TX、VCC及接地腳位接好即可。在這個範例中,RX是接在D0,TX接在D1。

接好後的藍芽模組要先和手機配對才可以。


因為是使用手機控制arduino,所以要分別寫手機端及arduino端的程式。
手機端的程式是用AppInverntor寫的,畫面設計如下圖:
手機端程式的元件畫面
手機端的程式內容
手機端的程式
上面的程式碼最重要的是紅色框線的地方,手機藍芽會發出T或F的訊號,arduino收到T訊號,則導通繼電器,收到F訊號則斷開繼電器,進而控制家電產品的電流。


至於ardhino端的程式如下:
#include <Arduino.h>
#include <Wire.h>
#include <Servo.h>
#include <SoftwareSerial.h>

SoftwareSerial myBlueTooth(0, 1); // 設定藍芽RX, TX的腳位
char BluetoothData; // 手機傳來的訊號內容會儲存在這個變數

void setup(){
  pinMode(10,OUTPUT);//繼電器所連接的腳位
  digitalWrite(10,1);
  myBlueTooth.begin(115200);  //設定藍芽傳輸率
}

void loop(){
  if (myBlueTooth.available()){
      BluetoothData=myBlueTooth.read();
      if(BluetoothData=='T')
         digitalWrite(10,0);
      if(BluetoothData=='F')
         digitalWrite(10,1);
  }
  delay(100);
}