2021年4月28日 星期三

雙模SPP/BLE藍芽模塊JDY33

 雙模SPP/BLE藍芽模塊JDY33


藍牙4.0後分為SPP經典藍牙及BLE低功耗藍牙2種不同的通信方式,

2種通信並無完全相容,因此程式編寫上也會不同,

雖然手機4.0後藍牙2種模式都可搜尋並連結,但因通信方式不同,

所以APP程式等需要相同協議才能正常執行運作,

更詳細資料請自上行搜尋,Bluetooth

https://zh.wikipedia.org/zh-tw/%E8%97%8D%E7%89%99

此模塊支援2種藍牙協定SPP及BLE,以下僅示範SPP傳統精典藍牙操作,

傳統藍牙模塊為SPP協定用,如HC05/HC06/JDY等,

使用方式是完全相容的,可替代使用於從式Slave,無主式功能,

.6針腳位,STATE,RXD,TXD,GND,VCC,PWRC

.輸入DC3.3~6.0V/30mA,電力錯腳或過壓會燒板

.從機雙模式,SPP_3.0+BLE_4.2

.頻率範圍2.4GHz

.無遮蔽物有效距離約30公尺

.STATE狀態輸出,待機低電連線高電

.PWRC低電喚醒

.預設配對名稱JDY33,傳統模式為SPP

.預設密碼1234

.等帶連線為慢閃燈

.配對連線後待機長亮燈


注意AT模式和使用模式接腳方式是不同的,

此部份為設定模式AT指令,或跳過AT直接到一般模式使用,

Win10+UNO及安卓測試,在AT設定模式下的腳位連接

RXD接UNO的RX-P0

TXD接UNO的TX-P1

GND接UNO的GND

Vcc接UNO的5v

圖↓藍牙AT接線



接好線路後UNO與電腦連結,此時JDY33板燈為慢閃,

開啟電腦ArduinoIDE程式,打開監控視窗,

調整鮑率為9600,此為原廠預設,

選擇NL&CR顯示方式,

於輸入欄打入以下指令,注意需為大寫,

若輸入後無回覆顯示,請檢查RX及TX接線是否勞固正確,

或上傳空程式確認設定,若出現錯誤請電腦重新開機,

圖↓藍牙33雙模AT指令



AT指令需大寫

AT+RESET 重開

AT+LADDR 通信位址

AT+VERSION 查詢版本

AT+DISC 斷開藍牙連線

AT+PIN 配對密碼,預設AT+PIN1234

AT+BAUD 鮑率,AT+BAUD4預設9600

AT+NAME 配對名稱,AT+NAME預設JDY-33-SPP

AT+NAMB 配對名稱,AT+NAME預設JDY-33-BLE

AT+DEFAULT 回復原廠設定


試著修改

改SPP連線名稱為ABC,則輸入AT+NAMEABC

查詢名稱輸入AT+NAME


改密碼為8899,則輸入AT+PIN8899

查詢密碼輸入AT+PIN


改鮑率為38400,則輸入AT+BAUD6

編號 鮑率

BAUD1 1200

BAUD2 2400

BAUD3 4800

BAUD4 9600出廠預設

BAUD5 19200

BAUD6 38400

BAUD7 57600

BAUD8 115200

注意修改鮑率後的視窗不需調整,

uno斷電重啟後,則需使用新的鮑率,

試完AT指令後,可調回原廠設定,

準備以下的一般使用,注意接線不一樣,



--------一般使用模式------------

由於藍牙會一直待機發訊號,所以上傳程式經常會有失敗的情形,

建議上傳程式時先不接藍牙,

以下程式透過手機藍牙控制UNO的內建燈P13,

開啟電腦執行介面程式,上傳程式,


#include <SoftwareSerial.h> // 引用程式庫

SoftwareSerial BT(10, 11); // 接藍芽板TX和RX

char tx; // 接收字元


void setup() {

Serial.begin(9600); //電腦鮑率

BT.begin(9600); // 藍芽鮑率

pinMode( 13 , OUTPUT); //被控燈號

}


