文档章节

esp8266物联网开发一:MicroPython初战江湖

o
 osc_s2b5kacl
发布于 07/06 17:14
字数 1125
阅读 53
收藏 0
def

「深度学习福利」大神带你进阶工程师,立即查看>>>

用esp8266做的物联网开发,涉及到固件烧写,固件擦除,代码编写等方面,做一一记录。

1. 固件烧写

首先,下载固件烧写工具:https://www.espressif.com/sites/default/files/tools/flash_download_tools_v3.6.3.rar,具体烧写包我会在后面附加。

然后,下载micropython固件包:http://www.micropython.org/download/esp8266/,一般选择512k的包即可。

打开固件烧写工具,点击“esp8266 download tools”,在打开的界面中设置好参数:

1586687142(1)

在烧写之前,先点击ERASE按钮进行擦除操作,保证烧写的固件不受干扰。

1586687451(1)

然后点击START进行烧写操作。

1586687550(1)

进度表跑完,提示FINISH的时候,代表烧写完毕并成功。

 

2. 开发环境

开发环境使用ESPlorer,网上有很多,可以百度下,具体界面如下:

1586687667(1)

左半区为代码编码区,右半区为和硬件通讯调试区。

 

3. esp8266联网

在进行开发之前,一般需要进行芯片联网设置的,具体操作如下:

首先,准备联网代码和热点,其实用手机热点就行:

def do_connect():
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('cxsr', '12345')
        while not wlan.isconnected():
            pass
    import webrepl
    webrepl.start()
    print('network config:', wlan.ifconfig())

 

可以看出,我手机热点为cxsr,密码为12345

然后,在ESPlorer中,新建一个py文件,保存为networking.py,将上述代码拷贝进去,同时,通过com口进行连接,如果连接开发板成功,会提示Type help() for more information:

1586687942(1)

连接成功后,我们首先点击左下角的Send to esp按钮,将脚本发往缓冲区,然后在右下角命令行输入 do_connect()命令,然后点击send按钮,进行执行。之后可以看到输出如下:

1586688135(1)

注意文中有webrepl is not configured, run import webrepl_setup. 这里说明一下,webrepl可以方便我们将脚本上传到开发板中,所以这个命令要开启,我们就按照其提示就行,在命令行中输入import webrepl_setup,然后点击执行,输出如下:

1586688272(1)

这里我们按照他的要求,在命令行输入E,然后点击send按钮:

1586688319(1)

之后让我们输入密码,这里我们在命令行中输入12345,并确认:

1586688399(1)

最后问我们是否reboot,输入y并发送即可。然后开发板会执行reboot操作。

这时候我们将networking.py的代码点击左下角的send to esp,然后在右下角执行 do_connect()并send,可以看到webrepl成功打开:

1586688534(1)

https://github.com/micropython/webrepl下载webrepl的压缩包,解压,运行其中的webrepl.html,可以打开界面,然后输入ws://192.168.43.2:8266,确认密码12345后即可成功连接。

1586688629(1)

最后点击想要上传的文件,然后上传即可:

1586688704(1)

最后从ESPlorer中,我们就可以看到上传的文件了:

1586688725(1)

最后我们可以用ssd1306驱动来一个程序点亮oled试试:

from machine import Pin, I2C
i2c = I2C(scl=Pin(5), sda=Pin(4))

from ssd1306 import SSD1306_I2C
oled = SSD1306_I2C(128, 64, i2c)

oled.fill(1)
oled.show()
oled.fill(0)
oled.show()

oled.pixel(0, 0, 1)
oled.show()
oled.pixel(127, 63, 1)
oled.show()

oled.text('Hello', 0, 0)
oled.text('World', 0, 10)
oled.show()

oled.invert(True)
oled.invert(False)

 

1586688999(1)

4. 相关下载

https://files.cnblogs.com/files/scy251147/flash_download_tools_v3.6.3.rar

 

5. 点亮led的代码:

from machine import Pin
import time

p=Pin(2,Pin.OUT)
while True:
  p.value(0)
  time.sleep(2)
  p.value(1)
  time.sleep(1)

 

6. 继电器使用代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from machine import Pin
import time

p=Pin(16,Pin.OUT)

def blink(ms):
    while True:
        p.value(0)
        time.sleep_ms(ms)
        p.value(1)
        time.sleep_ms(ms)


blink(1000)


7. 步进电机使用代码:

import time
from machine import Pin


#步进电机引脚依次连接板子上  d0 d3 d4 rx
#对应的编程脚为            16 0  2  3
 
