概述
一 物联网项目的组成
一般来说物联网项目都分5个部分,需要多个部分合作完成
1.手机app+web后台管理部分
2.物联网设备通信服务器部分
3.物联网设备微型芯片部分
4.电路板设计部分
5.模具设计部分
软件公司一般只负责 1,2,3项
二 物联网设备通信
一般来说 有http(长连接), socket,mqtt 三种 通信方式
从灵活性来说应该是mqtt 和http(长连接) 比较简单
socket 需要自己设计 顶层 和 中间层, 但是程序可以做的很紧凑
三 开发语言的选择
如果是mqtt 和http 建议用 java语言,组件完善稳定
如果是socket 建议用python 开发,bytes 和bytearray 提供了足够的便捷
这种python 语言 对于字节数组的处理比java 优秀太多
别去追求软件极致性能,那都是可笑的, 只要程序运行稳定就行.
四 物联电路
主板电路+微型芯片+通信模块 三个部分组成,作用如下
主板控制 元器件
微型芯片 植入程序 控制主板工作
通信模块 植入参数 连接芯片和互联网服务器
术语
透传(通信模块)
透传是指 数据输入和输出实时且一致
网络服务器发出的数据经过通信模块被接力传送给芯片,
或者芯片发出的数据经过通信模块后传给网络服务器
这种现象就是透传,
注意:通信模块一般可以在传输的数据头部,添加固定文本
AT指令
AT指令 就是 在微型芯片和通信模块之间的通信协议字符串
对于串口配置工具, 各家芯片设计都不一样 AT指令也不一样
通信芯片配置
有的电脑没有 串口 可以购买usb转com 线
必须安装 对应的usb to serial 驱动才能使用
有的芯片配置号重启需要25s左右
芯片有配置模式和透传模式 两种
芯片的透传模式可以有http tcp/udp mqtt 串口等模式
芯片可以有多个端口, 每个端口都可以配置一种透传模式
填坑
python语言细节
- finally return
return 即使在finally 之前 finally 后的内容也会执行
如果 finally 前后都有return 命令 只会执行 finally之后的return - “{}”.format( tuple)
- split(n) 可以限定分割数量 =n+1
- tcp 非阻塞模式 无法配置 keepalive
- 多线程 是软线程 不受cpu制约 可以并行至少1024个多线程
redis expire 键是一个bug,多程序操作时 不准确
socket 坑
- socket 接收端即使离线,发送端也无法立即知道 所以为了稳定 必须在发送后 ,监听接收到的信息,如果==‘ok;’
- socket 对方如果在接收处理中,继续沿着当前的socket发送 数据 是没用的
- socket阻塞理解
tcp 阻塞模式 适合 1000以下的接入
tcp 非阻塞模式 和多路复用模式 更适合建立类似http一样的服务器,满足1000以上的访问量 - python socket close 前 必须 shutdown(2) 否则大量的socket 会假死
- socket close 服务端 强制主动关闭引发 大量 TIME_WAIT 套接字 ,
通过 设置SO_LINGER属性=1,0 强制断开, 会引发客户端数据延迟到达的问题
设置 SO_REUSEADDR实现地址复用, 更适合在客户端使用,在服务端没有意义
调试
- 通信模组+ 控制芯片小板 + 电路主板 , 研发过程 任何一个部分更新都会影响整体使用
- txd rxd 接线接反导致无法通行的问题, 通信模块针脚与主板短路引发的故障
- 天线因为垫片太厚 导致内芯接触不良, 导致模块无法上网
- 天线与模块的接触点 没有扣紧引发的 模块无法联网
物联网卡
- 4g物联网卡 流量超过套餐时无法使用, 流量计算 公式: 每次上下行 不足1k时, 算为1k, 所以 一个心跳ping 也要算1k,如果太频繁 会导致流量使用过快
- 4g物联网定向卡 如果更换设备 会被冻结无法使用
- 4g 模块在一些地方信号会中断, 有时在地面无信号,在桌上就有信号
- 4g 模块天线选型很关键
最后
以上就是搞怪钻石为你收集整理的物联网项目开发笔记一 物联网项目的组成二 物联网设备通信三 开发语言的选择四 物联电路术语填坑的全部内容,希望文章能够帮你解决物联网项目开发笔记一 物联网项目的组成二 物联网设备通信三 开发语言的选择四 物联电路术语填坑所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复