Presentation is loading. Please wait.

Presentation is loading. Please wait.

崑山科技大學 微處理機應用暨實習(一) 講師:曹永忠 日期:105學年度第二學期

Similar presentations


Presentation on theme: "崑山科技大學 微處理機應用暨實習(一) 講師:曹永忠 日期:105學年度第二學期"— Presentation transcript:

1 崑山科技大學 微處理機應用暨實習(一) 講師:曹永忠 日期:105學年度第二學期
Ameba 8195AM 網路程式開發基本介紹 崑山科技大學 微處理機應用暨實習(一) 講師:曹永忠 日期:105學年度第二學期

2 大 綱 前言 空氣盒子產品 Arduino 程式介紹 Arduino 程式介面 Arduino架構 程式開發 啟動開發環境 Q&A 關於作者
參考資料 2019/4/27

3 Arduino 程式介紹 2019/4/27

4 Arduino 程式架構 2019/4/27 4

5 Arduino程式的介面 功能表

6 將程式燒入到 Arduino 開啟舊檔 回傳值 同等於C語言的Rebuild All 儲存檔案 開新檔案

7 撰寫程式內容 要注意是否連線, 若未連線可以Rebuild但不可燒入

8 未連線 已連線

9 Arduino程式架構 (一.)宣告: Arduino宣告方式與C相同,例如:int,float… (二.)初始化 Setup(): 使Arduino板子裝置妥當的指令 EX: int ledPin=7; / 宣告Arduino7號腳為輸入腳/ Setup() { pinMode(ledPin,INPUT); }

10 (三.)執行Loop(): 為程式的主要內容,這程式內容會一直重複被執行 EX: Loop() { …… }

11 (四. )函式: 1. pinMode(7,INPUT) //將腳位7設定為輸入模式 2
(四.)函式: 1. pinMode(7,INPUT) //將腳位7設定為輸入模式 2. digitalWrite(8,HIGH) (數位腳專用) //將腳位8設定輸出高電位 3. val=digitalRead(7) (數位腳專用) //讀出腳位7的值並指定給 val變數

12 4. analogWrite(9,128) (數位訊號專用所設計的函式) //將擁有PWM的數位腳位9 設定輸出電位2
4.analogWrite(9,128) (數位訊號專用所設計的函式) //將擁有PWM的數位腳位9 設定輸出電位2.5V對應值大 約為 val=analogRead(0) (類比腳專用) //讀出腳位0的值並指定給 val變數(且analogRead可讀 取範圍0(0V)~1023(5V))

13 系統開發 2019/4/27 13

14 啟動開發環境 2019/4/27 14

15 開啟程式 2019/4/27 15

16 啟動程式 2019/4/27 16

17 選擇開發版 2019/4/27 17

18 確定通訊埠 2019/4/27 18

19 選擇通訊埠 2019/4/27 19

20 開啟程式 2019/4/27 20

21 讀取WIFI MAC資料 2019/4/27 21

22 開啟程式CheckMac 2019/4/27 22

23 CheckMac 程式重點解說 #include <WiFi.h> 使用網路必要函數
uint8_t MacData[6]; 儲存 MAC資料 GetWifiMac() 取得MAC函數 WiFi.status(); 顯示WIFI狀態 WiFi.macAddress(MacData); 取得MAC資料 print2HEX() 轉換內容為十六進位碼 2019/4/27 23

24 檢查AP是否連接的上 2019/4/27 24

25 開啟程式CheckAP 2019/4/27 25

26 CheckAP程式重點解說 #include <WiFi.h> 使用網路必要函數
uint8_t MacData[6]; 儲存 MAC資料 IPAddress Meip ,Megateway ,Mesubnet ; 宣告ip、閘道器、子網路遮罩 int status = WL_IDLE_STATUS; 連線網路狀態 GetWifiMac() 取得MAC函數 ShowMac() ; 秀出MAC資料 WiFi.status(); 顯示WIFI狀態 WiFi.macAddress(MacData); 取得MAC資料 initializeWiFi(); 進行連線 printWifiData() ; 列印網路狀態資訊 2019/4/27 26

27 CheckAP程式重點解說 status = WiFi.begin(ssid); 不使用加密連AP
status = WiFi.begin(ssid, pass); 使用加密連AP status == WL_CONNECTED 連AP是否成功 WiFi.status() 連接成功狀態 Meip = WiFi.localIP(); 取得連線IP Megateway = WiFi.gatewayIP();取得連線閘道器 WiFi.subnetMask(); 取得連線子網路遮罩 2019/4/27 27

28 ScanNetworks(掃描AP) 2019/4/27 28

29 開啟程式ScanNetworks 2019/4/27 29

30 ScanNetworks 程式重點解說 #include <WiFi.h> 使用網路必要函數
WiFi.status() == WL_NO_SHIELD 檢查有網路供能否 WiFi.firmwareVersion();檢查網路韌體版本 listNetworks() 列出可連接到的AP(自訂) WiFi.scanNetworks(); 取得可連接到的AP並存入(-1為沒有AP可連接) WiFi.SSID(n) 可連接到的AP(n)的名字 WiFi.RSSI(n) 可連接到的AP(n)的RSSI WiFi.encryptionTypeEx(n)可連接到的AP(n)的加密方式I 2019/4/27 30

