神龙居市 发表于 2022-5-17 11:34

【平头哥RVB2601创意应用开发】我的吉他环境保护器——干湿度自动调节器

本帖最后由 神龙居市 于 2022-5-19 11:13 编辑

<ul>
        <li><span style="font-size:20px;"><strong>风起需求</strong></span></li>
</ul>

<p>最近买了一把吉他,看到保养注意上说,湿度要保持在40-60%,太干燥会开裂,太潮湿会变形。还挺难伺候。现在正好拿平头哥练习一下,自己做一个湿度监测和加湿、除湿控制端。</p>

<ol>
        <li>室内空气湿度监测</li>
        <li>湿度临界条件上,控制加湿器开关、控制除湿器开关</li>
</ol>

<ul>
        <li><span style="font-size:20px;"><strong>工作流程图</strong></span></li>
</ul>

<p><img _height="550" border="0" src="https://bbs.eeworld.com.cn/data/attachment/forum/202205/08/175430fjyfeyffjcfezef8.png.thumb.jpg" width="429" /></p>

<ul>
        <li><span style="font-size:20px;">逻辑说明</span></li>
</ul>

<p align="justify" style="text-align:justify"><span style="font-size:10.5pt"><span style="text-justify:inter-ideograph"><span style="font-family:&quot;Times New Roman&quot;"><span style="font-size:10.5000pt"><span style="background:#ffffff"><span style="font-family:微软雅黑"><span style="color:#333333"><span style="letter-spacing:0.0000pt"><span style="font-style:normal"><font face="微软雅黑">为了保证环境的湿度在一定范围内,需要依靠环境检测传感器获得当前湿度,配合内部控制外接加湿器和除湿器,在湿度的上限和下限开启加湿或除湿。这里的控制已经不是一个临界点了,而是一个区域。所以控制逻辑上是</font>4个临界点。40~50~60分成3个节点,就是说&lt;40需要加湿时,一直加湿到50关闭加湿器,50~60之间不工作,其实也包含了40~60之间,因为回落到40~50间也是不工作的,除湿也是类似超过60开始除湿,湿度降到50关闭除湿器。</span></span></span></span></span></span></span></span></span></p>

<ul>
        <li><span style="font-size:20px;"><strong>硬件准备</strong>&nbsp;</span></li>
</ul>

<ol>
        <li>平头哥RVB2601开发板</li>
        <li>DHT11温湿度传感器</li>
        <li>雾化加湿器模块</li>
        <li>除湿器设备</li>
        <li>继电器2个</li>
        <li>电源5v</li>
</ol>

<ul>
        <li><span style="font-size:20px;"><strong>&nbsp;软件准备</strong></span></li>
</ul>

<ol>
        <li>CDK v1.12版</li>
        <li>SDK v7.4.3</li>
</ol>

<ul>
        <li><span style="font-size:20px;"><strong>案例核心代码</strong></span></li>
</ul>

<p><span style="font-size:12px;"><strong>代码引用了DHT11传感器</strong></span></p>

<pre>
<code class="language-cpp">#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;aos/aos.h&gt;
#include "aos/cli.h"
#include "main.h"
#include "app_init.h"
#include "oled.h"
#include "dht11.h"

#define TAG "app"

//引脚PA4 加湿器
static csi_gpio_pin_t Humidifie;
//引脚A7 除湿器
static csi_gpio_pin_t Dehumidifie;

int main(void)
{
    board_yoc_init();
    LOGD(TAG, "%s\n", aos_get_app_version());
    oled_init();
   
    u8g2_t u8g2;
    u8g2Init(&amp;u8g2);
   
    //继电器控制
   
    //设置引脚模式为通用IO口:
    csi_pin_set_mux(PA4, PIN_FUNC_GPIO);   
    csi_pin_set_mux(PA7, PIN_FUNC_GPIO);

    //引脚初始化:
    csi_gpio_pin_init(&amp;Humidifie, PA4);   
    csi_gpio_pin_init(&amp;Dehumidifie, PA4);

    //设置引脚输出方向:
    csi_gpio_pin_dir(&amp;Humidifie, GPIO_DIRECTION_OUTPUT);   
    csi_gpio_pin_dir(&amp;Dehumidifie, GPIO_DIRECTION_OUTPUT);

    //设置引脚电平:
    csi_gpio_pin_write(&amp;Humidifie, GPIO_PIN_LOW);   
    csi_gpio_pin_write(&amp;Dehumidifie, GPIO_PIN_LOW);   


    u8g2_SetFontMode(&amp;u8g2, 1);
    u8g2_SetFont(&amp;u8g2, u8g2_font_unifont_t_symbols);
   
    DHT11Init();
    float Temp = 0;
    float Humi = 0;
    char strTemp;
    char strHumi;
   
    while(1)
    {
      u8g2_FirstPage(&amp;u8g2);
      do
      {
            DHT11ReadData(&amp;Humi, &amp;Temp);
            sprintf(strTemp, "Temp: %.1f C", Temp);
            sprintf(strHumi, "Humi: %.1f %%", Humi);
            
            u8g2_ClearBuffer(&amp;u8g2);
            u8g2_DrawStr(&amp;u8g2, 0, 30, strTemp);
            u8g2_DrawCircle(&amp;u8g2, 84, 22, 2, U8G2_DRAW_ALL);
            u8g2_DrawStr(&amp;u8g2, 0, 60, strHumi);
            u8g2_SendBuffer(&amp;u8g2);      


            if(Humi &lt;= 40)
            {
                //湿度小,开加湿器
                csi_gpio_pin_write(&amp;Humidifie, GPIO_PIN_HIGHT);
            }
            else if(Humi &gt;= 50)
            {
                //湿度大,关闭加湿
                csi_gpio_pin_write(&amp;Humidifie, GPIO_PIN_LOW);
            }
            
            if(Humi &gt;= 60)
            {
                //开除湿机
                csi_gpio_pin_write(&amp;Dehumidifie, GPIO_PIN_HIGHT);               
            }
            if(Humi &lt;= 50)
            {
                //关闭除湿机
                csi_gpio_pin_write(&amp;Dehumidifie, GPIO_PIN_LOW);               
            }
            
            delay_ms(3000);
      } while (u8g2_NextPage(&amp;u8g2));
    }

    return 0;
}</code></pre>

<ul>
        <li>
        <h1>硬件图片</h1>
        </li>
        <li>DHT11传感器</li>
</ul>

<p></p>

<p>&nbsp;</p>

<ul>
        <li>继电器模块,控制加湿器和除湿器</li>
</ul>

<p>因为GPIO端口输出的高电平不足以引起工作电压工作,这里用了继电器开关来外接整整的加湿器和除湿器设备。</p>

<p></p>

<p>&nbsp;</p>

<ul>
        <li>最终成品</li>
</ul>

<p></p>

<p>&nbsp;</p>

<ul>
        <li><span style="font-size:20px;">最后完善了一下的视频</span></li>
</ul>

<p>8af3567544ee1771a7d4e4012fb63054<br />
&nbsp;</p>

Jacktang 发表于 2022-5-18 07:48

<p>这个干湿度自动调节器不错,谢谢分享</p>
页: [1]
查看完整版本: 【平头哥RVB2601创意应用开发】我的吉他环境保护器——干湿度自动调节器