資料介紹
描述
介紹
剛買了一棟新房子,想把所有東西都自動(dòng)化,從百葉窗開始。看似簡(jiǎn)單的項(xiàng)目卻變成了一場(chǎng)噩夢(mèng):相對(duì)高功率的電機(jī)(150W)正在摧毀我的繼電器和三端雙向可控硅開關(guān),使用什么無線通信和控制器以及如何使其工作并不明顯,噪音在線路中導(dǎo)致百葉窗的隨機(jī)激活(在半夜非常可怕)......最后我設(shè)法用非常便宜的組件解決了所有這些問題,希望我可以幫助其他人避免這些頭痛和很多時(shí)間。
不喜歡編程,但喜歡焊接?無論如何閱讀教程,最后你會(huì)發(fā)現(xiàn)一個(gè)分立電路,它的作用相同,但沒有智能。
解釋
在控制電機(jī)時(shí),一個(gè)重要的問題是它們的電感,這會(huì)導(dǎo)致在嘗試打開電路時(shí),電流會(huì)持續(xù)流過您的分?jǐn)嘌b置,從而產(chǎn)生非常高的電壓。如果您嘗試使用小型繼電器在不采取任何預(yù)防措施的情況下斷開電路,它們的觸點(diǎn)會(huì)粘在一起,如果您使用三端雙向可控硅開關(guān)(固態(tài)繼電器),過電壓(在我的情況下,我測(cè)量的峰值超過 1600V)會(huì)破壞半導(dǎo)體。
我通過谷歌搜索意識(shí)到,其他人對(duì)此有疑問,但他們采取了簡(jiǎn)單、昂貴和龐大的方式,他們只是獲得更大的繼電器,仍然需要廉價(jià)的繼電器來激活更大的繼電器,而觸點(diǎn)仍然會(huì)受到影響并且可能最終失敗。作為一名工程師,我不能讓自己得不到最有效的解決方案。:) 在下面的示意圖中,您可以通過添加一個(gè)電阻器、一個(gè)電容器和一個(gè)變阻器來節(jié)省這個(gè)大繼電器。
壓敏電阻保護(hù)三端雙向可控硅開關(guān)免受過壓。電阻加電容形成一個(gè) RC 緩沖電路,在斷路換向期間吸收能量。
[ PS:由于我在制作項(xiàng)目后很長(zhǎng)時(shí)間直接從腦海中寫出教程,前幾天仔細(xì)查看我的電路板我意識(shí)到,在實(shí)際電路中,我將電阻器和電容器放置在棕色和灰色線之間(根據(jù)原理圖顏色)每個(gè)電機(jī)而不是三端雙向可控硅觸點(diǎn)。這兩種解決方案都適用于這種情況,但第二種選擇的優(yōu)點(diǎn)是緩沖器不會(huì)永久連接到電源上。]
[ PS2:SebDominguez還用實(shí)際配置做了一個(gè)很好的架構(gòu):
]
開關(guān)不是為每個(gè)百葉窗使用一個(gè)引腳用于向上命令,另一個(gè)用于向下命令,而是共享一條公共線,指示百葉窗是否必須向上或向下。所以我們使用 5 個(gè)輸入而不是 8 個(gè)。不需要過濾器,輸入是軟件去抖動(dòng)的。
首先,Arduino 激活繼電器模塊以選擇電機(jī)方向,經(jīng)過一小段延遲后,繼電器觸點(diǎn)已經(jīng)到位,它激活三端雙向可控硅開關(guān),通過廉價(jià)的繼電器和三端雙向可控硅開關(guān)模塊為電機(jī)供電 230 VAC,沒有問題。斷開電路的過程是相反的,首先是三端雙向可控硅開關(guān),然后是繼電器,因此繼電器永遠(yuǎn)不會(huì)受到帶電換向的影響。
您可以使用一到四個(gè)電機(jī),無需修改代碼,如果您不使用其他電機(jī),擁有其他電機(jī)的邏輯不會(huì)有害,除非您需要其他用途的引腳,顯然。
在家里,我們有兩個(gè)故事,因此有兩個(gè)電路。由于遠(yuǎn)程命令必須是唯一的,因此我通過在上傳時(shí)注釋一行使代碼對(duì)其中任何一個(gè)都有效。如果您只安裝一個(gè)電路,則無需更改任何內(nèi)容,但如果您要構(gòu)建兩個(gè)電路,那么您已經(jīng)免費(fèi)獲得了解決方案。事實(shí)上我只是騙你的,我們有三個(gè)電路,但總共有 8 個(gè)百葉窗,在一個(gè)電路中,我們占用了所有四個(gè)電機(jī),但是其他四個(gè)百葉窗通過使用一個(gè) Arduino 中的前三個(gè)輸入并且只輸入數(shù)字而分成兩部分四個(gè)在第二。復(fù)制的電路對(duì)遠(yuǎn)程命令的反應(yīng)完全相同,但在沒有任何連接的情況下,沒有任何東西可以激活。:) 如果您使用的是代碼的 MySensors 版本,
抱歉,它不是很花哨和清晰,但它是真實(shí)的安裝,是很久以前制作的,不僅僅是為本教程準(zhǔn)備的電路,我無法在桌子上展示給你看。如您所見,它適合 22 x 15 x 5,2 厘米的壁箱,但非常緊湊。我的做法是用熱膠槍把所有東西都放進(jìn)一個(gè)打開的木箱里:實(shí)用、快捷、簡(jiǎn)單。
如果您將 Web IDE 用于 Arduino 草圖,它應(yīng)該會(huì)自動(dòng)找到所有需要的庫(kù)。
遙控器(可選)
本教程的目的是解決電感問題,但另外還有遠(yuǎn)程控制功能。
提供的代碼包括通過無線電模塊 nrf24l01+ 進(jìn)行遠(yuǎn)程控制的兩種方式:使用 MySensors(推薦),或通過發(fā)送帶有盲數(shù)和命令 0 或 1 的整數(shù)來向上或向下。
在這兩種情況下,我都使用 RPi 作為主機(jī),直接連接一個(gè) nRF24L01+ 模塊,并安裝了一個(gè)控制器 (Domoticz)。
對(duì)于第一個(gè)選項(xiàng),使用 MySensors,需要安裝 MySensors MQTT 網(wǎng)關(guān)。。在我的實(shí)現(xiàn)中,將其配置為本地主機(jī)中的以太網(wǎng)。按照鏈接中的步驟操作,這里有我的配置參數(shù)可以幫助你(檢查你是否需要相同的參數(shù)):
sudo ./configure --my-gateway=mqtt --my-controller-ip-address=127.0.0.1 --my-mqtt-publish-topic-prefix=domoticz/in/MyMQTT --my-mqtt-subscribe-topic -prefix=domoticz/out/MyMQTT --my-mqtt-client-id=mygateway1 --my-transport=rf24 --my-port=1883 --my-rf24-irq-pin=15
完成后,它在 Domoticz 中的集成非常簡(jiǎn)單:添加 HW MySensors MQTT 網(wǎng)關(guān),為節(jié)點(diǎn)供電,然后在設(shè)置新硬件時(shí)直接找到它。
對(duì)于第二個(gè)選項(xiàng),直接使用自定義應(yīng)用程序,而不是 MySensors,虛擬交換機(jī)執(zhí)行控制臺(tái)命令:
./remote -m XY
(X:盲#,Y:動(dòng)作)。
在 Arduino 腳本的標(biāo)題中,您可以找到更多詳細(xì)信息。
這個(gè)遠(yuǎn)程命令的代碼在http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/中描述了Node.js部分和 Arduino 草圖,我們不需要他們和那個(gè)草圖實(shí)際上有一個(gè)錯(cuò)誤。我們需要的只是“燈開關(guān)應(yīng)用程序”部分。硬件部分也可用于無線電連接。順便說一句,始終將 10 uF 電容器放在無線電模塊電源引腳上。如果有空間,還可以考慮購(gòu)買帶有外部天線的無線電模塊。在室內(nèi),PCB 天線的范圍可能非常有限(小于 10 m),特別是如果模塊像這個(gè)項(xiàng)目一樣被封閉在墻壁中。
請(qǐng)記住,此代碼必須稍作修改,將無線電參數(shù)與 Arduino 匹配,并且使代碼僅發(fā)送一次命令,而不是在未收到響應(yīng)時(shí)重試最多 5 次,否則在丟失的情況下Arduino 反饋,您將看到您的百葉窗在作用-停止-作用-停止-作用。
Raspberry 的最終代碼如下所示:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
//RF24 radio("/dev/spidev0.0",8000000 , 25);
//RF24 radio(RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ);
RF24 radio(RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ);
//const int role_pin = 7;
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
//const uint8_t pipes[][6] = {"1Node","2Node"};
// hack to avoid SEG FAULT, issue #46 on RF24 github https://github.com/TMRh20/RF24.git
unsigned long got_message;
void setup(void){
//Prepare the radio module
printf("\nPreparing interface\n");
radio.begin();
radio.setRetries( 15, 15);
radio.setChannel(0x70);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX);
radio.printDetails();
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
// radio.startListening();
}
bool sendMessage(int action){
//This function send a message, the 'action', to the arduino and wait for answer
//Returns true if ACK package is received
//Stop listening
radio.stopListening();
unsigned long message = action;
printf("Now sending %lu...", message);
//Send the message
bool ok = radio.write( &message, sizeof(unsigned long) );
if (!ok){
printf("failed...\n\r");
}else{
printf("ok!\n\r");
}
//Listen for ACK
radio.startListening();
//Let's take the time while we listen
unsigned long started_waiting_at = millis();
bool timeout = false;
while ( ! radio.available() && ! timeout ) {
//printf("%d", !radio.available());
if (millis() - started_waiting_at > 1000 ){
timeout = true;
}
}
if( timeout ){
//If we waited too long the transmission failed
printf("Puta mierda, no me responde nadie...\n\r");
return false;
}else{
//If we received the message in time, let's read it and print it
radio.read( &got_message, sizeof(unsigned long) );
printf("Yeah, me han respondido > %lu.\n\r",got_message);
return true;
}
}
int main( int argc, char ** argv){
char choice;
setup();
bool switched = false;
int counter = 0;
//Define the options
while(( choice = getopt( argc, argv, "m:")) != -1){
if (choice == 'm'){
printf("\n Talking with my NRF24l01+ friends out there....\n");
while(switched == false && counter < 1){ //Number of attemps to send the message
switched = sendMessage(atoi(optarg));
counter ++;
sleep(1);
}
}else{
// A little help:
printf("\n\rIt's time to make some choices...\n");
printf("\n\rTIP: Use -m idAction for the message to send. ");
printf("\n\rExample (id number 12, action number 1): ");
printf("\nsudo ./remote -m 121\n");
}
//return 0 if everything went good, 2 otherwise
if (counter < 5)
return 0;
else
return 2;
}
}
由于需要編譯等,我為您提供了簡(jiǎn)單的操作,并將您需要的所有內(nèi)容(僅適用于 Raspberry 端,Arduino 草圖如下)放在一個(gè) zip 文件中,其中包含修改后的源代碼、庫(kù)和編譯代碼樹莓派 3:
如果你把它解壓到你的 RPi 中,你應(yīng)該可以運(yùn)行遠(yuǎn)程命令。
結(jié)果
在這里你可以看到我是如何實(shí)現(xiàn)一切的。
墻上的三對(duì)開關(guān)控制三個(gè)百葉窗。墻上的平板電腦顯示了帶有虛擬開關(guān)的 Domoticz 界面。平板電腦后面是 Raspberry,其中安裝了控制器等。Arduino 不在這里,它靠近上圖中的百葉窗;RPi 和 Arduino 通過無線電模塊無線連接。
在這里,您還可以看到 Google Home,它通過使用帶有 Webhooks 服務(wù)的 IFTTT 和 Domoticz 幫助我實(shí)現(xiàn)任何語(yǔ)音命令,例如“Hey Google,盲目”。如果您已經(jīng)達(dá)到了這一點(diǎn),那么您肯定可以毫無問題地使用語(yǔ)音命令。
在這里,您有一個(gè)非??焖俚?a target='_blank' class='arckwlink_none'>視頻顯示結(jié)果。
讓我知道本教程是否對(duì)您有所幫助!
此致,
戈美星
PS 作為好奇心的補(bǔ)充,或者因?yàn)槟阏娴挠憛捰?jì)算機(jī)、編程或其他什么,我首先嘗試在沒有任何智能的情況下離散地制作解決方案。這是結(jié)果:
我什至搭建了它,電路完成了這項(xiàng)工作,但我在熟悉 Arduino 平臺(tái)之前就完成了,它更靈活且完全可靠,因此我不打算解釋它。如果它對(duì)您有任何用處,那就太好了,但這不是本教程的范圍,我不鼓勵(lì)使用它。
- 在電動(dòng)百葉窗中使用霍爾效應(yīng)鎖存器
- 智能GPRS通訊百葉窗系統(tǒng) 0次下載
- diy智能百葉窗
- DIY自動(dòng)百葉窗
- 通過溫度和雨滴傳感器的HVAC百葉窗伺服
- 基于Particle Photon打造的家庭自動(dòng)開關(guān)的百葉窗 0次下載
- 自動(dòng)百葉窗開源分享
- 百葉窗可穿戴技術(shù)開源分享
- 自動(dòng)百葉窗(紅外線控制)
- (畢業(yè)設(shè)計(jì)資料)基于單片機(jī)的百葉窗控制系統(tǒng)設(shè)計(jì)
- 基于STM32的變電站智能百葉窗的設(shè)計(jì)與實(shí)現(xiàn) 12次下載
- 智能百葉窗設(shè)計(jì) 20次下載
- 基于自帶溫度傳感器的智能百葉窗自動(dòng)調(diào)節(jié)光線照射量 15次下載
- JAVA教程之圖片百葉窗 8次下載
- 進(jìn)風(fēng)口百葉窗模的設(shè)計(jì)及制造
- 無葉風(fēng)扇燈的優(yōu)缺點(diǎn)有哪些 610次閱讀
- 無葉風(fēng)扇控制器怎么調(diào) 無葉風(fēng)扇控制器怎么接線 1416次閱讀
- 為什么要給雷達(dá)信號(hào)加窗?怎么加? 1316次閱讀
- SDN系統(tǒng)方法-葉棘網(wǎng)絡(luò) 531次閱讀
- 信號(hào)基礎(chǔ):頻域、時(shí)域、FFT和加窗 2507次閱讀
- 基于ESP8266微控制器的WiFi百葉窗開啟器 1842次閱讀
- 如何利用Particle Argon制作電動(dòng)百葉窗 1904次閱讀
- 如何利用光敏電阻控制燈光的亮滅 1.1w次閱讀
- 基于Windows和RS-232接口實(shí)現(xiàn)建筑外窗保溫性能檢測(cè)系統(tǒng)的設(shè)計(jì) 1578次閱讀
- 離散傅里葉級(jí)數(shù)的諧波信號(hào)種類有限的原因 1879次閱讀
- 什么是FIBARO系統(tǒng),在智能家居中有何應(yīng)用特點(diǎn) 3932次閱讀
- 貝葉斯統(tǒng)計(jì)的一個(gè)實(shí)踐案例讓你更快的對(duì)貝葉斯算法有更多的了解 1.4w次閱讀
- 復(fù)立葉變換你知道是什么嗎? 4067次閱讀
- 如何理解貝葉斯公式 3672次閱讀
- 窗函數(shù)的選擇 3243次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多