日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用鴻蒙開發(fā)板制作一個空壓機儲氣罐自動排水裝置

想了解更多內(nèi)容,請訪問:

創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都網(wǎng)站制作、網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團隊10多年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。

和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.

潤和的Neptune開發(fā)板,是一塊具有較高性價比的鴻蒙開發(fā)板,也可以應(yīng)用于工業(yè)控制領(lǐng)域。

夏季到了,很多地方的空氣比冬季潮濕了許多,于是壓縮空氣的含水量也大了起來,即使有冷干機,儲氣罐也常常會在罐底積留一部分水分,不及時排出,會影響工廠氣路和氣動元件的正常運行。更不用說沒有冷干機的供氣系統(tǒng)。儲氣罐在很多工廠還是人工排水,存在排水不及時和費時費工的弊端。這個夏季,我們就用鴻蒙開發(fā)板來完成儲氣罐的自動排水。

說干就干,先做準(zhǔn)備:

1. 潤和海王星 Neptune HH-SLNPT102 開發(fā)板一塊。

2. 潤和HiSpark_WIFI_IoT_OLED_VER.A顯示板一塊。

3. 潤和HiSpark_WIFI_IoT_EXB_VER.A底板一塊。

4. 電磁水閥一個,尺寸和儲氣罐下部的排水口匹配,管道根據(jù)儲氣罐現(xiàn)場配套。

5. 3.3v繼電器一個,按鈕兩個,杜邦線若干,電源線。

6. 編輯,編譯環(huán)境,Ubuntu20.04.2 LTS, 燒錄 Windows環(huán)境SecureCRT

7. 程序框架,hihope/neptune_iot,1.0.1版(2021.04.29)

如圖做好連接:

1. Neptune HH-SLNPT102 開發(fā)板和HiSpark_WIFI_IoT_OLED_VER.A顯示板直接插在底板上。

2. 繼電器線圈受PB_10控制,連接底板的D10, 3V3及GND.繼電器的輸出端控制電磁水閥的通斷從而實現(xiàn)自動排水功能。

3. 藍色按鈕接底板的D1和GND,對應(yīng)開發(fā)板的PB_06,每按下一次,電磁水閥關(guān)閉時間增加10分鐘,最長間隔24小時。

4. 紅色按鈕接底板的D0和GND,對應(yīng)開發(fā)板的PB_07,每按下一次,電磁水閥開啟時間增加1秒鐘,單次排水最長時間3分鐘。

5. 開發(fā)板板載按鈕PB_09按下一次,轉(zhuǎn)換一種工作模式,分別是:常開,常閉,間歇排水模式。

