0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU+墨水屏,经典应用又添新意!LuatOS带你轻松DIY

合宙LuatOS 2022-06-29 09:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MCU+墨水屏,经典应用又添新意!

社群小伙伴心心念念的墨水屏应用来了,适用合宙LuatOS全系列MCU核心板。此外,又一波超值福利——合宙LuatOS墨水屏扩展板即将惊喜来袭。敬请关注公众号近期最新动态!!!


1

合宙LuatOS全系列MCU核心板
驱动墨水屏的正确方式


我们常说的电子墨水屏是使用电子墨水的屏幕——通电后可以更改屏幕显示内容,断电后完全不费电的情况下,继续保持显示内容。

合宙LuatOS将让墨水屏应用更为简便,固件自带eink库,加上即将推出的墨水屏扩展板,快捷实现你的应用创意

基本参数:
• 分辨率:200x200;
• ⿊⽩双⾊显⽰;
• ⽀持快刷;
• 直插接⼝,完全兼容现有的合宙LuatOS全系列MCU核⼼板。

硬件连接:

可以直接插到合宙MCU核心板上,和LCD屏同一个位置。

a5bb8eaa-f635-11ec-a2f4-dac502259ad0.png

如何驱动:

使⽤LuatOS固件中的eink库,可以⽅便快捷地驱动屏幕。下⾯的代码以Air101为例,其他模块请根据需要, 更改初始化代码中的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)

--稍微等一会,免得墨水屏没初始化完成

sys.wait(100)

log.info("e-paper 1.54", "Testing Go")

eink.clear()

--画几条线一个圆

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快刷模式


快刷(局刷)模式,使用本模式刷新时极快,但大概率会有残留:

sys.taskInit(function()

eink.model(eink.MODEL_1in54)

eink.setup(1, 0,pin.PB00,pin.PB03,pin.PB01,pin.PB04)

--初始化时配置局部刷新

eink.setWin(200, 200, 0)

--稍微等一会,免得墨水屏没初始化完成

sys.wait(100)

log.info("e-paper 1.54", "Testing Go")

eink.clear()

--画几条线一个圆

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

项目应用示例
墨水屏天气预报日历


a5e3409e-f635-11ec-a2f4-dac502259ad0.png

这样个性有趣的墨水屏天气预报日历,你也可以轻松DIY

示例使用的开发板:

• 墨水屏屏幕板

• 合宙ESP32-C3核心板

注意事项:
由于ESP32-C3的GPIO11默认不作为GPIO使用,并且墨水屏的BUSY引脚位置就在GPIO11,所以需要对开发板的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

墨水屏示例脚本参考

上下滑动查看完整代码:

PROJECT = "wifidemo"

VERSION = "1.0.0"

local sys = require "sys"

--需要自行填写的东西

--wifi信息

local wifiName,wifiPassword = "",""

--地区id,请前往https://api.luatos.org/luatos-calendar/v1/check-city/查询自己所在位置的id

local location = ""

--天气接口信息,需要自己申请,具体参数请参考https://api.luatos.org/页面上的描述

local appid,appsecret = "",""

local functionconnectWifi()

log.info("wlan", "wlan_init:", wlan.init())

wlan.setMode(wlan.STATION)

wlan.connect(wifiName,wifiPassword)

-- 等待连上路由,此时还没获取到ip

result, _ = sys.waitUntil("WLAN_STA_CONNECTED")

log.info("wlan", "WLAN_STA_CONNECTED", result)

-- 等到成功获取ip就代表连上局域网了

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)

--一小时刷新一次吧

end

end)

-- 用户代码已结束-------------------------------------

-- 结尾总是这一句

sys.run()

-- sys.run()之后后面不要加任何语句!!!!!

墨水屏天气预报日历


烧录进开发板,就可以直接看到结果了,天气信息每小时会刷新一次:

a658d548-f635-11ec-a2f4-dac502259ad0.png

加上自己3D打印的外壳,直接变成最靓的桌面摆件!

a5e3409e-f635-11ec-a2f4-dac502259ad0.png

