Difference between revisions of "Open Source WiFi Weather Station"

From Microduino Wiki
Jump to: navigation, search
(Principle of Experiment)
(Other Equipment)
 
(68 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{| style="width: 840px;"
+
==Outline==
|-
+
*Project: Open Source WIFI Weather Station System.(ESP8266 connected to Blynk)  
|
+
*Objective: To get temperature, humidity, light intensity and PM2.5 at the weather station.
==Overview==
+
**Note: PM2.5 refers to atmospheric particulate matter (PM) that have a diameter of less than 2.5 micrometers 
*Project: Open Source WIFI Weather Station System   
+
*Difficulty: Medium 
*Objective: To get the temperature, humidity, illumination and even PM2.5 data around you.  
+
*Time-consuming: 2-Hour
*Difficulty: Middle
+
*Maker: Ray 
*Time-consuming: 5-hour
+
 
*Maker:  
+
Introduction:
*Introduction :
+
*Read temperature, humidity, light intensity and PM2.5 data and display those data on the screen.
This device can acquire real-time temperature, humidity, illumination and even PM2.5 data around you, and display them on the screen. You can also connect it to the internet if needed. With a phone or a laptop, you can check the data anytime and anywhere, which can be easily achieved by Microduino.  
+
*Upload the data to Blynk.
 +
*View data on phone anywhere using the Blynk app. 
 +
*Created by Microduino with Microduino components.
 +
 
 
==Bill of Material==
 
==Bill of Material==
*Microduino Equipment  
+
===Microduino Equipment===
 +
 
 +
{| class="wikitable" style="background-color:#FEF9E7;"
 +
|'''Note:''' Different revisions may contain different components.
 +
|}
 +
 
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
 
|Module||Number||Function  
 
|Module||Number||Function  
 
|-
 
|-
|[[Microduino-Core+]]||1||Core board
+
|[[Microduino-Core+]]||1|| Core board (Arduino) 
 +
|-
 +
|[[Microduino-USBTTL]] -OR- Microduino-USBTLL-C ||1|| Programmer for Core board
 +
|-
 +
|[[Microduino-WIFI(ESP)]] ||1|| WiFi communication module
 +
|-
 +
|[[Microduino-Sensorhub]] ||1|| Connector Hub to connect sensors
 +
|-
 +
|[[Microduino-Duo-h]] -OR- Microduino-Cube-S1 ||1|| Extension board 
 
|-
 
|-
|[[Microduino-USBTTL]] ||1||Download program  
+
|[[Microduino-OLED]] ||1||Display  
 +
|}
 +
 
 +
{|class="wikitable"
 
|-
 
|-
|[[Microduino-WiFi]] ||1||Connect the internet
+
|Sensor||Number||Function
 
|-
 
|-
|[[Microduino-Temp&Hum]] ||1||Digital temperature and humidity sensor  
+
|[[Microduino-Temp&Hum]] -OR- [[Sensor-Tem&Hum-S2]] ||1||Digital temperature and humidity sensor  
 
|-
 
|-
|[[Microduino-Air Quality]] ||1||Air quality sensor
+
|[[Microduino-Air Quality]] ||1||Air quality detector 
 
|-
 
|-
|[[Microduino-Light]] ||1||Light-sensitive sensor  
+
|[[Microduino-Light]] ||1||Light-sensitive sensor
 
|-
 
|-
|[[Microduino-OLED]] ||1||For display
+
|GP2Y1010AU0F ||1||PM2.5 sensor 
 
|}
 
|}
*Other Equipment
+
 
 +
===Other Equipment===
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
| Module||Number||Function
+
|Equipment||Number||Function  
|-
 
|Micro-USB cable||1||Program download and power supply
 
 
|-
 
|-
|[[Microduino-USBTTL]] ||1||Program download module 
+
|Micro-USB cable||1||For program download and power supply
 
|-
 
|-
|GP2Y1010AU0F ||1||PM2.5 sensor  
+
|GP2Y1010AU0F ||1||PM2.5 sensor
 
|-
 
|-
|Screw ||7||For fixating modules  
+
|Screw ||7||Fixate modules  
 
|-
 
|-
|Screwdriver ||1||For fixating screws
+
|Screwdriver ||1||Fixate screws
 
|-
 
|-
 
|Shell ||1||
 
|Shell ||1||
 
|}
 
|}
[[File:气象站物料.jpg||1000px|center]]
+
[[File:weatherStationMatiralAll.png||1000px]]
  
