色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino車庫開啟器和通用無線電接口

打馬過草原 ? 來源:打馬過草原 ? 作者:打馬過草原 ? 2023-02-20 09:47 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

目錄

1.簡介
1.1創(chuàng)客實用電臺
1.1.1頻率
1.1.2天線
1.1.3電源
1.1.4 空間
1.2您將會學(xué)到什么
2. Arduino車庫開啟器和通用無線電接口
2.1 Arduino車庫開啟器,基站
2.1.1 BOM
2.1.2啟動!
2.2 Arduino車庫開啟器,手持單元
2.2.1 BOM
2.2.2啟動!

1.簡介

無線電波無處不在。來自大爆炸的深空回波在微波頻譜中最為明顯,而來自家庭內(nèi)部電線和附近地鐵系統(tǒng)的局域波在50-60Hz頻段內(nèi)最為顯著。當(dāng)您觸摸3.5mm TRS插孔并聽到令人討厭的嗡嗡聲時,您自身就已經(jīng)成為了接收偶發(fā)模擬無線電波的巨型可聽電容器

在本文中,我們將介紹一個非常適合創(chuàng)客的實用且抗干擾的無線電系統(tǒng)。

它適用于模擬和數(shù)字的傳輸與接收,且具有CRC校驗和。該系統(tǒng)在ISM/SRD頻段(美國常用433和902-928MHz)上的位置非常靈活,并且允許對其進行編程,所以您可以選擇適合自己的以及符合國家要求的頻率。有關(guān)合法性的問題,請參考 低功率、未經(jīng)許可的發(fā)射機FCC規(guī)則 文件中的第15.231部分,間歇控制信號。

就范圍而言,它相比于WiFi有很大的進步,但還遠不及LoRa。在兩個站點上都有定向天線的視距(LOS)場景中,范圍大約為400米。

在CC1101數(shù)據(jù)表中每當(dāng)提到kBaud(千波特)時,可將其認為0.1250 kByte(千字節(jié))。實際上,只需要把波特率視為位即可(每字節(jié)8位)。它們之間存在差異,尤其是曼徹斯特編碼和4-FSK編碼,但這與我們所要講的Arduino車庫開啟器和通用無線電接口沒什么關(guān)系。

1.1創(chuàng)客實用電臺

無線電應(yīng)用中最重要的因素是頻率(以赫茲為單位,Hz)、功率(以瓦特為單位,W)天線和空間。

現(xiàn)在我們來簡單介紹一下。

1.1.1 Frequency頻率
頻率,赫茲(千赫、兆赫、千兆赫)描述了特定事物的周期性間隔或每秒的周期數(shù)。如果擺鐘在一秒鐘內(nèi)完成了一個完整的擺動,它的頻率為1 Hz。

如果需要兩秒鐘,那么頻率為0.5Hz。而如果每秒擺動兩次,頻率則為2Hz。我們這里使用的是電磁輻射,該理論也適用于電磁波。

光速“c”是299.792.458m/s,為了簡單起見,光速被近似為300.000km/s。在知道光速和頻率的情況下,我們直接用光速除以頻率“f”(以兆赫為單位),就可以推導(dǎo)出波長。如下所示:


c / f = l
300 / 433 = 0.692

將結(jié)果“I”乘以100,得到以厘米為單位的波長,乘以(100/2.54)就可以得到以英寸為單位的波長。

如果知道光速和波長,我們將“c”除以“I”,就可以得到“f”的值。因此:


c / l = f
300 / 0.6928 = 433.02

1.1.2天線

這就是我們所需要的所有數(shù)學(xué)知識了。這很容易記住,接下來您只需要使用各種頻率和DIY天線就可以了。

我們的CC1101模塊將設(shè)置為在433MHz運行,并帶有板載SMA連接器。請注意,CC1101可以在300-348 MHz、387-464 MHz和779-928 MHz范圍內(nèi)工作。奇怪的是,附帶的天線只有4cm/1.57 in長。雖然這可能是絕緣層包裹的線圈天線,但是我還是稱這些天線為十六分之一波長天線,并且對它們沒有太多期望。

幸運的是,使用上面的公式,我們可以構(gòu)造出四分之一波長鞭形天線。對于SMA這樣的天線,可以去除橡膠絕緣層,并焊接四分之一波長線圈天線。實際上,與433MHz信號適配良好的天線長度為:


300/433/4 = 0.173

數(shù)值為17.3cm/6.18in。四分之一波長天線的長度同樣容易計算,只需要將波長的結(jié)果除以4即可。對于天線,使用絞合線或?qū)嵭揪€都可以,只要是絕緣的就行,但是實芯線更容易做成線圈。而且電氣設(shè)備長度也很重要,在一個小小的手持車庫開啟器上裝配17.3cm/6.18in的天線會很不便利。

1.1.3電源

信號強度也很重要,它被描述為每米dB毫伏(dBmV/m),或每米dB-微伏(dBuV/m),或超過一毫瓦的分貝(dBm)。您需要將頻率計數(shù)器直接放置在天線旁邊才能準確讀取—我通常只關(guān)心mW/W值,看看我能與多遠的節(jié)點之間進行ping-pong信號傳遞,就像潛艇那樣!

我們的CC1101無線電模塊在我的頻率計數(shù)器上讀數(shù)約為30mV,這很不錯(可以推測它們?yōu)?.3×0.03=100mW)。將發(fā)射器設(shè)置為連續(xù)傳輸,并在室外進行范圍測試,我在~60m/197ft處才開始丟失信號,這很棒!

如果您有興趣了解關(guān)于dBm(這是得到無線電信號強度的正確方式)的更多信息,請參閱 有關(guān)dBm的維基百科。這會很有幫助。

1.1.4空間

用外行的話來說,空間是距離,以及兩點之間空間中的任何物質(zhì)。

在空間中,可能有一棵樹、一片森林、一所房子,或者知識微小的大氣顆粒,比如水分子。如果空間里什么都沒有,那么無線電波就會從A電直線傳播到B點。如果空間里到處都是金屬碎片,那么電波就會被破壞和分散。

可以預(yù)料到,我們的無線電信號僅僅在穿越距離的過程中就會消散和散射,而如果碰到障礙物(即使只是樹上的樹葉也會成為遠程WiFi PtP連接無法克服的障礙)只會使ping-pong轉(zhuǎn)換更加困難。

令人高興的是,CC1101無線電解決了這些問題。如今,433MHz頻段很擁擠,因此對于充滿干擾和障礙物的現(xiàn)代城市環(huán)境來說,可以在~60m/197ft的范圍內(nèi)實現(xiàn)非??煽康臄?shù)字傳輸已經(jīng)很出色了。

1.2您將會學(xué)到什么

閱讀本文后,您將會知道如何同時運行Arduino。
CC1101無線電通過SPI連接。

從Arduino 5V到3V3邏輯電平的SPI需要進行電平轉(zhuǎn)換,如果您不學(xué)會這一操作,硬件將會被燒毀。我打賭您一定會去學(xué)習(xí)的。

您還將需要學(xué)會一些實用的無線電公式,例如用于計算波長(用于天線)和波長頻率的相關(guān)公式。這使您可以輕松制作出所需的任何類型的天線。生活中普遍使用的天線是價格很高的銅線,這對您來說并不適合。

您還需要學(xué)習(xí)如何通過適度的置信度來消除輸入信號(來自觸覺開關(guān)/按鈕)的抖動。然而,這樣寫出來的代碼可能會非常復(fù)雜,一個非常好的替代方案是在一個ADC引腳上使用10K電位器。這非??焖伲?0 uS讀取一次),而且也不需要用代碼去執(zhí)行—如果您之前沒有了解過,現(xiàn)在就應(yīng)該學(xué)會了。

當(dāng)您的構(gòu)建(有兩個)完成后,您將能夠在比WiFi所能覆蓋區(qū)域更大的范圍內(nèi)傳輸和接收控制/遙測數(shù)據(jù),以及對字節(jié)流執(zhí)行相關(guān)操作?!癆rduinoGarageOpener_CC1101.ino”中的“magic_token”變量可以被安全地增加到32或64字節(jié),這似乎并沒有真正影響到傳輸錯誤率。

當(dāng)您在代碼中擴展車庫基站段時,您將會學(xué)習(xí)如何非常高效使用內(nèi)存。

如果您的代碼因為定義的內(nèi)容而停止運行,就說明您使用了太多的SRAM(atmega328p只有2kB),只需要通過Arduino串行監(jiān)視器發(fā)送一個“foo!”就可以查看所剩內(nèi)存。如果沒有得到任何信息,請撤銷您最近的更改。

