Python,是一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU General Public License)协议。Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。总之,Python是一种简单易用的、能够运行在多个平台下的计算机编程语言。
而microPython,是跑在MCU(微控制器)上的Python,通过内置的解释器执行py文件或者py命令,就可以让微控制器运行您想要的功能了。microPython和Python编程语言一样,在任何板子上都可以使用通用的API控制硬件底层,比如点亮 LED 灯,读取传感器信息, LCD 显示字符串、控制电机、连接网络、连接蓝牙等等。
如果说Arduino让创客摆脱了各种编程环境配置,那么micropython直接让创客摆脱了底层。命令行和解释执行,都是C语言所不具备的优势,运行micropython的soc,就类似一台完整的电脑,我们用python文件和命令行,轻松控制这台电脑中的一切。
microPython是人们连接各种任务的粘合剂,即便您不懂编程,不懂硬件,也可以通过它来控制MCU,要给microPython下一个最准确的定义,最好用一些实例来描述。
您想当咖啡煮好时,咖啡壶就发出“吱吱”声提醒您吗?
您想当邮箱有新邮件时,电话会发出警报通知您吗?
想要一件闪闪发光的绒毛玩具吗?
想要一款具备语音和酒水配送功能的X教授蒸汽朋克风格轮椅吗?
想要一套按下快捷键就可以进行实验测试蜂音器吗?
想为您的儿子自制一个《银河战士》手臂炮吗?
想自制一个心率监测器,将每次骑脚踏车的记录存进存储卡吗?
想过自制一个能在地面上绘图,能在雪中驰骋的机器人吗?
想做一台机械臂,通过摇杆,您做什么动作,它就做什么动作吗?
想过自制一个智能气象站,自动获取天气预报数据吗?
microPython都可以为您实现。
Damien George是一名计算机工程师,他每天都要使用Python语言工作,同时也在做一些机器人项目。有一天,他突然冒出了一个想法:能否用Python语言来控制单片机,进行实现对机器人的操控呢?
要知道,Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言。遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼。
Damien为了突破这种限制,他花费了六个月的时间来打造Micro Python。它基于ANSI C,语法跟Pyton 3基本一致,拥有自家的解析器、编译器、虚拟机和类库等。目前它支持基于32-bit的ARM处理器,比如说pyboard(STM32F405),支持NRF51822(micro:bit)、支持FireBeetle-ESP32、支持WiPy、支持ESP8266核心主控、支持CC3200等等。
pyboard是microPython官方出的一款支持microPython的微控制器,采用stm32f405rg MCU主芯片,邮票孔设计,体积小巧。在性能方面,pyboard除了将stm32f405rg本身的外设延用出来,还拓展了微型SD卡插槽、三周加速度计(mma7660)。在小巧的pyboard上,设有29个GPIO,4个LED灯,板载3.3V LDO电源管理芯片,可以提供高达250mA的电流,3.6~16V的宽电压输入。

本次测试板是在淘宝购买
https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-24145583300.9.7e233746ulqmzT&id=594145340736

