Déc 022018
 

In previous article, we have seen how to flash an ESP8266 with ESPEasy.

Lets now see how easy it is to use a sensor such as a DHT11 temperature/humidity sensor.

Lets wire 3v3 and ground and data to our esp8266 gpio 0.

Now, simply add a device on port GPIO 0 and pick a type « Environment – DHT11/12/22 ».

And your ESPEasy should now report temperature and humidity.

Déc 022018
 

I had this old esp-01 standing on my desk for a while and decided to dust it out by flashing Espeasy firmware.
About this esp8266, see previous articles here.

Note that if you are not sure which esp8266 you model you have, check it out here.

Before we flash, lets do some simple wiring :
-wire 3v3 and ground.
-wire tx to rx, and rx to tx (I use a usb to serial ftdi adapter)
-set gpio0 to low (ground)
-set ch_pd (also referred to en) to high (3v3)
-power off/on to enter flash mode

It is as simple as put your firmware next to flashesp8266.exe (in my case firmware is ESPEasy_mega-20180102_normal_ESP8266_1024.bin) and execute ESPEasy Flasher.

Once flash is completed, set gpio0 free (but leave ch_pd high), power off/on and you should see a new ssid on your network called esp_easy_0 (password=configesp).
configure it i.e connect it to your wireless network and you are done.

Août 062018
 

Like many drone geeks out there, I own a flysky fs-i6 to pilot my drone racers.

As 6 chanels is a bit short (both sticks will take 4 chans which leaves you with 2 extra channels only), I wanted to flash my remote with a custom firmware.

I decided to use this fw : https://github.com/benb0jangles/FlySky-i6-Mod- and/or this one https://github.com/qba667/FlySkyI6/releases .

Issue is that using my usual usb to serial module, my remote would not be detected.
I check my baud rate (115200), switched rx/tx, but nothing would do.

I suspect that this is down the voltage of my usb serial module (5v versus 3.3v).
I finally decided to use a nano arduino module : i shorted reset to ground, connected rx to rx, tx to tx and voila : remote is detected (when opening port) and I could « program » my remote 🙂

 Posted by at 18 h 10 min
Jan 032016
 

In a previous article, we had managed to snif & record RF signals, decode it and reproduce it with an arduino.

Thus, even if you can visualize the wav form in Audacity (or any other sound editor), it is not easy to « read » the signal.

The attached software (source code provided) will not only display the wave form, but also shape it as a « square » form and eventually provide a textual reading (high for xx ms, low for xx ms, …).

This makes it easier to reproduce (from an arduino) or eventually make a better guess at what the signal (or part of it) actually is.

Below :

1-the original wave form

2-the square form

3-a textual reading of the worm

Hope this helps others 🙂

 Posted by at 17 h 17 min
Déc 132015
 

Last ESP8266 example for the day (credit goes here) : a web server turning a lef off and on.


#include <ESP8266WiFi.h>
 
const char* ssid = "livebox0";
const char* password = "password";
 
int ledPin = 2; // GPIO2
WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
 
// Set ledPin according to the request
//digitalWrite(ledPin, value);
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Led pin is now: ");
 
  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>");
  client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF<br>");
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

Déc 132015
 

In previous article, we have seen how to talk to a 8266 thru serial.

We could do the same from an arduino and therefore use this module as a slave.
But why introduce a second MCU when the ESP8266 itself is a MCU?

Our arduino IDE can actually program such a MCU (next to the atmega series).
For this you will need latest arduino ide (version 1.6.4 and up).
You will also need to add support for the ESP8266 : see here how to do this.

Once done you are ready to program your MCU.
Dont forget to pull GPIO0 down but also to reset your MCU when entering the flash phase (or else you’ll get « error: espcomm_open failed »).
Once flashed, set GPIO0 free.

See below our arduino ide flashing the blink demo.

Déc 132015
 

In a previous article, we saw how I flashed my new ESP8266.

Now lets see how to « talk » with this module.

First wiring : chpd high, 3v3+gnd, tx to rx / rx to tx.

Lets launch putty,
select serial,
enter the right com port (com7 for me, using my usb to serial adapter),
select 9600 bauds (if it does not work, try 57600 or 115200).

Lets try the below command (ctrl/m + ctrl/j to enter):
-AT should respond OK
-AT+GMR should to get the firmware revision
-AT+CWMODE=3 to select AP & STA mode
-AT+CWLAP to list access points
-AT+CWJAP=“SSID”,“password” to connect to an AP
-AT+CIFSR to retrieve the ip (at this point you should be able to ping the module on your home wifi network)

Déc 122015
 

Just received my esp2866.
Read more about it here.
In short it is a wireless soc which you can control from a MCU (like Arduino) thru serial OR use directly as MCU (from Arduino IDE).

ESP8266

First things first : lets flash it with the latest firmware.

1-get the firmware here.
2-get the flasher here.
3-wire 3v3 and ground.
4-wire tx to rx, and rx to tx (I use a usb to serial ftdi adapter)
5-set gpio0 to low (ground)
6-reboot (power off/on will do)
7-flash
8-set gpio0 free
9-reboot and enjoy

Mar 032015
 

These days it is pretty easy to setup a Home Theater PC using a cheap computer (raspberry being my preferred choice).

Still, the remote control is many times the weak point.
It is easy to buy or refurbish an infrared remote transmitter, it is less easy/cheap to find an infrared receiver.
Thus, you can find some cheap telco+receiver like these :
amazon
ebay

I then thought it would be fun/interesting to use an arduino for this.

Quickly googling, I found 2 ways to achieve this :
-turn my arduino into a HID device (probably the cleanest way but more complex) thru the use of the v-usb firmware
-have the arduino send (over serial) the expected datas to LIRC (less complex but more prone to errors)

Lets do some mad googling and collect some interesting pointers

-setup LIRC and a FDTI232 adapter : here
-the arduino IRRemote lib as you will need to decode the incoming signals : here
-some arduino code which seems to turn the arduino into a lirc receiver : here
-another possible interesting thread : here
-a similar project with interesting links especially around irman protocol : here
-similar project using IRMAN protocol : here
-related, on attiny85 : here

-v-usb track : here

Fév 282015
 

This is the last article about my water impulse counter project.
3 previous articles can be found here .

The last issue I encountered was about electro magnetic disturbances (probably my gaz heater nearby).
I initially planned to detect FALLING impulses (high to low, low meaning the reed switch is closed).
But about 4 times per hour, i detected a falling impulse, and this even the water circuit closed !

I therefore decided to review my code in the interrupt function now based on a CHANGE event (no more FALLING).


void IntChange() {
if (digitalRead(SWITCHPIN)==LOW) {
start=millis();
change=false;
} else {
if (start>0) {
pulse=millis()-start;
start=0;
change=true;
} else {
start=0;
change=false;
}//if (start>0)
} //if (digitalRead(SWITCHPIN)==LOW) {
}

And this proves to work perfectly now 🙂
See graph below.

The whole code can be found here.
it includes a web server (for my domotic box to query), a sd card reader (to store the counter value between power off), an interrupt handler.