一步一步使用uPyCraft学习MicroPython之TCP上送温度至物联网

2017-06-181.6万
精华项目
AI 快速预览详细 收起
本文介绍了如何使用uPyCraft IDE和ESP32,通过TCP协议将LM35温度传感器的数据上传到物联网平台tlink.io。首先准备了所需的硬件,包括FireBeetle Board-ESP32、LM35温度传感器和SSD1306 OLED屏。接着进行了硬件接线,并在tlink.io平台上配置了设备。最后,编写了详细的代码示例,实现了温度数据的采集和上传。整个过程适合零基础新手,提供了详细的步骤和代码示例。


【一步一步使用uPyCraft学习MicroPythonTCP上送温度物联网】
【本期主要内容】
上一期我们一起初步了解了uPyCraft这个很棒的IDE,学习用uPyCraft及其官方例题,修改了一个实用的小程序,用MicroPython UPD控制LED灯。
本期我们继续深入学习MicroPython。将esp32设置为TCP client,采集LM35,将温度上送至物联网(我们继续使用tlink.io

好吧,现在我们就开始学习之旅。
一步一步使用uPyCraft学习MicroPython之TCP上送温度至物联网图2
【硬件准备】
  
品名
  
数量
备注
FireBeetle Board-ESP32
1

FireBeetle  Covers-Gravity Adapter Board
1

Ssd1306 oled
1
I2C接口
LM35
1
温度传感器
杜邦线
7



【软件准备】
  
品名
  
版本
备注
uPyCraft
V0.19
DF出品MicroPython IDE
SSD1306 for MP
2016-10-04
https://github.com/timotet/SSD1306
  Modified SSD1306 driver from micropython Added hardware  horizontal scroll and a clear function
Tcp.tlink.io

需要了解TCP物联网规约。
  
协议标签:      [H:#RTU]  [S:,]  [D?]  [T:#]
TCP client 示例代码

dfrobot

【一步一步学习】
第一步:硬件接线
接线表
  
  

Esp32
oled
Vcc
3v3

Gnd
Gnd

Scl
Pin22

Sda
Pin21
LM35
Pindata
Pin36A0

Gnd
gnd

第二步:配置物联网侧。
tlink.io申请一个注册账号,然后设置设备----提取序列号。详情请看该网站的开发者中心http://tlink.io/help.htm
一步一步使用uPyCraft学习MicroPython之TCP上送温度至物联网图3
另外,我为dfrobot评测的几篇小文,也被有幸收录到开源案例中,也可作为参考:
http://tlink.io/case/dfrobot_three.htm

第三步:FireBeetle Board-ESP32侧代码准备
[mw_shl_code=python,true]import network
import socket
import time
from machine import Pin,I2C,ADC
import ssd1306

i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)  
lcd=ssd1306.SSD1306_I2C(128,64,i2c)

adc0=ADC(Pin(36)) #LM35 PIN--A0

SSID="your ssid"
PASSWORD="your psw"
host="tcp.tlink.io"
port=8647
wlan=None
s=None

def connectWifi(ssid,passwd):
  global wlan
  wlan=network.WLAN(network.STA_IF)
  wlan.active(True)
  wlan.disconnect()
  wlan.connect(ssid,passwd)
  while(wlan.ifconfig()[0]=='0.0.0.0'):
    time.sleep(1)
  return True

try:
#while True:
  connectWifi(SSID,PASSWORD)
  ip=wlan.ifconfig()[0]
  s = socket.socket()
  s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  s.connect((host,port))
  #s.send("hello DFRobot,I am TCP Client")
  s.send("your serial number") #第一次连接后,需要发送序列号,仅一次即可
  time.sleep(2)  #延时2S
  lcd.clear()
  lcd.text("TCP connect..",0,16)
  i=10 #发送十次
  while(i>0):
    print(i)
    i-=1
    temperature = adc0.read()*0.001409587904157*10*2   #该系数的计算另帖讨论
    up_temp=str("%.2f" % temperature)
    up_temp="#RTU,"+up_temp+"#" #组合出上送的数据标签
    s.send(up_temp)
    print(up_temp)
    lcd.clear()
    lcd.text(up_temp,24,32) #显示上送的数据标签
    lcd.text("Countdown:"+str(i),0,48) #显示倒计次数
    lcd.show()
    time.sleep(10) #延时10S

  while True:
      data = s.recv(1024)
      if(len(data) == 0):
        print("close socket")
        s.close()
        break
      print(data)
      ret = s.send(data)

except:
  if (s):
    s.close()
  wlan.disconnect()
  wlan.active(False)[/mw_shl_code]
第四步:上送10次温度数据(间隔10秒)
一步一步使用uPyCraft学习MicroPython之TCP上送温度至物联网图4
一步一步使用uPyCraft学习MicroPython之TCP上送温度至物联网图1


【小结】

今天我们一起学习了利用TCP client上送温度数据至物联网。而且上送了一组(10次)数据,今后我们还要学习低功耗,我希望FireBeetle Board-ESP32以及oled正常在休眠状态,在收到外部中断激活后,上送10组数据,然后继续休眠。这是下一个玩具啦,也希望玩家跟帖给我提出更好的建议,你对外部中断激活以及低功耗运行有什么好建议,也希望一起探讨交流。谢谢。沧海抱拳。




创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
极客俊逸
极客俊逸
好贴,我收藏了
- 没有更多了 -