问题描述
我正在将数据从ATTiny85传输到ESP8266(NodeMCU v3)。我正在使用USB电缆为NodeMCU供电。 当我使用5V给ATTiny供电时,它工作正常。
但是我计划将我的项目转移到5V耐压的ESP32中。因此,我必须在3.3V下运行ATTiny(根据数据表,这是可能的)。但是,当我为ATTiny85使用3.3V电源时,没有得到预期的结果。我胡说八道。使用电平转换器是一种选择,但我想知道自己做错了什么。
为澄清起见,我所做的唯一更改是使用3.3V(而不是5V)为ATTiny供电。
我准备了以下演示来演示我的情况。在此先感谢:)
我正在使用Ardiono 1.8.10
NodeMCU核心:2.7.4
ATTiny85使用8MHz内部振荡器运行。
NodeMCU代码
char rx;
void setup()
{
Serial.begin(57600);
}
void loop()
{
if (Serial.available()){
rx=Serial.read();
Serial.print(rx);
}
}
ATTiny85代码
#include "SoftwareSerial.h"
SoftwareSerial Monitor(5,4);
uint8_t x=0; //temp
uint8_t y=128; // ECG
void setup() {
Monitor.begin(57600);
}
void loop() {
Monitor.print("E"+String(int(y)));
Monitor.print("T"+String(int(x)));
x=x+1;
y=y-1;
delay(10);
}
当ATTiny从Arduino UNO以5V运行时,串行监控od NodeMCU
T95E32T96E31T97E30T98E29T99E28T100E27T101E26T102E25T103E24T104
Screen-Shot 1
当ATTiny从Arduino UNO以3.3V运行时,串行监控od NodeMCU
⸮qxt⸮q99⸮qx5⸮q9x⸮qx6⸮q97⸮qx7⸮q96⸮qxx⸮q95⸮qx9⸮q9t⸮q9`⸮q93⸮q9q⸮q9r⸮q9r⸮q9q⸮q93
Screen-Shot 2
当ATiny从ESP8266以3.3V运行时,串行监控od NodeMCU
3x⸮rtv⸮q37⸮rt7⸮qsv⸮rtx⸮qsu⸮rty⸮q3t⸮r5`⸮q3s⸮r5q⸮q3r⸮rur⸮q3q⸮r5s⸮q3`⸮r5t
Screen-Shot 3
解决方法
当您使用3.3V供电时,ATTiny85似乎必须以38400bps的速度运行SoftwareSerial。
但是用5V供电时,它可以在57600bps上正常工作。