Arduino課程講義
2023/5/23
大綱
電腦環境
電腦預裝
課程中安裝
Arduino 介紹
Arduino 介紹
線上資源
Arduino 線路圖
Arduino 設定
Arduino 設定
Arduino 設定
設定連接 Port
Arduino 程式
程式碼:include
�#include <dht11.h>
dht11 DHT;�
程式碼:setup
// setup() 會先被執行且只會執行一次
void setup() {
// 設定serial傳輸率
Serial.begin(9600);
// 將 A0 設定為輸入
pinMode(A0, INPUT);
}
程式碼:loop
// loop() 裡面的程式會不斷重複執行
void loop() {
// 讀取 D2
DHT.read(D2);
// 讀取 D2 後的值寫到 serial port
Serial.print("temperature:");
Serial.print(DHT.temperature);
Serial.print(" humidity:");
Serial.print(DHT.humidity);
// 讀取 A0 並將值轉化為 0~99
Serial.print(" light:");
Serial.println((map(analogRead(A0), 0, 1024, 0, 99)));
// 等待 2 秒再抓取資料
delay(2000);
}
Dht11 Library
上傳
資料庫
安裝 MySQL
設定 SQL Server Express
Python
使用 pip 安裝
pip 安裝
Python 程式:import
import datetime
import serial
import serial.tools.list_ports
import pymysql
Import pyodbc
列出可用的 COM Port
ports = serial.tools.list_ports.comports()
for port in ports:
print(f"{port.device}: {port.description}")
讀取資料
# 讀取資料, 按下 Ctrl-C 中斷
with serial.Serial('COM5', 9600) as ser:
while True:
line = ser.readline().decode('utf-8').strip()
print(line)
建立SQL
def line_sql(line):
if ('temperature' in line):
list = line.split(' ')
print(list)
# 抓數字,加時間
temp = list[0].split(':')[1]
hum = list[1].split(':')[1]
light = list[2].split(':')[1]
sql = f'INSERT INTO dht (temp, hum, light) VALUES ({temp} {hum}, {light})'
insert(sql)
寫到資料庫
conn_str = (
'Driver={SQL Server};'
'Server=localhost\SQLEXPRESS;'
'Database=arduino;'
'Trusted_Connection=yes;'
)
def insert(sql):
with pyodbc.connect(conn_str) as conn:
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
讀取資料
# 按下 Ctrl-C 中斷
with serial.Serial('COM5', 9600) as ser:
while True:
line = ser.readline().decode('utf-8').strip()
line_sql(line)
Power BI
Power BI
(補充) Python 產生圖表
import matplotlib.pyplot as plt
plt.plot(hum_values, label="Humidity")
plt.plot(temp_values, label="Temperature")
plt.plot(light_values, label="Light")
plt.xlabel("Time")
plt.ylabel("Values")
plt.title("PowerBI Data")
plt.legend()
plt.show()