当前位置:网站首页>Esp32c3 based on the example tutorial of esp32 Rainmaker development under Arduino framework
Esp32c3 based on the example tutorial of esp32 Rainmaker development under Arduino framework
2022-07-25 11:11:00 【perseverance52】
ESP32C3 be based on Arduino Under the framework of ESP32 RainMaker Develop sample tutorials
ESP RainMaker
ESP RainMaker It is an end-to-end platform launched by Lexin . Based on this platform , Users do not need to manage infrastructure , You can directly use Lexin ESP32-S2 SoC Quickly realize the ideas and ideas of the Internet of things .
- Lexin official ESP RainMaker Introduce :https://www.espressif.com.cn/zh-hans/news/ESP-RainMaker
Currently through examples , Burn the program to ESP32C3 On , Only connect to the device via Bluetooth , In the process of accessing the network , Always make mistakes , The code may need to be improved .
esp-rainmaker- be based on android Version of APP App download address

This Android based mobile terminal APP, In every university APP The application market is really hard to find , It's also better to provide through the official website github eureka .
Release v2.3.0
- https://github.com/espressif/esp-rainmaker-android/releases

- Other versions :https://github.com/espressif/esp-rainmaker/wiki
Sample code
//This example demonstrates the ESP RainMaker with a standard Switch device.
#include "RMaker.h"
#include "WiFi.h"
#include "WiFiProv.h"
#define DEFAULT_POWER_MODE true
const char *service_name = "PROV_1234";
const char *pop = "abcd1234";
//GPIO for push button
#if CONFIG_IDF_TARGET_ESP32C3
static int gpio_0 = 9;
static int gpio_switch = 7;
#else
//GPIO for virtual device
static int gpio_0 = 0;
static int gpio_switch = 16;
#endif
/* Variable for reading pin status*/
bool switch_state = true;
//The framework provides some standard device types like switch, lightbulb, fan, temperaturesensor.
static Switch my_switch("Switch", &gpio_switch);
void sysProvEvent(arduino_event_t *sys_event)
{
switch (sys_event->event_id) {
case ARDUINO_EVENT_PROV_START:
#if CONFIG_IDF_TARGET_ESP32S2
Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on SoftAP\n", service_name, pop);
printQR(service_name, pop, "softap");
#else
Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on BLE\n", service_name, pop);
printQR(service_name, pop, "ble");
#endif
break;
default:;
}
}
void write_callback(Device *device, Param *param, const param_val_t val, void *priv_data, write_ctx_t *ctx)
{
const char *device_name = device->getDeviceName();
const char *param_name = param->getParamName();
if(strcmp(param_name, "Power") == 0) {
Serial.printf("Received value = %s for %s - %s\n", val.val.b? "true" : "false", device_name, param_name);
switch_state = val.val.b;
(switch_state == false) ? digitalWrite(gpio_switch, LOW) : digitalWrite(gpio_switch, HIGH);
param->updateAndReport(val);
}
}
void setup()
{
Serial.begin(115200);
pinMode(gpio_0, INPUT);
pinMode(gpio_switch, OUTPUT);
digitalWrite(gpio_switch, DEFAULT_POWER_MODE);
Node my_node;
my_node = RMaker.initNode("ESP RainMaker Node");
//Standard switch device
my_switch.addCb(write_callback);
//Add switch device to the node
my_node.addDevice(my_switch);
//This is optional
RMaker.enableOTA(OTA_USING_PARAMS);
//If you want to enable scheduling, set time zone for your region using setTimeZone().
//The list of available values are provided here https://rainmaker.espressif.com/docs/time-service.html
// RMaker.setTimeZone("Asia/Shanghai");
// Alternatively, enable the Timezone service and let the phone apps set the appropriate timezone
RMaker.enableTZService();
RMaker.enableSchedule();
RMaker.start();
WiFi.onEvent(sysProvEvent);
#if CONFIG_IDF_TARGET_ESP32S2
WiFiProv.beginProvision(WIFI_PROV_SCHEME_SOFTAP, WIFI_PROV_SCHEME_HANDLER_NONE, WIFI_PROV_SECURITY_1, pop, service_name);
#else
WiFiProv.beginProvision(WIFI_PROV_SCHEME_BLE, WIFI_PROV_SCHEME_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, pop, service_name);
#endif
}
void loop()
{
if(digitalRead(gpio_0) == LOW) {
//Push button pressed
// Key debounce handling
delay(100);
int startTime = millis();
while(digitalRead(gpio_0) == LOW) delay(50);
int endTime = millis();
if ((endTime - startTime) > 10000) {
// If key pressed for more than 10secs, reset all
Serial.printf("Reset to factory.\n");
RMakerFactoryReset(2);
} else if ((endTime - startTime) > 3000) {
Serial.printf("Reset Wi-Fi.\n");
// If key pressed for more than 3secs, but less than 10, reset Wi-Fi
RMakerWiFiReset(2);
} else {
// Toggle device state
switch_state = !switch_state;
Serial.printf("Toggle State to %s.\n", switch_state ? "true" : "false");
my_switch.updateAndReportParam(ESP_RMAKER_DEF_POWER_NAME, switch_state);
(switch_state == false) ? digitalWrite(gpio_switch, LOW) : digitalWrite(gpio_switch, HIGH);
}
}
delay(100);
}
- Serial port printing information

