8929浏览
查看: 8929|回复: 1

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

[复制链接]
本帖最后由 沧海笑 于 2017-6-18 23:26 编辑

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

好吧,现在我们就开始学习之旅。
oled2.jpg
【硬件准备】
  
品名
  
数量
备注
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
tcp配置.png
另外,我为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秒)
tlink2.png
lm35.png


【小结】

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




极客俊逸  见习技师

发表于 2018-10-28 15:11:19

好贴,我收藏了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail