Skip to content

Commit 6148259

Browse files
committed
Big update
1 parent 009a892 commit 6148259

File tree

160 files changed

+4359
-144
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+4359
-144
lines changed

docs/examples/02-Button LED.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
> - ESP32-DevKitC
99
> - MicroPython API
1010
> - ESP32-DevKitC
11-
> - STM32Cube(待补充)
11+
> - STM32Cube
1212
1313
# Arduino API
1414

@@ -359,3 +359,40 @@ def main():
359359
# 调用主函数开始执行
360360
main()
361361
```
362+
363+
# STM32Cube
364+
365+
- 新建工程(参考 LED Blinking)
366+
- 配置引脚
367+
368+
![image-20241204214437378](../images/image-20241204214437378.png)
369+
370+
- 编写代码
371+
- 按下时,切换
372+
- 每次按下,切换
373+
374+
375+
```cpp
376+
HAL_GPIO_ReadPin(GPIOB,B_KEY_Pin); // == below
377+
HAL_GPIO_ReadPin(B_KEY_GPIO_Port,B_KEY_Pin); // Reading GPIO_B 12, HIGH or LOW;
378+
// GPIO_PIN_SET = 1 / GPIO_PIN_RESET = 0
379+
if(HAL_GPIO_ReadPin(B_KEY_GPIO_Port,B_KEY_Pin) == GPIO_PIN_RESET){
380+
HAL_GPIO_WritePin(C_LED_GPIO_Port, C_LED_Pin, GPIO_PIN_SET);
381+
}
382+
else{
383+
HAL_GPIO_WritePin(C_LED_GPIO_Port, C_LED_Pin, GPIO_PIN_RESET);
384+
}
385+
```
386+
387+
```cpp
388+
// Toggles on and off each time the button is pressed
389+
390+
if(HAL_GPIO_ReadPin(GPIOB, B_KEY_Pin)==GPIO_PIN_RESET){
391+
HAL_Delay(10); // Keystroke elimination
392+
if (HAL_GPIO_ReadPin(GPIOB, B_KEY_Pin)==GPIO_PIN_RESET){
393+
HAL_GPIO_TogglePin(GPIOC, C_LED_Pin); // Toggle High-Low Level
394+
while(HAL_GPIO_ReadPin(GPIOB, B_KEY_Pin)==GPIO_PIN_RESET){} // Keystroke elimination
395+
}
396+
}
397+
```
398+

docs/examples/13-48 Stepper motor.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 48 Stepper motor.md
1+
# 48 Stepper motor
22

33
###### 目录
44

docs/examples/ESP32-UDP-LED.md

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# ESP32-UDP-LED
2+
3+
# Arduino API
4+
5+
## ESP32-DevKitC
6+
7+
```arduino
8+
9+
```
10+
11+
# MicroPython API
12+
13+
## ESP32-DevKitC
14+
15+
```python
16+
"""
17+
ESP32 UDP 控制 LED
18+
19+
此代码演示了如何使用 MicroPython 将 ESP32 连接到指定的 Wi-Fi 网络,并通过 UDP 协议接收网络数据来控制连接到 GPIO2 引脚的 LED 的开关状态。
20+
21+
电路连接:
22+
- LED 阳极(较长的一脚)连接到 GPIO2。
23+
- LED 阴极(较短的一脚)通过一个 330Ω 电阻连接到 GND。
24+
25+
电路图:
26+
ESP32 LED
27+
--------- -----
28+
| | | |
29+
| 2 |----|>|---+---- GND
30+
| | (Anode) (Cathode)
31+
| | (通过 330Ω 电阻)
32+
| |
33+
| |
34+
35+
创建于 2024
36+
作者:Liang
37+
"""
38+
39+
import socket
40+
import time
41+
import network
42+
import machine
43+
44+
# 配置 Wi-Fi SSID 和密码
45+
WIFI_SSID = "Wokwi-GUEST"
46+
WIFI_PASSWORD = ""
47+
48+
# 初始化 LED 引脚
49+
led = None
50+
51+
def do_connect():
52+
"""
53+
连接到指定的 Wi-Fi 网络。
54+
55+
返回:
56+
bool: 如果连接成功返回 True,否则返回 False。
57+
"""
58+
wlan = network.WLAN(network.STA_IF)
59+
wlan.active(True)
60+
if not wlan.isconnected():
61+
print('正在连接到网络...')
62+
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
63+
i = 1
64+
while not wlan.isconnected():
65+
print("正在链接...{}".format(i))
66+
i += 1
67+
time.sleep(1)
68+
print('网络配置:', wlan.ifconfig())
69+
return True
70+
71+
def start_udp():
72+
"""
73+
启动 UDP 服务并绑定端口。
74+
75+
返回:
76+
socket: 创建并绑定的 UDP 套接字。
77+
"""
78+
# 创建 UDP 套接字
79+
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
80+
# 绑定本地信息
81+
udp_socket.bind(("0.0.0.0", 7788))
82+
print("UDP 服务器已启动,监听端口 7788")
83+
return udp_socket
84+
85+
def handle_data(data, sender_info):
86+
"""
87+
处理接收到的数据并控制 LED。
88+
89+
参数:
90+
data (str): 接收到的数据字符串。
91+
sender_info (tuple): 发送者的地址和端口。
92+
"""
93+
global led
94+
print("{} 发送: {}".format(sender_info, data))
95+
96+
if data == "light on":
97+
print("灯亮...")
98+
led.value(1)
99+
elif data == "light off":
100+
print("灯灭...")
101+
led.value(0)
102+
else:
103+
print("无效命令")
104+
105+
def main():
106+
"""
107+
主函数,连接到 Wi-Fi 并启动 UDP 服务,接收并处理数据。
108+
"""
109+
global led
110+
111+
# 1. 连接到 Wi-Fi
112+
if not do_connect():
113+
print("无法连接到 Wi-Fi 网络,请检查 SSID 和密码。")
114+
return
115+
116+
# 2. 创建 UDP 服务
117+
udp_socket = start_udp()
118+
119+
# 3. 初始化 LED 引脚
120+
led = machine.Pin(2, machine.Pin.OUT)
121+
led.value(0) # 初始关闭 LED
122+
123+
# 4. 接收并处理网络数据
124+
while True:
125+
try:
126+
recv_data, sender_info = udp_socket.recvfrom(1024)
127+
recv_data_str = recv_data.decode("utf-8")
128+
handle_data(recv_data_str, sender_info)
129+
except Exception as e:
130+
print("发生错误:", e)
131+
132+
if __name__ == "__main__":
133+
main()
134+
```
135+
136+
# ESP-IDF API
137+
138+
## ESP32-DevKitC
139+
140+
```c
141+
142+
```

docs/examples/ESP32-连接 Wi-Fi.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# ESP32-连接 Wi-Fi
2+
3+
# Arduino API
4+
5+
## ESP32-DevKitC
6+
7+
```arduino
8+
9+
```
10+
11+
# MicroPython API
12+
13+
## ESP32-DevKitC
14+
15+
```python
16+
"""
17+
ESP32 Wi-Fi Connection
18+
19+
此代码演示了如何使用 MicroPython 将 ESP32 连接到指定的 Wi-Fi 网络。
20+
21+
创建于 2024
22+
作者:Liang
23+
"""
24+
25+
import network
26+
import time
27+
28+
# 配置 Wi-Fi SSID 和密码
29+
WIFI_SSID = "your_wifi_ssid"
30+
WIFI_PASSWORD = "your_wifi_password"
31+
32+
# 初始化 Wi-Fi 接口
33+
wlan = network.WLAN(network.STA_IF)
34+
35+
def connect_to_wifi():
36+
"""
37+
连接到指定的 Wi-Fi 网络。
38+
39+
返回:
40+
bool: 如果连接成功返回 True,否则返回 False。
41+
"""
42+
# 激活接口
43+
wlan.active(True)
44+
# 连接到 Wi-Fi 网络
45+
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
46+
47+
# 等待连接
48+
timeout = 10 # 设置超时时间(秒)
49+
start_time = time.time()
50+
while not wlan.isconnected() and (time.time() - start_time) < timeout:
51+
print("正在连接到 Wi-Fi...")
52+
time.sleep(1)
53+
54+
if wlan.isconnected():
55+
print("Wi-Fi 连接成功!")
56+
print("网络配置:", wlan.ifconfig())
57+
return True
58+
else:
59+
print("Wi-Fi 连接失败!")
60+
return False
61+
62+
def main():
63+
"""
64+
主函数,尝试连接到 Wi-Fi 并处理结果。
65+
"""
66+
if connect_to_wifi():
67+
print("已成功连接到 Wi-Fi 网络。")
68+
else:
69+
print("无法连接到 Wi-Fi 网络,请检查 SSID 和密码。")
70+
71+
# 调用主函数开始执行
72+
main()
73+
```
74+
75+
# ESP-IDF API
76+
77+
## ESP32-DevKitC
78+
79+
```c
80+
81+
```
82+
83+
# 原理
84+
85+
# **1. 设置工作模式**
86+
87+
`Wi-Fi`是基于`IEEE 802.11`标准的无线网络技术 让联网设备以无线电波的形式,加入采用`TCP/IP`通信协议的网络
88+
89+
`Wi-Fi`网络环境通常有两种设备
90+
91+
- Access Point(`AP`) 无线接入点,提供无线接入的设备,家里的光猫就是结合WiFi和internet路由功能的AP。AP和AP可以相互连接。
92+
- Station(`STA`) 无线终端,连接到AP的装置,手机,电脑等需要联网的设备都是出于STA模式,这个模式不允许其他设备接入
93+
94+
# **3. SSID**
95+
96+
**BSSID**就是无线路由器的MAC地址(本质是**一个MAC地址**
97+
98+
**SSID**就是手机上搜索到的wifi名字(本质是**一串字符**
99+
100+
**ESSID**是一个比较抽象的概念,它实际上就和ssid相同(本质也是**一串字符**)。如果有好几个无线路由器都叫这个名字,那么我们就相当于把这个ssid**扩大**了,所以这几个无线路由器共同的这个名字就叫ESSID
101+
102+
打个比方:
103+
104+
- SSID就好比是每个连锁店的门口**招牌**上写的字(例如:阿迪达斯)
105+
- ESSID就是连锁店的牌子(例如:阿迪达斯)
106+
- BSSID就是每个连锁店的地址(比如万达广场店,襄阳路店)
107+
108+
连锁店的品牌名与写到招牌上的名就相当于ESSID和SSID
109+
110+
- 当前的`ESP32`不支持`5G`路由器,所以链接的时候要注意这一点,否则连不上
111+
- 可以将自己的手机开热点让`ESP32`链接

0 commit comments

Comments
 (0)