内容简介:最近入手了树莓派zero w来做数据地磁场数据采集,加上去年部署的网关,到现在共经手过4种树莓派。其中三种是树莓派3B的不同型号,包括Compute Module 3,定制版以及普通型号,而手上保留的只有三代普通型号和zero w,之前的设备都没留下照片,但这次在文章最后会贴上两台设备,还有和硬件工程师一起做的感应器(其实就是连接串口和GPIO)以及采购的升压模块。这篇文章就是做一个小结,梳理脑内知识,也为之后需要查看参数或者配置新设备时提供参考。这里贴一张从微雪电子抠过来的图表
前言
最近入手了树莓派zero w来做数据地磁场数据采集,加上去年部署的网关,到现在共经手过4种树莓派。其中三种是树莓派3B的不同型号,包括Compute Module 3,定制版以及普通型号,而手上保留的只有三代普通型号和zero w,之前的设备都没留下照片,但这次在文章最后会贴上两台设备,还有和硬件工程师一起做的感应器(其实就是连接串口和GPIO)以及采购的升压模块。
这篇文章就是做一个小结,梳理脑内知识,也为之后需要查看参数或者配置新设备时提供参考。
正文
设备参数
这里贴一张从微雪电子抠过来的图表
电源输入不变,通过Micro USB口输入的电源带保护,并且可以通过GPIO为外部设备供电,直接通过GPIO引脚供电时,不带电源保护,也无法再通过其他引脚为外部设备供电。
CPU频率与核心数不断增加,zero w还是使用老款CPU,ARMv6架构,也是Golang支持的最低ARM版本,频率提升到1GHz。
3B使用四核处理器,频率达到1.2GHz,处理器性能得到巨大提升,但还需要认清楚一个现实,树莓派的处理器性能非常弱,不适合计算密集和高负载的应用,适合作为控制器和数据采集中转。
功耗逐步递增,zero w在运行数据采集程序时,电流保持在100~110mA,发热量在接受范围,而3B的发热量有点过大。
引脚除一代B型外都是40个,保持着相同的构造,在使用地磁感应器时只用到GPIO和串口,而LoraWAN网关似乎使用SPI接口连接SX1301模块,都使用到板载的引脚供电。
CSI接口目前还没使用过,如果外接摄像头大概会用来做视频采集,功耗也会飙升。
截止目前有zero wh、3B、3B+内建Wi-Fi和蓝牙,不用再外置接收器,这次采集数据时也是通过将树莓派设置为热点,安卓平板与树莓派间使用HTTP协议通信来实时读取数据和下发指令。
略微麻烦的是这些内置蓝牙的型号使用 /dev/ttyAMA0 进行蓝牙读写,PL011 UART默认连接到蓝牙模块,而终端输出使用mini UART( /dev/ttyS0 ),官方的资料里提到PL011有独立的硬件控制,而mini UART的波特率与VC4 GPU上的VPU保持一致,性能相对较低,在高负载情况下还会影响到串口通信,具体可以查看下面的文章。
Configuring The GPIO Serial Port On Raspbian Jessie and Stretch Including Pi 3
在当前版本的系统中,没有直接使用这些设备路径,而是将 /dev/serial0 与 /dev/serial1 链接到 /dev/ttyS0 及 /dev/ttyAMA0 使用,终端输出设备默认使用 /dev/serial0。
为了使用性能稳定的PL0 UART,需要解除蓝牙对 /dev/ttyAMA0 的占用。
编辑 /boot/config.txt ,找 dtoverlay 标志
dtoverlay=pi3-disable-bt //关闭,/dev/ttyAMA0与GPIO的14、15引脚恢复关联 dtoverlay=pi3-miniuart-bt //保留,但通过/dev/ttyS0读写蓝牙设备 enable_uart=1 //启用GPIO串口
要完全关闭蓝牙时,还需要关闭掉启用蓝牙设备的服务
sudo systemctl disable hciuart
最后还关闭终端输出,可以通过 raspi-config 的 intefcae option 关闭通过串口使用 shell 的选项,也可以手动编辑 /boot/cmdline.txt ,删除掉 console = serial0 , 115200 ,否则终端输出会占用已经被链接到 seria0 的 ttyAMA0 。
操作系统
树莓派搭载了伟大的 Linux 操作系统,这意味着所有在PC上的操作,都可能在树莓派上实现。
截止目前,官方Raspbian系统基于Debian stretch,提供两个镜像,分别是带桌面环境的Desktop版本及字符界面的Lite版本。树莓派的桌面系统还处在无法流畅使用阶段,只能留给有耐心的人,而同等配置的安卓手机可以拥有相对流畅的体验,原因还是ARM处理器性能不足,难以运行庞大臃肿的PC桌面环境,但字符界面相对轻巧很多,也是长期使用下来唯一的选择,其他linux桌面定制版、Windows 10 IoT Core等,能给人留下的体验基本只有卡、卡、卡、卡……
Raspbian Lite目前最新内核版本为 Linux raspberrypi 4.14.52+ #1123 Wed Jun 27 17:05:32 BST 2018 armv6l GNU/Linux ,在zero w上,原始镜像自带的内核一直难以编译出 go 可执行程序,升级内核后编译的速度才有了很大的提升。
编程
面对有限的存储、计算资源,C语言是执行效率最高的选择,资源占用低,性能高,开发难度大。如果要同时实现GPIO和串口读写,同时发起HTTP请求和提供REST接口,即使使用第三方库,工作量也不少,另外还有调试和开发的问题。
但C与 Python 结合后,牛人编写底层C代码,提供Python调用接口,而普通 程序员 编写功能代码,让这套总体性能比较弱的设备有了很多的玩法。使用Python封装C代码也带来一个问题,跨平台开发的环境配置变得比较困难,除非第三方库友好地在底层用C实现了跨平台接口,不然总会遇到编译出错的问题。最开始尝试使用RPi.GPIO调用GPIO,它的底层使用epoll监听引脚电平变化,依赖的C头文件只在Linux上存在,导致不断地编译失败。
切换到熟悉的Golang后,由于它在语言层级封装了底层系统调用,可以很方便地进行跨平台适配开发,最后干脆在树莓派上搭建好了Golang开发环境,在macOS上编写测试过后,将源文件拷贝到树莓派上编译运行,一些小改动也可以直接在树莓派上操作。
总结
这里就只放图了
树莓派 zero wh,带排针的zero w,自己加了散热片和16G内存卡,总计95+3+10+33=141,含设备,散热片,邮费及内存卡
树莓派 3B,卸下了原来的LoraWAN开发板,自己加了内存卡
传感器,这次通过串口和引脚直连,用了很粗的电线作为延长线
升压模块,3.7V转5V,支持充电和USB口输出,用来连接18650并联电池组
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- [树莓派]树莓派的入门教程
- 「玩转树莓派」树莓派 3B+ 安装 OpenCv
- 「玩转树莓派」树莓派 3B+ 查询本机IP
- 「玩转树莓派」树莓派 3B+ 配置静态IP
- 「玩转树莓派」树莓派 3B+ 配置无线WiFi
- 云中树莓派(3):通过 AWS IoT 控制树莓派上的 Led
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
机器学习实践指南
麦好 / 机械工业出版社 / 2014-4-1 / 69.00
《机器学习实践指南:案例应用解析》是机器学习及数据分析领域不可多得的一本著作,也是为数不多的既有大量实践应用案例又包含算法理论剖析的著作,作者针对机器学习算法既抽象复杂又涉及多门数学学科的特点,力求理论联系实际,始终以算法应用为主线,由浅入深以全新的角度诠释机器学习。 全书分为准备篇、基础篇、统计分析实战篇和机器学习实战篇。准备篇介绍了机器学习的发展及应用前景以及常用科学计算平台,主要包括统......一起来看看 《机器学习实践指南》 这本书的介绍吧!
XML、JSON 在线转换
在线XML、JSON转换工具
正则表达式在线测试
正则表达式在线测试