接着上一篇,可以下载helloworld.bin之后,开始测试下SDK下面的外设,利用手上的资源,看看效果。
要开始玩外设,最好要看下NodeMCU的基本原理图(笔者的开发板应该是这玩意)
- GPIO操作
LED小灯一个
蜂鸣器
也可以自己焊接LED发光二极管干。直接搞个面包板,要跟ESP8266共地,如果单独电源的话。
这里挑选GPIO5.
源码要做一点修改,源码里面把中断打开了,还控制了两个OUT。这里直接用peripherals\gpio\main 下面的代码,直接拷贝到hello_world_main.c内容。
#define GPIO_OUTPUT_IO_0 5 //gpio 5
#define GPIO_OUTPUT_PIN_SEL ((1ULL<<GPIO_OUTPUT_IO_0)) //sel
gpio_config_t io_conf;
//disable interrupt
io_conf.intr_type = GPIO_INTR_DISABLE;
//set as output mode
io_conf.mode = GPIO_MODE_OUTPUT;
//bit mask of the pins that you want to set,e.g.GPIO15/16
io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
//disable pull-down mode
io_conf.pull_down_en = 0;
//disable pull-up mode
io_conf.pull_up_en = 0;
//configure GPIO with the given settings
gpio_config(&io_conf);
//类似stm32里面配置GPIO,输入还是输出,是否是open-drain mode。
根据上一篇的文章,直接下载。
- ADC测试
直接把adc的task拷贝过来,为了方便观察,去掉了fast read
添加到刚才的hello_world_main.c里面
烧写,看效果
最终输出
从这里看不出效果,adc读取一直是十几,手上也没有传感器,买了个温度传感器DHT11,还是数字串行的。直接用A0短接3.3,读数直接1024了,精度只有10位?查看了下规格书,的确只有10位,而且最好是测量0~1v,不要长时间短接3.3. 判断代码是否可以工作即可。
我们可以采集下VDD的电压,根据描述需要重新编译,设置vdd33_const位255,修改好后,重新编译下,源码也要做相应的调整
改成255
最终输出效果
注意:
- 很多串口工具没有74880,为什么刚下载了,必须是这个波特率,貌似跟BootLoader启动的时候的晶振有关,为了省事,最好用一个支持波特率74880的串口工具,观看程序输出的日志。这里推荐使用SecureCRT, 找不到的同学可以去我的百度共享里面下载。
下一步计划
- 调试下LCD屏,看看能否搞定SPI接口的1.44 寸屏幕。SDK里面的好像OLED,SPI通信按说都一样。
- 了解esp8266 的protocols, 以及components,这样才能写tcp,mqtt,http玩复杂点,高级点的业务,现在阿里,腾讯的服务器,一年几十块,搞个mqtt服务器+web前端,是不是一个迷你的物联网小demo就出来了。