Making a Career Out of a Hobby in Engineering

Engineering is one of the areas in your life that you really enjoy. Taking on new projects, getting them working, and then getting them operating as they should is what you are passionate about. For as long as you can remember, you have been passionate and interested in engineering, but have you ever thought seriously about turning it into a career? Engineering careers, whether in the consumer sector or in the B2B sector, are highly sought-after roles. Getting qualified and developing your skills along the way is important to make the transition from hobby to career, but what else should you be thinking about?

Turning Your Passion into a Career

When you turn your passion, or your hobby, into a career, it can feel fantastic, but it can also feel like a time that is filled with self-doubt and worry. Worrying that you have the right skills and knowledge base to carry out projects and ensuring that you see projects through are probably two of your main concerns right now. When engineering is a hobby, you have no real-time limits or pressures to perform. You have your free time to fiddle and change bits of a new machine or piece of equipment you are working on. You also don’t have to worry about having the right skills or knowledge as nobody is judging you or even watching over you, so if you make a mistake, then you don’t need to worry, as who is there?

However, when you turn your passion into a career, you have a new set of worries and concerns. Of course, over time, these will disappear, but, to begin with, they can feel all-consuming. So, just how can you make the transition from hobby to career as easy as possible? Well, to begin with, you need to remember your passion at the heart of everything you do. Yes, your engineer feats will be judged, and, yes, you will have time pressures and deadlines to adhere to. However, if you maintain your passion through every project you undertake, you will make the transition from hobby to career success and relatively easy. Removing unnecessary pressure and stress will be beneficial to you, and it will ensure that you still remain passionate about every project you undertake.

Going About Things the Right Way

Just like when you start a new project or test, there is a right way to go about things and an incorrect way to go. When you start out on the road to a career in engineering, it is crucial that you go the right way. The right way involves gaining more experience, and it also involves studying and getting qualified. Yes, you might have been working on projects and plans since you were little, but as good as being self-taught is, it is not always what future or potential employers want from you. When you commit to studying an engineering degree, you learn new ways to begin and undertake projects, and you also learn about industry standards.

If you do not commit to getting a formal education, then you may struggle to land and even secure a job in engineering, simply because there are industry standards that need following, and if testing, production or manufacturing, veers off from these industry standards, results could be different, and your employees or the ones who have commissioned your project could be left in a difficult position, especially if you have not followed the correct procedures and rules. Going about things the right way or in the correct manner may feel different for you, but if you commit to studying and you commit to learning in a structured environment, then you should have no trouble adapting your styles and ways of working.

Studying and Getting Qualified

When it comes to studying and getting suitably qualified, it is important to weigh up all of your options. You need to begin by looking at reputable and respected universities, and then you need to establish just what you would like to get qualified in and why? Choosing the right educational institute or university is crucial. You want to ensure that you are getting an education that is valued and also respected. A university with an outstanding reputation and one that provides flexible learning opportunities would be the best route for you to take. As where you study is just as important as what you study, it is of paramount importance that you take your time to choose the correct establishment for you and your requirements. Weighing up the pros and cons for a select number of universities will allow you to narrow down your list significantly.

Just as you have taken a methodical approach to choose a university, it is also crucial that you take a methodical approach in establishing what you want to study. So, what area of engineering are you looking to be part of when you finish studying? Do you want to be within the developing stage, or would you prefer to be in the operations department? For example, if you want to be in the operations department or area, then you will need to study a suitable degree, such as an operations management degree because this will provide you with all of the information, and knowledge you need to carry out the role successful. If you do not study for a degree that is related or even relatable to what you want to do, then you will struggle to land the job you want, and you will struggle to get the satisfaction out of any role you undertake.

Having a Plan of Action

Once you have decided which university you want to study at and you have decided which degree to pursue, you must now formulate a plan of action that will help you get the career you want. Without a plan of action, you may find it difficult to find a job with a company you want, and, as a result, you may have to settle for something less than you deserve. So, to begin with, your plan of action needs to have a timescale. If you are working on an infinite timescale, then you will find that you will never apply yourself as well as you can! So, aim for a 3-4 year timescale, and this way, you have ample time to complete your studies, and you have enough time to start seeking out opportunities.

