物联网Python项目实战
2020-10-26 19:39:14 0 举报
AI智能生成
物联网python
作者其他创作
大纲/内容
物联网邂逅Python
搭建开发环境
Python基础
物联网核心组件
microPython开发物联网终端
构建物联网网关
网关概述
网关担任的角色:
局域网的组建
局域网和外网消息转发
本地运算中心
本地数据存储中心
网关构成:
核心硬件
软件部分
外围硬件
常用物联网网关
自主设计的网关
Nuvoton NUC97X
TI AM335X
NXP iMX6
开源嵌入式平台
树莓派
3代B版
硬件参数
博通ARM CPU,主频1.2G 4c
内存:512M
板载WIFI和蓝牙
开源嵌入式开发板 BeagleBone Black
行业网关
英特尔 IoT Gateway
提供了多个软硬件工具,方便物联网开发
可以轻松接入Amazon Web Services(AWS)、Google Cloud Network、IBM Watson IoT、Microsoft Azure等云平台
硬件参数
一个DDR3、一个无线网卡、一个4GB存储磁盘
戴尔 1 Wyse * 3290
Gigabyte * GB-BXBT-3825
Type A USB 连接线
网线
主机PC
Arduino开发板
自主构建网关
交叉编译
背景
PC程序和服务器程序开发不会涉及交叉编译
物联网网关CPU为ARM架构,PC机的CPU为X86架构
代码在X86架构上编译,在ARM架构上运行;这种一个平台为另一个平台编译的操作称为交叉编译
工具链
编译器-连接器-解释器
命名规则:
arch-vendor-os-eabi
体系架构(ARM、MIPS)- 工具链提供商 - 目标操作系统 -嵌入式因公二进制接口
常用工具链
arm-none-eabi-gcc(意为ARM架构、无厂商、无操作系统、EABI的编译器)
arm-none-linux-gnueabi-gcc(意为ARM架构的linux系统,可用于编译ARM架构的u-boot、Linux内核、Linux应用等,同时arm-none-linux-gnueabi基于GCC,使用glibc库)
arm-eabi-gcc:为Android ARM编译器
armcc:为ARM公司推出的编译工具
环境搭建
Nuvoton公司为NUC97X平台提供了胚胎的交叉编译器,只需要获取安装即可
编译引导程序
引导程序(bootloader)
嵌入式系统上电后执行的第一段代码
完成CPU和硬件的初始化之后,会将操作系统加载到内存中,然后跳转到操作系统所在空间,启动操作系统
对于嵌入式系统,不同的处理器架构对应不同的bootloader
U-Boot
同时支持PowerPC、ARM、MIPS、X86等CPU架构
编译U-Boot
配置文件:nuc970_nand_config
编译过程
make nuc970_nand_config
make
ls u-boot
其中u-boot.bin就是烧写到板子上的镜像文件
下载地址:https://github.com/nuc97xx/u-boot/tree/u-boot-nuc97xx
内核配置与编译
下载地址:https://www.kernel.org/
编译内核
make nuc977_defconfig
make uImage CROSS_MOMPILE=arm-none-linux-gnueabi-
制作文件系统
种类
UBI
YAFF32
制作过程
make menuconfig
BusyBox Settings
[ * ] Build BusyBox as a static binary(no shared libs)
BusyBox Settings --> Installation Options
BusyBox installation prefix
./_install
make
make install
制作文件系统镜像
mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.bin
分区与下载
在下载U-Boot镜像、内核镜像、根文件系统镜像之前,需要确定Flash分区信息
移植python3
树莓派作网关
初次启动树莓派
背景
开发者拿到树莓派开发板时,是裸板,需要自行安装操作系统并进行配置才能启动
提供TF卡槽,支持TF卡启动
下载操作系统镜像到本地
下载地址
https://www.raspberrypi.org/downloads/raspbian/
制作带有操作系统镜像的TF启动卡
准备一张4G以上的TF卡和一个读卡器
对TF卡进行格式化
windows平台,下载Win32DiskImage工具
下载地址
https://sourceforge.net/projects/win32diskimager/
打开Win32DiskImager烧写工具,选择镜像、TF卡盘符,单击“写入”进行烧写
将TF卡插入树莓派TF卡槽
硬件连接
连接方式
显示器
串口终端
SSH远程登录
初次启动必连硬件
5V电源,可以使用手机充电器
HDMI连接计算机显示器,使用HDMI转DVI转接线连接
USB接口的键盘
烧写好镜像的TF卡
启动开发板
正常启动
红灯长亮,黄灯闪烁
输入用户名和密码登录:pi/raspberry
启动异常
红灯长亮
未能检测到TF卡
双灯长亮
未能检测到系统
查看树莓派型号
cat /proc/device-tree/model
初次启动设置
sudo raspi-config
开启wifi配置
开启ssh配置
开启串口配置
串口登录
在/dev目录下查看是否有串口终端设备节点
ls /dev/ttyS0
配置串口终端
sudo raspi-config
配置界面中选择5 Interfacing Options
继续选择P6 Serial
重启树莓派
连线
使用USB转TTL转接线连接PC和树莓派开发板
通过查看树莓派引脚示意图连接GND、TX、RX三个引脚
putty访问树莓派
查看USB转TTL接口的端口号
我的电脑 --> 管理 --> 设备管理器
打开putty
设置Serial line为COM7
Speed为115200
Connection type为serial
打开,登录界面输入用户名、密码(pi/raspberry)
SSH登录
2016-11-25之后的版本,ssh服务默认关闭
通过显示器、串口方式开启SSH服务
在boot分区中创建SSH文件
在树莓派中执行确认ssh状态
service ssh status
raspi-config界面开启
sudo raspi-config
配置界面中选择5 Interfacing Options
继续选择P2 SSH
再次确认ssh状态
命令开启
service ssh start
chkconfig ssh on
需要预先执行apt-get install chkconfig
确认ssh服务状态
将TF卡通过读卡器连接计算机
在boot中创建SSH文件
使用网线连接树莓派开发板和PC
使用ipscan工具扫描
arp -a命令得到树莓派IP地址
putty访问树莓派
设置Host Name(or IP address)为树莓派IP地址
设置Port为22
Connection type为SSH
打开,登录界面输入用户名、密码(pi/raspberry)
升级Python版本
创建Python3.5.1存放的目录
mkdir /opt/python3.5.1
下载Python3.5.1源码包
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
解压缩
tar -zxvf Python-3.5.1.tgz
编译Python之前需要安装的依赖
libssl-dev
解决no module named '_ssl'的问题
centos 安装openssl-devel
libffi-dev
解决no module named '_ctypes'的问题
centos 安装libffi-devel
配置、编译、安装
cd Python-3.5.1
./configure && make && make install
修改python版本
rm /usr/bin/python
ln -s /usr/local/bin/python3.5 /usr/bin/python
确认python版本
python -V
板载WIFI配置
树莓派作为网关需要与远程服务器通信
除了有线网络之外,树莓派3B还自带板载WIFI
命令行扫描附近所有WIFI热点信息
sudo iwlist wlan0 scan
配置WIFI上网信息
root权限打开wpa_supplicant.conf
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
文件末尾添加
network = {
ssid = "anxiang"
psk = "12345678"
}
执行wpa_cli reconfigure或者重启树莓派
查看连接状态
ifconfig wlan0
密码加密
wpa_passphrase "anxiang" "12345678" | sudo tee -a
隐藏的WIFI配置
scan_ssid
配置多个WIFI网络
id_str
串口通信
树莓派作为网关设备,除了逻辑运算和网络连接外,还需要连接其他设备
如LoRa模块及2G模块
配置串口通信,需要注意两点
开启串口驱动,产生设备节点
不要配置为调试串口,才能作为通信串口
执行命令raspi-config打开配置界面
Would you like a login shell to be accessible over serial?
选择No
Would you like the serial port hadware to be enabled?
选择Yes
PC和树莓派通过串口相连,进行串口通信验证
python串口通信类库pyserial
安装pyserial
pip install pyserial
树莓派测试代码
python串口通信类库wiringpi
安装wiringpi
pip install wiringpi
树莓派测试代码
网关数据编码与处理
读写csv文件
JSON解析
XML操作
二进制数据读写
Base64编解码
正则表达式
网关多进程与多线程
进程
线程
协程
网关数据持久化
文件操作
数据库
自由主题
网关网络编程
hbmqtt
broker.yaml
listeners:
default:
max-connections: 5000
type: tcp
bind: 0.0.0.0:1883
topic-check:
enabled: True
plugins:
- topic_taboo
default:
max-connections: 5000
type: tcp
bind: 0.0.0.0:1883
topic-check:
enabled: True
plugins:
- topic_taboo
LoRa
semtech
定义
特点
远距离、低功耗
收藏
0 条评论
下一页