前文回顾
《智慧牧场之生物姿态检测篇》
《智慧牧场之生物心率检测篇》
《生物运动轨迹跟踪篇》
1. 背景知识1.1室内管理系统的意义
在智慧牧场解决方案中,随着科技的发展,物联网、无线通信、大数据计算等威廉希尔官方网站 的不断发展,在越来越多行业中得到应用,智能化生产的概念也深入人心。为提升养殖业的投入产出比、减少料肉/奶比、提升生产效率、改善养殖环境的生态环境、减低禽畜疫病滋生的可能性,打造一体化、数字式、自动化的管理模式。而室内管理系统,是其中的重中之重,也最为复杂。
1.2室内管理系统涵盖内容
以养牛为例,利用光照、温、湿度、日照等传感器实时采集分析畜牛棚室内光照强度、空气和氨气、日照等环境参数,并自动调节开启或关闭所需设备(比如:包括天窗,水幕,风扇、水泵、污水处理等)。实时检测气态浓度、H2S浓度、CO2浓度、光照强度、气压、灰尘、环境噪声、环境温度、奶牛体温及录像图像,由模型分析,遥控或自动控制湿帘风机、喷淋滴灌、供暖照明、排风扇、开窗机等通风换气设备等设备。为了保证高产量、高质量、生态、安全的奶牛安全,确保室内环境最适合家畜生长并提高奶牛福利。
使用机器人和流水线饲喂奶牛,记录奶牛饮食数据,同时给每一头牛戴上智能项圈和计步手环,对牛只的身体状况和运动数据实时监控。同时监控用水用料的数据,动态调整投喂策略,包括投喂量和投喂频率(包括:饲喂机和自动饮水器)。
智能养牛的室内管理系统采用奶厅智能检测系统,自动识别奶牛身份,自动上传班次挤奶情况。同时可以根据温度自动控制风机、喷淋、和光照设备,保证每一头牛在极度舒适的情绪下产奶。
使用室内空气温控威廉希尔官方网站 ,实现从牧场产奶到零售终端全程冷链和无漏点式温度监控。
与此同时,在牛棚内设置摄像机等监测设备,对大棚内7-24小时连续监测,实现了奶牛养殖的智能化生产与科学管理。
2. 解决方案概要
该方案尝试用OpenHarmony实现光照强度检测、温湿度检测、水位控制和图传部分。
3. 硬件设计3. 硬件设计
3.1 光照检测传感器BH1750
典型的电路应用如下:
I2C总线时序图如下:
3.2 湿度和温度传感器 SHT20
典型的电路应用如下:
时序图如下:
4. 软件设计
4.1 光照强度部分:
/***************************************************************
* 函数名称: Start_BH1750
* 说 明: 启动BH1750
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void Start_BH1750(void)
{
WifiIotI2cData bh1750_i2c_data = {0};
uint8_t send_data[1] = {0x10};
bh1750_i2c_data.sendBuf = send_data;
bh1750_i2c_data.sendLen = 1;
I2cWrite(WIFI_IOT_I2C_IDX_1, (BH1750_Addr << 1) | 0x00, &bh1750_i2c_data);
}
4.2 温湿度部分:
/***************************************************************
* 函数名称: Init_SHT30
* 说 明: 初始化SHT30,设置测量周期
* 参 数: 无
* 返 回 值: 无
***************************************************************/
void Init_SHT30(void)
{
WifiIotI2cData sht30_i2c_data = {0};
uint8_t send_data[2] = {0x22, 0x36};
sht30_i2c_data.sendBuf = send_data;
sht30_i2c_data.sendLen = 2;
I2cWrite(WIFI_IOT_I2C_IDX_1, (SHT30_Addr << 1) | 0x00, &sht30_i2c_data);
}
4.3 水位控制部分:
static float GetVoltage(void)
{
unsigned int ret;
unsigned short data;
ret = AdcRead(WIFI_IOT_ADC_CHANNEL_2, &data, WIFI_IOT_ADC_EQU_MODEL_8, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0xff);
if (ret != WIFI_IOT_SUCCESS)
{
printf("ADC Read Fail
");
}
return (float)data * 1.8 * 4 / 4096.0;
}
4.4 图传部分:
const char* ssid = "**";
const char* password = "123456789";
void startCameraServer();
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
//init with high specs to pre-allocate larger buffers
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
pinMode(13, INPUT_PULLUP);
pinMode(14, INPUT_PULLUP);
// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
sensor_t * s = esp_camera_sensor_get();
//initial sensors are flipped vertically and colors are a bit saturated
if (s->id.PID == OV3660_PID) {
s->set_vflip(s, 1);//flip it back
s->set_brightness(s, 1);//up the blightness just a bit
s->set_saturation(s, -2);//lower the saturation
}
//drop down frame size for higher initial frame rate
s->set_framesize(s, FRAMESIZE_QVGA);
s->set_vflip(s, 1);
s->set_hmirror(s, 1);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
startCameraServer();
Serial.print("Camera Ready! Use 'http://");
Serial.print(WiFi.localIP());
Serial.println("' to connect");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10000);
}
本文完
写在最后我们最近正带着大家玩嗨OpenHarmony。如果你有好玩的东东,欢迎投稿,让我们一起嗨起来!有点子,有想法,有Demo,立刻联系我们:合作邮箱:zzliang@atomsource.org
原文标题:玩嗨OpenHarmony:基于OpenHarmony的智慧牧场方案 4/4 室内管理系统篇
文章出处:【微信公众号:开源威廉希尔官方网站 服务中心】欢迎添加关注!文章转载请注明出处。
-
开源威廉希尔官方网站
+关注
关注
0文章
389浏览量
7928 -
OpenHarmony
+关注
关注
25文章
3716浏览量
16260
原文标题:玩嗨OpenHarmony:基于OpenHarmony的智慧牧场方案 4/4 室内管理系统篇
文章出处:【微信号:开源威廉希尔官方网站 服务中心,微信公众号:共熵服务中心】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论