之后還將會提到H橋(用于改變直流電機的極性/方向),如果您想要自己構(gòu)建一個,就可以學(xué)習(xí)更多的相關(guān)內(nèi)容去完成。為了激發(fā)您的這一想法,我將會在這里簡單地展示并介紹一個H橋。它一直在我家里的某個地方,但是我從來都沒關(guān)注過它。不過為了你,我會把它找出來。

如果您喜歡對Arduino端口寄存器進行快速、直接的操作,H橋?qū)浅S杏?。更多?nèi)容請參看第2部分!

2. Arduino車庫開啟器和通用無線電接口

車庫開啟器通過一個大且重的電機進行操作。它們有各種形狀和尺寸,從很小的12V到近乎高壓的48V,甚至可以達到更高電壓。有趣的是,您打算如何與之交互?這取決于您自己。您需要打開盒子,看一下里面的東西。

可以在兩個方向上運行的雙極電機很容易獲取。只需卸下驅(qū)動電路,直到只剩下電機、電源和盒子。

Arduino電機驅(qū)動板(Rev3)不能用于這項任務(wù)(事實上應(yīng)避免使用所有L298N系列)—您需要更強大的電機驅(qū)動器,例如額定電壓為7-30V、10A的SHIELD-MD10。

或者構(gòu)建您自己的H橋,并直接通過Arduino端口操作進行驅(qū)動??雌饋砜赡軙缦聢D示意圖所示:

pYYBAGPyz_-AWQq-AAJGSGSoVDY439.png

請參閱下面的端口操作說明。


  Atmega328p
  Ports register reference:
  Port D
  1   2   3   4   5   6   7   8
  --  --  --  --  --  --  --  --
  D7  D6  D5  D4  D3  D2  D1  D0

  Port B
  1   2   3   4   5   6   7   8
  --- --- --- --- --- --- --- ---
          D13 D12 D11 D10 D9  D8

  Port C
  1   2   3   4   5   6   7   8
  --  --  --  --  --  --  --  --
          A5  A4  A3  A2  A1  A0

以及我的一些示例代碼:


// setup()
  // Set D8+D9+D10+D11+D13 as OUTPUTs
  DDRB = 0b00101111 ;
  // Set all bits in register LOW
  PORTB = 0b00000000 ;

// ...

// Functions that belong elsewhere
void bridgeOFF( void ) {
  // Set all output pins LOW
  PORTB = 0b00000000 ;
  // Motor Spin-down grace period
  delay( 300 ) ;
}

void bridgeForward( void ) {
  bridgeOFF() ;
  // Forward, D8+D9+D13 HIGH, D13 is the onboard LED.
  PORTB = 0b00100011 ;
}

void bridgeReverse( void ) {
  bridgeOFF() ;
  // Reverse, D10+D10 HIGH, D13 is set LOW here.
  PORTB = 0b00001100 ;
}

這完全可行,而且非常便宜。但是,其中有一點搞錯了,純*oomph*的單次擊穿將會燒毀一條或兩條電氣路徑。H橋必需精確計時。

圖中的H喬如下圖所示,盡管它使用過時的BJT,但是性能完美無缺。本來已經(jīng)弄丟了,但是我又找到了它。

poYBAGPy0BuADY_2AAvgkXvm71g985.png

