
这是一个 USB 转串口的驱动。

这个安装包,在电脑桌面有如下。

上面的驱动安装好之后。
右击更新一下驱动。 更新有一个搜索驱动。

成功显示如下


点击config 选择一个固件。 我用的是第一个。


点击 Operation---点击flash


esp 8266 主板上面蓝色的灯一直在闪。
结束如下:

http://www.micropython.org/download/esp8266/

使用上面的工具上传固件也行。flasher
(这个没有试过,不知道行不行。)
这里采用 esptool 的脚本来进行烧录,esptool 通过 pip 来下载
python -m pip install esptool pip install -i https://pypi.tuna.tsinghua.edu.cn/simple esptool (使用这个命令安装。)
这里安装 esptoll有个问题,pip报错。然后换个项目 执行没有问题了。
通过“设备管理器”确认NodeMCU开发板的连接端口号,然后清除开发板固件信息
python -m esptool --port COM5 erase_flash
清除执行结果 如下?

最后,刷入 MicroPython 固件
python -m esptool --port COM5 --baud 115200 write_flash --flash_size=detect 0 D:\InstallPackage\esp8266-20210418-v1.15.bin
执行结果如下:

上面这个COM5是这个意思 有些人可能是COM3

下载连接:https://www.wbudowane.pl/download/


注意一点,上传的文件必须是main.py
代码如下:就是连接我的wifi。
import network
import urequests
import time
import machine
import dht
import json
dh = dht.DHT11(machine.Pin(4))
# 树莓派上的服务端口
api_url = "http://korilweb.cn:8090/data"
# 因为有时候带到不同的地方,学校,家里,还有公司
# 所以用一个 dict 存放所有的 WiFi 信息
wifi_dict = {
"home": ["chenhao_jia", "chenhao123"],
"phone": ["djhxiaomi", "0987654321"]
}
# 对某个WiFi进行连接
def do_connect(SSID, PASSWORD):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("connecting to " + SSID)
wlan.connect(SSID, PASSWORD)
start = time.time()
while not wlan.isconnected():
time.sleep(1)
# 超过5秒,认为连接超时
if time.time() - start > 5:
print("connect timeout!")
break
# 连接成功,返回 True,打印 wlan 信息
if wlan.isconnected():
print('network config:', wlan.ifconfig())
return True
# 连接失败,返回 False
return False
# 对 WiFi 字典进行遍历,某一个连接成功,就发送数据
def connect_wifi(wifi_dict):
for wifi_info in wifi_dict:
is_connected = do_connect(wifi_dict[wifi_info][0], wifi_dict[wifi_info][1])
if is_connected:
time.sleep(1)
while True:
time.sleep(1)
print("no wifi")
connect_wifi(wifi_dict)效果如下:输入wifi信息和ip

这个不显示中文。

import network
import urequests
import time
import machine
import dht
import json
# 因为有时候带到不同的地方,学校,家里,还有公司
# 所以用一个 dict 存放所有的 WiFi 信息
wifi_dict = {
"home": ["chenhao_jia", "chenhao123"],
"phone": ["djhxiaomi", "0987654321"]
}
#服务
web_site="http://z77wig.natappfree.cc";
test_api_url = "/esp8266/get"
# 对某个WiFi进行连接
def do_connect(SSID, PASSWORD):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print("对wifi进行连接")
if not wlan.isconnected():
print("connecting to " + SSID)
wlan.connect(SSID, PASSWORD)
start = time.time()
while not wlan.isconnected():
time.sleep(1)
# 超过5秒,认为连接超时
if time.time() - start > 5:
print("connect timeout!")
break
# 连接成功,返回 True,打印 wlan 信息
if wlan.isconnected():
print('network config:', wlan.ifconfig())
return True
# 连接失败,返回 False
return False
# 对 WiFi 字典进行遍历,某一个连接成功,就发送数据
def connect_wifi(wifi_dict):
for wifi_info in wifi_dict:
is_connected = do_connect(wifi_dict[wifi_info][0], wifi_dict[wifi_info][1])
if is_connected:
print("wifi-conn-success")
break
# 发送传感器数据
def send_data():
sensor_data = {
"temperature" : 2222,
"humidity" : 3333
}
headers = {
"Content-Type" : "application/json"
}
response = urequests.post(
web_site+test_api_url,
data = json.dumps(sensor_data),
headers = headers
)
print(response.text)
def fun():
connect_wifi(wifi_dict)
send_data()
fun()
使用java代码这样接受。
/**
*
* @return
*/
@RequestMapping("/esp8266/get")
@ResponseBody
public JSONObject test_get(HttpServletRequest request) throws Exception {
StringBuffer sb = new StringBuffer();
InputStream is = request.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String s = "";
while ((s = br.readLine()) != null) {
sb.append(s);
}
String result1 = sb.toString();
System.out.println(result1);
System.out.println("esp8266 get " );
JSONObject reJsonObject = new JSONObject();
reJsonObject.put("success", true);
reJsonObject.put("data", "成功--get-success");
return reJsonObject;
}
}
=================
@RestController
public class HelloController {
@PostMapping(value = "/data")
public String data(@RequestBody Sensor sensor) {
System.out.println("temp: " + sensor.getTemperature());
System.out.println("humidity: " + sensor.getHumidity());
return "get data";
}
}
public class Sensor {
// 温度
private Integer temperature;
// 湿度
private Integer humidity;
public Integer getTemperature() {
return temperature;
}
micorpython 控制台有报错:

接受中文数据 有下面异常,数据好像少一节一样:


使用总结:
1:使用ESP8266Flasher.exe 刷入miscroPython 固件不行。能刷成功,但是不能上传代码。
2:esp8266 使用get代码有报错,上面有截图。不知道原因。
3:使用 response = urequests.post发送中文好像有异常。
VCC --- 电源正极 3v
DATA --- 数据输出 接d1 d2 都可以。
GND---- 电源负极 主板的G=GND
DHT11 DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5-95%RH, 温度0~+50℃。
三个引脚,VCC 接 NodeMCU的3v,
GND 接地,
信号线接某个引脚,这里我接的是 D2,对应 GPIO4。
NodeMCU开发板Pin ESP8266 内部 GPIO Pin 编号
D0 GPIO16
D1 GPIO5
D2 GPIO4
D3 GPIO0
D4 GPIO2
D5 GPIO14
D6 GPIO12
D7 GPIO13
D8 GPIO15
D9/RX GPIO3
D10/TX GPIO1
D11/SD2 GPIO9
D12/SD3 GPIO10
代码如下:
import network
import urequests
import time
import machine
import dht
import json
# 因为有时候带到不同的地方,学校,家里,还有公司
# 所以用一个 dict 存放所有的 WiFi 信息
wifi_dict = {
"home": ["chenhao_jia", "chenhao123"],
"phone": ["djhxiaomi", "0987654321"]
}
#服务
web_site="http://3qqj4y.natappfree.cc";
test_api_url = "/esp8266/get"
#
#NodeMCU开发板Pin ESP8266 内部 GPIO Pin 编号
#D0 GPIO16
#D1 GPIO5
#D2 GPIO4
#D3 GPIO0
#D4 GPIO2
#D5 GPIO14
#D6 GPIO12
#D7 GPIO13
#D8 GPIO15
#D9/RX GPIO3
#D10/TX GPIO1
#D11/SD2 GPIO9
#D12/SD3 GPIO10
#
dh = dht.DHT11(machine.Pin(5))
# 对某个WiFi进行连接
def do_connect(SSID, PASSWORD):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print("对wifi进行连接")
if not wlan.isconnected():
print("connecting to " + SSID)
wlan.connect(SSID, PASSWORD)
start = time.time()
while not wlan.isconnected():
time.sleep(1)
# 超过5秒,认为连接超时
if time.time() - start > 5:
print("connect timeout!")
break
# 连接成功,返回 True,打印 wlan 信息
if wlan.isconnected():
print('network config:', wlan.ifconfig())
return True
# 连接失败,返回 False
return False
# 对 WiFi 字典进行遍历,某一个连接成功,就发送数据
def connect_wifi(wifi_dict):
for wifi_info in wifi_dict:
is_connected = do_connect(wifi_dict[wifi_info][0], wifi_dict[wifi_info][1])
if is_connected:
print("wifi-conn-success")
break
# 发送传感器数据
def send_data():
tempAndHumidity = getTempAndHumidity()
sensor_data = {
"temperature" : tempAndHumidity[0],
"humidity" : tempAndHumidity[1]
}
headers = {
"Content-Type" : "application/json"
}
response = urequests.post(
web_site+test_api_url,
data = json.dumps(sensor_data),
headers = headers,
json=None
)
print(response.text)
# 获取 DHT11 的数据,温度和湿度,以元组的形式返回
def getTempAndHumidity():
dh.measure()
return (dh.temperature(), dh.humidity())
def fun():
connect_wifi(wifi_dict)
send_data()
fun()import network
import urequests
import time
import machine
import dht
import json
# 因为有时候带到不同的地方,学校,家里,还有公司
# 所以用一个 dict 存放所有的 WiFi 信息
wifi_dict = {
"home": ["chenhao_jia", "chenhao123"],
"phone": ["djhxiaomi", "0987654321"]
}
#服务
web_site="http://uuj6g3.natappfree.cc";
test_api_url = "/esp8266/get"
'''
NodeMCU开发板Pin ESP8266 内部 GPIO Pin 编号
D0 GPIO16
D1 GPIO5
D2 GPIO4
D3 GPIO0
D4 GPIO2
D5 GPIO14
D6 GPIO12
D7 GPIO13
D8 GPIO15
D9/RX GPIO3
D10/TX GPIO1
D11/SD2 GPIO9
D12/SD3 GPIO10
'''
dh = dht.DHT11(machine.Pin(5))
# 对某个WiFi进行连接
def do_connect(SSID, PASSWORD):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print("对wifi进行连接")
if not wlan.isconnected():
print("connecting to " + SSID)
wlan.connect(SSID, PASSWORD)
start = time.time()
while not wlan.isconnected():
time.sleep(1)
# 超过5秒,认为连接超时
if time.time() - start > 5:
print("connect timeout!")
break
# 连接成功,返回 True,打印 wlan 信息
if wlan.isconnected():
print('network config:', wlan.ifconfig())
return True
# 连接失败,返回 False
return False
# 对 WiFi 字典进行遍历,某一个连接成功,就发送数据
def connect_wifi(wifi_dict):
for wifi_info in wifi_dict:
is_connected = do_connect(wifi_dict[wifi_info][0], wifi_dict[wifi_info][1])
if is_connected:
print("wifi-conn-success")
break
# 发送传感器数据
def send_data():
while True:
try:
tempAndHumidity = getTempAndHumidity()
sensor_data = {
"temperature" : tempAndHumidity[0],
"humidity" : tempAndHumidity[1]
}
headers = {
"Content-Type" : "application/json"
}
print(json.dumps(sensor_data))
response = urequests.post(
web_site+test_api_url,
data = json.dumps(sensor_data),
headers = headers,
json=None
)
print(response.text)
time.sleep(1)
except Exception as result:
print('exception---')
print(result)
# 获取 DHT11 的数据,温度和湿度,以元组的形式返回
def getTempAndHumidity():
dh.measure()
return (dh.temperature(), dh.humidity())
def main():
connect_wifi(wifi_dict)
send_data()
'''
我们用例子说明:
1 #module.py
2 def main():
3 print "we are in %s"%__name__
4 if __name__ == '__main__':
5 main()
这个模块定义了一个main()函数,运行的结果是打印出”we are in main“,
说明我们代码模块中的main()函数被调用执行了,
有个if这段代码,该模块可以自己执行了,并且__name__=='main'
'''
if __name__ == '__main__':
main()改进后的代码有一个报错,发送http请求有报错,但是不知道问题。


每次都是9个。这9个 不会请求到后台。
暂时不知道解决方法,
如果不请求后台,一直输出温度湿度 这个很正常。所以说这个代码异常,就跟 请求http有关系。

一个针脚连接D4 一个针脚连接G 接地。
代码如下“
from machine import Pin def led(): while True: #0就是D3 2是D4 led = Pin(2, Pin.OUT) led.on() time.sleep(1) led.off() time.sleep(1) led灯会一闪一闪的。
# 头大的连接d4 头小的连接3v led不能接错, led也分正负的。
站长微信:xiaomao0055
站长QQ:14496453