Забавная схема.
В общих чертах:
Предполагаем, что порт HV1 работает на приём и уровень "Плавает" (HiZ), и не подтягивается портом к 5V. Таким образом, единственная подтяжка - резистор к 3.3V.
Когда на низковольтной части будет "1", на высоковольтной (с позволения так сказать), так же будет "1", т.к. транзисторный ключ закрыт.
В случае "0" на низковольтной части, транзистор открывается и ток стекает с "верхнего" плеча (справа) с высоковольтной цепи в низковольтную (предполагается, что справа будет режим "вход", иначе можно таки пожечь 3.3V часть).
Теперь предполагаем, что читает данные LV1 и вход плавает (подтянут резистором к 3.3V)
Аналогично и обратное - когда на высоковольтной части "1", транзистор будет закрыт и не вносит изменений. 0 на высоковольтной части заставит открыться внутренний диод в транзисторе и ток будет стекать в порт HV1 (2 резистора по 10кОм и возможно, другие нагрузки "слева").
Довольно простая схема. Подошёл бы любой P-MOSFET (да тот же IRLML2402).
> поясните как правильно будет из 5V(logic) Arduino сделать 3.3V для ESP8266.
Arduino:
5V -> HV
TX -> HV1
RX -> HV2
ESP8266:
3.3V -> LV
RX -> LV1
TX -> LV2