An Overview of Content Scraping Protection

Do you care about SEO? Then you must protect your content from scrapping. You can lose the competitive advantage and revenues to content scraping. Google can penalize you if they detect that your content is plagiarized. You can incur losses in your website traffic up to 99%. Since content is the primary driver of traffic and sales, protecting it from scrapping and others increases your sales and boost your SEO. Content scraping is carried out by bots called scrappers controlled and commanded by a cybercriminal. Scrapper bots repurpose the scrapped content to malicious actions. These actions include copyright violation, duplicating the content to an attacker’s website, and stealing organic traffic. To understand how to protect yourself from scrapping, let us first understand how the bots scrape content.

How is content scrapped?

A scrapper bot sends a sequence of HTTP GET requests to a web server. It then copies all the information sent in response and saves it. It repeatedly does this until all the content has been scrapped.

Scrappers can use JavaScript to download gated content or fill out every form on a website. The automation in browser programs and APIs allow the automated bots to interact with online infrastructures as they apply the traditional web browser techniques. They effectively trick the computer into thinking that the user accessing the content is a human.

The last way that content may be scrapped is by the actual user. They can decide to go through all your content and copy what they find useful or everything within a website. Unlike bots that do this in a matter of seconds, human beings can take days or hours exposing themselves to the risk of detection.

Why do scrappers steal your content?

There are various motives that an attacker may have to scrape your website content. The baseline is that scrappers can monetize your content or generate more traffic to them. Below are the main reasons for content scraping?

To generate leads

When an attacker is part of a small community and wants to seem like leaders in their field, they result in scrapping related content. When you search for an established company, you end up on their site because they have scrapped its content. This is called lead generation. It is common in legal practice and upcoming businesses.

Advertising revenue

Other people may have good intentions, like creating a knowledge hub—a one-stop place for users in a specific field. When you catch them in action, the reply is that they were doing it for the good of the community.

Commissions from affiliate marketing

Some other attackers use your content to make a few extra dollars through affiliate marketing. They combine the scrapped content with driving search engine traffic to their websites. These websites are usually used to promote certain products.

Techniques for content scraping protection

Content is at the heart of any online business. Therefore, you need to take proper care. By adopting measures to protect the content, you protect your business from the related risks and defend the reputation of your brand. When scraped, they post your content elsewhere. Among the other ways, Really Simple Syndication (RSS) is the most commonly used scrapping method. With all the risks and disadvantages of content scrapping in mind, you must take adequate measures to protect your website. Below are some of such measures.

Limiting the access to a post

Many websites allow uninhibited access to articles and website posts to ensure that society is well informed. Unfortunately, the scrapping bots and attackers take this opportunity to scrape the data. By allowing access to only a few lines or paragraphs, you ensure the attacker has bits of information that they cannot use. This frustrates them as attackers as they cannot use your quality content. To access the rest of the content, you can ask a user to create an account and log in or subscribe by paying cash. These methods will help identify if the user is a bot or an actual human being while protecting your content from scrappers. If it is a bot, they will not pay the cash but may create the account and log in. Therefore, it is advisable to implement the two measures together.

Protection by using the CAPTCHA

A CAPTCHA is a Turing test designed to tell between humans and bots. They are easy enough that any average human can answer while remaining complicated for the other computers and computer programs like bots to fill. A CAPTCHA can help you protect content scrapping by blocking the suspicious bot areas. They come in various forms, including invisible CAPTCHA, confident CAPTCHA, math problems, entering the characters on the screen, honeypot CAPTCHA, among other CAPTCHA solutions. While security researchers hint they are ineffective in protecting your content from malicious bot actions, they also advise that it is better to have them installed. The only limitation of various CAPTCHA implementations is that they influence a user’s experience negatively.

Protection through traffic monitoring

Through monitoring traffic, you can ensure that all the traffic comes from legitimate sources. If any originates from a suspicious source, you can take measures to investigate and eradicate them. Besides helping you protect your content from scrapping, traffic monitoring helps identify other issues that may pose a threat to your content. They include a denial of service, account takeovers, and scalping. In this method, you can identify the sources and block them. These block any further encroachment of your content by these scrappers.

Adding links to your content

To save your content from scrapers, you can add links within it. This is an easier way to protect your content. When a scrapper copies the content, they leave the links intact. While this protects it, linking the keywords makes your content more engaging to the users. Plugins that enable customizations in RSS feeds, and HTML codes can accomplish this. This ensures that when the attacker posts your content on their website, users get redirected to your site when they click the content and keywords.

Rate limiting

Bots browse the web pages incredibly fast. Because they have to complete the actions first before they are detected, they leverage speed as one option to remain invisible.

Therefore, they can access over 50 pages in seconds. The number of incoming requests when such an activity is detected can help protect your content from scrapping. Besides scrapping protection, limiting the access rates can also prevent a more DDoS attack.

Protecting your content using a bot management solution

Because the attackers use modern techniques when developing the scrapping bots, you also have to match the response by bringing the big guns. Bot management solutions are sophisticated modern utilities that also use modern methods to ensure the safety of your content from bot activities. They differentiate the legitimate bot from a malicious one and take measures to ensure your website, mobile application, or API’s security is fortified. Such solutions like DataDome analyze every request to an API, website, or Mobile application for various bot activities in real-time. When they detect a threat, they use all measures to protect and safeguard the integrity of your content. Besides content scrapping protection, DataDome protects you from other OWASP Automated Threats (OAT).

Other measures include; setting Google alerts when a person tries to copy your content, embedding the content into a media and regularly changing the HTML markup.

Conclusion

Bot developers devise new ways and tricks to develop stealthy bots that are more efficient daily. Therefore, the risks associated with bot activity will not go away in a jiffy. It is for this reason that you need to put mechanisms to protect your content from scrapping. Though no one technique guarantees 100% safety, using a bot solution like DataDome gives better results because it is a real-time tool for bot management.

ESP8266 – Serial Communication

Today we will talk about an extremely powerful tool in the use of microcontrollers. The Serial communication, specifically the USART (Universal Synchronous Asynchronous Receiver Transmitter) standard. The system works using two wires. RX (Receiver) and TX (Transmitter), connecting two devices. The RX of one is connected to the TX of the other. If the choice is for a synchronous connection, it may be necessary to add one or two more pins to operate as a “traffic light”. But most current microcontrollers can operate asynchronously, which saves us the expense of pins. Data is sent, as the name implies, in a series of bits. ESP8266 provides us with two ports, one of them converted to USB in the NodeMCU module.
Where To Buy?
No.ComponentsDistributorLink To Buy
1ESP8266AmazonBuy Now

Applications

The range of uses of serial communication is limited only by creativity. Here I will mention three more general scenarios and detail some applications within them.

1. Communicating with computers

With a USB cable, we were able to connect the NodeMCU with a computer via Serial. Arduino IDE already gives us the first use. With Serial Monitor, we can send commands or debug the functioning of our code. But the integration with other software is pretty powerful. Imagine, for example, access control in which a circuit with ESP8266 reads an RFID card and sends it via Serial to a Permission Validation System. Or even an LED panel that receives a software display text.