31 WIFIAPMODE(啟動AP模式) 2019/4/27 31

32 開啟程式WIFIAPMODE 2019/4/27 32

33 WIFIAPMODE程式重點解說 WiFi.apbegin(ssid, pass, channel); 啟動AP模式 SsidAP名字
PassAP 連線密碼 ChannelAP 連線通道 printWifiData(); 列印網路資訊 WiFi.BSSID(bssid); 列印AP網路資訊 WiFi.encryptionType(); AP加密狀態 2019/4/27 33

34 WebServerControlRelay 使用Client模式建立網頁伺服器
2019/4/27 34

35 開啟程式WebServerControlRelay
2019/4/27 35

36 電路連接 2019/4/27 36

37 WebServerControlRelay程式重點解說
#include <WiFi.h> 使用網路必要函數 WiFiServer server(80); 啟動PORT 80進行 status = WiFi.begin(ssid); 不使用加密連AP status = WiFi.begin(ssid, pass); 使用加密連AP server.begin(); 開始啟動PORT 80 傾聽 printWifiStatus(); 列印網路資訊 WiFiClient client = server.available(); 有人連接Port 80 client.connected() 有用戶連接中 client.available() 用戶送資料進來 2019/4/27 37

38 WebServerControlRelay程式重點解說
char c = client.read(); 讀出用戶送的資料(一個位元組) client.println(“HTTP/ OK”); …. 送給用戶端一段HTML碼,用瀏覽器方能顯示 currentLine.endsWith(“GET /H”) 判斷是否用/H 結束 currentLine.endsWith(“GET /L”) 判斷是否用/L 結束 client.stop(); 與用戶連線停止傳輸資料 2019/4/27 38

39 網頁畫面 2019/4/27 39

40 APMODEControlRelay 使用AP模式建立網頁伺服器
2019/4/27 40

41 開啟程式APMODEControlRelay
2019/4/27 41

42 電路連接 2019/4/27 42

43 APMODEControlRelay程式重點解說
#include <WiFi.h> 使用網路必要函數 WiFiServer server(80); 啟動PORT 80進行 status = WiFi.begin(ssid); 不使用加密連AP status = WiFi.begin(ssid, pass); 使用加密連AP server.begin(); 開始啟動PORT 80 傾聽 printWifiStatus(); 列印網路資訊 WiFiClient client = server.available(); 有人連接Port 80 client.connected() 有用戶連接中 client.available() 用戶送資料進來 2019/4/27 43

44 APMODEControlRelay程式重點解說
char c = client.read(); 讀出用戶送的資料(一個位元組) client.println(“HTTP/ OK”); …. 送給用戶端一段HTML碼,用瀏覽器方能顯示 currentLine.endsWith(“GET /H”) 判斷是否用/H 結束 currentLine.endsWith(“GET /L”) 判斷是否用/L 結束 client.stop(); 與用戶連線停止傳輸資料 2019/4/27 44

45 網頁畫面 2019/4/27 45

46 Set_RTC_Data(設定RTC時間)
2019/4/27 46

47 開啟程式Set_RTC_Data 2019/4/27 47

48 電路連接 2019/4/27 48

49 電路連接 2019/4/27 49

50 Set_RTC_Data程式重點解說 #include <Wire.h> I2C通訊用
#include “RTClib.h“ DS1307 時鐘模組用 RTC_DS1307 RTC; 宣告時鐘物件 initRTC() ; 啟動時鐘物件(自訂) Wire.begin(); 開始I2C通訊 RTC.begin(); 開始時鐘物件通訊 RTC.isrunning() 時鐘物件順利啟動 RTC.adjust(DateTime(mYear,mMonth,mDay,mHour,mMinute,mSecond)); 調整設定DS1307 時鐘模組時間內容 2019/4/27 50

51 執行畫面 2019/4/27 51

52 ReadTime(讀取RTC時間) 2019/4/27 52

53 開啟程式ReadTime 2019/4/27 53

54 電路連接 2019/4/27 54

55 電路連接 2019/4/27 55

56 ReadTime程式重點解說 #include <Wire.h> I2C通訊用
#include “RTClib.h“ DS1307 時鐘模組用 RTC_DS1307 RTC; 宣告時鐘物件 initRTC() ; 啟動時鐘物件(自訂) Wire.begin(); 開始I2C通訊 RTC.begin(); 開始時鐘物件通訊 RTC.isrunning() 時鐘物件順利啟動 ShowDateTime() 顯示DS1307 時鐘內容(自訂) 2019/4/27 56

57 ReadTime程式重點解說 DateTime now = RTC.now(); 取得RTC時鐘物件 now.hour() 取得小時
now.minute() 取得分 now.second() 取得秒 now.year() 取得年 now.month() 取得月 now.day() 取得日 2019/4/27 57

