<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將柔性傳感器與樹莓派連接并在LCD屏幕上顯示其值

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2022-12-31 09:33 ? 次閱讀

Raspberry Pi是一款基于ARM架構處理器的主板,專為電子工程師和業余愛好者設計。PI是目前最值得信賴的項目開發平臺之一。憑借更高的處理器速度和 1 GB RAM,PI 可用于許多備受矚目的項目,如圖像處理和物聯網。PI可以做很多很酷的事情,但一個可悲的功能是它沒有內置的ADC模塊。

在這個項目中,我們將學習如何將柔性傳感器樹莓派連接并在LCD屏幕上顯示其值。

所需材料:

樹莓派(任何型號)

ADC0804 集成電路

16*2液晶顯示屏

柔性傳感器

電阻器電容器

面包板或性能板。

ADC0804 單通道 8 位 ADC 模塊:

在繼續之前,讓我們了解一下這款ADC0804 IC,以及如何將其與樹莓派配合使用。ADC0804是一款單通道8位IC,這意味著它可以讀取單個ADC值并將其映射到8位數字數據。這些 8 位數字數據可以被樹莓派讀取,因此值將是 0-255,因為 2^8 是 256。如下面IC的引腳排列所示,引腳DB0至DB7用于讀取這些數字值。

poYBAGOs7n-ATRdCAABJc5HV-08457.gif

現在,另一個重要的事情是,ADC0804工作在5V,因此它提供5V邏輯信號輸出。在8引腳輸出(代表8位)中,每個引腳提供+5V輸出以表示邏輯“1”。所以問題是PI邏輯是+3.3V,所以你不能給PI的+3.3VGPIO引腳提供+5V邏輯。如果為PI的任何GPIO引腳提供+5V,電路板就會損壞。

因此,為了從+5V降壓邏輯電平,我們將使用分壓器電路。我們之前已經討論了分壓器電路,以進一步澄清。我們要做的是,我們使用兩個電阻將+5V邏輯分頻為2*2.5V邏輯。因此,除法后,我們將為樹莓派提供+2.5v邏輯。因此,每當ADC0804提供邏輯“1”時,PI GPIO引腳上都會看到+2.5V,而不是+5V。在此處了解有關ADC的更多信息:ADC0804簡介。

以下是我們在Perf板上構建的采用ADC0804的ADC模塊的圖片:

pYYBAGOs7oGADuDWAACRJl3jwEU281.jpg

電路圖及說明:

柔性傳感器與樹莓派接口的完整電路圖如下所示。解釋如下。

poYBAGOs7oOAckluAACwAYLFjKs909.png

這個樹莓派柔性傳感器電路可能看起來有點復雜,有很多電線,但如果你仔細觀察,大多數電線都直接從LCD和8位數據引腳連接到樹莓派。下表將幫助您建立和驗證連接。

引腳名稱 覆盆子別針編號 樹莓派 GPIO 名稱
液晶屏與液晶屏 引腳 4
液晶顯示器 Vdd 引腳 6 伏直流 (+5V)
液晶 V 形 引腳 4
液晶顯示器 Rs 引腳 38 GPIO 20
液晶顯示器 RW 引腳 39
液晶顯示器 E 引腳 40 GPIO 21
液晶屏 D4 引腳 3 GPIO 2
液晶屏 D5 引腳 5 GPIO 3
液晶屏 D6 引腳 7 GPIO 4
液晶屏 D7 引腳 11 GPIO 17
ADC0804 虛擬交流系統 引腳 2 伏直流 (+5V)
ADC0804 B0 引腳 19(至 5.1K) GPIO 10
ADC0804 B1 引腳 21(至 5.1K) GPIO 9
ADC0804 B2 引腳 23(至 5.1K) GPIO 11
ADC0804 B3 引腳 29(至 5.1K) GPIO 5
ADC0804 B4 引腳 31(至 5.1K) GPIO 6
ADC0804 B5 引腳 33(至 5.1K) GPIO 13
ADC0804 B6 引腳 35(至 5.1K) GPIO 19
ADC0804 B7 引腳 37(至 5.1K) GPIO 26
ADC0804 WR/INTR 引腳 15 GPIO 22

您可以使用下圖來確定樹莓上的引腳編號。

pYYBAGOs7oaABZ7xAAA8Mxok4OY526.png