電機驅(qū)動器可以由您自己來選擇(提示:SHIELD-MD10?。译姍C的選擇會因車庫設(shè)置而異。現(xiàn)在來完成Arduino車庫開啟器!

2.1 Arduino車庫開啟器,基站

首先,如果您不熟悉Arduino IDE,請先閱讀這篇文章。

從Arduino官網(wǎng)下載Arduino IDE,并點擊此處了解如何安裝該庫。

我們需要的庫包含在這個zip文件中:ArduinoGarageOpener_CC1101。

您也可以在Github上瀏覽/下載該庫,或者直接使用“git”將其直接安裝到您的Arduino庫文件夾中,如下所示:

pYYBAGPy0B2AAX9pAAA3nRjToHw855.png

繼續(xù)!

我們的庫Arduino_CC1101包含兩個用于發(fā)送和接收指令的示例。

pYYBAGPy0CCAP6PnAAFDSzwVLNA280.png

如果您發(fā)現(xiàn)主程序過于復(fù)雜,請參考這些示例,這些例子只是簡單地放在了一起。

我們有一個程序文件,ArduinoGarageOpener_CC1101.ino, 它包含車庫開啟器和車庫基站的代碼。這些行決定了您編譯的Arduino固件的功能。如果您希望為手持設(shè)備編譯,將常數(shù)“IS_GARAGE_OPENE”設(shè)置為1,“IS_GARAGE_STATION”設(shè)置為0。如果編譯車庫基站,將“IS_GARAGE_STATION”設(shè)置為1,“IS_GARAGE_OPENER”設(shè)置為0。

按下CTRL+R t進行編譯,按CTRL+U進行(編譯和)上傳。程序和相關(guān)庫都可以在zip文件“ArduinoGarageOpener_CC1101”中找到。


// Handheld unit?
#define IS_GARAGE_OPENER 	0
// Garage base station?
#define IS_GARAGE_STATION	1

2.1.1 BOM

Arduino Nano https://www.newark.com/arduino/a000005/dev-board-atmega328-arduino-nano/dp/13T9275
CC1101 RF 模塊 https://www.elecrow.com/433mhz-rf-transceiver-cc1101-module-p-374.html
ROHM SLR343BC4TT32 3mm LED https://www.digikey.com/product-detail/en/rohm-semiconductor/SLR343BC4TT32/SLR343BC4TT32-ND/2337159
330ohm 電阻 https://www.newark.com/multicomp-pro/mccfr0w4j0331a50/carbon-film-resistor-330-ohm-250mw/dp/58K5042
杜邦電線 https://www.newark.com/multicomp-pro/mccfr0w4j0331a50/carbon-film-resistor-330-ohm-250mw/dp/58K5042
面包板 https://www.newark.com/multicomp-pro/mccfr0w4j0331a50/carbon-film-resistor-330-ohm-250mw/dp/58K5042
3.3+5V 電源 https://www.newark.com/bud-industries/bbp-32701/breadboard-power-supply-5v-3-3v/dp/56AC7832
電平轉(zhuǎn)換器 https://www.newark.com/adafruit/395/logic-level-converter-8ch-arm/dp/53W5916

2.1.2啟動!

按照下圖進行接線。

poYBAGPy0CWAeyW1AAJO6X4oabE182.png

可以看出Fritzing圖標軟件的強大功能!雖然CC1101 8P接頭畫得很差(至少從圖像上看如此),但您還是一定要進行電平轉(zhuǎn)換。如果不這樣做,CC1101還是可以正常運行,但只能運行很短的時間。

代碼:


/*
Constants from Arduino_CC1101/ELECHOUSE_CC1101.h:
Name   	Pin  Comment
SCK_PIN	13   MUST LEVELSHIFT FROM Arduino 5V to CC1101 SPI 3V3!
MISO_PIN   12
MOSI_PIN   11   MUST LEVELSHIFT FROM Arduino 5V to CC1101 SPI 3V3!
SS_PIN 	10   CSN/SS; MUST LEVELSHIFT FROM Arduino 5V to CC1101 SPI 3V3!
GDO0   	2
GDO2   	9    
*/

// Handheld unit?
#define IS_GARAGE_OPENER 	0
// Garage base station
#define IS_GARAGE_STATION	1
#if IS_GARAGE_OPENER
// Interrupt/sleep related libraries, not used.
//#include        	 
//#include  	 
//#include      	 
//#include      	 
//const byte wakePin = 3 ; // INT1
#elif IS_GARAGE_STATION
// Motor open/close drive times usually differ,
// time both separately with a stopwatch app.
#define  motor_open_drive_time 100 // ms, change this
#define  motor_close_drive_time 100 // ms, change this
#endif
#include 
const byte buttonPin = 6 ;
bool buttonState = LOW ;        	 
bool previousButtonState = LOW;   
unsigned long previousDebounceTime = 0 ;  
//unsigned long debounceDelay = 50;    
unsigned long debounceDelay = 100 ;    
const int magic_token_len = 6 ;
// PING LIKE A SUBMARINE!
byte magic_token[ magic_token_len ] = { "PING!" } ;
const int input_buffer_len = 6 ;
const byte ledPin = 4 ;
bool is_garage_open = false ;
// 0: No Serial.printing, except in serialEvent()
// 1: Lots of useful information, such as received data, events etc.
const bool debug = 1 ;

void setup( void ) {
  Serial.begin( 115200 ) ;
  pinMode( ledPin, OUTPUT ) ;
  ELECHOUSE_cc1101.Init( F_433 ); // Frequency: 433MHz
  //ELECHOUSE_cc1101.Init( F_868 ) ; // Frequency: 868MHZ
  //ELECHOUSE_cc1101.Init( F_915 ) ; // Frequency: 915MHz
  if ( IS_GARAGE_STATION )
	ELECHOUSE_cc1101.SetReceive() ; // Do listen
  else if ( IS_GARAGE_OPENER ) {
      // 10K pull-down from D6->GND, then D6->SW1->5V
	pinMode( buttonPin, INPUT ) ; 
  }
}

void loop( void ) {
  // Begin Garage Opener
  if ( IS_GARAGE_OPENER ) {
	int read = digitalRead( buttonPin ) ;
	if( read != previousButtonState ) {
  	// Reset the debouncing timer
  	previousDebounceTime = millis() ;
	}
	if ( (millis() - previousDebounceTime ) > debounceDelay ) {
  	if ( read != buttonState ) {
    buttonState = read ;
    // Still HIGH?
    if (buttonState == HIGH) {
      digitalWrite( ledPin, HIGH ) ;

      Serial.println( "[!] Sending magic_token three times ..." ) ;
      // Now send magic_token with moderate confidence
      for ( int it = 0 ; it < 3 ; it++ ) { ELECHOUSE_cc1101.SendData( magic_token, magic_token_len ) ; } delay( 50 ) ; digitalWrite( ledPin, LOW ) ; } } } previousButtonState = read ; } // End Garage Opener // Begin Garage Station else if ( IS_GARAGE_STATION ) { byte input_buffer[ input_buffer_len ] = { 0 } ; bool token_matched = false ; if ( ELECHOUSE_cc1101.CheckReceiveFlag() ) { int len = 0 ; len = ELECHOUSE_cc1101.ReceiveData( input_buffer ) ; if ( debug ) { Serial.print( F( "[!] RX data => " ) ) ;
    Serial.println( (const char *)input_buffer ) ;
    Serial.print( F( "[!] RX data length => " ) ) ;
    Serial.println( len, DEC ) ;
  	}
  	delay( 100 ) ;
  	// Are magic_token and input_buffer identical?
  	if( strncmp( (const char *)magic_token, (const char*)input_buffer, 2 ) == 0 ) {
    token_matched = true ;
    // If open, close
    // If closed, open
    // set is_garage_open accordingly
  	}
  	else token_matched = false ;
  	// End token_match
  	// Begin open/close actions
  	if ( token_matched ) {
    if ( is_garage_open ) {
      if( debug ) Serial.println( F( "[!] Garage door CLOSE action!" ) ) ;
      // Drive closed ...
      is_garage_open = false ;
      digitalWrite( ledPin, LOW ) ;
      delay( motor_close_drive_time ) ;
    }
    else if ( ! is_garage_open ) {
      if ( debug ) Serial.println( F( "[!] Garage door OPEN action!" ) ) ;
      // Drive open ...
      is_garage_open = true ;
      digitalWrite( ledPin, HIGH ) ;
      delay( motor_open_drive_time ) ;
    }
  	}
  	// End open/close actions
	}
	ELECHOUSE_cc1101.SetReceive() ; // Do continue listening
  }
}