2. Communicating with microcontrollers

Probably the most common application. Whether to integrate into a preexisting circuit or to distribute functionality between microcontrollers. This integration can be done between different microcontrollers. As long as they operate with the same voltage (3.3V) or use a level converter. An application example is to integrate the ESP8266 wifi with the analog ports of an ATMEGA328 to build an IoT toxic gas sensor. We already know that the ESP8266's analog port is quite inefficient. Then it is possible to perform the analog reading on the ATMEGA328 and send the information to ESP8266 by Serial.

3. Communicating with industrial machines

This, without a doubt, is the most interesting way to integrate industrial machinery with WEB systems. The older industrial equipment that allows some automation, provides RS232 or RS485 ports for integration with PLCs. In these cases, the commands are pretty plastered, but hopefully, well documented. The voltage level is 12V or 24V, but there are converters and logic levels to solve this. The industry 4.0 paradigm has been operating to make this kind of integration. Some PLCs are already developed with wifi modules. And on that account, circuits with the ESP8266 have the immense advantage of low cost. The vision behind this is to be able to remotely monitor or control an entire industrial plant. Tracking KPIs for predictive maintenance, doing recalibrations, and managing production.

Main Functions

The Serial library has a good variety of functions for Serial communication, but most are for very specific uses. We will discuss the most common ones and may return to others in the future as needed by the projects.

Serial.begin()

The first function to be used. It initializes Serial communication informing the data transfer speed (in bits per second) and, optionally, a configuration parameter. By default, Serial is configured to send data in 8-bit packets plus a terminator, not including parity. The best way to imagine this communication is to imagine a train, where each byte (8 bits) sent is a car, and the terminator is the connection between them. This standard is used in most devices, but if you need to integrate a device with another standard, the config parameter allows you to change the number of bits in the packet (from 5 to 8), the number of stop bits (1 or 2 ) and enable or disable parity (a packet integrity check). The speed uses some preset values. The fastest that remains stable for the ESP8266 is 115200 changes per second. So we could start with: Serial.begin(155200) The function below presents the same result, making the config parameter explicit. Serial.begin(115200, SERIAL_8N1)

Serial.available()

The function returns an integer with the number of bytes available in the read buffer. The maximum of bytes in the buffer is 64. This function is very useful for monitoring incoming information. Value = Serial.available()

Serial.read()

The function returns the most recent byte in the input buffer and removes it from the buffer. It is ideal if your communication is byte-to-byte. For example, if you are receiving input from a keyboard, the function would return the key you typed. It returns an integer with byte or -1 if no data is available.

Serail.readString()

This function is best suited for reading strings. Like words. It is the equivalent of calling the read() function continuously until it reads all the information from the buffer. The function returns a string with the data.

Serial.print() and Serial.println()

The two functions are very similar. It takes a value and sends it serially in ASCII format. It is also possible to define the numerical base before sending (binary, decimal...) and the number of decimal places. The function can be used either in the format: Serial.print(value) And the format: Serial.print(value, format) The table below presents some usage examples. The println function works pretty much the same, but it adds the return character ‘\r’ and newline ‘n’ at the end of the packet. It's the equivalent of typing in a text editor and pressing the "Enter" key.

Serial Monitor

The Arduino IDE provides a very powerful tool for debugging and testing Serial communication. The Serial Monitor. The tool is pretty intuitive, but let's take a look at its fields.
  • Sending data: This allows us to send commands directly to the microcontroller
  • Autoscroll: Very useful when we've already received enough information to fill the screen
and don't want to move it down manually.
  • Terminator: Choose whether or not to include the new line and carry return characters at the end of the message before
  • BaudRate: Defines the communication It must be the same as the microcontroller, or
packet loss or character misreading problems will occur.

Controlling and monitoring an LED

Let's make a simple code to control and monitor the NodeMCU LED from the Serial monitor. The code will monitor the Serial, and each time it receives the command “ON”, it will turn on the LED, when it receives “OFF”, it will turn off the LED when it receives “STATUS”, it will return the status of the LED in the Serial. We will create three functions to perform the actions.
  • turnOn() : To turn on the
  • turnOff() : To turn off the
  • statusLED() : To read the pin status and return information in the serial.
We initialize the Serial in the Setup function. In the loop() function, we check if there is any data in the input buffer of the serial, if there is, it saves the buffer values in the variable “payload”. Finally, we check the payload value to decide the action. Here it is important to note that we use an equality comparison and that “ON” is different from “ON “. For this reason, when sending the information through the Serial Monitor, we choose the “No line ending” option. And so is our final code. Compiled, written to nodeMCU. Open the Serial Monitor, remember to put the correct baud rate and the "No Line ending" and send one of our 3 commands. This is simple code, but very powerful. So, that was all for today. I hope you have enjoyed today's tutorial. If you have any questions, please ask in the comments. Thanks for reading.

Skills & Attributes Needed In Engineering

If you are planning on a career as an engineer, it is important that you are aware of the various skills and attributes that employers look for. This is a terrific field to work in with highly rewarding and valuable work, high earning potential, and great job opportunities, but this is also one of the more challenging industries to crack, and there are many skills and attributes that are required. These are skills and attributes that can be developed, though, so if you lack in any, then you should be able to find ways to develop and improve. Read on to discover the skills and attributes that employers are looking for in engineering.

Hard Skills

Obviously, hard skills are essential in a field that is so technical. The hard skills that you need will depend on the field of engineering that you are entering but could include skills such as:

  • Programming
  • Computer science
  • Statistics
  • Structural analysis
  • Data modeling
  • System design and analysis

These are hard skills that you can learn in school or teach yourself. These are hard skills that need to be strong skills, so you need to really focus on these areas and ensure that you have a high level of knowledge when looking to enter the field.

Problem-Solving

Engineering is, essentially, problem-solving, so it is vital that you are able to assess situations, determine problems and find the best solutions. There are many issues and problems that can arise during a project, so employers will want to see that you are able to solve problems effectively and efficiently. You can develop your critical thinking skills to become a better problem-solver and find the best solutions to issues that you might face.

Teamwork

Engineering is all about teamwork, so you need to be able to work with others and understand the importance of playing your role. Engineers rarely work alone, and you will usually be working with colleagues and other professionals, so it is important that you are a team player and a strong communicator in order to find success and to stand out to employers.

Communication Skills

Leading on from this, engineers need to have strong communication skills, and this is sometimes an overlooked aspect. Having hard skills is vital, but you will not get very far if you are not a good communicator as you will constantly be talking to people throughout the day. You need to be able to listen to the needs of the client, clearly present your ideas, work as part of a team and also be capable of leading on projects.

Additionally, having good communication skills will help you to develop a positive reputation and form strong relationships. As with any industry, this is crucial for getting ahead and finding new opportunities. It is true that some people are better communicators than others, but it is possible to improve your communication skills with research and practice, and this should improve your life in many ways.

Project Management

You also need to be able to manage projects if you want to rise to leadership positions in engineering. This will involve managing teams and integrating external professionals while delivering projects on time and within the pre-agreed budget. Project management is a difficult skill to master, which is why many aspiring engineers find it useful to take project management training. For engineers, Six Sigma training is popular and will help to develop the project management skills that you need to find success in engineering.