與所有ADC模塊一樣,ADC0804 IC也需要時鐘信號才能工作,幸運的是該IC具有內部時鐘源,因此我們只需將RC電路添加到CLK輸入和CLK R引腳,如圖所示。我們使用了 10K 和 105pf 的值,但我們可以使用任何接近的值,例如 1uf、0.1uf、0.01uf 也應該有效。

然后,為了連接Flex傳感器,我們使用了一個使用100K電阻的分壓器電路。當 Flex 傳感器彎曲時,其兩端的電阻會發生變化,電阻兩端的電位降也會發生變化。該壓降由ADC0804 IC測量,并相應地生成8位數據。

poYBAGOs7omAXHUGAADfq3ODGmU491.jpg

對樹莓派進行編程

完成連接后,我們應該使用 Raspberry Pi 讀取這些 8 位的狀態并將它們轉換為十進制,以便我們可以使用它們。本頁末尾給出了用于執行相同操作并在LCD屏幕上顯示結果值的程序。此外,代碼在下面解釋為小垃圾。

我們需要一個 LCD庫來將 LCD 與 Pi 連接。為此,我們使用 shubham 開發的庫,它將幫助我們在四線模式下將 16*2 LCD 顯示器與 Pi 連接。此外,我們還需要庫來利用時間和 Pi GPIO 引腳。

注意:lcd.py 應從此處下載,并放置在保存此程序的同一目錄中。只有這樣,代碼才會編譯。

import lcd #Import the LCD library by shubham@electro-passion.com
import time #Import time
import RPi.GPIO as GPIO #GPIO will be reffered as GPIO only

LCD引腳定義分配給變量,如下所示。請注意,這些數字是 GPIO 引腳編號,而不是實際引腳編號??梢允褂蒙媳韺?GPIO 編號與引腳編號進行比較。數組二進制文件將包括所有數據引腳編號,數組位將存儲所有 GPIO 引腳的結果值。

#LCD pin definitions
D4=2
D5=3
D6=4
D7=17
RS=20
EN=21

binarys = (10,9,11,5,6,13,19,26) #Array of pin numbers connect to DB0-DB7

bits = [0,0,0,0,0,0,0,0] #resulting values of 8-bit data
現在,我們必須定義輸入和輸出引腳。七個數據引腳將是輸入引腳,觸發引腳(RST 和 INTR)將是輸出引腳。只有當我們根據數據表觸發輸出引腳在特定時間內為高電平時,我們才能從輸入引腳讀取 8 位數據值。由于我們已經在二進制數組中聲明了二進制引腳,因此可以使用 for 循環進行聲明,如下所示。

for binary in binarys:
GPIO.setup(binary, GPIO.IN) #All binary pins are input pins

#Trigger pin
GPIO.setup(22, GPIO.OUT) #WR and INTR pins are output
現在使用 LCD 庫命令,我們可以初始化 LCD 模塊并顯示一條小的介紹消息,如下所示。

mylcd=lcd.lcd()
mylcd.begin(D4,D5,D6,D7,RS,EN)

#Intro Message
mylcd.Print("Flex Sensor with")
mylcd.setCursor(2,1)
mylcd.Print("Raspberry Pi")
time.sleep(2)
mylcd.clear()
在無限 while 循環中,我們開始讀取二進制值將它們轉換為十進制并在 LCD 上更新結果。如前所述,在讀取ADC值之前,我們應該使觸發引腳在特定時間內保持高電平,以激活ADC轉換。這是使用以下行完成的。

GPIO.output(22, 1) #Turn ON Trigger
time.sleep(0.1)
GPIO.output(22, 0) #Turn OFF Trigger
現在,我們應該讀取 8 個數據引腳并更新 bit 數組中的結果。為此,我們使用 for 循環將每個輸入引腳與 True 和 False 進行比較。如果為 true,則相應的位數組將設為 1,否則將設為 0。這是所有8位數據將被分別讀取的0和1值。

#Read the input pins and update result in bit array
for i in range(8):
if(GPIO.input(binarys[i]) == True):
bits[i] = 1
if(GPIO.input(binarys[i]) == False):
bits[i] = 0
更新 bits 數組后,我們應該將此數組轉換為十進制值。這只不過是二進制到十進制的轉換。對于 8 位二進制數據,2^8 為 256。因此,我們將獲得從 0 到 255 的十進制數據。在python中,運算符“**”用于查找任何值的冪。由于位[0]以MSB開頭,我們將其乘以2^(7位)。這樣,我們可以將所有二進制值轉換為十進制數據,然后將其顯示在LCD上

