SlideShare ist ein Scribd-Unternehmen logo
1 von 16
IOT感測器驅動程式
在樹莓派上實作
翁文謙 丁竑傑 王建斌
王明忠 吳建霖 張哲晃
陳維陽
專題動機
• 在物聯網的應用領域中,感知層是物聯網發展的基礎,依各種場景的需要會
使用到不同的感測器來收集資訊,但每種感測器要能在嵌入式系統上正常運
作,都需要由驅動程式來驅動,所以開發或移植驅動程式算是嵌入式系統必
備的技術,因此幾位對Linux驅動程式有興趣的同學決定一起開發感測器驅動
程式,並將此感測器拿來做物聯網的應用。
系統架構圖
電子羅盤
距離感測器
Cloud
Web Application
溫度:27 ℃
濕度 : 59 %
距離:212 cm
X:200
Y:191
Z:-351
GPIO
GPIO
I2C
溫溼度感測器
感測器驅動程式的實現
1.溫濕度感測器(DHT22)驅動程式
2.距離感測器(HC-SR04)驅動程式
3.電子羅盤(GY-273)驅動程式
DHT22
Driver
HCSR04
Driver
GY273
Driver
GPIO
GPIO
IIC
DHT22
HCSR04
GY273
KernelChar
/dev/dht22
/dev/hcsr04
/dev/gy237
Linux驅動程式運作流程
driver_init()
cdev_init()
gpio_i2c_setup()
interrupt_setup()
timer_setup()
device_open()
device_read()
- Trigger_Sensor
- Interrup_Irq
- Data_Analysis
device_close()
File Operations driver_exit()
cdev_exit()
gpio_i2c_free()
interrupt_free()
timer_cancel()
insmod Application rmmod
User Space
Kernel Space
Process_data() {
for( n = 0; n < 40; n++)
if(high_time[n] > 50us)
data_bit[n] = 1;
else
data_bit[n] = 0;
…
dht22_irq_handler() {
irq_counter++;
now = get_time();
if(gpio == low)
high_time[] = now – pre;
if(irq_counter == last)
WORK_QUEUE(process_data());
pre = now;
}
2-1 Linux Driver for DHT22
dht22的通訊機制:
DHT22
DHT22 signal
> 1 ms
dht22_trigger() {
gpio_set_direction(pin, out);
gpio_set_value(pin, low);
udelay(1000);
gpio_set_value(pin, high);
udelay(20);
gpio_set_direction(pin, in);
}
Interrup_setup() {
reuest_irq(pin,
dht22_irq_handler,
FALLING_And_RISING)
}
Hi_H Lo_H Hi_T Lo_T Checksum
Work_Queue
Humidity
= Hi_H x 256 + Lo_H
Temperature
= Hi_T x 256 + Lo_T
Checksum
= Hi_H + Lo_H + Hi_T + Lo_T
Trigger 40-Bit DataResponse
1. interrup_setup
2. trigger
3. interrup_irq
4. process_data
2-1 Linux Driver for DHT22
Ready
for
Trigger
Working Rest
2 sec
Dht22 State
dht22_read()
trigger_sensor()
Application 1
dht22_read()
trigger_sensor()
Application 2
? ?issue
dht22_read()
get_temp()
Application 1
dht22_read()
get_temp()
Application 2
timer_update(2 sec)
trigger_sensor()
update_temp()
Temp.
Value
Revised ProcessInitial Process
2-1 Linux Driver for DHT22
/dev 存取介面 /sys 存取介面
邏輯分析儀驗證波形
2-2 Linux Driver for HC-SR04
hc-sr04的通訊機制:
hcsr04_trigger() {
gpio_set_direction(pin, out);
gpio_set_value(pin, high);
udelay(10);
gpio_set_value(pin, low);
}
hcsr04_measure() {
interrup_setup;
hcsr04_trigger();
wait_event();
elapsed = endT – start;
}
hcsro4_irq_handler() {
if(gpio == high)
startT = get_time();
else {
endT =get_time();
send_event();
}
}
Interrup_setup() {
reuest_irq(pin,
hcsro4_irq_handler,
FALLING_And_RISING)
}
Elapsed
= (end_time – start_time) us
Sound_Speed
= 340 x 10-6 m/us
Distance
= Elapsed / 2 x Sound_Speed
Elapsed
1. interrup_setup 2. trigger
3. interrup_irq
4. process_data
2-2 Linux Driver for HC-SR04
/sys 存取介面
邏輯分析儀驗證波形
2-3 Linux Driver for GY-273
/dev/gy273
applicaiton
I2C-dev
gy273.dtbo
gy273@50{
compatible = “gy273“
reg = <0x1E>;
};
Device Tree Overlay
gy273.ko
I2C Client Driver (I2C-dev)
.driver = {
.name = “gy273”
}
.probe = gy273_probe,
.remove = gy273_remove,
gy273_probe = {
register_chardev();
cdev_init();
cdev_add();
}
當 device的compatible
等於driver的.name時
gy273_probe才會建立
字元裝置
1. add_device_node
2. add_i2c_dirve 3. probe
/dev/gy273
2-3 Linux Driver for GY-273
/dev 存取介面
測試程式讀取 /dev/gy273
IoT應用實例 #1
DHT22
風扇
溫溼度感測器應用
OLED
IoT應用實例 #2
距離感測器 電子羅盤感測器
HC-SR04
GY-273
PIR
IOT Platform
ThingsBoard
Web呈現感測數值

Weitere ähnliche Inhalte

Was ist angesagt?

x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 
VLANs in the Linux Kernel
VLANs in the Linux KernelVLANs in the Linux Kernel
VLANs in the Linux KernelKernel TLV
 
Poker, packets, pipes and Python
Poker, packets, pipes and PythonPoker, packets, pipes and Python
Poker, packets, pipes and PythonRoger Barnes
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤTakashi Hoshino
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみようTakashi Kajinami
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory modelSeongJae Park
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
 
C++による数値解析の並列化手法
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法dc1394
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cythonAtsuo Ishimoto
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークVirtualTech Japan Inc.
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク7shi
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門narusugimoto
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27Kentaro Ebisawa
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングNVIDIA Japan
 
Workshop - Linux Memory Analysis with Volatility
Workshop - Linux Memory Analysis with VolatilityWorkshop - Linux Memory Analysis with Volatility
Workshop - Linux Memory Analysis with VolatilityAndrew Case
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法MITSUNARI Shigeo
 

Was ist angesagt? (20)

x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
VLANs in the Linux Kernel
VLANs in the Linux KernelVLANs in the Linux Kernel
VLANs in the Linux Kernel
 
Poker, packets, pipes and Python
Poker, packets, pipes and PythonPoker, packets, pipes and Python
Poker, packets, pipes and Python
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
 
Os讀書會20170616
Os讀書會20170616Os讀書會20170616
Os讀書會20170616
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory model
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
C++による数値解析の並列化手法
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27
 
spinlock.pdf
spinlock.pdfspinlock.pdf
spinlock.pdf
 
Introduction to Spock
Introduction to SpockIntroduction to Spock
Introduction to Spock
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミング
 
Workshop - Linux Memory Analysis with Volatility
Workshop - Linux Memory Analysis with VolatilityWorkshop - Linux Memory Analysis with Volatility
Workshop - Linux Memory Analysis with Volatility
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 

Ähnlich wie IoT感測器驅動程式 在樹莓派上實作

Webduino 和 溫濕度感應
Webduino 和 溫濕度感應Webduino 和 溫濕度感應
Webduino 和 溫濕度感應dplayerd
 
Azure IoT Solution Guilde - Traditional Chinese
Azure IoT Solution Guilde - Traditional ChineseAzure IoT Solution Guilde - Traditional Chinese
Azure IoT Solution Guilde - Traditional ChineseDaniel Li
 
移动互联网的机遇与挑战
移动互联网的机遇与挑战移动互联网的机遇与挑战
移动互联网的机遇与挑战Courtney Chow
 
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座FinalCAVEDU Education
 
嵌入式 RFID 打卡系統
嵌入式 RFID 打卡系統嵌入式 RFID 打卡系統
嵌入式 RFID 打卡系統艾鍗科技
 
Network security reesjohnson
Network security reesjohnsonNetwork security reesjohnson
Network security reesjohnsonITband
 
智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本ztl2004
 
CSDN移动电子刊第三期
CSDN移动电子刊第三期CSDN移动电子刊第三期
CSDN移动电子刊第三期yangdj
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台MOBINODE
 
How to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watsonHow to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watson湯米吳 Tommy Wu
 
什么是云计算
什么是云计算什么是云计算
什么是云计算Liyang Tang
 
物聯網應用全貌以及微軟全球案例
物聯網應用全貌以及微軟全球案例物聯網應用全貌以及微軟全球案例
物聯網應用全貌以及微軟全球案例Herman Wu
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍36Kr.com
 
Big Data : The Missing Puzzle of Mobile Computing
Big Data : The Missing Puzzle of Mobile ComputingBig Data : The Missing Puzzle of Mobile Computing
Big Data : The Missing Puzzle of Mobile ComputingJazz Yao-Tsung Wang
 
Picoway Company Profile 1.5
Picoway Company Profile 1.5Picoway Company Profile 1.5
Picoway Company Profile 1.5picoway
 
Picoway Company Profile V1.5
Picoway Company Profile V1.5Picoway Company Profile V1.5
Picoway Company Profile V1.5picoway
 
Android作業系統移植之智慧電視整合平台
Android作業系統移植之智慧電視整合平台Android作業系統移植之智慧電視整合平台
Android作業系統移植之智慧電視整合平台艾鍗科技
 
2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟Tianwei Liu
 
Junior新趨勢: 邊緣運算
Junior新趨勢: 邊緣運算Junior新趨勢: 邊緣運算
Junior新趨勢: 邊緣運算Collaborator
 
分会场九Windows 7迁移最佳实践
分会场九Windows 7迁移最佳实践分会场九Windows 7迁移最佳实践
分会场九Windows 7迁移最佳实践ITband
 

Ähnlich wie IoT感測器驅動程式 在樹莓派上實作 (20)

Webduino 和 溫濕度感應
Webduino 和 溫濕度感應Webduino 和 溫濕度感應
Webduino 和 溫濕度感應
 
Azure IoT Solution Guilde - Traditional Chinese
Azure IoT Solution Guilde - Traditional ChineseAzure IoT Solution Guilde - Traditional Chinese
Azure IoT Solution Guilde - Traditional Chinese
 
移动互联网的机遇与挑战
移动互联网的机遇与挑战移动互联网的机遇与挑战
移动互联网的机遇与挑战
 
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
 
嵌入式 RFID 打卡系統
嵌入式 RFID 打卡系統嵌入式 RFID 打卡系統
嵌入式 RFID 打卡系統
 
Network security reesjohnson
Network security reesjohnsonNetwork security reesjohnson
Network security reesjohnson
 
智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本
 
CSDN移动电子刊第三期
CSDN移动电子刊第三期CSDN移动电子刊第三期
CSDN移动电子刊第三期
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台
 
How to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watsonHow to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watson
 
什么是云计算
什么是云计算什么是云计算
什么是云计算
 
物聯網應用全貌以及微軟全球案例
物聯網應用全貌以及微軟全球案例物聯網應用全貌以及微軟全球案例
物聯網應用全貌以及微軟全球案例
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍
 
Big Data : The Missing Puzzle of Mobile Computing
Big Data : The Missing Puzzle of Mobile ComputingBig Data : The Missing Puzzle of Mobile Computing
Big Data : The Missing Puzzle of Mobile Computing
 
Picoway Company Profile 1.5
Picoway Company Profile 1.5Picoway Company Profile 1.5
Picoway Company Profile 1.5
 
Picoway Company Profile V1.5
Picoway Company Profile V1.5Picoway Company Profile V1.5
Picoway Company Profile V1.5
 
Android作業系統移植之智慧電視整合平台
Android作業系統移植之智慧電視整合平台Android作業系統移植之智慧電視整合平台
Android作業系統移植之智慧電視整合平台
 
2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟
 
Junior新趨勢: 邊緣運算
Junior新趨勢: 邊緣運算Junior新趨勢: 邊緣運算
Junior新趨勢: 邊緣運算
 
分会场九Windows 7迁移最佳实践
分会场九Windows 7迁移最佳实践分会场九Windows 7迁移最佳实践
分会场九Windows 7迁移最佳实践
 

Mehr von 艾鍗科技

TinyML - 4 speech recognition
TinyML - 4 speech recognition TinyML - 4 speech recognition
TinyML - 4 speech recognition 艾鍗科技
 
Appendix 1 Goolge colab
Appendix 1 Goolge colabAppendix 1 Goolge colab
Appendix 1 Goolge colab艾鍗科技
 
Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用艾鍗科技
 
02 IoT implementation
02 IoT implementation02 IoT implementation
02 IoT implementation艾鍗科技
 
Tiny ML for spark Fun Edge
Tiny ML for spark Fun EdgeTiny ML for spark Fun Edge
Tiny ML for spark Fun Edge艾鍗科技
 
2. 機器學習簡介
2. 機器學習簡介2. 機器學習簡介
2. 機器學習簡介艾鍗科技
 
5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron) 5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron) 艾鍗科技
 