As well as planning out your studies, you also need to have an action plan for gaining some experience. To gain suitable and relevant experience, you need to get some suitable and valuable work experience. When it comes to finding suitable work experience, it is worth looking both local, and further afield at engineering, and manufacturing businesses. Gaining work experience, even if it is irregular and just a few hours here and there will benefit you and will help you in the long term. Learning how engineering businesses operate and function is crucial so that you can understand how your future role fits into everything that happens, perhaps on a daily or weekly basis.

The Growing Demand for Engineers

Engineering has shortages, and it has demand, and these are unfortunately widespread. As older engineers are retiring, there are not enough suitably qualified or experienced engineers to take over, and this then leads to huge gaps within the workforce. Skills shortages, and shortages within minority groups, such as female engineers, mean that engineers are always in high demand. Building up your experience and your knowledge is crucial because experienced engineers will command more interest, and in return, you will be well remunerated and compensated. As businesses and industries change how they work and how they operate, the demand for engineers will continue to grow.

Due to the demands for engineers, businesses do compete, and they will compete for you once you have the correct qualification and education under your belt. Jumping at the first opportunity that comes your way is often not very beneficial, and this is important to remember, especially in an industry where they are shouting out for new people. Evaluating every opportunity on offer and selecting the right one for you that matches your views and your ways of working is crucial. Remember that being in demand within an industry can, unfortunately, come with its downsides, and one of these can be located. There are opportunities available all across the country and even across the world, but that does not mean that there will be a suitable vacancy available for you near to your preferred location. You may have to travel where the work is, and this is something that you should start planning for and preparing for as soon as possible. Planning and preparation will make it more comfortable and more enjoyable.

Changing Your Mindset

It can be difficult to change your mindset and to change your way of thinking, especially if you have been used to doing things in a certain manner for a period of time. However, when you are approaching new opportunities and you are putting your skillset to use every day, you must ensure that your mindset matches that of the company or business you are working for. If your mindset is different, or if it is not in line with how your employers want to proceed in the future, then you can struggle to hold down a suitable position. A positive mindset, and a mindset that is highly adaptable, is one that you should look at adopting, and although this might be a bit of an alien concept to you right now, you will see just how important a collaborative and cohesive mindset is amongst employees, and employers, especially when undertaking new projects and assignments.

Attributes and Skills of Good Engineers

Of course, all engineers are different, and they are all individuals. However, they all share a lot of attributes and skills which make them good engineers. So, do you share any of these attributes?

  • Creativity - You have to be creative to solve a problem or to put your plans and ideas into action. If you cannot think creatively, then you cannot see a solution or a resolution to a problem, and this could be a sticking point,
  • Positivity – A positive mindset and a positive approach to working are crucial. If you cannot maintain a positive mindset or approach, then you can struggle to get the answers and solutions you need, and you can end up letting your frustrations stop you and even hold you back from achieving what you know you are capable of.
  • Critical Thinking – Thinking quickly and applying critical thinking to those highly stressful times and situations is essential. Being able to think clearly, even in times of pressure and stress will help you solve problems and find a solution quickly.

Don’t panic if you do not have the time to change and tweak how you handle or approach situations, and you have time to adopt the correct mindset.

Seeking Out Opportunities

Now you have evaluated your skills and your attributes, and you have a strong and solid education behind you, it is time now to start seeking out opportunities. Finding new work placements and opportunities can be easy if you adopt the right mindset. When you are starting out and you are looking for new opportunities, you need to be open to working in different locations, and you even need to be open to working on short-term projects to build up experience. Finding opportunities online, approaching companies and businesses offline, and even signing up for job agencies will help you to get work that suits you. You may need to make compromises when you start out, and as you are building up your experience and connections, but if you persist, and if you remain open and flexible, then you should have no trouble in landing a position that suits you and that allows you to turn your passion and hobby into a career.

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!!!

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