【4Day创客实践入门教程】Day1 工具箱构建——开发环境的构建

news2025/3/7 5:24:24

Day1 工具箱构建——开发环境的构建

目录

  • Day1 工具箱构建——开发环境的构建
    • 1.元件选型
    • 2.准备工具
    • 3. 开发板准备
      • 焊接排针
        • 具体步骤
        • 注意事项与技巧
    • 4. 软件环境配置与固件烧录
      • Thonny IDE软件环境配置
      • 配置Micropython环境与烧录固件
        • **问题:**买的是4M/16M,但是烧录MicroPython固件后,可用仍然只有1.4
    • 后记
    • 示例实验
      • External LED 实验
      • Traffic Light System 实验
      • Burglar Alarm LED Buzzer 实验
      • Potentiometer 实验
      • WS2812 实验
      • LCD1602 I2C 实验

  • Day0 创想启程——课程与项目预览
  • Day1 工具箱构建——开发环境的构建
  • Day2 探秘微控制器——单片机与MicroPython初步
  • Day3 实战演练——桌面迷你番茄钟
  • Day4 迈向高手之路——进一步学习!

1.元件选型

这个步骤一般在项目选题定好以后进行。实现一个项目,我们一般需要以下几类元件(括号内为本项目使用),我们需要视产品功能,元件生产厂商,元件的作用等方面选定。

  • 主控芯片/主控板(RP2040)
  • 自制PCB扩展板/成品扩展板(Pico-OLED-1.3 1.3英寸OLED扩展板)
  • 其他元器件
  • 电源等(锂电池)

2.准备工具

我们需要一些工具,来避免项目做到一半搁置去买东西等情况,所以提前准备一些必要的工具是非常必要的。

  • 基本工具(剪刀、钳子等)
    • 剪线钳:修剪多余的排针长度。
  • 焊接工具
    • 电烙铁:建议使用恒温电烙铁以控制温度。
    • 焊锡膏:用于提高焊接质量。
    • 焊锡丝:直径通常为0.5mm至1.2mm之间,选择合适的直径。
    • 助焊剂(可选):如果焊锡膏粘性不足,可以考虑使用。
    • 防静电手套或手腕带(可选):保护电子元件免受静电损害。
    • 放大镜(可选):提高可视性和准确性。
  • 其他耗材工具
    • 面包板:用于固定排针。
    • 排针:确保针脚干净无损。
  • 电脑及配件

3. 开发板准备

焊接排针

我们买回来的开发板是默认不带排针的,所以我们需要自己焊接排针。

具体步骤
  1. 预处理:

    1.1. 准备固定支点: 将排针插入面包板上,确保排针稳定且垂直于开发板。

    1.2. 涂抹焊锡膏: 在排针的焊接面上轻轻涂抹一层薄薄的焊锡膏。

    1.3. 加热电烙铁: 将电烙铁加热到适宜的温度,并清除烙铁头。

  2. 焊接:

    2.1. 放置烙铁头: 将烙铁头轻触排针与PCB的接触点。

    2.2. 加入焊锡丝: 当焊锡膏开始熔化时,将焊锡丝接触到烙铁头和排针的接触点。

    2.3. 撤离焊锡丝: 当焊点形成良好的形状并且焊锡丝已经足够时,迅速移开焊锡丝。

    2.4. 取走电烙铁: 在焊锡丝撤离后,立即移开电烙铁,避免过度加热。

    2.5. 检查焊点: 确保每个焊点都完整且没有虚焊的情况。

注意事项与技巧
  1. 温度控制: 如果使用的不是恒温电烙铁,请不要让烙铁头长时间接触焊接面,以免损坏电子元器件。

  2. 避免过热: 在焊接多个点时,应适时停顿,避免连续长时间加热导致元器件受损。

  3. 安全第一: 确保工作环境通风良好,并采取适当的防护措施以保护眼睛和皮肤。

  4. 提高速度: 虽然速度很重要,但确保质量优先。

  5. 保持稳定: 在焊接过程中,保持手部稳定,避免抖动。

  6. 检查焊点: 确保每次焊接完成后,焊点表面光滑、饱满,没有气泡或裂纹。

