|
操纵杆和STM32duino通过串行控制台控制RPi AIY板,Arduino破译了MPC的回应来显示歌曲艺术家和标题。
项目中使用的东西 硬件组件 Maple Mini STM32开发板 ×1 模操纵杆 ×1 具体使用:http://www.ebay.com/itm/joystick-breakoutmodu-sensor-- forrobot-arduino - un-2560r3-stm32 /253072856495?epid=2153005083 软件应用和在线服务 STM32duino Arduino核心 介绍 Victor Van Hee讲述了如何将RPi和谷歌AIY板转换成网络电台流媒体的故事:这里是Hackster。
分配给操纵杆的5种模式 这个项目以Victor的配置为基础,使用Arduino STM32、Nokia 5110 LCD和一个普通的操纵杆,在115200波特的默认串行控制台上使用串行通信操作Raspberry Pi项目。使用MPC命令,STM32Arduino可以改变电台、改变音量,并对RPi进行静音。演示代码提供了10个存储的收藏站点,但是这个列表可以扩展到包含更多的收藏站点。 当RPi上的MPC被指示更改通道时,程序将输出各种信息行到串行控制台(通过AIY板上公开的串行端口)。在这个冗长的响应序列流中是歌曲艺术家和歌曲的名称。Arduino软件将识别并捕获歌手的名字和歌曲的标题,分析数据并显示在诺基亚的小屏幕上——屏幕上的更新发生在5秒的程序间隔,以说明正在播放的新歌。 警告 Arduino源代码经过完整的注释,希望足够简单,以便中级Arduino程序员能够自信地根据需要进行修改。虽然我认为代码不复杂,但这最好不是一个新手项目,因为它涉及到进入RPi的SD卡并根据Victor的文章进行一些编辑。事先警告冲动的读者。 请注意 测试表明,实际上没有必要安装和启用谷歌的云平台GCP。这意味着您只需要开始从AIY下载映像,并对Raspberry OS进行修改以启用AIY板。简而言之,这意味着不需要为ID注册谷歌。如果你已经这样做了,并使用了你的AIY卡,没有问题,因为MPD/MPC将会工作。当然,缺点是您无法完全利用Victor Van Hee所描述的GCP来语音激活MPC。无论哪种方式,您都绝对需要编辑/etc/mpd.conf,就像Victor展示的那样-在Victor的指导下停止: sudo systemctlstart mpd sudo systemctlenable mpd 警告 在此构建中,Arduino无需登录即可完全控制串行控制台。如果这让你觉得不舒服,那么就到此为止,因为这个项目不适合你。(当然,您可以向Arduino草图中添加代码来登录,但是您只能靠自己。我在Haskter上还有一个项目。我来示范如何做。) 为自动登录配置RPi串行控制台 这里提供说明:http://www.anavi.org/article/216/注意这里显示了一个更复杂的方法,但是我在这个过程中遇到了困难。您还应该在RPi配置中启用串行控制台: sudo raspi-config 启动选项,B1桌面/ CLI, B2控制台自动登录 连接 源代码中有类似arduino的连接。外部连接如下图所示:
原型 //------MapleMini----/Notes---------------------/-Nokia- #definePIN_SCE 7 // CE (ActiveHigh) pin 2 #definePIN_RESET 6 // Reset (Active Lo) pin 1 #definePIN_DC 5 // Data==1Command==0 pin 3 #definePIN_SDIN 4 // MOSI/DIN pin 4 #definePIN_SCLK 3 //CLK/clock pin 5 #definePinInX PA1 // Analog Xfrom JoyStick "H" #definePinInY PA0 // Analog Yfrom JoyStick "V" #defineJoyButton PC15 // JoyStick click-down button"key" 您需要将Arduino电源接地和串行连接到AIY板。SPI连接器上有3.3V和Gnd。RxD和TxD标识如下:
RXD和TXD在AIY板上 Maple Mini (pinout26) tx1连接到aiyrxd上,而MM (pinout25)上的rx1连接到aiytxd上。当然,您需要确保Gnd在两块板之间正确连接——不要依赖USB屏蔽,它为RPi和Maple Mini之间提供电源。 在这个链接上可以找到Maple Mini(和类似的)信息。
串行连接使用在STM32 Maple Mini 源代码Walk-Thru 这是一个Arduino多标签项目,这意味着有多个标签。ino文件和所有文件必须在同一个目录中。这里只使用了一个外部代码片段:http://arduiniana.org/libraries/streaming/ 此实现的基本前提是将串行命令传递到Linux串行控制台。在软件中,这个字符串序列被分解为序言、命令字符串和后序。例如: const char* msg0[] = {"mpc clear;mpc add http://"}; // prefix const char* msg1[] = {";mpc play;sleep 1;mpc play"}; // suffix 命令字符串表示Internet URL +端口号,如下图所示: const char* msg3[] = {"206.190.136.212:7744"}; // Classic Hits JFRC Mikal Hart的流媒体库并不是必需的,但它可以让我们轻松地将输出重定向到串行和LCD,从而为编码(<<)增加一些方便,如下面的代码片段所示: void ChannelChanger(int chnl) { Serial1 << msg0[0]; // prefix switch (chnl) { case 1: Serial1 << msg2[0]; break; case 2: Serial1 << msg3[0]; break; case 3: Serial1 << msg4[0]; break; 多标签Arduino项目的众多优点之一是能够轻松组织软件草图。当正确完成时,Arduino将组合多个构建系统。编译前的ino文件和Arduino的所有优点(如自动功能原型)都将按预期工作。生成的代码非常、非常容易理解: void loop(void) { IsMute(); AdjustVolume(); ChangeChannel(); SerialInput(); ForceUpdate(); } 我们的程序循环只是重复调用五(5)个函数。 扩展存储通道的数量 扩展数组中存储的通道数量相当简单。目前存储的示例有10个,编号用变量表示: unsigned int Channels = 10; // How many channels are stored? 当前数组中的最后一个通道为: const char* msg11[] = {"50.7.129.122:8433"}; // Flower Power Radio - Far Out And Groovy Tunes From The 50's 60's &70's const char* msg12[] = {""}; const char* msg13[] = {""}; const char* msg14[] = {""}; const char* msg15[] = {""}; const char* msg16[] = {""}; const char* msg17[] = {""}; const char* msg18[] = {""}; const char* msg19[] = {""}; const char* msg20[] = {""}; msg11元素。因此,要添加一个新站点,只需将IP:port放入msg[12],并将频道从10改为11。编辑函数channelconverter来扩展case逻辑。重新编译并上传到Maple Mini。 更多笔记 通过谷歌可以找到许多与Interent无线电台的链接。我发现向RPi打开SSH会话以使用MPC测试这些不同的站点是很有帮助的,注意到我更喜欢在代码中包含的站点。 在激活之前,操纵杆将会延迟0。5秒的延迟和1 + / - 5(约12%)的死区。这两个值都可以更改以适合个人。这是通过操纵杆函数硬编码的。例如: boolean AdjustVolume( void ) { if( Joystick_X() > previousX + 5 ) { Serial1 << msg24[0] << endl; delay(500); } else if (Joystick_X() < previousX - 5 ) { Serial1 << msg25[0] << endl; delay(500); } return true; } 在RPi重新启动之后,Arduino可能需要长达30秒的时间才能通过MPC并初始化获得音频会话。 总结 我希望你喜欢我的网络电台操纵杆控制。整个“操纵杆”的出现是因为我使用SSH大约一年了,用于更改RPi/AIYInternet播放器上的站点。我的妻子对这个项目发表了评论,她想知道为什么她不能像在汽车上那样使用播放器:只有她最喜欢的播放器才会被保存在预置和音量设置中。结果得到了应用。我相信这个操纵杆的实现很可能是很多未来项目的基础,这实现起来非常简单。 像往常一样,玩得开心, 雷 使用RPi Zero_W怎么样? 补充:2018.11.12 在测试中似乎工作正常。我在RPi 3B上配置了所有东西,然后切换了mini-SD。下面是顶部的显示:
谷歌AIY Sound HAT在RPi Zero_W上运行 代码 Maple Mini (STM32) Arduino源代码编解码器/ c++ 将所有文件解压到名为“RPI_MPC_Control_JOYST”的目录---
RPI_MPC_Control_JOYST.zip
(14.12 KB, 下载次数: 1)
|
微信公众号
手机版