Installing Wine 6 on Debian 10

Step 1: Enable 32 bit architecture

sudo dpkg --add-architecture i386 

Step 2: Add WineHQ repository

We will pull the latest Wine packages from WineHQ repository that is added manually. First, import GPG key:

sudo apt update
sudo apt -y install gnupg2 software-properties-common
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -

You should receive “OK” in the output. Add the Wine repository by running the following command:

sudo apt-add-repository https://dl.winehq.org/wine-builds/debian/

The command will add repository to line /etc/apt/sources.list file.

Update APT package index:

sudo apt update

Step 3: Install Wine 6 on Debian 10

After configuration of the APT repository, the final step is the actual installation of Wine 6 on Debian 10. Add Wine OBS repository:

wget -O- -q https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/Debian_10/Release.key | sudo apt-key add -    
echo "deb http://download.opensuse.org/repositories/Emulators:/Wine:/Debian/Debian_10 ./" | sudo tee /etc/apt/sources.list.d/wine-obs.list

Then install Wine from Stable branch:

sudo apt update
sudo apt install --install-recommends winehq-stable

And for latest release in staging, use:

sudo apt install winehq-staging

After installation. verify version installed.

wine --version  # Stable
wine-6.0

wine --version  # Staging
wine-6.5 (Staging)

Debian 10 – install and configure i3wm

i3 is a tiling window manager designed for X11, inspired by wmii and written in C. It supports tiling, stacking, and tabbing layouts, which it handles dynamically.

Configuration is achieved via plain text file and extending i3 is possible using its Unix domain socket and JSON based IPC interface from many programming languages.

Step 1: Install Debian 10.

Download Debian 10 .ISO image from official site: https://www.debian.org/

Step 2: Write ISO image to USB drive using program Etcher:

Step 3: Install Debian 10 on your PC.

Don’t install any other programs and desktop environments, uncheck all check boxes in installation menu. You need clear operating system without any other software.

Installation i3wm and other software:

Now you have clear oerating system with command shell.

First authorize in system with root login, change repositories to testing branch in file /etc/apt/sources.list, it is needed to get latest packages:

Upgrade your system:

apt update
apt upgrade

Install sudo and add sudo privilegies to your username:

apt install sudo
usermod -aG sudo username

Now you can logout from user root and authorize with your username login, Install file manager MC and other additional software:

sudo apt install mc vim htop screenfetch

Install X-Window-Server, I3, and other software for desktop environment:

apt install bash-completion lightdm zenity network-manager-gnome viewnior i3 xserver-xorg xbacklight conky nitrogen compton tilix firefox-esr thunar rofi flameshot

Debian 10 Install PulseAudio

PulseAudio is a network-capable sound server program. A sound server is a background process accepting sound input from one or more sources (processes, capture devices, etc.), that is able to mix and redirect those sources to one or more sinks (sound cards, remote network PulseAudio servers, or other processes).

To install PulseAudio on Debian Linux first update package repository:

sudo apt update

Next install PulseAudio:

sudo apt install pulseaudio

Now reboot your computer.

Using PulseAudio Volume Control Graphical Utility:

PulseAudio has a graphical frontend PulseAudio Volume Control, which you can use to easily configure PulseAudio sounds graphically.

It is not installed by default. Run the following command to install PulseAudio Volume Control:

sudo apt install pavucontrol

Also to change sound volume by hotkeys you need amixer utility install it by command:

apt-get install alsa-utils

How to remove ONT from the BDCOM OLT configuration

Connect to OLT and go into the configuration mode:

enable
config

Let’s look at the current configuration and find the MAC address of the ONT you want to delete:

show running-config

Choose the interface (port) on which ONT is registered:

interface EPON0/1

And delete ONT, for example with mac address 8014.a8b4.eb2c:

no epon bind-onu mac e067.b336.88e8

Done.

Connect LM35 analog temperature sensor to Arduino

The LM35 is an inexpensive, precision Centigrade temperature sensor made by Texas Instruments. It provides an output voltage that is linearly proportional to the Centigrade temperature and is, therefore, very easy to use with the Arduino.

The sensor does not require any external calibration or trimming to provide accuracies of ±0.5°C at room temperature and ±1°C over the −50°C to +155°C temperature range.

One of the downsides of the sensor is that it requires a negative bias voltage to read negative temperatures. So if that is needed for your project, I recommend using the DS18B20 or TMP36 instead. The TMP36 by Analog Devices is very similar to the LM35 and can read temperatures from -40°C to 125°C without any external components.

The pinout of the sensor:

Note that pin 1 (+VS) is the leftmost pin when the flat side of the sensor (with the text printed on it) is facing towards you.

Pin1: +VS  - Positive power supply pin (4 – 30 V)
Pin2: Vout - Temperature sensor analog output
Pin3: GND  - Device ground pin

Source code of Arduino sketch:

#define sensorPin A0

void setup() {
  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);

  // Set the reference voltage to the built-in 1.1V reference:
  analogReference(INTERNAL);
}
void loop() {
  // Get a reading from the temperature sensor:
  int reading = analogRead(sensorPin);

  // Convert the reading into voltage:
  float voltage = reading * (1100 / 1024.0);

  // Convert the voltage into the temperature in degree Celsius:
  float temperature = voltage / 10;

  // Print the temperature in the Serial Monitor:
  Serial.print(temperature);
  Serial.print(" \xC2\xB0"); // shows degree symbol
  Serial.println("C");
  delay(1000); // wait a second between readings
}

