本帖最后由 samplecode 于 2016-7-13 19:20 编辑
1.esp8266-12e制作nodemcu
在小车收到之前把买的esp8266烧成了nodemcu,学习下lua.
1.1电路图
我用的usb转串口上的电源供的电。
1.2烧写用的软件及资料
链接:https://pan.baidu.com/s/1qYN8HnY 密码:iby1
烧写固件用的是nodemcu-flasher-master这个。按着箭头方向找到那个文件,系统是32位的进对应的win32.
烧写前先将gpio0和gnd连上
软件打开后的如上图,连好焊好的硬件,点Flash,读取到MAC就开始烧写了,然后esp8266上的灯就一直闪,烧完就不闪了。
不点config貌似是从网上下固件,最新的固件没下载下载,只有一个旧的nodemcu_integer_0.9.6-dev_20150704.bin
点config加载一下固件
再点flash
进度条走完也就烧完了
1.3nodemcu的编程环境ESPlorer
打开esplorer
1)打开串口,设置好波特率
2)回车换行符
3)lua编程区,可以载入文件,保存文件,编写程序。
4)程序运行窗口
。。。
对应的引脚,API说明文档都放到网盘里了。
1.4nodemcu-WiFi控制方式1:简单的httpserver
原帖地址 http://blog.csdn.net/dingzz/article/details/46876503
- wifi.setmode(wifi.STATION)
- wifi.sta.config("wifissid","password")
- print(wifi.sta.getip())
- srv=net.createServer(net.TCP)
- srv:listen(80,function(conn)
- conn:on("receive", function(client,request)
- local buf = "";
- local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
- if(method == nil)then
- _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
- end
- local _GET = {}
- if (vars ~= nil)then
- for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
- _GET[k] = v
- end
- end
- buf = buf.."<h1> ESP8266 Web Server</h1>";
- buf = buf.."<p>turn around <a href="?pin=left"><button>left</button></a> <a href="?pin=right"><button>right</button></a></p>";
- buf = buf.."<p>go go go! <a href="?pin=go"><button>go</button></a> <a href="?pin=back"><button>back</button></a></p>";
- local _on,_off = "",""
- if(_GET.pin == "left")then
- -- uart.write(0,"left\n")
- print("left\n")
- elseif(_GET.pin == "right")then
- --uart.write(0,"right\n")
- print("right\n")
- elseif(_GET.pin == "go")then
- -- uart.write(0,"go\n")
- print("go\n")
- elseif(_GET.pin == "back")then
- --uart.write(0,"back\n")
- print("back\n")
- end
- client:send(buf);
- client:close();
- collectgarbage();
- end)
- end)
复制代码
打开网页
串口收到的数据
使用nodemcu搭建简单的
1.5nodemcu-WiFi控制方式2:使用贝壳物联
原文地址http://www.bigiot.net/help/20.html
将init.lua中的wifi的ssid和密码换成你的,将kaiguan.lua中的设备id,key,接口id换成你的
简单测试结果
手机app端控制
控制led亮
串口收到的信息
2.供电,驱动
2.1驱动
驱动用的这个,芯片给磨了,不知是什么型号,他说是l298n。。。逻辑真值表:电机A:当IN1为高电平IN2为低电平的时候正转(看电机的连线,正反自己调)
2.2使用arduino uno简单测试驱动
- int in1 = 8;
- int in2 = 9;
- void runAz(); //电机A正转
- void runAf(); //电机A反转
- void runAs(); //电机A停止
- void setup() {
- pinMode(in1,OUTPUT);
- pinMode(in2,OUTPUT);
- }
- void loop() {
- runAz();
- delay(3000);
- runAs();
- delay(1000);
- runAf();
- delay(3000);
- runAs();
- }
- void runAz(){
- digitalWrite(in1,HIGH);
- digitalWrite(in2,LOW);
- }
- void runAf(){
- digitalWrite(in2,HIGH);
- digitalWrite(in1,LOW);
- }
- void runAs(){
- digitalWrite(in1,HIGH);
- digitalWrite(in2,HIGH);
- }
复制代码
3.使用mbed简单调试
3.1更新mbed的固件
ARMmbed的网址http://developer.mbed.org/platforms/FRDM-K64F/
更新mbed固件教程的网址http://developer.mbed.org/handbook/Firmware-FRDM-K64F
1)首先按住板子上的复位键,然后micro usb线连到opensda那个口就可以进到bootloader模式
2)下载固件http://developer.mbed.org/media ... 128_k64f_0x5000.bin
3)将下载好的固件拖拽到bootloader盘下。
3.2 k64f在mbed上的引脚名称
对应引脚名称http://developer.mbed.org/teams/Freescale/wiki/frdm-k64f-pinnames
k64f板的部分引脚是和Arduino兼容的,mbed在线开发环境的使用的语法和arduino差不多
LED (RGB) //灯在mbed里调用时的名称。LED_RED或LED1
LED_RED = PTB22
LED_GREEN = PTE26
LED_BLUE = PTB21
mbed original LED naming
LED1 = LED_RED
LED2 = LED_GREEN
LED3 = LED_BLUE
LED4 = LED_RED
Push buttons //按键
SW2 = PTC6
SW3 = PTA4
USB Pins //usb的串口
USBTX = PTB17
USBRX = PTB16
Arduino Headers //与arduino兼容的引脚名称
D0 = PTC16
D1 = PTC17
D2 = PTB9
D3 = PTA1
D4 = PTB23
D5 = PTA2
D6 = PTC2
D7 = PTC3
D8 = PTA0
D9 = PTC4
D10 = PTD0
D11 = PTD2
D12 = PTD3
D13 = PTD1
D14 = PTE25
D15 = PTE24
A0 = PTB2
A1 = PTB3
A2 = PTB10
A3 = PTB11
A4 = PTC10
A5 = PTC11
I2C pins
I2C_SCL = D15
I2C_SDA = D14
DAC0_OUT = 0xFEFE /* DAC does not have Pin Name in RM */
3.3试试超声波传感器hc-sr04
mbed还有很多传感器的例程http://developer.mbed.org/components/cat/sensors/
点传感器图片进去导入工程,试一下能不能用,不能用再改。
hc-sr04数据手册地址http://www.micropik.com/PDF/HCSR04.pdf
参数:
Working Voltage | DC 5 V | Working Current | 15mA | Working Frequency | 40Hz | Max Range | 最大 4m | Min Range | 最小 2cm | MeasuringAngle | 15 degree | Trigger Input Signal | 10uS TTL pulse 靠10us高电平触发 | Echo Output Signal | Input TTL lever signal and the range in proportion | Dimension | 45*20*15mm |
Test distance (距离)= (high level time(echo高电平时间)×velocity of sound (声速340M/S) / 2
时序图:
程序及库所在页面http://developer.mbed.org/components/HC-SR04/
点importprogram导入工程,然后点Compile编译,将编译好的bin文件复制到Mbed盘下
实测图片
3.4让小车前进后退k64控制小车前进后退,使用mbed编写的程序,和Arduino一样简单。
- #include "mbed.h"
- DigitalOut zq1(D13);
- DigitalOut zq2(D12);
- DigitalOut yq1(D11);
- DigitalOut yq2(D10);
- DigitalOut zh1(D7);
- DigitalOut zh2(D6);
- DigitalOut yh1(D5);
- DigitalOut yh2(D4);
- void zheng();
- void fan();
- void run();
- void stop();
- void back();
- void left();
- void right();
- int main() {
- while(1) {
- run();
- wait(2);
- stop();
- wait(2);
- back();
- wait(2);
- }
- }
- void run(){
- zheng();
- }
- void stop(){
- zq1 = 1;
- zq2 = 1;
- yq1 = 1;
- yq2 = 1;
- zh1 = 1;
- zh2 = 1;
- yh1 = 1;
- yh2 = 1;
- }
- void zheng(){
- zq1 = 1;
- zq2 = 0;
- yq1 = 0;
- yq2 = 1;
- zh1 = 1;
- zh2 = 0;
- yh1 = 0;
- yh2 = 1;
- }
- void fan(){
- zq1 = 0;
- zq2 = 1;
- yq1 = 1;
- yq2 = 0;
- zh1 = 0;
- zh2 = 1;
- yh1 = 1;
- yh2 = 0;
- }
- void back(){
- fan();
- }
- void right(){
- }
- void left(){
-
- }
复制代码
拍的小视频
|