回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【ReMake】microbit 物联网收音机 简单

头像 Hockel 2021.03.07 1131 2
project-image

步骤1 作品背景

对于60年代70年代的人来说:收音机应该再熟悉不过了吧。它陪伴了那一代人度过了一段美好的时光,承载着温馨的回忆。但是随着科技的发展,我们开始有了电视、DVD、MP3、智能手机,我们获取音乐的方式不在只有收音机了。收音机也就淡出了我们的视线。这次ReMake活动真好是一个契机,那就让我们来一起ReMake一个microbit物联网收音机吧!

project-image

材料清单

步骤2 制作步骤

1、用fusion360设计出收音机外形。

project-image

2.用3D打印机打印出模型

project-image
project-image

3、准备好收音机所需的材料

project-image

4、硬件连接

project-image

5、开始组装

project-image
project-image
project-image

步骤3 手机app界面设计

①先打开App Inventor WxBit 汉化增强版,对我们的手机界面进行设计

project-image

对页面上的组件进行逻辑设计,主要用到了组件面板中通信连接下MQTT客户端组件来实现连接到EasyIOT物联网平台。进而实现消息的发送。

project-image
project-image

步骤4 程序设计

加载我写的FM收音机,具体使用方法参考我写的另一篇文章【mind+ 用户库】FM收音机模块

具体程序如下:

project-image
代码
#include "RDA5807M.h"
#include <Microbit_Obloq.h>
#include <SoftwareSerial.h>
#include <Microbit_Matrix.h>
#include <DFRobot_NeoPixel.h>

// 动态变量
String mind_s_msg;
// 函数声明
void obloqMqttEventT0(String& message);
void buttonACallback();
void buttonBCallback();
// 静态常量
const String topics[5] = {"Dyn-AiKMg","","","",""};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
// 创建对象
Microbit_Obloq   olq;
SoftwareSerial   softSerial(0, 1);
DFRobot_NeoPixel neoPixel_2;
RDA5807M         radio;


// 主程序开始
void setup() {
	olq.registerMqttHandle(msgHandles);
	dfrobotRandomSeed();
	radio.begin(RDA5807M_BAND_WEST);
	onEvent(ID_BUTTON_A, PRESS, buttonACallback);
	onEvent(ID_BUTTON_B, PRESS, buttonBCallback);
	softSerial.begin(9600);
  olq.startConnect(&softSerial, "Erised", "yiruosi88", "uqtPhtNGg", "XqtE2tNMRz", topics, "iot.dfrobot.com.cn", 1883);
	neoPixel_2.begin(2, 8);
	neoPixel_2.setBrightness(255);
	neoPixel_2.showRainbow(0, 7, 1, 360);
}
void loop() {

}

// 事件回调函数
void obloqMqttEventT0(String& message) {
	mind_s_msg = message;
	if ((mind_s_msg=="1")) {
		neoPixel_2.showRainbow(0, 7, 1, (random(200, 360+1)));
		radio.seekUp(1);
		MMatrix.print(radio.getFrequency());
	}
	else if ((mind_s_msg=="2")) {
		neoPixel_2.showRainbow(0, 7, 1, (random(200, 360+1)));
		radio.seekDown(1);
		MMatrix.print(radio.getFrequency());
	}
	else if ((mind_s_msg=="3")) {
		radio.volumeUp();
	}
	else if ((mind_s_msg=="4")) {
		radio.volumeDown();
	}
	else {
		radio.setFrequency((String(message).toInt()) );
		MMatrix.print(radio.getFrequency());
	}
}
void buttonACallback() {
	neoPixel_2.showRainbow(0, 7, 1, (random(200, 360+1)));
	radio.seekUp(1);
	MMatrix.print(radio.getFrequency());
}
void buttonBCallback() {
	neoPixel_2.showRainbow(0, 7, 1, (random(200, 360+1)));
	radio.seekDown(1);
	MMatrix.print(radio.getFrequency());
}

步骤5 视频演示

评论

user-avatar
  • HF-CGH

    HF-CGH2021.08.21

    有意思呀

    0
    • WSY

      WSY2021.03.16

      这个好玩!

      0