MCU+墨水屏,經(jīng)典應(yīng)用又添新意!
社群小伙伴心心念念的墨水屏應(yīng)用來了,適用合宙LuatOS全系列MCU核心板。此外,又一波超值福利——合宙LuatOS墨水屏擴(kuò)展板即將驚喜來襲。敬請關(guān)注公眾號近期最新動(dòng)態(tài)?。。?/span>
1
合宙LuatOS全系列MCU核心板
驅(qū)動(dòng)墨水屏的正確方式
我們常說的電子墨水屏是使用電子墨水的屏幕——通電后可以更改屏幕顯示內(nèi)容,斷電后完全不費(fèi)電的情況下,繼續(xù)保持顯示內(nèi)容。
合宙LuatOS將讓墨水屏應(yīng)用更為簡便,固件自帶eink庫,加上即將推出的墨水屏擴(kuò)展板,快捷實(shí)現(xiàn)你的應(yīng)用創(chuàng)意!
基本參數(shù):
? 分辨率:200x200;
? ??雙?顯?;
? ?持快刷;
? 直插接?,完全兼容現(xiàn)有的合宙LuatOS全系列MCU核?板。
硬件連接:
可以直接插到合宙MCU核心板上,和LCD屏同一個(gè)位置。
如何驅(qū)動(dòng):
使?LuatOS固件中的eink庫,可以?便快捷地驅(qū)動(dòng)屏幕。下?的代碼以Air101為例,其他模塊請根據(jù)需要, 更改初始化代碼中的SPI編號與其他引腳編號。
01 全刷模式
sys.taskInit(function()
eink.model(eink.MODEL_1in54)
eink.setup(0, 0,pin.PB00,pin.PB03,pin.PB01,pin.PB04)
eink.setWin(200, 200, 0)
--稍微等一會(huì),免得墨水屏沒初始化完成
sys.wait(100)
log.info("e-paper 1.54", "Testing Go")
eink.clear()
--畫幾條線一個(gè)圓
eink.circle(50, 100, 40)
eink.line(100, 20, 105, 180)
eink.line(100, 100, 180, 20)
eink.line(100, 100, 180, 180)
eink.show()
log.info("e-paper 1.54", "Testing End")
end)
02快刷模式
快刷(局刷)模式,使用本模式刷新時(shí)極快,但大概率會(huì)有殘留:
sys.taskInit(function()
eink.model(eink.MODEL_1in54)
eink.setup(1, 0,pin.PB00,pin.PB03,pin.PB01,pin.PB04)
--初始化時(shí)配置局部刷新
eink.setWin(200, 200, 0)
--稍微等一會(huì),免得墨水屏沒初始化完成
sys.wait(100)
log.info("e-paper 1.54", "Testing Go")
eink.clear()
--畫幾條線一個(gè)圓
eink.circle(50, 100, 40)
eink.line(100, 20, 105, 180)
eink.line(100, 100, 180, 20)
eink.line(100, 100, 180, 180)
eink.show(nil,nil,true)
--直接刷上去,不清屏
log.info("e-paper 1.54", "Testing End")
end)
2
項(xiàng)目應(yīng)用示例
墨水屏天氣預(yù)報(bào)日歷
這樣個(gè)性有趣的墨水屏天氣預(yù)報(bào)日歷,你也可以輕松DIY!
示例使用的開發(fā)板:
? 墨水屏屏幕板
? 合宙ESP32-C3核心板
注意事項(xiàng):
由于ESP32-C3的GPIO11默認(rèn)不作為GPIO使用,并且墨水屏的BUSY引腳位置就在GPIO11,所以需要對開發(fā)板的GPIO11引腳提前解鎖處理。具體操作參見:
https://gitee.com/dreamcmi/LuatOS-ESP32/blob/master/doc/VDD_SPI_AS_GPIO.md
燒錄最新固件及下方腳本:
注:需要按注釋更改一下代碼開頭的變量值。
源碼倉庫:
? Air101/Air103/Air105系列參見:
https://gitee.com/openLuat/LuatOS/releases
? ESP32-C3系列參見:
https://gitee.com/dreamcmi/LuatOS-ESP32/releases
墨水屏示例腳本參考
上下滑動(dòng)查看完整代碼:
PROJECT = "wifidemo"
VERSION = "1.0.0"
local sys = require "sys"
--需要自行填寫的東西
--wifi信息
local wifiName,wifiPassword = "",""
--地區(qū)id,請前往https://api.luatos.org/luatos-calendar/v1/check-city/查詢自己所在位置的id
local location = ""
--天氣接口信息,需要自己申請,具體參數(shù)請參考https://api.luatos.org/頁面上的描述
local appid,appsecret = "",""
local functionconnectWifi()
log.info("wlan", "wlan_init:", wlan.init())
wlan.setMode(wlan.STATION)
wlan.connect(wifiName,wifiPassword)
-- 等待連上路由,此時(shí)還沒獲取到ip
result, _ = sys.waitUntil("WLAN_STA_CONNECTED")
log.info("wlan", "WLAN_STA_CONNECTED", result)
-- 等到成功獲取ip就代表連上局域網(wǎng)了
result, data = sys.waitUntil("IP_READY")
log.info("wlan", "IP_READY", result, data)
end
local functionrequestHttp()
local rd = {}
local httpc = esphttp.init(esphttp.GET, "http://apicn.luatos.org:23328/luatos-calendar/v1?mac=111&battery=10&location="..location.."&appid="..appid.."&appsecret="..appsecret)
if httpc then
local ok, err = esphttp.perform(httpc, true)
if ok then
while 1 do
local result, c, ret, data = sys.waitUntil("ESPHTTP_EVT", 20000)
--log.info("httpc", result, c, ret)
if c == httpc then
if esphttp.is_done(httpc, ret) then
break
end
if ret == esphttp.EVENT_ON_DATA and esphttp.status_code(httpc) == 200 then
table.insert(rd,data)
end
end
end
else
log.warn("esphttp", "bad perform", err)
end
esphttp.cleanup(httpc)
if ok then
return table.concat(rd)
end
end
end
function refresh()
log.info("refresh","start!")
local data
for i=1,5 do
--重試最多五次
data = requestHttp()
if #data > 100then
break
end
log.info("load fail","retry!")
end
if #data < 100 then
log.info("load fail","exit!")
return
end
eink.model(eink.MODEL_1in54)
log.info("eink.setup",eink.setup(0, 2,11,10,6,7))
eink.setWin(200, 200, 2)
eink.clear(1)
log.info("eink", "end setup")
eink.drawXbm(0, 0, 200, 200, data)
-- 刷屏幕
eink.show()
eink.sleep()
log.info("refresh","done")
end
sys.taskInit(function()
--先連wifi
connectWifi()
while true do
refresh()
sys.wait(3600*1000)
--一小時(shí)刷新一次吧
end
end)
-- 用戶代碼已結(jié)束-------------------------------------
-- 結(jié)尾總是這一句
sys.run()
-- sys.run()之后后面不要加任何語句!!!!!
墨水屏天氣預(yù)報(bào)日歷
燒錄進(jìn)開發(fā)板,就可以直接看到結(jié)果了,天氣信息每小時(shí)會(huì)刷新一次:
加上自己3D打印的外殼,直接變成最靚的桌面擺件!
發(fā)揮你的創(chuàng)意,盡情DIY吧 ~
-
mcu
+關(guān)注
關(guān)注
146文章
17162瀏覽量
351343 -
電子墨水屏
+關(guān)注
關(guān)注
4文章
58瀏覽量
19782
發(fā)布評論請先 登錄
相關(guān)推薦
評論