树莓派与STC12C5A60S2单片机之间的无线通信


一、简介

  利用之前买的那款深联智达的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
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TomLazy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值