|
本帖最后由 点点&木木 于 2019-4-12 09:38 编辑 : z5 a+ m1 C8 D8 r- f" L 一个学校的工程项目。 6 [. F2 K/ Y3 \' A 9 Y6 ?$ F! x- g
# T% R$ I/ K F. V C5 Y6 y' g % M, V7 o# O' \0 B6 b) n 这个项目中使用的东西 硬件组件 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 % e; q6 k# @4 s' M 手动工具和制造机器 3D打印机(通用) 7 V& I9 f3 W" Y# Y$ E3 { 介绍 我们是Polytech Sorbonne(前巴黎UPMC)的3名工程专业学生,专攻电子和计算机科学。我们的项目包括进行植物监测,随后将由我们大学的食品科学专业学生使用。目标是在植物生长的同时,实现在现场和远程控制植物的生长环境。 % l( x+ T6 ^* k+ \4 @1 I0 A9 q
+ Y% M% ~; G3 b0 M; z1 U! E6 X4 a 微控制器在LCD显示屏幕上实时显示传感器发送的信息。同时,它通过NodeRed将数据发送到名为“Bluemix”的在线服务器。 该系统由3,7V电池供电,由太阳能电池板充电。该系统可实现独立工作。 以下是我们项目的不同步骤。 1)代码 为了开发我们的项目,我们使用了Mbed,一个帮助我们完成项目的协作在线编程软件。
MBED 1 g/ z1 u1 f$ u5 |! j2 i6 R5 Q U4 ]1 r j _. k MBED的另一个优点是可以找到大量的微控制器库。起初,我们在使用面包板的同时开始了这个项目。然后我们编写了将从sigfox接收数据的服务器。我们使用Bluemix的NodeRed,它是一个图形化的编程接口。 / |# C; V3 n7 s! r" o- q7 i) o
Bluemix的NodeRed ! D' }) j" p9 q) a) i% _3 V1 S如您所见,该项目分为3个部分: 第一部分是“获取”,这是最重要的部分。它接收Actobord发送的数据 第二部分是“分离”,它将“Get”接收的每个值分开。 第三部分是“图形”,它在图形上显示每个值。 2)板 最后,我们选择了EASYEDA来创建我们的PCB,而不是使用面包板。EASYEDA也是一个在线共享工具,每个成员都可以编辑项目,也可以将其设为私有或公共。 7 R3 @$ J/ Y2 w W. T- @- e* V3 H* b2 G7 J( A9 S# u
EASYEDA 3)盒子 最后一部分是关于如何打包我们的系统。为了保持原创性,我们使用FreeCad绘制了我们自己的3D盒子,FreeCad是一个开源软件,可以让我们轻松详细地绘制我们的盒子。
FreeCad上的3D Box 我们还设计了一个电池盒和太阳能电池板。
供应箱 2 M# T- [) N) J. r 7 b- u% C4 L* l# ]" { 4)结果 如下所示,这就是我们项目的样子: 2 J& j! N1 n7 R3 i. N; T
工厂检测 & }% p6 f( W( r2 j( D" }- A
Diplay
板
地面传感器 1 I9 v4 U5 L& t$ V
测试
检测结果 / w5 N* r! {4 b3 T5 @) d+ s8 k$ k
在供应箱内 ) }" I; l+ m' k) ^! f( S5 h' ` q p/ b + S3 t. }( s2 D4 [9 B) h7 Y# o
在供应箱内 ! \6 [( d6 k' Q- o3 r% Q1 Q
供应箱
bluemix上的仪表板 7 t$ s* p" X0 `8 U; K4 f. G" K( ?& a( U# N* c 9 ?* E8 Z. R3 n( j+ T- \6 w 定制零件和外壳 CAD
1 o3 |# M3 r: t- x2 e' { F4 m 原理图 ; A4 T( Z% C/ x# j0 w) a
/ a- ]" |9 P8 P& _4 ^" n! [) @2 n* V " l- o2 |2 n. ]! M+ f, q4 u 代码 7 ~ G/ L. x! X- A2 A// 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; } & t! v: B; \0 d' C, c. y7 d& g9 [% U9 w) q1 y' @, E! U |
| 收藏 |
微信公众号
手机版