當前位置首頁 > 新聞資訊  > 支持中心 返回

      通過RasPi 實現 PWM 控制

      來源:馬普科技(福州)有限公司  |  發布時間:2023年08月30日

      來自 RasPi 的 PWM 控制

      使用 Raspberry Pi 計算機控制 Survey3 的 Python 腳本

      使用我們的HDMI PWM 觸發電纜,您可以將 PWM 命令發送到 Survey3 相機以執行一些操作。

      樹莓派設置

      將 HDMI 電纜連接到相機,將單伺服連接器連接到 RasPi GPIO 接頭上相應的 GPIO 引腳,如下所示:

      RASPI 上 GPIO 接頭的引腳圖

      對于下面的代碼示例,我們將白色信號連接器連接到引腳 12 (GPIO18),將黑色接地連接器連接到引腳 14。

      我們還將隨附的 Survey3 USB 電纜連接到 RasPi USB 端口之一。如果您不需要安裝/卸載 SD 卡或使用 USB 為相機供電,則可以將其保持斷開狀態。


      如果 RasPi 無法啟動且 USB 電纜已連接,則可能需要太多電流來為內部相機電池充電。我們建議將相機電池取出,然后當 USB 線通電啟動時,它會自動打開相機。

      所需的 PWM 信號需要始終發送“什么都不做”脈沖寬度。然后,僅當我們想要執行特定命令時才更改脈沖寬度。它只需要一個寬度較長的脈沖來執行每個命令。

      脈寬調制指令:

      • 1000us:什么都不做

      • 1500us:安裝/卸載 uSD 存儲卡(在 Survey3 相機內)

      • 2000us:觸發拍照

      發送一次 1500us 命令以卸載(在軟件中)相機內的 uSD 存儲卡,然后安裝到連接的 USB 計算機 (RasPi),然后再次發送 1500us 以將 uSD 安裝回相機。這通常用于將捕獲的照片傳輸到 RasPi 或對圖像進行后期處理。


      當 uSD 從相機上卸下時,它無法保存新拍攝的圖像。要在安裝時查看圖像,您需要使用WIFI 連接和相應的 url 命令

      脈寬調制代碼:

      要發送 PWM 信號,您需要始終發送 1000us 的“無操作”脈沖寬度,然后當您想要執行命令時,您需要發送一個瞬時 1500us 或 2000us 寬度的脈沖。

      pin = 18  #set (BCM) GPIO pin to send GPIO.HIGH pulse


      GPIO.setmode(GPIO.BCM)

      GPIO.setup(pin, GPIO.OUT)

      time.sleep(0.001) #1000us pulse width (do nothing)

      GPIO.cleanup()


      time.sleep(0.1)


      GPIO.setmode(GPIO.BCM)

      GPIO.setup(pin, GPIO.OUT)

      GPIO.output(pin, GPIO.HIGH)

      time.sleep(0.002) #2000us pulse width

      GPIO.cleanup()

          

      time.sleep(0.1)

          

      GPIO.setmode(GPIO.BCM)

      GPIO.setup(pin, GPIO.OUT)

      time.sleep(0.001) #1000us pulse width (do nothing)

      GPIO.cleanup()


      上面的代碼將 PWM 設置為無操作 1000us,然后發送 2000us 觸發命令拍攝照片,然后返回發送無操作 1000us。最快的 2000us 命令應該是大約每 1.5 秒發送一次,因為相機無法以超過 1.5 秒的速度捕獲 JPG 圖像。對于 RAW+JPG 模式,我們建議等待時間為 2.5-3.0 秒。

      代碼可以設置為循環直到用戶退出(CTRL+Z),每 1.5 秒觸發一次捕獲命令:


      import RPi.GPIO as GPIO

      import time


      GPIO.setwarnings(False)


      pin = 18  #set (BCM) GPIO pin to send GPIO.HIGH pulse


      try:

          while True:

          

              print("Command Sent\n")        

          

              GPIO.setmode(GPIO.BCM)

              GPIO.setup(pin, GPIO.OUT)

              GPIO.output(pin, GPIO.HIGH)

              time.sleep(0.002) #2000us pulse width

              GPIO.cleanup()

          

              time.sleep(0.1)

          

              GPIO.setmode(GPIO.BCM)

              GPIO.setup(pin, GPIO.OUT)

              time.sleep(0.001) #1000us pulse width (do nothing)

              GPIO.cleanup()

          

              time.sleep(1.5) #time delay between GPIO.HIGH pulses, >1.5s recommended


      #to exit type CTRL+Z

      except KeyboardInterrupt:

          pass




      二進制

      您還可以將其設置為接受用戶鍵盤輸入:

      import RPi.GPIO as GPIO

      import time


      GPIO.setwarnings(False)


      pin = 18  #set (BCM) GPIO pin to send GPIO.HIGH pulse


      GPIO.setmode(GPIO.BCM)

      GPIO.setup(pin, GPIO.OUT)

      time.sleep(0.001)

      GPIO.cleanup()


      print("\nCommands:")

      print("t + Enter: Trigger (2000us)")

      print("s + Enter: SD Card Mount/Unmount (1500us)")

      print("e + Enter: Exit\n")


      while True:

          key = input(">")

          if key == "t":

              GPIO.setmode(GPIO.BCM)

              GPIO.setup(pin, GPIO.OUT)

              GPIO.output(pin, GPIO.HIGH)

              time.sleep(0.002)

              GPIO.cleanup()

              

              time.sleep(0.1)

              print("Trigger")        

              

              GPIO.setmode(GPIO.BCM)

              GPIO.setup(pin, GPIO.OUT)

              time.sleep(0.001)

              GPIO.cleanup()


          if key == "s":

              GPIO.setmode(GPIO.BCM)

              GPIO.setup(pin, GPIO.OUT)

              GPIO.output(pin, GPIO.HIGH)

              time.sleep(0.0015)

              GPIO.cleanup()

              

              time.sleep(0.1)

              print("SD Mount/UnMount")

              

              GPIO.setmode(GPIO.BCM)

              GPIO.setup(pin, GPIO.OUT)

              time.sleep(0.001)

              GPIO.cleanup()


          if key == "e":

              print("Exiting\n")

              break

                      

          else:        

              GPIO.setmode(GPIO.BCM)

              GPIO.setup(pin, GPIO.OUT)

              time.sleep(0.001)

              GPIO.cleanup()


      二進制

      上面的代碼允許您輸入字母“t”,然后按“Enter”鍵,它會拍照。您可以鍵入“s + Enter”,它將從相機上卸載 uSD 卡,然后 RasPi 會將其顯示為可移動驅動器。再次鍵入“s + Enter”將從 RasPi 卸載并將 uSD 安裝回相機。

      主站蜘蛛池模板: 中文japanese在线播放| 全彩调教侵犯h本子全彩网站mj| a网站在线观看| 色www视频永久免费男的天堂| 国産精品久久久久久久| 丰满少妇被猛烈进入高清播放| 精品国产一区在线观看| 国语自产偷拍精品视频偷| 久久久亚洲欧洲日产国码二区 | 护士系列sdde221取精| 亚洲人成网站看在线播放| 男女做性无遮挡免费视频| 国产东北老头老太露脸| 波多野结衣资源在线| 日产国产欧美韩国在线| 免费国产一级特黄久久| 香蕉视频在线看| 国产精品视频二区不卡| 一区二区三区日本| 日本直播在线观看www.| 亚洲国产日韩a在线播放| 色橹橹欧美在线观看视频高清| 国产精品免费精品自在线观看| videoshd泰国| 把极品白丝班长啪到腿软| 亚洲AV成人片色在线观看高潮| 精品日韩亚洲AV无码一区二区三区| 国产成人高清精品免费软件| 97久久精品一区二区三区| 性xxxxx欧美极品少妇| 久久久噜噜噜久久久午夜| 樱桃视频影院在线观看| 国产va免费精品高清在线观看| 一本一本久久a久久精品综合| 日韩一区在线视频| 亚洲人成色77777在线观看| 热99re久久免费视精品频软件| 午夜视频体验区| 色综合小说天天综合网| 国产美女无遮挡免费视频网站| 一本久道久久综合多人|