資料介紹
描述
你有沒(méi)有想過(guò)為什么智能手機(jī)被稱為智能手機(jī)?因?yàn)樗麄兒苈斆?,?duì)吧?他們會(huì)自動(dòng)、巧妙地完成一些工作。這是簡(jiǎn)短的答案。我在想,即使電腦比手機(jī)強(qiáng)大得多,為什么它們不聰明!比如手機(jī)有自動(dòng)亮度控制系統(tǒng),很方便,我一直都在用。但不知什么原因,電腦沒(méi)有自動(dòng)亮度控制系統(tǒng)。為了改變亮度,每次我都必須按一些按鈕(功能鍵)。在某些計(jì)算機(jī)中,一些組合鍵可以完成工作(通常是 fn+功能鍵)。我覺(jué)得這很煩人。所以我設(shè)計(jì)了一個(gè)簡(jiǎn)單的設(shè)備,可以連接到任何電腦上,電腦的亮度會(huì)自動(dòng)控制,就像我們的手機(jī)一樣。讓我們看看我是如何讓我的電腦變得智能的。
第 1 步:零件
其他 -
- USB 線(與 Arduino 板兼容)
- 焊接工具
- 還有一些刀具
而已。
第 2 步:原理 - 它是如何工作的?
在跳躍之前討論我們?cè)谧鍪裁纯偸呛玫摹?/font>一點(diǎn)理論就足以開(kāi)始。
我需要某種傳感器來(lái)檢測(cè)光強(qiáng)度。LDR 或光敏電阻最適合這種情況。LDR 將面向人(就像手機(jī)傳感器面向正面/人一樣)并獲取光強(qiáng)度數(shù)據(jù)。數(shù)據(jù)將由 Arduino 讀取。那是范圍從 0 到 1024 的模擬數(shù)據(jù)。
如果我們映射值(0 - 1024),我們可以控制亮度。我嘗試使用 Arduino 的“鍵盤(pán)”庫(kù)來(lái)使用 Arduino 按下功能按鈕。這不起作用,它還會(huì)凍結(jié)硬件鍵盤(pán)(因?yàn)殡娔X知道鍵盤(pán)已經(jīng)在工作)。
所以我將傳感器數(shù)據(jù)發(fā)送到在 PC 上運(yùn)行的 python 程序。其余的由 python 完成,我的意思是控制亮度。
現(xiàn)在,讓我們開(kāi)始制作吧。
第 3 步:制作和測(cè)試電路/概念
為了證明我的概念,我首先在面包板上制作了電路。并編寫(xiě)了一個(gè)簡(jiǎn)單的程序,通過(guò)Arduino的串行監(jiān)視器輸出傳感器數(shù)據(jù)(光強(qiáng)數(shù)據(jù))。
這是我編寫(xiě)的程序(從 gi??thub 下載)-
// define sensor pin
int sensor_pin = A3;
void setup() {
// set things here
Serial.begin(9600); // init serial communication at 9600 bps
}
void loop() {
// mainloop
int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
Serial.println(sensorValue); // send data over serial
delay(200); // a little delay to make things work better
}
我通過(guò)串行獲得了一些輸出數(shù)據(jù)。數(shù)據(jù)范圍從 0 到 1024(理論上)。但實(shí)際上,沒(méi)有 LDR 是完美的(即使在同一批次中也不行)。所以我得到了從 0 到 950 之類(lèi)的數(shù)據(jù)。仍然有效。在我的應(yīng)用程序中并不重要。
所以這是一個(gè)成功的測(cè)試,現(xiàn)在我可以繼續(xù)下一步了。
第 4 步:設(shè)計(jì)和制作 PCB
我在easyEDA上使用了相同的電路并設(shè)計(jì)了PCB(印刷電路板)。您可以看到我使用了兩個(gè)傳感器,實(shí)際上這只是出于設(shè)計(jì)目的。有兩個(gè) LDR,它看起來(lái)像一只蝸牛。LDR_L 是未使用的 LDR。
然后我從PCBWay.com制作了 PCB 。PCBWay 是最好的也是我最喜歡的 PCB 制造商之一。只需 5 美元,我就可以獲得 10 個(gè) PCB!無(wú)論如何,我使用了他們的快速訂購(gòu)頁(yè)面,然后是快速訂購(gòu) pcb部分,上傳了我的 PCB 并選擇了顏色。而已!我認(rèn)為快速訂購(gòu)部分對(duì)我們所有了解不多但只想完成它的人來(lái)說(shuō)是一種祝福。從這里獲取 PCB 。
我之前只用過(guò)黑色,它太亮了,這次我嘗試了啞光黑色。等了大約 3-4 天后,我得到了漂亮的 PCB。質(zhì)量一如既往地令人驚嘆。焊盤(pán)、阻焊層、絲網(wǎng)印刷盡可能完美。我想我愛(ài)上了啞光黑。
第 5 步:焊接 PCB 和完整的硬件
現(xiàn)在是時(shí)候?qū)|西焊接到位了。這很簡(jiǎn)單,因?yàn)槟抢餂](méi)有太多組件。焊接所有東西,確保我沒(méi)有吸入烙鐵的煙霧。
我使用女性頭,因?yàn)槲沂且粋€(gè)即插即用的人。您可以將 Arduino 板本身焊接在板上。
注意:不要吸入烙鐵煙霧!它可能會(huì)導(dǎo)致癌癥!
第 6 步:對(duì)電路板進(jìn)行編程(Arduino 代碼)
現(xiàn)在是時(shí)候上傳Arduino的程序了。Arduino 使用串行通信將數(shù)據(jù)發(fā)送到 PC。
首先,我定義了傳感器引腳,即傳感器輸入數(shù)據(jù)的 Arduino 引腳。
// define sensor pin
int sensor_pin = A3;
在設(shè)置功能中,我以 9600 的波特率開(kāi)始串行通信。每次為 Arduino 板供電時(shí),設(shè)置功能僅運(yùn)行一次。
void setup() {
// set things here
Serial.begin(9600); // init serial communication at 9600 bps
}
然后在主循環(huán)中它獲取數(shù)據(jù)并通過(guò)串行發(fā)送。保持 200ms 的一點(diǎn)延遲以使其順利運(yùn)行。
void loop() {
// mainloop
int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
Serial.println(sensorValue); // send data over serial
delay(200); // a little delay to make things work better
}
這是完整的代碼。從下面復(fù)制或從這里下載。
/* Computer Hack!
Brightness Controller
(C) License: GPL3-General Public License
author: ashraf minhaj
mail : ashraf_minhaj@yahoo.com
*/
// define sensor pin
int sensor_pin = A3;
void setup() {
// set things here
Serial.begin(9600); // init serial communication at 9600 bps
}
void loop() {
// mainloop
int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
Serial.println(sensorValue); // send data over serial
delay(200); // a little delay to make things work better
}
打開(kāi) Arduino.ide 并將程序上傳到我的 Arduino 板。
第 7 步:Python 編程(PC 版)
正如我們之前討論的,Arduino 向 Arduino 發(fā)送數(shù)據(jù),其余的由 python 完成。所以我寫(xiě)了一個(gè)簡(jiǎn)單的python腳本。
無(wú)論如何,如果您沒(méi)有安裝 python,請(qǐng)從這里安裝最新版本。安裝時(shí)請(qǐng)確保您已選中“將 python 添加到環(huán)境變量路徑”框。
好的,然后我打開(kāi)終端并安裝了兩個(gè)庫(kù),Pyserial和screen-brightness-control使用這些命令($ 符號(hào)表示它們?yōu)榻K端命令,復(fù)制沒(méi)有它們) -
$ pip install pyserial
$ pip install screen-brightness-control
安裝后,我編寫(xiě)了整個(gè)代碼。但是,讓我們向你們解釋一下。
在這里,我導(dǎo)入庫(kù)以使用它們。需要“serial.tools.list_ports”來(lái)自動(dòng)檢測(cè)Arduino板。
# import necessary libraries
import serial # for serial communication
import serial.tools.list_ports # to get Arduino port automatically
import screen_brightness_control as brightness # to control brightness
然后我聲明 buad rate 和端口號(hào)。端口會(huì)自動(dòng)檢測(cè)到,所以我將其保留為空字符串。但對(duì)于我的董事會(huì),buad rate 是 9600
BUAD_RATE = 9600 # Pro Micro's buad rate is 9600
PORT = ""
本節(jié)自動(dòng)獲取 USB 端口并嘗試與 Arduino 連接
# get sender device port automatically
serial_ports = list(serial.tools.list_ports.comports()) # get list of ports
for s_port in serial_ports: # iterate through all ports
if 'Arduino Micro' in s_port.description: # look for Pro Micro board
PORT = str(s_port[0]) # select first found board and
break # proceed
# connect with sender device
sender = serial.Serial(PORT, BUAD_RATE)
這是將 Arduino 數(shù)據(jù)(從 0 到 1024)轉(zhuǎn)換為 %data - 從 0 到 100 的函數(shù)。它稱為映射。Python map 函數(shù)做了其他事情,所以我不得不寫(xiě)它(雖然從互聯(lián)網(wǎng)上得到了一些幫助)。
def map_value(value, in_min=0, in_max=1024, out_min=0, out_max=100):
""" To map values. Arduio sends values from 0 to 1024. My goal
is to make them in between 0 to 100."""
return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
其余代碼只是確保亮度保持在光強(qiáng)度水平
# mainloop
while 1:
# convert byte data into string then integer
sensor_value = int(sender.readline().decode("utf-8")) # get data
final_value = map_value(value=sensor_value) # map value (brightness in percentage)
#print(sensor_value)
print(final_value)
brightness.set_brightness(final_value) # set brightness
# close port properly so that others can use it
sender.close()
無(wú)論如何,最好關(guān)閉使用后打開(kāi)的東西,無(wú)論是對(duì)話還是端口。
現(xiàn)在,我打開(kāi)了我最喜歡的 python 編輯器并運(yùn)行了程序。從github下載完整的程序。
""" Computer Hack!
Brightness Controller
(C) License: GPL3-General Public License
author: ashraf minhaj
mail : ashraf_minhaj@yahoo.com
"""
""" libraries -
$ pip install pyserial
$ pip install screen-brightness-control
"""
# import necessary libraries
import serial # for serial communication
import serial.tools.list_ports # to get Arduino port automatically
import screen_brightness_control as brightness # to control brightness
# device buadrate (bit per second)
# (change buadrate according to your need)
BUAD_RATE = 9600 # Pro Micro's buad rate is 9600
PORT = ""
# get sender device port automatically
serial_ports = list(serial.tools.list_ports.comports()) # get list of ports
for s_port in serial_ports: # iterate through all ports
if 'Arduino Micro' in s_port.description: # look for Pro Micro board
PORT = str(s_port[0]) # select first found board and
break # proceed
# connect with sender device
sender = serial.Serial(PORT, BUAD_RATE)
def map_value(value, in_min=0, in_max=1024, out_min=0, out_max=100):
""" To map values. Arduio sends values from 0 to 1024. My goal
is to make them in between 0 to 100."""
return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
# mainloop
while 1:
# convert byte data into string then integer
sensor_value = int(sender.readline().decode("utf-8")) # get data
final_value = map_value(value=sensor_value) # map value (brightness in percentage)
#print(sensor_value)
print(final_value)
brightness.set_brightness(final_value) # set brightness
# close port properly so that others can use it
sender.close()
第 8 步:即插即用!
最后,我用 USB 電纜將開(kāi)發(fā)板連接到我的 PC。然后運(yùn)行python程序。您可以在視頻中看到其余的內(nèi)容。它就像一個(gè)魅力!我以前從未對(duì)自己的工作如此滿意。
現(xiàn)在我的電腦有點(diǎn)智能了。
制作快樂(lè)?。?!
提示:為了節(jié)省電量,您可能需要削減 arduino LED 燈的痕跡。
- 基于1602加矩陣鍵盤(pán)的簡(jiǎn)易計(jì)算機(jī)原理圖及源碼 4次下載
- 基于C#的密爾計(jì)算機(jī)工具M(jìn)ilCalc 0次下載
- 如何使用FPGA總結(jié)設(shè)計(jì)CPU和計(jì)算機(jī) 13次下載
- 計(jì)算機(jī)的發(fā)展概況及常用的碼制與微型計(jì)算機(jī)的工作過(guò)程詳細(xì)說(shuō)明 0次下載
- 全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)教程的詳細(xì)資料說(shuō)明 8次下載
- 計(jì)算機(jī)人工智能算法的最新進(jìn)展詳細(xì)資料說(shuō)明 10次下載
- 大話計(jì)算機(jī)教程之狂想計(jì)算機(jī)PDF電子書(shū)免費(fèi)下載 0次下載
- 計(jì)算機(jī)通信與網(wǎng)絡(luò)教程—課件資料下載 0次下載
- 計(jì)算機(jī)串行通信基礎(chǔ)
- 計(jì)算機(jī)硬件知識(shí)試題
- 計(jì)算機(jī)導(dǎo)論教程
- 計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用基礎(chǔ)
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)教案 0次下載
- 計(jì)算機(jī)的發(fā)展及應(yīng)用 0次下載
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)教案 0次下載
- 計(jì)算機(jī)視覺(jué)的工作原理和應(yīng)用 1012次閱讀
- 自然語(yǔ)言處理技術(shù)在計(jì)算機(jī)系統(tǒng)中的應(yīng)用 283次閱讀
- 深度學(xué)習(xí)在計(jì)算機(jī)視覺(jué)領(lǐng)域的應(yīng)用 421次閱讀
- 計(jì)算機(jī)視覺(jué)的主要研究方向 488次閱讀
- 工業(yè)計(jì)算機(jī)與普通計(jì)算機(jī)的區(qū)別 609次閱讀
- 什么是工業(yè)控制計(jì)算機(jī)?它有哪些特點(diǎn)? 831次閱讀
- 什么是計(jì)算機(jī)視覺(jué)?計(jì)算機(jī)視覺(jué)的三種方法 4138次閱讀
- 計(jì)算機(jī)視覺(jué)的概念和主要任務(wù) 1147次閱讀
- 計(jì)算機(jī)芯片工作原理 6308次閱讀
- 計(jì)算機(jī)輔助技術(shù)有哪些_計(jì)算機(jī)輔助技術(shù)的應(yīng)用 3.9w次閱讀
- 什么是量子計(jì)算機(jī)_量子計(jì)算機(jī)原理_量子計(jì)算的兩種有效方法 1.1w次閱讀
- 什么是量子計(jì)算機(jī),它的工作原理是什么 1.3w次閱讀
- 如何才能提高計(jì)算機(jī)視覺(jué)的精確度?并讓它發(fā)揮更大的作用呢? 4380次閱讀
- 電子管計(jì)算機(jī)是第幾代_電子管計(jì)算機(jī)如何存儲(chǔ)數(shù)據(jù) 4.3w次閱讀
- 總結(jié)了計(jì)算機(jī)視覺(jué)與視頻行業(yè)四大應(yīng)用點(diǎn) 并讓讓視頻智能化不斷升級(jí) 7933次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多