void loop() {

if (BT.available()) {

tx = BT.read();

Serial.print(tx); //收到藍牙資料顯示在監控視窗


if ((tx) == ('X') ) //收到X亮燈,Y熄燈

digitalWrite( 13 , HIGH );

if ((tx) == ('Y') )

digitalWrite( 13 , LOW );

}

}


上傳後記得先斷電,再接上藍牙各腳位線路,

AT模式和一般模式的RX/TX腳位不同,

藍牙RXD接UNO的P10

藍牙TXD接UNO的P11

接好硬體線路後通電,此時藍牙燈號慢閃待機,圖↓




再來手機部分,先開啟藍牙功能,

搜尋JDY33SPP配對密碼1234,

APP可自行編寫或商城有很多藍芽對Arduino用的程式,

注意該程式是SPP或BLE通信協議,

以下使用Arduino bluetooth controller,圖↓145718


下載安裝執行後,會要求選擇對應的藍牙設備,

此APP有4種功能,遊戲控制,開關,調光,字串,

選用Switch開關模式後,先點選設定,

例將開關設為X和Y,回到控制模式圖↓

點擊開關,觀察UNO的內建P13燈的亮熄,

因為部分使用和HC05/HC06/JDY等都相同,

所以就不另錄影片了,以下是JDY30/31的操作影片,

影片~



另搭配繼電器就可以控制家電或燈具了,

可試著用該APP其他控制方式搭配程式修改使用,

進階控制馬達小車等,可參考另篇藍牙小車文,

https://ee543.blogspot.com/2019/04/a1903unobc6.html



https://www.ee543.com



2021年4月25日 星期日

電容的運用

 電容的運用


電容器即儲存電力的容器,一般簡稱電容,

其種類相當多種,材料也很多種,簡寫符號C,單位為法拉F,

1F=1000mF=1000000uF=1000000000nF=1000000000000pF

即1*10的負3次方為基數單位,

隨便拿手邊的電容查看,多是以uF為單位,

所以1F是相當大的容量,稱為超級電容,可拿來當可充電池使用了,圖,


另程式C=Q/V,電容量C,測量電容器兩端的電位差壓V,

儲存在電容器裡的電荷量Q,這種頭殼冒煙的計算這裡就先跳過了,

以下簡單的測試電容蓄電後放電的情形,


電容器400~1500F

4v的18650電池

LED燈珠3v

電阻100~300歐

點動復位開關

NO/NC的3腳開關

圖,


當開關斷路LED燈不亮,電容的2端充電,

當按下按鈕,LED亮燈,然後慢慢的變暗最後熄滅,

再回到充電中狀態,..影片



想加大容量可多顆並聯,反之串聯則會降低容量,

電容有分正負極也有無極性的,

在選用上除了容量,要注意可耐電壓範圍,


如電蚊拍的使用上為麥拉電容不分極性,

電池升壓至2000v,再放出微低電流,

其單位多標示為3位數,

如223J,224K,563J...等,

223J=22*10的3次方=22000pF=0.022uF,J為誤差5%

224K=22*10的4次方=220000pF=0.22uF,K為誤差10%

https://ee543.blogspot.com/2017/04/blog-post_21.html


另電風扇馬達啟動電容用久了會降低效能,更換較大容量可提高轉速,

但要注意過大會降低馬達電機壽命,

https://ee543.blogspot.com/2020/10/blog-post.html


電容器也可穩定電波,如普遍裝在喇叭,等等運用廣泛.



https://eee.ee543.com

https://www.youtube.com/channel/UCNhMS9E-oVhfCBuhTPQwbyw/videos


2021年3月29日 星期一

水位控制~雙浮球+繼電器14腳

 水位控制~雙浮球+繼電器14腳






先行了解浮球水位開關的運作原理.

桿內裝有磁簧開關.浮球裝有磁鐵.

當磁鐵靠近磁簧使電路閉合.

磁鐵移開磁簧就會使電路斷路.

2線的水位開關視為一進一出的開關接線,

而磁簧僅能承受0.5A以下電流.似手機的小開關.

因此需要搭配繼電器PLC單片機控制器等等使用.

由於內置磁簧位置是固定的.因此浮球超過C環是無效的.

取下C環反轉浮球可調整電路為NO或NC.以搭配排水或入水需求.