心率血氧檢測與運動促進
心率血氧檢測與運動促進心率血氧檢測與運動促進
心率血氧檢測與運動促進艾鍗科技
 
利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆艾鍗科技
 
無線聲控遙控車
無線聲控遙控車無線聲控遙控車
無線聲控遙控車艾鍗科技
 
最佳光源的研究和實作
最佳光源的研究和實作最佳光源的研究和實作
最佳光源的研究和實作 艾鍗科技
 
無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車 艾鍗科技
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement Learning艾鍗科技
 
人臉辨識考勤系統
人臉辨識考勤系統人臉辨識考勤系統
人臉辨識考勤系統艾鍗科技
 
智慧家庭Smart Home
智慧家庭Smart Home智慧家庭Smart Home
智慧家庭Smart Home艾鍗科技
 

Mehr von 艾鍗科技 (20)

TinyML - 4 speech recognition
TinyML - 4 speech recognition TinyML - 4 speech recognition
TinyML - 4 speech recognition
 
Appendix 1 Goolge colab
Appendix 1 Goolge colabAppendix 1 Goolge colab
Appendix 1 Goolge colab
 
Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用
 
02 IoT implementation
02 IoT implementation02 IoT implementation
02 IoT implementation
 
Tiny ML for spark Fun Edge
Tiny ML for spark Fun EdgeTiny ML for spark Fun Edge
Tiny ML for spark Fun Edge
 
Openvino ncs2
Openvino ncs2Openvino ncs2
Openvino ncs2
 
Step motor
Step motorStep motor
Step motor
 
2. 機器學習簡介
2. 機器學習簡介2. 機器學習簡介
2. 機器學習簡介
 
5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron) 5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron)
 
3. data features
3. data features3. data features
3. data features
 
心率血氧檢測與運動促進
心率血氧檢測與運動促進心率血氧檢測與運動促進
心率血氧檢測與運動促進
 
利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆
 
無線聲控遙控車
無線聲控遙控車無線聲控遙控車
無線聲控遙控車
 
最佳光源的研究和實作
最佳光源的研究和實作最佳光源的研究和實作
最佳光源的研究和實作
 
無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement Learning
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
人臉辨識考勤系統
人臉辨識考勤系統人臉辨識考勤系統
人臉辨識考勤系統
 
智慧家庭Smart Home
智慧家庭Smart Home智慧家庭Smart Home
智慧家庭Smart Home
 
智能健身
智能健身智能健身
智能健身
 

IoT感測器驅動程式 在樹莓派上實作