Innovation

In order to find success in engineering, you need to be innovative and creative. Engineering is always about improving and making things better, so you need to be able to innovate and use creativity to constantly be improving and coming up with the best solutions. In order to be innovative, you need to think outside of the box, stay current with technology, continue to learn, and constantly push yourself to think bigger.

Attention To Detail

Engineers need to be able to see the big picture and be innovative, but you also need to have excellent attention to detail. It is often the small things that matter in engineering, as a slight miscalculation can cause the whole project to fail, and this could even cost lives. This is why you need to be meticulous in your work and take pride in your attention to detail. In order to be meticulous in your work, you need to have high concentration levels and be able to focus intensely. This also means that you need to know how to disconnect from work, recharge your batteries and unwind so that you can give it your all each day.

Engineering Management

If you have aspirations of climbing the ladder and rising to leadership positions, you need to have specialist engineering and management skills that will help you to lead teams, deliver projects and run a profitable business. You can get a master's in engineering management at established schools like the University of Ottawa, and this will teach you all that you need to know to excel in engineering management. You will learn about key aspects such as budgeting and finance, people management, leadership, product innovation management, AI-driven decision making, and operations management, just as a few examples.

You can also earn a masters in engineering management entirely online. This can make it easier for people to fit into their lifestyle and allows you to start using what you learn straight away to stand out and start to climb the ladders.

Committed

Engineering does not work that you can succeed with if you are not committed. With engineering projects, you may have to spend long periods of time away from home and be on call 24/7, so it will inevitably have a big impact on your lifestyle. This means that you need to be committed to the cause and willing to put your job first. Working as an engineer will have an impact on your personal life, but it is also working that is hugely rewarding and can be lucrative, so this is something that you will need to weigh up. While it can be demanding, you may also benefit from quieter periods where you can spend much more time at home and with loved ones too.

Resilience

Another part of the job that you need to be prepared for is setbacks. When you are working on a major project with lots of moving parts, it is inevitable that there will be setbacks along the way. This can be incredibly frustrating, so you need to be resilient in order to not allow these setbacks to put you off and so that you can simply continue working and find the best solution to keep the project moving forwards at all times.

Pressure-Management

Leading on from this, you also need to be able to handle pressure and be able to work to a high standard in stressful situations. Working on large projects involving lots of money and tight deadlines creates tense working conditions, and you will have people breathing down your neck, so you need to be able to handle this and prove yourself to be reliable under stress. This is something that is developed with experience, but you can also develop your abilities to work under pressure by improving your work ethic, setting yourself targets, and breaking tasks down into smaller tasks.

Commitment To Learning

Even with a master’s in engineering management, there is still a lot to learn, and you need to be committed to learning in order to find success as an engineer. This is because this is a field that is constantly going through change, so you need to be able to stay current and up to date with the latest trends and technological developments. You can do this by attending industry events, networking, reading publications, taking further courses, engineering blogs and podcasts, and research.

Positive Mindset

Finally, you will need a positive mindset if you want to be an engineer. You will be facing a lot of negativity in your work with setbacks, stressful working conditions, and tight deadlines, so you need to be able to maintain a positive mindset and this is something that employers will always be looking for. Those with a positive mindset will be able to stay motivated, work to a high standard each day and help to lift the overall atmosphere. Crucially, to have a positive mindset, you need to be able to lead a healthy lifestyle, switch off after work and find ways to enjoy yourself. Having a positive mindset also requires being in the right job, so if you find that you are not happy in your work, then you may want to consider a change.

These are the main skills and attributes that are needed to find success in engineering. If you do not possess these, they can be developed, and it is worth the effort as this will help you to stand out to employers and find work.

ESP8266 – Knowing the NodeMCU GPIOs or Pinout

Where To Buy?
No.ComponentsDistributorLink To Buy
1ESP8266AmazonBuy Now

Introduction

When the subject is ESP8266, it is normal that our attention is on the Wifi module. We've already discussed some applications in previous articles, and there's still a lot of cool stuff to see in the future. We've looked at how the ESP8266 communicates with the world via wifi, and now we'll look at how it does it through its pins.

We will make a decision here. The ESP8266 is found in several modules. Each module with its pin provision. ESP-12 modules provide the most features. To make better use of these features and have a more protoboard-friendly module at hand, we will analyze the NodeMCU module with the ESP-12E.

Overview and Electrical Data

The NodeMCU pins are available in two rows with a spacing that allows them to fit on a breadboard (in particular, I find the pins a little thicker than they should be, and I think if they had more length and less width, it would be even more efficient).

  • The NodeMCU interferes just a little with ESP-12 pins. It does an untreated exposure of each of them.

It is interesting to see what NodeMCU adds or changes to the ESP-12.

Power Source

ESP8266 operates on 3.3V, ESP-12 exposes the VDC pin for direct power. The NodeMCU incorporates a voltage regulator (usually the AMS1117) that can receive a 5V to 10V input and deliver a stable 3.3V supply to the ESP-12.

But what advantage does this give us? nodeMCU is a development module. Choosing pins that fit the breadboard shows us this. Being able to receive 5V greatly increases the practicality of the power supply. 5V is the standard used on USB, so even a cell phone charger can keep everything running.

The power can be supplied directly via the USB connector (standard USB = 5V) or the Vin pin (5V to 10V). The regulator provides a maximum of 500mA.

The pins involved in the power are:

  • Vin: Positive voltage Operates with voltages from 5V to 10V.
  • GND (G): Reference voltage for voltage input and
  • 3V (3V): Output voltage with a value of 3.3V
  • VU: On some models, this pin is not connected to But Lolin's V3 model provides a 5V output provided directly by USB.

Some important considerations to keep in mind:

  • The 3V3 regulator provides a maximum of So be careful what you feed the 3V3 pins.
  • The Module can be powered by either USB or Vin But it is not recommended that it occur for both at the same time.

Serial – USB Adapter

The ESP-12 provides us with two UARTs, with UART0 (pins RXD0 and TXD0) being used in programming. The NodeMCU Module integrates a Serial-USB converter that greatly facilitates our work.

The USB connector can be used for power and data communication via Serial. For this reason, it is a sufficient condition for recording the ESP8266.

A point of attention here: The RXD0 and TXD0 pins are available as GPIO pins (respectively GPIO3 and GPIO1). But they need to be used very carefully. Enabling these pins as GPIO disables USB.

Digital Pins (GPIO)

Digital pins or GPIO (General Purpose Input Output) are pins intended for binary control. It can have a HIGH or LOW state and can operate both, as an input (for reading digital states) and as a digital control (turning on LEDs, for example).

If you take a look at the nodeMCU image, you will notice that it talks about 13 GPIOs (From GPIO0 to GPIO15). So we have 13 pins for input and output control? Not exactly.

Most microcontroller pins have more than one function, this function is defined through registers. In the case of NodeMCU, some GPIOs are already in use. And if we configure it as a digital pin, we lose some functionality.