#calculate the decimal value using bit array
for i in range(8):
decimal = decimal + (bits[i] * (2**(7-i)))
一旦我們知道十進制值,就很容易計算電壓值。我們只需要將其乘以 19.63。因為對于 8 位 5VADC,每個位都是 19.3 毫伏的類比。得到的電壓值是ADC0804 IC引腳Vin+和Vin-兩端出現的電壓值。

#calculate voltage value
Voltage = decimal * 19.63 *0.001 #one unit is 19.3mV

使用電壓值,我們可以確定柔性傳感器是如何彎曲的,以及它是如何彎曲的。在下面的幾行中,我剛剛將讀取的電壓值與預定的電壓值進行了比較,以指示Flex傳感器在LCD屏幕上的位置。

#compare voltage and display status of sensor
mylcd.setCursor(1,1)
if (Voltage>3.8):
mylcd.Print("Bent Forward")
elif (Voltage<3.5):
mylcd.Print("Bent Backward")
else:
mylcd.Print("Stable")

同樣,您可以使用電壓值來執行您希望樹莓派執行的任何任務。

使用樹莓派在液晶屏上顯示柔性傳感器值:

該項目的工作非常簡單。但請確保您已下載 lcd.py頭文件并將其放置在當前程序所在的同一目錄中。然后使用面包板或性能板在電路圖中顯示連接,并在Pi上運行以下程序,您應該開始工作。您的設置應如下所示。

pYYBAGOs7ouAW36iAADHYAvDKiA833.jpg

如圖所示,LCD將顯示十進制值,電壓值和傳感器位置。只需向前或向后彎曲傳感器,您應該能夠看到電壓和十進制值發生變化,還會顯示狀態文本。您可以連接任何傳感器,并注意到其兩端的電壓發生變化。

import lcd #Import the LCD library by electro-passionindia

import time #Import time

import RPi.GPIO as GPIO #GPIO will be referred as GPIO only



GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)



#LCD pin definitions

D4=2

D5=3

D6=4

D7=17

RS=20

EN=21



binarys = (10,9,11,5,6,13,19,26) #Array of pin numbers connect to DB0-DB7





bits = [0,0,0,0,0,0,0,0] #resulting values of 8-bit data





for binary in binarys:

GPIO.setup(binary, GPIO.IN) #All binary pins are input pins



#Trigger pin

GPIO.setup(22, GPIO.OUT) #WR and INTR pins are output





mylcd=lcd.lcd()

mylcd.begin(D4,D5,D6,D7,RS,EN)



#Intro Message

mylcd.Print("Flex Sensor with")

mylcd.setCursor(2,1)

mylcd.Print("Raspberry Pi")

time.sleep(2)

mylcd.clear()



while 1:



decimal = Voltage = 0 #intitialize to zero



GPIO.output(22, 1) #Turn ON Trigger

time.sleep(0.1)

GPIO.output(22, 0) #Turn OFF Trigger

mylcd.clear()



#Read the input pins and update result in bit array

for i in range(8):

if(GPIO.input(binarys[i]) == True):

bits[i] = 1

if(GPIO.input(binarys[i]) == False):

bits[i] = 0



#print binary values if required for debugging

## mylcd.Print("Binary= ")

## mylcd.setCursor(1,8)

## for i in range(8):

## mylcd.Print(bits[i])



#calculate the decimal value using bit array

for i in range(8):

decimal = decimal + (bits[i] * (2**(7-i)))



#Display decimal value

mylcd.setCursor(2,1)

mylcd.Print("D=")

mylcd.setCursor(2,3)

mylcd.Print(decimal)



#calculate voltage value

Voltage = decimal * 19.63 *0.001 #one unit is 19.3mV



#compare voltage and display status of sensor

mylcd.setCursor(1,1)

if (Voltage>3.8):

mylcd.Print("Bent Forward")

elif (Voltage<3.5):

mylcd.Print("Bent Backward")

else:

mylcd.Print("Stable")



Voltage = str(round(Voltage,2)) #limit to two digit after decimal



#display voltage

mylcd.setCursor(2,8)

mylcd.Print("V=")

mylcd.setCursor(2,10)

mylcd.Print(Voltage)


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2528

    文章

    48322

    瀏覽量

    741183
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4289

    瀏覽量

    164467
  • 樹莓派
    +關注

    關注

    113

    文章

    1646

    瀏覽量

    104816
