# Arduino課程講義 https://reurl.cc/r5dqxN ## Arduino IDE 安裝 - [x] https://www.arduino.cc/en/software ## Arduino 設定 - [ ] File > Preferences > Additional board manager URLs https://arduino.esp8266.com/stable/package_esp8266com_index.json - [ ] Tools > Board “LOLIN(WEMOS) D1 R2 & mini” ## DHT11 Library Download 下載 dht11-master.zip - https://codeload.github.com/adidax/dht11/zip/refs/heads/master ## 透過DHT取得溫濕度(亮度)的程式碼 ``` #include <dht11.h> dht11 DHT; // setup() 會先被執行且只會執行一次 void setup() { // 設定serial傳輸率 Serial.begin(9600); // 將 A0 設定為輸入 pinMode(A0, INPUT); } // 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); } ``` ## Python 下載 - https://www.python.org/ftp/python/3.11.3/python-3.11.3-amd64.exe 安裝 - Add python.exe to PATH - Install Now ## Python 程式 ```bash pip install serial pip install pyserial pip install pymysql ``` ```python import datetime import serial import serial.tools.list_ports import pymysql # 列出可用的 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) ``` ## Arduino -> SQL Server ```python import serial import serial.tools.list_ports import pyodbc # 列出可用的 COM Port ports = serial.tools.list_ports.comports() for port in ports: print(f"{port.device}: {port.description}") # 寫入資料庫 def insert(sql): with pyodbc.connect(conn_str) as conn: cursor = conn.cursor() cursor.execute(sql) conn.commit() # 建立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) # 讀取資料, 按下 Ctrl-C 中斷 with serial.Serial('COM5', 9600) as ser: while True: line = ser.readline().decode('utf-8').strip() # print(line) line_sql(line) ``` ## Power BI Desktop 下載 - https://www.microsoft.com/en-us/download/details.aspx?id=58494 Server=localhost\SQLEXPRESS;Database=master;Trusted_Connection=True;