Let's look at it on a case-by-case basis:

  • GPIO4 and GPIO5: Starting with the easiest. These two have only the GPIO function. It can operate as Input or Output.
  • GPIO0 and GPIO2: These pins play a very specific role in the ESP8266 startup. For that reason, they can only operate as
  • GPIO1 and GPIO3: As we have seen, these pins are used by USB so they are not recommended for use as GPIO in
  • GPIO9 and GPIO10: ESP8266 uses an external FLASH memory chip and communicates with it with a 4-bit SDIO interface. These two pins are on the list. By default, both are used in this But it is possible to set it to 2-bit mode and release these two pins. You gain in the number of pins, but you lose in memory access speed.
  • GPIO12, GPIO13, GPIO14, GPIO15: These pins can be used in other modes, but by default, they are free GPIOs for use as Input or

Ah, an important point to mention: ESP's GPIOs operate at 3.3V.

Analog Pinout

The Esp8266 only provides one analog input (ADC0 pin), and that's probably its biggest weakness.

Although the module operates with 3.3V, the analog input operates from 0 to 1V. Which significantly limits the resolution.

Main functions for GPIO in the Arduino IDE

To control the GPIOs, the Arduino IDE provides us with some functions. Among the main ones, times:

pinMode(pin, mode)

pinMode() defines the mode in which the pin will act. The possible modes are:

  • INPUT: The pin will be configured as a digital input
  • OUTPUT: The pin will be configured as digital output
  • INPUT_PULLUP: The pin will be configured as a digital input with a pull-up Here I leave a study recommendation for pull-up and pull-down circuits but simply put. It forces a value when nothing is connected to the pin. If it's a pull-up, it's HIGH, and if it's pull-down, it's LOW.

As an example, if we want to use gpio4 as an output, we will have:

pinMode(4, OUTPUT)

digitalWrite(pin, value)

The digitalWrite() function changes the value of the informed pin. Possible values are: HIGH or LOW.

As an example, if we want to change the value of gpio4 to HIGH, we will have:

digitalWrite(4, HIGH);

One point we need to note is that there is an expected logical sequence to control the pin. First, we define it as OUTPUT and only then send a command to change the state. But what happens if we forget to use pinMode or set it to INPUT?

For these cases, the digitalWrite() command automatically enables the INPUT_PULLUP mode. This procedure protects the microcontroller from short circuits.

digitalRead(pin)

The function reads the digital value of the selected pin, returning the HIGH or LOW value. As an example, to read the status of gpio4, we will have:

value = digitalRead(4)

Of course, the value variable needs to be declared before it can be used. And if the pin is not connected to anything, the value will vary randomly (unless pullup is enabled).

analogRead(pin)

This function reads the analog pin. Or almost. The function returns a value between 0 and 1023, with 0 being the equivalent of the GND voltage and 1023 being the value referring to the VCC.

As an example, to read the status of adc0, we will have:

value = digitalRead(A0)

Constants

There are some predefined constants to refer to the pins more practically. When using either function, you can use either the gpio number or the related constant.

Differences in other modules

Here we look at the pin arrangement of the nodeMCU Lolin V3 board. There are slight differences on other cards. In Lolin itself there are versions with the ESP-12E module and others with ESP-12F. In this case of Lolin, the most significant difference is a change of position between GPIOs 4 and 5.

How to Avoid WordPress Security Issues

If you own a WordPress website, you probably understand the importance of WordPress security. Keeping your website secure is necessary as it helps keep attackers and hackers away. Just like you would not leave your valuable assets exposed to thieves, you should safeguard your WordPress with the same security level.

Essentially, WordPress developers are constantly working towards preventing any potential hacking. But that's not enough to keep your website secure. You need to apply other measures to safeguard your site.

In this article, we will discuss ways of improving your WordPress website security;

Add WordPress security plugins 

Security is key in running a website. There are various plugins to enhance your site security. These include Wordfence, Shield Security, iThemes, and Sucuri. WordPress security plugins have a lot of features to meet your security needs. These are features such as WordPress firewall, File changelogs, strong password generator, IP and User blacklisting, Force password to expire, and more.

Scan your site for malware 

If you've started experiencing low traffic in your website or you are dealing with weird performance issues, or you can detect suspicious behavior, you should check your website for malware.  It is recommended that you do a malware scan regularly, even if everything seems fine.

Keep in mind that some hacks breach your data anonymously. So, you may not even know that malicious activity is happening until extreme damage is done. It may reach the extent of Google pulling down your site from the search results due to security issues. You might even get blacklisted and suffer a huge loss. This explains why it's crucial to scan the website for malware often.

Pick a reliable hosting provider 

Server security is crucial as it helps protect your website from malware and hackers. So, it's essential that you pick a reliable hosting provider who understands website security's importance. The best company understands many things concerning WordPress security. They also have safety systems and offer prompt and dependable support in case anything unexpected happens. A good hosting provider offers the following;

  • Server-level firewalls
  • DDoS protection
  • Malware scanning
  • Backups
  • Latest OS (Operating System), hardware and software, and more.

Secure your website with superb credentials 

Hackers apply hacking techniques such as Brute force attacks because they are easy to implement. Anyone with little tech knowledge can execute a brute force attack with basic hacking tools. Other than that, executing a Brute force attack is effortless since most website owners use extremely weak admin passwords. For instance, most people love to use passwords such as '12345….' Among others that are easy to guess. This makes your website prone to attack. So, having a strong credential is a plus as it will secure your WordPress site from brute force attacks. A good password has characters such as &%$" £ and more.

Update your Themes, Plugins, and WP

WordPress websites release frequent updates with new features, enhancements, bug fixes, and security patches. The updates also enhance the feel and look of your website, not to mention that they improve functionality and stability. The updates also help seal website vulnerability.

Use 2-factor authentication 

2-factor authentication is a prominent security technique that helps safeguard online accounts. It's a protection process involving two steps. The first step entails entering your username and password, while the second requires you to provide a verification code sent to your email or phone.

Surprising Technology In Top Mattresses

When you think of the technology that's changed a lot over the past few years, your phone may be the first thing that comes to mind. After that, you might consider your vehicle, laptop, tablet or television. Your mattress is unlikely to be in your list of the top five or even 10 things that use a lot of innovation. However, it's true that new mattresses incorporate a great deal of research and technology. Today's mattresses are entirely different from those made just a decade ago. Here are a few of the types of technology that top mattresses use.

Sleep Research

When mattress manufacturers develop new products, they turn to sleep medicine physicians and sleep science to drive their decisions. New technology for performing sleep studies, tracking movement and monitoring the quantity and quality of sleep is helping mattress companies update their products. New information about sleep habits, cycles and quality ensures that the mattress you get will help you fall asleep and stay asleep. The right mattress also helps ensure that you wake up feeling well-rested.

Coils

Coils in mattresses aren't a new thing. They became common in the early 1900s. Over the past 100 years, the coils have changed. They're separated and enclosed. Some mattress manufacturers are even using nanotechnology. Today's coil mattresses are more complicated than those that were produced 10 years ago. When you choose a coil mattress today, you can expect motion isolation, more support and less noise when you move. The coil, like the rest of the mattress, really comes into its own when it's paired with other components.

