精华内容
下载资源
问答
  • 手机控制NodeMCU实现远程电脑开关机

    千次阅读 2019-03-06 11:31:27
    NodeMCU实现远程电脑开关机1.WOL(Wake on Lan)2.阿里云物联网平台设置3.NodeMCU部分程序编写 一直都有在公司需要远程连接家里的台式电脑的需求,远程连接控制的部分用Teamview之类的工具很方便,接下来的问题就是...


    在公司经常需要远程连接家里的台式电脑,如果家里的台式机已经开机并安装了teamview,自然能很开心的连回去,可是家里的电脑并不会24小时开机备用,试过一段时间用时开机的方法,但是暂时不需要的时候也不能关机呀,关机了可没人给我再开机了。如果能随时开关家里的电脑,想想都美滋滋了!
    本着节能(money)环保的期望,自己研究了一下远程开关机的方法,目前能想到这个方法应该是操作最简单 (只需写软件),最安全(不用改电脑任何硬件),最省钱(只要买一个NodeMCU 15rmb左右),只要写一个手机app连接到阿里云服务器 ,改一下NodeMCU程序也连接到阿里云服务器,撸个Python在电脑后台还是连接到阿里云服务器,通过阿里云服务器来将app的消息分发给NodeMCU触发电脑开机,将关机指令分发给电脑执行关机,而且这个阿里云服务器还是几乎免费的,这样不管身在何处,只要手机有网络,NodeMCU和电脑连接同一个的路由器在局域网内,就能通过手机APP控制家里的电脑开关机了,而且NodeMCU可以放在家里的任意地方,只要能保持连接路由器即可,我放在了路由器旁边,用路由器后面的USB接口供电 。下面就分享方法给有同样需求的小伙伴了

    下面的方法默认你已经会:

    1. 搭建ESP8266 RTOS开发环境
    2. 搭建 Android studio 开发环境
    3. 搭建 Python 开发环境和安装第三方库(MQTT client)

    1.确认PC主板支持WOL(Wake on Lan)

    首先需要在BIOS里面设置打开WOL功能,这个可以根据主板型号找一下步骤,由于每个厂商主板的设置方法都不一样,这里就不详述了。在主板上打开WOL功能后,WIN10还需要修改网卡属性里面的电源管理,选择允许设备唤醒计算机
    在这里插入图片描述
    设置完成后需要确认局域网内能通过WOL唤醒电脑,测试方法:

    • 手机安装Wake On Lan 这个app,进入后添加设备,输入台式电脑的Ethernet 网卡MAC 地址(可以在cmd下用ipconfig /all获取),也可以用app的扫描功能找到设备
    • 将电脑关机,然后检查有线网卡的黄灯应该保持常亮状态,如果没有亮说明WOL功能未开启成功,需要重新确认主板和系统设置
    • 在app上后点击唤醒设备,如果能正常开机说明前面设置成功

    2.阿里云物联网平台设置

    由于家里的宽带没有独立的外网IP地址的,手机无法直接将WOL唤醒封包发送到处于局域网的NodeMCU,需要经过服务器转发信息,这里使用阿里物联网平台,只要注册一个账号,每个月有100万条免费的消息,用来做开关机电脑绰绰有余了。

    1. 先注册阿里云账号(这里也略过) https://www.aliyun.com/
    2. 在产品页面中找到物联网平台进入并申请开通在这里插入图片描述
    3. 待审核开通成功后,进入物联网平台的控制台,找到产品->创建产品->基础服务 后点下一步在这里插入图片描述
    4. 进入新增产品页面,填写产品名称后完成在这里插入图片描述
    5. 产品创建完成后,进入设备界面,创建三个设备分别分给NodeMCU/手机app/PC登录使用,创建设备后会生成设备连接需要的三元组(如下图三组信息),分别复制保存三个设备的三元组,后面需要负责到每个设备运行的程序里面在这里插入图片描述
    6. 创建完三个设备后,界面如图在这里插入图片描述
    7. 创建完三个设备后,需要设置三个设备间消息转发的规则,点击 规则引擎 ->创建规则 设置消息转发规则在这里插入图片描述
      8.先创建手机发消息给NodeMCU的转发规则在这里插入图片描述
      8.点击 编写SQL 编写app_2_mcu转发规则在这里插入图片描述
    8. 处理数据部分字段写power_on,表示把app发送的带有power_on的字段转发给NodeMCU进行处理在这里插入图片描述
    9. 进入对该数据的转发规则在这里插入图片描述
    10. 设置对该数据的操作,转发给remote_pc产品的NodeMCU/update 在这里插入图片描述
    11. 重复7-11 操作,创建app消息里的power_off字段转发给computer的规则,设置完成后如图在这里插入图片描述
      在这里插入图片描述
    12. 启动前面设置的两个规则,阿里云部分设置完成在这里插入图片描述

    3.NodeMCU(开机棒)部分程序编写

    1. 搭建ESP8266开发环境,参照 https://github.com/espressif/ESP8266_RTOS_SDK
    2. 使用官方提供的link Kit SDK,成功连接上阿里云,参照https://github.com/espressif/esp-aliyun
    3. 将官方提供的LintKit里的https://github.com/espressif/esp-aliyun/blob/master/examples/mqtt/mqtt_example/main/mqtt_example.c替换为https://github.com/rxly/RemotePCPower/blob/master/NodeMCU/mqtt_example.c
    4. 修改NodeMCU设备对应的三元组信息和需要唤醒PC的mac 地址在这里插入图片描述
    5. 在这里插入图片描述

    4.编译手机App(仅支持Android)

    1. Android App source code放在这个地址:https://github.com/rxly/RemotePCPower/tree/master/android_app
    2. clone下来后需要修改mobile_app设备对应的三元组信息在这里插入图片描述
    3. 修改完成后编译app即可以在手机上运行,远程电脑如果允许下面讲到的python脚本,会显示会远程电脑处于开机状态,能控制电脑开机,如果远程电脑没有运行该脚本,则显示打开远程电脑,按开机键会打开远程电脑
      在这里插入图片描述

    5.PC上运行关机检测脚本,并设置为开机运行

    1. 安装Python解释器,建议安装免费的Pycharm IDE,并安装paho mqtt client三方库
    2. 将https://github.com/rxly/RemotePCPower/tree/master/PC下的两个文件保存到本地,修改power_off.py里面PC设备对应的三元组在这里插入图片描述
    3. 设置此电脑 -> 管理 ->任务计划程序->创建任务,按下图依次设置在这里插入图片描述
      在这里插入图片描述
      选择保存bat文件的路径
      关机检测部分全部设置完成

    到这里应该就能用手机app控制电脑开关机了,如果中间有什么不清楚的地方,请留言说明,我看到后会补齐

    展开全文
  • MCU-串口接收实现

    2021-08-02 16:33:49
    MCU-串口接收实现 例程仓库:https://gitee.com/ll0_0ll/MCU-UART 1.串口接收中断+空闲中断 空闲中断是接受数据后出现一个字节的高电平(空闲)状态,就会触发空闲中断。 接收中断是接收一个字节后就会触发。 串口...

    MCU-串口接收实现

    例程仓库:https://gitee.com/ll0_0ll/MCU-UART
    MCU-串口发送实现:https://blog.csdn.net/lblmlms/article/details/119328471

    1.串口接收中断+空闲中断

    空闲中断是接受数据后出现一个字节的高电平(空闲)状态,就会触发空闲中断。
    接收中断是接收一个字节后就会触发。

    1. 串口开启接收中断和空闲中断(RXNE+IDLE)
    2. 在接收中断中将数据放入接收buff
    3. 在空闲中断中发出信号,通知上层应用数据帧接收完毕
    void USART1_IRQHandler(void)
    {
        u8 tmp;
        if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)//接收中断
        {
            tmp = USART_ReceiveData(USART1);
            ringbuf_write(tmp, &g_ringbuf);
            USART_ClearITPendingBit(USART1, USART_IT_RXNE);
        }
        if(USART_GetITStatus(USART1, USART_IT_IDLE) == SET) //空闲中断
        {
            has_one_frame = 1;
    
            USART1->SR;
            USART1->DR;
        }
    
    }
    

    2.串口空闲中断+循环DMA+RingBuff

    这种方法的缺点是一旦数据处理比较慢,而剩余缓存空间不够大,那么未处理的数据将自动被DMA接收的新数据所覆盖,所以缓存大小一定要有富余

    1. 开启空闲中断和相应串口DMA循环模式
    2. 初始化一段内存空间作循环队列
    3. 串口来了数据,DMA会自动存放到队列的那段内存上,并且开了循环模式它会循环存放
    4. 在空闲中断里,查询出数据帧的长度,移动队列尾,发出信号
    void USART1_IRQHandler(void)
    {
        uint16_t count;
        static uint16_t last_count = UART1_RINGBUF_SIZE;
        if (USART_GetITStatus(USART1, USART_IT_IDLE) == SET)
        {
    
            count = DMA_GetCurrDataCounter(USART_TX_DMA_CHANNEL); //获取剩余的数据数量
            if ((last_count - count) <= 0)
            {
                last_count += UART1_RINGBUF_SIZE;
            }
            ringbuf_move_tail(&task_uart1_ringbuf, last_count - count);
            LOG_A("count:%d,last_count:%d", count, last_count);
    
            last_count = count;
            has_one_frame = 1;
    
            USART1->SR;
            USART1->DR;
        }
    
    }
    
    展开全文
  • 233准备工作硬件软件硬件介绍ESP8266、ESP12F、NodeMcuNodeMcu 硬件参数引脚定义NodeMcu的基本参数NodeMcu 按钮和LED灯Arduino环境配置Arduino 基本入门开始使用NodeMcu进入实战前的模拟尝试使用三极管使用点灯科技...

    1 准备工作

    硬件

    在这里插入图片描述
    在这里插入图片描述
    那个CD4066的开关可以不买,面包板插不上。。。我犯傻了

    软件

    电脑上

    • Arduino 的IDE,我用的1.8.14
    • 点灯科技的库

    手机上就是点灯的APP

    2 硬件介绍

    ESP8266、ESP12F、NodeMcu

    参考网址:http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/esp8266-nodemcu-tutorial-index/nodemcu-hardware/

    http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/esp8266-nodemcu-tutorial-index/nodemcu-board/

    esp8266 : 百度一下8266就会出现乐鑫这个名字,乐鑫就是这个芯片的开发者,而且是中国公司,牛P。这个芯片是完成WIFI的全部任务的,他是一切的基础。在这里插入图片描述

    ESP12F 是安信可设计的一个模块,使用ESP8266芯片(可以理解在ESP8266的基础上又添加了一些其他硬件),如下图,屏蔽罩下面就是ESP8266的芯片

    在这里插入图片描述
    现在买到的都是ESP12F居多
    在这里插入图片描述
    NodeMCU则是以ESP12模块为核心的开发板,如下图所示。
    在这里插入图片描述
    而NodeMcu选购的时候常常会提到一个词 CH340芯片,这个东西是让你可以直接使用USB与NodeMcu通信,NodeMcu上的CH340芯片完成USB数据到串口数据的转换,就是有了这个芯片,我们才能非常简单的使用USB来连接ESP8266芯片。
    不过CH340是老一版本的芯片,新的NodeMcu都是CH2102(贵点),CH340主要问题是挑数据线,所以如果NodeMcu插上电脑没反应,换数据线吧。

    3 NodeMcu 硬件参数

    参考 http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/esp8266-nodemcu-tutorial-index/nodemcu-board/
    必须吹一波太极创客,简直良心的不要再良心的了,还出了免费的视频教程。
    也参考了下的博客
    https://blog.csdn.net/q1694222672/article/details/89214807
    https://www.arduino.cn/thread-83846-1-1.html

    引脚定义

    下面是摘自https://blog.csdn.net/weixin_45488643/article/details/105974842的一个对应图
    在这里插入图片描述

    然后关于NodeMcu的基本知识,
    开发板的丝印对应8266的引脚

    NodeMcu的基本参数

    在这里插入图片描述
    那个表看不懂,可以看下面这些

    NodeMcu工作电压3.3V,可以从以下几种方式供电:
    USB口: 5V供电
    VIN: 可输入5V供电。
    3V引脚: 可以输入3.3V直接给esp8266供电。当使用其他方式供电时,该引脚可以获得3.3V电压给其他设备供电。

    所有I/O输入电压都不得高于3.3V。同时请注意,这些引脚的最大输出电流是12mA。
    D0~D8: 数字输入引脚。
    PWM: 所有数字I/O都可用于PWM输出
    串口: Serial(TX-D10/RX0-D9)可用于和计算机或其他设备通信,Serial1(TX1-D4)只有输出端口,可用向其他设备发送数据。
    SPI: MISO\MOSI\SCK引脚可用于SPI通信。
    IIC: 实际上D0~D8都可以用作IIC通信。
    A0: 只能做模拟输入使用,输入电压范围为0~3.3V,8-bit精度。
    L: 位于8266模块上的LED,该LED连接到D2引脚,可以使用宏LED_BUILTIN编程控制

    可以使用开发板上印刷的Dx或引脚对应的GPIO编号控制引脚,如
    a=digitalRead(D1)
    a=digitalRead(5)
    是等效的。

    不建议使用的引脚
    ESP8266芯片有17个GPIO引脚(GPIO0~GPIO16)。这些引脚中的GPIO6~GPIO 11被用于连接开发板的闪存(Flash Memory)。如果在实验电路中使用GPIO6~GPIO11,NodeMCU开发板将无法正常工作。因此建议您不要使用GPIO6~GPIO 11。

    特殊引脚

    • GPIO2引脚 在NodeMCU开发板启动时是不能连接低电平的。
    • GPIO15引脚在开发板运行中一直保持低电平状态。因此请不要使用GPIO15引脚来读取开关状态或进行I²C通讯。
    • GPIO0引脚在开发板运行中需要一直保持高电平状态。否则ESP8266将进入程序上传工作模式也就无法正常工作了。您无需对GPIO0引脚进行额外操作,因为NodeMCU的内置电路可以确保GPIO0引脚在工作时连接高电平而在上传程序时连接低电平。

    总结就是:尽量使用GPIO1 对应D10 ,GPIO3对应 D9 ,GPIO13 对应 D7 ,GPIO12 对应 D6 ,GPIO14 对应 D5,GPIO4 对应 D2 ,GPIO5 对应 D1,GPIO16 对应 D0 等引脚

    NodeMCU开发板配有降压电路。您可以用NodeMCU开发板的模拟输入引脚读取0-3.3V的模拟电压信号。

    4 NodeMcu 按钮和LED灯

    我们可以通过NodeMCU开发板上的FLASH按键控制D3引脚的电平。当我们没有按下该按键时,D3引脚将会保持高电平状态。当按下该按键后,D3引脚会变为低电平。

    RST按键是让NodeMcu重新运行写入的程序

    LED灯和D4直接连接,低电平灯亮(这个不知道为什么,我测试的是D4 LOW,LED灯亮。。。。。。。。)

    5 Arduino环境配置

    esp8266 nodeMCU arduino开发环境
    https://www.jianshu.com/p/58f71aeb6633

    6 Arduino 基本入门

    建议看下面这个视频教程,每个都很短,看的很快的
    https://www.bilibili.com/video/BV1YW411Z76E?from=search&seid=957664686341888135

    7 开始使用NodeMcu

    直奔主题,远程开机嘛,可以使用点灯科技的APP远程造作NodeMcu某个引脚输出高电平,然后控制(这个如何控制方法很多) 主板开机。

    而主板开机的原理就是POWER_SW 的两个跳针短接一下,把POWER_SW 正的那个跳针电压拉低。

    在这里插入图片描述
    那么根据上面说的原理有两个控制方法

    • 控制方法1:直接连接POWER_SW的正跳针,让板子输出低电压,直接拉低POWER_SW的正跳针的电压实现开机
    • 控制方法2:让板子控制POWER_SW正负跳针的短接

    我这里使用的控制方法2,因为我不太确定POWER_SW正极的跳针电压到底多大,有说3.3V的有说5V的,我手头就一个能承受3.3V的NodeMcu,直接NodeMcu控制三极管导通,让POWER_SW两个跳针接通短路。

    8 进入实战前的模拟

    尝试使用三极管

    在这里插入图片描述
    额,数电和物理老师看到会被打死的电路图
    在这里插入图片描述
    电路连接的时候注意发光二极管和三极管的连接方式
    在这里插入图片描述
    发光二极管长的引脚是正

    在这里插入图片描述
    三极管找到带字的一面对着你的脸,从左到右分别是集电极 基极 发射机
    在这里插入图片描述

    Arduino代码,原理就是因为按下FLASH按钮会触发D3的低电平,所以读取D3的电压,如果D3是低电平,就给连接三极管基极的D7 写入高电平,导通三极管

    
    void setup() {
      // put your setup code here, to run once:
        Serial.begin(9600);   // 启动串口通讯
        pinMode(D3, INPUT); // 将FLASH按键引脚设置为输入模式
        pinMode(D7, OUTPUT); // 将FLASH按键引脚设置为输入模式
        Serial.println("开始了 ...");                            
        
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
        int pinState = digitalRead(D3); // 获取D3引脚状态
        if(pinState == HIGH){                     // 当按键引脚D3为高电平,按钮没有按下
          
          digitalWrite(D7,LOW);
        } 
        else {                                  // 当按键引脚D3为低电平
          Serial.println("低电平,按钮按下了");  
          digitalWrite(D7,HIGH);
        }
    }
    

    8 使用点灯科技的库

    注意,别使用太新的ESP8266的库,我最初用的1.8的库,结果板子能够连接WIFI但是没法构建MQTT通信,无限循环初始化

    在这里插入图片描述

    可以参考这个教程一步步来https://www.arduino.cn/thread-83174-1-1.html
    遇到问题,再去官方文档找找解决办法https://www.diandeng.tech/doc/arduino-course

    然后手机上装点灯APP,新建一个设备,记住秘钥,这个点灯官网就有教程

    9 开机部分实现

    先用杜邦线把跳线引出来,要不然每次拔插累死了在这里插入图片描述
    在这里插入图片描述
    电路很简单

    • D7连接 三极管的 基极作为信号端,高电平使三极管导通
    • POWER_SW+ 连接三极管集电极
    • POWER_SW- 连接发射极
    • NodeMcu的接地也连接POWER_SW-(共地)

    代码如下,功能就是按下NodeMcu的Flash按键,会短接POWER_SW+ 和POWER_SW- ,实现台式机开机。

    
    void setup() {
      // put your setup code here, to run once:
        Serial.begin(9600);   // 启动串口通讯
        pinMode(D3, INPUT); // 将FLASH按键引脚设置为输入模式
        pinMode(D7, OUTPUT); // 控制信号
        pinMode(D4, OUTPUT); // D4控制 开发板上的LED等,当我们按下FLASH按键,让LED亮,相当于个指示信号
        Serial.println("开始了 ...");                            
        digitalWrite(D4,HIGH);
        digitalWrite(D7,LOW);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
        int pinState = digitalRead(D3); // 获取D3引脚状态
        if(pinState == HIGH){                     // 当按键引脚D3为高电平,按钮没有按下
          
          digitalWrite(D7,LOW);
          digitalWrite(D4,HIGH);
        } 
        else {                                  // 当按键引脚D3为低电平
          Serial.println("低电平,按钮按下了");  
          digitalWrite(D7,HIGH);
          digitalWrite(D4,LOW);
        }
    }
    

    10 添加开机状态监控

    这一节添加状态监控保持上一节描述的开机电路没有修改,只是代码修改了,变成点灯APP上的按键触发,而不是通过按NodeMcu板子上的FLASH按键触发三级管导通。

    直接读取 电源指示灯正极 或者 硬盘指示灯正极是否有电压就行,有电压了电脑就是开机了。
    在这里插入图片描述

    我这里串了两个200欧的电阻,分下电压,否则会超过NodeMcu 模拟输入的最大3.3V电压。
    电路如下,另外比如主机箱LED+ 应该都是杜邦的母头,所以需要用一根公转公的杜邦线才能插到面包板上。
    在这里插入图片描述
    忽略后面乱糟糟的网线
    在这里插入图片描述

    配套的点灯APP设置如下,主要是按键和读数控件名字
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    总代码

    
    #define BLINKER_WIFI
    
    #include <Blinker.h>
    
    
    char auth[] = "点灯上添加硬件对应的秘钥";
    char ssid[] = "无线ID";
    char pswd[] = "无线密码";
    // 新建按键组件对象 
    BlinkerButton Button1("btn-abc");
    //读取电压  
    BlinkerNumber temp("temp");
    
    //板子A0端口读取的模拟电压
    float temp_read = 0;
    //表示主板开机与否
    int com_state=0;
    
    // 按下按键即会执行该函数
    void button1_callback(const String & state)
    {
        //串口调试输出
        BLINKER_LOG("get button state: ", state);
        //state是APP上按键的状态,tap表示按了一下
        if (state=="tap") {
            //开机命令,NodeMcu还是D7引脚接三极管基极,所以控制D7输出一下高电平
            digitalWrite(D7, HIGH);
            Blinker.delay(500);
            //记得再写入低电平,否则就是长按关机了
            digitalWrite(D7, LOW);
            //电脑开机了
            com_state=1;
    
            BLINKER_LOG("触发开机");
    
            //这个print是给手机上的点灯APP的响应
            Button1.print("on");
        } 
        //state是APP上按键的状态,press表示长按了,表示关机
        else if(state=="press"){
            //如果是长安关机,我们这里是 短接4S
            digitalWrite(D7, HIGH);
            Blinker.delay(4000);
            digitalWrite(D7, LOW);
    
            com_state=0;
            BLINKER_LOG("强制关机");
            
            // 给APP上反馈开关状态
            Button1.print("off");
        }
    }
    
    
    void setup()
    {
        // 初始化串口
        Serial.begin(115200);
        //在 void setup() 中初始化串口Serial 
        BLINKER_DEBUG.stream(Serial);
        //调试输出更多细节信息
        BLINKER_DEBUG.debugAll();
        
        // 初始化IO
        //D7 高电平控制电脑开机
        pinMode(D7, OUTPUT);
        digitalWrite(D7, LOW);
    
        // 初始化blinker
        Blinker.begin(auth, ssid, pswd);
    
        //按钮组件也需要在 setup() 中注册回调函数
        Button1.attach(button1_callback);
    }
    
    void loop() 
    {
      //此函数需要频繁调用以保持设备间连接及处理收到的数据, 建议放在 loop() 函数中
        Blinker.run();
        //这个吧,就是电脑开机了才读电压
         if(com_state==1){
          //读取电压
          int getADC=analogRead(A0);
          int x = map(getADC,0,1023,0,32);
          temp_read=(float)x/10;
          //串口打印读取的电压
          BLINKER_LOG("电压为: ", temp_read, " V");
          Blinker.delay(500);
          //下面函数就是给点灯的APP发送电压信息了
          temp.print(temp_read);
        }
      
    }
    

    另外点灯也是为了节省带宽(可以理解,毕竟白嫖了人家),APP是信息主动发起方,所以一段时间后可能APP上就接受不到电压信息了,点击debug窗口的刷新就好了
    在这里插入图片描述

    展开全文
  • MCU中printf重定向实现

    2019-05-16 09:15:00
    // 添加头文件 #include "stdio.h"  #include "stdarg.h"    ... 定义一个字节型的变量,这个变量保存在RAM的idata区....// 串口打印函数实现  ...转载于:https://www.cnblogs.com/ownDefine/p/10873625.html
    // 添加头文件
    #include "stdio.h"  
    #include "stdarg.h"   
         
    //全局变量
    bit TI_busy;
    unsigned char idata putBuf[100];  //最大数量
     
    /*  idata注释:
      定义一个字节型的变量,这个变量保存在RAM的idata区.单片机的存储主要分为四个区域:data、idata、code、xdata。
      data区:单片机能直接访问的 直接寻址RAM区,00H-7FH
      idata区:单片机间接防问的RAM区,80H-FFH
      code区:单片机的内部程序存储区,也就是单片机内置的FALSH
      xdata区:单片机外部寻址区,一般指片外的存储器,0000H-FFFFH
    */
     
    // 串口打印函数实现 
    void debug_printf(char* fmt,...)
      unsigned char i,len;
     
         va_list ap;                  //定义变量为字符指针
      va_start(ap, fmt);              //获取可变参数列表的第一个参数的地址
         len = vsprintf((char*)putBuf, fmt, ap);     //将可变列表拷贝至缓冲区
      va_end(ap);                //清空va_list可变参数列表
      
      for(i = 0; i < len; i++)         //把缓存内的字符发送出去
       {   
        while( TI_busy );                //等待前面的数据发送完成  
        TI_busy = 1;   
        SBUF = putBuf[i];      //发送一个字节
       } 
      memSet(putBuf, 0, sizeof(putBuf));   //清空缓存(自己实现)
    }
       
    //main入口函数
    void main()  
     { 
      unsigned int i; 
      UartInit();         //串口初始化
      EA=1;          //开总中断  
      while(1)
       { 
         debug_printf(" Hello World ! ");  
        debug_printf("  i = %03d, 0x%03X\r\n", i, i++);  
        delayMs(1000); 
      }
     
    //中断处理函数    
    void Uart1() interrupt 4 
      if(RI)            //接收
        RI = 0;         //清标志  
      else            //发送
      {   
        TI = 0;         //清标志  
        TI_busy = 0;      //非忙
      } 
    }

    转载于:https://www.cnblogs.com/ownDefine/p/10873625.html

    展开全文
  • GD产品通过串口进行程序下载
  • 利用blynk云平台及nodeMCU实现远程点灯 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本...
  • MCU串口命令解析器的实现

    千次阅读 2020-05-07 23:56:05
    在日常工作中,我们经常会跟各种协议打交道,最常见的就是串口协议了,接下来我们将通过几个案例来实现串口解析命令,以下案例基于STM32L431RCT6小熊派开发板。 案例一 实现需求: 协议制定: 指令(字符串) 含义 ...
  • nodeMCU是物联网硬件模块,要联网,要发信息,就用mqtt协议走起来。怎么走,请看本文咯
  • 没什么可说的就是开发中需要做https请求,但是几乎没有找到例子。最后就研究开源代码头文件、等文档。...后来看到NodeMCU有自己的https实现。使用起来特别顺滑。特地献上一篇博客。 这是NodeMCU开源代码中关于网络...
  • MCU-串口发送实现

    2021-08-02 16:37:24
    MCU-串口发送实现 例程仓库:https://gitee.com/ll0_0ll/MCU-UART 1.串口发送寄存器为空中断+RingBuff 初始化一段内存空间作循环队列 发送数据时,先将数据放到循环队列中,然后开启发送寄存器为空中断(USART_IT...
  • ~~ NodeMCU固件(含WiFi配置) 链接:https://pan.baidu.com/s/1jwWB7ZxoEY1tK0Tilq_OoA 提取码:0y6t 二、使用enduser模块实现 1、构建添加模块固件 2、 3、电脑连接模块开放的网络 4、通过网页配置联网 192.168.4.1...
  • NodeMCU与贝壳物联通信实现远程控制

    千次阅读 2017-09-07 20:49:37
    https://github.com/It-Why/NodeMCU/blob/master/%E8%BF%9E%E6%8E%A5%E7%89%A9%E8%81%94%E7%BD%91%E5%B9%B3%E5%8F%B0/beike.lua--[[ --NodeMCU连接贝壳物联程序,作者Why,整理时间2017.09.07 --作品说明:NodeMCU...
  • 背景 所需资料 1.Arduino IDE 参考 https://www.arduino.cn/thread-17884-1-1.html
  • matlab控制代码 青岛大学 RoboMaster 嵌入式 代码开源 Developing 稳健开发测试中 软件功能介绍 本开源软件为青岛大学未来战队机器人的嵌入式控制代码。参考了官方开源和其他战队...https://gitee.com/qsheeeeen/qdu-
  • 调用Lua操作Nodemcu 控制继电器 新建一个WEB服务器,通过手机网页控制继电器 语言:lua 单片机:nodemcu WiFi芯片esp8266 视频:https://www.bilibili.com/video/av37260938 ...
  • MCU设计电路的总结

    千次阅读 2018-11-07 20:18:06
    图中的T_MISO/T_MOSI/T_PEN/T_SCK/T_CS连接在MCU的PB2/PF9/PF10/PB1/PF11上, 这些信号用来实现对液晶触摸屏的控制(支持电阻屏和电容屏)。LCD_BL 连接在 MCU 的 PB0 上,用于控制 LCD 的背光。液晶复位信号 RESET...
  • 文章目录介绍1. 开发环境以及驱动库1.1 开发环境1.2 模块驱动库2....本文主要介绍安信可NodeMCU-32S开发板驱动Ra-01模块实现LoRa信号传输温湿度数据,并显示到OLED显示屏上。其中LoRa通讯传输过程模拟网关与节点的单
  • 物联网设备的控制单元核心就是MCU,也就是常说的单片机。 对于物联网设备,根据开发环境、想制造的设备以及经验的不同,选择不同的控制芯片也就至关重要。 选择单片机的几个依据: 当然对于更为复杂的设备,...
  • https://mp.weixin.qq.com/s?__biz=MzU4NjMxNjA2NQ==&mid=2247484016&idx=1&sn=a1af2c19b8ecff00b4f0b99e0cfa6db3&chksm=fdfc623eca8beb28ae9268ab33c1b17b970cbbbd4b7cada2e98860dc94bdb19c6e8f1b3b72e8#rd
  • nodeMCU典型代码

    千次阅读 2018-04-20 21:26:37
    nodeMCU官方文档:https://nodemcu.readthedocs.io/en/master/en/modules/wifi/1.发送UPD到服务器wifi.setmode(wifi.STATION) wifi.sta.config("enjoy2018","enjoy12345") print(wifi.sta.getip...
  • NodeMCU是一块集成了ESP8266的单片机,它具有体积小,扩展性强的特点。在物联网应用领域将迸发出强大的能量。我们通过入门一个NodeMCU的程序来展示一下它的强大功能。  NodeMCU的WIFI模块有三种模式,AP模式...
  • 还有外设测试 tools,里面包含一个openocd.exe,可以用它实现软件的下载,一般openocd搭配CMSIS-DAP硬件 3、rtl目录说明 core, cpu代码 debug,jtag代码 perips,外设代码 soc,总的soc入口代码 utils,其他工具...
  • 国产MCU厂商盘点

    万次阅读 2021-01-17 06:20:03
    原文:https://www.sohu.com/a/292946509_132567 来源:内容来自「与非网」,谢谢。 在即将到来的物联网时代,各类终端需求的持续发酵下,市场重燃了对MCU这个已面世数十年产品的热情。 在近期一份的调查报告中...
  • MCU上跑的4个GUI

    千次阅读 2019-07-31 21:34:44
    前几天Microchip发布了一款内嵌GPU的MCU,这大抵是一件很多工程师想过但无法做到一种幻想,而Microchip居然真的将它实现了。当然它们应用的是microAptiv的架构,这是一种基于MIPS的微控制器架构,其它玩Cortex-M的想...
  • NODEMCU介绍与使用

    千次阅读 多人点赞 2020-02-24 21:35:54
    NodeMcu是在esp8266-12E的基础上封装好的开源IoT 开发板。 使用起来比较简单的模块 在学习esp模块的过程中调试很方便简单。 NodeMcu 是使用ESP-12E 模组 多了一些封装上 (只有NodeMCU V1 才是使用ESP-12 只要是...
  • 以下地址为官网对于SmartConfig的介绍文档https://www.espressif.com/sites/default/files/documentation/esp-touch_user_guide_cn.pdf这里是我们是在NodeMCU下开发,对上述文档的api函数做了自己的封装。...
  • 源码及工具下载:https://github.com/RL-Y/NodeMCU-aliyun.git Arduino:提取码:ythf ;链接: https://pan.baidu.com/s/1CsIA7LFZ4IElnTA62cozaA 目录一、软、硬件二、给NodeMCU刷固件(.bin)三、获取三元组四、...
  • 最近在PICF18的平台上熟悉J1939的协议,第一个例子算是调试完了,使用的最简单的polling模式来实现的。但是如果想要让J1939的协议栈处理的能力更好,实时性更好且设计更加简单一些,需要使用中断。 这样,我需要...
  • nodemcu各个模块 以及中文说明

    千次阅读 2019-06-21 01:10:38
    image.png 来看一下每个模块都是干什么的: 官方固件下载: https://nodemcu-build.com/ ...https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn (转自http://blog.csdn.net/dustintime/articl...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,160
精华内容 3,664
关键字:

mcu实现https