找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 16661|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

可用手機(jī)APP控制的智能插座制作 附單片機(jī)源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
1.作品的整機(jī)外觀圖片或焊接組裝好的PCBA圖片;
智能插座實(shí)物圖:

手機(jī)APP:

2.作品的研究背景、目的和功能、市場(chǎng)應(yīng)用前景;
隨著科技的不斷進(jìn)步,各種各樣的電子產(chǎn)品已經(jīng)慢慢進(jìn)入到了我們的日常生活中,由于人們的不合理的使用,經(jīng)常導(dǎo)致電能的無故浪費(fèi)。然而在當(dāng)今這個(gè)社會(huì),人口數(shù)量的不斷增加,再生能源的不斷減少,全球溫室效應(yīng)日益嚴(yán)重,節(jié)能減排尤為重要。為了解決這樣一對(duì)矛盾,我們了解到,越來越多的產(chǎn)品有了待機(jī)功能,如電視機(jī),電腦,冰箱,空調(diào)等家用電器。據(jù)調(diào)查,我國城市家庭的平均待機(jī)能耗,相當(dāng)于每個(gè)家庭每天都在亮著一盞15瓦到30瓦的長明燈。據(jù)測(cè)算,家電待機(jī)能耗占到中國家庭電力消耗的10%以上。而正是由于這種長期的待機(jī)狀態(tài),使得插座的負(fù)荷也越來越大,帶來了非常嚴(yán)重的安全隱患。故需要一款能夠控制使用時(shí)間的插座來解決這個(gè)問題,這款插座也可以由此走進(jìn)千家萬戶!

3.趣味性
    用戶再通過手機(jī)APP控制插座時(shí),可通過插座中央的喜趣表情判斷插座狀態(tài),給用戶在使用的過程中帶來些許的樂趣

二、系統(tǒng)構(gòu)架圖

三、硬件部分的描述
1.附上原理圖&PCB實(shí)物圖的圖片或者源文件(官方建議大家盡量用源文件上傳),如果是圖片,請(qǐng)確保圖片是清晰可辨的;

2.用文字把該作品的實(shí)現(xiàn)原理、系統(tǒng)的工作過程大致講解一下。

該系統(tǒng)采用51單片機(jī)STC89C52在Keil開發(fā)平臺(tái)上通過C語言編程控制繼電器的通、斷來實(shí)現(xiàn)控制插座的通、斷電,而繼電器的通、斷由定時(shí)組別確定。在定時(shí)范圍內(nèi)繼電器導(dǎo)通,否則斷開。并用LCD1602顯示出時(shí)鐘及定時(shí)時(shí)間等信息。當(dāng)時(shí)鐘走到定時(shí)開始時(shí)間時(shí),繼電器接通,插座給負(fù)載供電;時(shí)鐘走到定時(shí)結(jié)束時(shí)間時(shí),繼電器斷開,插座停止給負(fù)載供電。
1.實(shí)現(xiàn)功能
系統(tǒng)總體設(shè)計(jì)主要實(shí)現(xiàn)以下功能:
(1)時(shí)間預(yù)設(shè)功能:設(shè)置預(yù)設(shè)時(shí)間,控制繼電器各個(gè)時(shí)間段的工作狀態(tài)。
(2)數(shù)據(jù)存儲(chǔ)功能:將數(shù)據(jù)存儲(chǔ)在外部儲(chǔ)存芯片中,防止單片機(jī)意外掉電數(shù)據(jù)清零。
(3)時(shí)間溫度功能:實(shí)時(shí)顯示環(huán)境溫度和時(shí)間。
(4)藍(lán)牙遙控功能:單片機(jī)通過藍(lán)牙模塊與手機(jī)進(jìn)行通訊,用戶通過手機(jī)APP控制單片機(jī)工作。


四、材料清單(BOM列表)

(1)單片機(jī)STC89C52:CPU
(2)LCD1602液晶顯示屏:專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊
(3)DS1302時(shí)鐘模塊:本設(shè)計(jì)的時(shí)間預(yù)設(shè)模式需要精準(zhǔn)時(shí)間來控制繼電器的動(dòng)作,為為保證單片機(jī)掉電后時(shí)間信號(hào)依舊繼續(xù)工作,故采用DS1302外部時(shí)間計(jì)時(shí)。DS1302一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能
(4)繼電器模塊:該系統(tǒng)通過單片機(jī)控制繼電器轉(zhuǎn)而控制插座的通斷。
(5)AT24C02存儲(chǔ)模塊:AT24C02作為外部存儲(chǔ)芯片,將數(shù)據(jù)實(shí)時(shí)儲(chǔ)存,防止單片機(jī)意外掉電導(dǎo)致數(shù)據(jù)清零
(6)BT-08B藍(lán)牙模塊:通過此模塊實(shí)現(xiàn)單片機(jī)與手機(jī)的通信
(7)DS18B20溫度模塊:它具有微型化,低功耗,高性能,抗干擾能力強(qiáng),易配微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成數(shù)字信號(hào)處理器處理。


五、軟件部分的描述(選填)

設(shè)計(jì)思想:將該項(xiàng)目每一個(gè)功能獨(dú)立成每一模塊,然后每一個(gè)模塊單獨(dú)開發(fā),并獨(dú)立測(cè)試。

(1)主程序:主要是在單片機(jī)的控制下,建立人機(jī)操作界面,對(duì)設(shè)定時(shí)間進(jìn)行儲(chǔ)存,對(duì)相關(guān)功能進(jìn)行設(shè)置,驅(qū)動(dòng)液晶顯示出相關(guān)信息,并通過判斷定時(shí)時(shí)間,控制繼電器的通、斷,從而達(dá)到控制插座的通、斷電。
主程序流程圖
(2) AT24C02程序:包括I2C總線程序和AT24C02寫入和讀取程序

寫入流程圖和讀取流程圖


(3)DS1302程序:包含寫操作、讀操作、初始化操作和讀取時(shí)間操作函數(shù)


讀取流程圖和寫入流程圖

(4)LCD1602液晶程序:包含延時(shí)函數(shù)、寫入命令子函數(shù)、寫入數(shù)據(jù)子函數(shù)、初始化函數(shù)


  寫指令和寫數(shù)據(jù)流程圖



(5)BT-08B藍(lán)牙模塊程序:包含串口初始化函數(shù)和延時(shí)函數(shù)

藍(lán)牙串口控制流程圖


(6)DS18B20溫度模塊程序:包含延時(shí)函數(shù)、初始化函數(shù)、寫數(shù)據(jù)函數(shù)、讀數(shù)據(jù)函數(shù)、轉(zhuǎn)換溫度函數(shù)、發(fā)送讀取溫度命令函數(shù)和讀取溫度函數(shù)
  
溫度讀取流程圖


