爱板网论坛

查看: 271|回复: 0

[资料] TPYBoard开发板搭建与阿里云服务发送数据

[复制链接]

27

主题

5

好友

338

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    慵懒
    2018-1-6 09:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-2-2 16:14:14 |显示全部楼层
       今天给大家带来的是TPYBoard V202开发板的一次测试项目使用心得。而测试项目就是给服务端发送硬件底层数据,而数据有产品名称,WF模块MAC地址,温湿度数据。

         什么是MicroPython
        MicroPython是在单片机上可以跑的Python,也就是说,你可以通过Python脚
    本语言开发单片机程序。
        MicroPython遵守MIT协议开源,被授权人拥有复制、修改、发行和再授权的权
    利。由剑桥大学的理论物理学家乔治?达明设计。和Arduino类似,但MicroPython
    更强大。
        MicroPython基于ANSIC,语法跟Python3基本一致,拥有自家的解析器、编译器
    、 虚拟机和类库等。目前它支持基于32-bit的ARM处理器,比如STM32F405。也就
    是说ARM处理器STM32F405上直接可运行Python语言,用Python语言来控制单片机。


    什么是TPYBoard
        TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一
    款MicroPython开发板,它基于STM32F405单片机,通过USB接口进行数据传输。该
    开发板内置4个LED灯、一个加速传感器,可在3V-10V之间的电压正常工作。
        TPYBoard开发板让用户可以通过Python代码轻松控制微控制器的各种外设,比如
    LED等,读取管脚电压,播放歌曲,和其他设备联网等等。
        TPYBoard开发板支持Python3.0及以上版本的直接运行,支持重力加速度传感器,
    支持上百周边外设配件,支持SWD烧写固件。零基础也能灵活掌握单片机技术!

    在使用过程中遇到了很多问题,其中就包括Python3版本,与python2版本
    的问题,开发板固件刷写问题,还有MAC解析算法问题。解决这些问题,小编都快把
    群主,和小编的朋友问烦了,小编也在此谢谢,官方群主,和那位好心的朋友。
         那小编就不浪费时间直接进入正题:
         这是本人朋友的TPYBV202。
    代码如下:

    #
    1. -*- coding: gbk -*-
    2. import dht

    3. import machine

    4. import network

    5. from machine import Pin

    6. import socket

    7. import urllib

    8. import time  # 声明用到的类库,尤其是dht的类库

    9. import json

    10. import sys

    11. import utime




    12. # 声明用到类库中的函数,并设端口                                                    #置参数
    13. d = dht.DHT22(machine.Pin(4))

    14. led = Pin(2, Pin.OUT)

    15. count = 0


    16. def do_connect():
    17.     """定义开发板连接无线网络的函数"""
    18.     wlan = network.WLAN(
    19.         network.STA_IF)  # 设置开发板的网                                                                          #络模式

    20.     wlan.active(True)  # 打开网络连接

    21.     if not wlan.isconnected():  # 判断是否有网络连接

    22.         print('connecting to network...')

    23.         # 设置想要连接的无线网络
    24.         # #线名称和密码
    25.         wlan.connect('00', 'zzp6330058')

    26.         while not wlan.isconnected():  # 等待连接上无线网络

    27.             pass
    28.     MAC = wlan.config('mac')      # 获得MAC地址
    29.     #t = ntptime.time()
    30.     #t = t + 28800  # 相差八小时
    31.     #tm = tm[0:3] + (0,) + tm[3:6] + (0,)
    32.     #machine.RTC().datetime(tm)
    33.     print('network config:', wlan.ifconfig())
    34.     return MAC


    35. def connection(NA_ME, MA_C, TIM_E, TEM_P, CUT_cf, HU_M):
    36.     """要发送的数据"""
    37.     data = {
    38.         'name': NA_ME,
    39.         'id': MA_C,
    40.         'time': TIM_E,
    41.         'temp': TEM_P,
    42.         'symbol': CUT_cf,
    43.         'hum': (HU_M + '%')
    44.     }
    45.     return data


    46. def DHT_collect():
    47.     """温湿度采集模块"""
    48.     d.measure()  # 调用DHT类库中测量数据的函数
    49.     # 读取measure()函数中的温度数据
    50.     temp = str(d.temperature())
    51.     hum = str(d.humidity())  # 读取measure()函数中的湿度数据
    52.     print('TEMP:' + temp + ' ' + 'HUM:' + hum)
    53.     return temp, hum


    54. def To_obtain_name_time():
    55.     """获取本机名称,本地时间"""
    56.     time_Str = ''.join([str(i) for i in utime.localtime()])
    57.     return time_Str


    58. def Data_sent(host, port, data):
    59.     """连接服务器发送数据"""
    60.     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建套接字
    61.     s.connect((host, port))  # 主动初始化TCP服务器连接。。。

    62.     json_str = json.dumps(data)  # 将发送的数据转换成json数据
    63.     # 发送TCP数据,将string中的数据发送到连接的套接字。
    64.     s.send(bytes('%s\r\n' % (json_str), 'utf8'))

    65.     s.close()  # 关闭套接字

    66. def MAC_format_conversion(MA):
    67.          """MAC格式换算"""
    68.          MA = [hex(x) for x in bytes(MA)] #将数据转换成16进制保存到列表中
    69.          Y=0#循环初值
    70.          MB =''#字符串

    71.          while Y<6:
    72.                    if len(MA[Y])==4: #判断是否有零
    73.                             pass
    74.                    else:
    75.                             MA[Y] = MA[Y]+'0'
    76.                    if Y<5: #对列表重构5c:cf:7f:d0:85:65
    77.                             MB = MB + MA[Y][2]+MA[Y][3]+':'
    78.                    else:
    79.                             MB = MB + MA[Y][2]+MA[Y][3]
    80.                    Y+=1

    81.          return MB


    82. MAC = do_connect()  # 连接WF
    83. MAC = MAC_format_conversion(MAC)
    84. print(MAC)

    85. while True:
    86.     """主循环"""
    87.     TIME = 0  #本地时间
    88.     # MAC = get_mac_address()#获取MAC
    89.     TEM, HUM = DHT_collect()  # 获取温湿度
    90.     data = connection("TPYBoard v202", MAC,
    91.                       TIME, TEM, 0, HUM)  # 建立数据字典

    92.     Data_sent("119.23.223.146", 2689, data)

    93.     count += 1
    94.     print('Count:', count)  # 显示发送的次数

    95.     time.sleep(15)
    复制代码
    附上显示的效果:这是开发板返回的数据。

    这是服务器接收到的json数据。


    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /5 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2018-2-26 07:32 , Processed in 0.230144 second(s), 9 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部