==Principle of Experiment==
+
{| class="wikitable" style="background-color:#FEF9E7;"
On the special plate of the Weather Station is installed with sensors with multi-parameters, including the digital temperature and humidity sensor (Microduino-Tem&Hum), the light sensor (Microduino-Light), the air quality sensor of Microduino-Air and the PM2.5 sensor (gp2y1010au0f). Each sensor is connected with Microduino-Sensorhub, whose data can be analyzed and processed by the Microduino core module, and then displayed on the OLED.  At the same time, you can connect the Microduino-Wifi and Microduino-Core together to the internet, communicating with mCotton (IOT platform) and giving feedback to users via text and graph info. You can check this data anytime and anywhere with your phones or laptops.
+
|'''Note:''' Different revisions will contain different components.
[[1.File:Wifistationtheory.jpg||600px|center]]
+
Most noteable are:
 +
*Duo-V will be replaced with a Microduino-Cube-S1.
 +
*Humidity/TempSensor will be replaced with a Tem&Hum-S2.
 +
|}
  
This system is composed of sensors, coordinator, network adapter, OLED display, mCotton, integrated with sensor technology, network communication technology, OLED display technology and IOT technology. Sensors mainly complete the data collection of the temperature, humidity, light intensity, air quality, then the coordinator can process and analyze the collected data. Meatime, you can connect it to the internet and communicate with mCotton through the network adapter, and check these data on the mCotton.    
+
==Principle of the Experiment==
 +
This Weather Station can detect data including: 
 +
*Temperature and humidity via [[Microduino-Temp&Hum]]
 +
*Light intensity via [[Microduino-Light]]
 +
*Air quality via [[Microduino-Air Quality]]
 +
*PM2.5 via GP2Y1010AU0F
  
[[2.File:Wifistationtheory1.jpg||600px|center]]
 
  
*Structure of the Management Platform  
+
Other functions:
The platform can be divided into two parts: Microduino core control, responsible for sensors' data collection and connecting to the internet; mCotton IOT platform, responsible for displaying data to users in the way of curves so that you can check and share your surrounding weather, as follows:
+
*Use the [[Microduino-Core+]] to analyze and process sensor data.  
*Main sensors
+
*Display data on the [[Microduino-OLED]].
 +
*Connect the Weather Station with Blynk via [[Microduino-WIFI(ESP)]].
 +
*Each sensor connects with [[Microduino-Sensorhub]].
  
[[3.File:Wifistationtheory2.jpg||600px|center]]
+
==Get and Configure Blynk==
 +
Next, we'll learn how Microduino interacts with Blynk through the configuration process of the Weather Station.
  
The picture below display the procedure of the system. Data Collection System: Mainly responsible for collecting ambient temperature, humidity, light intensity data and etc. The data collected from the sensors will be uploaded to the Microduino core.
+
===Download the Blynk App===
Wireless Transmission System: The system sends the collected data to the server through wireless network, adopting Wifi data transmission.
 
Data Processing System: This system is responsible for storage, upload and visual display so that users can check weather on their PC or phone client.
 
  
[[4.File:Wifistationtheory3.jpg||600px|center]]
+
Visit the Google Play Store or the Apple App Store and download the '''Blynk''' app.
  
==Document==
+
You'll need to setup an account with Blynk before proceeding. Please use a valid e-mail as your authentication tokens will be sent to that e-mail.
Weather Station Code:【'''[[media:Weather v2.rar|Weather Station Code]]'''】
 
  
Local Weather Station Code:【'''[[Media:Weather v2 new.rar|Local Weather Station Code]]'''】
+
==Using the Blynk App==
  
