Arduino Nano 33 物联网软件序列号
SoftwareSerial for Arduino Nano 33 IoT
我计划从旧的 5V Arduino Nano 转移到新的 Arduino Nano 33 IoT。我已经使用软件串行 (SoftwareSerial.h) 为旧的 5V Arduino Nano 编写了一个功能代码,以与 Sim800L 模块进行通信。但是,当我将开发板更换为新的 Arduino Nano 33 IoT 时,找不到软件串行库。
我试过在 "Sketch" 下的 "include library" 菜单中找到它,但图书馆根本不存在。鉴于该产品太新了,我还没有找到任何有用的研究来帮助我解决这个问题。我对 EEPROM 库有同样的问题。
#include <SoftwareSerial.h>
#include <EEPROM.h>
有谁知道如何为新的 Nano 33 物联网板添加 SoftwareSerial.h 和 EEPROM.h 库,或者是否知道用于新板的新库?
下面是我在编译时得到的错误信息:
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
如有任何帮助,我们将不胜感激
谢谢
没有 SoftwareSerial.h
可用于 Arduino Nano 33 IoT,因为它不是必需的。该板提供了更多:可以分配给不同引脚的硬件序列号。
此功能由微控制器 Atmel SAMD21G 提供,称为 I/O 多路复用(详情请参阅 the data sheet Atmel SAM D21E / SAM D21G / SAM D21J 中的第 21 页)。微控制器提供 6 个 SERCOM,您可以将其分配给(几乎)任何引脚。
Arduino Nano 33 IoT 已经使用了一些 SERCOM:
- SPI NINA 的 SERCOM2
- SERCOM3 用于 MOSI/MISO
- 用于 I2C 总线的 SERCOM4
- 用于串行调试 (USB) 的 SERCOM5
我们还有 SERCOM0 和 SERCOM1。
引脚分配的详细信息在 variant.cpp
和 variant.h
文件中进行了描述。由于 Arduino 是开源的,您可以在 the GitHub repository for SAMD boards.
上轻松找到它们
对于 Arduino Nano 33 IoT,引脚分配描述如下:
通过阅读 variant.cpp
,我们了解了引脚分配,尤其是 SAMD 引脚(PAxx 或 PBxx)和 Arduino 引脚之间的 link。
SAMD 引脚对于 link 与 the data sheet Atmel SAM D21E / SAM D21G / SAM D21J 的端口功能复用很重要。
SERCOM 可以是经典 或备用。在数据 sheet 中,classic 在 C 列中,alternate 在 D 列中。SERCOM 定义为它的索引和垫。例如:SERCOM0/PAD[3]
也称为 0.3
.
备注: RX 的焊盘定义为 0 到 3,而 TX 的焊盘仅定义为 0 和 2。选择引脚时,这是一个重要的考虑因素使用。
For reference, see the table I used to select the SERCOM to assign.
理论够多了,去找解决方案吧...
在 Arduino Nano 33 IoT 的引脚 5 (RX) 和 6 (TX) 上添加一个 硬件序列号:
#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 IoT 的引脚 13 (RX) 和 8 (TX) 上添加一个 硬件序列号:
#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...
}
我在官方 Arduino Github 项目上问了同样的问题,Martino Facchin 给了我解决方案:
UART mySerial(digitalPinToPinName(4), digitalPinToPinName(3), NC, NC);
注意"Uart mySerial"要大写"UART mySerial",否则编译器找不到lib
有关解决方案和核心修改的更多信息:https://github.com/arduino/ArduinoCore-nRF528x-mbedos/issues/38
我计划从旧的 5V Arduino Nano 转移到新的 Arduino Nano 33 IoT。我已经使用软件串行 (SoftwareSerial.h) 为旧的 5V Arduino Nano 编写了一个功能代码,以与 Sim800L 模块进行通信。但是,当我将开发板更换为新的 Arduino Nano 33 IoT 时,找不到软件串行库。
我试过在 "Sketch" 下的 "include library" 菜单中找到它,但图书馆根本不存在。鉴于该产品太新了,我还没有找到任何有用的研究来帮助我解决这个问题。我对 EEPROM 库有同样的问题。
#include <SoftwareSerial.h>
#include <EEPROM.h>
有谁知道如何为新的 Nano 33 物联网板添加 SoftwareSerial.h 和 EEPROM.h 库,或者是否知道用于新板的新库?
下面是我在编译时得到的错误信息:
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
如有任何帮助,我们将不胜感激 谢谢
没有 SoftwareSerial.h
可用于 Arduino Nano 33 IoT,因为它不是必需的。该板提供了更多:可以分配给不同引脚的硬件序列号。
此功能由微控制器 Atmel SAMD21G 提供,称为 I/O 多路复用(详情请参阅 the data sheet Atmel SAM D21E / SAM D21G / SAM D21J 中的第 21 页)。微控制器提供 6 个 SERCOM,您可以将其分配给(几乎)任何引脚。
Arduino Nano 33 IoT 已经使用了一些 SERCOM:
- SPI NINA 的 SERCOM2
- SERCOM3 用于 MOSI/MISO
- 用于 I2C 总线的 SERCOM4
- 用于串行调试 (USB) 的 SERCOM5
我们还有 SERCOM0 和 SERCOM1。
引脚分配的详细信息在 variant.cpp
和 variant.h
文件中进行了描述。由于 Arduino 是开源的,您可以在 the GitHub repository for SAMD boards.
对于 Arduino Nano 33 IoT,引脚分配描述如下:
通过阅读 variant.cpp
,我们了解了引脚分配,尤其是 SAMD 引脚(PAxx 或 PBxx)和 Arduino 引脚之间的 link。
SAMD 引脚对于 link 与 the data sheet Atmel SAM D21E / SAM D21G / SAM D21J 的端口功能复用很重要。
SERCOM 可以是经典 或备用。在数据 sheet 中,classic 在 C 列中,alternate 在 D 列中。SERCOM 定义为它的索引和垫。例如:SERCOM0/PAD[3]
也称为 0.3
.
备注: RX 的焊盘定义为 0 到 3,而 TX 的焊盘仅定义为 0 和 2。选择引脚时,这是一个重要的考虑因素使用。
For reference, see the table I used to select the SERCOM to assign.
理论够多了,去找解决方案吧...
在 Arduino Nano 33 IoT 的引脚 5 (RX) 和 6 (TX) 上添加一个 硬件序列号:
#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 IoT 的引脚 13 (RX) 和 8 (TX) 上添加一个 硬件序列号:
#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...
}
我在官方 Arduino Github 项目上问了同样的问题,Martino Facchin 给了我解决方案:
UART mySerial(digitalPinToPinName(4), digitalPinToPinName(3), NC, NC);
注意"Uart mySerial"要大写"UART mySerial",否则编译器找不到lib
有关解决方案和核心修改的更多信息:https://github.com/arduino/ArduinoCore-nRF528x-mbedos/issues/38