前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP8266上的MicroPython入门(1)

ESP8266上的MicroPython入门(1)

作者头像
云深无际
发布2021-04-14 14:18:29
1.2K0
发布2021-04-14 14:18:29
举报
文章被收录于专栏:云深之无迹云深之无迹

上节简单得介绍了一下开发板,这节开始说一下为什么要用python开发,以及别的开发模式.

其实这里我并不知道要这么说,因为不谈应用场景得话,都是片面之词.所以我会搭配一些应用场景来说明.

1.AT指令得开发模式.其实这个芯片,设计之初就是为了给传统芯片增加连接能力用得.ESP芯片搭上了物联网得这个快车,自己也做的优秀,顺理成章就成了新秀.其实让MCU拥有彼此连接得方法有很多.比如蓝牙,zigbee,NRF24L01,LORA这些.为什么这些东西都没有流行得太广呢?我以自己现在得学识其实是说不出个所以然得.如果非要说,我觉得就是wifi这种连接方式在很多指标是取得了一种平衡.比如传输速率,容量,开发得门槛.以及一些高层应用,快速组网等.当然也不能吹得过头,总之就是还得看自己得需求来选择.

开发上,需要刷写官方得AT固件.然后搭配传统得单片机用串口去控制.开发模式不灵活但是胜在简单

放一张基础得指令图


2.还是继续来说乐鑫官方得开发模式


第一种就是传统单片机得开发模式,写一个死循环.加中断,或使用状态机,回调函数得这些个开发模式来开发.优点是最大得灵活性,最好得性能.但是随之带来得是开发得难度得增加(因为要事无巨细得管理一切),而且是和开发者得能力来挂钩,是比较看开发者得经验得.专业搞应用得开发者,极客,以及追求灵活性得.推荐这种开发得模式.

开发流程是这样得.首先要搭建一个开发环境.官方得做法是.在win系统上开以一个Linux的虚拟机,里面有一套GCC的编译器以及写好的Makfile文件(这个说话不对),就是要在编辑器里面写好程序->把这套程序来打包成一个格式为bin的文件->下载到esp3266中.需要的基础知识比较多,但是可以很深入的去了解芯片,压榨每一份性能.

第二种是开发流程一样.但是是运行了一套系统.嵌入式的系统,系统这个东西就是为了来管理硬件,加快开发效率,而后用一些更加高层的思想来编程.其实和Non-OS开发可以互相比较的开发.这个之后再说,很有说头.要是编写很复杂的逻辑和对系统的实时性有要求.完全可以牺牲一点内存空间来换取令人愉快的开发体验,以及更好的产品质量.从各个方面来看都是完全ok的,而且对于这些嵌入式系统来讲,其实思想上面都是大同小异,学会这一个,上手别的也很快,毕竟你一直逻辑编程也不现实不是吗?

Arduino的开发模式,看起来有一些儿戏,不极客.但是2012面世以来.吸引了大批的用户,有老师,学生,艺术家等等有激情的人.因为这种开发方式我觉得有点优雅,因为把封装的思想(姑且让我称之为思想),和STM32的库开发模式很一样,都是把底层的寄存器去成组控制.然后把常用的器件也打包起来(其实就是封装,还是封装).使用时面向对象.说到底还是裸机编程.不要去纠结这些东西,以需求为导向,敏捷开发.才是王道.

我还是比较喜欢arduino的开发的,因为出东西很快,而且一些库写的真的很棒,大佬们功力深厚,本菜鸡瑟瑟发抖.esp8266开发,我建议使用的.

这个地方有个坑,我说一下.我想写Arduino.我也知道要刷一个固件.但是我不知道要刷上面东西在里面.后来才搞明白.其实就是所谓的NodeMCU的那个固件,还支持Lua语言开发的那个.我日..........研究了很久.......都是告诉我这么写程序的...就是不告诉我前面着一步.可能大佬们觉得这个不用说吧....流下不学无术的眼泪.....

说说Lua开发.这个语言很神奇,而且也不算很小众.从百科抄点东西来:

轻量级

Lua语言的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快,从而适合嵌入在别的程序里。5.0.2版的Lua的内核小于120KB,而Python的内核大约860KB,Perl的内核大约1.1MB。

可扩展

Lua并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。

其它特性

Lua还具有其它一些特性:同时支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程 ,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。(我也有些看不懂...高级特性俺还用不到)......看看热闹就行

用NodeMCU的好处是入手容易Lua与MicroPython相对于Arduino C来说要简单很多,所以学习其编程是非常快的,我看Lua文档一下午,看NodeMCU一晚上,看文档一晚上,就差不多可以写了。但是这种方式速度一定是比直接运行固件代码来得慢的,因为LUA与Micropython都要委托其语言解析器重新解释执行。而且最要命的一个问题是这种做法你所写到板子上的代码是文件来的,是可以被拷贝出来的!光是这一点就是这个框架一大硬伤,试想想你开发出来的产品是毫无门槛地可被复制是个什么情况?所以NodeMCU最多只能是一个实验室产品,或者做一些快速原型。

代码语言:javascript
复制
https://nodemcu.readthedocs.io/en/master/

这是文档官网,自己看去吧.基本上非常完善了.

----------我是迷人得分割线------------------------------------------------

我终于要开始吹MicroPython了!!!!!!!...下篇吹吧.累了.喝个娃哈哈,脉动回来

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 轻量级
  • 可扩展
  • 其它特性
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档