// Called if Arduino receives data over serial link
void serialEvent( void ) {
  printFreeRAM() ;
  while ( Serial.available() > 0 )
	Serial.read() ;
}

// Print free SRAM in bytes
void printFreeRAM( void ) {
  extern int __heap_start, *__brkval ;
  int v ;
  v = (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval ) ;
  Serial.print( F( "[!] Free RAM => " ) ) ;
  Serial.println( v, DEC ) ;
}

通電后,基站將開始監(jiān)聽“magic_token”,即“PING!”。這可以是任何內(nèi)容,這由您來決定。

當(dāng)它接收到正確的字節(jié)序列(目前由“P”、“I”、“N”、“G”、“!”的ASCII碼組成,由ASK調(diào)制傳輸)時,會觸發(fā)您所設(shè)定任何事件的“OPEN(打開)”/ “CLOSE(關(guān)閉)”,如SHIELD-MD10,一個H橋,或者繼電器。

“OPEN”和“CLOSE”操作存在延遲??梢约僭O(shè)打開和關(guān)閉車庫門分別需要兩個不同的時間段,而這就是造成延遲的原因。

改變常量“motor_open_drive_time”和“motor_close_drive_time”,直到找到合適的值為止。另一種方法是使用霍爾效應(yīng)傳感器,但是本文沒有涉及。