发挥你的创意,尽情DIY吧 ~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19128

    浏览量

    403971
  • 电子墨水屏
    +关注

    关注

    4

    文章

    65

    浏览量

    20797
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源项目树莓派Pico墨水电子书总体介绍

    想拥有一台专属的墨水电子书,却被商用款的封闭系统、高昂价格劝退?或是看中开源款,却被复杂的硬件组装、繁多的元器件难住?尤其是电子新手,想入门硬件制作,总找不到简单易上手的开源项目?
    的头像 发表于 03-04 15:30 656次阅读
    开源项目树莓派Pico<b class='flag-5'>墨水</b><b class='flag-5'>屏</b>电子书总体介绍

    eink墨水高效开发秘籍:开源库与演示系统全揭秘

    想要在最短时间内完成eink墨水项目的原型验证?关键在于选择合适的开发工具。高性能开源eink库,集成多种刷新算法优化,并提供配套演示系统,覆盖文字、图像、动画等展示场景,助你轻松实现高效开发
    的头像 发表于 02-25 20:00 383次阅读
    eink<b class='flag-5'>墨水</b><b class='flag-5'>屏</b>高效开发秘籍:开源库与演示系统全揭秘

    开源!eink墨水库+演示系统,高效开发必看

    墨水凭借超低功耗、强光下清晰可视、类纸视觉体验等优势,已成为电子书阅读器、智能穿戴设备、电子价签、工业仪表等长效续航场景的理想选择。 LuatOS推出了 eink墨水
    的头像 发表于 02-23 21:53 637次阅读
    开源!eink<b class='flag-5'>墨水</b><b class='flag-5'>屏</b>库+演示系统,高效开发必看

    这款开源驱动控制器让你的墨水直接打破刻板印象

    提到墨水,你是不是一直认为它 “慢、静态、只能看电子书”?75Hz 高刷新率 + 低于 20μs 低延迟!这款开源驱动控制器让你的墨水直接打破刻板印象。
    的头像 发表于 02-05 10:16 1042次阅读
    这款开源驱动控制器让你的<b class='flag-5'>墨水</b><b class='flag-5'>屏</b>直接打破刻板印象

    轻松掌握——LuatOS socket基础知识和应用开发

    对于刚接触LuatOS开发的工程师而言,实现设备联网往往是第一个重要目标,而Socket编程正是实现这一目标的核心技术路径。本文以循序渐进的方式,带领读者从最基础的Socket概念入手,逐步掌握在
    的头像 发表于 01-28 20:07 358次阅读
    <b class='flag-5'>轻松</b>掌握——<b class='flag-5'>LuatOS</b>  socket基础知识和应用开发

    LuatOS框架的使用(上)

    在资源受限的物联网终端设备中,如何实现快速开发与稳定运行是关键挑战。LuatOS框架通过将Lua语言与底层硬件抽象层深度融合,提供了一套简洁高效的开发范式。本文将围绕LuatOS框架的使用展开,从
    的头像 发表于 01-27 19:38 371次阅读
    <b class='flag-5'>LuatOS</b>框架的使用(上)

    这个“MCU+”有点不一样

    电子发烧友网报道(文 / 吴子鹏)当前,“MCU+”战略已然成为半导体公司重要的发展战略之一,旨在通过微控制器单元(MCU)的功能扩展和集成创新,提升产品竞争力和市场价值。对于国产半导体厂商而言
    发表于 12-02 09:50 6777次阅读

    LuatOS MCU核心库全接触:新手操作与功能测试攻略!

     MCU芯片级开发新手如何快速掌握核心技能?本文围绕LuatOSMCU核心库,系统演示时钟频率获取、唯一ID读取、高精度计时、IO复用配置等核心功能测试,并通过丰富示例,帮助开发者轻松
    的头像 发表于 11-12 14:30 394次阅读
    <b class='flag-5'>LuatOS</b> <b class='flag-5'>MCU</b>核心库全接触:新手操作与功能测试攻略!

    新手必备:LuatOS MCU核心库功能测试与实践指南

    新手如何快速掌握MCU芯片级开发?本文通过LuatOSMCU核心库,全面演示时钟频率获取、唯一ID读取、高精度计时、IO复用配置等核心功能的测试流程,并提供实用示例,帮助开发者高效入门,轻松
    的头像 发表于 11-12 14:26 467次阅读
    新手必备:<b class='flag-5'>LuatOS</b> <b class='flag-5'>MCU</b>核心库功能测试与实践指南

    零基础也能玩转TCP/IP?LuatOS上手全攻略

    TCP/IP看似复杂,但借助LuatOS的简化开发模式,即使没有网络编程经验,也能在短时间内轻松实现通信功能。本指南将带你一步步用LuatOS快速入门,真正实现“
    的头像 发表于 10-15 17:28 747次阅读
    零基础也能玩转TCP/IP?<b class='flag-5'>LuatOS</b>上手全攻略

    嵌入式开发新选择:LuatOS脚本框架入门教程

    LuatOS正成为嵌入式开发的新趋势!本教程带你从基础入手,全面了解其基于Lua的脚本开发模式与轻量级运行框架。 一、LuatOS 编程起步 1.1 底层固件怎么启动 LuatOS
    的头像 发表于 09-26 17:34 751次阅读
    嵌入式开发新选择:<b class='flag-5'>LuatOS</b>脚本框架入门教程

    漫画科普 | 功率放大器到底有哪些应用?带你解锁功放经典应用场景!(一)

    漫画科普 | 功率放大器到底有哪些应用?带你解锁功放经典应用场景!(一)
    的头像 发表于 06-20 20:00 1119次阅读
    漫画科普 | 功率放大器到底有哪些应用?<b class='flag-5'>带你</b>解锁功放<b class='flag-5'>经典</b>应用场景!(一)

    LuatOS编程基础教程:手把手带你入门物联网开发!

    对于渴望进入物联网开发领域的初学者来说,LuatOS是一个理想的起点。本教程将通过由浅入深的教学方式,从搭建开发环境、理解核心API到编写简单应用,逐步引导你掌握LuatOS编程的核心技能,开启智能
    的头像 发表于 06-11 13:03 856次阅读
    <b class='flag-5'>LuatOS</b>编程基础教程:手把手<b class='flag-5'>带你</b>入门物联网开发!

    快速入门——LuatOS:sys库多任务管理实战攻略!

    在嵌入式开发中,多任务管理是提升系统效率的关键。本教程专为快速入门设计,聚焦LuatOS的sys库,通过实战案例带你快速掌握多任务创建、调度与同步技巧。无论你是零基础新手还是希望快速提升开发效率
    的头像 发表于 05-29 14:36 1005次阅读
    快速入门——<b class='flag-5'>LuatOS</b>:sys库多任务管理实战攻略!

    电子DIY作品 桌面墨水日历

    想做点什么东西出来,前不久看到别人做的桌面日历挺不错,手里刚好也有几个墨水,所以就打算也做一个,从画PCB到焊接,再到写代码、建3D模型,最后呈现实物,一步一个脚印完成一个比较完整的项目。 实物展示 正面 背面 01、创意萌芽:为什么是墨
    的头像 发表于 05-21 14:24 2415次阅读
    电子<b class='flag-5'>DIY</b>作品 桌面<b class='flag-5'>墨水</b><b class='flag-5'>屏</b>日历