1.试验材料
Pyboard板、dht11温湿度传感器、NB-IoT模块、4G天线、已激活的物联网卡、0.96寸4P的OLED屏和安卓数据线各一个
接线方式
如有不明白的可看下图
| 配件接口 | pyboard板接口 |
|---|---|
| USB安卓数据线 | DFU |
| DHT11温湿度传感器 | PB13-Y6引脚 |
| NB-IoT的RX | PC6-Y1 |
| NB-IoT的TX | PC7-Y2 |
| NB-IoT的3.3V | 3.3V |
| NB-IoT的GND | GND |
| OLED屏的SCL | PB10-Y9引脚 |
| OLED屏的SDA | PB11-Y10引脚 |
DHT11连接引脚图
NB-IoT TX和RX连接引脚图
NB-IoT TX和RX连接引脚图
2.程序烧录
开发软件uPyCraft_V1.1.exe
将以下4个程序创建并下载至Pyboard板中
main.py 主函数
import pyb
from pyb import Timer,LED
from machine import I2C,Pin
from ssd1306 import SSD1306_I2C
from pyb import Accel
import time
from pyb import UART
import dht
#初始化OLED
i2c = I2C(sda=Pin("Y10"), scl=Pin("Y9"))
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
#初始化DHT11
dht = dht.DHT11(Pin("B13"))
time.sleep(1)
accel=Accel()
#初始化串口uart6
uart6 = UART(6,115200)
uart6.init(115200, bits=8, parity=None, stop=1)
time.sleep(1)
connectStatus="0"
#呼吸灯
ia =1 #定义变量
da =1
def fa(t): #定义回调函数
global ia, da #声明全局变量
if (ia==0) or (ia==255): #判断亮度方向
da = 256 -da
ia = (ia + da) % 256 #改变亮度参数
LED(3).intensity(ia)
tm=Timer(1, freq=50, callback=fa) #设置定时器 1,50Hz,回调函数 fa
start = time.time() #启动计时
words=('\r','\n',' ')
oled.fill(0) # 清屏,背景黑色
oled.text('Initializing...', 0, 0)
oled.show()
time.sleep(60) #等待BC26初始化
uart6.write('AT\r\n') #测试AT指令
time.sleep(1)
buf=uart6.read().decode()
for word in words:
if word in buf:
buf = buf.replace(word,'')
print(buf)
if buf.find('ATOK') > -1 :
uart6.write('AT+CGATT?\r\n') #测试网络是否附着
oled.fill(0) # 清屏,背景黑色
oled.text('AT Succ', 0, 0)
oled.show()
time.sleep(1)
buf=uart6.read().decode()
for word in words:
if word in buf:
buf = buf.replace(word,'')
print(buf)
else:
print('AT Fail')
oled.fill(0) # 清屏,背景黑色
oled.text('AT Fail', 0, 0)
oled.show()
time.sleep(0.5)
if buf.find('AT+CGATT?+CGATT:1OK') > -1 :
uart6.write('AT+QMTOPEN=0,"mq.tongxinmao.com",18830\r\n') #打开MQTT客户端网络
oled.fill(0) # 清屏,背景黑色
oled.text('CGATT Succ', 0, 0)
oled.show()
time.sleep(8)
buf=uart6.read().decode()
for word in words:
if word in buf:
buf = buf.replace(word,'')
print(buf)
if buf.find('AT+QMTOPEN=0,"mq.tongxinmao.com",18830OK+QMTOPEN:0,0') > -1 :
uart6.write('AT+QMTCONN=0,"BC26"\r\n')
oled.fill(0) # 清屏,背景黑色
oled.text('QMTOPEN Succ', 0, 0)
oled.show()
time.sleep(2)
buf=uart6.read().decode()
for word in words:
if word in buf:
buf = buf.replace(word,'')
print(buf)
elif buf.find('AT+QMTOPEN=0,"mq.tongxinmao.com",18830OK') > -</