本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、简介
利用之前买的那款深联智达的DL-20 2.4G zigbee无线串口收发模块
,通过STC12C5A60S2单片机
向树莓派发送设备编号和采集的ADC值,树莓派接收并进行简单的数据处理。
二、前情提要
STC12C5A60S2接线说明:
STC12C5A60S2 ADC采集:
STC12C5A60S2 Uart串口通信:
树莓派与无线收发设备:
三、硬件准备
名称 | 数量 |
---|---|
树莓派4B | 1 |
DL-20无线收发 | 2 |
STC12C5A60S2 | 1 |
面包板 | 1 |
B10K 电位器 | 1 |
NEO-6M GPS | 1 |
LCD1602 | 1 |
霍尔传感器 | 1 |
6x6x5 按键开关 | 1 |
11.0591M晶振 | 1 |
51最小系统板 | 1 |
四、软件准备
1、STC12C5A60S2单片机
2、树莓派
单片机发送的数据格式为{index:1,ad:xxxx}.
# -*- coding: utf-8 -*
import serial
import time
import json
temp = 0;
ser = serial.Serial('/dev/ttyAMA0', 9600)
if ser.isOpen == False:
ser.open() # 打开串口
try:
while True:
size = ser.inWaiting() # 获得缓冲区字符
if size != 0:
response = ser.read(18)# 读取内容并显示
temp = response.decode("UTF-8") # 将读取到的bytes转化为str
print(temp)
# 获得一个较为准确的数值 {index,ad}
if temp.startswith('{') and temp[16] == '}':
index = temp[7];
print(index)
adc = temp[12:16]
print(adc)
ser.flushInput() # 清空接收缓存区
time.sleep(0.1) # 软件延时
except KeyboardInterrupt:
ser.close()
五、注意事项
1、Python 条件语句的规范书写
if语句
可不用加括号,但条件后需加:
,可不加{ }来包含内容,但内容要保证统一规范的缩进。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 例1:if 基本用法
flag = False
name = 'luren'
if name == 'python': # 判断变量是否为 python
flag = True # 条件成立时设置标志为真
print 'welcome boss' # 并输出欢迎信息
else:
print name # 条件不成立时输出变量名称
2、python条件中间不可以用&&连接
python
用and