1球2線所以雙球會有4條線.

使用前先用電表量測通路及調整NO/NC.搭配做排水還是入水.

若要入水.則在低時為NC通路作啟動.

若要排水.則在低時為NO斷路作停機.

水位控制的接法相當多種,

此處使用2個浮球的水位開關搭配一個14腳的瞬時繼電器,

以下使用材料

DC12v電源器1個

DC12V14腳繼電器加底座1組

單浮球的水位開關2支

DC12V抽水馬達1個

線材數條

開關和指示燈和警報器(可不接


此例控制端繼電器線圈及被控端水泵燈號等都是12v.

因此搭配同1個12v的電源.

1個浮球有2條線.上下球各任取1線作共線COM.接繼電器10腳到電源負極.

電源正線到繼電器14腳短路11腳.

注意.作入水2球調整低位NC.

上球另一線到繼電器5腳.

下球另一線到繼電器13腳及9腳.

若要排水則2球調整低位NO.

下球另一線到繼電器5腳.

上球另一線到繼電器13腳及9腳.

入水排水上下球接線和NO/NC設定是相反的.

繼電器6和7腳再出線到警報器和水泵.如圖↓水位雙入水接線圖




入水動作順序

水箱為空>控制端送電>2水位開關低NC>繼電器567通路>水泵運作入水>如圖↓上下通



水位推升下浮球NO斷路>但繼電器5+9為NC>水泵持續運作>如圖↓先通後斷


持續入水至上浮球NO>繼電器復歸NO>水泵停止.如圖↓上下斷



當有水排出至上浮球下降至NC>但繼電器13無負電源無法驅動>如圖↓先斷後通



需持續排水到下浮球下降至NC通路>繼電器567通路>水泵再次運作入水>


如要做排水則上下球接線5和9為及NO/NC相反.如圖↓水位雙排水接線圖




影片為排水影片↓


水位桿的NO/NC應該是要說成設定0和1,因為無浮球時的狀態只有NO的,

水位控制~單浮球+繼電器

https://www.ee543.com



2021年3月21日 星期日

水位控制~單浮球+繼電器

 水位控制~單浮球+繼電器

先行了解浮球水位開關的運作原理.

桿內裝有磁簧開關.浮球裝有磁鐵.

當磁鐵靠近磁簧使電路閉合.

磁鐵移開磁簧就會使電路斷路.

2線的水位開關視為一進一出的開關接線,

而磁簧僅能承受0.5A以下電流.似手機的小開關.

因此需要搭配繼電器PLC單片機控制器等等使用.

由於磁簧位置是固定的.因此浮球超過C環是無效的.

取下C環反轉浮球可調整電路為NO或NC.

以搭配排水或入水需求.


水位控制的接法相當多種,

此處使用單浮球的水位開關搭配一般瞬時繼電器,

由於單浮球的上下行程僅約7mm左右.

因此水泵啟動的時間很短.若是水位變化大.

就會打打停停.電機啟動更耗電.因此不推薦,

此篇只是說明浮球水位開關的基礎使用運作原理.

建議使用雙浮球拉大行程或其它時間繼電器控制等等方式.

在正式比賽考証照就會搭配PLC使用.


以下使用材料

DC12v電源器1個

DC12V繼電器加底座1組

單浮球的水位開關1支

DC12V抽水馬達1個

線材數條

指示燈和警報器(可不接

圖↓


















此例控制端繼電器線圈及被控端水泵燈號等都是12v.

因此搭配同1個12v的電源.

電源正負2線接到電源指示燈後.正線接繼電器座.

負極接到水位開關的任一線.水位開關的另一線接繼電器座.

形成一般開關的迴路.DC繼電器有分正負.注意正負接線腳.

電源正負另接出任1線到被控端的接繼電器座腳.

繼電器NO閘腳再出線到警報器再到水泵.

另一線先串警報器.再到水泵.如圖↓




動作順序

當控制端送電>指示燈亮>低水位開關NO>等待入水>

高水位推升浮球NC>繼電器運作NC>警報器和水泵同時運作.

排水至低水位開關NO>繼電器復歸NO>警報器和水泵同時停止.

循環等待入水.此時若持續入水,馬達就會打打停停,耗電又易固障,故不建議




由於浮球行程僅約5mm左右.因此馬達打打停停.電機啟動更耗電.

因此單浮球水位開關適合觸發警報器.來作手動入水或排水.

或搭配時間繼電器或PLC單片機程式來控制幫浦.

影片↓


相關

繼電器RELAY

時間繼電器~斷電延時繼電器


https://www.ee543.com



2021年3月1日 星期一

基本電學-電壓電流功率

 基本電學-電壓電流功率


盡量以實作非理論來寫教文,但有些東西是看不到摸不著的,

以下名稱單位及公式,先了解,再實作就能知道如何正確搭配電源,

電壓V單位伏特V

電流I單位安培A

功率P單位瓦特W

P=I*V或是V*A=W


電源可供應的功率瓦數應大於設備的電力需求,

但是供應電壓需在設備的耐壓範圍內,

也就是電壓應一致,電流需大於設備或一致,


例如,家用電器,目前家庭用電壓多是AC110V,

日光燈,傳統鎢絲燈泡,到電視機洗衣機電冰箱,

若是將此類110V的設備輸入220V的電源,則會直接燒毀,

反之將國外220v電器帶回台灣插上110v的電力,則無法啟動,

只有標示110~220v有內建變壓器的,才能在110或220電壓通用,

DC電力的電壓及設備或是電池供電也是一樣,

*但在充電的情形下則需涓流充電,另說明,

所以電器設備在使用前務必先清楚了解電壓,以免發生意外,圖


電源供應電流值A,需大於設備的需求或一致,

因P=I*V,也就是W=A*V,

所以在電壓條件相同下,供電電流大,等同供電瓦數大,

當供應電流瓦數低於設備需求則無法啟動設備,

大多數的AC電器多只標示電壓耗電功率瓦數,

當供應電流過大,設備並不會因此燒毀,但電壓過大就會直接燒毀,

家用電力直通電力公司,透過保險線路大多可達到20A以上,

所以供電設備會標示電流A或功率瓦數,來搭配設備需求,

圖例20A開關接上2個1200w的電熱氣,

1200w/110v=10.9A*2台=22A,高過20A保險就會跳電或燒壞電源器,圖


電力教學經常用看的到的水來比喻,

一樣大的水桶放在不同樓層高度,

會造成不同的高低差,即為不同電壓,

而水管不同大小的水流量即為電流,

因此若要通過較大的電流則需搭配較粗的電線,

火災的發生經常是疏忽搭配正確的電線造成,另篇說明,圖






測試影片

同設備接不同電力,

以DC12v100w馬達測試搭配DC5v電源,

不用試也知道是無法啟動的,

以DC12v5A60W電源搭配測試,只轉轉停停無法順利轉動,

最後以12v100w電源正確啟動,


運用在太陽能板時也是一樣,

需先知道設備的電力需求,再提供足夠的的電源,

這次反著測試,同電源接不同設備,

先有一片太陽能板測得供電電壓電流僅1v0.1A約0.1W,

取一般130馬達,由於供電瓦數及電壓低於設備故無法轉動,

再取300低耗能馬達,僅達轉動最低需求,因此可轉但不快,

再試飛行器614馬達高效能,轉動順暢,



經常遇到客戶LED燈不亮的搭配問題,

如不同的電池所可提供的電壓電流,

來搭配不同長度的LED燈帶,

此類不亮燈或是亮度不足,

都是因為提供電源的電壓或電流過低問題,


另補充家用電費以時瓦計算,1度電=1KWh,

即耗電1000w的設備開著用1小時的耗電,

而機械動力電機1HP馬力=746W瓦特


插撥~有遇上零件印WVAC的,

WV=working voltage,工作電壓



2020年12月21日 星期一

Arduino MEGA2560驅動軟硬體

 Arduino MEGA2560驅動軟硬體


UNO腳位不夠用?

介紹另一張更大的板子MEGA,尺寸110*54*15mm

圖↓各種mega



使用方口USB連接電腦或5v電源,

圓5.5mm電源供應接口,DC7~12v,建議9v

數位接口=D54個,含15個PWM

模擬接口=A16個,也可作數位腳

I/O輸出電流=20mA

3.3v輸出電流=50mA

主晶片=ATmega2560


D0和D1是作串列通訊用,如非必要應避免使用,

D13則連接內建的LED燈號,

D2~D13+D44~D46腳位,共15位PWM輸出入值0~255,

A0~A15為類比腳位,數值0~1023,

A0~A15也可作為數位腳D54~D69

ICSP主從傳輸接腳,

AREF電壓輸入參考,

RESET低電位時可重新開機,

輸出電壓3.3v及5v


詳細可查看官方網站

https://www.arduino.cc/en/pmwiki.php?n=Main/arduinoBoardMega2560

https://www.arduino.cc/en/Hacking/PinMapping2560

外觀及腳位參考照片,圖↓



使用和UNO差異不大,一樣先在電腦上安裝Arduino IDE,

在arduino官網選擇適合系統的版本安裝,

https://www.arduino.cc/en/software

Arduino秉持開放源,故市場有很多不同板本,

主要差別在通訊晶片ATmega8U2/16U2或是CH340,

Win10正常情形下連接機板調整序列埠及版本就可上傳使用,圖↓



但隨著Windows版本及Arduino IDE版本,

可能造成無法識別的情形,造成無法正確驅動,則需手動安裝更新,

Win7+CH340晶片,參考下網頁說明及驅動載點下載,

https://www.arduined.eu/ch340g-converter-windows-7-driver-download/

http://www.arduined.eu/files/CH341SER.zip

https://drive.google.com/open?id=1Dg-KaLIeWyxn_KSyXmhnUxWYggFAOrr7

下載解壓執行setup,出現以下畫面,點Install後自動安裝,圖↓



可另參考之前的其他文章

https://ee543.blogspot.com/2016/01/arduino010unoardublock.html

安裝好驅動及軟硬體後,重新插拔及執行,調整序列埠及版本,

建議連接於主機板後方的USB,不要接前面板口,

建議先上傳空程式測試,若無誤再來上傳Pin13內建閃燈測試,

https://ee543.blogspot.com/2016/01/arduino110led.html

打開內建範例>Basics>Blink後上傳,

機板上的內建燈會開始閃爍,就可開始其他的使用了,圖↓




來試試其他板沒有的D46腳位,測試PWM功能,

LED燈串接220或330電阻,搭配內建範例呼吸燈,

打開Arduino內建範例,檔案>範例>Basics>Fade

修改程式LED腳位為46後上傳,或參考

http://ee543.blogspot.com/2016/01/arduino150.html

圖↓




2020年10月11日 星期日

DHT11溫度濕度模塊

 DHT11溫度濕度模塊

此模塊搭配Arduino使用,需先安裝外部程式libraries
方式1,開啟Arduino軟體程式IDE,
在上列點選-草稿碼>匯入>管理程式庫,
輸入DHT11,選擇安裝後離開重新執行Arduino圖↓


 

方式2,到以下連結網站下載ZIP,
https://github.com/adafruit/DHT-sensor-library
解壓後將整個目錄安裝到你的Arduino位置,
例如Arduino\libraries\DHT_sensor_library圖↓



安裝後建議重新執行Arduino IDE,
在工具列檔案>範例>會出現一個DHT sensor>DHTtester
打開內建範例後查看程式,圖↓

 
注意此段說明~依DHT的版本選用
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
我們使用DHT11,所以只留下
#define DHTTYPE DHT11
其他版本及備註刪除,成為以下碼,圖↓


#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11   // 只留DHT 11
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}



選擇好Arduino版本及通訊阜上傳到機板,
習慣先離線斷電再裝硬體,
將DHT11模塊裝上硬體,僅3腳,
在程式裡可看到輸入端為p2接模塊OUT,
正負輸入電力3.3~5v,圖↓


連結電腦執行Arduino IDE,
並打開監控窗,確認鮑率是相符的,
模塊就會開始回傳資料,
濕度++溫度++及體感溫度,圖↓



如需要外接螢幕可參考該相關教文搭配使用,
https://ee543.blogspot.com/2016/05/arduino-uno262iici2c.html


https://www.ee543.com