#define  motor_open_drive_time 5000 // ms
#define  motor_close_drive_time 5000 // ms

我們使用變量“is_garage_open”追蹤當(dāng)前狀態(tài),因此可以在車庫門打開時對其關(guān)閉,反之亦然。它僅存儲在SRAM中,而不存儲在EEPROM中。

對于基站來說特別重要的一點是,當(dāng)您添加電機驅(qū)動代碼時,一定要通過發(fā)送“foo!”到Arduino來關(guān)注串行監(jiān)視器中的剩余SRAM(CTRL+SHIFT+M)信息。當(dāng)前設(shè)置中有1823個字節(jié)可用,但是如果您引用了一些功能比較強大的庫,這可能會變化得很快。

當(dāng)觸發(fā)“OPEN”動作時,ROHM 3mm LED將會被點亮。如果變量“debug”為真,那么您就可以通過Arduino串行監(jiān)視器追動當(dāng)前狀態(tài),如下所示。

pYYBAGPy0CiAAYMsAABxWqXxoB4400.png

2.2 Arduino車庫開啟器,手持單元

按下按鈕,發(fā)送“magic_token”

2.2.1 BOM

Arduino Nano https://www.newark.com/arduino/a000005/dev-board-atmega328-arduino-nano/dp/13T9275
CC1101 RF 模塊 https://www.elecrow.com/433mhz-rf-transceiver-cc1101-module-p-374.html
ROHM SLR343BC4TT32 3mm LED https://www.digikey.com/product-detail/en/rohm-semiconductor/SLR343BC4TT32/SLR343BC4TT32-ND/2337159
330ohm 電阻 https://www.newark.com/multicomp-pro/mccfr0w4j0331a50/carbon-film-resistor-330-ohm-250mw/dp/58K5042
杜邦電線 https://www.newark.com/multicomp-pro/mccfr0w4j0331a50/carbon-film-resistor-330-ohm-250mw/dp/58K5042
面包板 https://www.newark.com/multicomp-pro/mccfr0w4j0331a50/carbon-film-resistor-330-ohm-250mw/dp/58K5042
3.3+5V 電源 https://www.newark.com/bud-industries/bbp-32701/breadboard-power-supply-5v-3-3v/dp/56AC7832
電平轉(zhuǎn)換器 https://www.newark.com/adafruit/395/logic-level-converter-8ch-arm/dp/53W5916
10kOhm 電阻 https://www.newark.com/arcol/mra0207-10k-b-15ppm-ta/res-10k-0-10-250mw-axial/dp/79Y4556
按鈕 https://www.newark.com/adafruit/1119/tactile-switch-pcb-breadboard/dp/84X1201

2.2.2啟動!

我們使用與基站相同的代碼,只是將常量“IS_GARAGE_OPENER”更改為1,將“IS_GARAGE_STATION”更改為0.

再一次,按照下圖接線。
pYYBAGPy0CyAfJeHAAJmU0BBbrw031.png

瞬時開關(guān)需要消除抖動。這在一定程度上取決于您的所處環(huán)境:如果電源放在一個經(jīng)常振動的辦公桌上,那么需要的就不僅僅是手持式浮動電池供電單元。嘗試將變量“debounceDelay”設(shè)置為40-50ms。我們連接引腳D6 -> 按鈕 -> 5V,但在D6附近需要一個下拉電阻,像這樣:D6 -> 10kOhm -> GND。

將手持單元作為通用車庫開啟器(雖然它的功能更加強大)。如果使用Arduino Nano,您選擇的電池組可以很方便地作為USB移動電源。

如果您使用了Arduino Pro Mini 3V3(atmega168),那么可以使用TP4056(+DW01)電池模塊和3.7V鋰電池。如此一來就不需要用電平轉(zhuǎn)換器了。為了延長電池壽命,最好將Arduino睡眠模式設(shè)置為“LEEP_MODE_PWR_DOWN”。這取決于您。