單片機(jī)源程序如下:
  1. #include <reg52.h>                        
  2. #include "ds1302.h"
  3. #include "temp.h"        
  4. #include "lcd.h"
  5. #include "BT.h"
  6. #include "i2c.h"
  7. #define GPIO_KEY P1

  8. sbit relay=P2^3;        //繼電器信號(hào)輸入管腳定義
  9. sbit beep=P1^5;                //定義蜂鳴器

  10. typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
  11. typedef unsigned char u8;

  12. u8 sign=0;//聲音判斷標(biāo)志        
  13. u8 h,m,s;//時(shí),分,秒
  14. u8 KeyValue=16;        //用來存放讀取到的鍵值
  15. u8 tempData[3];//接收溫度數(shù)據(jù)
  16. u8 dateData[8];        //接收日期數(shù)據(jù)
  17. u8 timingData[8];//接收定時(shí)數(shù)據(jù)        
  18. u8 timeData[8];//接收時(shí)間數(shù)據(jù)
  19.                               
  20. /*******************************************************************************
  21. * 函 數(shù) 名         : delay()
  22. * 函數(shù)功能                   : 延時(shí)函數(shù)
  23. * 輸    入         : i
  24. * 輸    出         : 無
  25. *******************************************************************************/
  26. void delay(u16 i)
  27. {
  28.            while(i--);
  29. }
  30. /*******************************************************************************
  31. * 函 數(shù) 名         : sound()
  32. * 函數(shù)功能                   : 聲音函數(shù)
  33. * 輸    入         : 無
  34. * 輸    出         : 無
  35. *******************************************************************************/
  36. void sound()
  37. {
  38.         u8 i=100;
  39.         while(i--)
  40.         {
  41.                 beep=~beep;
  42.                 delay(30);
  43.                 beep=~beep;
  44.                 delay(10);        
  45.         }
  46. }

  47. /*******************************************************************************
  48. * 函 數(shù) 名         : Timer0Init()
  49. * 函數(shù)功能                   : 定時(shí)器0初始化
  50. * 輸    入         : 無
  51. * 輸    出         : 無
  52. *******************************************************************************/
  53. void Timer0Init()
  54. {
  55.         TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開啟動(dòng)。                                    
  56.         TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
  57.         TL0=0X18;        
  58.         ET0=1;//打開定時(shí)器0中斷允許
  59.         EA=1;//打開總中斷
  60.         TR0=1;//打開定時(shí)器                                
  61. }
  62. /*******************************************************************************
  63. * 函 數(shù) 名         : KeyChoose()
  64. * 函數(shù)功能                   : 按鍵選擇
  65. * 輸    入         : 無
  66. * 輸    出         : 無
  67. *******************************************************************************/
  68. void KeyChoose()
  69. {
  70.         if(sign!=switch_pattern)        //判斷聲音標(biāo)志sign是否與switch_pattern相等,不相等則表明開關(guān)狀態(tài)有變化,輸出提示音,并令sign=switch_pattern
  71.         {
  72.                 sound();
  73.                 sound();
  74.                 sign=switch_pattern;
  75.         }
  76.    switch(KeyValue)
  77.         {
  78.                 case 0:
  79.                         sound();
  80.                         sound();
  81.                         if(switch_pattern==1)
  82.                          switch_pattern=0;
  83.                     else
  84.                          switch_pattern=1;
  85.                     timing_pattern=2;//重置非定時(shí)狀態(tài)
  86.                     KeyValue=16;//防止未按鍵依舊進(jìn)入該條選擇語句,下同
  87.                         break;
  88.                 case 1:
  89.                         sound();
  90.                         sound();
  91.                         switch_pattern=1;
  92.                         timing_pattern=0;//定時(shí)關(guān)閉;
  93.                         KeyValue=16;
  94.                         break;
  95.                 case 2:
  96.                         sound();
  97.                         sound();
  98.                         switch_pattern=0;
  99.                         timing_pattern=1;//定時(shí)開啟;
  100.                         KeyValue=16;
  101.                         break;
  102.                 case 3:
  103.                         sound();
  104.                         sound();
  105.                         h=0;  //將其他兩位置為0,下同
  106.                         s=0;
  107.                         m=1;// 定時(shí)1分鐘,下同
  108.                         KeyValue=16;
  109.                         break;           
  110.                 case 4:
  111.                         sound();
  112.                         sound();
  113.                         h=0;
  114.                         s=0;
  115.                         m=30;
  116.                         KeyValue=16;
  117.                         break;
  118.                 case 5:
  119.                         sound();
  120.                         sound();
  121.                         m=0;
  122.                         s=0;
  123.                         h=1;
  124.                         KeyValue=16;
  125.                         break;
  126.                 case 6:
  127.                         sound();
  128.                         sound();
  129.                     m=0;
  130.                         s=0;
  131.                         h=2;
  132.                         KeyValue=16;
  133.                         break;
  134.                 case 7:
  135.                         sound();
  136.                         sound();
  137.                         m=0;
  138.                         s=0;
  139.                         h=3;
  140.                         KeyValue=16;
  141.                         break;
  142.                 case 8:
  143.                         sound();
  144.                         sound();
  145.                         m=0;
  146.                         s=0;
  147.                         h=4;
  148.                         KeyValue=16;
  149.                         break;
  150.                 case 9:
  151.                         sound();
  152.                         sound();
  153.                         m=0;
  154.                         s=0;
  155.                         h=6;
  156.                         KeyValue=16;
  157.                         break;
  158.                 case 10:
  159.                         sound();
  160.                         sound();
  161.                         m=0;
  162.                         s=0;
  163.                         h=8;
  164.                         KeyValue=16;
  165.                         break;
  166.                 case 11:
  167.                         sound();
  168.                         sound();
  169.                         m=0;
  170.                         s=0;
  171.                         h=10;
  172.                         KeyValue=16;
  173.                         break;
  174.                 case 12:
  175.                         sound();
  176.                 sound();
  177.                         m=0;
  178.                         s=0;
  179.                         h=12;
  180.                         KeyValue=16;
  181.                         break;
  182.                 case 13:
  183.                         sound();
  184.                         sound();
  185.                         m=0;
  186.                         s=0;
  187.                         h=14;
  188.                         KeyValue=16;
  189.                         break;
  190.                 case 14:
  191.                         sound();
  192.                         sound();
  193.                         m=0;
  194.                         s=0;
  195.                         h=20;
  196.                         KeyValue=16;
  197.                         break;
  198.                 case 15:
  199.                         sound();
  200.                         sound();        
  201.                         m=0;
  202.                         s=0;
  203.                         h=24;
  204.                         KeyValue=16;
  205.                         break;
  206.                         
  207.         }

  208. }
  209. /*******************************************************************************
  210. * 函 數(shù) 名         : Timer0()
  211. * 函數(shù)功能                   : 實(shí)現(xiàn)1s定時(shí)操作
  212. * 輸    入         : 無
  213. * 輸    出         : 無
  214. *******************************************************************************/
  215. void Timer0() interrupt 1
  216. {
  217.         static u16 i;

  218.         TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
  219.         TL0=0X18;               
  220.         i++;
  221.         if(i>=1000)//定時(shí)一秒則
  222.         {
  223.            i=0;
  224.            if((h||m||s)&&timing_pattern<=1)//如果定時(shí)沒有結(jié)束且為定時(shí)狀態(tài),則定時(shí)繼續(xù)
  225.                 {
  226.                    if(s==0)
  227.                    {
  228.                           s=59;
  229.                           if(m==0)
  230.                           {
  231.                                   m=59;
  232.                                 h--;
  233.                           }
  234.                           else
  235.                           m--;
  236.                    }
  237.                    else
  238.                    s--;
  239.                if(s==0&&m==0&&h==0)//如果定時(shí)結(jié)束
  240.                    {
  241.                       relay=~relay;        
  242.                           if(switch_pattern==0)
  243.                                   switch_pattern=1;
  244.                           else
  245.                                 switch_pattern=0;                                          
  246.                           timing_pattern=2;//重置為非定時(shí)狀態(tài)
  247.                           sound();
  248.                           sound();
  249.                           sound();
  250.                           sound();                                          
  251.                }
  252.                 }
  253.         }
  254.         if(switch_pattern!=0)//如果狀態(tài)為開則relay=0;
  255.         {        
  256.                 relay=0;
  257.                 while(!switch_pattern);//判斷開關(guān)是否切換
  258.         }
  259.         if(!switch_pattern)        //如果狀態(tài)為關(guān)則relay=1;
  260.         {               
  261.                 relay=1;
  262.                 while(switch_pattern);//判斷開關(guān)是否切換        
  263.         }
  264.         if(timing_pattern==2)//非定時(shí)狀態(tài)時(shí)將時(shí)間重置為00:00:00
  265.         {
  266.                    h=0;
  267.             m=0;
  268.             s=0;
  269.         }
  270.         if(timing_pattern<=1&&timing_time!=0)//獲取藍(lán)牙傳入的時(shí)間
  271.         {
  272.                 sound();
  273.                 sound();
  274.                    h=timing_time-1;
  275.                 m=59;
  276.                 s=59;
  277.                 timing_time=0;
  278.         }
  279. }


  280. /*******************************************************************************
  281. * 函 數(shù) 名         : KeyDown()
  282. * 函數(shù)功能                   : 按鍵判斷函數(shù)
  283. * 輸    入         : 無
  284. * 輸    出         : 無
  285. *******************************************************************************/
  286. void KeyDown(void)
  287. {
  288.         char a=0;
  289.         GPIO_KEY=0x0f;
  290.         if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
  291.         {
  292.                 Delay1ms(10);//延時(shí)10ms進(jìn)行消抖
  293.                 if(GPIO_KEY!=0x0f)//再次檢測(cè)鍵盤是否按下
  294.                 {        
  295.                         //測(cè)試列
  296.                         GPIO_KEY=0X0F;
  297.                         switch(GPIO_KEY)
  298.                         {
  299.                                 case(0x07):        KeyValue=0;break;
  300.                                 case(0X0b):        KeyValue=1;break;
  301.                                 case(0X0d):        KeyValue=2;break;
  302.                                 case(0X0e): KeyValue=3;break;
  303.                         }
  304.                         //測(cè)試行
  305.                         GPIO_KEY=0XF0;
  306.                         switch(GPIO_KEY)
  307.                         {
  308.                                 case(0x70):        KeyValue=KeyValue;break;
  309.                                 case(0Xb0):        KeyValue=KeyValue+4;break;
  310.                                 case(0Xd0):        KeyValue=KeyValue+8;break;
  311.                                 case(0Xe0): KeyValue=KeyValue+12;break;
  312.                         }
  313.                         while((a<50)&&(GPIO_KEY!=0xf0))         //檢測(cè)按鍵松手檢測(cè)
  314.                         {
  315.                                 Delay1ms(10);
  316.                                 a++;
  317.                         }
  318.                 }
  319.         }

  320. }

  321. /*******************************************************************************
  322. * 函 數(shù) 名         : datapros_temp()
  323. * 函數(shù)功能                   : 溫度讀取處理函數(shù)
  324. * 輸    入         : temp
  325. * 輸    出         : 無
  326. *******************************************************************************/
  327.   
  328. void datapros_temp(int temp)         
  329. {
  330.            float tp;  
  331.         if(temp<0)                                //當(dāng)溫度值為負(fù)數(shù)
  332.           {
  333.                 tempData[0]='-';
  334.                 temp=temp-1;
  335.                 temp=~temp;
  336.                 tp=temp;
  337.                 temp=tp*0.0625*100+0.5;        
  338.           }
  339.          else                                        //當(dāng)溫度為正數(shù)
  340.           {        
  341.                 tempData[0]='+';               
  342.                 tp=temp;
  343.                 temp=tp*0.0625*100+0.5;        
  344.         }
  345.         tempData[1] =temp/1000+'0';
  346.         tempData[2] =temp%1000/100+'0';
  347. }
  348. /*******************************************************************************
  349. * 函 數(shù) 名         : datapros_time()
  350. * 函數(shù)功能                   : 時(shí)間讀取處理函數(shù)
  351. * 輸    入         : 無
  352. * 輸    出         : 無
  353. *******************************************************************************/
  354. void datapros_time()         
  355. {
  356.            Ds1302ReadTime();
  357.         timingData[0] = h/10+'0';                                //定時(shí)-時(shí)
  358.         timingData[1] = h%10+'0';                                          
  359.         timingData[2] = ':';
  360.         timingData[3] = m/10+'0';                                //定時(shí)-分
  361.         timingData[4] = m%10+'0';        
  362.         timingData[5] = ':';
  363.         timingData[6] = s/10+'0';                                //定時(shí)-秒
  364.         timingData[7] =s%10+'0';
  365.         dateData[0]= (TIME[6]/16)+'0';                                //年
  366.         dateData[1]=(TIME[6]&0x0f)+'0';
  367.         dateData[2]='-';
  368.         dateData[3]= (TIME[4]/16)+'0';                                  //月                                
  369.         dateData[4]=(TIME[4]&0x0f)+'0';
  370.         dateData[5]='-';
  371.         dateData[6]= (TIME[3]/16)+'0';                                  //日                                
  372.         dateData[7]=(TIME[3]&0x0f)+'0';
  373.         timeData[0]=(TIME[2]/16)+'0';                                //時(shí)
  374.         timeData[1]=(TIME[2]&0x0f)+'0';
  375.         timeData[2]=':';
  376.         timeData[3]=(TIME[1]/16)+'0';                                //分
  377.         timeData[4]=(TIME[1]&0x0f)+'0';
  378.         timeData[5]=':';
  379.         timeData[6]=(TIME[0]/16)+'0';                                //秒
  380.         timeData[7]=(TIME[0]&0x0f)+'0';

  381. }


  382. /*******************************************************************************
  383. * 函 數(shù) 名         : lcdDisplay()
  384. * 函數(shù)功能                   : 顯示函數(shù)
  385. * 輸    入         : 無
  386. * 輸    出         : 無
  387. *******************************************************************************/
  388. void lcdDisplay()
  389. {
  390.         u8 i;
  391.         LcdWriteCom(0x80);//從第一行開始寫入        
  392.         LcdWriteData('2');
  393.         LcdWriteData('0');
  394.     for(i=0;i<8;i++)                 //顯示日期
  395.         {
  396.                  LcdWriteData(dateData[i]);
  397.         }
  398.         LcdWriteData(' ');
  399.         LcdWriteData(' ');
  400.         if(switch_pattern==0)//顯示開關(guān)狀態(tài)
  401.         {
  402.                 LcdWriteData('O');
  403.                 LcdWriteData('F');
  404.                 LcdWriteData('F');
  405.                 LcdWriteData(' ');
  406.         }
  407.         else
  408.         {
  409.                 LcdWriteData('O');
  410.                 LcdWriteData('N');
  411.                 LcdWriteData(' ');
  412.                 LcdWriteData(' ');
  413.         }
  414.         LcdWriteCom(0x80+0x40);        //換到lcd第二行開頭
  415.         for(i=0;i<3;i++)                //顯示溫度
  416.         {
  417.                  LcdWriteData(tempData[i]);
  418.         }
  419.         LcdWriteData(' ');
  420.         LcdWriteData(' ');
  421.         LcdWriteData(' ');
  422.         if(timing_pattern<2)        //判斷是否是定時(shí)狀態(tài)。timing_pattern<2則是非定時(shí)狀態(tài),顯示時(shí)間信息;否則顯示定時(shí)信息                                                
  423.                 for(i=0;i<8;i++)
  424.                 {        
  425.                         LcdWriteData(timingData[i]);
  426.                 }
  427.         else
  428.                 for(i=0;i<8;i++)
  429.                 {        
  430.                          LcdWriteData(timeData[i]);
  431.                 }
  432.         LcdWriteData(' ');
  433.         LcdWriteData(' ');
  434.         LcdWriteCom(0x80);        
  435. }
  436. /*******************************************************************************
  437. * 函 數(shù) 名         : save_write()
  438. * 函數(shù)功能                   : 將定時(shí)數(shù)據(jù)存儲(chǔ)在At24c02中
  439. * 輸    入         : 無
  440. * 輸    出         : 無
  441. * 備    注                     :要注意每寫入一次,應(yīng)有一段延時(shí)。
  442. *******************************************************************************/                  
  443. void save_write()
  444. {                                   
  445.      At24c02Write(6,timing_pattern);
  446.          Delay1ms(2);
  447.          At24c02Write(5,switch_pattern);
  448.          Delay1ms(2);
  449. ……………………

  450. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
單片機(jī)源代碼.rar (83.06 KB, 下載次數(shù): 202)
藍(lán)牙開關(guān)app.rar (362.22 KB, 下載次數(shù): 188)



評(píng)分

參與人數(shù) 3黑幣 +79 收起 理由
lzp0425 + 8 絕世好帖!
kevin666999 + 21 共享資料的黑幣獎(jiǎng)勵(lì)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏19 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:146874 發(fā)表于 2018-8-20 08:52 | 只看該作者
謝謝樓主分享  
回復(fù)

使用道具 舉報(bào)

板凳
ID:384558 發(fā)表于 2018-8-22 11:01 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

地板
ID:392360 發(fā)表于 2018-9-1 21:34 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

5#
ID:171327 發(fā)表于 2019-1-14 02:10 | 只看該作者
你好,請(qǐng)問您這個(gè)app的源碼有嗎?我想請(qǐng)教一下,最近在弄這個(gè)想在宿舍裝一個(gè),
回復(fù)

使用道具 舉報(bào)

6#
ID:66761 發(fā)表于 2019-1-17 10:59 | 只看該作者
最近正研究這個(gè)呢,謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

7#
ID:471573 發(fā)表于 2019-1-23 16:27 | 只看該作者
太強(qiáng)大了!。
回復(fù)

使用道具 舉報(bào)

8#
ID:430254 發(fā)表于 2019-1-24 17:06 | 只看該作者
非常不錯(cuò),好帖
回復(fù)

使用道具 舉報(bào)

9#
ID:508022 發(fā)表于 2019-4-9 16:58 | 只看該作者
海底沉心 發(fā)表于 2019-1-24 17:06
非常不錯(cuò),好帖

請(qǐng)問您會(huì)做這個(gè)嗎,想請(qǐng)教一下您
回復(fù)

使用道具 舉報(bào)

10#
ID:508022 發(fā)表于 2019-4-9 16:59 | 只看該作者
請(qǐng)問怎么聯(lián)系作者啊,想請(qǐng)教一下
回復(fù)

使用道具 舉報(bào)

11#
ID:692945 發(fā)表于 2020-2-15 00:10 | 只看該作者
你好,你還有這個(gè)app的源碼嗎?我想學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

12#
ID:692945 發(fā)表于 2020-3-11 18:12 | 只看該作者
小白請(qǐng)教,不是用藍(lán)牙控制嗎,為什么還用到按鍵?
回復(fù)

使用道具 舉報(bào)

13#
ID:65956 發(fā)表于 2020-3-12 08:47 | 只看該作者
這個(gè)充其量也只能是算局部室內(nèi)手機(jī)遙控器,算不上什么智能
回復(fù)

使用道具 舉報(bào)

14#
ID:540642 發(fā)表于 2020-3-15 17:25 | 只看該作者
這個(gè)插座是220v交流電嗎
回復(fù)

使用道具 舉報(bào)

15#
ID:342911 發(fā)表于 2020-3-17 11:38 | 只看該作者
感謝分享 太強(qiáng)了
回復(fù)

使用道具 舉報(bào)

16#
ID:555216 發(fā)表于 2020-3-20 17:33 | 只看該作者
謝謝,請(qǐng)問這個(gè)APP時(shí)可以用AS打開嗎
回復(fù)

使用道具 舉報(bào)

17#
ID:494479 發(fā)表于 2020-4-5 12:23 | 只看該作者
這個(gè)有全部的元器件清單么
回復(fù)

使用道具 舉報(bào)

18#
ID:281879 發(fā)表于 2020-4-5 14:11 | 只看該作者
謝謝分享 太牛了
回復(fù)

使用道具 舉報(bào)

19#
ID:630878 發(fā)表于 2020-4-24 11:38 來自手機(jī) | 只看該作者
作者您好,請(qǐng)問app在哪開發(fā)
回復(fù)

使用道具 舉報(bào)

20#
ID:739951 發(fā)表于 2020-4-28 11:16 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表