项目介绍
自从树莓派发布Pico后,被这个小东西惊艳到了,这次乘着电子森林的活动正好参与一波,既可以”白嫖“板子又可以玩到新玩意,活动超级nice。树莓派Pico的定位就是简单易用,这次我就选择了环境监测主题,使用MicroPython作为开发语言,实现简易的温度测量,顺便使用优惠券体验了捷配的免费打板PCB。
项目用到的板卡、芯片、模块、仪器、设备等介绍
使用树莓派Pico读取美信公司的单总线温度传感器DS18B20,数据通过i2c接口0.96英寸的oled12864显示,使用ADI公司的ADP7118AUJZ-5.0-R7将9V叠层电池转换为5V给系统供电。
DS18B20的官方网站如下:
https://www.maximintegrated.com/en/products/sensors/DS18B20.html
DS18B20是分辨率可编程设置的1-Wire数字温度计,通过最少的连线实现高精度温度测量,理想用于多传感器测量系统。应用电路如下:数据线需要上拉4.7K电阻。
ADP7118AUJZ-5.0-R7的官方网站如下:
https://www.analog.com/cn/products/adp7118.html#product-overview
ADP7118是一款CMOS、低压差(LDO)线性稳压器,工作电压范围为2.7 V至20 V,最大输出电流为200 mA。这款高输入电压LDO适用于调节工作范围为1.2 V至20 V的高性能模拟和混合信号电路。该器件采用先进的专有架构,提供高电源抑制、低噪声特性,仅需一个2.2 μF小型陶瓷型输出电容,便可实现出色的线路与负载瞬态响应性能。ADP7118稳压器输出噪声为11 μVrms,与5 V及以下的固定选项输出电压无关。
应用电路如下,使用十分简单,外部仅需两颗电容:
项目中遇到的问题以及解决方案
- 一开始打算用VSCode开发树莓派Pico,没折腾出来,只好使用Thonny这个IDE。
- MicroPython原生不带oled12864驱动库,只好在github上搜索了, 然后还要把这个库安装到树莓派Pico里面,将下载的库文件夹lib放到电脑桌面,并在Thonny文件栏PC目录找到lib文件夹,右键上载到树莓派Pico,完成后可以在树莓派Pico的目录下看到lib文件夹。
上载成功后:
- 开始SCL和SDA引脚选择为GP0和GP1引脚,Thonny一直提示报错,找半天发现是树莓派Pico与电脑连接时,GP0和GP1复用为与电脑终端交互的串口UART0了,改为GP4和GP5就正常了。
关键性代码及说明
import ssd1306py as lcd
import machine, onewire, ds18x20, time
ds_pin=machine.Pin(6)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
print('Found DS devices: ', roms)
lcd.init_i2c(5,4, 128, 64, 0)
lcd.text('fastbond', 32, 0, 16)
lcd.text('digkey & eetree', 0, 20, 16)
lcd.show()
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
temp=ds_sensor.read_temp(rom)
print(temp)
lcd.text('T:'+str(temp), 0, 40, 24)
lcd.show()
time.sleep(1)
MicroPython语法十分简洁,实现这样的功能换成C语言代码行数要远高于MicroPython。
功能演示结果及说明
原理图如下:
oeld12864连接到树莓派Pico的I2C接口,DS18B20连接到树莓派Pico的GP6。散件这个样子:
焊接好上电效果:
对本活动的心得体会
FastBond这个活动很赞,自由发挥度很大,既玩到了新鲜板子又学到了新知识,活动群也很活跃,感谢活动主办方。