當(dāng)按下按鈕并且去抖延遲已經(jīng)確認了按鈕在非抖動影響下確實被按下時,它將繼續(xù)通過CC1101無線電發(fā)送“magic_token”變量的內(nèi)容。

如果您的基站處在范圍內(nèi),并已通電,它將捕獲傳輸信息,并執(zhí)行“OPEN”/“CLOSE”操作。

最后,您的桌面上會有這些東西。

pYYBAGPy0DCAcbqXAAIgLcxaTSA454.jpg

不要感到絕望,縮短跳線或者將面包板分開會看起來好很多。但重點是測試其是否有效,以及效果是否非常好。

當(dāng)然,范圍測試是使用一大串電線、手上的Arduino和CC1101以及由3V3導(dǎo)軌降壓的USB電池組供電來完成的,閃爍兩次,確認收到了“PING!”。

請記住,這兩個版本可以用作模板來通過無線電控制任何類型的電子設(shè)備——它不僅限于操作車庫門。如果您需要一種簡單的方法來發(fā)送遙測數(shù)據(jù)而不會弄亂您的Raspbian裝置,則可以在任一端使用其他硬件,如Raspberry Pis。該程序易于使用到任何類型的應(yīng)用中。

現(xiàn)在去界面操作吧!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8689

    瀏覽量

    151678
  • 無線電
    +關(guān)注

    關(guān)注

    60

    文章

    2148

    瀏覽量

    116717
  • 無線電波
    +關(guān)注

    關(guān)注

    2

    文章

    257

    瀏覽量

    25726
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187588
收藏 人收藏

    評論

    相關(guān)推薦

    RF前端數(shù)字無線電接收芯片STA001相關(guān)資料下載

    概述:STA001是意法半導(dǎo)體公司生產(chǎn)的一款RF前端數(shù)字無線電接收芯片。它運用高速雙極性技術(shù)HSB2(High Speed Bipolar Technology)設(shè)計制造,主要用于數(shù)字衛(wèi)星無線電接收器。
    發(fā)表于 05-17 07:16

    TEA5757TEA5759自調(diào)諧無線電接收器STR相關(guān)資料推薦

    TEA5757;TEA5759為44腳AM/FM集成立體聲無線電接收電路,應(yīng)用新的調(diào)諧方式。無線電部分以TEA5712為基礎(chǔ)。它具有調(diào)諧質(zhì)量優(yōu)良,無需IF-計數(shù)據(jù)便可實現(xiàn)停止檢測;對陶瓷濾波
    發(fā)表于 05-24 07:31

    求推薦軟件定義無線電接收板卡,除ettus USRP系列的,最好是國產(chǎn)的

    求推薦軟件定義無線電接收板卡,除ettus USRP系列的,最好是國產(chǎn)的
    發(fā)表于 01-31 14:19

    FPGA在軟件無線電接收機實現(xiàn)數(shù)字定時恢復(fù)

    FPGA在軟件無線電接收機實現(xiàn)數(shù)字定時恢復(fù):
    發(fā)表于 07-27 17:56 ?39次下載
    FPGA在軟件<b class='flag-5'>無線電接</b>收機實現(xiàn)數(shù)字定時恢復(fù)

    地面無線電接力系統(tǒng)所用設(shè)備的測量方法第一部分分系統(tǒng)和仿真無線

    地面無線電接力系統(tǒng)所用設(shè)備的測量方法第一部分分系統(tǒng)和仿真無線電接力系統(tǒng)通用的測量 第二節(jié)射頻范圍的測量 本標準規(guī)定了有關(guān)地面無線電接力系統(tǒng)中分系統(tǒng)和仿真無
    發(fā)表于 10-05 11:48 ?10次下載

    軟件無線電接收機的多速率處理技術(shù)研究

    軟件無線電接收機是基于一個通用可編程硬件平臺,通過軟件來實現(xiàn)各種通信標準。隨著數(shù)字處理技術(shù)不斷進步,理想軟件無線電的最終實現(xiàn)成為可能。本文對軟件無線電中的關(guān)鍵
    發(fā)表于 07-31 10:49 ?15次下載

    簡易無線電接收器電路

    電子發(fā)燒友網(wǎng)為大家提供了簡易無線電接收器電路,本站還有其他無線電接收器相關(guān)資料。
    發(fā)表于 12-09 11:17 ?1.2w次閱讀
    簡易<b class='flag-5'>無線電接收器</b>電路

    科學(xué)家研制出的全新無線電接收器DESHIMA

    多國科學(xué)家共同研制了一種獨創(chuàng)的無線電接收器DESHIMA(深光譜高紅移繪圖儀),并成功地用無線電接收器DESHIMA獲得了第一批光譜和圖像。
    發(fā)表于 08-20 16:46 ?958次閱讀

    軟件無線電接收機

    軟件無線電接收機的基礎(chǔ)知識講解。
    發(fā)表于 04-20 16:29 ?25次下載

    愛華無線電接收器FR-C90維修手冊

    愛華無線電接收器FR-C90維修手冊
    發(fā)表于 05-27 09:33 ?1次下載
    愛華<b class='flag-5'>無線電接收器</b>FR-C90維修手冊

    基于si4732芯片無線電接收器

    電子發(fā)燒友網(wǎng)站提供《基于si4732芯片無線電接收器.zip》資料免費下載
    發(fā)表于 08-04 09:21 ?24次下載
    基于si4732芯片<b class='flag-5'>無線電接收器</b>

    軟件無線電接收器的結(jié)構(gòu)

    常規(guī)的外差式無線電接收器已經(jīng)使用了近一個世紀,如圖所示。我們再次回顧一下模擬接收的結(jié)構(gòu),以便于和數(shù)字接收進行比較。
    的頭像 發(fā)表于 08-04 09:04 ?2460次閱讀

    有源FM/AM/SW無線電接收天線電路

    這是一款有源FM/AM/SW無線電接收天線,可用于FM無線電接收器、AM無線電接收器和SW(短波)無線電接收器。
    發(fā)表于 08-06 15:56 ?5225次閱讀
    有源FM/AM/SW<b class='flag-5'>無線電接</b>收天線電路

    14位ADC SC1254在無線電接收機的應(yīng)用

    無線電接收機是用于接收無線電信號的通信設(shè)備。由于來自于空間的電磁波已經(jīng)很微弱,且夾雜著大量的干擾與噪聲,因此無線電接收機必須具有放大信號、選擇信號、排除干擾以及對信號進行解調(diào)的能力。
    的頭像 發(fā)表于 07-13 09:08 ?914次閱讀
    14位ADC SC1254在<b class='flag-5'>無線電接</b>收機的應(yīng)用

    無線電接收設(shè)備中常用的高頻電路有哪些

    無線電接收設(shè)備是利用無線電波進行信息傳輸和接收的設(shè)備,它們在通信、廣播、雷達、導(dǎo)航等領(lǐng)域有著廣泛的應(yīng)用。高頻電路是無線電接收設(shè)備中的關(guān)鍵組成部分,它們負責(zé)處理高頻信號,包括信號的接收、放大、濾波
    的頭像 發(fā)表于 09-07 10:11 ?892次閱讀
    主站蜘蛛池模板: 欧美白妞大战非洲大炮| 99热这里只有精品6| 精品国产乱码久久久久久人妻| 亚洲欧美激情精品一区二区| 久久中文字幕人妻AV熟女| Zoofilivideo人馿交| 亚洲1卡二卡3卡4卡新区在线| 久久香蕉国产免费天天| xiah俊秀| 亚洲精品m在线观看| 免费在线视频a| 国产剧果冻传媒星空在线观看| 伊伊人成亚洲综合人网| 日本免费一区二区三区四区五六区| 好爽别插了无码视频| WWW国产无套内射久久| 亚洲日本欧美天堂在线| 欧美成人momandson| 国产亚洲精品久久久久久一区二区 | 97一期涩涩97片久久久久久久| 日本免费一本天堂在线| 久久亚洲免费视频| 国产噜噜噜精品免费| 99久久精品免费国产一区二区三区| 午夜影院一区二区三区| 女人夜夜春| 久久精品AV一区二区无码| 国产成人综合在线观看网站| 91热久久免费精品99| 亚洲欧美精品无码一区二在线| 人淫阁| 蜜桃麻豆WWW久久囤产精品免费| 国产一区二区三区四区五在线观看| xxx日本hd| 69SEX久久精品国产麻豆| 亚洲欧洲免费三级网站| 视频网站入口在线看| 亲伦在线观看| 免费看成人毛片| 久久视频这里只精品99re8久| 国产在线观看免费|