speed = 2
STEPER_ROUND=512 #转动一圈(360度)的周期
ANGLE_PER_ROUND=STEPER_ROUND/360 #转动1度的周期
#print('ANGLE_PER_ROUND:',ANGLE_PER_ROUND)
p1 = Pin(16, Pin.OUT, value=0)
p2 = Pin(0 , Pin.OUT, value=0)
p3 = Pin(2 , Pin.OUT, value=0)
p4 = Pin(3 , Pin.OUT, value=0)

def Front():
    global speed
       
    p1.value(1)
    p2.value(1)
    p3.value(0)
    p4.value(0)
    time.sleep_ms(speed)

    p1.value(0)
    p2.value(1)
    p3.value(1)
    p4.value(0)
    time.sleep_ms(speed)

    p1.value(0)
    p2.value(0)
    p3.value(1)
    p4.value(1)
    time.sleep_ms(speed)

    p1.value(1)
    p2.value(0)
    p3.value(0)
    p4.value(1)
    time.sleep_ms(speed)
     
def Back():
    global speed
     
    p1.value(1)
    p2.value(1)
    p3.value(0)
    p4.value(0)
    time.sleep_ms(speed)
     
    p1.value(1)
    p2.value(0)
    p3.value(0)
    p4.value(1)   
    time.sleep_ms(speed)
     
    p1.value(0)
    p2.value(0)
    p3.value(1)
    p4.value(1)
    time.sleep_ms(speed)
 
    p1.value(0)
    p2.value(1)
    p3.value(1)
    p4.value(0)
    time.sleep_ms(speed)
 
 
def Stop():
    p1.value(0)
    p2.value(0)
    p3.value(0)
    p4.value(0)
     
def Run(angle):
    global ANGLE_PER_ROUND
     
    val=ANGLE_PER_ROUND*abs(angle)
    if(angle>0):
        for i in range(0,val):
            Front()
    else:
        for i in range(0,val):
            Back()
    angle = 0
    Stop()
 
def main():
    Run(360)
    Run(-360)

main();

 

o
粉丝 0
博文 95
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6.2K
18
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
程序猿媛一:Android滑动翻页+区域点击事件

滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。文尾附注源码获取途径。 转载请保留原文出处“http://my.oschina.net/gluoyer...

花佟林雨月
2013/11/09
4.3K
1
Web开发组件管理器--Bower

Bower 是一个针对Web开发的包管理器。该工具主要用来帮助用户轻松安装CSS、JavaScript、图像等相关包,并管理这些包之间的依赖。 功能有些类似于Component。不同之处是,Component是围绕Git...

匿名
2013/02/01
1.2W
2
跨平台手机应用开发--Gideros

Gideros 可以让你轻松快速创建 iOS 和 Android 应用,提供用户友好的集成开发环境,内建模拟器对应用进行不同屏幕大小、分辨率下的测试,最大的优点是可即时修改代码即时进行测试,无需编译安...

匿名
2013/02/19
2.8K
1

没有更多内容

加载失败,请刷新页面

加载更多

自制超声波驱狗器(第三版)

文档标识符:Ultrasonic_Dog_Repellent_II_T-D-P7 作者:DLHC 最后修改日期:2020.8.13 本文链接: https://www.cnblogs.com/DLHC-TECH/p/Ultrasonic_Dog_Repellent_II_T-D-P7.html “威力”......

osc_t4kk3au7
12分钟前
0
0
测试框架mocha入门

单元测试 今天带你了解下测试框架mocha,这是一个js的测试框架,而且适用于node和浏览器环境。通过它,我们可以为我们模块、组件级别以上的代码编写单元测试用例,保证代码输出质量。 一、安...

字节逆旅
昨天
0
0
ElasticSearch 7.8.1集群搭建

通往集群的大门 集群由什么用? 高可用   高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果系统每运行100个时间...

osc_hwc3munb
14分钟前
0
0
如何面对人生危机?

点击蓝字关注,回复“职场进阶”获取职场进阶精品资料一份 一名读者提问:洋哥,我7年前从大厂出来,创业多年。连续失败,没买车也没房,女朋友也和我分手了,父母也对我失望至极。最近我开始...

张善友
今天
0
0
手写AOP实现过程

一.手写Aop前基础知识 1.aop是什么? 面向切面编程(AOP):是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP)。 在进行OOP开发时,都是基于对组件(比如类)进行开发...

osc_qyg23ccq
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部