Raspberry 的處理

顯示器的處理


我借了我一個(gè)同學(xué)的顯示器,含有VGA以及HDML 雙輸入的好家伙啊! 然后用一根我那臺(tái)05年之前的電腦的VGA線,配上我從團(tuán)隊(duì)拿回來(lái)的HDML轉(zhuǎn)VGA的轉(zhuǎn)換器,好歹是讓我的樹莓派成功投影到了顯示器上。以前都是直接網(wǎng)線連接,搞得我沒(méi)法給我的樹莓派聯(lián)網(wǎng),而且前期經(jīng)常就是一堆子毛病,比如樹莓派連接wifi 無(wú)法自動(dòng)獲取IP 然后還有就是一些wpa——supplicant的使用配置 簡(jiǎn)直是日了狗一樣的快感?。⌒液眠@次沒(méi)出啥岔子,這一步一切順利

圖片發(fā)自簡(jiǎn)書App

圖片發(fā)自簡(jiǎn)書App

電腦連接VNC


前面大概是6.00--7.30 這一點(diǎn)毫無(wú)緊張,因?yàn)闃漭蓻](méi)法連上網(wǎng),接上網(wǎng)線之后不知道是不是因?yàn)橄到y(tǒng)過(guò)舊 還是raspberry的系統(tǒng)跟ubuntu的軟件的不兼容,但是按道理來(lái)說(shuō)都是linux系列,沒(méi)道理出問(wèn)題啊。報(bào)錯(cuò)也都沒(méi)有依賴,給我說(shuō)的是語(yǔ)法,sysnax 錯(cuò)誤, 多了個(gè)(還是啥的。反正好煩,結(jié)果我的室友劉建勛拉完大便出來(lái) hiahia 一股子臭氣跟網(wǎng)絡(luò)連接成功的ssid 名稱就出來(lái)了。簡(jiǎn)直是,愛(ài)死了!!!! :D)

iwconfig  #查看網(wǎng)絡(luò)連接狀況的,比較詳細(xì)具體包括ssid 以及一些亂七八糟的其實(shí)沒(méi)卵用的東西
ifconfig  #查看本地ip以及一些參數(shù)的好命令,這個(gè)過(guò)程各種驚險(xiǎn)簡(jiǎn)直是無(wú)與倫比

還有很多的東西我參考了不少地方,下面給出連接,以及關(guān)鍵字,樹莓派 VNC 顯示屏 無(wú)法連接 ·

對(duì)了我還遇到了那個(gè)startx不能開啟的狀況,但是貌似重新

sudo raspi-config

一下,之后選擇第三個(gè)BOOT Option 然后進(jìn)去選擇第三個(gè)或者第四個(gè)就OK!

<h6>程序員這一行啊。實(shí)在是有意思,莫名其妙的可能就Debug了。就跟一個(gè)鬧氣的女朋一樣的!</h6>
另外有一些很有用的文章
http://www.zhihu.com/question/20764621
還有一篇適合在校大學(xué)生玩樹莓派的:相當(dāng)經(jīng)典,我覺(jué)得要是我來(lái)總結(jié),除了一些我自己遇到的比較奇葩的Bug之外,還有一些正常機(jī)器不會(huì)出的問(wèn)題之外不會(huì)比這個(gè)做的更好了。當(dāng)然,這個(gè)也不是萬(wàn)能的,還是要靠自己才是最好的!!
沒(méi)有顯示器可以使用樹莓派么,初次安裝過(guò)程中呢

圖片發(fā)自簡(jiǎn)書App

自動(dòng)連接wifi設(shè)置


wifi這個(gè)小妖精折磨的我啊。簡(jiǎn)直是欲仙欲死,但是就是那么的神奇啊。

