資料介紹
描述
介紹
剛買了一棟新房子,想把所有東西都自動化,從百葉窗開始。看似簡單的項目卻變成了一場噩夢:相對高功率的電機(150W)正在摧毀我的繼電器和三端雙向可控硅開關,使用什么無線通信和控制器以及如何使其工作并不明顯,噪音在線路中導致百葉窗的隨機激活(在半夜非常可怕)......最后我設法用非常便宜的組件解決了所有這些問題,希望我可以幫助其他人避免這些頭痛和很多時間。
不喜歡編程,但喜歡焊接?無論如何閱讀教程,最后你會發現一個分立電路,它的作用相同,但沒有智能。
解釋
在控制電機時,一個重要的問題是它們的電感,這會導致在嘗試打開電路時,電流會持續流過您的分斷裝置,從而產生非常高的電壓。如果您嘗試使用小型繼電器在不采取任何預防措施的情況下斷開電路,它們的觸點會粘在一起,如果您使用三端雙向可控硅開關(固態繼電器),過電壓(在我的情況下,我測量的峰值超過 1600V)會破壞半導體。
我通過谷歌搜索意識到,其他人對此有疑問,但他們采取了簡單、昂貴和龐大的方式,他們只是獲得更大的繼電器,仍然需要廉價的繼電器來激活更大的繼電器,而觸點仍然會受到影響并且可能最終失敗。作為一名工程師,我不能讓自己得不到最有效的解決方案。:) 在下面的示意圖中,您可以通過添加一個電阻器、一個電容器和一個變阻器來節省這個大繼電器。
壓敏電阻保護三端雙向可控硅開關免受過壓。電阻加電容形成一個 RC 緩沖電路,在斷路換向期間吸收能量。
[ PS:由于我在制作項目后很長時間直接從腦海中寫出教程,前幾天仔細查看我的電路板我意識到,在實際電路中,我將電阻器和電容器放置在棕色和灰色線之間(根據原理圖顏色)每個電機而不是三端雙向可控硅觸點。這兩種解決方案都適用于這種情況,但第二種選擇的優點是緩沖器不會永久連接到電源上。]
[ PS2:SebDominguez還用實際配置做了一個很好的架構:
]
開關不是為每個百葉窗使用一個引腳用于向上命令,另一個用于向下命令,而是共享一條公共線,指示百葉窗是否必須向上或向下。所以我們使用 5 個輸入而不是 8 個。不需要過濾器,輸入是軟件去抖動的。
首先,Arduino 激活繼電器模塊以選擇電機方向,經過一小段延遲后,繼電器觸點已經到位,它激活三端雙向可控硅開關,通過廉價的繼電器和三端雙向可控硅開關模塊為電機供電 230 VAC,沒有問題。斷開電路的過程是相反的,首先是三端雙向可控硅開關,然后是繼電器,因此繼電器永遠不會受到帶電換向的影響。
您可以使用一到四個電機,無需修改代碼,如果您不使用其他電機,擁有其他電機的邏輯不會有害,除非您需要其他用途的引腳,顯然。
在家里,我們有兩個故事,因此有兩個電路。由于遠程命令必須是唯一的,因此我通過在上傳時注釋一行使代碼對其中任何一個都有效。如果您只安裝一個電路,則無需更改任何內容,但如果您要構建兩個電路,那么您已經免費獲得了解決方案。事實上我只是騙你的,我們有三個電路,但總共有 8 個百葉窗,在一個電路中,我們占用了所有四個電機,但是其他四個百葉窗通過使用一個 Arduino 中的前三個輸入并且只輸入數字而分成兩部分四個在第二。復制的電路對遠程命令的反應完全相同,但在沒有任何連接的情況下,沒有任何東西可以激活。:) 如果您使用的是代碼的 MySensors 版本,
抱歉,它不是很花哨和清晰,但它是真實的安裝,是很久以前制作的,不僅僅是為本教程準備的電路,我無法在桌子上展示給你看。如您所見,它適合 22 x 15 x 5,2 厘米的壁箱,但非常緊湊。我的做法是用熱膠槍把所有東西都放進一個打開的木箱里:實用、快捷、簡單。
如果您將 Web IDE 用于 Arduino 草圖,它應該會自動找到所有需要的庫。
遙控器(可選)
本教程的目的是解決電感問題,但另外還有遠程控制功能。
提供的代碼包括通過無線電模塊 nrf24l01+ 進行遠程控制的兩種方式:使用 MySensors(推薦),或通過發送帶有盲數和命令 0 或 1 的整數來向上或向下。
在這兩種情況下,我都使用 RPi 作為主機,直接連接一個 nRF24L01+ 模塊,并安裝了一個控制器 (Domoticz)。
對于第一個選項,使用 MySensors,需要安裝 MySensors MQTT 網關。。在我的實現中,將其配置為本地主機中的以太網。按照鏈接中的步驟操作,這里有我的配置參數可以幫助你(檢查你是否需要相同的參數):
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 中的集成非常簡單:添加 HW MySensors MQTT 網關,為節點供電,然后在設置新硬件時直接找到它。
對于第二個選項,直接使用自定義應用程序,而不是 MySensors,虛擬交換機執行控制臺命令:
./remote -m XY
(X:盲#,Y:動作)。
在 Arduino 腳本的標題中,您可以找到更多詳細信息。
這個遠程命令的代碼在http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/中描述了Node.js部分和 Arduino 草圖,我們不需要他們和那個草圖實際上有一個錯誤。我們需要的只是“燈開關應用程序”部分。硬件部分也可用于無線電連接。順便說一句,始終將 10 uF 電容器放在無線電模塊電源引腳上。如果有空間,還可以考慮購買帶有外部天線的無線電模塊。在室內,PCB 天線的范圍可能非常有限(小于 10 m),特別是如果模塊像這個項目一樣被封閉在墻壁中。
請記住,此代碼必須稍作修改,將無線電參數與 Arduino 匹配,并且使代碼僅發送一次命令,而不是在未收到響應時重試最多 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;
}
}
由于需要編譯等,我為您提供了簡單的操作,并將您需要的所有內容(僅適用于 Raspberry 端,Arduino 草圖如下)放在一個 zip 文件中,其中包含修改后的源代碼、庫和編譯代碼樹莓派 3:
如果你把它解壓到你的 RPi 中,你應該可以運行遠程命令。
結果
在這里你可以看到我是如何實現一切的。
墻上的三對開關控制三個百葉窗。墻上的平板電腦顯示了帶有虛擬開關的 Domoticz 界面。平板電腦后面是 Raspberry,其中安裝了控制器等。Arduino 不在這里,它靠近上圖中的百葉窗;RPi 和 Arduino 通過無線電模塊無線連接。
在這里,您還可以看到 Google Home,它通過使用帶有 Webhooks 服務的 IFTTT 和 Domoticz 幫助我實現任何語音命令,例如“Hey Google,盲目”。如果您已經達到了這一點,那么您肯定可以毫無問題地使用語音命令。
在這里,您有一個非常快速的視頻顯示結果。
讓我知道本教程是否對您有所幫助!
此致,
戈美星
PS 作為好奇心的補充,或者因為你真的討厭計算機、編程或其他什么,我首先嘗試在沒有任何智能的情況下離散地制作解決方案。這是結果:
我什至搭建了它,電路完成了這項工作,但我在熟悉 Arduino 平臺之前就完成了,它更靈活且完全可靠,因此我不打算解釋它。如果它對您有任何用處,那就太好了,但這不是本教程的范圍,我不鼓勵使用它。
- 在電動百葉窗中使用霍爾效應鎖存器
- 智能GPRS通訊百葉窗系統 0次下載
- diy智能百葉窗
- DIY自動百葉窗
- 通過溫度和雨滴傳感器的HVAC百葉窗伺服
- 基于Particle Photon打造的家庭自動開關的百葉窗 0次下載
- 自動百葉窗開源分享
- 百葉窗可穿戴技術開源分享
- 自動百葉窗(紅外線控制)
- (畢業設計資料)基于單片機的百葉窗控制系統設計
- 基于STM32的變電站智能百葉窗的設計與實現 12次下載
- 智能百葉窗設計 20次下載
- 基于自帶溫度傳感器的智能百葉窗自動調節光線照射量 15次下載
- JAVA教程之圖片百葉窗 8次下載
- 進風口百葉窗模的設計及制造
- 無葉風扇燈的優缺點有哪些 610次閱讀
- 無葉風扇控制器怎么調 無葉風扇控制器怎么接線 1416次閱讀
- 為什么要給雷達信號加窗?怎么加? 1316次閱讀
- SDN系統方法-葉棘網絡 531次閱讀
- 信號基礎:頻域、時域、FFT和加窗 2507次閱讀
- 基于ESP8266微控制器的WiFi百葉窗開啟器 1842次閱讀
- 如何利用Particle Argon制作電動百葉窗 1904次閱讀
- 如何利用光敏電阻控制燈光的亮滅 1.1w次閱讀
- 基于Windows和RS-232接口實現建筑外窗保溫性能檢測系統的設計 1578次閱讀
- 離散傅里葉級數的諧波信號種類有限的原因 1879次閱讀
- 什么是FIBARO系統,在智能家居中有何應用特點 3932次閱讀
- 貝葉斯統計的一個實踐案例讓你更快的對貝葉斯算法有更多的了解 1.4w次閱讀
- 復立葉變換你知道是什么嗎? 4067次閱讀
- 如何理解貝葉斯公式 3672次閱讀
- 窗函數的選擇 3243次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多