ESP32-CAM 配合 Servo 通过HomeAssistant控制,激发无限应用可能。

ESP32-CAM 配合 Servo 通过HomeAssistant控制,激发无限应用可能。



前言

这篇文章我将详细介绍ESP32-CAM及Servo接入HomeAssistant的方法、通过HomeAssistant页面直接对Servo操控的设置步骤。这一整套方案将为HomeAssistant的应用场景提供无限可能,如果我的表达够清楚,你的理解够透彻,在此方案上只需要略作修改,便能实现你们自己的想法。先放一段最近我与大伙伴使用HomeAssistant远程控制机械臂的视频(简而不陋)

HomeAssistant远程操控机械臂



一、配置Servo的控制芯片

Servo的控制芯片我用的是ESP8266 D1MINI。通过ESPHome编译,用ESPHome Flsaher烧录。
在这里插入图片描述

1.代码编辑

代码通过ESPHome编写,示例代码如下(这里默认你已经会使用ESPHome编写代码)

esphome:
  name: servos         \\自定义名称
  platform: ESP8266    \\添加设备时候选择自己的芯片平台
  board: nodemcuv2     \\选择自己的芯片型号
 
wifi:
  ssid: "GreatWill"    \\接入WIFI的名称
  password: "shuchen12345" \\接入WIFI的密码
 
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "ESPHOMESERVO"  \\自定义芯片热点名称(如果wifi没连接成功,可以通过无线设备找到该设备名称,通过芯片的网页指引芯片连入你希望连接的WiFi)
    password: "12345678"  \\热点的密码
 
captive_portal:
 
# Enable logging
logger:
 
api:                             \\API接口理解为芯片向HomeAssistant伸出的一只手,后期会通过对HomeAssistant的设置让HomeAssistant也向芯片伸手,两只手握在一起便能控制舵机了。
  services:
    - service: control_servo
      variables:
        level: float
      then:
        - servo.write:
            id: my_servo
            level: !lambda 'return level / 100.0;'
 
ota:                          \\OTA 隔空更新 第一次烧录后的芯片可以不用连接数据线,ESPHome便可向芯片更新代码。
 
output:                         \\芯片内部的电路管理 
  - platform: esp8266_pwm       
    id: pwm_output
    pin: D4                       \\这里需要根据SERVO信号线实际插在芯片哪个针脚设定。我的插在了 D4
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
控制舵机需要用到一个可以产生 PWM 信号的模块,比如 Arduino 的 PWM 输出口。舵机的控制信号是一个脉冲宽度调制(PWM)信号,其周期一般为20毫秒,脉宽在1毫秒到2毫秒之间,其中1毫秒对应的舵机转到最小位置,2毫秒对应的舵机转到最大位置,1.5毫秒对应的舵机转到中间位置。 下面是一个简单的 Arduino 代码示例,用于控制舵机的转动方向和角度。 ```C++ #include <Servo.h> Servo myservo; // create servo object to control a servo void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { myservo.write(90); // set servo position to 90 degrees delay(1000); // waits for the servo to get there myservo.write(0); // set servo position to 0 degrees delay(1000); // waits for the servo to get there myservo.write(180); // set servo position to 180 degrees delay(1000); // waits for the servo to get there } ``` 在上面的代码中,我们使用了 Arduino 的 Servo 库来控制舵机。首先,在 `setup()` 函数中,我们将舵机连接到引脚 9,并创建一个名为 `myservo` 的 Servo 对象。然后,在 `loop()` 函数中,我们使用 `myservo.write()` 函数来控制舵机的位置。这个函数的参数是一个角度值,它将舵机转动到相应的角度。 你可以根据你的实际需要修改角度值来控制舵机的转动方向和角度。注意,为了让舵机平滑地转动,我们在每次设置角度之后都延迟了 1 秒钟。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值