关于ESP8266-NodeMCU和onenet通信传输学习总结(二)
1.更新了一些功能和代码优化和注释
添加了电机的网络控制(后续将用于门锁控制和窗帘控制),过程有点坎坷,本想用一块ESP8266-NodeMCU实现整体功能,结果发现这块板控制电机的同时不能干别的事,多线程也是伪多线程。不好用,便计划用两块开发板,一块负责通信连接和数据传输,另一块用来做下面的硬件控制,结果是可行的,且很容易实现,但不甘于资源的浪费,又想方设法放在一块开发板上实现,最终应该算是成功了,但似乎电机很热发烫,还待优化。ps:arduino官方的电机库放我这就直接跑飞了很奇怪,若有同样问题的博友希望留下经验分享。
这里电机用的是28BYJ-48,这里可能有人吐槽为什么不用42电机,原因在于我只有这个,还是从同学那收破烂来的。。。
说了这么多,不如直接看代码(代码规范有点辣鸡,希望不影响阅读):
/**
* author: topthemaster
* time: 2021.1.10
*
*/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "AccelStepper.h"
#include <Ticker.h>
#include <ArduinoJson.h>
#define PRODUCT_ID "396066" //产品名
#define API_KEY "tx6WM==zmW21Z2pt4susBRlHMuY="//产品密钥
#define DEVICE_ID "666259032"//设备名
#define TOPIC "ceshitopic1"//订阅主题
WiFiClient wifiClient;
Ticker ticker;
Ticker ticker2;
int count=0;//ticker1控制 数据上传下发的间隔时间(s)
int count2=0;//ticker2控制 电机转动的时间(s)
AccelStepper stepper1(4, D0, D2, D1, D3);//电机引脚
String door ="close";//默认检测门关闭
PubSubClient mqttClient(wifiClient);
const char* ssid = "Fishing WiFi ";//wifi名
const char* password = "zheshiyigewifi