【得捷电子Follow me第1期】 pc状态显示和音量控制器
[复制链接]
内容一:
6月26日(2)
内容二:总结报告
1.项目描述
follow me第1期使用的是pico w 开发板,使用该板可以方便的使用python进行功能开发.板载wifi模块,给python赋予了便捷联网的能力.
pc的状态显示和音量控制通过需要两部操作,在听歌,或者看视频时调节间量需要调出控制面板,使用不便.
本次follow me我的自选硬件是一个电位器,使用它可以方便得传入一个连续变化的设置值.使用该功能可以将电位器值与pc的音量值对应起来,实现通过旋钮控制pc音量的功能,同时使用板子自带的显示屏幕还可以显示当前cpu占用率,cpu温度等信息
2. 各功能对应的主要代码片段及说明
pc端
PC端设置一个server,监听1004端口,当收到来自以太网的消息时,调用applescript控制系统音量,使用python的socket 模块实现网络监听功能.创建socket对象s,绑定IP地址和端口,IP地址设置为0.0.0.0,端口设置为1004.然后开启监听,当收到消息后,创建一个子线程,处理收到的数据, 解析了音量数据后调用applescript的python模块,设置系统音量.
pico端:
获取电位器位置,电位器接在A0口上,使用mircropython的machine库中的ADC可以读取电位器数值.实测读到的电位器数值 从100到65536.由于音量值范围为(0~100),需要对数据进行重映射,考虑电位器与真实间量的方向相反,所以 使用100 减去重映射的值,得到音量值.
发送电位器数据,同样使用socket 库,创建一个socket,连接PC的ip,这里IP地址是192.168.1.3
发送0~100的音量大小数据,使用str()将大小值转换为字符串,使用sendall方法发送,每次发送完成后关闭连接
实际使用中发现如果pico以过高的频率发送数据,会报内存不够的错误,怀疑是旧连接的内存资源未释放导致,所以设计了一个超时机制,即每次发送完数据都会等待0.5s,同时会对当前的设置进行判断,如果与上次的值 没有变化测不需要 发送,具体逻辑如下:
3. 功能展示及说明
旋转电位器后,在mu端可以看到音量设置值的变化
音量数据通过以太网发送到PC端,可以看到PC上server收到设置数据 后打印出的收到的数据:
PC端的音量跟随电位器旋钮的值发生了变化
4. 对本活动的心得体会
follow me活动立意不错,有人引导,同时还有专门的讲解,相对于一般的竞赛或者开发板测评活动,参与性更高一些,同时,参与人员有一定的自由度,几乎是在游戏中体会到学习的乐趣,祝愿followme活动一直能办下去,越办越好.
建议:对于活动的参与要求与提交要求感觉有两自两个不同方向的想法,并未完全做到统一,未来的follow me活动中希望能一以贯之,活动是如何计划的确认了就不再改变.
5.代码
https://bbs.eeworld.com.cn/thread-1245388-1-1.html
https://bbs.eeworld.com.cn/thread-1245396-1-1.html
https://bbs.eeworld.com.cn/thread-1245414-1-1.html
|