1. 程式人生 > >關於51微控制器,Arduino,NodeMCU的那點點事。

關於51微控制器,Arduino,NodeMCU的那點點事。

以下是小白文:
初入大學的時候對什麼都是很新鮮的,而我也很喜歡去嘗試各種不同的東西。我的專業是網路工程,但是為什麼我會搞這些微控制器開發板的東西呢? 那還用問嗎,那是身為一個男人的浪漫啊。試想一下,你能控制一個數十臺四軸飛行器,讓他們在天空做任何姿態的動作(就像復仇者聯盟裡面那個場景,讓),那場面得有多麼震撼。閒話就到這裡了,下面還是進入正題吧。

個人使用經驗歸納:
51微控制器
這裡寫圖片描述
Q1:what is 51微控制器?
A1:第一次接觸,我也不知道是什麼東西,總是被告知是一個微機。後來接觸了,學習了,我給他的定義是“初生的嬰兒電腦(腦袋是一片空白的)”。就是他具備電腦的功能潛能,但是卻需要人去教會他,給它灌輸“知識”(也就是寫入程式)。他中間長條的那塊晶片就相當於人的大腦。而其他部件就是人體的器官,板子上面各種線路相當於人體的神經脈絡。頭腦被灌入知識,身體各部分就會按照“所學”知識進行相對應的動作。比如:給它寫入知識“旁邊那一排燈的第一盞LED燈點亮10秒,然後熄滅。”那麼那一盞燈就是按照你的命令進行發光和熄滅的動作。

Q2:輸入的“知識“是什麼? 怎麼輸入?
A2:知識就是C語言所寫的程式設計。靠用USB線與電腦連線,把C語言程式設計通過軟體燒進去。(”燒“:通俗講就是搞進去);

Q3:51微控制器能做什麼?
A3:閃爍的LED燈,LCD液晶屏上顯示你想要顯示的文字(就像街邊的電子螢幕廣告一樣),做一個溫度(51微控制器內建溫度感測器)和時間的顯示器,做一個遠端空調遙控器(通過內建的紅外感測器)等等。

PS:當你通過51微控制器點亮第一盞LED燈的時候,你就會體驗到微控制器的魅力了,這是每個初學者共同的感受。 當你把這塊微控制器上的所有模組都弄明白後,你還可以外接一些感測器進行操作,比如煙霧感測器,超聲波感測器,電子羅盤等等。

Arduino
這是我入手的第二種開發板。Arduino有很多個系列,UNO,nano,mini等等。初學者建議入手Arduino UNO。相比於51微控制器,這個開發板更小更輕盈,操作更方便,因為很多函式是封裝的(可以理解為功能是封裝的,只要你用一條語句就可以呼叫那個功能,而51微控制器則需要把那個功能的實現方法也要寫出來。)。所以當我十分艱辛的學完51微控制器後,我再看Arduino,我基本上是半天就入門了(天壤之別啊!51微控制器我可是忍著看了好幾個月的)。所以如果是基於興趣或者不準備深入嵌入式學習的話,還是建議玩Arduino算了,它就像樂高積木一樣。只用把想要的功能拼裝起來。入門簡單,但是要成為大神,也一樣是很難的。隨著創客文化的興起,Arduino作為一種更為適合於產品創作的板子在未來是很吃香的。
下面是Arduino UNO
Arduino UNO

Q1:如果用Arduino 進行創作?
A1:例如:做一個智慧插座(簡易版)
需要硬體:Arduino開發板一塊,3.3v穩壓模組,繼電器模組,插座外殼,WIFI模組(選擇ESP8266)。
如何連線?:插座-繼電器-arduino-wifi模組
工作原理:這裡選擇wifi模組作為Server,手機作為Client。手機連線wifi模組發射出來無線wifi,然後輸入相應命令與wifi模組進行通訊,arduino接收wifi模組收到的資訊,然後進行處理,開啟相應的功能(連線繼電器的IO口工作),繼電器工作,插座通電。
詳細的製作過程經驗之後再分享。

Q2:Arduino 與51微控制器的區別。
A2:Arduino是免除硬體底層的開發板,而51微控制器則連底層也要寫。

拿個delay() 延遲函式做例子。
51微控制器:需要自己寫這個延遲函式

void delay(unsigned int xms)  // xms代表需要延時的毫秒數
{
    unsigned int x,y;
    for(x=xms;x>0;x--)
        for(y=110;y>0;y--);
}//這裡需要自己用除錯工具來測試這個函式執行的時間是否是自己所需的延遲時間。

Arduino:不需要自己寫這個函式,基本庫中就有這個函數了

delay(unsigned int xms);   //xms代表需要延時的毫秒數,庫中已經寫好了,而且給出的標準是延遲x毫秒。

NodeMCU
這是我在做智慧插座時接觸的一塊近年來很火的一個開發板。簡單的說他就是Arduino+ESP8266的開發板。相當於arduino自帶wifi功能。而且用它來實現遠端控制更為簡單,在未來智慧家居發展的路上它必將越來越火。相比較於arduino它免除了無線通訊時繁雜的資料處理。用它來進行無線通訊只需簡單的幾行程式碼函式。(原諒我偷懶了。NodeMCU的介紹日後再詳細補上)
NodeMCU