1721380246632

4. 软件环境配置与固件烧录

Thonny IDE软件环境配置

screenshot

为了方便在电脑上使用MicroPython开发RP2040-PLUS板,建议下载Thonny IDE

  • 下载Thonny IDE并按照步骤安装
    • Thonny IDE下载链接(Windows版本)
    • Thonny 官网
  • 安装完成之后,第一次要配置语言和主板环境,由于我们是为了使用Pico,所以注意主板环境选择Raspberry Pi选项Pico-R3-Tonny1
  • 修改Thonny语言为简体中文,选择完成后重启生效image-20240731100011209

配置Micropython环境与烧录固件

  1. 使用USB-C数据线连接RP2040-PLUS与Windows电脑

  2. 烧录固件

    • 下载固件库到电脑上
    **问题:**买的是4M/16M,但是烧录MicroPython固件后,可用仍然只有1.4

    官方固件没有更新,仍然是以2M内存编写的固件;使用下面对应的固件即可:
    4M:4M MicroPython固件
    16M:16M MicroPython固件

    • 在Windows下载固件库(下面两种方法都可以,都可以试试)
      • 按住BOOT键后连接电脑后,松开BOOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可
      • 连接电脑后,同时按下BOOT键跟RESET键,先松开RESET键再松开B OOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可
  3. 烧录完固件后,理论上Thonny将会识别到这个设备。点击右下角配置设备,选择RP2040。image-20240731095558685

  • 认识Thonny,接下来你可以先打开编辑器,摸索一下,然后试着查看官方教程学习基本的使用方法。Thonny 官网

    image-20240731091859862

后记

好了,现在完事具备。你可以先试试完成以下这些RP2040的小实验,提前预习下啊~

示例实验

  • 下载示例程序到电脑桌面即可进行一些几个有趣的实验。

External LED 实验

  • 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-5 External LED中的python文件,运行示例程序可以看到红灯有在闪烁的现象。
  • 使用注意事项:LED较长的引脚为正极,较短的为负极,负极应该接GND,正极应该和GPIO输出口相连,使用时必须接上电阻。

Raspberry-Pi-Pico-Basic-Kit-External-LED-blink.png

  • 代码解析
led_external = machine.Pin(15, machine.Pin.OUT) #设置GP15为输出模式
while True: 
   led_external.toggle() #每过5秒钟让LED灯的状态改变一次
   utime.sleep(5)

Traffic Light System 实验

  • 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-9 Traffic-Light-System中的python文件,运行程序可以看到交通灯带正常的运行,当按下按键时会触发蜂鸣器。
  • 使用注意事项:LED较长的引脚为正极,较短的为负极,负极应该接GND,正极应该和GPIO输出口相连,使用时必须接上电阻;蜂鸣器的红线接GPIO口输出,黑线接GND。

Raspberry-Pi-Pico-Basic-Kit-Traffic-Light-System.png

  • 代码解析
def button_reader_thread():  #检测按键是否被按下
   global button_pressed 
   while True:
       if button.value() == 1: 
           button_pressed = True

_thread.start_new_thread(button_reader_thread, ()) #用开启线程的方式去检测按键
while True:
   if button_pressed == True: #如果按键被按下,红灯亮起,蜂鸣器响闹
       led_red.value(1) 
       for i in range(10): 
           buzzer.value(1) 
           utime.sleep(0.2) 
           buzzer.value(0) 
           utime.sleep(0.2) 
       global button_pressed 
       button_pressed = False 
   led_red.value(1)  #正常情况下红灯边绿灯时黄灯会亮两秒,然后黄灯和红灯灭,绿灯亮
   utime.sleep(5)     #由绿灯边红灯时,绿灯先灭,黄色亮两秒,然后红灯亮
   led_amber.value(1) 
   utime.sleep(2) 
   led_red.value(0) 
   led_amber.value(0) 
   led_green.value(1) 
   utime.sleep(5) 
   led_green.value(0) 
   led_amber.value(1) 
   utime.sleep(5) 
   led_amber.value(0)

