1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在做一个项目,使用 NodeMCU 板与移动应用程序进行 WI-FI 连接。NodeMCU 通过串行端口连接到微控制器 PIC18F8550,微控制器执行所有逻辑处理并控制传感器。
我已经以不同的方式对 PIC 和 NodeMCU 必须执行的操作进行了编程。然后我用 Arduino 检查数据是否从 PIC 发送,以及 PIC 是否通过串口正确接收回数据,一切正常。在那之后,我对 NodeMCU(而不是 PIC)做了同样的事情,并且工作正常。 但是当我把它们放在一起时,它不起作用。 所以我退后一步,尝试在 PIC 和 NodeMCU 之间进行基本的串行通信,这就是我遇到的问题。 PIC 有两个红外传感器,当其中一个被激活时,一个字符会发送到 NodeMCU。由于 NodeMCU 的 serialEvent() 不起作用(我尝试了一些代码,但没有一个起作用),我在通过电线与 RX 引脚连接的 pinD7 中进行了硬件中断,因此当 NodeMCU 接收到某些东西时,它会中断主代码并读取字符(我需要使用中断进行串口通信,因为主代码有时会停在等待答案的http请求中,所以如果我将阅读语句放在主代码中,它不会读取任何内容)。 首先,我激活 PIC 的一个传感器,PIC 发送字符,中断调用函数,NodeMCU 读取字符。问题总是出现在第二次尝试中。我尝试再次激活其中一个传感器(同一个或另一个),然后 NodeMCU 自行重置。我读到它可能是 WDT 第一次,也许问题是因为循环。我已经尝试了一些我在这个论坛和其他网站上看到的东西,但到目前为止都没有用。然后我读到它可能是复位引脚,但它没有连接到任何东西。 PIC 只发送一次该字符。它发送“L1”或“D1”。 NodeMCU 代码如下: 代码:全选#include void ICACHE_RAM_ATTR PuertoSerial (); int x = 0; String cadena = ""; #define LED2 D6 #define LED3 D5 #define INTER D7 void PuertoSerial () { if (Serial.available()) { String dato = Serial.readStringUntil('1'); cadena.concat(dato); } } void setup() { Serial.begin(115200); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); pinMode(INTER, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(INTER), PuertoSerial, FALLING); } void loop() { if (cadena == "L") { digitalWrite(LED3, HIGH); delay(100); digitalWrite(LED3, LOW); Serial.println("N"); delay(1); cadena = ""; } else if (cadena == "D") { digitalWrite(LED2, HIGH); delay(100); digitalWrite(LED2, LOW); Serial.println("P"); delay(1); cadena = ""; } delay(0); } 第二次重置 NodeMCU 的异常是这个: 代码:全选 ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x4010f000, len 3584, room 16 tail 0 chksum 0xb0 csum 0xb0 v2843a5ac ~ld |
|
相关推荐
1个回答
|
|
要使用NodeMCU板与移动应用程序进行WiFi连接,你可以按照以下步骤操作:
1. 在NodeMCU板上安装WiFi库,该库提供连接到WiFi网络所需的功能。 2. 为NodeMCU板编写代码,将其连接到WiFi网络,并尝试从移动应用程序接收数据。您可以使用NodeMCU板上的串行端口和WiFi模块,将数据从移动应用程序发送到NodeMCU板。 3. 在移动应用程序中,您可以使用相应的API(例如Android的Network API,iOS的UIKit框架中的NSURLConnection)来连接到WiFi网络,并向NodeMCU板发送数据。 4. 如果在串行通信方面遇到问题,您可以检查您的代码中的波特率设置是否正确,以及其它可能导致问题的常见错误。通常,与串行通信相关的问题需要详细的调试过程,以确定问题所在。 5. 确保NodeMCU板和PIC之间的串行通信正常,这对于您的项目的成功非常重要。您可以通过撰写简单的测试代码来检查NodeMCU板和PIC之间的通信是否正常。 6. 最后,将所有部件放在一起,并尝试在移动应用程序和PIC之间成功地实现数据传输。如果您在NodeMCU板和移动应用程序之间发现任何问题,请参阅相应的API文档,以了解适当的处理方式。 |
|
|
|
只有小组成员才能发言,加入小组>>
1140 浏览 1 评论
577浏览 6评论
478浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
462浏览 5评论
463浏览 4评论
438浏览 4评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:19 , Processed in 0.855130 second(s), Total 46, Slave 40 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号