【RPi系列】树莓派与STC12C5A60S2单片机之间的无线通信

115 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、简介

  利用之前买的那款深联智达的DL-20 2.4G zigbee无线串口收发模块,通过STC12C5A60S2单片机向树莓派发送设备编号和采集的ADC值,树莓派接收并进行简单的数据处理。 实验设备

二、前情提要

STC12C5A60S2接线说明:

STC12C5A60S2 ADC采集:

STC12C5A60S2 Uart串口通信:

树莓派与无线收发设备:

三、硬件准备

名称数量
树莓派4B1
DL-20无线收发2
STC12C5A60S21
面包板1
B10K 电位器1
NEO-6M GPS1
LCD16021
霍尔传感器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条件中间不可以用&&连接

  pythonand

在这里插入图片描述