|
本帖最后由 点点&木木 于 2019-4-12 09:38 编辑 一个学校的工程项目。
这个项目中使用的东西 硬件组件 STM32 Nucleo Nucleo L432KC × 1 DHT22温度传感器 × 1 模温探头 × 1 SparkFun土壤湿度传感器(带螺丝端子) × 1 TSL2561 亮度传感器 × 1 SOL2W 太阳能板 × 1 Lipo Rider Pro 供应适配器 × 1 ADA326 液晶显示屏 × 1 Accu Li-Ion 3,7 V 1050 mAh 3,7V电池 × 1 手动工具和制造机器 3D打印机(通用) 介绍 我们是Polytech Sorbonne(前巴黎UPMC)的3名工程专业学生,专攻电子和计算机科学。我们的项目包括进行植物监测,随后将由我们大学的食品科学专业学生使用。目标是在植物生长的同时,实现在现场和远程控制植物的生长环境。
微控制器在LCD显示屏幕上实时显示传感器发送的信息。同时,它通过NodeRed将数据发送到名为“Bluemix”的在线服务器。 该系统由3,7V电池供电,由太阳能电池板充电。该系统可实现独立工作。 以下是我们项目的不同步骤。 1)代码 为了开发我们的项目,我们使用了Mbed,一个帮助我们完成项目的协作在线编程软件。
MBED MBED的另一个优点是可以找到大量的微控制器库。起初,我们在使用面包板的同时开始了这个项目。然后我们编写了将从sigfox接收数据的服务器。我们使用Bluemix的NodeRed,它是一个图形化的编程接口。
Bluemix的NodeRed 如您所见,该项目分为3个部分: 第一部分是“获取”,这是最重要的部分。它接收Actobord发送的数据 第二部分是“分离”,它将“Get”接收的每个值分开。 第三部分是“图形”,它在图形上显示每个值。 2)板 最后,我们选择了EASYEDA来创建我们的PCB,而不是使用面包板。EASYEDA也是一个在线共享工具,每个成员都可以编辑项目,也可以将其设为私有或公共。
EASYEDA 3)盒子 最后一部分是关于如何打包我们的系统。为了保持原创性,我们使用FreeCad绘制了我们自己的3D盒子,FreeCad是一个开源软件,可以让我们轻松详细地绘制我们的盒子。
FreeCad上的3D Box 我们还设计了一个电池盒和太阳能电池板。
供应箱 4)结果 如下所示,这就是我们项目的样子:
工厂检测
Diplay
板
地面传感器
测试
检测结果
在供应箱内
在供应箱内
供应箱
bluemix上的仪表板 定制零件和外壳 CAD
原理图
代码 // LIBRARY #include "mbed.h" #include "DS18B20.h" #include "OneWireDefs.h" #include "TSL2561.h" #include "DHT22.h" #include "bold_font.h" #include "standard_font.h" #include "ssd1306.h" #define THERMOMETER DS18B20 // INITIALIZATION OF SENSORS AND NUCLEO'SPINS Serial serie(SERIAL_TX, SERIAL_RX); TSL2561 LUM(PB_7, PB_6); // Luminosité (I2C:SDA,SCL) DHT22 Tem_Hum_A(PA_11); // Température & Humidité air AnalogIn Humidite(PA_0); SSD1306 ecran(D3 /* cs */, D6/* reset */, A5 /* dc */, A4 /* clock */, D2 /* data */); //Serial PC(PA_2, PA_3); Serial sigfox(PA_9, PA_10); DigitalOut myled(LED1); int i, Hum_sol, Temp_sol, Lum, Temp_air,Hum_air; int main() { ecran.initialise(); ecran.clear(); ecran.set_contrast(255); ecran.set_font(bold_font, 8); serie.printf("New Program \r\n"); // device( crcOn, useAddress, parasitic, mbed pin ) THERMOMETER device(true, true, false, PA_8); while(!device.initialize()); // keep calling until it works while (true) { myled = !myled; Tem_Hum_A.sample(); // READING VALUES FROM SENSORS device.readTemperature(); Temp_air = (int)(Tem_Hum_A.getTemperature()/10); Hum_air = (int) (Tem_Hum_A.getHumidity()/10); Hum_sol = (int)(Humidite.read()* 100) ; Temp_sol = (int)device.readTemperature(); Lum = (int) LUM.lux(); printf("Temperature air: %d\n\r", Tem_Hum_A.getTemperature()/10); printf("Hum air: %d\n\r", Tem_Hum_A.getHumidity()/10); serie.printf("\rLum: %f \r\n", LUM.lux()); serie.printf("Temperature sol: %d \n\r",Temp_sol); serie.printf("Hum sol: %f \n\r",Humidite.read()*100); printf("------------------------------------------------------------\n\r"); //SENDING VALUES USING SIGFOX sigfox.printf("AT$SS=%02x %02x%02x %02x %02x \r\n", Temp_sol, Temp_air, Lum, Hum_sol,Hum_air); //OLED : PRINT VALUES ON THE SCREEN ecran.set_font(bold_font, 8); ecran.printf("Valeurs"); ecran.printf("\r\n"); ecran.update(); ecran.set_font(standard_font, 6); ecran.printf("Temp air = %d",Temp_air ); ecran.printf("\r\n"); ecran.printf("Hum air = %d", Tem_Hum_A.getHumidity()/10); ecran.printf("\r\n"); ecran.printf("Lum = %f", LUM.lux()); ecran.printf("\r\n"); ecran.printf("Temp sol = %d",Temp_sol ); ecran.printf("\r\n"); ecran.printf("Hum sol = %f", Hum_sol); ecran.printf("\r\n"); ecran.update(); ecran.clear(); wait(10); } return EXIT_SUCCESS; } |
| 收藏 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版