你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32 L432 工厂监测系统

[复制链接]
木木&点点 发布时间:2019-4-1 17:09
本帖最后由 点点&木木 于 2019-4-12 09:38 编辑
! J2 C: Y7 y7 {: z5 a+ m1 C8 D8 r- f" L
一个学校的工程项目。
6 [. F2 K/ Y3 \' A
9 Y6 ?$ F! x- g
1.jpg
' {2 j2 I* d4 k5 |/ B$ F# Y
# T% R$ I/ K  F. V  C5 Y6 y' g

% e* x/ k- ~9 J. `6 @
% M, V7 o# O' \0 B6 b) n

5 C4 M4 R4 z1 T0 m: b* J6 Y0 w
这个项目中使用的东西
硬件组件
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      

8 B2 j0 z, S) w1 O: H3 Y! \1 G
% e; q6 k# @4 s' M
手动工具和制造机器
3D打印机(通用)        

8 A" w% l# b* w3 F) U, q' A
7 V& I9 f3 W" Y# Y$ E3 {

2 b7 _7 J2 g2 J7 f3 [# f  ^$ E
介绍
我们是Polytech Sorbonne(前巴黎UPMC)的3名工程专业学生,专攻电子和计算机科学。我们的项目包括进行植物监测,随后将由我们大学的食品科学专业学生使用。目标是在植物生长的同时,实现在现场和远程控制植物的生长环境。
% l( x+ T6 ^* k+ \4 @1 I0 A9 q

9 Y* a( }/ ^' r2 [2 h
2.jpg

# e8 ?; r0 a/ M& i0 y" _" `+ Y% M% ~; G3 b0 M; z1 U! E6 X4 a

/ \& Z+ R3 L& N( |* V  R* |
2 F1 N" x- c3 }  ]( P
微控制器在LCD显示屏幕上实时显示传感器发送的信息。同时,它通过NodeRed将数据发送到名为“Bluemix”的在线服务器。
该系统由3,7V电池供电,由太阳能电池板充电。该系统可实现独立工作。

0 g2 }; y6 S( l9 L
以下是我们项目的不同步骤。

( @' w7 i$ t: l" M  q
1)代码
为了开发我们的项目,我们使用了Mbed,一个帮助我们完成项目的协作在线编程软件。

1 q0 N/ c8 A; X9 S8 S7 a- {2 L$ D9 h
3.jpg
4 G" ~; h$ l3 W, O' Q$ m3 n/ U
MBED
1 g/ z1 u1 f$ u5 |! j2 i
6 R5 Q  U4 ]1 r  j  _. k
MBED的另一个优点是可以找到大量的微控制器库。起初,我们在使用面包板的同时开始了这个项目。然后我们编写了将从sigfox接收数据的服务器。我们使用Bluemix的NodeRed,它是一个图形化的编程接口。
/ |# C; V3 n7 s! r" o- q7 i) o
4.jpg
Bluemix的NodeRed
! D' }) j" p9 q) a) i% _3 V1 S

0 Y' e& Y* p3 S( T* n' z
如您所见,该项目分为3个部分:
第一部分是“获取”,这是最重要的部分。它接收Actobord发送的数据
第二部分是“分离”,它将“Get”接收的每个值分开。
第三部分是“图形”,它在图形上显示每个值。

6 J) h( z, N5 Z2 v, o0 J
) `) P0 [$ Q+ H# @1 G* Q" i
2)板
最后,我们选择了EASYEDA来创建我们的PCB,而不是使用面包板。EASYEDA也是一个在线共享工具,每个成员都可以编辑项目,也可以将其设为私有或公共。
7 R3 @$ J/ Y2 w  W. T- @- e* V
3 H* b2 G7 J( A9 S# u
5.jpg
EASYEDA

# q8 g$ f; x9 i( @: H3 u
9 ^$ t# A+ s% i+ c+ Q5 J3 e
# I: `8 D, F6 X$ N$ J: |8 Z
3)盒子
最后一部分是关于如何打包我们的系统。为了保持原创性,我们使用FreeCad绘制了我们自己的3D盒子,FreeCad是一个开源软件,可以让我们轻松详细地绘制我们的盒子。

9 T5 o1 I# L1 O  s
6.jpg
FreeCad上的3D Box

& k1 J3 p( D( D. F& w- h, c7 v1 Y
) h. D- i; d# N" X
我们还设计了一个电池盒和太阳能电池板。

4 F, a% T' t* B* F) j$ e. M
7.jpg
供应箱

' g! f/ `' u' c; w) T2 J* @2 M# T- [) N) J. r
7 b- u% C4 L* l# ]" {
4)结果
如下所示,这就是我们项目的样子:
2 J& j! N1 n7 R3 i. N; T
8.1.jpg
工厂检测

3 X) L6 E& I) n+ ]
* R. p) Q+ @2 Z& O' ~& }% p6 f( W( r2 j( D" }- A
8.2.jpg
Diplay

# I7 i8 o; B2 {! ^
+ F; @) q' |3 C* u4 ~. {  P0 s9 d
8.3.jpg
板

  }: h! v( \) Q  H3 d
3 Y- Y" r: e2 {7 z: H5 g9 ?- C
8.4.jpg
地面传感器

  L* _# i  u2 D9 F  p1 I9 v4 U5 L& t$ V
8.5.jpg
测试

) K+ Z) @3 n, c( @; k2 a$ U
2 s0 M$ g6 l: R$ r$ P
8.6.jpg
检测结果

' N3 T9 M5 A  `# M/ w5 N* r! {4 b3 T5 @) d+ s8 k$ k
8.7.jpg
在供应箱内
) }" I; l+ m' k) ^! f( S
5 h' `  q  p/ b
+ S3 t. }( s2 D4 [9 B) h7 Y# o
8.8.jpg
在供应箱内
! \6 [( d6 k' Q- o3 r% Q1 Q

  g; j3 M0 J6 ^6 I; [
" M: `& w. L2 y9 |2 Q: I
8.9.jpg
供应箱

, R& y) F4 p% `: R7 {% ^; P  |
3 X. q) [6 d5 @8 |% j
8.10.jpg
bluemix上的仪表板
7 t$ s* p" X0 `8 U; K4 f. G
" K( ?& a( U# N* c

  J" g* H) }" |7 V7 {( `9 ?* E8 Z. R3 n( j+ T- \6 w
定制零件和外壳
CAD
9.png
/ t5 \7 ^( O" W; S2 d

9 T- l' M" u9 D
1 o3 |# M3 r: t- x2 e' {  F4 m
原理图

! R* }% P3 X  X0 N; A4 T( Z% C/ x# j0 w) a
10.png
: D# m/ ^# ]9 p

0 f  r: R. b6 t* k) w& ^0 @/ 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

6 _# R6 J0 i( P: y
赞 收藏 1 评论1 发布时间:2019-4-1 17:09

举报

1个回答
Kevin_G 回答时间:2019-4-2 15:59:16
收藏
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版