在 http://www.cnblogs.com/heat-man/p/4564539.html中,在嵌入式Linux開發板上我們從最底層實現了一個智能家居的遠程控制系統,然而采取的是用網線連接到交換機上的,感覺老土。巧的是,來北京找工作,找到一家做Wifi模組的公司,這幾天老大給我的任務是在min210上開發板上跑我們的Wifi模塊,以便熟悉環境,好不容易昨天剛搞好,就把自己寫的服務器架上試了試,md,無線的感覺就是不一樣呀!
下面整理一下思路:
首先你需要一些硬件設施: ARM開發板,計算機(Ubuntu系統,虛擬機也可),wifi模塊(當然,任何家公司的都可以,當然是帶驅動的以及一些添加了對該模塊支持的一些開源軟件)。
嵌入式環境搭建:首先要將arm開發板燒錄Linux系統。
有了上面的准備就可以進入實質性的准備了,下面分步驟總結:
1 要想自己的嵌入式系統支持wifi功能,我們有了wifi模塊,還需要對應的驅動,第一步需要先編譯出模塊對應的驅動。(一般模塊供應商會提供對應的驅動程序包,按照說明編譯即)
2 加載驅動。 (至此,我們的嵌入式Linux系統便可以進行一些無線操作了,然而我們什么也沒有做,相當於買了個wifi模塊按照說明書,加載上了驅動)
3 用hostapd開源軟件將我們的wifi打造成為一個熱點。 (這樣,聯網終端就可以掃描到我們的嵌入式Linux系統,從而訪問我們的智能家居控制系統)
4 開啟dhcp服務,實現動自動分配IP。 (原諒我,我是第一次聽說這個玩意,但是用一次就愛上了,再也不用手動設定IP啦!)
5 開啟智能家居服務系統,其他聯網終端通過Wifi訪問智能家居服務系統。 (測試一下下)
上面五個步驟中,第一個步和wifi供應商聯系密切,操作按照說明一般沒什么大問題,這里不做說明,這里主要記錄hostapd和dhcp兩大開源軟件的配置和使用。
因此,我們直接就到了第三步,此時你的嵌入式系統已經具備wifi功能,我們要用hostapd將它打造成為一個master。(wifi熱點)
hostapd--制造無線路由器
關於hostapd,官網優雅而簡潔的說這是一款用於接入點控制和認證服務的用戶空間守護進程。翻譯一下就是,這是一款關於接入點控制和認證服務的服務,那么管理接入點和認證服務尼瑪這聽起來不就是路由器的功能嗎?原諒我的無知吧!我就認為這個hostapd就是造一個路由器吧!(專業語言應該這樣說:“hostapd能夠將wifi切換為master模式,能夠模仿路由器的功能,打造一個軟ap”)。
hostapd是一款開源軟件,你在使用它的時候務必要查詢它是否支持你機器上的無線網卡,公司用的hostapd是添加了對公司模塊的支持的,所以從晚上下載的hostapd並沒有卵用,不過后面的配置還是差不多的,只是wifi模塊供應商提供的hostapd內添加了對自己模塊的支持。
總之,無論是從模塊供應商或者是網上獲得的hostapd,務必確認支持你的無線網卡。
獲得源碼后,交叉編譯得到hostapd、hostapd_cli兩個命令,把這倆個命令拷貝到目標板的/bin下。這樣我們就獲得了開啟hostapd的命令。
開啟hostapd服務,我們還需要一個參數,因為你打造一個路由器,需要名字,需要密碼,需要加密方式。。。。,這些參數被集中到一個配置文件中,當然了文件的名字你可以隨便命名,后綴最好是.conf。我擦,說的這么easy,配置文件無從下手呀!有沒有一個demo呢?答案是肯定的,看來linux下的開源也是服務很周到的。這個文件就是存在於hostapd源文件目錄下的hostapd.conf。我們要打造一個什么樣的路由器,就要看里面的各個參數了。
里面關於每一項的配置項都是有說明的,當然都是鳥語啦!以后足夠牛逼啦,就可以添加自己的鳥語在里面啦。
諸如 ssid:設定你熱點的名稱 interface:網卡接口 wpa 設置你認證相關的,根據你的需要設置里面的參數,你就擬出了一份路由器設置方案。
將你的路由器設置方案,也即hostapd.conf拷貝到目標板的/etc下,然后就可以開啟服務了:
./hostapd /etc/hostapd.conf -B
以上命令執行,就按照你設置的信息創建了一個wifi熱點,-B代表后台運行。(假定你創建了一個名稱為heat的熱點,名稱,這樣你掏出手機后者打開電腦的網路無線列表就會發現heat赫然在目,然而你連接呀鏈接,總tm的超時,why?)
原來這是,ip不在一個網段在作怪,即你創建wifi的主機的ip和你的手機和電腦並不在一個局域網,so,接下來手動設置電腦和wifi熱點所在主機的ip為同一個網段,果然通了,然而你要每一個連你wifi的人都要手動設置ip嗎?關鍵是你要知道不是每個人都能熟練設置ip的,而且客戶是上帝,一次必須能讓客戶的聯網終端自動分配ip。
dhcp--動態分配ip給接入點
怎么樣才能做到呢?答案就是在我們的嵌入式Linux系統上開啟dhcp服務,關於dhcp服務大家可以看看鳥哥的書,講得都比較清楚,這個服務主要目的是,能讓連接你網絡的終端自動分配出和你能夠聯通的ip。這個命令在sbin/的目錄下,名字叫做udhcp,你可以通過配置busybox得到相關的命令,同時在內核的配置中也要選中支持該功能。
那么,ip自動分配,它的范圍是多少,最大連接時長是多少,這些東西在哪設置呢?答案依然是配置文件,道理和hostapd.conf很相似,就不多說了,至於如何配置網上很多教程。
接下來就可以啟動dhcp服務了,在啟動過程中,請務必執行ifconfig wlan0 up命令,同時還要為wlan0分配ip。
接下來執行:
udhcpd -fS /etc/udhcpd.conf
然后會報錯說在某某目錄下缺少某文件,直接用touch命名創建繼續執行上面命令即可!
接下來:終端會打印出udhcpd 服務已經啟動:然后就看起來沒有反應的樣子。。。
其實,你已經成功啦~ 用手機或者電腦連接你的wifi熱點,才會打印分配ip的信息。
最后,開啟我的智能家居控制系統,通過手機和電腦連接上wifi熱點,成功的可以看到系統的首頁,歐耶!無線服務器就這么在嵌入式linux系統下跑起來了。
這樣,就可以用手機控制家中用電器的開關啦!如果能做個app就更加高大上啦~~