夏天到了!夏天来了……特别是在我的卧室里。问题是,在阳光明媚的一天后该睡觉的时候,我卧室的温度在 30°C 以上,但当我早上醒来时,却是冰冷的。解决方法:温控风扇!这个想法是有一个风扇,可以在晚上最大限度地提高空气流通,并随着温度的下降逐渐降低速度。此外,最好有一个显示当前温度和温度历史的显示器。
与其浪费宝贵的时间设置外围设备和通信,我们将在这个上选择 Toit。这为构建增加了独特的响应能力。借助 Toit 平台,开发人员可以将 ESP32 视为普通计算机,使用系统内置的 OTA 功能并行安装多个应用程序。由于 Toit 使用高级语言,因此可以轻松测试功能和应用程序,而 Toit 平台可确保设备无论如何都能正常运行。
首先,您需要获得一个 Toit 帐户并使用 Toit 配置您的 ESP32:在toit.io上单击“立即开始”获得一个免费的 Toit 帐户。
登录后,转到文档并按照快速入门指南在您的计算机上安装 Toit
请注意,您可以使用 Web 用户界面轻松配置 ESP32
注意:配置 ESP32 后,它会上线并且不需要连接到您的计算机,除非您想通过 USB 为其供电。所有通信都通过 Toit 云进行。
现在你已经准备好连接一些硬件了!
在下面,您将看到所有连接的 Fritzing 电路。请注意,L298H 板上的 5VEN 跳线应闭合。这意味着该板将由 6V 电池组供电。另外,在直流电机的端子之间加一个 0.1 uF 的电容。这减少了由电机引起的电噪声。
使用了以下 ESP32 GPIO 引脚:
L298H 上的 IN1(输入 1)和 IN2(输入 2)控制电机旋转方向如下:
ENA(启用)启动和停止电机。如果将 PWM 信号应用于此输入,则电机以相应的速度旋转。请注意,如果 PWM 设置得非常低,电机将不会启动,并且您可能会听到它发出滴答声,因为输入电机的功率不足以使其旋转。对于此设置,PWM > 0.16 足以启动发动机。
BME280 传感器和 ESP32 通过 I2C 进行通信,由于 Toit 为该传感器提供了驱动程序,因此使用它非常简单:只需将其连接到相应的 GPIO 即可。OLED 显示屏也是如此:只需将 SDA 和 CLK 连接到相应的 GPIO,就可以了。但是,市面上有大量基于 SSD1306 的 OLED 显示器,它们可能有不同的功率要求。此构建中使用的电路板需要 5V 至 Vin。3.3V 是不够的。在此处阅读更多信息:https ://learn.adafruit.com/monochrome-oled-breakouts/power-requirements
首先,我们需要安装 OLED 显示屏和 BME280 传感器所需的软件包。在命令提示符下,在 Toit 代码所在的文件夹中,运行以下命令:
$ toit pkg init --app
$ toit pkg install pixel_display
$ toit pkg install ssd1306
这个项目的实际代码相对简单。整个代码可在GitHub 上获得。以下摘录用于说明具体功能。
BME280 传感器和 OLED 显示器共享相同的 I2C 总线,分别使用两个不同的地址:0x77 和 0x3d。请注意,您的硬件可能使用不同的地址,如果是这样,则必须相应地更改代码。
scl := gpio.Pin 22
sda := gpio.Pin 21
bus := i2c.Bus
--sda=sda
--scl=scl
oled := SSD1306 (bus.device 0x3d)
thp_device := bus.device 0x77
用于风扇速度控制的引脚 (GPIO 19) 必须设置为 PWM:
pwm := gpio.Pwm
--frequency=50
chan1 := pwm.start
gpio.Pin 19
此外,控制风扇方向的引脚(GPIO 16 和 17)应设置为输出引脚:
//set up fan direction control pins
in1 := gpio.Pin.out 16
in2 := gpio.Pin.out 17
//Set direction of fan
in1.set 0
in2.set 1
为了实现可变风扇速度,我们将合适的温度区间(例如 25°C 到 30°C)映射到 PWM 占空比区间 [0.0...1.0]:
input_start := 25.0
input_end := 30.0
output_start := 0.0
output_end := 1.0
df = (temp - input_start) / (input_end - input_start) * (output_end - output_start) + output_start
此外,为了获得一个漂亮的温度历史直方图,我们将合适的温度区间 [20...35] 映射到某个直方图高度,然后将温度读数添加到直方图:
//Mapping of temp to histogram range
histo_input_start := 20.0
histo_input_end := 35.0
histo_output_start := 5.0
histo_output_end := 50.0
histo_data = (temp - histo_input_start) / (histo_input_end - histo_input_start) * (histo_output_end - histo_output_start) + histo_output_start
要在 ESP32 上安装应用程序,您只需部署 yaml 文件:
$ toit device -d nameofmydevice deploy tempfan.yaml
Toit 使用 .yaml 文件来安排何时应在 ESP32 上执行 Toit 代码。在这个项目中,当我们安装它时,应用程序应该会立即连续运行,如果 ESP32 重启也是如此。我们将应用程序命名为“ Fan Control ”并指向包含 Toit 代码的文件:
name: "Fan Control"
entrypoint: tempfan.toit
triggers:
on_install: true
on_boot: true
要访问整个代码,请访问GitHub 。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !