‘壹’ 如何保证传感器与单片机之间传输的数据不被丢失
为保证传感器与单片机之间传输的数据不被丢失,应当应用mqtt3.1协议。mqtt3.1协议,它是订阅发布模式的,也就是举纤说,传感器和app同时订阅一个topic,只要传感器扮吵把数据(payload)publish到mqttbroker(服务端),所有订阅了这个topic的app都会收到传感器的数据推送。并且mqtt协议的厅答侍remain标识,能够让app即使不在线,也能讲传感器的数据保留,直到app上线后再进行推送,这样就能保证传感器与单片机之间传输的数据不被丢失。
‘贰’ 单片机 mqtt 怎样节省ram
弯含int transport_sendPacketBuffer(int sock, unsigned char* buf, int buflen);
int transport_getdata(unsigned char* buf, int count);
int transport_open(char* host, int port);
int transport_close(int sock);
修者斗改上述transport.c里面的埋嫌笑四个接口试试
‘叁’ 如何在windows上用C语言实现MQTT协议
C语言是一门通用计返燃歼算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,漏冲一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。段握
‘肆’ 物联网开发需要什么技术呢
物联网开发需要的技术
一:单片机/嵌入式开发
智能硬件,哎,不就是单片机吗?说到底就是一个微控制器,现在出现的智能手表,调光LED灯,蓝牙开锁,WiFi插座等等,说到底不就是单片机开发嘛?单片机,电子和通信专业一般都会教51或AVR、计算机系接触不到。现在流行的Arino也是单片机开发的一种。
但是要做一款智能硬件,技术上只会单片机编程还是不行的。哎呀嘛什么智能硬件,本质上就是一个电子产品!。所以你要开发一款能拿得出手的智能硬件,电子系统设计必须要会的!
二:网络通信协议
智能硬件与传统的电子产品最大的差别,就是智能硬件连上了网络。要连上网络,就需要用到网络通信模块及学习网络通信协议——TCP/IP。
TCP/IP是一个技术的总称,里面包含两种协议TCP、UDP,位于网络通信分层模型的传输层,同时也是由操作系统管理。而HTTP、DNS、URI等这些技术,属于应用层,位于TCP/UDP之上。同样,最近物联网比较流行的,针对计算能力有限的通讯设备而出的MQTT协议,也属于TCP之上。
为了让电子产品有联网的能力,只要在电路设计上给主控芯片连接一个通信模块,写好收发网络指令的代码,剩下的就是电子产品设计了。
三:服务端开发框架
Client/Server架构,即客户端/服务器架构。智能硬件连上后台服务器后,其就是一个客户端,一个终端。由于单片机中资源受限,实际上是不太可能用HTTP协议的,所以互联网中通用的Web服务器开发并不适合这里。有的厂家会在TCP之上自定义协议,有的就移植别人做好的协议比如MQTT,CoAP等等。
服务端开发就比较复杂了。单片机/嵌入式软件开发还好,只要学习好C语言即可打遍天下无敌手,而服务端开发,用Java呢还是python还是PHP?反正Java和Python选一个就好了,嵌入式出身的工程师,一般都会学Python。
Python服务器端的开发框架种类繁多,Web开发的有Django、FlaskTornado WebServer,TCP服务器可以用Twisted,等等。MQTT有已经做好的服务器,像这样的服务器不用自己开发,直接部署即可。
‘伍’ ec600模组入网又休眠
使用rt thread系统里的EC200驱动包+web client做一个物联网项目,之前开发的时候一直都是用的EC600S模块,看起来挺好的,没什么大问题,后来量产的时候不小心买了EC600N焊上去了,之前也听厂家的技术支持说应该是完全一样的,可是就掉进了这个坑里。
故障现象:
模块的net_status和net_mode灯的状态不太对,模块开机后的最终状态有时候net_mode常亮,net_status灭掉,或者net_status一直在慢闪,net_mode一直熄灭。甚至有时候我的应用可以先从服务器拿一包数据,然后又挂掉再也连不上了。
分析:
上述这两种状态都不在文档描述中,打at client去看,你发什么它都是直接回显,比如发AT+CPIN?它就直接回,而不是回OK或者错误,所以初步判断是模块进入了一个错误的状态。那么能让模块进入错误状态无非就是以下几种情况:
睡眠或者开机、重启的姿势不对
或者在模块初始化之前我的应用代码把它搞死了。但是之前用EC600S开发都是好的,而且一般应用代码不太能把模块搞到错误状态,这种可能性比较低。
排查:
针对第二种情况,排查很简单,先把应用软件去掉看看。故障依旧,所以继续排查1.
在EC200的驱动包里要配置开机引脚,状态引脚,睡眠引脚。无论是开发什么东西,一般睡眠这种状态是最容易出问题的,包括x86开发,usb设备开发,屡见不鲜,所以首先把睡眠去掉了(-1),但是故障依旧。
刚开始我始终没有怀疑状态引脚,因为它是个输入,只是判断一下模块有没有开机,感觉不会有什么问题,所以绕来绕去一直没有去动它。直到看到了有个哥们遇到了类似的问题:
RT-Thread-at_device 没有使用power pin 导致的网络异常 bugRT-Thread问答社区 - RT-Thread
这个问题其实我之前用EC600S的时候好像也遇到了,但是我并不用ping,应用也没有问题,所以也没去管他。不过这倒提醒了可以去试试,于是把开机状态也改成-1,居然就好了。
电源引脚我没去动它,模块是需要有一个开机时序的,我看它的初始化代码里也有去动电源引脚重新开机之类的。
希望其他掉在坑里的小伙伴可以看到我这篇帖子,少走点弯路。
打开CSDN,阅读体验更佳
Quectel_EC600S系列_TCP(IP)_应用指导_V1.2.rar
EC600S-CN 模块内置 TCP/IP 协议栈, Host 可以 直接通过 AT 命令访问网络; 这大大降低模块对 PPP 和外部 TCP/IP 协议栈的依赖性,从而降低终端设计 的成本。
EC600N(二)--核心板初次点亮
系列文章目录 EC600N(一)–基本信息介绍 EC600N(二)–核心板初次点亮 目录系列文章目录前言一、使用前说明1.供电方式2. 模块开机状态二、AT指令测试1.测试准备2.AT指令测试 前言 本次实验使用移远EC600N双排核心板,主要使用AT指令测试模块,测试模块的USB口和3.3V串口。 一、使用前说明 1.供电方式 EC600N模块需要用排针的VIN进行供电,供电如下图所示: USB口供电可能达不到模块的开机要求(由于串联了二极管,有压降),一般采用针脚对模块供电。这个设计有点鸡肋。 2.
继续访问
移远4G模组EC600N进行TCP/IP连接和服务器测试
最近公司产品需要增加一个4G模块进行数据传输,想到之前做的移远的4G模块,于是买了一个核心板回来调试。 协议选择TCP/IP,因此使用的是TCP/IP部分的AT指令手册。工具方面,使用串口调试助手,关于测试服务器,一开始用的安信可的透传云,但是服务器连接一段时间不发送消息就会自动断开,所以还是使用了网络调试助手。因为网络调试助手使用的是本地网络,如果需要和4G通信,还需要使用花生壳做内网穿透。 接下来先把服务器部分做好。 如果没有花生壳软件,建议先去官网下载一个 长这样色的。安装后打开界面如下 这个界
继续访问
STM32F405+4G模块OTA固件升级调试记录
STM32F405+4G模块OTA固件升级调试个人记录
继续访问
Cat.1模块使用总结(EC600N)
由于Cat.4模块(EC20)功耗大,考虑到NB网络覆盖问题(设备在野外工作场景),因此项目上用选择了Cat.1(EC600N)模块,现在把调试过程总结下,希望能够帮助到大家。EC20使用总结请看:单片机和4G模块通信总结(EC20)。 一、电源 手册说供电电压≥3.4V,峰值电流3A。 二、通信口 UART和IO口都是1.8V,需要做电平准换。 三、开机顺序 我是上电1s后复位,复位低电平600ms,然后100ms后开机,开机等待10s后进行操作。 四、AT指令 采用消息地体原理,具体请看
继续访问
日志组件
日志组件 1. 日志是什么 日志是软件应用必备的组件,是程序debug,或是数据收集管理的重要依据,方便我们监测生产环境的变量值变化以及代码运行轨迹。本课程主要用来学习实际开发中常用的日志组件。 主要是为了方便我们监测生产环境的变量值变化以及代码运行轨迹等。 这些记录会被输出到我们指定的位置形成文件,帮助我们分析错误以及用户请求轨迹。 2. 常用日志组件 2.1 Log4j与log4j2.x Log4j有8种不同的log级别,按照等级从低到高依次为:ALL>TRACE>DEBUG>
继续访问
ESP32+移远EC600N模组通过MQTT连接阿里云并通过HTTP进行OTA升级
ESP32+移远EC600N模组通过MQTT连接阿里云并通过HTTP进行OTA升级。以下是我这段时间进行的工作,分享下自己的研究成果,也让后面的小伙伴少踩一些坑。同时通过文章记录下操作步骤,免得自己过段时间忘记。以下是ESP32和EC600N模组之间通过串口进行数据交互的详细调试信息输出内容。...
继续访问
热门推荐 EC600N(一)--基本信息介绍
EC600N使用说明 EC600N(一)–基本信息介绍 目录EC600N使用说明前言一、模块组的基本介绍1.模组的基本选型信息2. EC600N核心板基本信息二、EC600N功能介绍1.基本功能介绍2.引脚功能三.补充 前言 EC600N是一款移远推出的4G模块。移远和中传移动是主要的4G模块和NB-lot模块的供应商。由于移远的模块使用相对比较广泛,所以用它试试。 相关资源链接: 官网,这个网站找资料比较费劲。 quetcelpython下载中心,移远的多数模块支持python的二次开发。 quetcel
继续访问
移远QuecPython(基于EC600s)开发物联网应用(七) QuecPython通讯相关模块
一. sim --SIM卡模块 import sim 1. 获取sim卡的imsi sim.getImsi() 参数 无 返回值 成功返回string类型的imsi,失败返回整型-1。 2. 获取sim卡的iccid sim.getIccid() 参数 无 返回值 成功返回string类型的iccid,失败返回整型-1。 3. 获取sim卡的电话号 sim.getPhoneNumber()...
继续访问
【C语言】一个好用的循环队列与使用示例(以EC200/600为例的AT框架)
目录1.前言2.结论3.循环队列3.1写队列到队列头3.2从尾部读读队列3.3获取当前队列内数据数量3.4清空队列3.5两个重要结构体4.效果与示例4.1三个读队列线程4.2 AT框架写队列与EC200初始化4.3 AT框架读队列4.4 EC200维持TCP长连接5.下载5.1 循环队列5.2 AT框架+EC200的TCP长连接(与EC600通用) 1.前言 上一篇:https://blog.csdn.net/ylc0919/article/details/111050124 自从之前说要发二代框架,不知不
继续访问
阿里云在线温湿度-小熊派qpython(综合展示)
需要用到的东西: 小熊派的ec100y开发板; i2c的温湿度传感器(我这里用的sht31,其他的也可以,自行修改代码); 阿里云账号; 接线:用到3.3v,GND,i2c的SCL和SDA 阿里云显示展示: app展示: 代码: # 包引用部分 import log from aLiYun import aLiYun import ujson import utime from machine import I2C import pm # 用户变量区域 # 上传间隔(单..
继续访问
EC600N-AT 软件包笔记
INIT_DEVICE_EXPORT(ec200x_device_class_register); 开辟struct at_device_class结构体 进入at_device_class_register 怎么跳转到的static int ec200x_init(struct at_device *device) at_device_class_registe执行完后到 INIT_APP_EXPORT(ec200x_device_register); static int ec200x_device_r
继续访问
open方案、openCPU-EC600、L610设计应用总结
OPEN CPU模组设计应用总结 咸鱼NO FASHION 根据实际项目需求选择最优的设计方案,是一名合格硬件工程师的基本功。 背景与优缺点说明: 对于物联网项目,大多数公司或者产品需更为便宜方案,因此在物联网项目中open CPU方案迎来黄金发展期。物联网项目本身就需要无线通信模组,通信模组开放一定IO口和通信接口,优点可以解决目前广大用户主控MCU短缺的痛点,降低开发成本;缺点IO口和通信接口使用相对于主控MCU不够灵活,接口相对较少。 软件方面: 支持open C和open Python(
继续访问
Quectel EC800N-CN 小尺寸物联网首选LTE Cat 1模块[移远通信]
EC800N-CN是移远通信专为M2M和IoT领域而设计的LTE Cat 1无线通信模块,支持最大下行速率10 Mbps和最大上行速率5 Mbps,超小封装,超高性价比。 EC800N-CN采用镭雕工艺,镭雕工艺具有外观更好看、金属质感强、散热更好、信息不容易被抹除、更能适应自动化需求等优点。 EC800N-CN内置丰富的网络协议,集成多个工业标准接口,并支持多种驱动和软件功能(如Windows7/8/8.1/10、linux、Android等操作系统下的USB虚拟串口驱动);极大地拓展了其在M
继续访问
EC600S串口通信
EC600S有两个串口通信口,TX0/RX0;TX2/RX2,分别对应程序中的UART0 - DEBUG PORT和UART2 – MAIN PORT。运行本例程, 需要通过串口线连接开发板的 MAIN 口和PC,在PC上通过串口工具打开 MAIN 口,并向该端口发送数据,即可看到 PC 发送过来的消息。 (可通过串口转usb口,把TX2/RX2分别与转usb口的RX/TX连接到电脑上即可) """ 运行本例程,需要通过串口线连接开发板的 MAIN 口和PC,在PC上通过串口工具 打开 MAIN 口,并向
继续访问
移远EC20/600系列TCP发送可变长度数据的结束标志!
移远EC20/600系列TCP发送可变长度数据的结束标志!
继续访问
移远ec200/600的使用
移远ec200、ec600的使用: linux2.6.22 pppd-2.4.4 ec600s 参考的是ec200s的拨号相关文档: 1:/driver/usb/serial/option.c更改了4个位置,并没 有严格按照ec200s的指导文档来(2.6.30以上、3.0以上内核还会涉及wwan、qcserial相关文件,看相关文档) 2:内核config USB_SERIAL=y USB_USBNET=y USB_NET_CDCETHER=y (还没搞清楚...
继续访问
EC600U
ec600u,tcp client 断线重连
继续访问
最新发布 STM32+USART+DMA+EC600N调试
在stm32Cube中,打开DMA发送中断和接收中断,打开usart全局中断。主要调试功能:(1)使用DMA发送固定长度数据给串口,(2)使用DMA接收不定长度帧数据。(1)利用DMA传输,发送固定大小数据 换成 包装代码如下: (2)利用DMA传输,接收大小可变的数据利用串口空闲中断,识别一帧的数据,参考链接: 注意:空闲中断结束后,记得重新开启DMA接收。指令解析 AT执行逻辑 每个AT指令执行成功,则继续下一条,如果本条AT指令执行失败,则重复执行,最多执行10次,如果10全部失败,则本轮结束
继续访问
‘陆’ 远程控制单片机一定要云平台吗
你好,目前的技术来说是的。
可以使用微信小程序使用MQTT远程控制单片机,基于阿里云物联网平台的MQTT小程序。
操作如下:
1、注册阿里云,
2、找到物联网平台并创建设备,
3、进去物联网平台里面点击公共实例,
4、创建完成,点击查看,查看里面的产品信息。如此步骤便可在阿里云平台进行注册,注册完成后便可尝试对单片机进行控制,以便查看云平台是否能够在控制单片机上起到很大的作用。
‘柒’ 怎么使用esp8266WiFi模块,js连接mqtt,实现简单的智能家居控制
开发资源
1、Esp8266 Wi-Fi模块
2、局中型机智云串口调试软件
3、51单片机或者STM32单片机或者其它单片机
4、Windows 10
主要设计思路
一句话概括:将esp8266 Wi-Fi 模块连接上能上网的路由器(手机开热点作为路由器也行),连接过程需要做一些配置,以跟机智云平台对接。之后智能终端(手机或平板)跟Wi-Fi模块绑定后即可远程或者局域网控制设备。
简易介绍机智云官方提供的文档资料
机智云给开发者提供了大量开发支持,如开源的安卓/苹果SDK、APP等,开发者直接在开源的架构上二次开发即可,从而减少开发工作量。文档中心提供大量的接入教程,非常详细,此处不再重复说明。
机智云官方文档中心链接:http://docs.gizwits.com/zh-cn/overview/overview.html
步骤一:
我们要将自己的Wi-Fi模组跟机智云对接,必须对Wi-Fi模组烧录机智云官方给的GAgen固件。硬件厂商对硬件智能化的第一步是让设备能够联网,GAgent是机智云提供的一款兼容国内主流Wi-Fi模块、移动网络模块的模组系统。硬件厂商只需理解如何与GAgent进行通讯即可。
详细教程链接地址:http://docs.gizwits.com/zh-cn/GCP/wmole/ESP8266.html#ESP8266
步骤二:
在机智云平台注册一个属于自己的账号。
1、创建产品
2、创建数据点
3、根据需求选择MCU开发或者SOC开发。MCU开发就是在51/STM32等单片机开发,代码可自动生成,不需要懂协议即可开发。SOC开发是指直接在ESP8266上开发。注意:自动生成的代码,MCU运行环境至少要有2K的RAM左右的大小,如果是普通的51单片机,RAM一般不足1K,STC15系列有2K大小的RAM,STM32基本所有系列RAM大小都超过2K。如果RAM不够的单片机,就需要自己懂协议,才能开发。协议其实也挺简单,无非就是一些你发数据包,我解析后回复给你数据,有来桐猜有往。
4、手机安装机智云开源的APP,进行调试测试
5、.......
详细教程:http://docs.gizwits.com/zh-cn/quickstart/UseMCU.html
步骤三:
建议直接使用机智云封装好的协议,直接自动生成包含协议相关的代码,前提是,你得保证你的单片机拥有超过2K的RAM大小空间。如果不满足RAM大小的单片机,则自己根据协议文档编写代码,通信协议在《开发向导》里下载,如图下所示。
根据文档协议写测试代码的时候,可以不着急在单片机上测试,机智云提供了一个串培亩口调试助手,可在这里先测试好。
机智云机智云串口工具使用文档:http://docs.gizwits.com/zh-cn/deviceDev/%E4%B8%B2%E5%8F%A3%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.html
关于单片机上的应用开发,不管开发什么产品,协议上报数据格式都是固定不变的。遇到问题多看机智云官方给的教程即可解决绝大部分问题。
‘捌’ 怎么使用esp8266WiFi模块,js连接mqtt,实现简单的智能家居控制
如果您是想通过esp8266WiFi模块的MQTT协议来实现智能家居控制的话,可以了解一下支持MQTT协议的esp8266WiFi模块,比如SKYLAB的WG219/WG229以及WG231。
WG229
WG229是一款基于ESP8266芯片方案的小尺寸低功耗低成本串口WiFi模块,符合802.11b / g / n 无线模块标准,支持UART-WiFi -以太网数据传输。专为移动设备和物联网应用设计,可将用户的物理设备连接到WiFi无线网络上,进行互联网或局域网通信,实现联网功能。另外WG229仅需要通过出串口使用AT指令控制,就能满足大部分的网络功能需求。WG229高性能、低功耗、低成本、支持串口透传等特性,使得WG229在高集成、低功耗自动化和传感器解决方案的理想解决方案,WG229和LCS6260 Pin对Pin兼容,可替代ESP8266方案的ESP-12F。
支持MQTT协议的IoT UART接口WiFi模块也都是支持对接云端服务的。LCS6260支持对接阿里云、涂鸦云,WG219/WG229/WG231支持对接阿里云。
‘玖’ 单片机联网是不是得要服务器
单片机联网需要服务器来实现网络连接和数据交互。单片机本身没有网络通讯功能,无法通过局域网或互联网与其他设备或系统进行通讯,因此需要借助服务器来实现联网。服务器是一台专门用于处理网络请求和数据传输的计算机,能够提供稳定的网络环境和数据交换的算法。单笑缺片机通过网络接入服务器后,可以从服务器获取上传传感器和控制指令,实现远程控制和数据采集的功能。当然,针对不同的需求场景,单片机联网的方案也有不同的设计。有一些基于物联网的平台和技术,比如MQTT、CoAP、HTTP等,不需要单独的服务器,并且提供简单的API和web-socket接口,方便开发者快速实现单片机的联网功能烂做。总之,实现单片机的饥升衡联网功能需要依托网络技术和服务器,但是针对不同的需求场景,可以选择不同的技术方案来实现。