你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

操纵杆+ Arduino =RPi收音机的前端

[复制链接]
点点&木木 发布时间:2018-12-13 14:24
操纵杆和STM32duino通过串行控制台控制RPi AIY板,Arduino破译了MPC的回应来显示歌曲艺术家和标题。
10-1.jpg
项目中使用的东西
硬件组件
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。
10-2.jpg
分配给操纵杆的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的连接。外部连接如下图所示:
10-3.jpg
原型
//------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标识如下:
10-4.jpg
RXD和TXD在AIY板上
Maple Mini (pinout26) tx1连接到aiyrxd上,而MM (pinout25)上的rx1连接到aiytxd上。当然,您需要确保Gnd在两块板之间正确连接——不要依赖USB屏蔽,它为RPi和Maple Mini之间提供电源。
在这个链接上可以找到Maple Mini(和类似的)信息。
10-5.jpg
串行连接使用在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。下面是顶部的显示:
10-6.jpg
谷歌AIY Sound HAT在RPi Zero_W上运行
代码
Maple Mini (STM32) Arduino源代码编解码器/ c++
将所有文件解压到名为“RPI_MPC_Control_JOYST”的目录--- RPI_MPC_Control_JOYST.zip (14.12 KB, 下载次数: 1)
收藏 评论0 发布时间:2018-12-13 14:24

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版