山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2020年2月29日

[Arduino][ESP32][ESP8266] ESP32/ESP8266 support WiFi-Direct?


ESP32/ESP8266 support WiFi-Direct?


緣起
在深入了解 ESP8266支援的WIFI-STA, WIFI-AP 模式時,突然有個念想…
Support “WIFI-Direct” ?
於是乎就這樣開啟”柯南”模式…


線索 一:
以下是 ESPRESSIF Forum 的討論串 (https://www.esp32.com/viewtopic.php?t=6631#p28559)
以下有人這樣回覆
從這段的回答看起ESP32是支援WiFi-Direct的
接著,又有下面的兩個回覆
從以上的討論可以看出 ESP32/ESP8266是不支援WiFi-Direct 的


線索
以下是WIKIPEDIA 的WiFi-Direct 的資訊
在線索一,有人(Franco) 這樣說:
WiFi-Direct 就是 STA+AP coexistence mode 的結合,esp_wifi_set_mode()設成 WIFI_MODE_APSTA 就可實現WiFi-Direct了
在對照 WIKI的這段敘述
Wi-Fi Direct is Single radio hop communication, not multi-hop wireless communication
所以,WiFi-Direct 絕不是 “就是 STA+AP coexistence mode 的結合,esp_wifi_set_mode()設成 WIFI_MODE_APSTA 就可實現WiFi-Direct”


結論:
從上面的兩項線索,ESP32/ESP8266是不支援 “完整的”WiFi-Direct ,但是,你若只是要做到peer -to-peer 的傳輸,你可以參考以下的連接。
這連接的實作就是利用STA+AP mode完成了peer -to-peer 的傳輸。


感謝閱讀,文章若對你有幫助,請點個讚,謝謝!
延伸閱讀:

2020年2月23日

[咖啡烘焙] 烘到深深焙!


機器入手後的頭兩次烘培,烘培的時間都小於"10分鐘",
是因為烘培克數只有100克? 還是有其他的原因?

還在網路上探究原因時,我已經手癢想再次烘豆了,
於是就採取Try & Error的方式來探究原因...

咖啡豆:一樣是 "巴西-喜朵拉18"
重量:100克
手法 : 為增長烘培時間,以4 安培火力慢慢加溫
結果如何 ? 請看下面影片




2020年2月13日

2020年2月7日

L298N 模組教學




L298N 模組教學 

Rototics 系列


By Sam | Arduino | 2020/02/05

L298N 模組硬體簡介

L298N 模組主要的元件當然就是L298 Dual H-Bridge Motor Driver這顆驅動IC,然後再搭配+5V LDO 以及周邊的被動元件所組成。

L298N 模組的基本參數

  • 驅動電壓 :5V ~ 35V
  • 驅動電流 ( Peak Current ):2A
  • Standard TTL Logic Level
  • 工作溫度:-20 ~ 135 degree C
  • 最大功率:25W

L298N 模組的線路圖

PS: Above schematic is from www.handsontec.com

L298 dual H-bridge motor drive IC 方塊圖

將圖對切成兩半就可明顯看出這顆IC 是兩組 H-Bridge 的Motor Control Integrated IC
PS: Above block diagram is from STMicroelectronics L298 data sheet

L298N 模組腳位功能簡介

Vin:輸入電壓 (5V ~ 35V)
5Vout :5V LDO 輸出,可提供 +5V 的輸出
Channel A
OUT1, OUT2 作為連接 DC 馬達兩端
IN1, IN2 的High/ Low 準位做為 DC 馬達正反轉或停止

IN1 HIGH
IN1 LOW
IN2 HIGH
STOP
Reverse
IN2 LOW
Forward
STOP
Channel B提供相同於 Channel A的功能
Channel A Enable
Channel A的致能腳位, 除了單純的HIGH / LOW 準位可決定連接在Channel A 上的DC 馬達是否運轉外, 若連接PWM的訊號更可控制馬達的轉速
Channel B Enable 提供相同於 Channel A Enable的功能

L298N 實作線路圖

在這個實作中,使用
  • 控制板是Arduino UNO :
Digital pin 7, 8, 10, 9 對接 L298N IN1, IN2, IN3, IN4
Analog pin A0 連接可變電阻中間接點以獲取可變電阻轉動後的變化電壓值
Digital pin 5, 6 ( 有 PWM 功能) 則連接 L298N 的 Channel A, B enable pins
(PS: 在這實作中,先預留兩支 有PWM功能的腳位,以便未來兩顆馬達有在同一時間點有不同轉速的需求;也就是說,這次的實作,兩顆馬達的轉速是相同的)
  • L298N 模組:
OUT1, OUT2 及 OUT3, OUT4 各連接1顆 DC Motor
  • 2顆 DC Motor
  • 1顆 可變電阻:可變電阻接在+5V後,透過分壓以及類比轉換來產生不同duty cycle PWM的信號進而達到控制馬達轉速

程式實作

完整的程式碼可至GitHub 取得 https://github.com/Sam3258/L298N-UNO
程式以下面幾個區塊來說明,首先是

Initial / Setup :

1 ~ 7 行 :將 UNO digital pins 定義可讀性的symbol
9 ~12 行:宣告變數;bLED_state 是紀錄LED的狀態, 讓LED在每次進入loop()就改變狀態, 已顯示程式還在繼續運轉中;sensorValue, voltage, weight 是作為可變電阻上電壓轉換成PWM用的過渡變數
15 ~ 29行:設定腳位屬性及初始狀態
31 ~ 35行:設定Serial port 並列印

設定PWM Duty cycle (馬達轉速) :

第2行:從Analog A0 腳位上讀取可變電阻上 的ADC值(0~1023)
第4行:將ADC轉換成類比電壓,然後在8~9行列印出
第6行:將ADC轉換成對應PWM duty cycle(255 vs 1023)儲存在weight變數,並在10~11行列印出
13~14行:則是設定pin5, 6 的PWM值,也就是馬達的轉速

讀取Serial port 傳送過來的字元來決定馬達正反轉或停止

1~10行:從serial port讀取字元
11~18行 : 若字元為 F或 f  則馬達正轉
19~26行 : 若字元為 R或 r  則馬達反轉
27~34行 : 若字元為 H或 h  則馬達停止

延伸閱讀


2020年2月4日

[Arduino] Output path of Arduino VS Code Extension


有在使用Visual Studio Code (VSCode) 編譯Arduino 專案?
有注意到你在執行 Arduino:Verify command 時的輸出訊息?有下面的警告訊息?

[Warning] Output path is not specified. Unable to reuse previously compiled files. Verify could be slow.

若你有和我一樣的警告訊息,代表你沒有指定Arduino VSCode Extension 的 output directory.

解決方法:
請在 arduino.json setting file 裡,再加上底下這行

"output": "./ArduinoOutput"

"./ArduinoOutput"  這路徑你可以自己再更改。以下提供兩種選擇 (非只有這兩種喔!)

"./ArduinoOutput"  這設定是在個專案資料夾下再建立一個 ArduinoOutput 資料夾,這做法的
優點是保留bin, elf 檔以及一些過渡的輸出檔案。
缺點是占用硬碟空間。

"../ArduinoOutput" 而這個設定,是所有專案都共用一個 ArduinoOutput 資料夾,這做法的
優點是節省硬碟空間 (只保留原始碼);若你不會同時編譯兩個以上的Arduino專案,可以試試這種設定,畢竟過渡的輸出檔案,沒有必要在每一個專案都建立一個ArduinoOutput 資料夾,所以ArduinoOutput 資料夾就放在和所有的Arduino 的專案同一層。
缺點是在交互編譯兩個專案時,前一個專案的輸出檔案就會被刪除




熱門文章