Burglar Alarm LED Buzzer 实验

  • 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-14 Burglar Alarm LED Buzzer中的python文件,运行程序可以看到,当人为的在Passive infrared sensor前晃动时,LED灯闪亮的同时蜂鸣器也会报警。
  • 使用注意事项:Passive infrared sensor 的中间引脚为数据输出引脚,两边的引脚分别接入VCC和GND即可。

Raspberry-Pi-Pico-Basic-Kit-Burglar Alarm LED Two Buzzer.png

  • 代码解析
def pir_handler(pin):  #中断处理函数,蜂鸣器响,led快速闪烁
   print("ALARM! Motion detected!") 
   for i in range(50): 
       led.toggle() 
       buzzer.toggle() 
       utime.sleep_ms(100)
sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)#开启中断,当人体传感器检测到异常时就会今天中断处理函数处理
while True:  #无异常状态下会每隔5秒改变一次LDE的状态
   led.toggle() 
   utime.sleep(5)

Potentiometer 实验

  • 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-16 Potentiometer中的python文件,运行程序,旋转电位器可以看到Sheel窗口中打印出来的电压值也在改变。
  • 使用注意事项:Potentiometer的中间引脚为数据输出口,两边的引脚分别接上GND和VCC即可。

Raspberry-Pi-Pico-Basic-Kit-Potentionmeter.png

  • 代码解析
potentiometer = machine.ADC(26) #将GP26作为模拟信号采集引脚
conversion_factor = 3.3 / (65535)
while True:
   voltage = potentiometer.read_u16() * conversion_factor #将采集到的数据进行格式化转换成电压值
   print(voltage) #打印电压信息,电压值会随着滑动变阻器旋转而变化
   utime.sleep(2)

WS2812 实验

  • 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-25 WS2812中的WS2812_RGB_LED.py文件,运行程序可以一次看到蓝、红、绿、白的RGB颜色。

Raspberry-Pi-Pico-Basic-Kit-WS2812.png

  • 代码解析
#这一段代码使用到的是状态机机制,如下代码是一个装饰器,在装饰器中我们可以硬件进行初始化、设定引脚的电平等等。
#label("bitloop") 我们可以在代码中定义一下标记,方便我们通过跳转的方式跳到他们这里执行。
#jmp(not_x,"do_zero") 当x=0时,我们就调整到标签“do_zero”。
#nop() .set(0) [T2 - 1] 当x=0时,会跳转到这里执行。
@asm_pio(sideset_init=PIO.OUT_LOW, out_shiftdir=PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)
def ws2812():
   T1 = 2
   T2 = 5
   T3 = 1
   label("bitloop")
   out(x, 1)               .side(0)    [T3 - 1] 
   jmp(not_x, "do_zero")   .side(1)    [T1 - 1] 
   jmp("bitloop")          .side(1)    [T2 - 1] 
   label("do_zero")
   nop()                   .side(0)    [T2 - 1]
# Create the StateMachine with the ws2812 program, outputting on Pin(22).
sm = StateMachine(0, ws2812, freq=8000000, sideset_base=Pin(0)) #创建状态机
# Start the StateMachine, it will wait for data on its FIFO.
sm.active(1) #开始状态机
# Display a pattern on the LEDs via an array of LED RGB values.
ar = array.array("I", [0 for _ in range(NUM_LEDS)])
print(ar)
print("blue")
for j in range(0, 255): 
   for i in range(NUM_LEDS): 
       ar[i] = j 
   sm.put(ar,8)  #put()的方法是将数据放入状态机的输出FIFO
   time.sleep_ms(5)

LCD1602 I2C 实验

  • 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-21 LCD1602 I2C中的python文件,先将RGB1602.py文件另存为Raspberry Pi Pico中,运行Choose_Color.py可以看到每5秒切换一种不同的颜色;运行Discoloration.py文件可以看到RGB颜色渐变的效果。

