V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ralstonish
V2EX  ›  Python

想用 Python 来控制硬件,做一些小玩意儿

  •  
  •   ralstonish · 99 天前 · 3098 次点击
    这是一个创建于 99 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近想开始尝试通过编程与硬件进行互动(比如简单的控制风扇,自己弄几个传感器做一个空气质量检测仪之类的)

    不过我主要用的是 python ,其他的语言没有怎么深入学过,不知道单单用 python 是否可行?

    家里翻了一下,有一块树莓派 4B ,之前捣鼓了软路由,看了下要接传感器好像还蛮复杂的,请教一下大家,如果想玩一些硬件、传感器之类的,从哪里下手会比较好一些?(就玩玩,暂时不打算从 c 开始做起)

    有没有别的套件或者开发板推荐呢?

    PS:有网友推荐去淘宝花 10 块钱买个 esp32c3 ,刷 micropython ,带 adc/dac/i2c/spi 等一些列外设接口。不知道这个连接传感器用方便不。

    树莓派的看了下,Python 读取传感器的方式,树莓派可以直接通过 GPIO 口读取,主要问题,无法读取模拟传感器,需要额外的硬件( ADC MCP3008 ),比如: https://tutorials-raspberrypi.com/mcp3008-read-out-analog-signals-on-the-raspberry-pi/

    自己之前没接触过硬件,感觉入门还是有点难度 = =

    19 条回复    2022-11-09 17:14:13 +08:00
    sivacohan
        1
    sivacohan  
       99 天前
    娱乐的话还是很简单的。

    Linux 的的抽象是万物皆文件,你把各种外设都当成一个文件就好了。
    然后 I2C ,SPI 之类的通信协议当成一个驱动就好了。
    listenfree
        2
    listenfree  
       99 天前
    建议买 esp32 ,刷 micropython 没问题,难点主要在硬件模电,数电,上拉,下拉,i2c,如果只是点亮一个灯,是很简单。
    muooOOO
        3
    muooOOO  
       99 天前
    还有一种就是买 arduino 套件,各种传感器搭配起来很方便。但是需要你了解下 arduino 的开发语言,反正也不难
    bnull
        4
    bnull  
       99 天前
    esp32 拿来做 iot 设备挺方便的,价格低廉性能也有,但是电子方面要学很多知识,这方面跳不过。最近在学校弄个小东西就是用 esp32cam 当视频源,电脑处理图片(不过其实 esp32 本身性能足够挺强的,例程中甚至有一个人脸识别)不过 esp32 缺陷也很明显,io 太少了,树莓派太贵了玩不起,stm32 性能稍微弱了一些但是资源资料都挺充足的。搞这些东西还是得学点 c 把,如果用 stm32 开发的话相当轻松了,hal 库封装的很好,绝大部分直接用就行了。实际底层都还是操作寄存器的
    qzwmjv
        5
    qzwmjv  
       99 天前
    esp32 自带 adc 虽然不太准,
    开发简单还是建议搞数字输出的传感器,上 esp32s 系列吧,c 系列弱一点
    marcong95
        6
    marcong95  
       99 天前
    如果你只是自己弄着玩,或者用来辅助自己的智能家居啥的,其实你说的已经足够了。而且传感器感觉很多都是数字的,真需要用模拟传感器,那就在买个模块插上去就好了

    想进一步玩的话 ESP32 确实也更合适,毕竟等你多弄几个到处放的时候树莓派就算原价也显得比较贵了。
    eyewater
        7
    eyewater  
       99 天前
    可以买个 esp32 刷 arduino 的固件,arduino 的语言还是很简单,比如这个,用 DHT11 传感器获取温湿度 https://create.arduino.cc/projecthub/arcaegecengiz/using-dht11-b0f365

    micropython 也用过,不过感觉没有 arduino 的库多
    ralstonish
        8
    ralstonish  
    OP
       99 天前
    非常感谢大家的回复!
    Eiden
        9
    Eiden  
       99 天前
    mpy 可以实现你的需求, 但是 mpy 最多语法上手快, 你还是要了解很多硬件外设知识的

    可以试试买 esp32, 然后用乐鑫官方的 ESP-IDF 开发框架, 比较适合软件开发的人上手, 单片机开发场景 mpy 这种相较 c 其实并没有提供多少便利
    kokutou
        10
    kokutou  
       99 天前 via Android
    Arduino 算了。。学一下很快的。。。
    Arduino 库多的 1b
    wangbin526
        11
    wangbin526  
       99 天前
    用 ESP-IDF 的路过,新手入门不推荐,这货没成体系的教程,基本都得看官方文档和示例自己啃
    建议 Arduino 吧,这货 C 语言就那二三十句,到处都是完整教程,最主要是第三方库多,基本上常见传感器都有现成库,买个合宙 9.9 的 ESP32C3 接几个传感器半小时搞定,micropython 不推荐,不过进阶的 ESP32S3 语音识别、人脸识别什么都只有官方的 IDF 库
    当然做产品最后还是得 ESP-IDF ,光一个加密 ESP32 Arduino 就很难搞定
    PS:乐鑫刚出了一本官方的 ESP-IDF 教程,《 ESP32-C3 物联网工程开发实战》,IDF 至少有一本官方教程了,不过还是得自己啃示例
    Scirocco
        12
    Scirocco  
       99 天前
    虽然微雪的传感器啥的很贵,但是可以先买他们家的,有很完备的例程。

    https://www.waveshare.net/wiki/Main_Page

    (实际上买相同型号和接口的传感器就行,例程是通用的)
    leimao
        13
    leimao  
       99 天前 via iPhone
    NVIDIA Jetson
    MonoLogueChi
        14
    MonoLogueChi  
       99 天前 via Android
    只用 Python 的话可以尝用 circuitypython 或者是 micropython 。硬件的话建议用第三方的 pico 开发板,大概 20-30 块钱一个,可以搜 rp2040 开发板不建议用树莓派官方的 pico 。如果想用 esp32 系列开发板的话

    esp32 优点价格便宜,io 口多,性能强,缺点没 usb ,不支持 dfu
    esp32s2 优点,原生 usb 支持,价格便宜,io 口多,缺点,不支持蓝牙
    esp32s3 优点,原生 usb 支持,io 口多,性能强,缺点,贵
    esp32c3 优点 便宜,低功耗。缺点,io 口相对较少,不支持 usb ,但支持 usbcdc
    MonoLogueChi
        15
    MonoLogueChi  
       99 天前 via Android
    补充,如果不想买开发板,用树莓派 4b 也是可以的,circuitpython 和 micropython 都是可以直接在树莓派上跑的,而且比开发板上更方便
    customsshen
        16
    customsshen  
       98 天前 via Android
    mpy 可以简单点,但是相比 arduino 用 C 开发的话,库少的可怜。python 的先天优势都没了。
    ralstonish
        17
    ralstonish  
    OP
       98 天前
    @wangbin526 感谢!我去看看~
    ralstonish
        18
    ralstonish  
    OP
       98 天前
    @MonoLogueChi 非常感谢!
    MoyiTech
        19
    MoyiTech  
       91 天前
    高中的时候做过,esp8266 开发板可以使用 Arduino 进行编程,然后可以使用 HTTP 协议或者连接 MQTT 实现联动
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1229 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.