收藏 人收藏

    評論

    相關推薦

    如何將DHT11與樹莓連接在16x2 LCD屏幕顯示溫度和濕度的值

    在本教程中,我們將學習如何將流行的DHT11傳感器與Raspberry Pi連接,并在16x2 LCD
    的頭像 發表于 11-14 16:53 ?3397次閱讀
    <b class='flag-5'>如何將</b>DHT11與<b class='flag-5'>樹莓</b>派<b class='flag-5'>連接</b>在16x2 <b class='flag-5'>LCD</b><b class='flag-5'>屏幕</b>上<b class='flag-5'>顯示</b>溫度和濕度的值

    樹莓之鬼影實錄(? ? ?)?

    到投影儀、熱釋電紅外運動傳感器、樹莓和一塊薄噴了反光漆的有機玻璃做屏幕。視頻投影儀:用HDMI接口和轉換電纜投影儀接到
    發表于 01-08 14:03

    樹莓派系列教程3:訪問樹莓

    本帖最后由 kaloha 于 2017-5-15 16:02 編輯 一、外接HDMI顯示器,鼠標鍵盤 如果把樹莓當作一個小電腦,那么可以外接鼠標鍵盤操作樹莓
    發表于 03-28 11:09

    樹莓3通過串口連接溫度傳感器求助?。?!

    實驗:溫度傳感器VCCGND RXD TXD連接樹莓派上面的VCCGND TXD RXD, 通過Python編寫的程序無法讀取溫度,讀取的數值都是空,請大俠幫幫忙????impor
    發表于 10-03 22:07

    樹莓使用3.5寸屏幕教程

    連接到電腦,打開Win32DiskImager.exe軟件,選擇第1步準備的.img文件,點擊write燒寫鏡像。3) 燒寫完成后,樹莓LCD
    發表于 02-12 23:12

    如何將傳感器傳輸回來的數據顯示在液晶顯示?

    如何將傳感器傳輸回來的數據(十六進制數組)顯示在液晶顯示?
    發表于 03-22 12:00

    樹莓不能正常顯示

    我使用樹莓,連接HDMI轉VGA接口線,連接到DELL顯示器,連接鍵盤,啟動后
    發表于 05-24 05:55

    如何連接溫濕度傳感器并寫程序顯示LCD?

    本人菜鳥一枚,剛入手了RPi B+ & Arduberry & Grove Base Shield各一枚,連起來并已啟動系統,請問如何連接溫濕度傳感器并寫程序
    發表于 08-22 05:55

    如何將脈沖傳感器連接到PSoCoad?

    我有一個脈沖傳感器(PPG),我試圖把它連接到一個模擬引腳,以便我可以存儲脈沖,但我有這個問題。所以,我的問題是如何將脈沖傳感器
    發表于 09-26 10:01

    如何將樹莓網關與外網連接——手把手教你如何將樹莓網關連接到服務之第三篇

    本文為系列文章——手把手教你如何將樹莓網關連接到服務之第三篇,涉及最后一個步驟,即步驟三:如何將
    發表于 05-20 07:00

    如何將樹莓網關連接到TTN——手把手教你如何將樹莓網關連接到服務之第四篇

    接下來,我們用實際應用實踐的例子,來告訴大家如何將樹莓網關連接到TTN服務。
    發表于 05-20 08:00

    樹莓DIY:無線感應報警

    ,LCD1602,蜂鳴器,單路徑循跡傳感器模塊。其主要作用如下:  樹莓:主控芯片,根據外部輸入控制輸出。主要利用樹莓
    發表于 05-23 08:00

    如何將溫度傳感器中的數值在LCD顯示出來?

    如何將溫度傳感器中的數值在LCD顯示出來?
    發表于 10-20 07:46

    樹莓傳感器教程

    樹莓傳感器教程
    發表于 10-07 07:13

    連接到STM32的LCD屏幕顯示BLE傳感器讀數

    電子發燒友網站提供《在連接到STM32的LCD屏幕顯示BLE傳感器讀數.zip》資料免費下載
    發表于 06-14 11:29 ?15次下載
    在<b class='flag-5'>連接</b>到STM32的<b class='flag-5'>LCD</b><b class='flag-5'>屏幕</b>上<b class='flag-5'>顯示</b>BLE<b class='flag-5'>傳感器</b>讀數
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>