How to install Composer on Linux server

Composer is a most popular PHP package manager, let’s install composer on website and watch how it works.

You can download Composer from official site: https://getcomposer.org/

Connect to your server via SSH client and run this commands:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

Connect DS3231 real time clock to Arduino NANO

DS1302, DS1307, DS3231 is a real-time modules for Arduino and Raspberry PI. Let’s connect DS3231 to our Arduino NANO.

To work with this module we will use universal library: iarduino_RTC (https://github.com/tremaru/iarduino_RTC).

Download latest version of this library you can here: https://github.com/tremaru/iarduino_RTC/archive/refs/tags/1.3.4.zip

First of all connect DS3231 module to Arduino:

GND (-) --> GND
VCC (+) --> +5V
SDA (D) --> A4
SCL (C) --> A5

Include library and initialize module:

#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1307);

To set current time in DS3231 module tuesday write next functions in function setup():

void setup() {
    Serial.begin(9600);
    time.begin();
    time.settime(0,20,17,30,3,21,2);  
    // 0  sec, 20 min, 17 hour, 30 day, 3 mon, 2021 year, tuesday
}

In function loop() let’s write to serial port current time:

void loop(){
    if(millis() % 1000 == 0) {
        Serial.println(time.gettime("d-m-Y, H:i:s, D"));
        delay(1);
    }
}

This sketch you need to run once time, when configure DS3231 module.

If you want just to show current time – use this source code:

#include 
iarduino_RTC time(RTC_DS1307);

void setup() {
    Serial.begin(9600);
}
void loop() {
    if(millis() % 1000 == 0) {
        Serial.println(time.gettime("d-m-Y, H:i:s, D"));
        delay(1);
    }
}

Connect I2C LCD 16×2 Display to Arduino Nano

In this Instructable you are going to see how to connect i2c lcd display to arduino and how to print on lcd display.

Each I2C bus consists of two signals: SCL and SDA. SCL is the clock signal, and SDA is the data signal. The clock signal is always generated by the current bus master; some slave devices may force the clock low at times to delay the master sending more data (or to require more time to prepare data before the master attempts to clock it out). This is called “clock stretching” and is described on the protocol page.

To connect 16×2 LCD display to Arduino we use i2c PCF 8574T module. This module expands Arduino pins and allow connection of display using only two Arduino pins.

I2C module has four pins: GND – ground, VCC – 5V power, SDA – data signal, SCL – clock signal. Connect SDA to A4 pin on Arduino, and SCL to A5 pin:

GND <---> GND
VCC <---> 5V
SDA <---> A4
SCL <---> A5

For working with display on Arduino we need two libraries: Wire.h, LiquidCrystal_I2C.h.

Wire.h is standard Arduino IDE library, and LiquidCrystal_I2C.h is the library for work with LCD displays. You can download it from official Arduino project website: https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/

And here is the source code of simple sketch, which write text on 16×2 LCD display:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() 
{
  lcd.init();
  lcd.backlight();

  lcd.setCursor(0,0); // set cursor to 1 symbol of 1 line
  lcd.print("Arduino Lessons:");

  lcd.setCursor(0,1); // set cursor to 1 symbol of 2 line
  lcd.print("www.andjey.info"); 
}

void loop() 
{  

}

Arduino – simple blink program

Let’s write simple program, that will turn on and off LED on our Arduino. For our lesson we need: Arduino, one LED diode, USB cable for programming our Arduino, PC with Arduino IDE, download it you can here: https://www.arduino.cc/en/software

Connect USB cable to Arduino, for connecting LED we will use D13 pin and GND PIN (see Arduino Nano pins here). Positive wire of diode connect to D13, negative wire – to Ground pin as you can see on photo:

In Arduino IDE create new blank project:

Here You can see two functions: setup() – which run when Arduion power on, and function loop() – which run in cycle all type when arduino is working. Now let’s create our program.

Bewore function start() let’s create two constants – it will be basic configuration of our program. BLINK_PIN defines which pin is used for connecting LED. BLINK_TIME – define time in milliseconds how long our LED will be on and off.

#define BLINK_PIN 13
#define BLINK_TIME 1000

In function setup() configure pin 13 as output pin:

void setup() {
  pinMode(BLINK_PIN,1);
}

Now create function blink_led() – that will turn on and off our LED:

void blink_led()
{
  digitalWrite(BLINK_PIN, 1);
  delay(BLINK_TIME);
  
  digitalWrite(BLINK_PIN, 0);
  delay(BLINK_TIME);
}

Now write function blink_led() in loop() to run our program in cycle all time when Arduino works:

void loop() {
  blink_led();
}

Full code of program:

#define BLINK_PIN 13
#define BLINK_TIME 300

void blink_led()
{
  digitalWrite(BLINK_PIN, 1);
  delay(BLINK_TIME);
  
  digitalWrite(BLINK_PIN, 0);
  delay(BLINK_TIME);
}

void setup() {
  pinMode(BLINK_PIN,1);
}

void loop() {
  blink_led();
}

Now save program and compile it to your Arduino: