Goouuu-S1 ESP8266

This is an ESP8266 based board, in case you buy one of these here is some info I have found

Goouuu-S1 ESP8266 WiFi module is a low-power, cost-effective embedded wireless network control module. Can be satisfied
Smart grid, building automation, security, smart home, telemedicine applications such as networking needs.
The module’s core processor, the ESP8266, integrates the industry-leading Tensilica L106 ultra-low-power 32-bit microcontrollers
Type MCU with 16-bit thinning mode, clocked at 80 MHz and 160 MHz, RTOS support, integrated Wi-Fi MAC / BB / RF / PA / LNA and onboard antenna.

The module supports the standard IEEE802.11 b / g / n protocol, complete TCP / IP protocol stack. You can use this module tadd networking capabilities texisting devices or tbuild stand-alone network controllers.

Main features

Operating voltage: 3.3V
Operating ambient temperature: -20 – 70 ° C
CPU Tensilica L106
RAM 36KB (available)
Flash 32Mbit
system

802.11 b / g / n
Built-in Tensilica L106 ultra-low-power 32-bit micro-MCU, with 16-bit concise mode, frequency support 80 MHz and 160 MHz, support for RTOS
WIFI @ 2.4 GHz, supports WPA / WPA2 security mode
Ultra-small size module 18.6mm * 15.0mm
Built-in 10 bit high precision ADC
Built-in TCP / IP protocol stack
Built-in TR switch, balun, LNA, power amplifier and matching network
Built-in PLL, regulator and power management components + 20 dBm output power in 802.11b mode
Antenna diversity is supported
Deep sleep current is 20uA and shutdown current is less than 5uA
can double as the application processor SDI2.0, SPI, UART
STBC, 1×1 MIMO, 2×1 MIMA-MPDU, aggregation of A-MSDU and guard interval of 0.4 s
wake-up within 2ms, connect and transmit packets
Standby Power Consumption Less than 1.0mW (DTIM3)
Support AT remote upgrade and cloud OTA upgrade
Supports STA / AP / STA + AP working mode

 

 

How to use?

1) Download USB CH340G Driver (Click Here)
2) Open Arduino IDE and click file–>preference—>and put this link on additional board manager URLs.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
3) Plug In USB Cable to MINI-S1 Board and connect to you computer.
4) wait few mininutes to auto download the driver.
5) Then click Tools–>Board( WeMos D1 R2&Mini ) –>Select the com port you detected and upload.

 

Drawbacks

Its not Wemos pin compatible, so the wemos shields will not work with this board

ESP8266 SHT30 shield I2C code example

This example uses the same Wemos SHt30 shield or one of the variants on the internet but tis time we don’t use a library, no difificult to do this and very handy for learning just in case you ever encounter an I2C device with no library and you may have to write your own.

The key is the datasheet for the device, in there you will find the I2C address(es) and any commands or configuration that you may need, the SHT30 is quite an easy one. You can actually look at the code in the libraries you download (or on github) as well.

Code

#include <Wire.h>
 
// WEMOS SHT30 I2C address is 0x45
#define Addr 0x45
 
void setup()
{
  // Initialise I2C communication as MASTER
  Wire.begin();
  // Initialise serial communication, set baud rate = 9600
  Serial.begin(9600);
  delay(300);
}
 
void loop()
{
  unsigned int data[6];
 
  // Start I2C Transmission
  Wire.beginTransmission(Addr);
  // Send measurement command
  Wire.write(0x2C);
  Wire.write(0x06);
  // Stop I2C transmission
  Wire.endTransmission();
  delay(500);
 
  // Request 6 bytes of data
  Wire.requestFrom(Addr, 6);
 
  // Read 6 bytes of data
  // cTemp msb, cTemp lsb, cTemp crc, humidity msb, humidity lsb, humidity crc
  if (Wire.available() == 6)
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
    data[2] = Wire.read();
    data[3] = Wire.read();
    data[4] = Wire.read();
    data[5] = Wire.read();
  }
 
  // Convert the data
  float cTemp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;
  float fTemp = (cTemp * 1.8) + 32;
  float humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);
  // Output data to serial monitor
  Serial.print("Relative Humidity : ");
  Serial.print(humidity);
  Serial.println(" %RH");
  Serial.print("Temperature in Celsius : ");
  Serial.print(cTemp);
  Serial.println(" C");
  Serial.print("Temperature in Fahrenheit : ");
  Serial.print(fTemp);
  Serial.println(" F");
  delay(500);
}

 

Output

Open the serial monitor

Temperature in Celsius : 30.02 C
Temperature in Fahrenheit : 86.03 F
Relative Humidity : 56.31 %RH
Temperature in Celsius : 30.56 C
Temperature in Fahrenheit : 87.02 F
Relative Humidity : 60.39 %RH
Temperature in Celsius : 30.98 C
Temperature in Fahrenheit : 87.77 F
Relative Humidity : 60.43 %RH
Temperature in Celsius : 30.55 C
Temperature in Fahrenheit : 86.99 F
Relative Humidity : 54.71 %RH
Temperature in Celsius : 30.28 C
Temperature in Fahrenheit : 86.51 F
Relative Humidity : 49.55 %RH

ESP8266 and SHt30 shield example

This time we look at the SHT30 shield from Wemos. Now there are other versions of this board as well, this is the official one. You will notice they now use LOLIN (after all of the dubious clones of their products I’m assuming on the internet)

For reference the other boards look like this, I have tried these and they work as well

Here is some blurb about the SHT30

The new digital SHT3x humidity sensor series takes sensor technology to a new level. As the successor of the SHT2x series it is determined to set the next industry standard in humidity sensing. The SHT3x humidity sensor series consists of a low-cost version with the SHT30 humidity sensor, a standard version with the SHT31 humidity sensor, and a high-end version with the SHT35 humidity sensor. The SHT3x humidity sensor series combines multiple functions and various interfaces (I2C, analog voltage output) with a applications-friendly, very wide operating voltage range (2.15 to 5.5 V). The SHT3x humidity sensor is available in both large and small volumes.

More information at sensiron

The sensor is an I2C device so uses D1 and D2

 

Code

Wemos have their own library so we will use that – https://github.com/wemos/WEMOS_SHT3x_Arduino_Library

I changed the baud rate in Serial.begin, I couldn’t get the example to work. Not sure why but this did. there is also an example which use this and the OLED shield in the github repo, worth looking at

#include <WEMOS_SHT3X.h>
 
SHT3X sht30(0x45);
 
void setup() 
{
  Serial.begin(9600);
}
 
void loop() {
 
  if(sht30.get()==0){
    Serial.print("Temperature in Celsius : ");
    Serial.println(sht30.cTemp);
    Serial.print("Temperature in Fahrenheit : ");
    Serial.println(sht30.fTemp);
    Serial.print("Relative Humidity : ");
    Serial.println(sht30.humidity);
    Serial.println();
  }
  else
  {
    Serial.println("Error!");
  }
  delay(1000);
 
}

 

Output

Open the serial monitor and you should see something like this

Temperature in Celsius : 30.47
Temperature in Fahrenheit : 86.84
Relative Humidity : 40.68

Temperature in Celsius : 31.28
Temperature in Fahrenheit : 88.31
Relative Humidity : 53.50

Temperature in Celsius : 31.73
Temperature in Fahrenheit : 89.12
Relative Humidity : 61.84

 

Link

This is a clone

SHT30 Shield for WAVGAT D1 mini SHT30 I2C digital temperature and humidity sensor module

WS2812B RGB SHIELD for WeMos D1 mini examples

In this example we look at a new wemos shield (for us anyway), this is called the RGB shield and as you might expect contains RGB leds, in fact it has 7 of these LEDs

7 RGB LEDs (WS2812B-mini) each with 24-bit RGB color

Not a lot to say about this other than lets look at some examples

Code

You need to add the Adafruit Neopixel library for these examples, there are other libraries you can try of course –

Example 1

#include <Adafruit_NeoPixel.h>
 
#define PIN   D4
#define LED_NUM 7
 
// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);
 
 
void setup() 
{
  leds.begin(); // This initializes the NeoPixel library.
}
 
 
 
void led_set(uint8 R, uint8 G, uint8 B) 
{
  for (int i = 0; i < LED_NUM; i++) 
  {
    leds.setPixelColor(i, leds.Color(R, G, B));
    leds.show();
    delay(150);
  }
}
 
void loop() {
 
  led_set(10, 0, 0);//red
  led_set(0, 0, 0);
 
  led_set(0, 10, 0);//green
  led_set(0, 0, 0);
 
  led_set(0, 0, 10);//blue
  led_set(0, 0, 0);
 
}

 

Example 2

#include <Adafruit_NeoPixel.h>
 
#define PIN   D4
#define LED_NUM 7
 
// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);
 
 
void setup() 
{
  leds.begin(); // This initializes the NeoPixel library.
}
 
 
 
void loop() 
{
  for (int i = 0; i < LED_NUM; i++) 
  {
  leds.setPixelColor(i, leds.Color(10, 0, 0));
  leds.show();
  delay(250);
 
  leds.setPixelColor(i, leds.Color(0, 10, 0));
  leds.show();
  delay(250);
 
  leds.setPixelColor(i, leds.Color(0, 0, 10));
  leds.show();
  delay(250);
  }
}

 

Example 3

My favourite this one

#include <Adafruit_NeoPixel.h>
 
#define PIN   D4
#define LED_NUM 7
 
// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);
 
 
void setup() 
{
  leds.begin(); // This initializes the NeoPixel library.
  Serial.begin(9600);
  randomSeed(analogRead(A0));
}
 
 
void loop() 
{
  //you can make the colours 255 but that is bright
  int redRandom = random(10);
  int greenRandom = random(10);
  int blueRandom = random(10);
  int ledRandom = random(7);
  leds.setPixelColor(ledRandom, leds.Color(redRandom, greenRandom, blueRandom));
  leds.show();
  delay(250);
}

There are other examples in the Neopixel libarry which you can try and adapt as well

Buy it from Wemos at https://www.aliexpress.com/store/product/WS2812B-RGB-SHIELD-for-WeMos-D1-mini/1331105_32666803472.html