#获取pyboard上引脚的别名和芯片定义的引脚名
help(pyb.Pin.board)
#获取LED类方法
help(pyb.LED)
#Thonny软件安装
https://thonny.org/
#Thonny配置
工具 --> ESP8266 --> 串口号
#MicroPython官网
https://micropython.nxez.com/docs/micropython/en-us/index.html
import pyb
# 设置串口及波特率
pyb.repl_uart(pyb.UART(1, 9600))
# 暂停CPU,等待外部中断
pyb.wfi()
# 获取CPU和总线频率
pyb.freq()
# 设置cpu频率为60MHZ
pyb.freq(60000000)
# 停止CPU,等待外部中断
pyb.stop()
引用博客:http://t.zoukankan.com/iBoundary-p-11495199.html
Use the time module:
import time
# 休眠1秒
time.sleep(1)
# 休眠500毫秒
time.sleep_ms(500)
# 休眠10微秒
time.sleep_us(10)
# 获取毫秒计数器的值
start = time.ticks_ms()
# 计算时差
delta = time.ticks_diff(time.ticks_ms(), start)
from pyb import LED
# 1=red, 2=green, 3=yellow, 4=blue
led = LED(1)
#翻转
led.toggle()
#点亮
led.on()
#熄灭
led.off()
# LED 3和4支持PWM强度(0-255)
# 获取强度
LED(4).intensity()
# 设置50%的强度
LED(4).intensity(128)
from pyb import Switch
import time
sw = Switch()
# 返回 True 或 False
while True:
time.sleep(0.2)
#获取开关状态
print(sw())
#当开关按下时注册回调函数
sw.callback(lambda: pyb.LED(4).toggle())
#取消注册
#sw.callback(None)
from pyb import Pin
p_out = Pin('X1', Pin.OUT_PP)
p_out.high()
p_out.low()
p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
p_in.value() # get value, 0 or 1
"""
在 pyboard 板上有4个用于连接业余hobby伺服电机的专用连接点。这些电机有3条线:地线、电源线和信号线。您可在板上将三条线连接在右下角,信号引脚在最右边。引脚X1、X2、X3和X4是4个专用伺服信号引脚。
"""
from pyb import Servo
# servo位置 (X1, VIN, GND)
s1 = Servo(1)
# 移动到45度
s1.angle(45)
# 移动到 -60 度在 1500ms 内
s1.angle(-60, 1500)
# 设置速度,用于连续移动
s1.speed(50)
from pyb import Pin, ExtInt
#回调函数
callback = lambda e: print("intr")
#外部中断触发条件设置
ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
"""
定时器是嵌入式系统中最基本的功能之一,它除了可以实现定时器功能外,还能够实现延时、PWM输出、波形发生器、舵机控制、节拍器、周期唤醒、自动数据采集等功能。在MicroPython中,很多函数的功能也依赖定时器
"""
from pyb import Timer
tim = Timer(1, freq=1000)
# 获取counter 的值
tim.counter()
#设置频率为 0.5 Hz
tim.freq(0.5)
#设置回调函数
tim.callback(lambda t: pyb.LED(1).toggle())
from pyb import RTC
rtc = RTC()
#设置年、月、日、星期、时、分、秒、次秒
rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0))
#返回当前系统时间
rtc.datetime()
from pyb import Pin,Timer
#X1是定时器2的CH1
p = Pin('X1')
tim = Timer(2,freq=1000)
#设置PWM引脚
ch = tim.channel(1,Timer.PWM,pin=p)
#设置PWM输出占空比
ch.pulse_width_percent(50)
from pyb import Pin, ADC
#设定ADC输入引脚
adc = ADC(Pin('X19'))
#读取ADC转换结果,默认12位方式,参数范围0~4095
adc.read()
from pyb import Pin, DAC
#设置DAC输出引脚
dac = DAC(Pin('X5'))
#设置输出电压,默认8位模式,参数范围0~255
dac.write(120)
from pyb import UART
#设置串口号,波特率
uart = UART(1, 9600)
#输出
uart.write('hello')
#最多读取5个字节
uart.read(5) # read up to 5 bytes
from pyb import SPI
#设置SPI参数
spi = SPI(1, SPI.CONTROLLER, baudrate=200000, polarity=1, phase=0)
spi.send('hello')
#读取5个字节
spi.recv(5)
#发送并接收5个字节
spi.send_recv('hello')
from machine import I2C
# 定义硬件I2C对象
i2c = I2C('X', freq=400000)
# 定义软件I2C对象
i2c = I2C(scl='X1', sda='X2', freq=100000)
# 返回扫描到的从机地址
i2c.scan()
# 往地址为 0x42 的从机写5个字节
i2c.writeto(0x42, 'hello')
# 从地址为 0x42 的从机读取5个字节
i2c.readfrom(0x42, 5)
# 从设备地址 0x42和存储器地址为0x10中读取2个字节
i2c.readfrom_mem(0x42, 0x10, 2)
# 从设备地址 0x42和存储器地址为0x10中写入2个字节
i2c.writeto_mem(0x42, 0x10, 'xy')
from pyb import CAN
can = CAN(1, CAN.LOOPBACK)
can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
#发下ID为123的消息
can.send('message!', 123)
#在FIF0 0 上接收消息
can.recv(0)
from pyb import Accel
import time
accel = Accel()
while True:
time.sleep(0.2)
print(accel.x(), accel.y(), accel.z(), accel.tilt())
from pyb import LED
leds = [pyb.LED(i) for i in range(1,5)]
n = 0
while True:
n = (n+1) % 4
leds[n].toggle()
pyb.delay(100)
from pyb import LED
leds = [pyb.LED(i) for i in range(1,5)]
n = 0
while True:
n = (n+1) % 4
leds[n].toggle()
if n == 3:
leds.reverse()
pyb.delay(100)
led = pyb.LED(3)
intensity = 0
flag = True
while True:
if flag:
intensity = (intensity + 1) % 255
if intensity == 0:
flag = False
intensity = 255
else:
intensity = (intensity - 1) % 255
if intensity == 0:
flag = True
led.intensity(intensity)
pyb.delay(30)
本人是音乐爱好者,从小就特别喜欢那个随着音乐跳动的方框效果,就是这个:arduino上一大把对,我忍你很久了,我就想用mpy做,全网没有,行我自己研究。果然兴趣是最好的老师,我之前有篇博客专门讲音频,有兴趣的可以回顾一下。提到可视化频谱,必然绕不开fft,大学学过这玩意,当时一心玩,老师讲的一个字都么听进去,网上教程简略扫了一下,大该就是把时域转频域的工具,我大mpy居然没有fft函数,奶奶的,先放着。音频信息如何收集?第一种傻瓜式的ADC,模拟转数字,原始粗暴,第二种,I2S库,我之前博客有讲过,数据是PCM编码。然后又去学PCM编码,一学豁然开朗,舒服,以代码为例:audio_in=I2S
总览1.安装CH343驱动2.下载microPython固件3.安装烧录软件flash_download_tool_3.9.3.exe并开始烧录4.安装ThonnyIDE软件并配置编译环境一、安装CH343驱动1.驱动下载https://www.wch.cn/downloads/CH343SER_EXE.html2.操作流程步骤1:通过Type-C数据线将ESP32S3与电脑连接(有坑)一定要连接COM端口(如下图所示右侧的端口)!连接左侧是无法用驱动的!步骤2:驱动下载好后,以管理员身份运行,并点击“安装”步骤3:打开“设备管理器”,能看到电脑识别了我们的ESP32S3二、下载microPy
一、目的 这一节我们学习如何使用我们的ESP32开发板来学习MQTT。二、环境 ESP32客户端+MQTT服务器+ThonnyIDE+电脑+手机三、MQTT服务器的安装 MQTT具体是啥?大家自行百度,此处不再赘述。我找到一个介绍的网站,大家也可以去这里看一下:1-1MQTT是什么–太极创客这里我和大家介绍下安装方法,首先下载(此处使用的版本是V5.0.11):下载EMQX下载完成后,解压,然后打开CMD命令行,输入如下命令"emqxstart",就可以启动: 具体的使用方法,可参考官方的使用指南:快速开始|EMQX5.0文档我们接着往下讲,上面资料你后面再
本人持续分享更多关于嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~为什么使用Micropython编进行变成呢,在我初步使用后有一下的体悟: 1.操作简单,python语法。arduino框架编译速度贼慢,即使用了platform平台还是很慢,而乐鑫提供的开发环境部署开发都有一点麻烦。 2.有命令行模式,也就是可以实时的进行调试,可以一行一行的执行代码,esp32好像没有像stm32那样强大的调试功能,而这个命令行模式对于简单程序来说调试还是很舒服的。 当然问题也不少 1.资源比较少,很难找到一些库文件,而且出现问题也不好解决,但目前这一块好起来了。 2.占用硬
一、目的 这一节我们学习如何使用我们的ESP32开发板来实现通过蓝牙控制接在ESP32开发板上的舵机。二、环境 ESP32+MG90S舵机+ThonnyIDE+几根杜邦线+手机 舵机的链接方法见第54节:物联网开发笔记(54)-使用Micropython开发ESP32开发板之控制MG90S舵机_魔都飘雪的博客-CSDN博客三、手机APP 这里用到的手机APP是BluefruitConnect,使用苹果手机的同学打架早AppleStore中直接搜索安装即可。安卓暂时我没找到这个APP,哪位同学有的可以评论区留言哈。。。BluefruitConne
一、目的 上一节我们实现了远程查看开发板灯的状态,这一节在我们远程控制LED灯的开关。NICE!二、环境 ESP32+240x240的oled彩色屏幕+ThonnyIDE+几根杜邦线 接线方式请看上前面的章节,此处不再重复赘述。三、用到的知识 前面我们学习的远程控制开关LED灯和240x240屏幕的知识。大家不会的话,请看前面的章节。不懂得也可以留言哈。四、用到的图片 开关的图标: *绿色图标为开,红色图标为关 五、HTML代码 我们只需要将图标添加到我们上一节的代码即可led_on.html:
声明:本人作为初学者,以笔记的方式记录学习内容,如果错误的地方欢迎大家指正批评,谢谢!本机的开发环境为MacOSPython3.6windows下的开发步骤可能略有不同1.选择需要开发板这里我选了比较常见且玩法较多的esp32,和esp8266.ep8266NodeMCULuaV3原理图上图是我使用的esp8266开发板以及原理图?2.安装USB转串口驱动确定你的开发板拥有microusb接口或者已经通过自己的方式转化为usb可以连接你的电脑.2.1首先要做的是查看开发板上串口转USB的芯片型号以安装对应驱动.此款的芯片为CH340可以到http://www.wch.cn/进行驱动下载MacO
文章目录前言一、ESP32和Micropython简介二、蓝牙模组通讯原理简介三、手机端和ESP32蓝牙通讯1.ESP32蓝牙呼吸灯代码2.手机端准备总结前言博主之前学习了用C语言去开发了51单片机,虽然没有将各种外设和传感器都玩遍,但博主基本将一些重要的外设和传感器通过原理学习加小项目实验的方式比较深入地玩了一下。众所周知,51单片机是相对底层的,用来开发一些大项目的效率会比较低,所以我们很有必要学习一下stm32、esp32的开发。博主希望下来学习用MicroPython来开发esp32,先从esp32的特色功能蓝牙和WiFi玩起,再接触一下之前没有玩过的传感器和外设:DHT11温湿度传感
我曾经读过关于最小化python安装,没有很多python默认安装附带的库,但在网上找不到它......我想做的是用执行它所需的python东西打包一个脚本并使其可移植。有人知道这样的事情吗?谢谢 最佳答案 MicroPython积极维护并已移植到一堆微Controller。对于其他小型实现,您可能还想查看tinypy或PyMite.如果您不关心大小,而只是想要一种简单的方法来分发Python程序,请考虑PyInstaller或thislist上的其他人之一. 关于python-Micr
微软新必应是一款由人工智能驱动的AI搜索引擎(基于ChatGPT4.0的先进自然语言生成模型),它能与用户进行流畅、自然、有趣的对话,并提供可靠、及时的搜索结果,以及回答用户的各种问题。我们可以使用新必应生成程序代码、诗歌、故事、歌词等内容,或者模仿名人发表段子、推文等内容。树莓派PicoW开发板是树莓派基金会于2022年6月底发布的一款无线WiFi开发板,本文介绍使用NewBingAI机器人生成树莓派PicoW开发板MicroPython应用程序的基本方法。1、微软新必应(NewBing)简介微软新必应(NewBing)是一款由人工智能驱动的AI搜索引擎(基于ChatGPT4.0自然语言生成