整活从未停止,坚持没有几个😢😢😢 2022-08-06 学习, 厌世烦话 暂无评论 ### 我可真是个大聪明🤡🤡🤡 > 整活从未停止,坚持没有几个,每天忙忙忙,焦虑焦虑焦虑,被自己给整笑了,一直能坚持下去的事情好像没有几件,上个月好像在看Vue,看了个半吊子,现在又开始看bootstrap,我在干哈啊? 那就接着奏乐,接着舞吧😂😂😂 > mvc的设计模式好像还是比较流行的,其实以前接触过mvc的项目,是基于.netframework的,现在流行的是.Net6,而且我感觉webapi和mvc的界限越来越模糊了,微软还是挺青睐bootstrap的,直接就默认内置内vs的模板项目中了,主要解决了多个终端的适配问题,大致的看了一下教程,确实挺牛皮的。教练!我要学! 也不说什么豪言壮语要做什么大项目了,我感觉我又会学个半吊子溜了。😅😅😅
Nodemcu(Esp8266)の折腾日记🤪~🤪~🤪~ 2022-08-01 学习 暂无评论 ## 写在前面 🥳🥳🥳 > 上周五从淮北回来,开发板和模块都到了,浅玩了一会儿,没学过嵌入式,这些东西太陌生了😅😅😅,而且c++也太久没碰,忘记的差不多了。 Tips(开发板相关): > - 不是所有的灯都是高电平亮,低电平灭,nodemcu板载的led就是低电平亮,高电平灭 - 引脚的分类(我知道的): - gnd 就是地线 - vcc 就是正极 - clk 可以输入时钟信号 - 引脚的模式: - 输入 INPUT 引脚可以接收电平信号 - 输出 OUTPUT 引脚输出电平信号 - 上拉 INPUT_PULLUP 不知道干啥的,好像是可以控制电阻的, - 有的模块有封装好的库,可以直接使用,有些是不需要的,比如led灯,只要给i/o引脚输入高电平就可以亮了,但是数码管是需要第三方的库,使用起来才比较“优雅” Tips(编程相关): > - setup() 初始化的时候执行的代码块 - 需要用pinMod(pin,mod)定义引脚模式,不然操作不了引脚, - loop() 循环的代码块 这里面的代码会一直循环,nodemcu硬件应该是只有单线程,实现多线程的话需要用第三方的库 ticker,b站有相关的教程 Timeline: 2022-8-1:顶多能点个灯,我终于可以控制rgb的灯了,为什么花了这么长时间,有两个原因, 1. 忘记定义引脚模式为输出模式 2. nodemcu板子上的引脚和esp8266的原始引脚是不对应的,板子上的D2应该定义GPIO4,给我睁大眼睛,看仔细。😒😒😒 接下来需要安排好引脚和模块的位置,用按钮输入信号,mqtt协议,巴法云,等。 📅:20220802 > 现在只剩下无源蜂鸣器没解决了 1. 当按钮按下的时候,数码管开始倒计时,并且向topic发送一条消息on,倒计时结束后会继续显示时间, 2. 当接收到mqtt的消息的时候也会开始倒计时,效果和开关是一样的 3. 也已经通过巴法云接入到了天猫精灵,应该也是可以直接接入米家的 ⭐代码分析⭐: MQTT: ``` c++ #include #include //********************需要修改的部分*******************// //巴法云私钥 #define ID_MQTT "****" //用户私钥,控制台获取 const char *topic = "TickDown001"; //主题名字,可在巴法云控制台自行创建,名称随意 //**************************************************// const char *mqtt_server = "bemfa.com"; //默认,MQTT服务器 const int mqtt_server_port = 9501; //默认,MQTT服务器 WiFiClient espClient; PubSubClient client(espClient); client.setServer(mqtt_server, mqtt_server_port); //设置mqtt服务器 client.setCallback(callback); // mqtt消息处理 //巴法云回调函数 void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Topic:"); Serial.println(topic); String msg = ""; for (int i = 0; i < length; i++) { msg += (char)payload[i]; } Serial.print("Msg:"); Serial.println(msg); if (msg == "on" && IsStart == false) { IsStart = true; startTick(); } else if (msg == "off") { //如果接收字符off,亮灯 } msg = ""; } //订阅主题,如果需要订阅多个主题,可发送多条订阅指令client.subscribe(topic2);client.subscribe(topic3); client.subscribe(topic); client.publish(topic, "倒计时正在进行中!!!"); void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect(ID_MQTT)) { Serial.println("connected"); Serial.print("subscribe:"); Serial.println(topic); //订阅主题,如果需要订阅多个主题,可发送多条订阅指令client.subscribe(topic2);client.subscribe(topic3); client.subscribe(topic); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } //loop函数巴法云 if (!client.connected()) { reconnect(); } client.loop(); ``` 以上是更MQTT协议相关的代码,其实很容易理解的 - 先引入必要的库 - 必要的几个参数 - 用户私钥 控制台获取 - topic主题,再控制台创建,智能家居的话可以是开关、插座、空调等等 - mqtt服务器地址和端口 - 实例化client需要传一个wifi的实例,然后`setServer()`传入服务器、端口、`setCallback()`设置回调函数 - 回调函数有三个参数,第一个是主题,第二个是返回值,第三个是值的长度,需要转换成string类型 - 订阅主题 `subscribe()`,执行多行可以订阅多个主题 - 发布消息`publish()`第一个参数是主题名,第二个是发布的内容 - `client.connected()`可以返回mqtt连接状态 - `client.loop();`这个可以理解成发送心跳包和读取服务器数据,需要一直执行的 📅:20220806 > 前几天把蜂鸣器也解决了,这里踩了一个坑(其实就是自己脑子不能转弯🥴🥴🥴) >下面是一张在网上找了一张频率对应的表  > 小学二年级学过频率的定义,一秒钟内震动的次数,比如“哆”频率是262,也就是一秒钟震动262次,1000/262=3.816794 3.8167毫秒,3816微妙震动一次,但是`delay()`方法最小单位是毫秒,所以要用这个微秒来做延迟`os_delay_us()` 其实3816是它的周期,一个周期是低电平 间隔 高电平 间隔 组成的,所以这个间隔的时间需要3816/2=1908us, 这是音调,要想出音乐还得要有拍子,比如哆的四分音符,它的for循环的次数就是 1000000/4/1908\*2=262.054507次,八分音符就是1000000/8/1908\*2=131.027254次 折腾倒计时就算结束了,下一个准备弄远程空调和远程开关 以上!
开始整活~~~esp8266模块 2022-07-20 学习 暂无评论 > bg:宿舍的洗衣机离我比较远,而且不能倒柔润剂和消毒液,洗的过程中需要去倒消毒液,然后还得收衣服,每次都用天猫精灵来设置两个提醒:sweat_smile::sweat_smile: 虽然但是,就是玩 :smile: > tg:用天猫精灵控制esp8266模块,模块上接了一个数码管,一个无源蜂鸣器、积木按钮,还有一个led灯(这些不知道能不能全接上),模块接收到了信号,会固定倒计时32分钟提醒一下倒洗衣液,44分钟之后收衣服,提醒方式就是蜂鸣器响,led灯闪。信号可以是按钮输入的高低电平,天猫精灵的信号:high_brightness: :high_brightness: 清单 :paperclip::paperclip::paperclip: - RGB模块 三色LED模块 全彩LED模块 ***1** - 新款蓝板 电子积木 大按键模块按钮模块五色套装 ***5** - 2.54MM 40P杜邦线 双头 - 母对母***15** - 公对母***15** - ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340 ***1** - 无源蜂鸣器模块 低电平触发 发声模块 蜂鸣器控制板 报警器 ***1** - 4位数码管显示模块 LED亮度可调 带时钟点 TM1637 ***1** > follow-up: 如果上面那个可以实现,那么接下来会做这两个 1. 买小米的空调伴侣2来远程控制空调没戏了(插座位置是死角) 说不定可以用esp8266+红外传感器实现 2. 宿舍的开关面板撬不开,装不了智能开关,可以试试esp8266+SG90舵机实现机械开关。不知道那个舵机能不能按的动豆形开关,管他呢。 > end:现在啥都没买,叨逼叨这么多,菜狗赶快下单!!!:dog::dog: