这是一个 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