查看: 654|回复: 5

esp8266开发web网页版无线串助手+5路可编程PWM开发心得

[复制链接]
  • TA的每日心情
    开心
    2018-10-12 10:29
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2018-9-11 16:41 | 显示全部楼层 |阅读模式
    一年前我就想做一个通过web页面来探制esp8266串的想法,主要是只要一个浏览器就在局域网可以实现串口调试,可以跨设备,跨平台使用


    开发为ardino IDE+H5+css+javascript+websocket+esp8266部分 原生sdk代码移植,硬件基于esp8266 mini D1开发板

    从开始动手到做到现在这个样子,差不多写写停停八花了10月,可能你看到的页面就那么几个,这些页面其实就我不断给自己挖坑,再填坑爬出来,再挖,如此循环面来。现在终于可以露个脸了。
    简单说,我就是为了喝一杯牛奶,结果开了一个养牛场!!!下面分享一下我的经验
    已实现主要功能:
               1、web版无线串口助手,采用websocket与模块通讯,数据交互算是接近实时,功能主要参考了各流行的pc版串口助手,hex ascii 的方式都有,不过目前仅支持8位数据,应该大部分够用
               2、 加了modbus crc16校验生成,方便modbusRTU设备的调试。
                3、SYN6288语模块播放代码转换,也就是输入中文后可以一键转放成语音模块的播放代码,这个原本是为了测试长数据发送的可靠性的,           SYN6288支持一次收200个字节,后觉得这个模块用起来不错,就将这个功能留下了
                4、自我感觉web管理页面的交互性不错,因为可以用H5+javascript代码干很多事情,当然也有不足的地方,因为我没有用框架,全部用原生代码写,相当麻烦,为了一个功能要在度娘找好久,很多是没有现成的可用,只能自行拼接。
               5、我一个朋友想要一pwm输出功能和一个开关控制功能,原先我就写了一路,esp8266+arduino IDE要实现pwm还是比容易实现,不过是软件模拟的。原本就这么结了,后来发现原来pwm可以干很多活,比如驱动舵机,步进电机,因为驱动步进电机要四路,后来就搞成四路了,每路2hz-10KHZ
    分辨率1024,一般用还是没问题,库文件好像是按16路设计的变量数组,有兴趣的可以看一下库文件。
                    至于可编程,就是可以用字符串命令控制pwm输出,可以设置每路的频率,占空比,变化超始,变化终止,每隔nm,占空比变化量等,最简单的应用是可以控制四个舵机机械臂的运动动作。外加一个电机驱动板可以驱动5相四线,2相四线步进电机
           一路开关功能,可以实现2ms-999h周期的pwm信号,通俗讲可以听不同频率的继电器声音,定时开,定关之类的。如我设计的命令格式为:on:50|off:50|$[3]loop,功能是开50ms ,关50ms 循环3次停止,on:3s 就是开3秒停,个人觉得asci命令还是有优势,esp8226可以到160M了,不用在乎多几个字节的时间,配合web界面在控制方面还是比较友好。
             6、实现了OTA在线升级功能
             7、实现了网页版内网发现硬件,airkiss配网,也就是smartconfig,

               开发心得分享:
              1、esp8266 确实是一个好模块,就是内存少了点,共80K,我把以上功能实现,差不多用掉40k了,别以为余下40k新富有,如果用自带的webserver库,为升级方便我没有用文件流方式(有点慢),直接将网页内容以变量的方式保存在flash中,如果一个页面15K,webserver库要是再整个变量拼装一次,在内存高占用时段,可能内存就溢出了,后果就是访问的网页会显示不全,严重时重启,所以一定要控制好一个页面的字节数,连js变量都要尽量短,代码进行压缩 。
              2、esp8266稳定性还是可以的,有时会莫明的重启,大部分情况是变量设置不当,虽然编译通过了,但变量在调用过程中可出现异常,造成函数运行时变量内存溢出,写复杂代码时,最好是不要一次写了很多再编译调试,因为如果有问题,你可能要回滚很多步错误才消失。
    尽量少用全局变量,全局变量非常耗内存,内存不足也是esp8266不稳定因素之一。长串的变量尽量作长度控制,设定边界,如果你的项目很大,一定要规划好变量,高手经常说少用全局变量,我现在才明白是很有道理的。
    尽量不要在loop循环中定义变量,尽量只放函数封装,貌似这里定义了变量不会像函数中的局变量用完就回收。
            3、自带例程是基础,不过例程功能有限,如果有需要可以进一步到函数库中了解函数功能,一级级往底层函数扒。
            4、esp8266 IDE开发环境现在最新的版本是2.4.2,建议使用最新,修复了不少bug,如果你用ajax访问webserver库建的web服务,注意,新版本中默认不支持跨ajax跨域访问(2.3版本是支持的),需要自行设置http头
            5、关于硬件,用的是esp8266 mini d1开发板,这个开发板体积小,有一个配套的断电器模块,可以听继电器的声音,哈哈。
                    带ch340,不知道是否有坛友发现没,nodemcu类的开发板,串口对于某些MCU硬件,只能发送数据,但收不到数据?卖个关子,要是有人有兴趣的我就回复答案

    界面图 IPAD访问


    mmexport1536136254400.jpg
    串口助手转换列表.jpg
    串口按键面板.jpg
    串口按键面板单个按键编辑.jpg

    命令控制选择.jpg
    开关控制面板.jpg
    单个按键编辑.jpg
    PWM控制面板.jpg
    参数设置-选择.jpg
    参数设置.jpg
    wifi设置选择.jpg
    硬件搜索.jpg


  • TA的每日心情
    开心
    2018-10-20 15:52
  • 签到天数: 503 天

    [LV.9]以坛为家II

    发表于 2018-9-12 17:22 | 显示全部楼层
    给楼主点个赞
    打赏作者鼓励一下!
  • TA的每日心情
    擦汗
    2018-7-11 15:37
  • 签到天数: 36 天

    [LV.5]常住居民I

    发表于 2018-9-13 09:06 | 显示全部楼层
    大佬们厉害了
    文章有帮助,可以请我喝杯咖啡
  • TA的每日心情
    开心
    2018-10-13 12:10
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2018-9-29 12:58 | 显示全部楼层
    膜拜,大佬,太厉害了

    该用户从未签到

    发表于 2018-10-12 20:52 | 显示全部楼层
    54454上的如果v而通过
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    美科科技microAI之Mixly篇之三
    美科科技microAI之Mixly篇
    本节介绍使用Mixly控制MicroAI,制作蓝牙耳机音频接收器。 编辑环境:Mixly V1.4.4 准
    请问拆下来的屏幕怎么连接arduino
    请问拆下来的屏幕怎么连接
    屏幕是以前车子拆下来的导航屏幕,液晶屏驱动板芯片是MST702-LF,要怎样改装才能接上a
    arduino智能小车蓝牙控制系统
    arduino智能小车蓝牙控制
    蓝牙智能小车简介 智能小车主要可以分为 3 部分, 传感器部分、控制部分、执行部分。
    花费更少的钱 更换12864OLED
    花费更少的钱 更换12864OL
    导读分割线 国庆第一天开门红,就摔坏一块刚买不久的oled屏幕,买的时候是16。经过研
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表