博士
最后登录1970-1-1
在线时间 小时
注册时间2018-3-16
|
一、背景
本项目主要设计一个系统,用于监测龟龟水缸的水质检测,野火启明6M5开发板用于采集TDS传感器数据,通过板载ESP8266网络模块发送至云端,用于实时掌握水族缸的水质情况。
二、设计
(一)硬件设计
硬件设计如下,主体为野火启明6M5开发板,网络模块使用板载的ESP8266,通过串口连接;TDS传感器采用keyeStudio出品的传感器模块,通过ADC接口连接;此外,还有个LED周期闪烁用于指示系统运行中。
(二)软件设计
基础软件上,OS采用RT-Thread最新5.0.1版,包括LWIP、SAL、ONENET、MQTT等组件。
应用软件上,包括ADC task和upload task两个thread,其中ADC task用于驱动ADC传感器、周期读写数字并转成TDS值;upload task周期上传TDS数值只云端。
三、实现
(一)组件配置
介于当前野火启明6M5开发板尚未支持RT-Studio,只能scons手动配置,依次配置好ESP8266驱动、AT组件、MQTT和ONENET组件等。
(二)ADC task
因为野火启明6M5开发板上的ADC0通道0的P000针脚被占用,故使用通道1的P001。
借助于瑞萨强大的Smart Configurator工具,
配置好ADC通道,以及callback函数名,用于在ADC数据准备好的时候发起读取动作。
- void Adc_Init(void)
- {
- fsp_err_t err = FSP_SUCCESS;
- /* Initializes the adc. */
- err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
- /* Handle any errors. This function should be defined by the user. */
- assert(FSP_SUCCESS == err);
- /* Enable channels. */
- err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
- assert(FSP_SUCCESS == err);
- }
复制代码- void adc_entry(void * parameters)
- {
- fsp_err_t err = FSP_SUCCESS;
- uint16_t value;
- float averageVoltage, tmp;
- /*init ADC device*/
- Adc_Init();
- while(1)
- {
- rt_thread_mdelay(2000);
- /* Enable scan triggering from ELC events. */
- (void)R_ADC_ScanStart(&g_adc0_ctrl);
- while (!scan_complete_flag)
- {
- ;
- }
- scan_complete_flag = false;
- /*read sample value of ADC*/
- err = R_ADC_Read(&g_adc0_ctrl, ADC_DEV_CHANNEL, &value);
- if (FSP_SUCCESS == err)
- {
- rt_kprintf ("Read value: %d: %d\r\n", ADC_DEV_CHANNEL, value);
- }
- else
- {
- rt_kprintf ("Read Data Error\r\n");
- break;
- }
- tmp = (float)value;
- averageVoltage = tmp * 5.0 / 1024.0;
- tdsValue = (133.42*averageVoltage*averageVoltage*averageVoltage - 255.86*averageVoltage*averageVoltage + 857.39*averageVoltage)*0.5;
- }
- return;
- }
复制代码 其中根据电压值计算TDS值比较复杂。
(三)upload task
Upload task主要依托onenet组件,将tds数据推送至OneNet云端。
- static void onenet_upload_entry(void *parameter)
- {
- while (1)
- {
- if (onenet_mqtt_upload_digit("tds", tdsValue) < 0)
- {
- LOG_E("upload has an error, stop uploading");
- break;
- }
- else
- {
- LOG_D("buffer : {"tds":%d}", tdsValue);
- }
- rt_thread_delay(rt_tick_from_millisecond(5 * 1000));
- }
- }
复制代码
四、运行
先来张全家福,因为水族缸比较大,暂时把其中一只小龟龟强行拉出来合影一张。
系统启动的日志。
启动ADC数据采集和数据上传任务后,云端的数据情况。
五、一些感想
智慧水缸目前很多地方考虑不够周全,譬如水质只用到了tds传感器,后续要加上PH和温度传感器,让龟龟生活环境更智能。
瑞萨的MCU以及附带的各种工具软件很赞,Smart Configurator上手后很方便。野火的板子一直秉承着高品质,手头这块启明6M5开发板体现了很高的水准,无论是做工还是各种资料。
最后,感谢主办方组织的活动。
-------------
源代码在此:
ebf_qi_min_6m5-onenet.rar
(5.94 MB, 下载次数: 15)
|
|