Copper Infusion

Why would you want a copper-infused mattress, and what could possibly be the advantage? Well, copper has several sleeping advantages, such as breathability. It's no secret that many individuals (especially those who reside in hot climates) have difficulty sleeping because their mattresses can't keep up with the amount of air required to remove heat from the body. A layer consisting of a copper infusion will make heat transfer easier and manage your body temperature while you sleep, allowing you to rest like a baby all night long. Ideal for battling sleep sweats.

Organic Materials

A growing proportion of people are concerned about the chemicals to which they are exposed. Customers want mattresses that don't have as many chemicals. When an item releases chemicals, it's called off-gassing. Organic mattresses don't off-gas. Some mattresses are certified by independent organizations. The certifications include free of volatile organic compounds and 100% organic.

For example, the OEKO TEX Standard 100 Certification is for mattresses that contain no harmful chemicals. Mattresses with this certification don't off-gas. Some mattresses are made of soybeans, and others use recycled wool and cotton. Choosing an environmentally friendly mattress will help you feel confident that you're doing your part to protect the environment and conserve natural resources.

Sleep Sensor Technology

Have you ever questioned how good of a night's sleep you were getting? Many people ask for sleep studies to assess their average nightly sleep quality and quantity, but some mattresses now come with sleep sensor technology that can provide the same data without requiring you to depart from home. The breathing, heart rate, and the number of times you get out of bed are all tracked by these mattresses. Advanced beds with this technology can accurately tell you how many hours of excellent sleep you received on any particular night.

Mattress Covers

While a mattress cover is technically separate from a mattress, it is an important part of your bedding. The mattress covers protect the mattress. They keep shed skin cells, sweat and oils out of the mattress's fabric. Mattress covers prevent dust mites from infesting your bed. If you're allergic to dust or dust mites, a mattress protector is essential. Mattress covers also reduce stains caused by sweating. Your mattress will last longer and smell better if you get a cover for it.

Bamboo is one of the softest fabrics that exist. It's also a good insulator and highly breathable. A bamboo mattress cover will keep your bed clean and comfortable. The fibers in a bamboo mattress are woven to prevent tearing, even with repeated washing or use of an iron on it.

Foam Materials

Foam is a relative newcomer to mattresses. However, memory foam mattresses have become increasingly popular in the last two decades, accounting for around 20% of all beds sold.

There are different types of foams used in today's mattresses. You may prefer a plant-based foam for environmental and health reasons. There are also synthetic foams, which may be a good option if you have certain allergies. Keep in mind that foam traps heat. If you get hot while you sleep, be sure to pick a mattress that has a gel layer on top of the foam layer. The gel moves heat away from your body. The result is a more even temperature across your skin and the surface of your bed.

Ikea recently introduced a new memory foam mattress to the market that includes cooling gels and graphite. It has been met with both overwhelmingly positive reviews as well as concerns from consumers who have experienced issues with it.

Air/Number

Air/number technology is also a newer innovation. This technology allows you to control how firm your mattress is. With a remote or an app, you adjust how much air fills the spaces of the foam. More air results in a firmer bed. Large air/number mattresses allow each side of the bed to be set to a different firmness level. Choose this option if you have a sleep partner whose mattress firmness preferences are different from yours. An air/number mattress is also an excellent choice if you have a chronic pain condition that periodically flares, such as arthritis.

New technology will continue to advance mattresses. Each mattress manufacturer is incorporating this information and changing its materials, construction and techniques in order to improve upon its products. You benefit from this technology-driven innovation. The use of technology in mattress development will continue, and consumer demand for more features will hasten the pace of these beneficial changes. Choosing one of these new mattresses may help you sleep better and feel relaxed, rested and energetic when you wake up in the morning.

ESP8266 Operational WiFi Modes

In previous articles, we connected the ESP8266 to a pre-existing WIFI network. It is the commonly used method in projects, especially when there is interest in internet access.

For these cases, the ESP8266 operates as a “station” on the network. But we can find scenarios where there is no WIFI network to connect. Can we still use the ESP8266 in these cases? Yes, we can!

Where To Buy?
No.ComponentsDistributorLink To Buy
1ESP8266AmazonBuy Now

ESP8266 Operational Modes