ESP32 RainMaker Mobile terminal connection process
- Turn on... On your phone
ESP32 RainMaker APPApplications , choiceAdd Device
- Connect to the device by scanning or manual scanning .( It is difficult to successfully identify the QR code in the serial port monitor by scanning )

- After the program is burned on the target board , Turn on the serial monitor , The following information with QR code will be printed , If you don't see it, please restart the device .

- Not recognized by QR code , You can manually connect to the device through the button below .


- Choose Bluetooth
BLE, The mobile phone must be turned onbluetoothfunction , Some mobile phones have to be turned onlocationfunction , Otherwise, the Bluetooth device cannot be found .
- You can search for a belt
PROVBluetooth devices
- Click and connect this device , Will ask for input PIN Code to connect .( The default is
bcd1234, You can see relevant information through serial port information )

- The second step is to connect WiFi, Access to the Internet .( Here, by default, which mobile phone you are connected to WiFi The signal ,)

- But at this point , I don't know why the message of sending failure is displayed

Therefore, there is no access to the Internet to realize the development function of mobile phone control buttons .
边栏推荐
- Openstack Skyline 组件安装
- C3d model pytorch source code sentence by sentence analysis (III)
- 微波技术基础实验一 滤波器的设计
- DICOM medical image viewing and browsing function based on cornerstone.js
- Gan, why '𠮷 𠮷'.Length== 3 ??
- Introduction to onnx runtime
- Flask框架——消息闪现
- Introduction to onnx (open neural network exchange)
- 电磁场与电磁波实验一 熟悉Matlab软件在电磁场领域的应用
- C3d model pytorch source code sentence by sentence analysis (II)
猜你喜欢
随机推荐
【flask高级】结合源码解决flask经典报错:Working outside of application context
HCIA experiment (09)
[Blue Bridge Cup training 100 questions] scratch Taiji diagram Blue Bridge Cup scratch competition special prediction programming question centralized training simulation exercise question No. 22
mysql事务是什么
Flask框架——Session与Cookie
思路再次完美验证!加息临近,趋势明了,好好把握这波行情!
API supplement of JDBC
信号完整性(SI)电源完整性(PI)学习笔记(三十三)102条使信号完整性问题最小化的通用设计规则
微波技术基础实验一 滤波器的设计
2021 CEC written examination summary
微波技术大作业课设-分立电容电感+微带单枝短截线+微带双枝短截线
JDBC的APi补充
接口流量突增,如何做好性能调优?
Openstack Skyline 组件安装
Redis sentry, high availability executor
SQL语言(一)
mysql高级语句(一)(总有一个人的出现,让你的生活不再继续糟糕)
HCIA实验(10)NAT
【云享新鲜】社区周刊·Vol.72- 2022华为开发者大赛中国区首场开幕式启动;华为云KooMessage火热公测中…
大佬们,flink cdc table api , mysql to mysql,一个应用程序,可以