Raspberry-Pi-Pico-Basic-Kit-LCD1602-I2C.jpg

  • 代码解析

Choose_Color.py

#定义颜色
rgb9 = (0,255,0) #青色’
lcd.setCursor(0, 0) #设置游标位置
# print the number of seconds since reset:
lcd.printout("Waveshare") #写入字符
lcd.setCursor(0, 1) #设置游标位置到第二行第零列
lcd.printout("Hello,World!")#写入字符
lcd.setRGB(rgb1[0],rgb1[1],rgb1[2]); #设置背光

Discoloration.py

t=0
while True:

   r = int((abs(math.sin(3.14*t/180)))*255);  #RGB随着时间的变化而变化
   g = int((abs(math.sin(3.14*(t+60)/180)))*255);
   b = int((abs(math.sin(3.14*(t+120)/180)))*255);
   t = t + 3;
   lcd.setRGB(r,g,b);#重新设置RGB的值
# set the cursor to column 0, line 1
   lcd.setCursor(0, 0) #定位到第一行第零列
# print the number of seconds since reset:
   lcd.printout("Waveshare")#写入字符
   lcd.setCursor(0, 1) #定位到第二行第零列
   lcd.printout("Hello,World!")#写入字符
   time.sleep(0.3)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2289425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何让一个用户具备创建审批流程的权限

最近碰到一个问题,两个sandbox,照理用户的权限应该是一样的,结果开发环境里面我可以左右的做各种管理工作,但是使用change set上传后,另一个环境的同一个用户,没有相对于的权限,权限不足。 当时…

本地部署DeepSeek开源多模态大模型Janus-Pro-7B实操

本地部署DeepSeek开源多模态大模型Janus-Pro-7B实操 Janus-Pro-7B介绍 Janus-Pro-7B 是由 DeepSeek 开发的多模态 AI 模型,它在理解和生成方面取得了显著的进步。这意味着它不仅可以处理文本,还可以处理图像等其他模态的信息。 模型主要特点:Permalink…

【详细教程】如何在Mac部署Deepseek R1?

DeepSeek是目前最火的国产大模型,官方App用户太多服务经常出现卡顿,部署一个本地DeepSeek R1可以方便使用。 1.系统最低要求 macOS 11 Big Sur 或更新 2.下载ollama https://ollama.com/ 3.安装DeepSeek R1 打开终端 运行命令 ollama run deepseek-…

DeepSeek能下围棋吗?(续)

休息了一下,接着琢磨围棋,其实前面一篇里的规则有个漏洞的,就是邻居关系定义有问题,先回顾一下游戏规则: 游戏规则 定义: 1.数字对,是指两个1到9之间的整数组成的有序集合。可与记为(m,n)&…

【产品经理学习案例——AI翻译棒出海业务】

前言: 本文主要讲述了硬件产品在出海过程中,翻译质量、翻译速度和本地化落地策略是硬件产品规划需要考虑的核心因素。针对不同国家,需要优化翻译质量和算法,关注市场需求和文化差异,以便更好地满足当地用户的需求。同…

被裁与人生的意义--春节随想

还有两个月就要被迫离开工作了十多年的公司了,不过有幸安安稳稳的过了一个春节,很知足! 我是最后一批要离开的,一百多号同事都没“活到”蛇年。看着一批批仁人志士被“秋后斩首”,马上轮到我们十来个,个中滋味很难言清…

4-图像梯度计算

文章目录 4.图像梯度计算(1)Sobel算子(2)梯度计算方法(3)Scharr与Laplacian算子4.图像梯度计算 (1)Sobel算子 图像梯度-Sobel算子 Sobel算子是一种经典的图像边缘检测算子,广泛应用于图像处理和计算机视觉领域。以下是关于Sobel算子的详细介绍: 基本原理 Sobel算子…

【算法设计与分析】实验5:贪心算法—装载及背包问题