主程序代碼如下:

 
 
 
 
  1. #include 
  2. #include 
  3. #include "ohos_init.h"
  4. #include "cmsis_os2.h"
  5. #include "wifiiot_gpio.h"
  6. #include "wifiiot_gpio_ex.h"
  7. #include "oled_ssd1306.h"
  8. #include "wifiiot_gpio_w800.h"
  9. int working = 0;  //電磁水閥工作狀態(tài) 0/開  1/關(guān)
  10. int m = 60;      //間歇工作電磁水閥關(guān)閉時間初始值1分鐘
  11. int n = 5;        //間歇工作電磁水閥開啟時間初始值5秒
  12. int times = 0;    //計時,秒為單位
  13. enum State
  14. {
  15.     ON = 0,
  16.     OFF,
  17.     SPARK,
  18. };
  19. enum State g_State = SPARK; 
  20. static void DrainageTask(void *arg)
  21. {
  22.     (void)arg;
  23.     OledInit();
  24.     OledFillScreen(0x00);
  25.     OledShowString(0, 1, "Air Comprwssor", 2); //開機顯示2秒
  26.     OledShowString(0, 5, "Auto Drainage", 2); 
  27.     osDelay(2000);
  28.     
  29.     OledFillScreen(0x00);
  30.     while (1)
  31.     {
  32.         OledShowString(0, 0, "****************", 2);
  33.         OledShowString(0, 2, "* Auto Drainage*", 2); //OLED固定顯示
  34.         OledShowString(0, 4, "*              *", 2);
  35.         OledShowString(0, 6, "*              *", 2);
  36.         osDelay(500);
  37.         static char line[32] = {0};
  38.         static char line1[32] = {0};
  39.        
  40.         switch (g_State)
  41.         {
  42.         case ON:  //電磁水閥常開工作模式
  43.             GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE0);
  44.             snprintf(line, sizeof(line), "*              *"); 
  45.             snprintf(line1, sizeof(line1), "*  ON   "); 
  46.             break;
  47.  
  48.         case OFF:  //電磁水閥常閉工作模式
  49.             GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE1);
  50.             snprintf(line, sizeof(line), "*              *"); 
  51.             snprintf(line1, sizeof(line1), "*        OFF"); 
  52.             break;
  53.         case SPARK:  //電磁水閥間歇工作模式
  54.             times++; 
  55.             if (working == 0)   //排水定時控制
  56.             {
  57.                 snprintf(line, sizeof(line), "* ON Remaining");         
  58.                 snprintf(line1, sizeof(line1), "*   %d sec", n - times); //秒顯示,倒計時
  59.                 if (times
  60.                 {
  61.                     GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE0);
  62.                 }
  63.                 if (times>=n)
  64.                 {
  65.                     working = 1;
  66.                     times = 0;
  67.                 }
  68.             }
  69.             else   //電磁水閥關(guān)閉定時控制
  70.             {
  71.                 snprintf(line, sizeof(line), "*OFF Remaining");          
  72.                 snprintf(line1, sizeof(line1), "*   %d min", (m - times)/60);  //分鐘顯示,倒計時
  73.                 if (times
  74.                 {
  75.                     GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE1);
  76.                 }
  77.                 if (times>=m)
  78.                 {
  79.                     working = 0;
  80.                     times= 0;
  81.                 }
  82.             };
  83.             break;
  84.         default:
  85.             break;
  86.         } 
  87.         OledShowString(0, 4, line, 2);  //OLED動態(tài)顯示
  88.         OledShowString(0, 6, line1, 2); //OLED動態(tài)顯示
  89.         osDelay(500);               
  90.     }
  91. }
  92. static void GpioIsr(char *arg)  //板載按鈕中斷方式切換工作模式
  93. {
  94.     (void)arg;
  95.     enum State nextState = SPARK;
  96.     printf(" P9 Press!  \n");
  97.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_09, 1);
  98.     switch (g_State)
  99.     {
  100.     case ON:
  101.         nextState = OFF;
  102.         break;
  103.     case OFF:
  104.         nextState = SPARK;
  105.         break;
  106.     case SPARK:
  107.         nextState = ON;
  108.         break;
  109.     default:
  110.         break;
  111.     }
  112.     g_State = nextState;
  113.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_09, 0);
  114. }
  115. static void F1(char *arg)  //外置F1按鈕中斷方式調(diào)整閥關(guān)閉時間,最長24小時,步長10分鐘
  116. {
  117.     (void)arg;
  118.     printf(" P6 Press!  \n");
  119.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_06, 1);
  120.     if (m>86400)
  121.     {
  122.         m = 0 ;
  123.     }
  124.     m = m + 600 ;
  125.     times = 0;
  126.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_06, 0);
  127. }
  128. static void F2(char *arg)  //外置F2按鈕中斷方式調(diào)整開啟時間,最長3分鐘,步長1秒
  129. {
  130.     (void)arg;
  131.     printf(" P7 Press!  \n");
  132.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_07, 1);
  133.     if (n>180)
  134.     {
  135.         n = 0 ;
  136.     }
  137.     n = n + 1 ;
  138.     times = 0;
  139.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_07, 0);
  140. }
  141. static void DrainageDemo(void)
  142. {
  143.     osThreadAttr_t attr;
  144.    
  145.     GpioInit();
  146.     GpioSetDir(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_DIR_OUTPUT);  //通過繼電器控制電磁水閥。  底板的D10
  147.     GpioSetDir(WIFI_IOT_GPIO_PB_09, WIFI_IOT_GPIO_DIR_INPUT);   //開發(fā)版板載P9按鈕,中斷輸入。
  148.     IoSetPull(WIFI_IOT_GPIO_PB_09, WIFI_IOT_GPIO_ATTR_PULLHIGH);
  149.     GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_09, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, GpioIsr, NULL);
  150.     
  151.     GpioSetDir(WIFI_IOT_GPIO_PB_06, WIFI_IOT_GPIO_DIR_INPUT);  //外置P6按鈕,中斷輸入。  底板的D1
  152.     IoSetPull(WIFI_IOT_GPIO_PB_06, WIFI_IOT_GPIO_ATTR_PULLHIGH);
  153.     GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_06, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F1, NULL);
  154.     GpioSetDir(WIFI_IOT_GPIO_PB_07, WIFI_IOT_GPIO_DIR_INPUT);  //外置P7按鈕,中斷輸入。  底板的D0
  155.     IoSetPull(WIFI_IOT_GPIO_PB_07, WIFI_IOT_GPIO_ATTR_PULLHIGH);
  156.     GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_07, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F2, NULL);
  157.     attr.name = "DrainageTask";
  158.     attr.attr_bits = 0U;
  159.     attr.cb_mem = NULL;
  160.     attr.cb_size = 0U;
  161.     attr.stack_mem = NULL;
  162.     attr.stack_size = 4096;
  163.     attr.priority = osPriorityNormal;
  164.     if (osThreadNew(DrainageTask, NULL, &attr) == NULL)
  165.     {
  166.         printf("[DrainageDemo] Falied to create DrainageTask!\n");
  167.     }
  168. }
  169. APP_FEATURE_INIT(DrainageDemo);

 編譯,下載,重啟開發(fā)板后,顯示和控制正常。按下板載PB_09按鍵,切換到常開模式,再按一次,切換到常閉模式,相應(yīng)OLED屏做顯示。

再按一次PB_09按鍵,進入間歇工作模式,每次電磁水閥開啟一段時間進行排水(開啟時間長短由紅色按鈕F2調(diào)整),關(guān)閉一段時間(時間長短由藍色按鈕F1調(diào)整),周而復(fù)始,實現(xiàn)空壓機儲氣罐的自動排除底部積水。每次開啟和關(guān)閉時間長短,可以根據(jù)各自壓縮空氣系統(tǒng)實際情況來調(diào)整。

Neptune開發(fā)板由于較高的性價比,在工業(yè)領(lǐng)域有廣闊的應(yīng)用空間。比如,本文的儲氣罐排水控制器還可以與空壓機聯(lián)動,也可以發(fā)揮網(wǎng)絡(luò)功能實現(xiàn)遠程監(jiān)控等,期待廣大鴻蒙開發(fā)者發(fā)掘更多的應(yīng)用領(lǐng)域。

想了解更多內(nèi)容,請訪問:

和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.


分享題目:用鴻蒙開發(fā)板制作一個空壓機儲氣罐自動排水裝置
網(wǎng)站URL:http://m.5511xx.com/article/cddgsed.html