欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 树莓派反向代理实验及树莓派IO口实验

树莓派反向代理实验及树莓派IO口实验

2025/6/20 6:51:40 来源:https://blog.csdn.net/2301_76358249/article/details/148773225  浏览:    关键词:树莓派反向代理实验及树莓派IO口实验

1.树莓派反向代理

阿里云配置

  1. 确保云服务器已开启SSH服务(默认端口22)。
  2. 配置安全组端口

    • 进入ECS控制台 → 安全组 → 配置规则

    • 添加一条 ‌入方向规则‌:

      • 协议类型:TCP

      • 端口范围:10022(或其他自定义端口)

      • 授权对象:0.0.0.0/0

树莓派配置

1.ssh -p 22 -qngfNTR [你的端口号]:localhost:22 阿里云用户名@114.55.126.1252.ssh -p [你绑定的端口号] [树莓派用户]@云服务器地址

2.pwm波输出呼吸灯

代码如下

import RPi.GPIO as GPIO
import time# 设置编码方式
GPIO.setmode(GPIO.BOARD)# 设置引脚
OUT1 = 11
OUT2 = 16
GPIO.setup(OUT1, GPIO.OUT)
GPIO.setup(OUT2, GPIO.OUT)# 实例化PWM
pwm1 = GPIO.PWM(OUT1, 60)
pwm2 = GPIO.PWM(OUT2, 60)# 开启PWM
pwm1.start(0)
pwm2.start(0)for _ in range(3):# 黄灯呼吸for dc in range(0, 101, 5):pwm1.ChangeDutyCycle(dc)time.sleep(0.1)for dc in range(100, -1, -5):pwm1.ChangeDutyCycle(dc)time.sleep(0.1)# 绿灯呼吸for dc in range(0, 101, 5):pwm2.ChangeDutyCycle(dc)time.sleep(0.1)for dc in range(100, -1, -5):pwm2.ChangeDutyCycle(dc)time.sleep(0.1)
else:pwm1.stop()pwm2.stop()GPIO.cleanup()

这段代码实现了树莓派上两个LED灯的呼吸灯效果(渐亮渐灭交替变化),以下是关键点解析:

  1. 硬件配置‌:
  • 使用物理引脚编号模式(GPIO.BOARD)
  • 控制11号(GPIO17)和16号(GPIO23)引脚
  • 需外接两个LED,分别串联220Ω电阻接到对应引脚
  1. PWM控制‌:
  • 创建两个PWM实例,频率设为60Hz
  • pwm.start(0)初始化时占空比为0%(灯全灭)
  1. 呼吸效果实现‌:
  • 外层循环执行3次完整流程
  • 黄灯控制(OUT1):
    • 渐亮:占空比从0%→100%(每次+5%,间隔0.1秒)
    • 渐灭:占空比从100%→0%(每次-5%,间隔0.1秒)
  • 绿灯控制(OUT2)执行相同流程
  1. 退出处理‌:
  • else块确保循环结束后释放GPIO资源
  • pwm.stop()停止PWM输出
  • GPIO.cleanup()重置引脚状态

3.超声波测距

#导入 GPIO库
import RPi.GPIO as GPIO
import time#设置 GPIO 模式为 BCM
GPIO.setmode(GPIO.BCM)#定义 GPIO 引脚
GPIO_TRIGGER = 23
GPIO_ECHO = 24#设置 GPIO 的工作方式 (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)def distance():# 发送高电平信号到 Trig 引脚GPIO.output(GPIO_TRIGGER, True)# 持续 10 us time.sleep(0.00001)GPIO.output(GPIO_TRIGGER, False)start_time = time.time()stop_time = time.time()# 记录发送超声波的时刻1while GPIO.input(GPIO_ECHO) == 0:start_time = time.time()# 记录接收到返回超声波的时刻2while GPIO.input(GPIO_ECHO) == 1:stop_time = time.time()# 计算超声波的往返时间 = 时刻2 - 时刻1time_elapsed = stop_time - start_time# 声波的速度为 343m/s, 转化为 34300cm/s。distance = (time_elapsed * 34300) / 2return distanceif __name__ == '__main__':try:while True:dist = distance()print("Measured Distance = {:.2f} cm".format(dist))time.sleep(1)# Reset by pressing CTRL + Cexcept KeyboardInterrupt:print("Measurement stopped by User")GPIO.cleanup()

这段代码实现了树莓派通过超声波模块(HC-SR04)测距的功能,以下是核心原理和实现逻辑的解析:

  1. 硬件连接‌:
  • 使用BCM编号模式(GPIO.BCM)
  • TRIG引脚(GPIO23)用于发射超声波脉冲
  • ECHO引脚(GPIO24)用于接收回波信号
  • 需按HC-SR04模块说明连接VCC/GND
  1. 测距流程‌:
  • 触发阶段:TRIG引脚输出10μs高电平脉冲(代码通过time.sleep(0.00001)实现)
  • 回波检测:
    • 记录ECHO从低电平跳变到高电平的时刻(超声波发射瞬间)
    • 记录ECHO从高电平跳变回低电平的时刻(回波接收瞬间)
  • 时差计算:stop_time - start_time得到声波往返时间
  1. 距离计算‌:
  • 声速按343m/s(34300cm/s)计算
  • 实际距离= (时差×声速)/2 (除以2因为时间是往返时间)
  1. 运行控制‌:
  • 主循环每秒测量一次距离并打印
  • 通过KeyboardInterrupt捕获Ctrl+C信号安全退出
  • GPIO.cleanup()确保退出时释放GPIO资源

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词