首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Arduino Nano 33 IoT的IoT

用于Arduino Nano 33 IoT的IoT
EN

Stack Overflow用户
提问于 2019-07-24 04:37:24
回答 2查看 8.5K关注 0票数 3

我计划从旧的5V Arduino Nano到新的Arduino Nano 33 IoT。我已经编写了一个使用软件系列(SoftwareSerial.h)与Sim800L模块通信的5V Arduino Nano的功能代码。然而,当我将电路板更改为新的Arduino Nano 33 IoT时,无法找到软件串行库。

我试着在"Sketch“下的”包含库“菜单中找到它,但是这个库根本就不在那里。鉴于该产品是如此新,我没有发现任何有用的研究来帮助我这一点。我对EEPROM库也有同样的问题。

代码语言:javascript
复制
#include <SoftwareSerial.h>
#include <EEPROM.h>

有人知道如何为新的Nano 33 IoT板包括SoftwareSerial.h和EEPROM.h库吗?

下面是编译时收到的错误消息:

代码语言:javascript
复制
Sim800L_V7.1:3:12: error: SoftwareSerial.h: No such file or directory

   #include <SoftwareSerial.h>

            ^~~~~~~~~~~~~~~~~~

compilation terminated.

exit status 1
SoftwareSerial.h: No such file or directory

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-18 05:33:27

Arduino Nano 33 IoT没有可用的IoT,因为它不是必需的。这个板提供更多:硬件串行口,可以分配给不同的引脚。

这个特性是由微控制器Atmel SAMD21G提供的,它被称为I/O多路复用(Atmel SAM D21E / SAM D21G / SAM D21J中的详细信息,第21页)。该微控制器提供了6个SERCOM,您可以分配(几乎)任何引脚。

Arduino Nano 33 IoT已经使用了一些SERCOM:

  • SERCOM2为SPI
  • MOSI/MISO的SERCOM3
  • SERCOM4用于I2C总线
  • SERCOM5串行调试(USB)

我们还有SERCOM0和SERCOM1。

引脚分配的详细信息在variant.cppvariant.h文件中描述。由于Arduino是开源的,您可以很容易地在SAMD板的GitHub存储库上找到它们。

对于Arduino Nano 33 IoT,引脚分配的说明如下:

通过阅读variant.cpp,我们了解了引脚的分配,特别是SAMD (PAxx或PBxx)和Arduino引脚之间的联系。

SAMD引脚对于使连接与端口功能复用的Atmel SAM D21E / SAM D21G / SAM D21J非常重要。

SERCOM可以是经典的,也可以是替代的。在数据表中,经典在C列中,备用在列D中。例如:SERCOM0/PAD[3]也称为0.3

备注:为RX定义了从0到3的pads,但TX仅在0和2上定义。当您选择要使用的引脚时,这是一个重要的考虑因素。

有关引用,请参阅我用来选择要分配的SERCOM的表。

理论够多了,去找解决办法.

在Arduino Nano 33 的引脚5 (RX)和6 (TX)上添加一个IoT硬件系列:

代码语言:javascript
复制
#include <Arduino.h>
#include "wiring_private.h"

Uart mySerial (&sercom0, 5, 6, SERCOM_RX_PAD_1, UART_TX_PAD_0);

// Attach the interrupt handler to the SERCOM
void SERCOM0_Handler()
{
    mySerial.IrqHandler();
}

void setup() {
  // Reassign pins 5 and 6 to SERCOM alt
  pinPeripheral(5, PIO_SERCOM_ALT);
  pinPeripheral(6, PIO_SERCOM_ALT);

  // Start my new hardware serial
  mySerial.begin(9600);
}

void loop() {
  // Do something with mySerial...
}

另一个例子是,在Arduino Nano 33 的引脚13 (RX)和8 (TX)上添加一个IoT硬件系列:

代码语言:javascript
复制
#include <Arduino.h>
#include "wiring_private.h"

Uart mySerial (&sercom1, 13, 8, SERCOM_RX_PAD_1, UART_TX_PAD_2);

// Attach the interrupt handler to the SERCOM
void SERCOM1_Handler()
{
    mySerial.IrqHandler();
}

void setup() {
  // Reassign pins 13 and 8 to SERCOM (not alt this time)
  pinPeripheral(13, PIO_SERCOM);
  pinPeripheral(8, PIO_SERCOM);

  // Start my new hardware serial
  mySerial.begin(9600);
}

void loop() {
  // Do something with mySerial...
}
票数 7
EN

Stack Overflow用户

发布于 2019-12-17 12:47:32

我对正式的Arduino Github项目提出了同样的问题,Martino Facchin给了我解决方案:

代码语言:javascript
复制
UART mySerial(digitalPinToPinName(4), digitalPinToPinName(3), NC, NC);

注意:"Uart mySerial“应该用大写字母"UART mySerial”编写,否则编译器将找不到lib

更多关于解决方案和核心修改的信息:https://github.com/arduino/ArduinoCore-nRF528x-mbedos/issues/38

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57175348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档