58 執行畫面 2019/4/27 58

59 UdpNtpClient 讀取網路時間資料
2019/4/27 59

60 開啟程式UdpNtpClient 2019/4/27 60

61 UdpNtpClient程式重點解說 #include <WiFi.h> 使用網路必要函數
#include <PubSubClient.h>使用網路UDP必要函數 #include <WiFiUdp.h>使用網路UDP必要函數 uint8_t MacData[6]; 儲存 MAC資料 const char ntpServer[] = “pool.ntp.org”; 網路時間伺服器 initializeWiFi(); 啟動網路 ShowNTPDateTime() ; 取得網路時間並顯示 retrieveNtpTime() ;取得網路時間 getCurrentTime(epoch+timeZoneOffset, &NDPyear, &NDPmonth, &NDPday, &NDPhour, &NDPminute, &NDPsecond); 將網路時間存入變數 2019/4/27 61

62 UdpNtpClient程式重點解說 Udp.beginPacket(ntpServer, 123) 與網路伺服器通訊
Udp.write(nptSendPacket, NTP_PACKET_SIZE); 告訴網路伺服器要取得時間 Udp.endPacket(); 結束通訊 Udp.parsePacket() 得到網路伺服器傳送時間資料通知 Udp.read(ntpRecvBuffer, NTP_PACKET_SIZE) 讀取網路伺服器傳送時間資料 epoch = secsSince seventyYears ; 計算時間 epochSystem = epoch - millis() / 1000;計算時間(秒) getCurrentTime() 計算網路時間,回傳年、月、日、時、分、秒到變數 2019/4/27 62

63 執行畫面 2019/4/27 63

64 SetTime_fromNet 網路校時 2019/4/27 64

65 開啟程式SetTime_fromNet 2019/4/27 65

66 SetTime_fromNet程式重點解說
#include <WiFi.h> 使用網路必要函數 uint8_t MacData[6]; 儲存 MAC資料 initRTC() ; 初始化時鐘模組 ShowNTPDateTime() ; 取得網路時間並顯示 retrieveNtpTime() ;取得網路時間 getCurrentTime(epoch+timeZoneOffset, &NDPyear, &NDPmonth, &NDPday, &NDPhour, &NDPminute, &NDPsecond); 將網路時間存入變數 SetRTCTime(NDPyear, NDPmonth, NDPday, NDPhour, NDPminute, NDPsecond); 將取得網路時間調整時鐘模組 2019/4/27 66

67 執行畫面 2019/4/27 67

68 WiFiWebClient 讀取網頁資料 2019/4/27 68

69 開啟程式WiFiWebClient 2019/4/27 69

70 WiFiWebClient程式重點解說 #include <WiFi.h> 使用網路必要函數
uint8_t MacData[6]; 儲存 MAC資料 GetWifiMac() 取得MAC函數 WiFi.status(); 顯示WIFI狀態 printWifiStatus(); 列印網路狀態 client.connect(server, 80) 連到Server(用port80) client.println(“GET /search?q=ameba HTTP/1.1”); 送給伺服器端資料 client.available() 連線對象要送資料 char c = client.read(); 讀取連線對象要送資料 2019/4/27 70

71 lcd1602_I2C_mills 顯示資料在LCD上
2019/4/27 71

72 開啟程式lcd1602_I2C_mills 2019/4/27 72

73 開啟程式lcd1602_I2C_mills 2019/4/27 73

74 lcd1602_I2C_mills程式重點解說 #include <I2CIO.h> I2C 函數
#include <LCD.h> LCD函數 #include <LiquidCrystal_I2C.h> I2C版LCD函數 #define I2C_ADDR 0x27 設定LCD I2C位址 lcd.begin (16,2); 設定LCD寬度與高度 lcd.setBacklight(LED_ON); 設定LCD背光 lcd.backlight();啟動LCD背光 lcd.setCursor(0,0); LCD歸零定位 lcd.print(“Hello, world!”); 印出Hello World 2019/4/27 74

75 DHTx 讀取溫溼度資料 2019/4/27 75

76 開啟程式DHTx 2019/4/27 76

77 電路連接 2019/4/27 77

78 電路連接 2019/4/27 78

79 DHTx 程式重點解說 #include “DHT.h” 使用溫溼度模組必要函數
#define DHTTYPE DHT22 宣告使用哪種DHT溫溼度模組 DHT dht(DHTSensorPin, DHTTYPE); 取得溫溼度物件 dht.begin(); 溫溼度物件通訊 ShowHumidity() ; 顯示溫溼度資料(自訂) dht.readHumidity(); 讀取濕度 ht.readTemperature(true); 讀取溫度 2019/4/27 79

80 Q & A 感謝聆聽 恭請指教 2019/4/27


Download ppt "崑山科技大學 微處理機應用暨實習(一) 講師:曹永忠 日期:105學年度第二學期"

Similar presentations


Ads by Google