[toc]
前言 毕业前大半年,我收到要设计毕业设计的消息之后,我选了一个最最最作死的毕业设计——基于RFID的图书借还系统
,因为我是网工,只会网络和运维,可能还会些安服、安技的知识。但让我当开发去开发一个项目还是对我来说很困难的,现在,毕业设计如同一把达摩利斯之剑
悬浮在我的头顶,也是我悲催的开始。
毕业设计里面需要的RFID,我当时考虑的时候就是找个RFID传感器就解决问题了,但很不幸!我树莓派4b的spi找不到RC522的传感器,所以没办法正常调用。我就买了创乐博的CreatePi v2.0
,这玩意巨tm贵,花费我600大洋,买回来我就开始RFID的使用,刚开始的组装、刷系统、点亮等前戏
还真别说,确实是有模有样!但到了RFID这里就出问题了,他们用的方案也是RC522,也就奠定了我失败!我的树莓派4B的系统硬件版本是1.4
1 2 dmesg | grep Rev [ 0.000000] Machine model: Raspberry Pi 4 Model B Rev 1.4
因为没办法正常使用RFID我直接和客服联系,他们说可能RFID损坏,我寄回去!寄回去他们检修一段时间后回答我说,板子没有任何问题!这就离了个谱了。没办法正常使用RFID模块,用的是他们提供的东西,除了树莓派4B是我的。和客服扯了一堆有的没的,居然说我的树莓派有问题,没有用他们买的,当时他们给我的方案就是重新购买他们的树莓派4B,我当时那个气呀!树莓派就发行了两个版本硬件结构出现变化
,一个是19年第一版树莓派4B有电源不识别的bug,后面发行的电路结构没有任何变化。客服那边说他们那边曾经有过这个问题就是系统硬件版本
的问题,只有1.5
和1.2
的系统版本可以,而他们卖的配套树莓派则全是1.5
系统硬件版本的。
这个东西真的很神奇,我在官网查找资料,很少有人提及到这些东西,但是我查到了个东西,那就是树莓派的系统硬件版本销售
网址在这里
我总结一下,就是树莓派4B有1.2、1.4和目前(2023年)1.5的,而版本1.3的没有流入市场,然后1.1==1.2
,这个就很nice了!要知道我树莓派有很多啊!400、4B、5、pico、picoW
等,刚好树莓派400的系统硬件版本是1.1的。我马上就让客服给我把板子寄回来,我使用树莓派400做RFID实验!果然成功了。
你以为就这么简单!其实我和客服ob大战了一个多小时!从rpi-eeprom 打到Rev
,刚开始我还以为我记错了,后面摆事实讲道理和技术客服聊,而客服的语言并不专业,让我在rpi-eeprom版本 和linux内核版本
之间疯狂来回跳,最后我想到他说的可能是Rev
。我让给他敲了命令给我看他的板子。。。果然!真是无语,上面那个图其实就是我ob完最后的挣扎,事实已定,我无力反抗。
1.LED模块实验 实验直接使用了物理pin的针脚顺序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/usr/bin/python3 # -*- coding: utf-8 -*- # 文件名:blinking_led.py # 版本: # author: # 说明:LED灯显示实验 #导入GPIO库 import RPi.GPIO as GPIO #从time模块导入sleep函数 from time import sleep # 定义 LED 引脚 makerobo_led_pin = 37 #暂时忽略警告 GPIO.setwarnings(False) # 使用实际的PIN管脚编码 GPIO.setmode(GPIO.BOARD) # 将LED引脚设置为输出引脚,并将初始值设置为低(关闭) GPIO.setup(makerobo_led_pin, GPIO.OUT, initial=GPIO.LOW) # 程序入口 if __name__ == "__main__": try: while True: # 无限循环 GPIO.output(makerobo_led_pin, GPIO.HIGH) # 打开 sleep(0.5) # 延时1s GPIO.output(makerobo_led_pin, GPIO.LOW) # 关闭 sleep(0.5) # 延时1s except KeyboardInterrupt: # 按下 CTRL+C 键, 清除并退出脚本 GPIO.cleanup()
2.有源蜂鸣器传感实验 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/usr/bin/python # -*- coding: utf-8 -*- # 文件名:buzzer.py # 版本: # author: # 说明:有源蜂鸣器 # 导入树莓Pi GPIO库 import RPi.GPIO as GPIO # 从time模块导入sleep函数 from time import sleep # 暂时忽略警告 GPIO.setwarnings(False) # 使用实际的PIN管脚编码 GPIO.setmode(GPIO.BOARD) # 设置蜂鸣器-引脚12作为输出 makerobo_buzzer=12 # 将蜂鸣器引脚设置为输出引脚,并将初始值设置为LOW(关闭) GPIO.setup(makerobo_buzzer, GPIO.OUT, initial=GPIO.LOW) # 程序入口 if __name__ == "__main__": try: while True: GPIO.output(makerobo_buzzer,GPIO.HIGH) print ("Beep") sleep(0.5) # 延时0.5s GPIO.output(makerobo_buzzer,GPIO.LOW) print ("No Beep") sleep(0.5) except KeyboardInterrupt: # 按下 CTRL+C 键, 清除并退出脚本 GPIO.cleanup()
3.按键组模块实验 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #!/usr/bin/python3 # -*- coding: utf-8 -*- # 文件名:button_buzzer.py # 版本: # author: # 说明:按下(key3:37)按键,触发蜂鸣器, # 也可以使用其他按键:key1:22,key2:33,key3:37,key4:35 # 导入树莓Pi GPIO库 import RPi.GPIO as GPIO # 从time模块导入sleep函数 from time import sleep # 配置按钮和蜂鸣器引脚 makerobo_button_pin = 37 # 按键 makerobo_buzzer_pin = 12 # 蜂鸣器 # 暂时忽略警告 GPIO.setwarnings(False) # 使用实际的PIN管脚编码 GPIO.setmode(GPIO.BOARD) # 设置按钮引脚按键管脚为高电平输入和蜂鸣器引脚作为输出 # GPIO.PUD_UP表示启用上拉电阻,这意味着当按钮没有被按下时,引脚被拉高到逻辑高电平 GPIO.setup(makerobo_button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # 将蜂鸣器引脚设置为输出引脚,并将初始值设置为LOW(关闭) GPIO.setup(makerobo_buzzer_pin, GPIO.OUT,initial=GPIO.LOW) # 程序入口 if __name__ == "__main__": try: while True: # 检查按键是否按下 if(GPIO.input(makerobo_button_pin) ==0): sleep(0.1) # 延时10ms if(GPIO.input(makerobo_button_pin) ==0): # 打开蜂鸣器 GPIO.output(makerobo_buzzer_pin, GPIO.HIGH) else: # 没有按键按下, 关闭蜂鸣器 GPIO.output(makerobo_buzzer_pin, GPIO.LOW) except KeyboardInterrupt: GPIO.cleanup() # 清空GPIO
博客没有设计声音播放,所以我直接把蜂鸣器换成LED
4.继电器实验 我还年轻,还不想死这么快!!!
5.振动小马达模块实验 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #!/usr/bin/python3 # -*- coding: utf-8 -*- # 文件名:vibration.py # 版本: # author: # 说明:在做这个项目的时候,要把指拨开关(BUTTON:UX2)的第1位拨到ON上, # 做完实验之后,记得拨下来 # 导入树莓Pi GPIO库 import RPi.GPIO as GPIO # 从time模块导入sleep函数 from time import sleep # 定义振动传感器管脚 makerobo_vibration_pin = 13 # 暂时忽略警告 GPIO.setwarnings(False) # 将board模式设置为GPIO.BOARD GPIO.setmode(GPIO.BOARD) # 设置振动管脚为输出模式,并将初始值设置为LOW(关闭) GPIO.setup(makerobo_vibration_pin, GPIO.OUT,initial=GPIO.LOW) # 程序入口 if __name__ == "__main__": try: # 打开振动传感器 GPIO.output(makerobo_vibration_pin, GPIO.HIGH) # 等待2S时间 sleep(2) # 关闭震动传感器 GPIO.output(makerobo_vibration_pin, GPIO.LOW) except KeyboardInterrupt: GPIO.cleanup() # 清空GPIO
6.声音传感器实验 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #!/usr/bin/python3 # -*- coding: utf-8 -*- # 文件名:sound.py # 版本: # author: # 说明:在做这个项目的时候,要把指拨开关(BUTTON:UX3)的第6位拨到ON上, # 做完实验之后,记得拨下来 # 可以扭那个电阻调节灵敏度,向左灵敏,向右不灵敏 # 导入树莓Pi GPIO库 import RPi.GPIO as GPIO # 从time模块导入sleep函数 from time import sleep # 定义声音传感器端口 makerobo_sound_pin = 18 # 暂时忽略警告 GPIO.setwarnings(False) # 使用实际的PIN管脚编码 GPIO.setmode(GPIO.BOARD) # 设置为输入脚,并设置为上拉为高电平(3.3V) GPIO.setup(makerobo_sound_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # 程序入口 if __name__ == "__main__": try: while True: # 检查是否检测到声音 if(GPIO.input(makerobo_sound_pin)==GPIO.LOW): print('Makerobo Sound Detected!') sleep(0.1) else: print('Makerobo No Sound Detected!') sleep(0.1) except KeyboardInterrupt: # 检测到CTRL+C,清除并退出脚本 GPIO.cleanup()
不是很灵敏就是了