在Raspberry Pi Pico上添加蜂窝网络

文件列表(压缩包大小 9.45M)      点击页面右上角“下载”按钮下载

概述

需要的元件

  • blues wireless Notecard

    NOTE_NBNA_500_front_1800x1800

  • blues wireless Notecarrier-AL

    CARR_AL_front_1800x1800

  • Raspberry Pi Pico

  • Adafruit BME680

  • blues wireless Notehub.io

    c-y7tvgw_yMDkbXBLv9

  • MicroPython

    micropython_logo_cUemGbsucO

原理及流程

介绍

notecard_pico_vapQPdlEAI

上周Raspberry Pi团队发布了他们的第一个微控制器Pico时,它拥有定制的双核M0,而且售价只有4美元。

我本周收到了Pico,这是一个令人印象深刻的小型设备,具有许多GPIO,外设以及对C和MicroPython的支持。并且由于Notecard Python库初始就支持MicroPython,CircuitPython和Python,因此我想将Notecard与之连接起来,并展示如何使用两者将蜂窝网络连接添加到Pico项目中。

在本文中,我将向你展示如何:

  • 将MicroPython闪存到Raspberry Pi Pico。
  • 接线并通过I2C连接到Notecard。
  • 与MicroPython中的Notecard通信。
  • 添加一个BME680温湿度传感器,并将读数发送到Notecard和Notehub.io云服务。

本项目的完整源代码,包括notecard和BME680传感器的库,位于位于notecard-pico GitHub repo,你可以在下载区下载。

刷新MicroPython

首先,我需要在Pico上安装MicroPython。我最初使用的是来自Pico官方文档的UF2镜像,但很快发现,在我最初的实验中,该发行版不包含MicroPythonujson库,并且由于Notecard会使用到JSON,而note-python库取决于JSON支持,我不得不寻找一个替代方案。

值得庆幸的是,Pimoroni团队拥有MicroPython的Pico兼容分支,其中包含ujson,因此我从他们的repo下载了最新的UF2(下载区也有) 。然后,按照官方的入门指南,当我将开发板插入USB并将UF2文件拖到计算机上的RPI-RP2大容量存储设备上时,我按住Pico上的BOOTSEL按钮,这样我就能在MicroPython上运行Pico。

即将在官方发行版中支持ujson和其他扩展的MicroPython模块。

在REPL中打招呼

为了创建Pico固件,官方文档和指南建议使用Thonny IDE ,因为我将VS Code用于Python和CircuitPython开发,所以我也将其用于本项目。我从“ VS代码扩展”选项卡安装了MicroPython扩展,创建了一个项目,并通过/dev/tty.usbmodem0000000000001USB串行端口连接到Pico上的REPL ,感觉就像z-index:9999;

过去,我在ESP32上做过一些MicroPython工作,而我最喜欢的体验之一是设备上的REPL。在物理连接到微控制器的同时检查GPIO和切换引脚真是太神奇了。因此,一旦连接,我就导入了machine库并切换了Pico板上的LED,该LED位于Pin 25。

import machine

led = machine.Pin(25, machine.Pin.OUT)

# Turn the LED on
led.value(1)

#Turn the LED off
led.value(0)

![2021-01-26_17_39_20_o3EpjtNx8L (2)](https://gggg-image.oss-cn-beijing.aliyuncs.com/lgkimg/2021-01-26_17_39_20_o3EpjtNx8L (2).gif)

连接到Pico时运行MicroPython代码

连接了Pico之后,就该添加Notecard了。

什么是Notecard?

screen_shot_2020-12-18_at_8_24_02_am_2ZP2QtjsFH

由于Pico没有配备Wi-Fi,蜂窝网络或蓝牙,因此我决定将其连接到Blues Wireless Notecard,以增加蜂窝网络IoT的优势。Notecard是一款支持蜂窝网络和GPS功能的设备到云数据泵,具有500 MB数据和10年的蜂窝网络服务,价格为49美元。没有激活费,也没有月租费。

Notecard是一种30 x 34毫米的小型SoM,可以通过其m.2连接器嵌入到自定义项目中。但是,Blues还提供了一系列扩展板,称为Notecarriers,其中包括用于Notecard的m.2插槽以及许多用于原型制作的功能。对于这个项目,我使用了Notecarrier-AL ,它具有板载蜂窝网络和GPS天线,一个LiPo电池端口和一个引脚排针,非常适合本项目。

在云方面,Notecard已预先配置了与Notehub.io对话,Bluehu Wireless服务可实现从设备到云的安全数据流。Notecard将数据流分配给Notehub中的项目,然后本项目将数据同步到那些项目中以路由到你的云应用程序。

将Notecard连接到Pico

Notecard可以通过串行或I2C连接到任何MCU或SBC。我为本项目选择了I2C,并使用Pico引脚图将Notecard的电源,GND,SDA和SCL引脚上的跳线连接到Pico。

img_4817_yClnbFdjBm

Pico通过I2C连接到Notecard

在Notehub.io上创建项目

我的下一步是放下硬件一分钟,打开浏览器选项卡,然后在Notehub.io创建一个新项目这是一个非常简单的过程,blues无线开发人员门户网站包含有关创建帐户,项目等的分步说明。一个新项目获得的关键是一个名为ProductUID的标识符,该标识符用于将Notecard与Notehub.io相关联,因此我所有的数据最终都存储在正确的位置。

使用MicroPython与Notecard对话

连接设备并准备好ProductUID之后,我准备连接到固件中的Notecard。首先,我下载了最新版本的note-python library 库,并将notecard目录复制到了Pico上的lib目录中。

接下来,我main.py在Pico上添加了几行代码以导入库,配置与Notecard的I2C连接,并发送hub.set request ,该请求用于设置ProductUID并设置一些同步规则。

from machine import Pin, I2C

import notecard

productUID = "com.your_company.your_name:pi_pico"

i2c = I2C(0)
card = notecard.OpenI2C(i2c, 0, 0, debug=True)
print("Connected to Notecard...")

req = {"req": "hub.set"}
req["product"] = productUID
req["mode"] = "periodic"
req["inbound"] = 120
req["outbound"] = 60c
rsp = card.Transaction(req)

然后,我上传main.py并更新lib目录然后运行我的代码。自从我使用初始化Notecard库以来没出过bug,随着我的固件执行,我所有的请求和响应都将显示在终端中。

2021-01-29_09_41_15_glGKttEu1G

添加传感器

我进行了Pico和Notecard的通信,但是要使其成为一个真正的项目,我需要添加一个传感器。我选择了我的首选产品Adafruit BME680,并将其连接到Pico上的I2C。

img_4819_nfZ9w78LOa

Adafruit BME680连接到Pico

与Notecard一样,我添加了一个库,以使其更易于使用BME680。由于我使用的是MicroPython,因此该库的CircuitPython版本无法原样使用,但在进行一些轻微修改后仍可以正常工作。如果你继续学习,可以我的GitHub repo中使用adafruit_bme680.py学习该库。

添加后,我修改了main.py源代码以导入库,初始化传感器并每60秒获取一次温度和湿度读数。

import utime
from machine import Pin, I2C

import notecard
import adafruit_bme680

productUID = "com.your_company.your_name:pi_pico"

i2c = I2C(0)

card = notecard.OpenI2C(i2c, 0, 0, debug=True)
print("Connected to Notecard...")

bmeSensor = adafruit_bme680.BME680_I2C(i2c)
print("Connected to BME680...")

req = {"req": "hub.set"}
req["product"] = productUID
req["mode"] = "periodic"
req["inbound"] = 120
req["outbound"] = 60
rsp = card.Transaction(req)

while True:
  temp = bmeSensor.temperature
  humidity = bmeSensor.humidity
  
  print("\nTemperature: %0.1f C" % temp)
  print("Humidity: %0.1f %%" % humidity)

  utime.sleep(60)

然后,我将所有内容加载到Pico上,并在终端上观看环境读数。

2021-01-29_09_50_51_2V9pBfvppB

发送数据到Notehub.io

连接BME680并读取办公室中的温度和湿度后,就该将数据发送到“记录卡”(和云)了!我main.py最后一次修改了程序,每次阅读都会发送一个note.add请求。

req = {"req": "note.add"}
req["file"] = "sensors.qo"
req["body"] = { "temp": temp, "humidity": humidity}
req = card.Transaction(req)

当从BME680获取新读数时,我还添加了几行以打开Pico LED,并在将数据发送到Notecard之后将其关闭。我的程序的完整资源如下。

import utime
from machine import Pin, I2C

import notecard
import adafruit_bme680

ledPin = 25
productUID = "com.your_company.your_name:pi_pico"

led = Pin(ledPin, Pin.OUT)
i2c = I2C(0)

card = notecard.OpenI2C(i2c, 0, 0, debug=True)
print("Connected to Notecard...")

bmeSensor = adafruit_bme680.BME680_I2C(i2c)
print("Connected to BME680...")

req = {"req": "hub.set"}
req["product"] = productUID
req["mode"] = "periodic"
req["inbound"] = 120
req["outbound"] = 60
rsp = card.Transaction(req)

while True:
  # Turn on the LED to take a reading
  led.value(1)

  temp = bmeSensor.temperature
  humidity = bmeSensor.humidity
  
  print("\nTemperature: %0.1f C" % temp)
  print("Humidity: %0.1f %%" % humidity)
  
  req = {"req": "note.add"}
  req["file"] = "sensors.qo"
  req["body"] = { "temp": temp, "humidity": humidity}
  req = card.Transaction(req)

  # Turn off the LED
  led.value(0)
  utime.sleep(60)

最后,我上传main.py并在Pico上运行了它。

2021-01-29_09_53_48_EujRlbxf0z

当Notecard接收到新数据(称为“记录”)时,它安全地连接到Notehub.io云服务,并将该数据发送到我的项目,我通过访问本项目的事件仪表板进行了确认。

screen_shot_2021-01-29_at_9_58_36_am_M9RvZlPxp2

Notehub.io仪表板中的温度和湿度读数。

Notecard是一款功能强大的小型设备,并且具有MicroPython支持,可以轻松地在Pico驱动的项目中添加低成本,免费的蜂窝网络物联网!要了解有关“Notecard”的更多信息,请访问blues.io。

最后

所有需要的文件在下载区均可找到。

via:https://www.hackster.io/brandonsatrom/adding-cellular-to-the-raspberry-pi-pico-b8a4b6

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku666,并备注:产品反馈

评论(0)

0/250
免费
赞 2
收藏 0
评论 0
举报

网站声明:本站所有资源均为用户上传,如果侵犯了您的合法权益,请点击上方举报按钮,或添加管理员微信:ligongku666 ,并备注:举报。我们将快速核实并处理。

文件编号:650
上传时间:2021-01-30
文件大小:9.45M

我爱喝牛奶G

声望 • 1982

分类:
电子/通信
标签:
树莓派