Weather Station Code Github:[https://github.com/Microduino/CC3000WeatherStation Weather_Station]
+
*On the main screen of the Blynk app. Click on the '''QR code scanner''' to scan the Weather Station app.
 +
::[[File:wws_qr_scan.png|300px]]
  
==Debugging ==
 
*Build the server.
 
Weather Station needs to be connected into the internet, so a server for storage and display is indispensible. First of all, we need to build a network server.
 
*About mCotton
 
Currently positioned to do an open universal networking platform, mCotton mainly providse sensor data access, storage and display services. It can offer a networking project platform for all of the open source software and hardware enthusiasts and manufacturing enterprises, enabling them to deliver IOT electronic products without the need to care about the server implementation details and operation.
 
We only need to register an account in mCotton, it will provide you with a unique KEY API,which is used to recognize identity in the server.
 
MCotton as an open public Internet access platform, it aims to serve all the enthusiasts and developers, so that the sensor data access, storage and display become easy and simple.
 
Here we introduce how to use the mCotton platform to complete your easy access.
 
*Register
 
Open the main page of mCotton: somvpn.cn:3000, click " Sign in/Join ", you'll see a pop-up showing login/register, then click "Create account" and enter the user register page.
 
  
[[File:mcottonsign1.jpg||600px|center]]
+
*Scan the QR code below.
 +
::[[File:Wws_qr_code.png|300px]]
  
On the user register page, you can fill in the relevant information and complete.
 
  
[[File:mcottonsign2.jpg||600px|center]]
+
*Once the project has loaded, click on '''Project Settings''' (nut icon).
*Add Devices
+
::[[File:wws_project_settings.png|300px]]
Click "Projects" after login and enter the engineering page.
 
  
[[File:mcottonsign3.jpg||600px|center]]
 
  
Find "Weather Station" in the engineering page, click " Assemble to My Devices " and you can add your devices.  
+
*Under Auth Tokens, click on '''Email all'''. This will send the authentication token to your registered e-mail. Make note of this, as you will need this token later.
 +
::[[File:wws_auth_token.png|300px]]
  
[[File:mcottonsign4.jpg||600px|center]]
 
  
Enter the name your device in "Name" and click "Submit" to publish.  
+
*Click back to return to the Weather Station app.
 +
::[[File:Wws_weather_app.png|300px]]
  
[[File:mcottonsign5.jpg||600px|center]]
+
==Programming==
*Get APIKEY
 
After the publish, you can see your device on " My Garage " page.
 
[[File:mcottonsign6.jpg||600px|center]]
 
Find your Weather Station device and remember its unique ID.
 
[[File:mcottonsign7.jpg||600px|center]]
 
*Program Download
 
Stack Microduino-Core+ and Microduino-USBTTL without fixed order, and connect them to the PC via USB cable.
 
[[File:download1.jpg||400px|center]]
 
Make sure you built Microduino IDE, otherwise, please refer to: 1-Arduino IDE installation instructions.
 
[[File:Gettingstarted.jpg||400px|center]]
 
Open Arduino IDE programming software, click【File】->【Open】
 
[[File:Dl1.jpg||600px|center]]
 
Scan the project program address, click " weatherCC3000.ino " and open it.
 
[[File:WiFiStationopen.jpg||600px|center]]
 
[[File:WiFiStationopen2.jpg||600px|center]]
 
Corresponding parameters needed to be configured in the "def.h" file:
 
#define WLAN_SSID   “Wifi name you are going to connect.”
 
#define WLAN_PASS   “Wifi password”
 
#define WEBSITE   “Server address”
 
#define WEBSITEPORT        “Server port”
 
#define APP_KIT_ID   “ID number acquired from Step3步.”
 
[[File:WiFiStationopen3.jpg||600px|center]]
 
Click "Tool, select Microduino-Core+ as the board card, and the processor " Atmega644pa@16M,5V ", then burn the program.
 
[[File:WiFiStationopen4.jpg||600px|center]]
 
  
==Install the Weather Station==
+
===Software Setup===
*'''Step1''':Fixate the OLED screen and A1 with screws.
+
Please follow the guide to ensure your software is correctly setup. The software is required to program the WiFi Weather Station.
[[File:Waetherstep1.jpg||600px|center]]
 
*'''Step2''':Assemble B1-B5 with B6.
 
[[File:Waetherstep2.jpg||600px|center]]
 
*'''Step3''':Assemble Core+, USBTTL, and the Hub together, use screws to fixate them on A2, then connect them on the PM 2.5 sensor with the cable.  
 
Stick the PM2.5 sensor to the base board.
 
[[File:Waetherstep3.jpg||600px|center]]
 
*'''Step4''':Assemble B7, B8 and B9 to the Temp&Hum sensor, Air senosr, Light sensor respectively as the picture shows.
 
[[File:Waetherstep4.jpg||600px|center]]
 
*'''Step5''':Connect the the Temp&Hum sensor, Air senosr, Light sensor on the Hub as the picture shows. 
 
Fixate the sensors on the slot where B1 and B2 combines as it mentioned in Step2, and after that, then connect A1 and A2 on the top and bottom of the system.
 
[[File:Waetherstep5.jpg||600px|center]]
 
*'''Step6''':Fixate the system with B0 after finishing the steps above, insert the USB cable and complete the weather station installation.  
 
  
At this time, you can see data of all sensors on the OLED screen. 
+
Download the latest software for your operating system and follow the getting started guides:
And the same time, you can also see the uploaded weather data on the pre-set mCotton device. 
+
{{Clickable software guide boxes}}
[[File:WiFiStation10.jpg||600px|center]]
+
{{Clickable_headed_image_table_box_clear}}
  
==Program Description==
+
===Programming the Weather Station===
Available in China:
+
*Stack '''[[Microduino-Core+]]''' and '''[[Microduino-USBTTL]]''' together. 
*About Main Program
+
*Connect '''[[Microduino-USBTTL]]''' with a USB cable. Connect the other end to the PC being used.
<source lang="cpp">
+
*Open the Arduino IDE for Microduino development environment. (Please refer to the [[#Software Setup]] section).  
//1.About Screen Display =============================
+
*Configure the software to upload to the Core+ module as follows:
#include"Arduino.h"
+
**Tools > Board > '''Microduino/mCookie-device'''
#include "U8glib.h"
+
**Tools > Processor > '''Microduino/mCookie-Core+ (644pa)@16M,5V'''
//2.About Sensor ================================
+
**Tools > Port > '''select the port''' (On MacOS, NOT the Bluetooth one).
#include <Wire.h>  
+
*Download the code for Weather Station here: '''[[File:ESP8266BlynkWeatherStationV2.zip]]'''
#include "I2Cdev.h"
+
*Unzip the file. Under the software (Arduino IDE), go to '''File > Open...''' and navigate to the unzipped folder and open the '''ESP8266BlynkWeatherStationV2.ino''' file.
#include <AM2321.h>  
+
*The sketch with multiple files will open. Click on the '''userDef.h''' tab. You'll need to configure the WiFi connection (2.4GHz networks, non 5GHz) with:
#include <SoftwareSerial.h>  
+
**'''SSID'''
//3.About WIFI ================================
+
**'''PASS''' (WiFi password)
#include <Adafruit_CC3000.h>
+
**'''auth''' key as noted earlier in the Blynk app sent to you via e-mail.
#include <ccspi.h>  
+
:::[[File:Wws_configuration.png|500px]]
#include <SPI.h>
+
*Click on the '''upload button''' (right arrow icon on the top left) to upload the program.
#include <string.h>
+
*The program will compile and upload. Once completed a upload successful message will appear on the bottom left.
#include "utility/debug.h"
 
//4.About Sefl-define =============================
 
#include "def.h"
 
#include "oled.h"
 
#include "wifi.h"
 
#include "sensor.h"
 
 
#define INTERVAL_LCD            200        //Refresh interval for OLED and sensors     
 
#define INTERVAL_NET            30000      //Sensor data upload interval
 
 
unsigned long lcd_time = millis();          //OLED and sensor update timer
 
unsigned long net_time = millis();          //Sensor data upload update timer
 
 
void setup(void)
 
{
 
    Serial.begin(115200);    //Initializing baud rate
 
    setup_wifi();            //Initializing Wifi
 
}
 
 
void loop(void)
 
{
 
 
    if (lcd_time > millis()) lcd_time = millis();
 
    if (millis() - lcd_time > INTERVAL_LCD)
 
    {
 
        SensorUpdate();        //Sensor update 
 
        volcd(sensorTemp, sensorHumi, sensorLight, sensorPM25, sensorEtoh);  //OLED display update 
 
        lcd_time = millis();    //Timer update
 
    }
 
 
    if (net_time > millis()) net_time = millis();
 
    if (millis() - net_time > INTERVAL_NET)
 
    {
 
        updateWeatherData(sensorTemp, sensorHumi, sensorLight, sensorPM25, sensorEtoh);  //Upload sensor data
 
        net_time = millis();    //Timer update 
 
    }
 
}
 
</source>
 
*Configured by Users
 
def.h
 
<source lang="cpp">
 
#define WLAN_SSID      "AZURE"      //WIFI network name 
 
#define WLAN_PASS      "azure001"    //WIFI password 
 
  
#define WEBSITE "mcotton.microduino.cn" //Server address 
+
==Hardware Buildup==
#define WEBSITEPORT 8080 //Server port number
+
===Step 1===
#define APP_KIT "TLcrn6vaAahjnvKR2" //Device ID #define APP_KIT "YourDeviceID" //Device ID 
+
*Fixate [[Microduino-OLED]] and '''Structure-A1''' with screws.
 +
[[File:Waetherstep1.jpg||600px]]
  
#define WEBPAGE "/api/v1.0/d"
+
===Step 2===
#define WEBUTTONPAGE "/api/v1.0/ce"
+
*Assemble '''Structure-B1~B5''' with '''Structure-B6'''.   
</source>
+
[[File:Waetherstep2.jpg||600px]]
*OLED display
 
<source lang="cpp">
 
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);    //Set OLED type
 
//-------Font setting: large, medium, small.   
 
#define setFont_L u8g.setFont(u8g_font_7x13) 
 
#define setFont_M u8g.setFont(u8g_font_fixed_v0r) 
 
#define setFont_S u8g.setFont(u8g_font_chikitar) 
 
  
// Thermometer pattern
+
===Step 3===
const unsigned char bmp_tem[] U8G_PROGMEM =
+
{| class="wikitable" style="background-color:#FEF9E7;"
{
+
|'''Note:''' Different revisions of this kit may contain different components. Either a '''Duo-H''' or '''Cube-S1''' should be used. '''Duo-H''' is illustrated.
  0xE0,0x81,0x30,0x83,0x10,0x82,0x10,0x82,0x10,0xFA,0x10,0x82,
+
|}
  0x10,0x82,0x10,0xFA,0x10,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82,
+
*Fixate [[Microduino-Duo-h]] / Microduino-Cube-S1 on '''Structure-A2''' with screws and nuts. 
  0xD0,0x82,0xD0,0xFA,0xD0,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82,
+
*Stack the following modules on [[Microduino-Duo-h]] / Microduino-Cube-S1. 
  0xD0,0x82,0xD8,0x86,0xC4,0x88,0xF2,0x93,0xFB,0xB7,0xF9,0xA7,
+
**[[Microduino-Core+]]
  0xFD,0xAF,0xFD,0xAF,0xF9,0xA7,0xFA,0x97,0xF2,0x93,0xC4,0x88,
+
**[[Microduino-USBTTL]]
   0x18,0x86,0xF0,0x83
+
**[[Microduino-WiFi]]
};
+
**[[Microduino-Sensorhub]] (on the very top of the stack)
 +
*Attach the included adhesive strip onto the '''PM2.5 Sensor''' GP2Y1010AU0F, then to the base board.    
 +
[[File:Waetherstep3.jpg||600px]]
  
//Water drop pattern 
+
===Step 4===
const unsigned char bmp_hum[] U8G_PROGMEM =  
+
{| class="wikitable" style="background-color:#FEF9E7;"
{
+
|'''Note:''' Different revisions of this kit may contain different components. Either a '''Temp&Hum''' or '''Tem&Hum-S2''' should be used. '''Temp&Hum''' is illustrated.
  0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x80,0x03,0x08,0x80,0x03,0x18,0x80,0x07,0x1C,
+
|}
  0xC0,0x07,0x3C,0xC0,0x07,0x3E,0xE0,0x0F,0x3E,0xE0,0x0F,0x7A,0xF0,0x1F,0x7B,0xF8,
+
*Assemble the following sensors with '''Structure-B7, B8, B9'''. 
  0x1F,0x72,0xF8,0x1F,0x3E,0xF8,0x3F,0x1C,0xFC,0x3F,0x00,0xFC,0x7F,0x00,0xFE,0x7F,
+
**Temperature and humidity sensor ([[Microduino-Temp&Hum]] / Tem&Hum-S2)
  0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,
+
**Air quality detector ([[Microduino-Air Quality]])
  0xF3,0xFF,0x00,0xF2,0x7F,0x00,0xE6,0x7F,0x00,0xC6,0x7F,0x00,0x0E,0x3F,0x00,0x3C,
+
**Light sensor ([[Microduino-Light]])
  0x1E,0x00,0xF8,0x1F,0x00,0xE0,0x07,0x00,0x80,0x01
+
[[File:Waetherstep4.jpg||600px]]
};
 
  
//Display function 
+
===Step 5===
void osd_setup(int _osd_setup,char* _osd_text) {
+
{| class="wikitable" style="background-color:#FEF9E7;"
  u8g.firstPage(); 
+
|'''Note:''' Different revisions of this kit may contain different components. Either a '''Temp&Hum''' or '''Tem&Hum-S2''' should be used. '''Temp&Hum''' is illustrated.
  do {
+
|}
    setFont_L;
 
    u8g.setPrintPos(4, 30);
 
    u8g.print(_osd_text);
 
    u8g.drawFrame(0,48,128,14);
 
    if(_osd_setup)
 
      u8g.drawBox(0+2,48+2,map(_osd_setup,0,5,0,128-4),14-4);
 
  }
 
  while( u8g.nextPage() );
 
}
 
 
 
 
 
//Display function
 
void volcd(float temp, float humi, float light, float pm25, float etoh) {
 
  u8g.firstPage();
 
  do {
 
    u8g.setDefaultForegroundColor();
 
 
 
    u8g.drawXBMP( 4, 1, 15, 32, bmp_tem);
 
    u8g.drawXBMP( 70, 2, 24, 30, bmp_hum);
 
 
 
    setFont_M;                            //Set the font to be large 
 
    u8g.setPrintPos(20, 16);        //Set start coordinate of the text   
 
    u8g.print("`C "); 
 
    setFont_L;                            //Set the font to be large
 
    u8g.setPrintPos(20, 32);        // Set start coordinate of the text 
 
    u8g.print(temp , 1);            //Temperature 
 
 
 
    setFont_M;                            // Set the font to be large
 
    u8g.setPrintPos(100, 16);        //Set start coordinate of the text
 
    u8g.print("%"); 
 
    setFont_L;                            //Set the font to be large
 
    u8g.setPrintPos(100, 32);        //Set start coordinate of the text
 
    u8g.print(humi , 0);            // Temperature
 
 
 
    setFont_L;                      // Set the font 
 
    u8g.setPrintPos(4, 49);          //Set start coordinate of the text
 
    u8g.print(light , 0);       //Light intensity 
 
    setFont_M;                      // Set the font
 
    u8g.print(" Lux"); 
 
 
 
    setFont_L;                      // Set the font 
 
    u8g.setPrintPos(4, 63);          // Set start coordinate of the text
 
    u8g.print(pm25 , 1);      // Light intensity
 
    setFont_M;                      // Set the font 
 
    u8g.print(" ug/m3");
 
 
 
 
 
    setFont_L;                      // Set the font 
 
    u8g.setPrintPos(80, 49);          // Set start coordinate of the text
 
    u8g.print(etoh , 0);      //Light intensity
 
    setFont_M;                      // Set the font
 
    u8g.print(" ppm");
 
 
 
 
 
    setFont_M;                            //Set the font to be large
 
    u8g.setPrintPos(80, 63);        // Set start coordinate of the text
 
    u8g.print(" LED:");
 
 
 
  }
 
  while( u8g.nextPage() );
 
}  
 
  
 +
*Connect the sensors below to [[Microduino-Sensorhub]] using a connector wire.
 +
**Temperature and humidity sensor ([[Microduino-Temp&Hum]] / Tem&Hum-S2) to '''pin IIC'''.
 +
**Air quality detector ([[Microduino-Air Quality]]) to '''pin A2/A3'''.
 +
**Light sensor ([[Microduino-Light]]) to '''pin A0/A1'''.
 +
**PM2.5 to '''pin 4/5'''.
 +
*Refer to the picture below, stack all sensors on the slot of '''Structure-B1''' and '''Structure-B2'''. 
 +
*After that, connect '''Structure-A1''' and '''Structure-A2''' at the top and bottom of the system respectively. 
 +
[[File:Waetherstep5.jpg||600px]]
  
void volcdsetup(char* zi,unsigned int x,unsigned int y) {
+
===Step 6===
  //#ifdef OLED
+
*Complete the steps above, plug in a USB cable then fixate '''Structure-B0'''. Congratulations! You finished the buildup of the Weather Station.
  u8g.firstPage(); 
 
  do {
 
    setFont_L;   
 
    u8g.setPrintPos(x, y);
 
    u8g.print(zi);
 
  }
 
  while( u8g.nextPage() );
 
  //#endif
 
}
 
</source>
 
*Sensor data collection 
 
<source lang="cpp">
 
  #include <SoftwareSerial.h>
 
#include <AM2321.h>
 
  
AM2321 am2321;
+
===Step 7===
SoftwareSerial pmSerial(4,5); // Communication soft serial port of the PM2.5 sensor
+
*Power on the Weather Station.
 +
*The Weather Station will connect to the WiFi network. This may take a minute or so.
 +
*After connecting, the OLED screen will display the sensor data.
 +
*If the data does not display, check the serial port in the IDE. It should display debugging information.
  
float sensorTemp;      //Temperature value
+
===Step 8===
float sensorHumi;      //Humidity vale
+
*If the Weather Station successfully connect to the WiFi network. You can now view the data on the Blynk Phone app.
float sensorPM25;      //PM2.5 density 
+
**WiFi Weather Station successfully connected to the WiFi network.
float sensorLight;      //Light intensity
+
::[[File:Wws_connected_to_wifi.png|Wws_connected_to_wifi.png]]
float sensorEtoh;      //Air quality 
 
  
//Read PM 2.5 sensor 
 
float PM25(){
 
  int data_s = 0; //Receive data from the serial port
 
  int num = -1;   //Receive data counting from the serial port
 
  int sum = 0;   //Check sum
 
  int cal[5];     //Receive data cache
 
  float dustDensity = 0; //PM2.5 density
 
 
 
  pmSerial.begin(2400); //Start the soft serial port at the beginning 
 
  pmSerial.flush();   //Clear the serial cache 
 
 
 
  while(1)
 
  {
 
    if(pmSerial.available() > 0) //Serial cache data
 
    {
 
      data_s = pmSerial.read(); //Read the serial cache data
 
      if(data_s == 0xAA)     //Get the start bit of the data frame
 
      {
 
        num = 0;            //Start counting
 
      }
 
      else if(num >= 0)
 
      {
 
        num++;         //Read data. Number+1 
 
        cal[num-1] = data_s; //Data saved in the cache
 
        if(num == 6)       //Read the last bit of the data frame 
 
        {
 
          sum = cal[0] + cal[1] + cal[2] + cal[3]; //Calculate check sum
 
          if(sum == cal[4] && cal[5] == 0xFF)   //Match the check sum and the last bit of the data frame is oxFF, meaning the received data frame is normal.
 
          {
 
            dustDensity = (cal[0]*256 + cal[1])*(5.0/1024)*550; //Calculate PM2.5 density and the unit is ug/m3.
 
          }
 
          else //The received data is not normal.
 
          {
 
            dustDensity = 0;    //Density clear 
 
          }
 
          break;
 
        }
 
      }
 
    } 
 
  }
 
  pmSerial.end(); //Close the soft serial port
 
  return dustDensity; //The returned value 
 
}
 
  
//Sensor data update   
+
*Return to your phone which is running Blynk. Open the Weather Station project. Click on Start (play icon).
void SensorUpdate() {
+
::[[File:Wws_start_project.png|300px]]
  
  //Get the density of the PM 2.5
 
  sensorPM25 = PM25();
 
  //Get temperature and humidity 
 
  am2321.read();
 
  sensorTemp = am2321.temperature / 10.0;
 
  sensorHumi = am2321.humidity / 10.0;
 
  //Get light intensity 
 
  sensorLight = map(analogRead(A0), 0, 1023, 0, 255);
 
  //Get air quality 
 
  sensorEtoh= map(analogRead(A2), 0, 1023, 0, 30);
 
  
}
+
*The sensor data should start streaming to the Blynk app.
</source>
+
::[[File:Wws_project_running.png|300px]]
  
==Video==
+
==Notes==
|}
+
*Please make sure the verification code is configured right. 
 +
*Make sure your router runs normally, the SSID and password are correct.

Latest revision as of 02:34, 19 December 2018

Outline

  • Project: Open Source WIFI Weather Station System.(ESP8266 connected to Blynk)
  • Objective: To get temperature, humidity, light intensity and PM2.5 at the weather station.
    • Note: PM2.5 refers to atmospheric particulate matter (PM) that have a diameter of less than 2.5 micrometers
  • Difficulty: Medium
  • Time-consuming: 2-Hour
  • Maker: Ray

Introduction:

  • Read temperature, humidity, light intensity and PM2.5 data and display those data on the screen.
  • Upload the data to Blynk.
  • View data on phone anywhere using the Blynk app.
  • Created by Microduino with Microduino components.

Bill of Material

Microduino Equipment

Note: Different revisions may contain different components.
Module Number Function
Microduino-Core+ 1 Core board (Arduino)
Microduino-USBTTL -OR- Microduino-USBTLL-C 1 Programmer for Core board
Microduino-WIFI(ESP) 1 WiFi communication module
Microduino-Sensorhub 1 Connector Hub to connect sensors
Microduino-Duo-h -OR- Microduino-Cube-S1 1 Extension board
Microduino-OLED 1 Display
Sensor Number Function
Microduino-Temp&Hum -OR- Sensor-Tem&Hum-S2 1 Digital temperature and humidity sensor
Microduino-Air Quality 1 Air quality detector
Microduino-Light 1 Light-sensitive sensor
GP2Y1010AU0F 1 PM2.5 sensor

Other Equipment

Equipment Number Function
Micro-USB cable 1 For program download and power supply
GP2Y1010AU0F 1 PM2.5 sensor
Screw 7 Fixate modules
Screwdriver 1 Fixate screws
Shell 1

WeatherStationMatiralAll.png

Note: Different revisions will contain different components.

Most noteable are:

  • Duo-V will be replaced with a Microduino-Cube-S1.
  • Humidity/TempSensor will be replaced with a Tem&Hum-S2.

Principle of the Experiment

This Weather Station can detect data including:


Other functions:

Get and Configure Blynk

Next, we'll learn how Microduino interacts with Blynk through the configuration process of the Weather Station.

Download the Blynk App

Visit the Google Play Store or the Apple App Store and download the Blynk app.

You'll need to setup an account with Blynk before proceeding. Please use a valid e-mail as your authentication tokens will be sent to that e-mail.

Using the Blynk App

  • On the main screen of the Blynk app. Click on the QR code scanner to scan the Weather Station app.
Wws qr scan.png


  • Scan the QR code below.
Wws qr code.png


  • Once the project has loaded, click on Project Settings (nut icon).
Wws project settings.png


  • Under Auth Tokens, click on Email all. This will send the authentication token to your registered e-mail. Make note of this, as you will need this token later.
Wws auth token.png


  • Click back to return to the Weather Station app.
Wws weather app.png

Programming

Software Setup

Please follow the guide to ensure your software is correctly setup. The software is required to program the WiFi Weather Station.

Download the latest software for your operating system and follow the getting started guides:

Windows
MicroduinoGettingStart-ForWindows.jpg
IDE Install Guide for Windows
MAC
MicroduinoGettingStart-ForMAC.jpg
IDE Install Guide for MAC

Programming the Weather Station

  • Stack Microduino-Core+ and Microduino-USBTTL together.
  • Connect Microduino-USBTTL with a USB cable. Connect the other end to the PC being used.
  • Open the Arduino IDE for Microduino development environment. (Please refer to the #Software Setup section).
  • Configure the software to upload to the Core+ module as follows:
    • Tools > Board > Microduino/mCookie-device
    • Tools > Processor > Microduino/mCookie-Core+ (644pa)@16M,5V
    • Tools > Port > select the port (On MacOS, NOT the Bluetooth one).
  • Download the code for Weather Station here: File:ESP8266BlynkWeatherStationV2.zip
  • Unzip the file. Under the software (Arduino IDE), go to File > Open... and navigate to the unzipped folder and open the ESP8266BlynkWeatherStationV2.ino file.
  • The sketch with multiple files will open. Click on the userDef.h tab. You'll need to configure the WiFi connection (2.4GHz networks, non 5GHz) with:
    • SSID
    • PASS (WiFi password)
    • auth key as noted earlier in the Blynk app sent to you via e-mail.
Wws configuration.png
  • Click on the upload button (right arrow icon on the top left) to upload the program.
  • The program will compile and upload. Once completed a upload successful message will appear on the bottom left.

Hardware Buildup

Step 1

Waetherstep1.jpg

Step 2

  • Assemble Structure-B1~B5 with Structure-B6.

Waetherstep2.jpg

Step 3

Note: Different revisions of this kit may contain different components. Either a Duo-H or Cube-S1 should be used. Duo-H is illustrated.

Waetherstep3.jpg

Step 4

Note: Different revisions of this kit may contain different components. Either a Temp&Hum or Tem&Hum-S2 should be used. Temp&Hum is illustrated.

Waetherstep4.jpg

Step 5

Note: Different revisions of this kit may contain different components. Either a Temp&Hum or Tem&Hum-S2 should be used. Temp&Hum is illustrated.
  • Connect the sensors below to Microduino-Sensorhub using a connector wire.
  • Refer to the picture below, stack all sensors on the slot of Structure-B1 and Structure-B2.
  • After that, connect Structure-A1 and Structure-A2 at the top and bottom of the system respectively.

Waetherstep5.jpg

Step 6

  • Complete the steps above, plug in a USB cable then fixate Structure-B0. Congratulations! You finished the buildup of the Weather Station.

Step 7

  • Power on the Weather Station.
  • The Weather Station will connect to the WiFi network. This may take a minute or so.
  • After connecting, the OLED screen will display the sensor data.
  • If the data does not display, check the serial port in the IDE. It should display debugging information.

Step 8

  • If the Weather Station successfully connect to the WiFi network. You can now view the data on the Blynk Phone app.
    • WiFi Weather Station successfully connected to the WiFi network.
Wws_connected_to_wifi.png


  • Return to your phone which is running Blynk. Open the Weather Station project. Click on Start (play icon).
Wws start project.png


  • The sensor data should start streaming to the Blynk app.
Wws project running.png

Notes

  • Please make sure the verification code is configured right.
  • Make sure your router runs normally, the SSID and password are correct.