V 社的各位大佬,小弟来咨询下,我要做一个硬件,esp32 和 stm32 该怎么选。
产品大致功能: 1.控制马达(马达有几根线,控制马达的电压即可控制马达的转速)。 2.检测硬件的温度。 3.需要接显示屏显示一些东西。 4.检测硬件是否被移动。 5.硬件上只带有一个开关机的物理按键,基本上所有的控制功能(控制马达的转速...)、硬件的数据都要通过蓝牙传给 app 。
其他需求: 目前对硬件知识了解不多,属于小白,但是需要在 3 个月左右的时间内和 app 联调好,做出一个基本的样品,需要考虑学习成本!
本人是做 app 开发的,对硬件不太了解,谢谢各位大佬!!!
1
FranzKafka95 236 天前 via Android
物联网的场景推荐 ESP32
|
2
vileer 236 天前 via iPhone
你要蓝牙那肯定是 esp32 啊,低端的 stm32 没有蓝牙,你说的这些需求 esp32 都难实现
|
3
liqinliqin 236 天前
|
4
liqinliqin 236 天前
#include <Arduino.h>
#include <BLEDevice.h> #include <BLEServer.h> #include <BLEUtils.h> #include <BLE2902.h> // 定义 BLE 服务、特征和 UUID BLEServer* pServer; BLEService* pService; BLECharacteristic* pCharacteristic; // 定义马达控制参数 const int motorPin = 12; // 马达控制引脚 int motorSpeed = 0; // 马达转速 // 定义温度传感器引脚 const int tempSensorPin = 34; // 温度传感器引脚 // 定义运动检测参数 const int motionSensorPin = 35; // 运动传感器引脚 int motionDetected = 0; // 运动检测结果 // 定义开关机按键参数 const int powerButtonPin = 27; // 开关机按键引脚 bool powerState = false; // 开关机状态 // 定义 BLE 特征的 UUID #define CHARACTERISTIC_UUID "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" // 回调函数,当有 BLE 中心设备连接或断开连接时调用 class MyServerCallbacks: public BLEServerCallbacks { void onConnect(BLEServer* pServer) { Serial.println("BLE 设备已连接"); }; void onDisconnect(BLEServer* pServer) { Serial.println("BLE 设备已断开连接"); } }; // 初始化 BLE 服务 void initBLE() { BLEDevice::init("ESP32_BLE_Server"); pServer = BLEDevice::createServer(); pServer->setCallbacks(new MyServerCallbacks()); pService = pServer->createService(BLEUUID((uint16_t)0x180F)); pCharacteristic = pService->createCharacteristic( BLEUUID((uint16_t)0x2A19), BLECharacteristic::PROPERTY_READ ); pCharacteristic->setValue(0); // 初始化特征值为 0 pService->start(); BLEAdvertising* pAdvertising = pServer->getAdvertising(); pAdvertising->start(); } // 初始化硬件 void setup() { Serial.begin(115200); initBLE(); pinMode(motorPin, OUTPUT); pinMode(tempSensorPin, INPUT); pinMode(motionSensorPin, INPUT); pinMode(powerButtonPin, INPUT_PULLUP); } // 主循环 void loop() { // 读取温度传感器数据 float temperature = analogRead(tempSensorPin) * 3.3 / 4095 * 100; // 假设温度传感器为模拟传感器,实际情况请根据传感器类型调整 // 检测运动传感器 motionDetected = digitalRead(motionSensorPin); // 检测开关机按键状态 if (digitalRead(powerButtonPin) == LOW) { powerState = !powerState; // 切换开关机状态 } // 发送数据到 BLE 中心设备 pCharacteristic->setValue(temperature); // 将温度值写入 BLE 特征 pCharacteristic->notify(); delay(1000); // 等待 1 秒钟 } |
5
liqinliqin 236 天前
这段代码实现了以下功能:
控制马达的转速,可以通过 motorSpeed 变量设置马达的转速。 检测温度传感器的数据,通过 tempSensorPin 引脚读取温度传感器的值。 通过 BLE 服务将温度数据发送给 BLE 中心设备。 检测运动传感器的状态,通过 motionSensorPin 引脚读取运动传感器的状态。 监测开关机按键状态,通过 powerButtonPin 引脚检测开关机按键的状态,并通过 BLE 服务将开关机状态发送给 BLE 中心设备。 |
6
liqinliqin 236 天前
APP+硬件原型周期一上午可以完成
|
7
taxze OP @liqinliqin nb 啊大哥
|
8
leon2023 236 天前
既然要蓝牙,那必须 esp32 了,主要是 flash 超大,一般都是 4MB,不像 stm32,一般几十 K 到 1,2 百 k 。再加上 esp32 集成 wifi 和蓝牙,stm32 要外接,esp32 如果用 arduino 开发,有 many many 的现成库可以用,上手容易
|
9
amwyyyy 235 天前
esp32 好上手
|