目录 一、实验目的 二、实验环境 三、实验内容 四、核心代码 五、记录与处理 六、思考与总结 七、完整报告和成果文件提取链接 一、实验目的 掌握贪心算法求解问题的思想;针对不同问题,会利用贪心算法进行问题建模、求解以及时间复杂度分析&#x…

MySQL为什么默认引擎是InnoDB ?

大家好,我是锋哥。今天分享关于【MySQL为什么默认引擎是InnoDB ?】面试题。希望对大家有帮助; MySQL为什么默认引擎是InnoDB ? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 默认引擎是 InnoDB,主要…

【AIGC专栏】AI在自然语言中的应用场景

ChatGPT出来以后,突然间整个世界都非常的为之一惊。很多人大喊AI即将读懂人类,虽然这是一句夸大其词的话,但是经过未来几十年的迭代,ChatGPT会变成什么样我们还真的很难说。在当前生成式内容来说,ChatGPT毫无疑问在当前…

docker安装nacos2.2.4详解(含:nacos容器启动参数、环境变量、常见问题整理)

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull nacos:2.2.4 2、离线包下载 两种方式: 方式一: -)在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -)导出 # 导出镜像到…

使用 postman 测试思源笔记接口

思源笔记 API 权鉴 官方文档-中文:https://github.com/siyuan-note/siyuan/blob/master/API_zh_CN.md 权鉴相关介绍截图: 对应的xxx,在软件中查看 如上图:在每次发送 API 请求时,需要在 Header 中添加 以下键值对&a…

51单片机开发——I2C通信接口

I2C是微电子通信控制领域广泛采用的一种总线标准。 起始和停止信号: void iic_start(void) {IIC_SDA1;//如果把该条语句放在SCL后面,第二次读写会出现问题delay_10us(1);IIC_SCL1;delay_10us(1);IIC_SDA0; //当SCL为高电平时,SDA由高变为低d…

【网络】3.HTTP(讲解HTTP协议和写HTTP服务)

目录 1 认识URL1.1 URI的格式 2 HTTP协议2.1 请求报文2.2 响应报文 3 模拟HTTP3.1 Socket.hpp3.2 HttpServer.hpp3.2.1 start()3.2.2 ThreadRun()3.2.3 HandlerHttp() 总结 1 认识URL 什么是URI? URI 是 Uniform Resource Identifier的缩写&…

优雅管理Python2 and python3

python2 和 python3, 由于没有像其他软件的向下兼容,必须同时安装Python2 和Python3 ,介绍在linux和windows下优雅管理。 一、linux中安装Python2和Python3 linux 中用conda 创建虚拟环境,来管理不同版版工具 由于主流使用Python3…

Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

大模型本地化部署(Ollama + Open-WebUI)

文章目录 环境准备下载Ollama模型下载下载Open-WebUI 本地化部署的Web图形化界面本地模型联网查询安装 Docker安装 SearXNG本地模型联网查询 环境准备 下载Ollama 下载地址:Ollama网址 安装完成后,命令行里执行命令 ollama -v查看是否安装成功。安装成…

【Linux系统】进程间通信:共享内存

认识共享内存 通过 一些系统调用,在物理内存中开辟一块空间,然后将该空间的起始地址,通过页表映射到两个进程的虚拟地址空间的共享区中,这样不就共享了一块空间吗!!! 这种技术就是共享内存&am…

渗透测试之WAF组合条件绕过方式手法详解以及SQL注入参数污染绕过

目录 组合绕过waf ​先看一些语句 绕过方式 我给出的注入语句是: 这里要注意的几点是: 组合绕过方式 完整过狗注入语句集合 http请求分块传输方法 其它方式绕过 http参数污染绕过waf 面试题:如何参数污染绕过waf 可以通过http参数污染绕过wa…

oracl:多表查询>>表连接[内连接,外连接,交叉连接,自连接,自然连接,等值连接和不等值连接]

SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。 sql分类: 数据查询语言(DQL - Data Query Language) 查询的关键词 select 多表查询>>表连接 表连接: 把2个…