The ESP8266 WiFi module can operate in 2 different modes:

  • STA (the module operates as a station and is available to connect to an Access Point).
  • AP (the module creates a network with customizable SSID and Password. We will discuss how each mode works, its limitations, and how to use

STA Mode

We use the STA mode to connect the ESP8266 to a pre-existing Wi-Fi network. This connection is made from an Access Point, which will be responsible for managing information traffic.

For configuration and use on the Arduino platform, we use the ESP8266WiFi.h library. Simple to use and extremely powerful, this library offers us all the tools to configure the WiFi module, without overloading us with flags and registers.

For our configuration, there are two more relevant functions, begin() and config().

begin() function

The begin() function needs some parameters necessarily and others optionally. This is because this function is of type overload, which provides more flexibility when calling the function. For a better example, let's look at the begin() function in its full form and its minimal form:

  • Complete form: begin(ssid, password, channel, bssid, connect)
  • Minimum Form: begin(ssid, password)

Same function, two ways to call it. And both works. This is because it was built with more than one declaration format in the library.

Let's take a look at the parameters it accepts:

  • SSID: The name of the network we want to connect to. Required field, and can contain up to 32
  • password: password for the chosen Required field, must be between 8 and 64 characters.
  • channel: Defines the bandwidth to be This parameter is optional and can be useful in areas with many different networks. Choosing a good channel can minimize interference and increase network range. If omitted, it will be selected automatically.
  • bssid: One more optional parameter. If set to true, the function will return the MAC of the AP it was connected
  • Connect: A Boolean parameter which, if set to false, will save the parameters defined in the function, but will not connect to the

This information will be saved in a reserved area of FLASH and in case of loss of connection, the attempt to reconnect will occur automatically.

Another important point is that, by default, the station is configured as a DHCP (Dynamic Host Configuration Protocol) client. This means that when connecting, the ESP8266 will ask the Access Point for an IP address. If the AP has DHCP enabled, we will receive a random IP within the network range configured there.

Config() function

The config() function is not mandatory for a connection such as a station. But you will need it if you want to connect to the network with a fixed IP address. The function has the following format:

  • config(local_ip, gateway, subnet, dns1, dns2) Where the parameters represent:
  • local_ip: IP address we want to assign to the
  • gateway: Access Point IP address.
  • Subnet: IP mask of the network where we will
  • dns1 and dn2: optional fields for IP address of DNS servers (Domain Name Server).

When we call the config() function, the DHCP mode is automatically disabled. Then the station will force the use of the address we choose. This method is useful when connecting over a network that does not have a DHCP server, or when having a fixed address is an essential project requirement.

You need to be careful when choosing the IP address and the subnet, as if it's incompatible with the network configuration, we will connect, but we won't be able to interact with anything.

In the image, we have a code for configuration and connection as a station.

Access Point Mode (AP)

In AP mode, the ESP8266 creates its WiFi network, allowing stations to connect to it. The figure below should help you better understand how it works. The ESP8266 configured as AP, replaces the role of the router in the network (with some limitations, but the principle is the same).

Strictly speaking, the name of this mode is Soft Access Point, because the functionality as an AP does not use any hardware resources equivalent to that of a common AP. It's like a Virtual AP. This does not impact health, but it does severely impact performance.

The main limitation is the number of connections it can manage. Although the manufacturer suggests up to 8 stations connected, you will have serious problems if you go beyond 5. If your application has a heavy data flow, I recommend that you limit it to 4 connections.

Another limitation is that the created network is not connected to the internet. So keep in mind that this is a model for applications that work well on local networks and for a few devices.

An example application for this format is an access control system. Approach with your cell phone, connect to the ESP8266 network, and be authorized to open a door.

Setting up this mode is very similar to that of a station. We have an overload function for begin and another one for configuration.

softAP() function

It would be the equivalent of our station mode begin() function.

  • softAP(ssid): to create an open network, without a password.
  • softAP(ssid, password, channel, hidden, max_connection): to create a protected network.

Let's take one for each parameter:

  • SSID: The name of our network, can contain a maximum of 63 This is the only mandatory field in the role and cannot be empty.
  • password: This field contains the password that the station needs to enter to connect. If not informed, the network will be open and can be accessed without any security. If you include one, it must contain a minimum of 8 characters, following the WPA2-PSK network security standard.
  • Channel: As we discussed for the station, this field defines the wifi operation It must receive a numeric value from 1 to 13. If not informed, it will receive 1 as the default value.
  • Hidden: If set to true, the SSID will be invisible and cannot be detected by identifiers (in your mobile's WiFi network list, for example. The network can still be connected if the station writes
  • Max_connection: Defines the maximum number of stations allowed. Receives values from 0 to 8, with 4 as the default.

softAPConfig() Function

This function sets some parameters referring to IP addresses. It has the format: WiFi.softAPConfig(local_ip, gateway, subnet)

Where the parameters represent:

  • Local_ip: IP address of the access point
  • Gateway: IP address of the gateway (this is what stations will use as a switch)
  • Subnet: Defines the IP range to be

With the code, you will configure a simple access point visible to your cell phone or computer.

STA + AP Mode

As the name suggests, the esp8266 will operate both as a station (being able to connect to a network) and as an Access Point (allowing stations to connect to it) at the same time.

The purpose behind this method is to use esp8266 in mesh network configurations. The idea is interesting, but if the performance is not already excellent operating as AP, imagine as AP and STA.

The documentation for this format is very scarce and, in a way, abandoned by the manufacturer itself. Espressif, when launching the successor of ESP8266, ESP32, included a specific library for MESH.

12 Tips to Make Your Beginner Designs Stand Out

Graphic design is an exciting field. It may seem daunting as you begin to create your own images, but becoming a graphic designer is just like learning a new language - you start with simple words and phrases and gradually build your way up to more complex topics.

Studying graphic design can be a lot of work, especially if you haven’t had any prior experience in it before. It can be pretty overwhelming at times to handle, but don’t worry - we can ease your load a little bit! With this website, you can hire a professional paper writer to help you! You can get professional 24/7 help with any paper topic at an affordable price - and a free plagiarism report, too! Make sure to check them out and save your precious time for more important tasks!

1. Experiment with fonts

Fonts can make your titles look more prominent, your body text looks bolder, and better still, they can make your images look more immersive! They're tools in a designer's arsenal and should be used creatively rather than strictly for aesthetics.

Fonts are powerful tools in the hands of an effective artist! They can help communicate your ideas constructively and suggest alternatives. A particularly useful typeface can help you make your points clearer and more persuasive, as well as give off an emotion you desire.

2. Go big or go home

When starting out, many beginners make a mistake by getting too focused on the details. This usually leads to something less than stellar. It is easier to create a simple but effective art than a complex but ineffective one.

If you want to become a top visual artist, you need to handle large objects and elements in your art effectively. Sometimes, the most important thing is that you use your eyes and not your brain. Tools like Instagram story viewer can also provide a fresh perspective by helping you analyze how your visuals are received in real-time, offering inspiration for refining your designs.

3. Use contrasting colors

Colors can be used in many ways when it comes to creating. Since color can affect the mood of an image or presence, it’s essential to use colors that will stand out against the background.

A Black and white palette is also an excellent way to communicate a message or emphasize a certain point. Although there are many ways to use colors in art, one very effective way is by contrasting them using different hues. As an example, two different hues can be used in one design to convey entirely different messages!

4. Sketch your ideas

When starting out as a graphic artist, it can be helpful to think that the most powerful tools are pencil and paper. Make a fresh start by drawing with markers and practicing drawing in perspective before moving on to larger, more complex pieces.

Playing around with perspective and shape reminds you that whatever you draw will ultimately be a manifestation of your creative process.

5. Use consistent images

When you’re a beginner, it is easy to get carried away by the many choices available. It is tempting to look through each image type and decide which is the best option. You can do that, of course, but keep one thing in mind - consistency is key in choosing images!

While there are many different types of images available, follow a few simple guidelines when selecting them. Make sure they’re of the similar:

  • Color palette
  • Size
  • Feel
  • Motif
  • Style

6. Be consistent in general

When starting your graphic design, you will need a lot of visual tools. But choosing the best is not so simple. You should try to understand how colors, lines, and shapes work together and try new techniques to get more varied and exciting patterns. Playing around and experimenting is always a way to go!

But keep one thing in mind - try to be as consistent as possible. That doesn’t mean not having variety; it means giving structure to your work.

Summary? Be consistent with your fonts, images, paragraphs, and overall style!

7. Use symmetry and balance

For a graphic artist, the difference between good art and great art can often be found in the subtlety of a line or the balance between colors and letters. Symmetry refers to how similar two elements are in shape, size, and color, and balance indicates that different parts of an object or image are in harmony with each other.

Implementing both in your artistry is essential - they give off a professional vibe. And not to mention, humans are wired to love symmetry; use it to your advantage!

8. Get inspired by the best designers out there

Graphic design is an ever-changing field that offers endless opportunities for those willing to put in the hard work. Each new designer presents their own style, method, and inspiration!

Learning from them will allow you to follow their lead as they break new ground in their own unique way. As you become more experienced and gain knowledge about the industry, you’ll become an artist others will look up to!

9. Implement shadows

Shade and light are an essential part of any art. They help direct the viewers’ attention where you need it to be. They also play an important role in gradients, color palettes, and texture.

Shadows are one of those magic features of light that can make your pictures look much more vivid. They help draw your eye from one part of the picture to another and create a sense of depth and atmosphere. They add dimension and clarity without adding much bulk or distracting from the main composition. Learn how to use them effectively and see the difference for yourself.

10. Start with a flat design

It may not be what you wanted initially, but once you get used to it, you'll find its strength is in its simplicity. It's always been easier for artists to get started with flat design because there are fewer rules to follow. You can still create beautiful things, but you need to think more logically and strategically to do them well!

Before choosing your first program, it’s a good idea to learn about flat design. Flat is easy to follow and understand - since there are no complicated rules or guidelines to follow, it can be a great way to gain confidence in your artistic abilities!

11. Keep it simple

The most powerful graphic design beginner tips are all about keeping things simple. Ensure that the colors you use are complementary, that the shapes are consistent, and that all the elements in your art fit together seamlessly.

The more complicated an artwork becomes, the harder it is to make and relate to it. With too many options, it's easy to get distracted - so choose one basic graphic design technique in a project and try to stick with it! Keep adding details only when they’re more than necessary, and make sure those details really do make a difference.

12. Practice, practice, practice!

Learn by doing. When you practice a skill, you become better at it. Even if you don’t have formal art training, you can go and practice on your own! See how many resources are available to help you learn more about graphic design and keep growing!

Becoming a master designer takes time and practice. Arm yourself with patience and persistence - they’ll lead you to places you’ve never been before!

The wrap-up

Graphic design is the art and science of visual communication. Always looking to push the boundaries of what is possible, graphic designers create visuals to engage with their audience. Their work expresses their ideas through form and color, and their goal is to communicate something through their work that has not been said before.

If you’re a beginner designer, realize that the world is patiently waiting for you! By implementing some of these steps, you’ll be recognized as a successful, brilliant artist, others will look up to with admiration!

Create Webserver with ESP8266 using SPIFFS

Hello friends, I hope you all are doing great. In today's tutorial, we will have a look at How to Create Web Server with ESP8266 using SPIFFS.

We've already seen how to create a web server and how to provide an HTML page on our ESP8266. We use the PROGMEM command to store an HTML code in FLASH memory. For a simple page, this works fine, but what if we have a more complex webpage? With a better style? What if we want to include images?

Today we will learn how to use SPIFFS with ESP8266 to store files (regardless of type) in FLASH memory.

Where To Buy?
No.ComponentsDistributorLink To Buy
1ESP8266AmazonBuy Now

What is SPIFFS?

  • SPIFFS (SPI Flash File System) is a system designed for managing SPI flash memory in embedded devices. Its main goal is to use minimal RAM to access files. It's very useful when using pen drives, memory cards, and the ESP8266's flash memory.
  • SPIFFS allows you to access files (create, read, write, delete) just like on a computer. But with a much simpler folder structure.
  • To show how the tool works, we will create a web server with a styled page and an image. Then when accessing the webserver, the browser will receive the HTML file, the CSS file, and the images.

Create Webserver with ESP8266 using SPIFFS

  • For that, we will need two things:
    • Library to manage SPIFFS.
    • Tool to load the files in FLASH.
  • The upload tool is a plugin called ESP8266fs that integrates python into the Arduino IDE.
  • Download the ESP8266FS-0,5.0.zip file from Github and unzip the files into Arduino's tools folder ( Possibly C:\program files x86\arduino \tools).
  • Restart Arduino IDE and the tool should appear available as shown in the image.
  • Now let's take a look at how it works.
  • Your sketch will always be saved inside a folder. The Arduino IDE cannot open an .INO file if it is not inside a folder with the same name.
  • Our upload tool will look inside that folder and look for another folder called “data”. Everything inside that folder will be transferred to the ESP8266's FLASH memory.

Our page will have 3 main objects:

  • An image that will change depending on the status of the LED.
  • A text with the status of the LED.
  • A button to change the status of the LED.

Files on Webserver

And to build this page we will use 4 files:

  • html, which will contain the page itself.
  • css, containing the styling to make the page more beautiful.
  • Image of the lamp
  • Image of the lamp
  • The two images were chosen from the pixabay repository. You can use another one. But I recommend not using very large files as it takes a little longer to load. I also recommend using some service to resize the image, such as tinypng.
  • In our index.html file, we will have:
  • In our style.css file, we will have:

Understanding ESP8266 Webserver Code

  • Created and saved, we used ESP8266 Sketch Data Upload to load the file into FLASH memory.
  • Before we look at the code, it's important to understand how the browser behaves when accessing a page.
  • When accessing the web server address, the browser sends an HTTP GET command in the path “/” and waits for an index file in response.
  • Inside index file it can be informed that it needs other files. What happens in our code.
  • In line 7 of the index.html file, it is informed that the style.css file will also be needed and that it is of type text/css.
  • Then the browser sends another HTTP GET command with the path “/style.css” and expects to receive a file with that name.
  • In line 13, the <img> tag informs the path to an image, and the browser sends another HTTP GET command to the address “/bulb-off.png”, this time the browser expects an image file.
  • The browser will send GET commands each time we click the Toggle button (“/toggle” path) and every 1 second to receive an updated status (“/state” path).
  • Doing yet another GET to the lit lamp image (path: “/bulb-on.png”).

So we will need to handle it in our .INO code the GET requests in the paths:

  • “/”
  • “/style.css”
  • “/bulb-off.png”
  • “/bulb-on.png”
  • “/toggle”
  • “/state”

Our style.css file sets sizes, alignments, and colors for components. We start our .INO file by importing four libraries:

  • h – That will take care of our WiFi connection.
  • h and ESPAsyncWebServer.h – Which will manage the webserver (including HTTP GET commands).
  • h – File System Library that will take care of our SPIFFS.

We define the pin for our LED. We create variables with SSID and password of the wifi network where we will connect. We created our server on port 80 and a variable to monitor the LED status.

  • The wifiConnect() function will connect the ESP8266 to the chosen wifi network by printing the IP address on the serial monitor.
  • Pay attention to this number. You will need to access the webserver from the browser.
  • The processor() function is responsible for updating the variable with the status of the LED.
  • We will use it in handling our GETs.
  • The toggleLed() function toggles the LED state. We will use it in the GET “/toggle”.
  • And finally, our setup() function. We start by setting our LED to OUTPUT (otherwise, our toggle won't work.
  • Next, we start Serial with a baud rate of 115200 to view the IP address on the Serial Monitor.
  • With SPIFFS.begin(), we initialize our filesystem in flash memory.
  • If an error occurs, our code stops here and reports on Serial Monitor. In that case, upload the files again.
  • And finally, we've included our GETs.

The “server.on” structure is an event manager provided by the ESPAsyncWebServer.h library. In short, we inform a route, a method (HTTP-GET, for our case), and action when receiving the request. But we need to take a closer look at some variations of the function.

  • The server receives a request for the “/” route with the HTTP GET method.
  • In request->send, we inform that the response is a SPIFFS file with the name index.html and that it will be sent in string format.
  • The last two fields (“false” and “processor”) inform that the index.html file is a template that depends on more information. This information will be provided by the processor() function.

It is necessary to send the index file with the updated LED state value.

For style files and images, we use a similar principle, but these files are not being changed before they are uploaded. So we only inform the origin, name, and type (if you want to know a little more about file types in HTTP, I recommend a study on MIME TYPES. Any type of file can be sent, but MIME standardizes what browsers can understand).

Lastly, we have the “/state” returning the stateValue variable on each update and the “/toggle” which changes the state before sending the same variable. The response format has a small change. As we are sending only one variable, we inform the MIME TYPE “text/plain”, the response code 200 (default for success over HTTP), and the variable converted to a string.

Results

  • With the code compiled and recorded, check the IP of the webserver in the Serial Monitor and access it in the browser.
  • Example: for IP: 10.10.10.11 access: http://10.10.10.11.
  • Attention: As we use port 80 on the web server, we use HTTP and not HTTPS. The result on the screen should look like the images below:

So that was all for today. I hope you have enjoyed today's lecture because it will improve the presentation of your project. If you got any queries, ask in the comments. Thanks for reading!!!

Create Web Server with ESP8266

Hello friends, I hope you all are doing great. Today, we will create a web server with ESP8266 microcontroller to control the activation of an LED. The goal is to understand how the ESP8266 connects to a WiFi network, how it sets up a web server, and how it is possible to exchange information between the browser and the esp8266.

Where To Buy?
No.ComponentsDistributorLink To Buy
1ESP8266AmazonBuy Now

Components Required

  • 1x Computer/notebook with Arduino
  • 1x Mini-USB cable.
  • 1x NodeMCU (ESP8266 Breakout Board)
  • Internet Browser (Chrome, Firefox, IE…)

ESP8266 Libraries for Arduino IDE

For this project, we will use two libraries:

  • ESP8266WiFi: This library carries all the functions necessary for the ESP8266 to connect to a wifi network.
  • ESPAsyncWebServer: This library carries the functions needed to create and manage an EB server.

Creating the code

  • We can divide the code into three main functionalities:
    1. Control the LED.
    2. Connect to Wifi
    3. Create the webserver.

And we'll treat this building in blocks.

Importing Libraries

  • The Libraries must be included at the beginning of the sketch so that their functions are already available elsewhere in the code.

LED Control with ESP8266

  • Our first step is to define the pin to be used. For our example, we will use the LED of the NodeMCU module.
  • And set this pin as output in the setup function.
  • We will also create a variable to monitor LED status. This variable is not used to control the LED, but it will be important for the webserver so, we will include it here.
  • So, we'll create a function that, whenever triggered, will change the state of the LED (and the variable).
  • The toggleLed() function makes a function nesting in its first line:
  • The digitalWrite() function receives as a value for writing, the inverse of the reading of the pin itself. So each time the function is called, it reads the current value of the pin and toggles its value.
  • The following conditional is only used to update the stateValue variable. To test the function, you can include it in the loop as follows:
  • With these inclusions, we will have this code:
  • With this code, the NodeMCU module LED, we expect to change state every 3 seconds. Remember to remove the data inside the loop function when you finish the test. We will not use them in the next steps.

Connect ESP8266 to WIFI

  • Now let's connect the ESP8266 to your WIFI network. We'll start by creating a variable to store the network name and another one for the password.
  • The connection could be executed directly in the setup function, but we will create a standalone function to make the code more organized and so that it can be reused if you want to create a reconnect function.

The wifiConnect() function will send a connection request and wait for it to be approved.

With Wifi.begin(), ESP8266 will search the network informed in the ssid variable and send a connection request, informing the password (just like what a cell phone would do).

The WiFi.status() function can return the following values:

  • WL_CONNECTED: assigned when connected to a WiFi network;
  • WL_NO_SHIELD: assigned when no WiFi shield is present;
  • WL_IDLE_STATUS: it is a temporary status assigned when WiFi.begin() is called and remains active until the number of attempts expires (resulting in WL_CONNECT_FAILED) or a connection is established (resulting in WL_CONNECTED);
  • WL_NO_SSID_AVAIL: assigned when no SSID are available;
  • WL_SCAN_COMPLETED: assigned when the scan networks is completed;
  • WL_CONNECT_FAILED: assigned when the connection fails for all the attempts;
  • WL_CONNECTION_LOST: assigned when the connection is lost;
  • WL_DISCONNECTED: assigned when disconnected from a network;

In this project, we are not handling connection failures, so we are only interested in the WL_CONNECTED return. The function will wait while this is not the connection status and, when identifying it, it will look for the IP address it received on the network.

Here is a point of attention. The WIFI network must allow the connection and provide an IP by DHCP. If any device can connect to your network just by offering the password, don't worry. This configuration must already exist.

We've added some information to be viewed on the Serial monitor, so the serial needs to be initialized before we call the wifiConnect() function.

  • This should be our code so far:
  • The expected result on the Serial Monitor is as follows:
  • From this point on, the ESP8266 can be found by network tools like the Advanced IP Scanner or a simple PING at the command prompt.

Creating the Webserver with ESP8266

  • Spoiler Alert: At the end of this step, you can view our webserver at the address
  • HTTP://”IP address”, for our case http://192.168.18.76.
  • We will start by creating an instance of AsyncWebServer operating on port 80.
  • In short, a webserver operates as a file manager that delivers on-demand. Then the browser makes a request, the web server responds and continues to wait for new requests.
  • All this happens following communication protocols (HTTP, FTTP, or both), rigorous error handling, and high-security logic.
  • The library takes care of preparing the backstage of the webserver, which saves us a lot of time and lines of code. But we still need to configure what happens on each request.

We will handle two requests:

  • When the page starts or refreshes
  • When we press the LED state change

The first will occur when we send a GET request to the root “/”. What the browser does automatically when we go to http://192.168.18.76.

  • The server will respond with status 200 (default success response), the information on the type of file sent ("text/html"), the HTML file (which we will create next and save in the variable index_html), and the return of the processor( ) (which we will also create now).
  • The processor function simply returns the value of the updated stateValue variable.
  • The HTML file the browser expects tends to be large for a variable, and even with the good SRAM memory space the ESP8266 has, it could cause problems.
  • That's why we'll use the PROGMEM utility so that the variable is written to FLASH memory.
 
  • Don't worry if you don't know HTML or javascript. We won't go into details, but we'll explain the most important ones for now.
  • On line 23, the page displays the value returned by the processor() function.
  • In line 24, the button calls the “toggleLED()” function when activated.
  • The toggleLED() function makes a GET request at address “/state” passing the toggle valceue.
  • After 1 second it refreshes the page to receive the updated value. We need to handle this request:
  • When the server receives the request at the address “/state” it calls the toggleLed() function
  • and just replies to the server that everything went fine. And last but not least: We started the server:
  • This will be our final code:
  • In our browser:

Conclusion

In this project, we saw a very simple application of the power that the ESP8266 WiFi has. In the HTML file, page styling could also be included to make the page prettier.

And with that base, it's possible to expand into several cool projects. A temperature monitor via Wifi? Security systems? Home automation systems? These are just a few examples. The limit is up to your creativity.

Syed Zain Nasir

I am Syed Zain Nasir, the founder of <a href=https://www.TheEngineeringProjects.com/>The Engineering Projects</a> (TEP). I am a programmer since 2009 before that I just search things, make small projects and now I am sharing my knowledge through this platform.I also work as a freelancer and did many projects related to programming and electrical circuitry. <a href=https://plus.google.com/+SyedZainNasir/>My Google Profile+</a>

Share
Published by
Syed Zain Nasir