IKEA_Clock
IKEA時鐘
IKEA時鐘
這個範例,應該是從日本那兒學來的(原作者寫了這麼長的程式碼,)實在厲害),使用M5Stack-FIRE來實作,程式是使用Arduino code,這個時鐘很有趣,翻轉四個方向會出現不同的功能,分別是時鐘、鬧鐘,碼錶和溫度計
這個範例,應該是從日本那兒學來的(原作者寫了這麼長的程式碼,)實在厲害),使用M5Stack-FIRE來實作,程式是使用Arduino code,這個時鐘很有趣,翻轉四個方向會出現不同的功能,分別是時鐘、鬧鐘,碼錶和溫度計
參考網址:qiita.com/yankee/items/1591724d8a2722951c7e#%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%A0%E6%A9%9F%E8%83%BD
~就是在模擬這一顆時鐘…
~就是在模擬這一顆時鐘…
產品說明是這樣的:
產品說明是這樣的:
每一邊都有不同功能,只要翻轉就能變換功能:時間/日期、鬧鐘、溫度和計時器;不佔用空間,又容易使用,即使是半睡半醒狀態也能使用
每一邊都有不同功能,只要翻轉就能變換功能:時間/日期、鬧鐘、溫度和計時器;不佔用空間,又容易使用,即使是半睡半醒狀態也能使用
※圖片取自IKEA購物網
※圖片取自IKEA購物網
※如果看一下價錢,現在特價99元,哈哈…拿一千多大洋的M5Stack FIRE IoT Development Kit來仿做一個99元的商品?唉呀!我們說的是程式的樂趣!而且IKEA這顆時鐘不能上網的,我們的仿冒品是連網校正時間的…
※如果看一下價錢,現在特價99元,哈哈…拿一千多大洋的M5Stack FIRE IoT Development Kit來仿做一個99元的商品?唉呀!我們說的是程式的樂趣!而且IKEA這顆時鐘不能上網的,我們的仿冒品是連網校正時間的…
實作
實作
一定得改的地方提示
一定得改的地方提示
// Wi-Fi
// Wi-Fi
const char *ssid = "你的AP名稱";
const char *ssid = "你的AP名稱";
const char *password = "你的網路連線密碼";
const char *password = "你的網路連線密碼";
※如果網路連不上,有時會出現左圖的樣子,有時會閃一下黑幕,別緊張!不是壞了,M5的主機若有設定連線,不成功就會卡在那兒,後面的程式碼都不跑了
※如果網路連不上,有時會出現左圖的樣子,有時會閃一下黑幕,別緊張!不是壞了,M5的主機若有設定連線,不成功就會卡在那兒,後面的程式碼都不跑了
// NTP(同步時間的伺服器)
// NTP(同步時間的伺服器)
const char *ntp_server_1st = "ntp2.ntu.edu.tw"; //原本是日本的,建議改成台灣的
const char *ntp_server_1st = "ntp2.ntu.edu.tw"; //原本是日本的,建議改成台灣的
const char *ntp_server_2nd = "time.google.com";//第二個保持GOOGLE的
const char *ntp_server_2nd = "time.google.com";//第二個保持GOOGLE的
const long gmt_offset_sec = 8 * 3600; // 時差(秒換算)
const long gmt_offset_sec = 8 * 3600; // 時差(秒換算)
const int daylight_offset_sec = 0; // 夏時間
const int daylight_offset_sec = 0; // 夏時間
關於MPU9250停產的消息
關於MPU9250停產的消息
※由於mpu9250已經停產,新出的M5Stack core裡頭都是BMM150 + MPU6886來取代原本的MPU9250 ,如果您的M5Stack-fire是很早買的那麼裡頭還是9250
※由於mpu9250已經停產,新出的M5Stack core裡頭都是BMM150 + MPU6886來取代原本的MPU9250 ,如果您的M5Stack-fire是很早買的那麼裡頭還是9250
我的改寫
我的改寫
原作者的程式跑起來後,在碼錶和鬧鐘的響鈴部份不會叫…所以增加了這部份
原作者的程式跑起來後,在碼錶和鬧鐘的響鈴部份不會叫…所以增加了這部份
//聲音頻率定義
#define NOTE_D0 -1
#define NOTE_D1 294
#define NOTE_D2 330
#define NOTE_D3 350
............
//加上聲音提示(改用tone)
//M5.Speaker.beep(); //這是原來的寫法
//frequency -1, with a duration of 200ms
M5.Speaker.tone(NOTE_DH2, 100);
delay(100);
M5.Speaker.tone(NOTE_D0, 100);
delay(100);
M5.Speaker.tone(NOTE_DH2, 100);
改用動態的wifi連線方式
改用動態的wifi連線方式
原本的程式碼將連接的AP名稱及密碼寫死在程式的設定裡,有一個困擾,如果把機器拿到別處,它便上不了網,得修改原始碼的設定再重新燒錄,這是很不ok的…
原本的程式碼將連接的AP名稱及密碼寫死在程式的設定裡,有一個困擾,如果把機器拿到別處,它便上不了網,得修改原始碼的設定再重新燒錄,這是很不ok的…
我試著重寫這個部份,加入了SoftAP的功能,也就是它到了不能連網的地方不會掛掉,而是會啟動AP功能,還有啟動WebServer(就在192.168.4.1),使用筆電連入那個AP,到它的網頁就可以設定要連接的AP及設定密碼,然後連上網路
我試著重寫這個部份,加入了SoftAP的功能,也就是它到了不能連網的地方不會掛掉,而是會啟動AP功能,還有啟動WebServer(就在192.168.4.1),使用筆電連入那個AP,到它的網頁就可以設定要連接的AP及設定密碼,然後連上網路
※都不用再重燒程式碼了
SoftAP模式
SoftAP模式
掃瞄現場AP的SSID
掃瞄現場AP的SSID
在AP樣式中設定好新的WIFI連線資訊後,M5Stack就會重新啟動並連上新設定的SSID,然後進入主程式
在AP樣式中設定好新的WIFI連線資訊後,M5Stack就會重新啟動並連上新設定的SSID,然後進入主程式
※在程式中,M5Stack Fire將網頁輸入的ssid及密碼寫入內存,開機時會先檢查是否有內存的資料,如果有就拿出來上網
※在程式中,M5Stack Fire將網頁輸入的ssid及密碼寫入內存,開機時會先檢查是否有內存的資料,如果有就拿出來上網
// wifi config
storePreferences preferences;
void setup()
{
preferences.begin("wifi-config");
}
移地訓練完成測試
移地訓練完成測試
這樣才是完成測試…,今早M5Stack-Fire拿到學校來,一開機如預期的它會先用內存昨天的ssid紀錄去連線,失敗了便啟動SoftAP模式
這樣才是完成測試…,今早M5Stack-Fire拿到學校來,一開機如預期的它會先用內存昨天的ssid紀錄去連線,失敗了便啟動SoftAP模式
自己變成基地台
自己變成基地台
啟用SoftAP功能
啟用SoftAP功能
啟動WebServer
啟動WebServer
連到自帶的網頁伺服器,這個網頁上列出環境中的AP
連到自帶的網頁伺服器,這個網頁上列出環境中的AP
重新上網
重新上網
取得新的連線資料後,又寫入內存,重新開機上網
取得新的連線資料後,又寫入內存,重新開機上網