micropython支持中文啦!

2017-08-086.3万
AI 快速预览详细 收起
本文介绍了一个基于Micropython的天气预报项目,使用FireBeetle-ESP32或FireBeetle-ESP8266主板。通过注册Seniverse网站获取API-KEY,使用uPyCraft 0.24版进行开发。项目展示了如何通过HTTP GET请求获取天气数据,并在OLED屏幕上显示中文天气信息。适合零基础新手入门,提供了详细的步骤和代码示例。
中文支持包含一下几个方面
1. string类型的变量直接可用中文
  比如
   a="中文"
   print(a)
2. 文件可以使用中文注释
  比如
    #这个程序完成了XXXX功能
3. 网络资源获取到中文字符串的时候,可以直接打印
  比如
    本例程会提供一个天气预报的例子,请看完全部教程
4. 可以通过Framebuf将汉字打印到液晶上
  比如
    oled.text("愿Micropython越来越强大",0,0)



参考了 @秦皇岛岛主  的例子,学习了一下http的get和post,用get请求完成了一个获取天气的应用,供大家参考学习一.  注册网站
https://www.seniverse.com
使用它的免费服务,一天可以请求400次,基本天气信息都有了


二. 注册完成后会有API-KEY,请保存下来
micropython支持中文啦!图1

三. 准备材料
   1. firebeetle-esp32或firebeetle-esp8266主板
   2. uPyCraft 0.24版
四 开始实验
1.  将uPy_Lib目录下的urequests.py拖动到板子的lib目录下(注意这个文件岛主做了更改,官方原版不支持params)
2.  将uPy_Lib目录下的ssd1306.py拖动到板子的lib目录下
3. 使用下面这个代码,保存成py文件,下载到板子上并运行
[mw_shl_code=python,true]import urequests as requests
from machine import Pin,I2C,SPI
import time
import network
import ujson
import ssd1306
import HZK

i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)
spi = SPI(baudrate=100000, polarity=1, phase=0, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
cs = Pin(25,Pin.OUT)
HZK.init(spi,cs)
lcd=ssd1306.SSD1306_I2C(128,64,i2c)

API_KEY = 'mggxhv8zbogqbmqj'
UID = "UF239A86CE"

LOCATION = 'chengdu'
URL = 'https://api.seniverse.com/v3/weather/now.json'
UNIT = 'c'
LANGUAGE = 'zh-Hans'

SSID="YOURSSID"
PASSWORD="YOURPASSWORD"
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

def fetchWeather(location):
    result = requests.get(URL, params={
        'key': API_KEY,
        'location': location,
        'language': LANGUAGE,
        'unit': UNIT
    })
    return result.text

if __name__ == '__main__':
    connectWifi(SSID,PASSWORD)
    result = fetchWeather(LOCATION)
    print(result)
    j=ujson.loads(result)
    print("\r\n\r\n")
    print(j['results'][0]['location']['name'])
    print(j['results'][0]['now']['text'])
    print(j['results'][0]['now']['temperature'])
    addr=j['results'][0]['location']['name']
    weather=j['results'][0]['now']['text']
    temperature=j['results'][0]['now']['temperature']
    lcd.text("地点:%s"%addr,5,0)
    lcd.text("天气:%s"%weather,5,16)
    lcd.text("温度:%s"%temperature,5,32)
    lcd.show()
[/mw_shl_code]



五.  实验效果
micropython支持中文啦!图2



micropython支持中文啦!图3



这样就能看到大成都的天气啦!


特此公告:
凡是在此帖后面跟帖的小伙伴,都有机会免费领取FireBeetle系列新产品一套(这些都是还没有上架的新产品哦),活动规则如下:
1、赠送产品包括:
   FireBeetle Covers-OLED12864 Display
     FireBeetle Covers-Camera&Audio Media Board
     FireBeetle Board-ESP8266
     FireBeetle Board-328P with BLE4.1
     FireBeetle Covers-DC Motor&Stepper Drivers
2、活动时间:     从发帖日时间起,截止8月25日止,8月25日下午5点公布领取名单
3、在哪里可以看到公布名单?
     请您加入microPython交流群:619558168,我们将在群里进行公布名单,如果没有联系到您,将自动视为放弃领取。
4、哪些小伙伴可以免费领取了?
     此次采用随机方式,如有100人回帖,那么就从0到100随机抽取5名,随机抽取方式由uPyCraft软件生成,如下图所示:
micropython支持中文啦!图4

     注:为了体现公正性,随机抽取时将以视频的方式录制,大家可以在后面进行查询观看

   

创作许可协议

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

评论(48)
esp32cam
esp32cam
uPy_lib怎么建立始终查不到【我总是空的】!?
JOVI
JOVI
学习学习
perseverance51
perseverance51
能否提供一下[code]urequests.py[/code]这个模块的代码吗?
0574water
0574water
exec(open('./esp8266 oled from net .py').read(),globals())
Traceback (most recent call last):
File "", line 1, in
File "", line 7, in
ImportError: no module named 'HZK'
>>>
import urequests as requests
import HZK
导入这二个库出错 !
呼噜哥
呼噜哥回复0574water
他这个是esp32的板子
esp8266固件中并没有HZK
dvsseed
dvsseed
讚+1
fanqiexin
fanqiexin
厉害了23333
miaoichi
miaoichi
厉害了 顶一个
火烧粑粑大黄
火烧粑粑大黄
666
NNN904
NNN904
好活动
shmily326
shmily326
人生苦短,我用micropython!
mrms
mrms
顶起来的好活动
422234
422234
最近micropython好像很火啊。很多地方都看得见
tonyliangLXR
tonyliangLXR
谢谢僵大佬!
tonyliangLXR
tonyliangLXR
请问uPy_lib在哪里下载?HZK.py又在哪里?
僵大懒
僵大懒
作者
回复tonyliangLXR
uPy_lib是ide自带的库,HZK.py是我们修改了固件之后,集成到固件中的。详细的可以到群里问:619558168
tonyliangLXR
tonyliangLXR
哇塞厉害了,我正好也在做这方面,没有中文显示真的蛋疼
铁熊
铁熊
想要试玩~
nemon
nemon
nemon
nemon回复僵大懒
放心,版主的人品是光华四射的,真实性毋庸置疑。我最爱干的就是在出各种馊招折腾……
僵大懒
僵大懒
作者
回复nemon
随机生成,录视频保证真实性。
dbc0301
dbc0301
不过有了中文支持,也就不用取模什么的了,一下子方便好多。真希望其它语言也能这样。。。
dbc0301
dbc0301
microPython是Python的衍生物吗?
我没有Python的基础也能学吗?
nemon
nemon回复dbc0301
看2小时手册,不就有py基础了吗?
nemon
nemon

顶起来好活动,试试人品……