注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
allankliu的个人空间 https://home.eeworld.com.cn/space-uid-685602.html [收藏] [复制] [分享] [RSS]
日志

『micropython』pyboard + SX127X/CC11XX

已有 5597 次阅读2016-5-27 11:47 |个人分类:micropython

好久没有冒泡。今天混一篇。

研究micropython有多方面的需求。其中有一项就是IoT网关的二次开发。大家EE背景也算是IT行业的一部分,现在两创中IOT/IOE的项目特别多。我平时就总是接到此类需求。有的要求做整体方案,有的要求做云服务器等等。我的旧友旧同事中也有类似的业务。

现有的开发模式

但是我观察下来,他们的硬件端的开发模式是类似的:

MCU:ARM Cortex-M3/M4 MCU
IoT:CAN/RS485/RF433/RF2.4G/Zigbee/6LowPAN
B/E:Eth/WiFi/BLE/BT SPP/GPRS
固件平台:C/C++,以C为主,C++为辅。

这些方案最苦逼的事情就是对接,需要根据OEM客户进行修改。但有一点,越接近应用层,越接近消费者,各种无聊的修改就越多。比如某个界面的控件等等。要么交付所有源码给客户,客户会收下源码,开发还是你。要么交付库,那么麻烦更多。

micropython/Python赋予二次开发能力

而micropython/Lua/node.js/java(对不起,Java一开始就是面对嵌入式的)之所以进入嵌入式,其中一个理由就是赋予OEM客户,乃至消费者以二次开发能力。

所以,我最近在阅读Python与硬件相关设计的书籍。总体上说,我比较倾向以下技术组合:
  • 硬件:ARM9/Cortex-A + USB/UART IoT dongle。
  • 软件:Ubuntu + sysfs或网络驱动 + CPython + PyUSB/PySerial/socket
  • 应用:MQTT/ZeroMQ/Redis + Python Web + SQLite

利用USB的即插即用,也可以动态修改整体设备的配置。我倾向这种组合,还有一个原因是:ARM9/Cortex开发板的成本非常低,甚至低于pyboard BOM。

如果STM32F40X如果价格够低,比如整体BOM低于CNY30。但我觉得micropython可以构建更加简单的IoT产品。
  • 硬件:STM32F40X或其他中低端MCU,UART/SPI IoT dongle;
  • 软件:RTOS + IoT dongle stack;
  • 应用:用户应用 + 网盘/REST API

IoT/IP连接接口
IoT/IP这些接口无外乎几类:

UART:ESP8266,BLE;
SPI:CC1100,SX1276等没有内置MCU的RFIC,或者Microchip的ETH/USB到SPI的桥接IC;
APB:ARM外设总线等,可以内置CAN总线模块;
I2C,相对较少。
USB,pyboard中大多数做device。但以后host/otg会较多。

SPI总线
各类总线中,SPI是连接各类IOT的高速接口。简单,有效。所以我测试了一下pyboard的SPI串口。

笔者在pyboard中做个一个localloop的测试,即MOSI与MISO短接。如果从MISO返回的数值等于MOSI的输出。则工作正常。


  1. from pyb import SPI
    spi = SPI(1, SPI.MASTER, baudrate=600000, polarity=1, phase=0, crc=0x07)
    data = spi.send_recv(b'1234')
    buf = bytearray(4)
    spi.send_recv(b'1234', buf)
    spi.send_recv(buf, buf)

print(repr(buf))
复制代码


如果不短接MOSI/MISO,返回数值是:
  1. >>>
    bytearray(b'\xff\xff\xff\xff')
复制代码

短接后返回数值是:


  1. >>>
    bytearray(b'1234')
复制代码

返回数值说明,SPI收发正常。但我还要继续测试出pyboard的SPI总线速度极限。此例中,SPI速度为600000,即600K,距离SX1276的10M速度还有距离。LoRaWAN虽然速度不高,但是如果对接FSK器件,那么大部分WSN的空口速率在250Kbps,而SPI速率都在2Mbps左右。


在mbed网站中已经找到许多RFIC的C++类库(CC1101/CC2500/CC2530/CC2650/nRF51/nRF24L01)。花费一点时间可以很容易移植成为此类SPI设备的Python类。此外,WiPy也有一个项目支持ESP的WiFi/BLE二合一芯片以及SX1276 LoRaWAN,我们可以直接参考构成一些简单的IoT网关。







本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章
头条资讯
新增数据手册
热搜器件
推荐下载
推荐关注