Linux 自動(dòng)啟動(dòng)程序
1.開機(jī)啟動(dòng)時(shí)自動(dòng)運(yùn)行程序
Linux 加載后, 它將初始化硬件和設(shè)備驅(qū)動(dòng), 然后運(yùn)行第一個(gè)進(jìn)程init。init根據(jù)配置文件繼續(xù)引導(dǎo)過(guò)程,啟動(dòng)其它進(jìn)程。通常情況下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目錄下的腳本文件,可以使init自動(dòng)啟動(dòng)其它程序。例如:編輯 /etc/rc.d/rc.local 文件(該文件通常是系統(tǒng)最后啟動(dòng)的腳本),在文件最末加上一行“xinit”或“startx”,可以在開機(jī)啟動(dòng)后直接進(jìn)入X-Window。

主要用三種方式進(jìn)行這一操作:
ln -s 在/etc/rc.d/rc.d目錄中建立/etc/init.d/服務(wù)的軟鏈接(代表0~6七個(gè)運(yùn)行級(jí)別之一)
chkonfig 命令行運(yùn)行級(jí)別設(shè)置
ntsysv 偽圖形運(yùn)行級(jí)別設(shè)置

注意:1.這三種方式主要用于以redhat為基礎(chǔ)的發(fā)行版
2.如果還不知道運(yùn)行級(jí)別是什么,那么最好先看看相關(guān)資料再實(shí)驗(yàn)

第一種方式:ln -s 建立啟動(dòng)軟連接
在Linux中有7種運(yùn)行級(jí)別(可在/etc/inittab文件設(shè)置),每種運(yùn)行級(jí)別分別對(duì)應(yīng)著/etc/rc.d/rc[0~6].d這7個(gè)目錄

Tips:/etc/rc[06].d其實(shí)是/etc/rc.d/rc[06].d的軟連接,主要是為了保持和Unix的兼容性才做此策

這7個(gè)目錄中,每個(gè)目錄分別存放著對(duì)應(yīng)運(yùn)行級(jí)別加載時(shí)需要關(guān)閉或啟動(dòng)的服務(wù)
由詳細(xì)信息可以知道,其實(shí)每個(gè)腳本文件都對(duì)應(yīng)著/etc/init.d/目錄下具體的服務(wù)
K開頭的腳本文件代表運(yùn)行級(jí)別加載時(shí)需要關(guān)閉的,S開頭的代表需要執(zhí)行

因此,當(dāng)我們需要開機(jī)啟動(dòng)自己的腳本時(shí),只需要將可執(zhí)行腳本丟在/etc/init.d目錄下,然后在/etc/rc.d/rc*.d中建立軟鏈接即可
[root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
此處sshd是具體服務(wù)的腳本文件,S100ssh是其軟鏈接,S開頭代表加載時(shí)自啟動(dòng)
如果需要在多個(gè)運(yùn)行級(jí)別下設(shè)置自啟動(dòng),則需建立多個(gè)軟鏈接
這種方式比較繁瑣,適用于自定義的服務(wù)腳本
如果系統(tǒng)中已經(jīng)存在某些服務(wù)(比如安裝apache時(shí)就會(huì)有httpd服務(wù)項(xiàng)),可以使用下面的兩種方式

第二種方式:chkconfig
如果需要自啟動(dòng)某些服務(wù),只需使用chkconfig 服務(wù)名 on即可,若想關(guān)閉,將on改為off
在默認(rèn)情況下,chkconfig會(huì)自啟動(dòng)2345這四個(gè)級(jí)別,如果想自定義可以加上--level選項(xiàng)

上面我們先將sshd服務(wù)的所有啟動(dòng)級(jí)別關(guān)閉,然后使用--level選項(xiàng)啟動(dòng)自定義級(jí)別
Tips:--list選項(xiàng)可查看指定服務(wù)的啟動(dòng)狀態(tài),chkconfig不帶任何選項(xiàng)則查看所有服務(wù)狀態(tài)

第三種方式:ntsysv 偽圖形
ntsysv和chkconfig其實(shí)是一樣的,只不過(guò)加上了圖形而已
啟動(dòng)ntsysv有兩種方式,一是直接在命令行中輸入ntsysv,二是使用setup命令,然后選擇系統(tǒng)服務(wù)
默認(rèn)情況下,當(dāng)前運(yùn)行級(jí)別為多少,在ntsysv中設(shè)置的啟動(dòng)服務(wù)的級(jí)別便是多少
比如,我當(dāng)前的運(yùn)行級(jí)別是3,那么我在偽圖形界面中選擇啟動(dòng)服務(wù)后,它的運(yùn)行級(jí)別也會(huì)是3
如果想自定義運(yùn)行級(jí)別可使用ntsysv --level方式

以上三種操作需要保證服務(wù)腳本文件可執(zhí)行,并且要有root權(quán)限
其中,第一種方式多用于自定義腳本,第二、三種多用于系統(tǒng)已存在的服務(wù)
比如ftp、samba、ssh、httpd等等
并且,要做相關(guān)設(shè)置需要弄清楚運(yùn)行級(jí)別的問(wèn)題

Tips:如果想手動(dòng)啟動(dòng)某服務(wù),傳統(tǒng)的方式是 /etc/init.d 服務(wù)名 start
實(shí)際上還可以這樣,service 服務(wù)名 start

樹莓派自動(dòng)連接WiFi
將USB無(wú)線網(wǎng)卡插入樹莓派任一USB接口,插上網(wǎng)線,接通電源;在個(gè)人電腦上通過(guò)ssh連接樹莓派,默認(rèn)帳號(hào)是pi,默認(rèn)密碼是raspberry(如何通過(guò)ssh連接樹莓派,請(qǐng)自行網(wǎng)上查找,當(dāng)然如果樹莓派已配備好了鍵鼠,也可以本機(jī)操作)。
連接成功后,用lsusb命令,可以看到:

可以看到已經(jīng)識(shí)別硬件了,然后再用ifconfig,看到wlan0信息如下:

然后可以開始配置網(wǎng)絡(luò)了,修改/etc/network/interfaces文件,把它修改成這個(gè)樣子
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid YOUR-SSID-HERE
wpa-psk YOUR-PASSWORD-HERE
主要是添加wpa-ssid和wpa-psk,直接把你要連接的wifi的ssid和對(duì)應(yīng)密碼寫上就行了。
重啟網(wǎng)絡(luò)
/etc/init.d/networking restart

or: service networking restart

自動(dòng)連接多個(gè)WiFi網(wǎng)絡(luò)
當(dāng)你經(jīng)常切換到不同WiFi網(wǎng)絡(luò)中時(shí),你可以配置多個(gè)WiFi網(wǎng)絡(luò),讓樹莓派能自動(dòng)連接到可用WiFi網(wǎng)絡(luò)中。這里就要用到高大上的wpa_supplicant.conf了
修改/etc/wpa_supplicant/wpa_supplicant.conf,下面是我使用的配置文件:
ctrl_interface=/var/run/wpa_supplicant
#ap_scan=1

network={
ssid="wo_shi_yige_wifi_ssid"
scan_ssid=1
psk="wo_shi_mi_ma"
priority=5
}

network={
   ssid="pi"
   psk="onlyforpi"
   priority=1
}
**ap_scan:**1是默認(rèn)值,因此我注掉了 

1:這個(gè)模式下總是先連接可見的WiFi,如果掃描完所有可見的網(wǎng)絡(luò)之后都沒(méi)有連接上,則開始連接隱藏WiFi。2:會(huì)按照network定義的順序連接WiFi網(wǎng)絡(luò),遇到隱藏的將立刻開始連接,因此在這個(gè)模式下連接順序不受priority影響
ctrl_interface:這個(gè)文件夾里面存的是一個(gè)當(dāng)前使用的interface的socket文件,可以供其他程序使用讀取WiFi狀態(tài)信息
network:
是一個(gè)連接一個(gè)WiFi網(wǎng)絡(luò)的配置,可以有多個(gè),wpa_supplicant會(huì)按照priority指定的優(yōu)先級(jí)(數(shù)字越大越先連接)來(lái)連接,當(dāng)然,在這個(gè)列表里面隱藏WiFi不受priority的影響,隱藏WiFi總是在可見WiFi不能連接時(shí)才開始連接。

ssid:網(wǎng)絡(luò)的ssidpsk:密碼priority:連接優(yōu)先級(jí),越大越優(yōu)
scan_ssid:連接隱藏WiFi時(shí)需要指定該值為1
修改/etc/network/interfaces使用wpa_supplicant.conf來(lái)配置無(wú)線網(wǎng)絡(luò)

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
    pre-up wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B 

以后每次啟動(dòng)時(shí),樹莓派都會(huì)主動(dòng)去連接配置文件中預(yù)定義的這些wifi網(wǎng)絡(luò)。
在這個(gè)配置里面有一個(gè)ssid=’pi’網(wǎng)絡(luò),這是一個(gè)最低優(yōu)先級(jí)網(wǎng)絡(luò),是用來(lái)在陌生網(wǎng)絡(luò)中配置樹莓派的。當(dāng)處 在一個(gè)樹莓派配置里面的沒(méi)有的WiFi網(wǎng)絡(luò)中時(shí),我會(huì)自己創(chuàng)建一個(gè)叫pi的WiFi,當(dāng)其他網(wǎng)絡(luò)都不可用時(shí),樹莓派連到這個(gè)網(wǎng)絡(luò)里,然后我便可以ssh進(jìn) 樹莓派,添加網(wǎng)絡(luò)配置,然后重啟,就可以讓樹莓派加入到新的網(wǎng)絡(luò)中。

參考文章如下:
樹莓派自動(dòng)連接WiFi - 踏雪無(wú)痕何處是 - 博客園
ubuntu下設(shè)置開機(jī)自啟動(dòng)項(xiàng) - 風(fēng)生水起 - 博客園
Linux中設(shè)置服務(wù)自啟動(dòng)的三種方式 - Nerxious - 博客園

內(nèi)網(wǎng)外網(wǎng)IP獲取以及發(fā)郵件

我的主要想法是:要是每次我都得把?我的樹莓派連接到電腦上,然后傻逼一樣的知道了IP之后再來(lái)辛辛苦苦的著wifi鏈接進(jìn)去,這他么也太慘了。一點(diǎn)都不符合我極客風(fēng)范?。。。?!這怎么可以,一定要讓樹莓派用最低的姿態(tài)告訴我它自己的ip wifi名稱,然后等待我的臨幸。所以就有了用python 寫一個(gè)發(fā)送郵件的代碼,然后寫一個(gè)腳本,一邊登陸Wi-Fi,一邊把網(wǎng)絡(luò)信息處理好發(fā)送給我,然后我再跟著這個(gè)信息去進(jìn)去VNC界面。另外要把腳本設(shè)置為自啟動(dòng),不然很容易GG的

獲取自己內(nèi)網(wǎng)和外網(wǎng) ip 地址
通過(guò)ifconfig 和grep和 cut 和 curl 命令即可
如下:

ifconfig | grep 'Bcast' | cut -d B  -f 1 >> /home/pi/Desktop/ip.log
curl http://members.3322.org/dyndns/getip >>/home/pi/Desktop/ip.log

第一句是找到自己內(nèi)網(wǎng)Ip
第二句是找到自己外網(wǎng)Ip

發(fā)送郵件的程序:
網(wǎng)上有很多做法,通過(guò)web.py自帶的庫(kù)來(lái)發(fā)送郵件最為方便
先配置python +web.py
shell中輸入
<code>python</code>
如果顯示 Python 2.7.3,說(shuō)明打開python2成功(如果要退出,ctrl+z)
繼續(xù)輸入<code>import web</code>
如果ImportError: No module named xxx,則未安裝web.py
如果不報(bào)錯(cuò),則已安裝web.py
安裝web.py如下
shell中輸入
wget http://webpy.org/static/web.py-0.37.tar.gz
然后 tar -xf web.py-0.37.tar.gz **
然后
sudo python setup.py install**
再次嘗試**import web ** ,如果不報(bào)錯(cuò),則 安裝成功

發(fā)送ip到郵箱程序的實(shí)現(xiàn):
在終端中nano mail.py,然后寫入這些內(nèi)容,配置自己的賬號(hào)密碼,如果報(bào)錯(cuò),可能是程序縮進(jìn)的原因

#!\usr\bin\env python  
#encoding: utf-8  
import web  
#程序通過(guò)直接調(diào)用web.py里面的庫(kù) 來(lái)實(shí)現(xiàn)發(fā)郵件  
#cc,bcc 使用了默認(rèn)參數(shù)
def send_mail(send_to, subject, body, cc=None, bcc=None):  
    try:  
        web.config.smtp_server = 'smtp.163.com'   ##郵件發(fā)送服務(wù)器  
        web.config.smtp_port = 25    ##不設(shè)置將使用默認(rèn)端口  
        web.config.smtp_username = '你的郵箱用戶名,無(wú)@xx.com'   ##郵件服務(wù)器的登錄名  
        web.config.smtp_password = '你郵箱的密碼'   ##郵件服務(wù)器的登錄密碼  
        web.config.smtp_starttls = True  
        send_from = '你的郵箱賬號(hào),xxx@163.com'    ##發(fā)送的郵件          
        web.sendmail(send_from, send_to, subject, body, cc=cc, bcc=bcc)  
        return 1  #pass  
    except Exception, e:  
        print e  
        return -1 #fail  
  
if __name__=='__main__':  
    send_to = ['發(fā)送給誰(shuí)']     
    subject = '郵件標(biāo)題'  
    body = '郵件內(nèi)容\n試一下噻'  
    cc = ['抄送給誰(shuí)']   ##抄送  
    bcc = ['密送給誰(shuí)']  ##密抄  
    send_mail(send_to, subject, body, cc, bcc) 
配置完成之后,python mail.py 這時(shí)候你的郵箱就成功發(fā)送了
其中:body 是你在信中要寫的內(nèi)容
注意:  程序調(diào)用web.sendmail較慢,估計(jì)2s左右。
以下是我的mail.py:
#!\usr\bin\env python  
#encoding: utf-8  
import web  
def send_mail(send_to, subject, body, cc=None, bcc=None):  
    try:  
        web.config.smtp_server = 'smtp.163.com'   ##郵件發(fā)送服務(wù)器  
        web.config.smtp_port = 25    ##不設(shè)置將使用默認(rèn)端口  
        web.config.smtp_username = 'xxxx'   ##郵件服務(wù)器的登錄名  
        web.config.smtp_password = 'xxxx'   ##郵件服務(wù)器的登錄密碼  
        web.config.smtp_starttls = True  
        send_from = 'xxxx@163.com'    ##發(fā)送的郵件  
        
        web.sendmail(send_from, send_to, subject, body, cc=cc, bcc=bcc)  
        return 1  #pass  
    except Exception, e:  
        print e  
        return -1 #fail  
if __name__=='__main__':  
    f=file('/home/pi/Desktop/ip.log') 
    f1=f.read()
    f.close()
    send_to = ['xxxx@qq.com']          
    subject = 'connection check'  
    body = 'hello , xxxx! I am still alive. I will send you an email in another hour.',f1  
    send_mail(send_to, subject, body) 

此時(shí)的效果:
你已經(jīng)收到了你樹莓派的內(nèi)網(wǎng)和外網(wǎng)ip了!

參考文章:
樹莓派實(shí)戰(zhàn)2:發(fā)送ip地址到自己郵箱 - make_APP的博客 - 博客頻道 - CSDN.NET
樹莓派實(shí)戰(zhàn)一:查詢自己內(nèi)網(wǎng),外網(wǎng)ip - 綜合


圖片發(fā)自簡(jiǎn)書App
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容